Added MACRO-10 support for OPDEFs, which are macro-like statements used to generate words which can also be combined with addressing modifiers
This commit is contained in:
parent
642e43937e
commit
d0ff759684
6 changed files with 256 additions and 159 deletions
|
|
@ -372,7 +372,7 @@ PDP10.opLDB = function(op, ac)
|
|||
var w = this.readWord(this.regEA);
|
||||
if (this.regBP < 0) {
|
||||
this.regBP = w;
|
||||
this.regRA = this.regEA | PDP10.OPCODE.I_BIT;
|
||||
this.regRA = this.regEA | PDP10.OPCODE.I_FIELD;
|
||||
return;
|
||||
}
|
||||
var p = (this.regBP / PDP10.OPCODE.P_SCALE) & PDP10.OPCODE.P_MASK;
|
||||
|
|
@ -458,7 +458,7 @@ PDP10.opDPB = function(op, ac)
|
|||
var w = this.readWord(this.regEA);
|
||||
if (this.regBP < 0) {
|
||||
this.regBP = w;
|
||||
this.regRA = this.regEA | PDP10.OPCODE.I_BIT;
|
||||
this.regRA = this.regEA | PDP10.OPCODE.I_FIELD;
|
||||
return;
|
||||
}
|
||||
var p = (this.regBP / PDP10.OPCODE.P_SCALE) & PDP10.OPCODE.P_MASK;
|
||||
|
|
|
|||
|
|
@ -437,7 +437,7 @@ class CPUStatePDP10 extends CPUPDP10 {
|
|||
*/
|
||||
getOpcode()
|
||||
{
|
||||
if ((this.regRA & PDP10.OPCODE.I_BIT)) {
|
||||
if ((this.regRA & PDP10.OPCODE.I_FIELD)) {
|
||||
this.regRA = this.regLA = this.readWord(this.regEA);
|
||||
} else if (this.regXC >= 0) {
|
||||
this.regRA = this.regOP = this.readWord(this.regXC);
|
||||
|
|
@ -468,7 +468,7 @@ class CPUStatePDP10 extends CPUPDP10 {
|
|||
var x = (this.regRA >> PDP10.OPCODE.X_SHIFT) & PDP10.OPCODE.X_MASK;
|
||||
if (x) this.regEA = (this.regEA + (this.regLA = this.readWord(x))) & PDP10.ADDR_MASK;
|
||||
|
||||
return (this.regRA & PDP10.OPCODE.I_BIT)? -1 : ((this.regOP / PDP10.OPCODE.A_SCALE)|0);
|
||||
return (this.regRA & PDP10.OPCODE.I_FIELD)? -1 : ((this.regOP / PDP10.OPCODE.A_SCALE)|0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1570,7 +1570,7 @@ class DebuggerPDP10 extends Debugger {
|
|||
}
|
||||
}
|
||||
sOperation = Str.pad(sOperation, 8) + (sOperand? sOperand + ',' : "");
|
||||
if (opCode & PDP10.OPCODE.I_BIT) sOperation += '@';
|
||||
if (opCode & PDP10.OPCODE.I_FIELD) sOperation += '@';
|
||||
sOperation += this.toStrBase(opCode & PDP10.OPCODE.Y_MASK, -1);
|
||||
var i = (opCode >> PDP10.OPCODE.X_SHIFT) & PDP10.OPCODE.X_MASK;
|
||||
if (i) sOperation += '(' + this.toStrBase(i, -1) + ')';
|
||||
|
|
@ -1747,7 +1747,7 @@ class DebuggerPDP10 extends Debugger {
|
|||
* because if we parse them AFTER parsing the address expression, we might lose an undefined symbol
|
||||
* indication, and if the caller needs to handle address fixups, that would be bad.
|
||||
*/
|
||||
if (match[1]) opCode += PDP10.OPCODE.I_BIT;
|
||||
if (match[1]) opCode += PDP10.OPCODE.I_FIELD;
|
||||
|
||||
sOperand = match[3];
|
||||
if (sOperand) {
|
||||
|
|
|
|||
|
|
@ -171,10 +171,14 @@ var PDP10 = {
|
|||
S_MASK: 0o77, // S mask (after shift)
|
||||
A_SHIFT: 23, // A shift
|
||||
A_MASK: 0o17, // A mask (after shift)
|
||||
I_BIT: 0o20000000, // indirect bit
|
||||
A_FIELD: 0o740000000, // A field mask
|
||||
I_FIELD: 0o20000000, // indirect bit mask
|
||||
X_SHIFT: 18, // X shift
|
||||
X_MASK: 0o17, // X mask (after shift)
|
||||
Y_MASK: 0o777777, // Y mask
|
||||
X_FIELD: 0o17000000, // X field mask
|
||||
Y_SHIFT: 0, // Y shift
|
||||
Y_MASK: 0o777777, // Y mask (after shift)
|
||||
Y_FIELD: 0o777777, // Y field mask
|
||||
R_MASK: 0o37777777, // used to isolate the low 23 bits (I,X,Y)
|
||||
PTR_MASK: 0o77777777, // used to isolate the low 24 bits (?,I,X,Y) of a byte pointer
|
||||
HALT: 0o5304 // operation code for HALT
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ var Lit;
|
|||
* Elements of stackScopes.
|
||||
*
|
||||
* @typedef {{
|
||||
* name:(string),
|
||||
* name:(string|undefined),
|
||||
* aWords:(Array.<number>),
|
||||
* aFixups:(Array.<string>),
|
||||
* nLocation:(number),
|
||||
|
|
@ -145,7 +145,7 @@ class Macro10 {
|
|||
*/
|
||||
this.nAddrStart = null;
|
||||
|
||||
this.println("starting PCjs MACRO-10 Mini-Assembler...");
|
||||
if (MAXDEBUG) this.println("starting PCjs MACRO-10 Mini-Assembler...");
|
||||
|
||||
/*
|
||||
* Initialize all the tables that MACRO-10 uses.
|
||||
|
|
@ -288,7 +288,7 @@ class Macro10 {
|
|||
/*
|
||||
* We know that local resources ending with ".MAC" are actually stored with a ".txt" extension.
|
||||
*/
|
||||
if (sURL.slice(-4).toUpperCase() == ".MAC") sURL += ".txt";
|
||||
if (sURL.indexOf(':') < 0 && sURL.slice(-4).toUpperCase() == ".MAC") sURL += ".txt";
|
||||
|
||||
Web.getResource(sURL, null, true, function processMacro10(sFile, sResource, nErrorCode) {
|
||||
if (nErrorCode) {
|
||||
|
|
@ -360,7 +360,7 @@ class Macro10 {
|
|||
* Since, at this early stage, I'm not sure whether all the resources I'm interested in
|
||||
* assembling have had their original CR/LF line endings preserved (eg, some files may have
|
||||
* been converted to LF-only line endings), I'm going to skip over whatever line endings
|
||||
* are in the array and insert my own uniform CR/LF sequences.
|
||||
* are in the array (stored in every OTHER entry) and insert my own uniform CR/LF sequences.
|
||||
*/
|
||||
if (!this.parseLine(this.asLines[i] + '\r\n')) break;
|
||||
/*
|
||||
|
|
@ -378,6 +378,9 @@ class Macro10 {
|
|||
this.error("open scope from line " + this.stackScopes[0].nLine);
|
||||
}
|
||||
|
||||
/*
|
||||
* Process all literals next.
|
||||
*/
|
||||
let nLocationLiterals = this.nLocation;
|
||||
|
||||
for (let i = 0; i < this.aLiterals.length; i++) {
|
||||
|
|
@ -410,8 +413,8 @@ class Macro10 {
|
|||
*/
|
||||
let lit = this.aLiterals[i];
|
||||
/*
|
||||
* First things first: verify that the literal is one contiguous set of words (I'm not sure how
|
||||
* it couldn't be, but better safe than sorry).
|
||||
* First things first: verify that the literal is one contiguous zero-based set of words (I'm not sure
|
||||
* how it couldn't be, but better safe than sorry).
|
||||
*/
|
||||
let aWords = [];
|
||||
let nWords = 0;
|
||||
|
|
@ -427,6 +430,13 @@ class Macro10 {
|
|||
for (let nLocation = nLocationLiterals; nLocation + nWords <= this.nLocation; nLocation++) {
|
||||
let n;
|
||||
for (n = 0; n < nWords; n++) {
|
||||
/*
|
||||
* This check requires that the initial values of the words in the literals match AND that
|
||||
* their fixup expressions, if any, match as well. Here again, MACRO-10 may be more aggressive
|
||||
* in either verifying fixup equality or evaluating any fixups that it can immediately, but
|
||||
* but I prefer to leave all fixup evaluation where it is (below), after all literals and then
|
||||
* all variables have been added to the output.
|
||||
*/
|
||||
if (aWords[n] !== this.aWords[nLocation + n] || lit.aFixups[n] != this.aFixups[nLocation]) break;
|
||||
}
|
||||
if (n == nWords) {
|
||||
|
|
@ -444,6 +454,9 @@ class Macro10 {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Now add all variable definitions.
|
||||
*/
|
||||
for (let i = 0; i < this.aVariables.length; i++) {
|
||||
let name = this.aVariables[i];
|
||||
let macro = this.tblMacros[name];
|
||||
|
|
@ -457,6 +470,9 @@ class Macro10 {
|
|||
this.parseText(macro.sText);
|
||||
}
|
||||
|
||||
/*
|
||||
* And last but not least, perform all fixups.
|
||||
*/
|
||||
this.aFixups.forEach(function processFixup(sValue, nLocation){
|
||||
let value = macro10.parseExpression(sValue, undefined, nLocation);
|
||||
if (value === undefined) {
|
||||
|
|
@ -624,6 +640,7 @@ class Macro10 {
|
|||
case Macro10.PSEUDO_OP.IFN:
|
||||
case Macro10.PSEUDO_OP.IRP:
|
||||
case Macro10.PSEUDO_OP.IRPC:
|
||||
case Macro10.PSEUDO_OP.OPDEF:
|
||||
case Macro10.PSEUDO_OP.REPEAT:
|
||||
this.addMacro(sOperator, sRemainder);
|
||||
break;
|
||||
|
|
@ -662,6 +679,22 @@ class Macro10 {
|
|||
/**
|
||||
* parseMacro(name, sOperands)
|
||||
*
|
||||
* For OPDEF macros, the operands are opcode values rather than conventional macro parameter values.
|
||||
* As the MACRO-10 manual explains:
|
||||
*
|
||||
* Defines the symbol as an operator equivalent to expression, giving the symbol a fullword value.
|
||||
* When the operator is later used with operands, the accumulator fields are added, the indirect bits
|
||||
* are ORed, the memory addresses are added, and the index register addresses are added.
|
||||
*
|
||||
* EXAMPLE: OPDEF CAL [MOVE 1,@SYM(2)]
|
||||
* CAL 1,BOL(2)
|
||||
*
|
||||
* RESULT: MOVE 2,@SYM+BOL(4)
|
||||
*
|
||||
* The easiest thing to do is parse the OPDEF text, allowing it to generate its default "fullword value",
|
||||
* then parse the operands in their own scope, extract the bits generated from the operands, and merge them
|
||||
* into the generated OPDEF value.
|
||||
*
|
||||
* @this {Macro10}
|
||||
* @param {string} name
|
||||
* @param {string} [sOperands]
|
||||
|
|
@ -674,6 +707,35 @@ class Macro10 {
|
|||
if (!macro) return false;
|
||||
|
||||
if (sOperands != null) {
|
||||
/*
|
||||
* If this is an OPDEF, then a two-step process is required: generate the OPDEF's value, then parse
|
||||
* the operands and merge their bits with the OPDEF's bits.
|
||||
*/
|
||||
if (macro.nOperand == Macro10.MACRO_OP.OPDEF) {
|
||||
var nLocation = this.nLocation;
|
||||
this.parseText(macro.sText);
|
||||
if (nLocation < this.nLocation) {
|
||||
this.pushScope();
|
||||
this.parseText(sOperands);
|
||||
var w = this.aWords[0];
|
||||
var sFixup = this.aFixups[0];
|
||||
this.popScope();
|
||||
if (w !== undefined) {
|
||||
this.aWords[nLocation] += (w & (PDP10.OPCODE.A_FIELD | PDP10.OPCODE.X_FIELD | PDP10.OPCODE.Y_FIELD));
|
||||
this.aWords[nLocation] |= (w & PDP10.OPCODE.I_FIELD);
|
||||
if (sFixup) {
|
||||
if (!this.aFixups[nLocation]) {
|
||||
this.aFixups[nLocation] = sFixup;
|
||||
} else {
|
||||
this.aFixups[nLocation] += '+' + sFixup;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
this.error("OPDEF '" + name + "' error: " + sOperands);
|
||||
return false;
|
||||
}
|
||||
var macroPrev = this.macroCall;
|
||||
this.macroCall = macro;
|
||||
macro.aValues = this.getValues(sOperands, true);
|
||||
|
|
@ -683,7 +745,7 @@ class Macro10 {
|
|||
* (such as the SHIFT macro in /apps/pdp10/tests/macro10/TEXT.MAC) could blow the stack. Nothing bad
|
||||
* should happen (other than a JavaScript stack limit exception aborting the assembly), but it begs
|
||||
* the question: did MACRO-10 perform any tail recursion optimizations or other tricks to prevent macros
|
||||
* from running amok, or could they blow MACRO-10's stack just as easily?
|
||||
* from gobbling stack, or could they blow MACRO-10's stack just as easily?
|
||||
*/
|
||||
this.macroCall = macroPrev;
|
||||
return true;
|
||||
|
|
@ -737,6 +799,14 @@ class Macro10 {
|
|||
*/
|
||||
parseText(sText, aParms, aValues, aDefaults)
|
||||
{
|
||||
/*
|
||||
* Unlike the caller of parseResources(), we don't split the text using a capture group,
|
||||
* so all line separators are tossed, and just like parseResources(), we always include a
|
||||
* uniform CR/LF sequence at the end of each line.
|
||||
*
|
||||
* TODO: Consider whether callers should always store their text snippets as line arrays, too,
|
||||
* to avoid this re-splitting.
|
||||
*/
|
||||
var asLines = sText.split(/\r?\n/);
|
||||
for (var iLine = 0; iLine < asLines.length; iLine++) {
|
||||
var sLine = asLines[iLine] + '\r\n';
|
||||
|
|
@ -748,7 +818,7 @@ class Macro10 {
|
|||
* pushScope(name)
|
||||
*
|
||||
* @this {Macro10}
|
||||
* @param {string} name
|
||||
* @param {string} [name] (must be defined for literals only)
|
||||
*/
|
||||
pushScope(name)
|
||||
{
|
||||
|
|
@ -778,7 +848,7 @@ class Macro10 {
|
|||
return;
|
||||
}
|
||||
var name = this.stackScopes[this.stackScopes.length - 1].name;
|
||||
this.aLiterals.push({name, aWords: this.aWords, aFixups: this.aFixups});
|
||||
if (name) this.aLiterals.push({name, aWords: this.aWords, aFixups: this.aFixups});
|
||||
var scope = this.stackScopes.pop();
|
||||
this.aWords = scope.aWords;
|
||||
this.aFixups = scope.aFixups;
|
||||
|
|
@ -1089,8 +1159,8 @@ class Macro10 {
|
|||
/**
|
||||
* addMacro(sOperator, sOperands)
|
||||
*
|
||||
* If sOperator is DEFINE, then a macro definition is expected. If it's REPEAT, then we're starting a
|
||||
* REPEAT block instead.
|
||||
* If sOperator is DEFINE (or OPDEF), then a macro definition is expected. If it's REPEAT, then we're
|
||||
* starting a REPEAT block instead.
|
||||
*
|
||||
* REPEAT blocks piggy-back on this code because they're essentially anonymous immediately-invoked macros;
|
||||
* we use an illegal MACRO-10 symbol ('?REPEAT') to name the anonymous macro while it's being defined, and the
|
||||
|
|
@ -1116,7 +1186,9 @@ class Macro10 {
|
|||
|
||||
if (sOperator == Macro10.PSEUDO_OP.DEFINE) {
|
||||
/*
|
||||
* This is a DEFINE (macro) block.
|
||||
* This is a DEFINE (macro) block. At present, this requires that all
|
||||
* (parenthesized) parameters exist on the same line, but the (angle-bracketed)
|
||||
* definition can continue on for multiple lines.
|
||||
*/
|
||||
match = sOperands.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);
|
||||
if (!match) {
|
||||
|
|
@ -1134,6 +1206,24 @@ class Macro10 {
|
|||
nOperand = Macro10.MACRO_OP.DEFINE;
|
||||
iMatch = 3;
|
||||
}
|
||||
else if (sOperator == Macro10.PSEUDO_OP.OPDEF) {
|
||||
/*
|
||||
* This is a OPDEF block. Unlike DEFINE blocks, I'm assuming that the
|
||||
* (square-bracketed) definition begins on the same line, but I'm not requiring
|
||||
* it to end on the same line (I'm not sure that MACRO-10 allowed multi-line
|
||||
* OPDEFs, but it doesn't matter to us).
|
||||
*/
|
||||
this.chMacroOpen = '[';
|
||||
this.chMacroClose = ']';
|
||||
match = sOperands.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\[)([\s\S]*)/i);
|
||||
if (!match) {
|
||||
this.error("unrecognized " + sOperator + ": " + sOperands);
|
||||
return sOperands;
|
||||
}
|
||||
name = match[1];
|
||||
nOperand = Macro10.MACRO_OP.OPDEF;
|
||||
iMatch = 2;
|
||||
}
|
||||
else if (sOperator == Macro10.PSEUDO_OP.LITERAL) {
|
||||
/*
|
||||
* This is a LITERAL block.
|
||||
|
|
@ -1478,6 +1568,7 @@ Macro10.PSEUDO_OP = {
|
|||
IRPC: "IRPC",
|
||||
LALL: "LALL",
|
||||
LITERAL: "LITERAL", // this is a pseudo-pseudo-op, used for internal purposes
|
||||
OPDEF: "OPDEF",
|
||||
PAGE: "PAGE",
|
||||
REPEAT: "REPEAT",
|
||||
SIXBIT: "SIXBIT",
|
||||
|
|
@ -1493,6 +1584,7 @@ Macro10.PSEUDO_OP = {
|
|||
*/
|
||||
Macro10.MACRO_OP = {
|
||||
DEFINE: -1,
|
||||
LITERAL: -2,
|
||||
RESERVED: -3,
|
||||
OPDEF: -2,
|
||||
LITERAL: -3,
|
||||
RESERVED: -4,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -37,78 +37,78 @@ function sa(a,b){var c;if(a){b||(b=10);var d,e,f=0<a.indexOf(",");f&&(a=a.replac
|
|||
e[1],d=35-((e[2]||35)&255);e=a;((f=b)&&10!=f?16==f?e.match(/^-?[0-9a-f]+$/i):8==f?e.match(/^-?[0-7]+$/):2==f&&e.match(/^-?[01]+$/):e.match(/^-?[0-9]+$/))&&!isNaN(g=parseInt(a,b))&&(d&&(0>g&&(g+=Math.pow(2,36)),g=0<d?g*Math.pow(2,d):Math.trunc(g/Math.pow(2,-d))),c=g)}return c}
|
||||
function ta(a,b,c,d,e){e=void 0===e?0:e;var f="";isNaN(a)?a=null:null!=a&&(0>a&&-1<a&&(a=-1),0>a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0<c--;){g||(f=","+f,g=e);if(null==a)f="?"+f;else{var h=a%b,h=h+(0<=h&&9>=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function ua(a,b,c){b?12<b&&(b=12):(b=Math.abs(a),b=262143>=b?6:16777215>=b?8:12);return ta(a,8,b,c?"0o":"")}
|
||||
function va(a,b){b?11<b&&(b=11):b=99999>=Math.abs(a)?5:11;return ta(a,10,b)}function n(a,b,c){b?9<b&&(b=9):(b=Math.abs(a),b=65535>=b?4:4294967295>=b?8:9);return ta(a,16,b,c?"0x":"")}function wa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function xa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function ya(a,b){return-1!==a.indexOf(b,a.length-b.length)}
|
||||
function za(a){return a.replace(/[&<>"']/g,function(a){return Aa[a]})}function Da(a,b){return(a+" ").slice(0,b)}function Ea(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Aa={"&":"&","<":"<",">":">",'"':""","'":"'"};function Fa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var g=d+e>>1,h;h=c(b,a[g]);0<h?d=g+1:(e=g,f=!h)}return f?d:~d}
|
||||
function za(a){return a.replace(/[&<>"']/g,function(a){return Aa[a]})}function Ba(a,b){return(a+" ").slice(0,b)}function Ea(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Aa={"&":"&","<":"<",">":">",'"':""","'":"'"};function Fa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var g=d+e>>1,h;h=c(b,a[g]);0<h?d=g+1:(e=g,f=!h)}return f?d:~d}
|
||||
function Ga(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
|
||||
function Ha(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
|
||||
f,e))});if(b&&"object"==typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g}
|
||||
function Ia(a,b){var c,d={da:null,X:null,wa:null,va:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.wa=g.load;d.va=g.exec;if(e=g.bytes)d.da=e;else if(e=g.words)for(d.da=Array(2*e.length),f=c=0;c<e.length;c++)d.da[f++]=e[c]&255,d.da[f++]=e[c]>>8&255;else if(e=g.longs)for(d.da=Array(4*e.length),f=c=0;c<e.length;c++)d.da[f++]=
|
||||
e[c]&255,d.da[f++]=e[c]>>8&255,d.da[f++]=e[c]>>16&255,d.da[f++]=e[c]>>24&255;else(e=g.data)?d.Pa=e:d.da=g;d.da&&(d.da.length?1==d.da.length&&(q(d.da[0]),d=null):(q("Empty resource: "+a),d=null));d.X=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){q("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.da=e)}return d}
|
||||
function Ja(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Na(){if(null==Oa){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}Oa=a}return Oa}function Pa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function Ia(a,b){var c,d={ea:null,X:null,xa:null,wa:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.xa=g.load;d.wa=g.exec;if(e=g.bytes)d.ea=e;else if(e=g.words)for(d.ea=Array(2*e.length),f=c=0;c<e.length;c++)d.ea[f++]=e[c]&255,d.ea[f++]=e[c]>>8&255;else if(e=g.longs)for(d.ea=Array(4*e.length),f=c=0;c<e.length;c++)d.ea[f++]=
|
||||
e[c]&255,d.ea[f++]=e[c]>>8&255,d.ea[f++]=e[c]>>16&255,d.ea[f++]=e[c]>>24&255;else(e=g.data)?d.Pa=e:d.ea=g;d.ea&&(d.ea.length?1==d.ea.length&&(q(d.ea[0]),d=null):(q("Empty resource: "+a),d=null));d.X=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){q("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.ea=e)}return d}
|
||||
function Ja(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Ka(){if(null==Oa){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}Oa=a}return Oa}function Pa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function Qa(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ra(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1}
|
||||
function Sa(a){if(!Ta){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}Ta=c}return Ta[a]}function Ua(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function Va(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}function Wa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Xa(a){Ya.init.push(a)}
|
||||
function Za(a){if($a)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){q(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function ab(a){!$a&&a?($a=!0,bb&&cb("init"),kb&&cb("show")):$a=a}function cb(a){Ya[a]&&Za(Ya[a])}var Ta=null,Ya={init:[],show:[],exit:[]},bb=!1,kb=!1,$a=!0,Oa=null;Wa("onload",function(){bb=!0;Za(Ya.init)});Wa("onpageshow",function(){kb=!0;Za(Ya.show)});Wa(Ra("Opera")||Ra("iOS")?"onunload":"onbeforeunload",function(){Za(Ya.exit)});
|
||||
function r(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Cb=b.comment;this.Sb=b;this.exports={};this.J=this.bindings={};a=this.id.indexOf(".");0>a?this.$a=this.id:(this.ab=this.id.substr(0,a),this.$a=this.id.substr(a+1));this.A={ready:!1,Va:!1,pb:!1,Y:!1,error:!1};this.eb=null;this.A.error=!1;this.ba=c||0;this.D=this.v=this.G=this.H=this.xa=null;lb.push(this)}function mb(a,b,c){nb[a]&&b&&(nb[a][b]=c)}function ob(){return Date.now()||+new Date}
|
||||
function r(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Cb=b.comment;this.Sb=b;this.exports={};this.J=this.bindings={};a=this.id.indexOf(".");0>a?this.ab=this.id:(this.bb=this.id.substr(0,a),this.ab=this.id.substr(a+1));this.A={ready:!1,Va:!1,pb:!1,Y:!1,error:!1};this.fb=null;this.A.error=!1;this.ca=c||0;this.D=this.v=this.G=this.H=this.ya=null;lb.push(this)}function mb(a,b,c){nb[a]&&b&&(nb[a][b]=c)}function ob(){return Date.now()||+new Date}
|
||||
function q(a){window&&window.alert(a)}function pb(a){var b=!1;window&&(b=window.confirm(a));return b}function qb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<lb.length;b++){var d=lb[b];a&&d.id.indexOf(a)||c.push(d)}return c}function rb(a){if(void 0!==a){var b;for(b=0;b<lb.length;b++)if(lb[b].id===a)return lb[b]}return null}
|
||||
function sb(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<lb.length;d++)if(c)c==lb[d]&&(c=null);else if(!(a!=lb[d].type||b&&lb[d].id.indexOf(b)))return lb[d]}return null}function t(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){q(c.message+" ("+a+")")}return b}
|
||||
function tb(a,b){var c=v;b=w(b.parentNode,c+"-control");for(var d=0;d<b.length;d++)for(var e=b[d].childNodes,f=0;f<e.length;f++){var g=e[f];if(1===g.nodeType){var h=g.getAttribute("class");if(h)for(var k=h.split(" "),l=0;l<k.length;l++)switch(h=k[l],h){case c+"-binding":(h=t(g))&&h.binding&&a.qa(h.type,h.binding,g,h.value),l=k.length}}}}
|
||||
function w(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
||||
function ub(a){for(var b=!0,c=vb[a];c&&c.length;){var d=c.splice(0,1)[0],e=d[0],f=null;0<=wb.indexOf(e)&&(f=function(){return function(){ub(a)}}());var g=xb[e];if(g)if(!f)b=g(d[1],d[2],d[3]);else{if(!g(f,d[1],d[2],d[3]))break}else{var b=!1,h=sb(d[1],a);if(h)if(g=yb[e])b=g(h,d[2],d[3]);else{var k=h.exports;if(k&&(g=k[e]))if(b=!0,!f)b=g.call(h,d[2],d[3]);else if(!g.call(h,f,d[2],d[3]))break}}if(!b){q("Script error: "+e+(g?" failed":" unrecognized"));break}}c&&!c.length&&delete vb[a];return b}m=r.prototype;
|
||||
m.toString=function(){return this.name?this.name:this.id||this.type};
|
||||
m.qa=function(a,b,c){switch(b){case "clear":return this.J[b]||(this.J[b]=c,c.onclick=function(a){return function(){a.J.print&&(a.J.print.value="")}}(this)),!0;case "print":return this.J[b]||(this.xa=this.J[b]=c,c.value="",this.u=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),this.ha=function(a){this.u(a,this.$a)}),!0;default:return!1}};m.log=function(){};m.u=function(){};
|
||||
m.status=function(a){this.u(this.$a+": "+a)};m.ha=function(a,b,c){c=c||this.type;b||q((c?c+": ":"")+a)};function zb(a,b){a.A.error=!0;a.ha(b)}function Bb(a){return a.A.error?(a.u(a.toString()+" error"),!0):!1}function Lb(a,b){b&&(a.A.ready?b():a.eb=b);return a.A.ready}function Mb(a){if(!a.A.error&&(a.A.ready=!0,a.A.ready)){var b=a.eb;a.eb=null;b&&b()}}function Nb(a,b){a.A.Va&&(b?a.A.pb=!0:void 0===b&&a.u(a.toString()+" busy"));return a.A.Va}
|
||||
function Ob(a,b){if(a.A.pb)return a.A.Va=!1,a.A.pb=!1;if(a.A.error)return a.u(a.toString()+" error"),!1;a.A.Va=b;return a.A.Va}m.za=function(){return this.A.Y=!0};m.pa=function(a,b){b&&(this.A.Y=!1);return!0};function Pb(a,b){if(a.D){a===a.D?b|=0:b=b||a.ba;var c=a.D.ba&b;return!!b&&c===b||!!(c&a.D.Eb)}return!1}function Qb(a,b,c,d){a.D&&(!0===c||Pb(a,c|0))&&a.D.message(b,d)}
|
||||
m.qa=function(a,b,c){switch(b){case "clear":return this.J[b]||(this.J[b]=c,c.onclick=function(a){return function(){a.J.print&&(a.J.print.value="")}}(this)),!0;case "print":return this.J[b]||(this.ya=this.J[b]=c,c.value="",this.u=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),this.ia=function(a){this.u(a,this.ab)}),!0;default:return!1}};m.log=function(){};m.u=function(){};
|
||||
m.status=function(a){this.u(this.ab+": "+a)};m.ia=function(a,b,c){c=c||this.type;b||q((c?c+": ":"")+a)};function zb(a,b){a.A.error=!0;a.ia(b)}function Bb(a){return a.A.error?(a.u(a.toString()+" error"),!0):!1}function Lb(a,b){b&&(a.A.ready?b():a.fb=b);return a.A.ready}function Mb(a){if(!a.A.error&&(a.A.ready=!0,a.A.ready)){var b=a.fb;a.fb=null;b&&b()}}function Nb(a,b){a.A.Va&&(b?a.A.pb=!0:void 0===b&&a.u(a.toString()+" busy"));return a.A.Va}
|
||||
function Ob(a,b){if(a.A.pb)return a.A.Va=!1,a.A.pb=!1;if(a.A.error)return a.u(a.toString()+" error"),!1;a.A.Va=b;return a.A.Va}m.Aa=function(){return this.A.Y=!0};m.pa=function(a,b){b&&(this.A.Y=!1);return!0};function Pb(a,b){if(a.D){a===a.D?b|=0:b=b||a.ca;var c=a.D.ca&b;return!!b&&c===b||!!(c&a.D.Eb)}return!1}function Qb(a,b,c,d){a.D&&(!0===c||Pb(a,c|0))&&a.D.message(b,d)}
|
||||
window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]),window.PCjs.Commands||(window.PCjs.Commands={}));
|
||||
var nb=window?window.PCjs.Machines:{},lb=window?window.PCjs.Components:[],vb=window?window.PCjs.Commands:{},wb=["hold","sleep","wait"],xb={alert:function(a){q(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},yb={select:function(a,b,c){var d=!1;if(a=a.bindings[b])for(b=0;b<a.options.length;b++)if(a.options[b].textContent==c){a.selectedIndex!=b&&(a.selectedIndex=b);d=!0;break}return d}};
|
||||
Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
|
||||
Function.prototype.bind||(Function.prototype.bind=function(a){function b(){return e.apply(this instanceof c&&a?this:a,d.concat(Array.prototype.slice.call(arguments)))}function c(){}if("function"!=typeof this)throw new TypeError("Function.prototype.bind: non-callable object");var d=Array.prototype.slice.call(arguments,1),e=this;c.prototype=this.prototype;b.prototype=new c;return b});
|
||||
var v="pdp10",Rb="PDPjs",Sb=Math.pow(2,18)-1,Tb=Math.pow(2,18),Ub=Math.pow(2,17)-1,x=Math.pow(2,18)-1,y=Math.pow(2,18),z=Math.pow(2,35)-1,A=Math.pow(2,35),B=Math.pow(2,36)-1,C=Math.pow(2,36),E=Math.pow(2,32),Vb=Math.pow(2,34),Wb=Math.pow(2,36),Xb=Math.pow(2,21),Yb=Math.pow(2,26),Zb=Math.pow(2,23),$b=Math.pow(2,30),v="pdp10",Rb="PDPjs",ac={cpu:1,trap:2,fault:4,"int":8,bus:16,memory:32,mmu:64,rom:128,device:256,panel:512,keyboard:1024,key:2048,paper:4096,read:16384,write:32768,serial:1048576,timer:2097152,
|
||||
speaker:16777216,computer:33554432,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};
|
||||
function bc(a,b){r.call(this,"Panel",a,512);this.K=this.L=0;this.U=b;this.i=this.I=this.j=this.w=0;this.M=this.N=-1;this.P=this.R=this.F=!1;this.T=cc;this.C={};this.b={START:[1,1,!0,!1,this.cc],STEP:[1,1,!1,!1,this.dc],ENABLE:[1,1,!1,!1,this.Yb],CONT:[1,1,!0,!1,this.Wb],DEP:[0,0,!0,!1,this.Xb],EXAM:[1,1,!0,!1,this.Zb],LOAD:[1,1,!0,!1,this.ac],TEST:[0,0,!0,!1,this.$b]};for(a=0;22>a;a++)this.b["S"+a]=[0,0,!1,!1,this.bc,a];this.D=this.v=this.G=this.H=null;this.exports={hold:this.Tb,toggle:this.mc,reset:this.ic,
|
||||
function bc(a,b){r.call(this,"Panel",a,512);this.K=this.L=0;this.V=b;this.i=this.I=this.j=this.w=0;this.M=this.N=-1;this.P=this.S=this.F=!1;this.U=cc;this.C={};this.b={START:[1,1,!0,!1,this.cc],STEP:[1,1,!1,!1,this.dc],ENABLE:[1,1,!1,!1,this.Yb],CONT:[1,1,!0,!1,this.Wb],DEP:[0,0,!0,!1,this.Xb],EXAM:[1,1,!0,!1,this.Zb],LOAD:[1,1,!0,!1,this.ac],TEST:[0,0,!0,!1,this.$b]};for(a=0;22>a;a++)this.b["S"+a]=[0,0,!1,!1,this.bc,a];this.D=this.v=this.G=this.H=null;this.exports={hold:this.Tb,toggle:this.mc,reset:this.ic,
|
||||
set:this.lc};Mb(this)}ka(bc,r);m=bc.prototype;m.reset=function(a){this.stop();a&&dc(this,this.w=0)};
|
||||
m.qa=function(a,b,c,d){if(this.H&&this.H.qa(a,b,c,d)||this.v&&this.v.qa(a,b,c,d)||this.D&&this.D.qa(a,b,c,d))return!0;switch(b){case "PC":return this.J[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.J[b]=c,this.C[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.J[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){ec(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){fc(a,b)}}(this,b),a.ontouchstart=
|
||||
function(a,b){return function(c){ec(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){fc(a,b)}}(this,b),!0):r.prototype.qa.call(this,a,b,c,d)}};m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;gc(this);hc(this)};m.za=function(a,b){if(!b)if(this.U&&ic(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.pa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,[this.i,this.w,this.j]);return a.data()};
|
||||
function(a,b){return function(c){ec(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){fc(a,b)}}(this,b),!0):r.prototype.qa.call(this,a,b,c,d)}};m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;gc(this);hc(this)};m.Aa=function(a,b){if(!b)if(this.V&&ic(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.pa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,[this.i,this.w,this.j]);return a.data()};
|
||||
m.restore=function(a){if(a=a[0])jc(this,this.i=a[0]),dc(this,this.w=a[1]),kc(this,a[2]);return!0};m.ic=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}hc(this);return!0};function lc(a,b,c){if(a=a.J[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function gc(a,b){for(var c in a.C)lc(a,c,null!=b?b:a.C[c])}function mc(a,b,c){if(a=a.J[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function hc(a){for(var b in a.b)mc(a,b,a.b[b][1])}
|
||||
m.Tb=function(a,b,c){if(ec(this,b)){if(c){var d=this;setTimeout(function(){fc(d,b);a&&a()},+c);return!1}fc(this,b)}return!0};m.lc=function(a,b){if("SR"==a)return kc(this,sa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,mc(this,a,c[1]),!0):!1};m.mc=function(a){return ec(this,a)?(fc(this,a),!0):!1};function ec(a,b){var c=a.b[b];return c?(mc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=nc&&(a.P=b==oc,a.R=b==pc),!0):!1}
|
||||
m.Tb=function(a,b,c){if(ec(this,b)){if(c){var d=this;setTimeout(function(){fc(d,b);a&&a()},+c);return!1}fc(this,b)}return!0};m.lc=function(a,b){if("SR"==a)return kc(this,sa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,mc(this,a,c[1]),!0):!1};m.mc=function(a){return ec(this,a)?(fc(this,a),!0):!1};function ec(a,b){var c=a.b[b];return c?(mc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=nc&&(a.P=b==oc,a.S=b==pc),!0):!1}
|
||||
function fc(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(mc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}m.cc=function(a){a||this.v.A.O||(G(this.v,this.i),this.b[qc]&&this.b[qc][1]&&rc(this.v))};m.dc=function(){};m.Yb=function(a){a||this.v.W()};
|
||||
m.Wb=function(a){if(!a&&!this.v.A.O)if(this.b[qc]&&this.b[qc][1])rc(this.v);else{if((a=this.D)&&!Nb(a,!0))Ob(a,!0),sc(a,0,null),Ob(a,!1);else try{var b=this.v.Za(1);0<b&&(tc(this.v,b),uc(this.v,b,!0),vc(this.v,b))}catch(c){"number"!=typeof c&&zb(this.v,c.stack||c.message)}this.stop();this.H&&J(this.H)}};m.Xb=function(a){a&&!this.v.A.O&&(this.P&&wc(this),a=dc(this,this.w=this.j),this.T==cc?xc(this.G,this.i,a):this.v.g(this.i,a))};
|
||||
m.Zb=function(a){if(!a&&!this.v.A.O){var b;this.R&&wc(this);this.T==cc?b=yc(this.G,this.i):b=this.v.f(this.i);dc(this,this.w=b)}};m.ac=function(a){a||this.v.A.O||jc(this,this.j)};m.$b=function(a){a?(this.F=!0,gc(this,!0)):(this.F=!1,gc(this),kc(this,0))};m.bc=function(a,b){this.j=a?this.j|1<<b:this.j&~(1<<b)};function wc(a){var b=1,c=a.G.j;a.b[nc]&&a.b[nc][1]||(b=-b);jc(a,a.i&~c|a.i+b&c)}
|
||||
m.Wb=function(a){if(!a&&!this.v.A.O)if(this.b[qc]&&this.b[qc][1])rc(this.v);else{if((a=this.D)&&!Nb(a,!0))Ob(a,!0),sc(a,0,null),Ob(a,!1);else try{var b=this.v.$a(1);0<b&&(tc(this.v,b),uc(this.v,b,!0),vc(this.v,b))}catch(c){"number"!=typeof c&&zb(this.v,c.stack||c.message)}this.stop();this.H&&J(this.H)}};m.Xb=function(a){a&&!this.v.A.O&&(this.P&&wc(this),a=dc(this,this.w=this.j),this.U==cc?xc(this.G,this.i,a):this.v.g(this.i,a))};
|
||||
m.Zb=function(a){if(!a&&!this.v.A.O){var b;this.S&&wc(this);this.U==cc?b=yc(this.G,this.i):b=this.v.f(this.i);dc(this,this.w=b)}};m.ac=function(a){a||this.v.A.O||jc(this,this.j)};m.$b=function(a){a?(this.F=!0,gc(this,!0)):(this.F=!1,gc(this),kc(this,0))};m.bc=function(a,b){this.j=a?this.j|1<<b:this.j&~(1<<b)};function wc(a){var b=1,c=a.G.j;a.b[nc]&&a.b[nc][1]||(b=-b);jc(a,a.i&~c|a.i+b&c)}
|
||||
function jc(a,b){a.i=b&a.G.j;if(a.M!==a.i){a.M=a.i;b=a.M;for(var c=0;22>c;c++){var d=a,e="A"+c,f=b&1<<c;d.C[e]=f;d.F||lc(d,e,f)}}}function dc(a,b){a.I=b%C;if(a.N!==a.I){a.N=a.I;b=a.N;for(var c=0;16>c;c++){var d=a,e="D"+c,f=b&1<<c;d.C[e]=f;d.F||lc(d,e,f)}}return a.I}function kc(a,b){a.j=b|0;for(b=0;22>b;b++)a.b["S"+b][1]=a.j&1<<b?1:0;hc(a);return!0}m.stop=function(){jc(this,this.v.i)};
|
||||
function ic(){for(var a=w(document,v,"panel"),b=0;b<a.length;b++){var c=a[b],d=t(c),e=rb(d.id);e||(e=new bc(d,!0));tb(e,c)}}var cc=7,oc="DEP",qc="ENABLE",pc="EXAM",nc="STEP";Xa(ic);function zc(a,b,c){r.call(this,"Bus",a,16);this.v=b;this.D=c;this.F=+a.busWidth||18;this.I=1<<this.F;this.j=this.I-1;this.i=Math.log2(16384);this.C=this.I/16384|0;this.w=0;this.b=[];a=new Ac(this);Bc(a,this.D);this.b=Array(this.C);for(b=0;b<this.C;b++)this.b[b]=a;Mb(this)}ka(zc,r);m=zc.prototype;m.reset=function(){};
|
||||
m.za=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.pa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,Cc(this));return a.data()};m.restore=function(a){a:{a=a[0];var b;for(b=0;b<a.length-1;b+=2){var c=a[b],d=a[b+1];if(d&&4096>d.length){for(var e=0,f=Array(4096),g=0;g<d.length-1;)for(var h=d[g++],k=d[g++];h--;)f[e++]=k;d=f}e=this.b[c];if(!e||!e.restore(d)){q("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
|
||||
function Dc(a,b,c,d){for(var e=b,f=c,g=e>>>a.i;0<f&&g<a.b.length;){var h=a.b[g],k=16384*g,l=16384-(e-k);l>f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Xa+=h.B-e,h.B=e,!0;if(e>=h.B+h.Xa){l=h.size-(e-k);l>f&&(l=f);h.Xa=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,l,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Kc[d]+" at "+ua(b)),!0):Ec(Lc,b,c)}
|
||||
m.Aa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.pa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,Cc(this));return a.data()};m.restore=function(a){a:{a=a[0];var b;for(b=0;b<a.length-1;b+=2){var c=a[b],d=a[b+1];if(d&&4096>d.length){for(var e=0,f=Array(4096),g=0;g<d.length-1;)for(var h=d[g++],k=d[g++];h--;)f[e++]=k;d=f}e=this.b[c];if(!e||!e.restore(d)){q("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
|
||||
function Dc(a,b,c,d){for(var e=b,f=c,g=e>>>a.i;0<f&&g<a.b.length;){var h=a.b[g],k=16384*g,l=16384-(e-k);l>f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Ya+=h.B-e,h.B=e,!0;if(e>=h.B+h.Ya){l=h.size-(e-k);l>f&&(l=f);h.Ya=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,l,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Kc[d]+" at "+ua(b)),!0):Ec(Lc,b,c)}
|
||||
function yc(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.w(b&16383,b);a.w--;return b}function xc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function Cc(a){for(var b=0,c=[],d=0;d<a.C;d++){var e=a.b[d];if(e.rb||e.Qb){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,k=[];g<e.length;){for(var l=e[g],p=g+1;p<e.length&&e[p]===l;)p++;k[h++]=p-g;k[h++]=l;g=p}k.length<e.length&&(e=k)}c[f]=e}}return c}
|
||||
m.Rb=function(a){this.w||(this.D&&Pb(this.D,4)&&Qb(this.D,"memory fault on "+K(this.D,a),!0,!0),this.v.W())};function Ec(a,b,c){q("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Fc=1,Lc=2;function Mc(a){r.call(this,"Device",a,256)}ka(Mc,r);m=Mc.prototype;m.Ka=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.D=d;Mb(this)};m.za=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.pa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){return(new F(this)).data()};
|
||||
m.restore=function(){return!0};Xa(function(){for(var a=w(document,v,"device"),b=0;b<a.length;b++){var c,d=a[b];c=t(d);switch(c.type){case "default":c=new Mc(c),tb(c,d)}}});function Ac(a,b,c,d,e){this.H=a;this.id=Nc+=2;this.B=b;this.Xa=c;this.size=d||0;this.type=e||Oc;this.G=e==Pc;this.b=null;this.f=this.w=this.ub;this.g=this.D=this.Ya;this.i=this.v=0;Bc(this);this.rb=this.Qb=!1;if(this.size){a=this.j=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Qc(this,Rc)}else Qc(this)}m=Ac.prototype;m.save=function(){return this.j};
|
||||
m.restore=function(a){return a&&this.size==a.length?(this.j=a,this.rb=!0):!1};function Qc(a,b){b||(b=Sc);Tc(a,b,void 0);Uc(a,b,void 0)}function Tc(a,b,c){c&&a.i||(a.f=b[0]||a.ub);if(c||void 0===c)a.w=b[0]||a.ub}function Uc(a,b,c){c&&a.v||(a.g=!a.G&&b[1]||a.Ya);if(c||void 0===c)a.D=b[1]||a.Ya}m.Ra=function(a,b){b?this.v++||Uc(this,Vc,!1):this.i++||Tc(this,Vc,!1)};function Wc(a,b){b?--a.v||(a.g=a.G?a.Ya:a.D):--a.i||(a.f=a.w)}
|
||||
function Bc(a,b,c){a.b=b;a.i=a.v=0;c&&((a.i=c.i)&&Tc(a,Vc,!1),(a.v=c.v)&&Uc(a,Vc,!1))}m.ub=function(a,b){this.b&&Pb(this.b,32)&&Qb(this.b,"attempt to read invalid address "+K(this.b,b),!0);this.H.Rb(b);return-1};m.Ya=function(a,b,c){this.b&&Pb(this.b,32)&&Qb(this.b,"attempt to write "+K(this.b,a)+" to invalid addresses "+K(this.b,c),!0)};m.gc=function(a){return this.j[a]};m.pc=function(a,b){this.j[b]!=a&&(this.j[b]=a,this.rb=!0)};
|
||||
m.ec=function(a,b){if(this.b&&null!=this.B){var c=this.b;Xc(c,this.B+a,2,c.N)&&c.W(!1)}return this.w(a,b)};m.oc=function(a,b,c){if(this.b&&null!=this.B){var d=this.b;Xc(d,this.B+b,2,d.K)&&d.W(!1)}this.G?this.Ya(a,0,c):this.D(a,b,c)};var Oc=0,Pc=2,Kc=["NONE","RAM","ROM"],Nc=0,Sc=[],Rc=[Ac.prototype.gc,Ac.prototype.pc],Vc=[Ac.prototype.ec,Ac.prototype.oc];
|
||||
function Yc(a,b){r.call(this,"CPU",a,1);b=+a.cycles||b;var c=+a.multiplier||1;this.jb=0;this.mb=b;this.ga=c;this.kb=Math.round(this.mb/1E4)/100;this.aa=this.kb*this.ga;this.lb=this.Ha=this.ia=this.bb=0;this.A.O=this.A.ib=!1;this.A.ea=a.autoStart;"string"==typeof this.A.ea&&(this.A.ea="true"==this.A.ea);this.A.Ua=!1;this.Fa=this.ka=0;this.Ga=+a.csStart;this.ra=+a.csInterval;this.la=+a.csStop;this.P=[];this.Fb=this.jc.bind(this);this.U=this.M=this.T=this.N=this.L=this.Ea=this.R=this.ma=this.nb=this.Z=
|
||||
m.Rb=function(a){this.w||(this.D&&Pb(this.D,4)&&Qb(this.D,"memory fault on "+K(this.D,a),!0,!0),this.v.W())};function Ec(a,b,c){q("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Fc=1,Lc=2;function Mc(a){r.call(this,"Device",a,256)}ka(Mc,r);m=Mc.prototype;m.Ka=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.D=d;Mb(this)};m.Aa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.pa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){return(new F(this)).data()};
|
||||
m.restore=function(){return!0};Xa(function(){for(var a=w(document,v,"device"),b=0;b<a.length;b++){var c,d=a[b];c=t(d);switch(c.type){case "default":c=new Mc(c),tb(c,d)}}});function Ac(a,b,c,d,e){this.H=a;this.id=Nc+=2;this.B=b;this.Ya=c;this.size=d||0;this.type=e||Oc;this.G=e==Pc;this.b=null;this.f=this.w=this.ub;this.g=this.D=this.Za;this.i=this.v=0;Bc(this);this.rb=this.Qb=!1;if(this.size){a=this.j=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Qc(this,Rc)}else Qc(this)}m=Ac.prototype;m.save=function(){return this.j};
|
||||
m.restore=function(a){return a&&this.size==a.length?(this.j=a,this.rb=!0):!1};function Qc(a,b){b||(b=Sc);Tc(a,b,void 0);Uc(a,b,void 0)}function Tc(a,b,c){c&&a.i||(a.f=b[0]||a.ub);if(c||void 0===c)a.w=b[0]||a.ub}function Uc(a,b,c){c&&a.v||(a.g=!a.G&&b[1]||a.Za);if(c||void 0===c)a.D=b[1]||a.Za}m.Ra=function(a,b){b?this.v++||Uc(this,Vc,!1):this.i++||Tc(this,Vc,!1)};function Wc(a,b){b?--a.v||(a.g=a.G?a.Za:a.D):--a.i||(a.f=a.w)}
|
||||
function Bc(a,b,c){a.b=b;a.i=a.v=0;c&&((a.i=c.i)&&Tc(a,Vc,!1),(a.v=c.v)&&Uc(a,Vc,!1))}m.ub=function(a,b){this.b&&Pb(this.b,32)&&Qb(this.b,"attempt to read invalid address "+K(this.b,b),!0);this.H.Rb(b);return-1};m.Za=function(a,b,c){this.b&&Pb(this.b,32)&&Qb(this.b,"attempt to write "+K(this.b,a)+" to invalid addresses "+K(this.b,c),!0)};m.gc=function(a){return this.j[a]};m.pc=function(a,b){this.j[b]!=a&&(this.j[b]=a,this.rb=!0)};
|
||||
m.ec=function(a,b){if(this.b&&null!=this.B){var c=this.b;Xc(c,this.B+a,2,c.N)&&c.W(!1)}return this.w(a,b)};m.oc=function(a,b,c){if(this.b&&null!=this.B){var d=this.b;Xc(d,this.B+b,2,d.K)&&d.W(!1)}this.G?this.Za(a,0,c):this.D(a,b,c)};var Oc=0,Pc=2,Kc=["NONE","RAM","ROM"],Nc=0,Sc=[],Rc=[Ac.prototype.gc,Ac.prototype.pc],Vc=[Ac.prototype.ec,Ac.prototype.oc];
|
||||
function Yc(a,b){r.call(this,"CPU",a,1);b=+a.cycles||b;var c=+a.multiplier||1;this.jb=0;this.mb=b;this.ha=c;this.kb=Math.round(this.mb/1E4)/100;this.ba=this.kb*this.ha;this.lb=this.Ha=this.ja=this.cb=0;this.A.O=this.A.ib=!1;this.A.ga=a.autoStart;"string"==typeof this.A.ga&&(this.A.ga="true"==this.A.ga);this.A.Ua=!1;this.Fa=this.la=0;this.Ga=+a.csStart;this.ra=+a.csInterval;this.ma=+a.csStop;this.P=[];this.Fb=this.jc.bind(this);this.V=this.M=this.U=this.N=this.L=this.Ea=this.S=this.na=this.nb=this.Z=
|
||||
0;this.Na=null;Mb(this)}ka(Yc,r);m=Yc.prototype;m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.D=d;this.Na=a.j;for(a=0;a<Zc.length;a++)(b=this.J[Zc[a]])&&this.H.qa(null,Zc[a],b);Mb(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
|
||||
m.za=function(a,b){var c=$c(this.H,"autoStart");null!=c?this.A.ea="true"==c?!0:"false"==c?!1:!!c:null==this.A.ea&&(this.A.ea=!this.D&&void 0===this.J.run);if(!b){if(a){ad(this);if(!this.restore(a))return!1;bd(this)}else this.reset();this.D?(a=this.D,b=this.A.ea,a.Ia=!0,a.u("Type ? for help with PDPjs Debugger commands"),cd(a),b||dd(a),a.ua&&(b=a.ua,a.ua=null,ed(a,b,!0))):this.status("No debugger detected");this.A.ea||this.u("CPU will not be auto-started "+(this.Na?"(click Run to start)":"(type 'go' to start)"))}return!0};
|
||||
m.pa=function(a){return a?this.save():!0};m.ea=function(){return this.A.O?!0:this.A.ea?(rc(this),!0):!1};m.Ib=function(){return 0};function bd(a){void 0===a.Ga&&(a.Ga=0);void 0===a.ra&&(a.ra=-1);void 0===a.la&&(a.la=-1);a.A.Ua=0<=a.Ga&&0<a.ra;a.A.Ua&&(a.Fa=0,a.ka=a.Ga-a.U)}function vc(a,b){if(a.A.Ua){var c=!1;a.Fa=a.Fa+a.Ib()|0;a.ka-=b;0>=a.ka&&(a.ka+=a.ra,c=!0);0<=a.la&&a.la<=fd(a)&&(a.ra=a.la=-1,bd(a),a.W(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Fa))}}
|
||||
m.qa=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.Y)a=!0;else{var b=null,c,h=qb(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.A.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.A.Y);c++);c==h.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.A.ready?"powered yet":"ready yet"+(b.eb?" (waiting for notification)":""))+".");a=!1}a&&(d.A.O?d.W():rc(d))},!0;case "speed":return this.J[b]=
|
||||
c,!0;case "setSpeed":return this.J[b]=c,c.onclick=function(){gd(d,d.ga<<1,!0)},c.textContent=this.aa.toFixed(2)+"Mhz",!0}return!1};function uc(a,b,c){a.U+=b;c&&(a.T=a.N=0)}function hd(a,b){var c=1;b&&1<a.ga&&a.Z&&(c=a.Z/a.kb);a.lb=Math.round(1E3/id);a.Ha=Math.floor(a.mb/id*c);b||(a.ia=a.Ha);a.bb=0}function fd(a){return a.U+a.M+a.T-a.N}function ad(a){a.Z=0;a.nb=0;a.U=a.M=a.T=a.N=0;bd(a);gd(a,1)}
|
||||
function gd(a,b,c){var d=!1;if(void 0!==b){.8>a.Z/a.aa?b=1:d=!0;a.ga=b;b=a.kb*a.ga;if(a.aa!=b){a.aa=b;b=a.aa.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&jd(a.H)}uc(a,a.M);a.M=0;a.L=ob();a.R=0;hd(a);return d}function kd(a,b){for(var c=a.P.length-1;0<=c;c--){var d=a.P[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function ld(a){for(var b=[],c=0;c<a.P.length;c++)b.push(a.P[c][0]);return b}
|
||||
function tc(a,b){for(var c=a.P.length-1;0<=c;c--){var d=a.P[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function md(a,b){var c=a.T-=a.N;a.N=0;b&&(a.T=0);return c}
|
||||
m.jc=function(){if(this.A.O){this.bb>=this.mb&&hd(this,!0);this.ma=0;this.Ea=ob();if(this.R){var a=this.Ea-this.R;a>this.lb&&(this.L+=a,this.L>this.Ea&&(this.L=this.Ea))}try{do{var b=kd(this,this.A.Ua?1:this.Ha);try{this.Za(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.ma+=b;this.M+=b;vc(this,b);tc(this,b);this.ia-=b;if(0>=this.ia){this.ia+=this.Ha;++this.nb>=nd&&(this.H&&J(this.H,void 0),this.nb=0);break}}while(this.A.O)}catch(e){this.W();this.H&&this.H.stop(ob(),fd(this));zb(this,
|
||||
e.stack||e.message);return}if(this.A.O){a=setTimeout;b=this.Fb;this.R=ob();var c=this.lb;this.ma&&(c=Math.round(c*this.ma/this.Ha));var c=c-(this.R-this.Ea),d=this.R-this.L;d&&(this.Z=Math.round(this.M/(10*d))/100,864E5<=d&&(this.U=0,gd(this)));if(0>c||this.Z<this.aa)-1E3>c&&(this.L-=c),c=0;this.bb+=this.ma;this.R+=c;a(b,c)}}};
|
||||
function rc(a,b){if(!Bb(a))if(a.A.O)a.u(a.toString()+" busy");else{gd(a);a.A.O=!0;a.A.ib=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&jd(a.H,!0),a.H.start(a.L,fd(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.Za=function(){return 0};m.W=function(a){var b=!1;if(this.A.O){md(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),fd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var id=30,nd=15,Zc=["power","reset"];
|
||||
m.Aa=function(a,b){var c=$c(this.H,"autoStart");null!=c?this.A.ga="true"==c?!0:"false"==c?!1:!!c:null==this.A.ga&&(this.A.ga=!this.D&&void 0===this.J.run);if(!b){if(a){ad(this);if(!this.restore(a))return!1;bd(this)}else this.reset();this.D?(a=this.D,b=this.A.ga,a.Ia=!0,a.u("Type ? for help with PDPjs Debugger commands"),cd(a),b||dd(a),a.ua&&(b=a.ua,a.ua=null,ed(a,b,!0))):this.status("No debugger detected");this.A.ga||this.u("CPU will not be auto-started "+(this.Na?"(click Run to start)":"(type 'go' to start)"))}return!0};
|
||||
m.pa=function(a){return a?this.save():!0};m.ga=function(){return this.A.O?!0:this.A.ga?(rc(this),!0):!1};m.Ib=function(){return 0};function bd(a){void 0===a.Ga&&(a.Ga=0);void 0===a.ra&&(a.ra=-1);void 0===a.ma&&(a.ma=-1);a.A.Ua=0<=a.Ga&&0<a.ra;a.A.Ua&&(a.Fa=0,a.la=a.Ga-a.V)}function vc(a,b){if(a.A.Ua){var c=!1;a.Fa=a.Fa+a.Ib()|0;a.la-=b;0>=a.la&&(a.la+=a.ra,c=!0);0<=a.ma&&a.ma<=fd(a)&&(a.ra=a.ma=-1,bd(a),a.W(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Fa))}}
|
||||
m.qa=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.Y)a=!0;else{var b=null,c,h=qb(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.A.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.A.Y);c++);c==h.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.A.ready?"powered yet":"ready yet"+(b.fb?" (waiting for notification)":""))+".");a=!1}a&&(d.A.O?d.W():rc(d))},!0;case "speed":return this.J[b]=
|
||||
c,!0;case "setSpeed":return this.J[b]=c,c.onclick=function(){gd(d,d.ha<<1,!0)},c.textContent=this.ba.toFixed(2)+"Mhz",!0}return!1};function uc(a,b,c){a.V+=b;c&&(a.U=a.N=0)}function hd(a,b){var c=1;b&&1<a.ha&&a.Z&&(c=a.Z/a.kb);a.lb=Math.round(1E3/id);a.Ha=Math.floor(a.mb/id*c);b||(a.ja=a.Ha);a.cb=0}function fd(a){return a.V+a.M+a.U-a.N}function ad(a){a.Z=0;a.nb=0;a.V=a.M=a.U=a.N=0;bd(a);gd(a,1)}
|
||||
function gd(a,b,c){var d=!1;if(void 0!==b){.8>a.Z/a.ba?b=1:d=!0;a.ha=b;b=a.kb*a.ha;if(a.ba!=b){a.ba=b;b=a.ba.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&jd(a.H)}uc(a,a.M);a.M=0;a.L=ob();a.S=0;hd(a);return d}function kd(a,b){for(var c=a.P.length-1;0<=c;c--){var d=a.P[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function ld(a){for(var b=[],c=0;c<a.P.length;c++)b.push(a.P[c][0]);return b}
|
||||
function tc(a,b){for(var c=a.P.length-1;0<=c;c--){var d=a.P[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function md(a,b){var c=a.U-=a.N;a.N=0;b&&(a.U=0);return c}
|
||||
m.jc=function(){if(this.A.O){this.cb>=this.mb&&hd(this,!0);this.na=0;this.Ea=ob();if(this.S){var a=this.Ea-this.S;a>this.lb&&(this.L+=a,this.L>this.Ea&&(this.L=this.Ea))}try{do{var b=kd(this,this.A.Ua?1:this.Ha);try{this.$a(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.na+=b;this.M+=b;vc(this,b);tc(this,b);this.ja-=b;if(0>=this.ja){this.ja+=this.Ha;++this.nb>=nd&&(this.H&&J(this.H,void 0),this.nb=0);break}}while(this.A.O)}catch(e){this.W();this.H&&this.H.stop(ob(),fd(this));zb(this,
|
||||
e.stack||e.message);return}if(this.A.O){a=setTimeout;b=this.Fb;this.S=ob();var c=this.lb;this.na&&(c=Math.round(c*this.na/this.Ha));var c=c-(this.S-this.Ea),d=this.S-this.L;d&&(this.Z=Math.round(this.M/(10*d))/100,864E5<=d&&(this.V=0,gd(this)));if(0>c||this.Z<this.ba)-1E3>c&&(this.L-=c),c=0;this.cb+=this.na;this.S+=c;a(b,c)}}};
|
||||
function rc(a,b){if(!Bb(a))if(a.A.O)a.u(a.toString()+" busy");else{gd(a);a.A.O=!0;a.A.ib=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&jd(a.H,!0),a.H.start(a.L,fd(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.$a=function(){return 0};m.W=function(a){var b=!1;if(this.A.O){md(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),fd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var id=30,nd=15,Zc=["power","reset"];
|
||||
function od(a){var b=+a.model||1001;Yc.call(this,a,1E6);this.Db=b;this.Oa=+a.addrReset||0;this.Pb=pd.bind(this);this.w=L.bind(this);this.Ca=null;this.vb=[];this.A.complete=!1}ka(od,Yc);m=od.prototype;
|
||||
m.reset=function(){this.status("Model "+this.Db);this.A.O&&this.W();this.Ia=this.Ja=this.b=this.K=0;this.i=this.Da=this.Oa;this.I=this.ua=-1;this.F=this.j=0;this.ob=[0,0];this.sa=[0,0];this.ja=[0,0];this.ta=[0,0];this.Ba=this.i;this.C=0;this.f=this.fc;this.g=this.qc;this.Ca=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Ib=function(){return 0};
|
||||
m.save=function(){var a=new F(this);a.set(0,[this.b,this.K,this.Ia,this.Ja,this.i,this.ua,this.I,this.j,this.C,this.Da,this.Ba,this.Oa]);a.set(1,[]);a.set(2,[this.U,this.ga,this.A.ea]);a.set(3,qd(this));a.set(4,ld(this));return a.data()};
|
||||
m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.K=b.next().value;this.Ia=b.next().value;this.Ja=b.next().value;this.i=b.next().value;this.ua=b.next().value;this.I=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Da=b.next().value;this.Ba=b.next().value;this.Oa=b.next().value;b=a[2];this.U=b[0];gd(this,b[1]);this.A.ea=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.vb.length;d++){var e=this.vb[d];
|
||||
m.reset=function(){this.status("Model "+this.Db);this.A.O&&this.W();this.Ia=this.Ja=this.b=this.K=0;this.i=this.Da=this.Oa;this.I=this.ua=-1;this.F=this.j=0;this.ob=[0,0];this.sa=[0,0];this.ka=[0,0];this.ta=[0,0];this.Ba=this.i;this.C=0;this.f=this.fc;this.g=this.qc;this.Ca=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Ib=function(){return 0};
|
||||
m.save=function(){var a=new F(this);a.set(0,[this.b,this.K,this.Ia,this.Ja,this.i,this.ua,this.I,this.j,this.C,this.Da,this.Ba,this.Oa]);a.set(1,[]);a.set(2,[this.V,this.ha,this.A.ga]);a.set(3,qd(this));a.set(4,ld(this));return a.data()};
|
||||
m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.K=b.next().value;this.Ia=b.next().value;this.Ja=b.next().value;this.i=b.next().value;this.ua=b.next().value;this.I=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Da=b.next().value;this.Ba=b.next().value;this.Oa=b.next().value;b=a[2];this.V=b[0];gd(this,b[1]);this.A.ga=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.vb.length;d++){var e=this.vb[d];
|
||||
if(e.nc===b[c]){d=e;break a}}d=null}d&&(d.next=this.Ca,this.Ca=d)}a=a[4];for(b=0;b<this.P.length&&b<a.length;b++)this.P[b][0]=a[b];return!0};function rd(a,b){a.j=a.j&-254049|b&254048;a.j|=b&4096;b&2048?a.j&4096||(a.j|=2048):a.j&=-2049}function sd(a,b){var c=a.i;a.i=(c+b)%Tb;return c}function G(a,b){a.i=b%Tb}function qd(a){var b=[];for(a=a.Ca;a;)b.push(a.nc),a=a.next;return b}m.fc=function(a){var b=this.G;a=this.Ba=a;return b.b[(a&b.j)>>>b.i].f(a&16383,a)};
|
||||
m.qc=function(a,b){var c=this.G;a=this.Ba=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b};
|
||||
m.Za=function(a){this.A.complete=!0;var b=this.D?td(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.T=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(ud(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ca||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&ud(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.K&4194304?this.K=this.Ia=this.f(this.b):0<=this.ua?(this.K=this.Ja=this.f(this.ua),this.ua=-1):(this.K=
|
||||
this.Ja=this.f(this.Da=this.i),this.i=(this.i+1)%Tb);this.K&=8388607;this.b=this.K&262143;if(a=this.K>>18&15)this.b=this.b+(this.Ia=this.f(a))&Sb;a=this.K&4194304?-1:this.Ja/Zb|0;0<=a&&this.Pb(a);this.N--}while(0<this.N);return this.A.complete?this.T-this.N:!1===this.A.complete?-1:0};Xa(function(){for(var a=w(document,v,"cpu"),b=0;b<a.length;b++){var c=a[b],d=t(c),d=new od(d);tb(d,c)}});function pd(a){vd[a>>4].call(this,a,a&15)}function N(a){this.w(a)}
|
||||
m.$a=function(a){this.A.complete=!0;var b=this.D?td(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.U=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(ud(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ca||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&ud(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.K&4194304?this.K=this.Ia=this.f(this.b):0<=this.ua?(this.K=this.Ja=this.f(this.ua),this.ua=-1):(this.K=
|
||||
this.Ja=this.f(this.Da=this.i),this.i=(this.i+1)%Tb);this.K&=8388607;this.b=this.K&262143;if(a=this.K>>18&15)this.b=this.b+(this.Ia=this.f(a))&Sb;a=this.K&4194304?-1:this.Ja/Zb|0;0<=a&&this.Pb(a);this.N--}while(0<this.N);return this.A.complete?this.U-this.N:!1===this.A.complete?-1:0};Xa(function(){for(var a=w(document,v,"cpu"),b=0;b<a.length;b++){var c=a[b],d=t(c),d=new od(d);tb(d,c)}});function pd(a){vd[a>>4].call(this,a,a&15)}function N(a){this.w(a)}
|
||||
function wd(){var a=0,b=this.f(this.b),c=b/$b&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*$b+(d<<24)+(b&16777215);a&&(b=(b+a)%C);this.g(this.b,b)}function xd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;a=32>=c+d?(a>>c&(1<<d)-1)>>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.I=-1}}
|
||||
function yd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%C;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.I=-1}}function zd(a,b){this.g(b,this.f(this.b))}function Ad(a,b){this.g(b,this.b)}function Bd(a,b){this.g(this.b,this.f(b))}function Cd(a,b){this.g(b,0)}function Dd(a,b){this.g(b,B-this.f(b))}function Ed(a,b){this.g(b,B)}
|
||||
function Fd(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Gd(a,d,c)+(c-(c&x)))}function Hd(a,b){var c=this.f(b);this.g(b,Gd(a,c,0))}function Id(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Gd(a,c,b)+(b-(b&x)))}function Jd(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>z?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function ae(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Gd(a,d,c)+c)}
|
||||
function be(a,b){var c=this.b*y,d=this.f(b);this.g(b,Gd(a,d,c)+c)}function ce(a,b){b=(this.f(b)&x)*y;var c=this.f(this.b);this.g(this.b,Gd(a,c,b)+b)}function de(a,b){var c=this.f(this.b),d=(c&x)*y,c=Gd(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function ee(a,b){var c=this.f(this.b)&x,d=this.f(b);this.g(b,fe(a,d,c)+c)}function ge(a,b){var c=this.f(b);this.g(b,fe(a,c,this.b)+this.b)}function he(a,b){b=this.f(b)&x;var c=this.f(this.b);this.g(this.b,fe(a,c,b)+b)}
|
||||
function ie(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d&=x,a){case 256:d+=x*y;break;case 384:d+=c>Ub?x*y:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function je(a,b){var c=this.f(this.b)/y|0,d=this.f(b);this.g(b,fe(a,d,c)+c)}function ke(a,b){var c=this.f(b);this.g(b,fe(a,c,0))}function le(a,b){b=this.f(b)/y|0;var c=this.f(this.b);this.g(this.b,fe(a,c,b)+b)}function me(a,b){var c=this.f(this.b),d=c/y|0,c=fe(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function O(a){ne[a&7].call(this,a,a>>3&127)}
|
||||
function oe(){}function pe(){}function L(a){this.u("undefined opcode: "+ua(a));sd(this,-1);this.W()}function qe(a){a>z&&(a!=A?a=Wb-a:this.j|=163840);return a}function Q(a,b){var c=(a+b)%C;re.call(this,a,b,c);return c}
|
||||
function se(a,b,c){var d=!1,e=!1,f=b-b%A;a=a%A+b*A%C;b=this.F=f+Math.trunc(b/2);c>z&&(c=C-c,d=!d);b>z&&(a?(b=B-b,a=C-a):b&&(b=C-b),e=!0,d=!d);if(b>=c)return this.j|=131104,-1;f=this.ob;f[0]=0;f[1]=0;f=this.sa;f[0]=1;f[1]=0;f=this.ja;f[0]=c;f[1]=0;c=this.ta;c[0]=a;for(c[1]=b;0<te(this.ta,this.ja);)ue(this.ja,this.ja),ue(this.sa,this.sa);do{if(0<=te(this.ta,this.ja)&&(b=this.ta,a=this.ja,b[0]-=a[0],b[1]-=a[1],0>b[0]&&(b[0]+=C,b[1]--),ue(this.ob,this.sa),ve(this.ta)))break;we(this.ja);we(this.sa)}while(!ve(this.sa));
|
||||
function se(a,b,c){var d=!1,e=!1,f=b-b%A;a=a%A+b*A%C;b=this.F=f+Math.trunc(b/2);c>z&&(c=C-c,d=!d);b>z&&(a?(b=B-b,a=C-a):b&&(b=C-b),e=!0,d=!d);if(b>=c)return this.j|=131104,-1;f=this.ob;f[0]=0;f[1]=0;f=this.sa;f[0]=1;f[1]=0;f=this.ka;f[0]=c;f[1]=0;c=this.ta;c[0]=a;for(c[1]=b;0<te(this.ta,this.ka);)ue(this.ka,this.ka),ue(this.sa,this.sa);do{if(0<=te(this.ta,this.ka)&&(b=this.ta,a=this.ka,b[0]-=a[0],b[1]-=a[1],0>b[0]&&(b[0]+=C,b[1]--),ue(this.ob,this.sa),ve(this.ta)))break;we(this.ka);we(this.sa)}while(!ve(this.sa));
|
||||
a=this.ob[0];this.F=this.ta[0];d&&a&&(a=C-a);e&&this.F&&(this.F=C-this.F);return a}
|
||||
function xe(a,b,c){var d=a,e=b;b=!1;var f;d>z&&(d=C-d,b=!b);e>z&&(e=C-e,b=!b);if(d<y&&e<y)a=d*e,f=0;else{a=d&x;d=Math.trunc(d/y);f=e&x;var e=Math.trunc(e/y),g=a*f,h=d*f+Math.trunc(g/y);f=Math.trunc(h/y);h=(h&x)+a*e;a=h*y+(g&x);f+=Math.trunc(h/y)+d*e}b&&(a?(f=B-f,a=C-a):f&&(f=C-f));if(c)return(f||a>z)&&(f!=B||a<=z)&&(this.j|=131072),a;c=a;b=f;a=b-b%A;b=2*b%C+Math.trunc(c/A);c=a+c%A;d=b-b%A;a!=d&&(b=a+(b-d),this.j|=131072);this.F=c;return b}
|
||||
function ye(a){a?a==A?this.j|=163840:a=Wb-a:this.j|=98304;return a}function ze(a,b){var c=a-b;0>c&&(c+=C);re.call(this,c,b,a);return c}function re(a,b,c){a=Math.trunc(a/Vb);b=Math.trunc(b/Vb);c=Math.trunc(c/Vb);var d=a^(a^b)&(b^c);this.j=this.j|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function R(a,b){return((a/E|0)&(b/E|0))*E+((a&b)>>>0)}function S(a,b){return R(a,(~(b/E|0)&15)*E+(~b>>>0))}function T(a,b){return(a<A?a:a-C)-(b<A?b:b-C)}
|
||||
|
|
@ -152,139 +152,140 @@ c))},function(a,b){this.g(b,U(this.f(b),this.b))},function(a,b){this.g(b,U(this.
|
|||
y;R(a,c)&&G(this,this.i+1);this.g(b,U(a,c))},function(a,b){this.g(b,U(this.f(b),this.f(this.b)))},function(a,b){this.g(b,U(this.f(b),X(this.f(this.b))))},function(a,b){a=this.f(b);var c=this.f(this.b);R(a,c)||G(this,this.i+1);this.g(b,U(a,c))},function(a,b){a=this.f(b);var c=X(this.f(this.b));R(a,c)||G(this,this.i+1);this.g(b,U(a,c))},function(a,b){G(this,this.i+1);this.g(b,U(this.f(b),this.f(this.b)))},function(a,b){G(this,this.i+1);this.g(b,U(this.f(b),X(this.f(this.b))))},function(a,b){a=this.f(b);
|
||||
var c=this.f(this.b);R(a,c)&&G(this,this.i+1);this.g(b,U(a,c))},function(a,b){a=this.f(b);var c=X(this.f(this.b));R(a,c)&&G(this,this.i+1);this.g(b,U(a,c))},O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O],ne=[function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a,b){switch(b){case 0:a=this.f(this.b);a&8&&(this.j&=-131073);a&131072&&(this.j&=-262145);break;default:this.w(a)}},
|
||||
function(a,b){switch(b){case 0:a=0;this.j&131072&&(a|=8);this.j&262144&&(a|=65536);this.g(this.b,a);break;default:this.w(a)}},function(a){this.w(a)},function(a){this.w(a)}];
|
||||
function Be(a){r.call(this,"ROM",a,128);this.X=this.b=null;this.C=+a.addr;this.j=+a.size;this.i=a.alias;"string"==typeof this.i&&(this.i=eval(this.i));this.w=a.file;this.F=wa(this.w);if(this.w){a=this.w;var b=xa(this.F);"json"!=b&&"hex"!=b&&(a=Ja()+"/api/v1/dump?file="+this.w+"&format=bytes&decimal=true");var c=this;Ha(a,null,!0,function(a,b,f){f?(c.ha("Unable to load ROM resource (error "+f+": "+a+")"),c.w=null):(mb(c.ab,a,b),(a=Ia(a,b))?(c.b=a.da,c.X=a.X):c.w=null);Ce(c)})}}ka(Be,r);
|
||||
Be.prototype.Ka=function(a,b,c,d){this.G=b;this.v=c;this.D=d;Ce(this)};Be.prototype.za=function(){this.X&&(this.D&&De(this.D,this.id,this.C,this.j,this.X),delete this.X);return!0};Be.prototype.pa=function(){return!0};
|
||||
function Be(a){r.call(this,"ROM",a,128);this.X=this.b=null;this.C=+a.addr;this.j=+a.size;this.i=a.alias;"string"==typeof this.i&&(this.i=eval(this.i));this.w=a.file;this.F=wa(this.w);if(this.w){a=this.w;var b=xa(this.F);"json"!=b&&"hex"!=b&&(a=Ja()+"/api/v1/dump?file="+this.w+"&format=bytes&decimal=true");var c=this;Ha(a,null,!0,function(a,b,f){f?(c.ia("Unable to load ROM resource (error "+f+": "+a+")"),c.w=null):(mb(c.bb,a,b),(a=Ia(a,b))?(c.b=a.ea,c.X=a.X):c.w=null);Ce(c)})}}ka(Be,r);
|
||||
Be.prototype.Ka=function(a,b,c,d){this.G=b;this.v=c;this.D=d;Ce(this)};Be.prototype.Aa=function(){this.X&&(this.D&&De(this.D,this.id,this.C,this.j,this.X),delete this.X);return!0};Be.prototype.pa=function(){return!0};
|
||||
function Ce(a){if(!Lb(a)){if(a.w){if(!a.b||!a.G)return;a.j||(a.j=a.b.length);if(a.b.length!=a.j)zb(a,"ROM size ("+n(a.b.length,8,!0)+") does not match specified size ("+n(a.j,8,!0)+")");else{var b;b=a.C;if(Dc(a.G,b,a.j,Pc)){var c;for(c=0;c<a.b.length;c++)xc(a.G,b+c,a.b[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.i?b.push(a.i):null!=a.i&&a.i.length&&(b=a.i);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.G,g=d.j,h=[],k=d.C>>>f.i;0<g&&k<f.b.length;)h.push(f.b[k++]),g-=16384;f=d.G;d=d.j;g=0;for(e>>>=
|
||||
f.i;0<d&&e<f.b.length;){k=h[g++];if(!k)break;f.b[e++]=k;d-=16384}}delete a.b}}}Mb(a)}}Xa(function(){for(var a=w(document,v,"rom"),b=0;b<a.length;b++){var c=a[b],d=t(c),d=new Be(d);tb(d,c)}});
|
||||
function Ee(a){r.call(this,"RAM",a);this.X=this.Pa=null;this.i=+a.addr;this.j=+a.size;this.wa=a.load;this.va=a.exec;null!=this.wa&&(this.wa=+this.wa);null!=this.va&&(this.va=+this.va);this.w=this.F=!1;this.b=a.file;this.C=wa(this.b);if(this.b){a=this.b;var b=xa(this.C);"json"!=b&&"hex"!=b&&(a=Ja()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;Ha(a,null,!0,function(a,b,f){f?(c.ha("Unable to load RAM resource (error "+f+": "+a+")"),c.b=null):(mb(c.ab,a,b),(a=Ia(a,b))?(c.Pa=a.Pa,
|
||||
c.X=a.X,null==c.wa&&(c.wa=a.wa),null==c.va&&(c.va=a.va)):c.b=null);Fe(c)})}}ka(Ee,r);Ee.prototype.Ka=function(a,b,c,d){this.G=b;this.v=c;this.D=d;Fe(this)};Ee.prototype.za=function(a,b){this.X&&(this.D&&De(this.D,this.id,this.i,this.j,this.X),delete this.X);b||this.reset();return!0};Ee.prototype.pa=function(){return!0};
|
||||
function Fe(a){if(a.G&&(!a.w&&a.j&&(Dc(a.G,a.i,a.j,1)?a.w=!0:a.j=0),!Lb(a))){if(!a.w)q("No RAM allocated");else if(a.b){if(!a.Pa)return;Ge(a,a.Pa,a.wa,a.va,a.i)?a.status('Loaded image "'+a.C+'"'):a.ha('Error loading image "'+a.C+'"')}a.F=!0;Mb(a)}}
|
||||
Ee.prototype.reset=function(){if(this.w&&!this.F){for(var a=this.G,b=this.i,c=this.j,d=b&16383,b=b>>>a.i;0<c&&b<a.b.length;){var e=a.b[b],f=c,g=0,g=void 0===g?0:g,d=d||0;void 0===f&&(f=e.size);0>g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h<e.size;h++)e.D(g,d,e.B+d);c-=16384;b++;d=0}this.Pa&&Ge(this,this.Pa,this.wa,this.va,this.i,!this.D)}this.F=!1};
|
||||
function Ge(a,b,c,d,e,f){var g=!1;null==c&&(c=e);if(null!=c){for(g=0;g<b.length;g++)xc(a.G,c+g,b[g]);g=!0}g&&(null==d&&(a.v.W(),f=!1),null!=d&&(a=a.v,a.Oa=d,G(a,d),f?a.A.Y?a.A.O||rc(a):a.A.ea=!0:a.D&&a.A.Y?a.W()||a.H.A.reset||(cd(a.D),J(a.H,-1)):!1===f&&a.W(),!a.A.O&&a.Na&&a.Na.stop()));return g}Xa(function(){for(var a=w(document,v,"ram"),b=0;b<a.length;b++){var c=a[b],d=t(c),d=new Ee(d);tb(d,c)}});
|
||||
function Ee(a){r.call(this,"RAM",a);this.X=this.Pa=null;this.i=+a.addr;this.j=+a.size;this.xa=a.load;this.wa=a.exec;null!=this.xa&&(this.xa=+this.xa);null!=this.wa&&(this.wa=+this.wa);this.w=this.F=!1;this.b=a.file;this.C=wa(this.b);if(this.b){a=this.b;var b=xa(this.C);"json"!=b&&"hex"!=b&&(a=Ja()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;Ha(a,null,!0,function(a,b,f){f?(c.ia("Unable to load RAM resource (error "+f+": "+a+")"),c.b=null):(mb(c.bb,a,b),(a=Ia(a,b))?(c.Pa=a.Pa,
|
||||
c.X=a.X,null==c.xa&&(c.xa=a.xa),null==c.wa&&(c.wa=a.wa)):c.b=null);Fe(c)})}}ka(Ee,r);Ee.prototype.Ka=function(a,b,c,d){this.G=b;this.v=c;this.D=d;Fe(this)};Ee.prototype.Aa=function(a,b){this.X&&(this.D&&De(this.D,this.id,this.i,this.j,this.X),delete this.X);b||this.reset();return!0};Ee.prototype.pa=function(){return!0};
|
||||
function Fe(a){if(a.G&&(!a.w&&a.j&&(Dc(a.G,a.i,a.j,1)?a.w=!0:a.j=0),!Lb(a))){if(!a.w)q("No RAM allocated");else if(a.b){if(!a.Pa)return;Ge(a,a.Pa,a.xa,a.wa,a.i)?a.status('Loaded image "'+a.C+'"'):a.ia('Error loading image "'+a.C+'"')}a.F=!0;Mb(a)}}
|
||||
Ee.prototype.reset=function(){if(this.w&&!this.F){for(var a=this.G,b=this.i,c=this.j,d=b&16383,b=b>>>a.i;0<c&&b<a.b.length;){var e=a.b[b],f=c,g=0,g=void 0===g?0:g,d=d||0;void 0===f&&(f=e.size);0>g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h<e.size;h++)e.D(g,d,e.B+d);c-=16384;b++;d=0}this.Pa&&Ge(this,this.Pa,this.xa,this.wa,this.i,!this.D)}this.F=!1};
|
||||
function Ge(a,b,c,d,e,f){var g=!1;null==c&&(c=e);if(null!=c){for(g=0;g<b.length;g++)xc(a.G,c+g,b[g]);g=!0}g&&(null==d&&(a.v.W(),f=!1),null!=d&&(a=a.v,a.Oa=d,G(a,d),f?a.A.Y?a.A.O||rc(a):a.A.ga=!0:a.D&&a.A.Y?a.W()||a.H.A.reset||(cd(a.D),J(a.H,-1)):!1===f&&a.W(),!a.A.O&&a.Na&&a.Na.stop()));return g}Xa(function(){for(var a=w(document,v,"ram"),b=0;b<a.length;b++){var c=a[b],d=t(c),d=new Ee(d);tb(d,c)}});
|
||||
function He(a){r.call(this,"SerialPort",a,1048576);this.w=a.upperCase;"string"==typeof this.w&&(this.w="true"==this.w);this.j=!0;this.i=[];var b=a.binding;if("console"!=b){var c;a=Ie;b&&(void 0===c&&(c="Panel"),(c=sb(c,this.id))&&(b=c.J[b])&&this.qa(null,a,b))}this.b=this.C=null;this.exports={connect:this.Jb,receiveData:this.gb,receiveStatus:this.hc,setConnection:this.kc}}ka(He,r);m=He.prototype;
|
||||
m.qa=function(a,b,c){var d=this;switch(b){case Ie:return this.J[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?ra.xb:ra.Nb:46==c?b=ra.xb:a.ctrlKey&&c>=ra.wb&&c<=ra.Ob&&(b=c-(ra.wb-ra.Kb));b&&(a.preventDefault&&a.preventDefault(),d.gb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ra.Mb&&(b=ra.Lb);d.gb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
|
||||
a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.gb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Mb(this)};
|
||||
m.Jb=function(a){if(!this.b){var b=$c(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.$a)return;c=Ea(c[1]);if(this.b=rb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.ab+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.za=function(a,b){if(!b)if(this.Jb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0};
|
||||
m.Jb=function(a){if(!this.b){var b=$c(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.ab)return;c=Ea(c[1]);if(this.b=rb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.bb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.Aa=function(a,b){if(!b)if(this.Jb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0};
|
||||
m.pa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new F(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.gb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d<a.length;d++){c=b;b=a.charCodeAt(d);if(10==b){if(13==c)continue;b=13}this.i.push(b)}else this.i=this.i.concat(a);return!0};m.hc=function(){};m.kc=function(a,b){return this.b?!1:(this.b=a,this.C=b,!0)};var Ie="buffer";
|
||||
Xa(function(){for(var a=w(document,v,"serial"),b=0;b<a.length;b++){var c=a[b],d=t(c),d=new He(d);tb(d,c)}});function Je(a){r.call(this,"Debugger",a);this.S=+a.base||16;this.L=32;this.ja=null;this.aa=["{","}"];this.sa=["[","]"];this.C=0;this.T=!1;this.w=-1;this.j=[];this.I={}}ka(Je,r);Je.prototype.sb=function(){return-1};Je.prototype.tb=function(){};
|
||||
function Ke(a,b,c,d){if(c)if(b){0>a.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.T?b="end":b=a.j[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ea(b.substring(c,f))),c=f+1}}return a}function Le(a,b,c){if(32>=a.L)return b&c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)&(c/Me|0))*Me+((b&c)>>>0)}
|
||||
Xa(function(){for(var a=w(document,v,"serial"),b=0;b<a.length;b++){var c=a[b],d=t(c),d=new He(d);tb(d,c)}});function Je(a){r.call(this,"Debugger",a);this.T=+a.base||16;this.L=32;this.ka=null;this.ba=["{","}"];this.sa=["[","]"];this.C=0;this.U=!1;this.w=-1;this.j=[];this.I={}}ka(Je,r);Je.prototype.sb=function(){return-1};Je.prototype.tb=function(){};
|
||||
function Ke(a,b,c,d){if(c)if(b){0>a.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.U?b="end":b=a.j[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ea(b.substring(c,f))),c=f+1}}return a}function Le(a,b,c){if(32>=a.L)return b&c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)&(c/Me|0))*Me+((b&c)>>>0)}
|
||||
function Ne(a,b,c){if(32>=a.L)return b|c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)^(c/Me|0))*Me+((b^c)>>>0)}function Y(a,b,c,d){var e=b;c=c||a.L;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<<c)-1;else{if(a=Math.pow(2,c),0>b||b>=a)e=b%a,0>e&&(e+=a)}else 32>=c?e=b|0:(a=Math.pow(2,c-1),b<-a?(b<2*-a&&(e=b%(2*a)),e+=2*a):e>=a&&(b>=2*a&&(e=b%(2*a)),e-=2*a));b!=e&&(b=e);return b}
|
||||
function Oe(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.length)return!1;var f,g=b.pop();f=b.pop();switch(e){case "*":f*=g;break;case "/":if(!g)return!1;f=Math.trunc(f/g);break;case "%":if(!g)return!1;f%=g;break;case "+":f+=g;break;case "-":f-=g;break;case "<<":f<<=g;break;case ">>":f>>=g;break;case ">>>":f>>>=g;break;case "<":f=f<g?1:0;break;case "<=":f=f<=g?1:0;break;case ">":f=f>g?1:0;break;case ">=":f=f>=g?1:0;break;case "==":f=f==g?1:0;break;case "!=":f=f!=g?1:0;break;
|
||||
case "&":f=Le(a,f,g);break;case "!":case "|":e=a;32>=e.L?f|=g:(f=Y(e,f,0,!0),g=Y(e,g,0,!0),f=(f/Me|0|g/Me|0)*Me+((f|g)>>>0));break;case "^!":f=Ne(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=Y(a,f,0,!0),f=0<g?f*Math.pow(2,g):Math.trunc(f/Math.pow(2,-g)));break;default:return!1}b.push(Y(a,f))}return!0}
|
||||
function Pe(a,b,c,d,e,f){var g,h,k,l=!1,p=0,u=[],D=[],I=a.S;for(a.S=e;c<d;){h=b[c++].trim();k=c<d?b[c++]:"";if(h)p=Qe(a,h,null,f,p);else if("{"==k){h=1;for(p=c;c<d;)if(c++,k=c<b.length?b[c++]:"","{"==k)h++;else if("}"==k&&!--h)break;p=Pe(a,b,p,c-1,a.S,f);h=c<d?b[c++].trim():"";k=c<d?b[c++]:""}else{if(" "==k)continue;if("^B"==k){a.S=2;continue}if("^O"==k){a.S=8;continue}if("^D"==k){a.S=10;continue}if(!(p&-1073741824)){if("+"==k)continue;if("-"==k){p=p<<2|1;continue}if("~"==k||"^-"==k){p=p<<2|2;continue}if("^L"==
|
||||
k){p=p<<2|3;continue}}l=!0;break}if(void 0===p)if(null==a.ja&&f)a.ja=h,p=0;else{l=!0;f=!f;break}u.push(Y(a,p));if(" "==k)if(c<b.length-1&&!b[c])c++,k=b[c++];else{l=!0;break}if(!k)break;D.length&&Re[k]<=Re[D[D.length-1]]&&Oe(a,u,D,1);D.push(k);a.S="^_"==k?10:e;p=0}if(l||!Oe(a,u,D)||1!=u.length)l=!0;l?!1===f&&a.u("parse error ("+(h||k)+")"):g=u.pop();a.S=I;return g}
|
||||
function Pe(a,b,c,d,e,f){var g,h,k,l=!1,p=0,u=[],D=[],I=a.T;for(a.T=e;c<d;){h=b[c++].trim();k=c<d?b[c++]:"";if(h)p=Qe(a,h,null,f,p);else if("{"==k){h=1;for(p=c;c<d;)if(c++,k=c<b.length?b[c++]:"","{"==k)h++;else if("}"==k&&!--h)break;p=Pe(a,b,p,c-1,a.T,f);h=c<d?b[c++].trim():"";k=c<d?b[c++]:""}else{if(" "==k)continue;if("^B"==k){a.T=2;continue}if("^O"==k){a.T=8;continue}if("^D"==k){a.T=10;continue}if(!(p&-1073741824)){if("+"==k)continue;if("-"==k){p=p<<2|1;continue}if("~"==k||"^-"==k){p=p<<2|2;continue}if("^L"==
|
||||
k){p=p<<2|3;continue}}l=!0;break}if(void 0===p)if(null==a.ka&&f)a.ka=h,p=0;else{l=!0;f=!f;break}u.push(Y(a,p));if(" "==k)if(c<b.length-1&&!b[c])c++,k=b[c++];else{l=!0;break}if(!k)break;D.length&&Re[k]<=Re[D[D.length-1]]&&Oe(a,u,D,1);D.push(k);a.T="^_"==k?10:e;p=0}if(l||!Oe(a,u,D)||1!=u.length)l=!0;l?!1===f&&a.u("parse error ("+(h||k)+")"):g=u.pop();a.T=I;return g}
|
||||
function Se(a,b,c,d,e,f){for(var g;0<=(g=b.indexOf(c));){for(var h=0,k=g+1,l=e;k<b.length;){var p=b[k++];if(p==c){l=-1;break}if(!l)break;l--;p=p.charCodeAt(0);7==d?p&=127:p=p-32&63;h=Y(a,h*Math.pow(2,d)+p,d*e,!0)}if(0<=l){!1===f&&a.u("parse error ("+b+")");break}else b=b.substr(0,g)+K(a,h,-1)+b.substr(k)}return b}
|
||||
function Te(a,b,c){var d=void 0;a.ja=null;if(b){"{"!=a.aa[0]&&(b=b.split(a.aa[0]).join("{").split(a.aa[1]).join("}"));b=Se(a,b,'"',7,5,c);if(!b)return d;b=Se(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_").replace(/\s+/g," ");b=b.split(/(\{|}|\|\||&&|\||\^!|\^B|\^O|\^D|\^L|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Pe(a,b,0,b.length,a.S,c);void 0!==d&&!1===c&&Ue(a,null,d)}return d}
|
||||
function Qe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.sb(b),0<=f?f=a.tb(f):(f=a.I[b],null==f&&(f=sa(b,1<b.length?a.S:10))),null!=f){for(;e;){switch(e&3){case 1:f=-Y(a,f);break;case 2:f=Ne(a,f,-1);break;case 3:for(b=35;0<=b&&!Le(a,f,Math.pow(2,b));)b--;f=35-b}e>>>=2}f=Y(a,f)}else d||a.u("invalid "+(c?c:"value")+": "+b);else d||a.u("missing "+(c||"value"));return f}
|
||||
function Ue(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.S?K(a,c,a.L,8,1)+" "+c+".":K(a,c,a.L,16,1)+" "+K(a,c,a.L,8,1)+" "+K(a,c,a.L,2,32>=a.L?8:6)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function Ve(a){var b=a.I;a.I={};return b}function We(a,b){if(b)return Ue(a,b,a.I[b]);var c=0;for(b in a.I)Ue(a,b,a.I[b]),c++;return 0<c}
|
||||
function K(a,b,c,d,e){c=void 0===c?0:c;e=void 0===e?0:e;switch((void 0===d?0:d)||a.S){case 2:(a=0<c?c:0)?36<a&&(a=36):(a=Math.abs(b),a=255>=a?8:262143>=a?18:36);b=ta(b,2,a,"",e);break;case 8:b=ua(b,0<c?(c+2)/3|0:0,!!e);break;case 10:b=va(b,0<c?Math.ceil(.3*c):0);break;default:b=n(b,0<c?c+3>>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c}
|
||||
function Te(a,b,c){var d=void 0;a.ka=null;if(b){"{"!=a.ba[0]&&(b=b.split(a.ba[0]).join("{").split(a.ba[1]).join("}"));b=Se(a,b,'"',7,5,c);if(!b)return d;b=Se(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_").replace(/\s+/g," ");b=b.split(/(\{|}|\|\||&&|\||\^!|\^B|\^O|\^D|\^L|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Pe(a,b,0,b.length,a.T,c);void 0!==d&&!1===c&&Ue(a,null,d)}return d}
|
||||
function Qe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.sb(b),0<=f?f=a.tb(f):(f=a.I[b],null==f&&(f=sa(b,1<b.length?a.T:10))),null!=f){for(;e;){switch(e&3){case 1:f=-Y(a,f);break;case 2:f=Ne(a,f,-1);break;case 3:for(b=35;0<=b&&!Le(a,f,Math.pow(2,b));)b--;f=35-b}e>>>=2}f=Y(a,f)}else d||a.u("invalid "+(c?c:"value")+": "+b);else d||a.u("missing "+(c||"value"));return f}
|
||||
function Ue(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.T?K(a,c,a.L,8,1)+" "+c+".":K(a,c,a.L,16,1)+" "+K(a,c,a.L,8,1)+" "+K(a,c,a.L,2,32>=a.L?8:6)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function Ve(a){var b=a.I;a.I={};return b}function We(a,b){if(b)return Ue(a,b,a.I[b]);var c=0;for(b in a.I)Ue(a,b,a.I[b]),c++;return 0<c}
|
||||
function K(a,b,c,d,e){c=void 0===c?0:c;e=void 0===e?0:e;switch((void 0===d?0:d)||a.T){case 2:(a=0<c?c:0)?36<a&&(a=36):(a=Math.abs(b),a=255>=a?8:262143>=a?18:36);b=ta(b,2,a,"",e);break;case 8:b=ua(b,0<c?(c+2)/3|0:0,!!e);break;case 10:b=va(b,0<c?Math.ceil(.3*c):0);break;default:b=n(b,0<c?c+3>>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c}
|
||||
var Re={"||":0,"&&":1,"!":2,"|":2,"^!":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9,_:10,"^_":10,"{":11,"}":11},Me=Math.pow(2,32);
|
||||
function Xe(a){Je.call(this,a);this.Ia=!1;this.Fa=18;this.L=36;this.aa=["<",">"];this.sa=[];this.Ha=Z();this.M=Z(0);this.la=Z(0);this.ia=Z(0);this.F=[];this.b=this.N=this.K=[];Ye(this);this.U=this.ma=0;this.i=[];this.Da=void 0;Ze(this);this.D=this;this.Ba={};this.ba=this.Eb=0;this.Z=null;this.R=[];$e(this,a.messages);this.ua=a.commands;this.Ga=[];this.P=0;this.Oa=this.Ea=null;this.C=this.Na=this.Ja=this.ka=this.Ca=0;this.ta=this.ra=this.ga=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b,
|
||||
a)}):void 0===global[v]&&(global[v]=function(a){return ed(b,a)})}ka(Xe,Je);function af(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,cb:void 0===b?!1:b,oa:!1,S:c}}function bf(a,b,c,d){a.B=b;a.cb=c||!1;a.oa=!1;a.S=d}function cf(a){return[a.B,a.cb,a.oa,a.S,a.hb]}function df(a,b){var c=Z(b[0],b[1],b[2]);c.oa=b[3];b[4]&&(c.zb=Ke(a,c.hb=b[4]));return c}m=Xe.prototype;
|
||||
m.Ka=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.ra=a.j;this.Fa=b.F;(b=$c(a,"messages"))&&$e(this,b);if(a=$c(a,"commands"))this.ua=a;ef(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=af(ff(d,c,d.la));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- --------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Kc[c],p&&d.u(n(p.id,8)+" %"+
|
||||
n(e<<d.G.i,8)+" %"+n(p.B,8)+" "+n(p.Xa,4,!0)+" "+n(p.size,4,!0)+" "+l),c!=Oc&&(c=-1),l=0);a+=16384;e++}}});Mb(this)};
|
||||
m.qa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ga=this.J[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",ed(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.w<d.j.length-1&&(b=d.j[++d.w])):40==a.keyCode&&(0<d.w?b=d.j[--d.w]:(b="",d.w=-1)),null!=b){var e=b.length;c.value=b;c.setSelectionRange(e,e)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.J[b]=c,Va(c,function(){if(d.ga){var a=d.ga.value;
|
||||
d.ga.value="";ed(d,a,!0);return!0}return!1}),!0;case "step":return this.J[b]=c,Va(c,function(a){var b=!1;Nb(d,!0)||(Ob(d,!0),b=sc(d,a?1:0,null),Ob(d,!1));return b}),!0}return!1};function dd(a){if(a.ga){var b=0,c=0;window&&(b=window.scrollX,c=window.scrollY);a.ga.focus();window&&window.scrollTo(b,c)}}m.Ma=function(a,b){var c=-1,d=af(a);-1!==d&&(c=yc(this.G,d),b&&null!=a.B&&(a.B+=b||1));return c};m.yb=function(a,b,c){var d=af(a);-1!==d&&(xc(this.G,d,b),c&&null!=a.B&&(a.B+=c||1),J(this.H,-1))};
|
||||
function ff(a,b,c){var d,e;c||(c=Z());var f=c.B;if(void 0!==b){a:{var g,f=a.aa[0],h=a.aa[1];g="("==f||"{"==f||"["==f?"\\":"";for(var k="["==f?"\\":"",k=new RegExp(g+f+"([^"+k+f+k+h+"]+)"+g+h);g=b.match(k);){var l=Te(a,g[1]);if(void 0===l){b=void 0;break a}b=b.replace(f+g[1]+h,null!=l?K(a,l):"undefined")}if(a.sa.length)for(f=a.sa[0],h=a.sa[1],g="("==f||"{"==f||"["==f?"\\":"",k="["==f?"\\":"",k=new RegExp(g+f+"([^"+k+f+k+h+"]+)"+g+h);g=b.match(k);)b=b.replace("["+g[1]+"]","unimplemented");for(;f=b.match(/\$([a-z]+)/i);){h=
|
||||
function Xe(a){Je.call(this,a);this.Ia=!1;this.Fa=18;this.L=36;this.ba=["<",">"];this.sa=[];this.Ha=Z();this.M=Z(0);this.ma=Z(0);this.ja=Z(0);this.F=[];this.b=this.N=this.K=[];Ye(this);this.V=this.na=0;this.i=[];this.Da=void 0;Ze(this);this.D=this;this.Ba={};this.ca=this.Eb=0;this.Z=null;this.S=[];$e(this,a.messages);this.ua=a.commands;this.Ga=[];this.P=0;this.Oa=this.Ea=null;this.C=this.Na=this.Ja=this.la=this.Ca=0;this.ta=this.ra=this.ha=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b,
|
||||
a)}):void 0===global[v]&&(global[v]=function(a){return ed(b,a)})}ka(Xe,Je);function af(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,eb:void 0===b?!1:b,oa:!1,T:c}}function bf(a,b,c,d){a.B=b;a.eb=c||!1;a.oa=!1;a.T=d}function cf(a){return[a.B,a.eb,a.oa,a.T,a.hb]}function df(a,b){var c=Z(b[0],b[1],b[2]);c.oa=b[3];b[4]&&(c.zb=Ke(a,c.hb=b[4]));return c}m=Xe.prototype;
|
||||
m.Ka=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.ra=a.j;this.Fa=b.F;(b=$c(a,"messages"))&&$e(this,b);if(a=$c(a,"commands"))this.ua=a;ef(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=af(ff(d,c,d.ma));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- --------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Kc[c],p&&d.u(n(p.id,8)+" %"+
|
||||
n(e<<d.G.i,8)+" %"+n(p.B,8)+" "+n(p.Ya,4,!0)+" "+n(p.size,4,!0)+" "+l),c!=Oc&&(c=-1),l=0);a+=16384;e++}}});Mb(this)};
|
||||
m.qa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ha=this.J[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",ed(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.w<d.j.length-1&&(b=d.j[++d.w])):40==a.keyCode&&(0<d.w?b=d.j[--d.w]:(b="",d.w=-1)),null!=b){var e=b.length;c.value=b;c.setSelectionRange(e,e)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.J[b]=c,Va(c,function(){if(d.ha){var a=d.ha.value;
|
||||
d.ha.value="";ed(d,a,!0);return!0}return!1}),!0;case "step":return this.J[b]=c,Va(c,function(a){var b=!1;Nb(d,!0)||(Ob(d,!0),b=sc(d,a?1:0,null),Ob(d,!1));return b}),!0}return!1};function dd(a){if(a.ha){var b=0,c=0;window&&(b=window.scrollX,c=window.scrollY);a.ha.focus();window&&window.scrollTo(b,c)}}m.Ma=function(a,b){var c=-1,d=af(a);-1!==d&&(c=yc(this.G,d),b&&null!=a.B&&(a.B+=b||1));return c};m.yb=function(a,b,c){var d=af(a);-1!==d&&(xc(this.G,d,b),c&&null!=a.B&&(a.B+=c||1),J(this.H,-1))};
|
||||
function ff(a,b,c){var d,e;c||(c=Z());var f=c.B;if(void 0!==b){a:{var g,f=a.ba[0],h=a.ba[1];g="("==f||"{"==f||"["==f?"\\":"";for(var k="["==f?"\\":"",k=new RegExp(g+f+"([^"+k+f+k+h+"]+)"+g+h);g=b.match(k);){var l=Te(a,g[1]);if(void 0===l){b=void 0;break a}b=b.replace(f+g[1]+h,null!=l?K(a,l):"undefined")}if(a.sa.length)for(f=a.sa[0],h=a.sa[1],g="("==f||"{"==f||"["==f?"\\":"",k="["==f?"\\":"",k=new RegExp(g+f+"([^"+k+f+k+h+"]+)"+g+h);g=b.match(k);)b=b.replace("["+g[1]+"]","unimplemented");for(;f=b.match(/\$([a-z]+)/i);){h=
|
||||
null;switch(f[1].toLowerCase()){case "ops":h=0}if(null==h)break;b=b.replace(f[0],h.toString())}}"%"==b.charAt(0)&&(d=!0,b=b.substr(1));var p,f=b,u;if(f.match(/^[a-z_][a-z0-9_]*$/i))for(f=f.toUpperCase(),h=0;h<a.F.length;h++)if(g=a.F[h].X[f],null!=g){u=g.o;break}null!=u&&(p=Z(u));if(p)return p;0<=b.indexOf("0x")?e=16:0<=b.indexOf("0o")?e=8:0<=b.indexOf(".")&&(e=10);f=Te(a,b)}null!=f&&(f=gf(f,a.Fa),bf(c,f,d,e));return c}function hf(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.zb=Ke(a,b.hb=c[2]))}
|
||||
function gf(a,b){0>a&&a>=-A&&(a+=C);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function jf(a,b){return K(a,b/Tb,18)+" "+K(a,b%Tb,18)}
|
||||
function $e(a,b){a.D=a;a.ba=a.Eb=536870916;a.Z=null;a.R=[];b=Ke(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in ac){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d<e;d++)if(d in b&&b[d]===c)break a;d=-1}0<=d&&(a.ba|=ac[c],a.u(c+" messages enabled"))}}function ef(a,b){for(var c in ac)if(16==ac[c]){a.Ba[c]=b;break}}m.sb=function(a){return kf.indexOf(a.toUpperCase())};
|
||||
function $e(a,b){a.D=a;a.ca=a.Eb=536870916;a.Z=null;a.S=[];b=Ke(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in ac){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d<e;d++)if(d in b&&b[d]===c)break a;d=-1}0<=d&&(a.ca|=ac[c],a.u(c+" messages enabled"))}}function ef(a,b){for(var c in ac)if(16==ac[c]){a.Ba[c]=b;break}}m.sb=function(a){return kf.indexOf(a.toUpperCase())};
|
||||
m.tb=function(a){var b,c=this.v;switch(a){case lf:b=c.i;break;case mf:b=c.K;break;case nf:b=c.b;break;case of:b=c.j&x;break;case pf:b=c.j&131072?1:0;break;case qf:b=c.j&65536?1:0;break;case rf:b=c.j&32768?1:0;break;case sf:b=c.j&32?1:0;break;case tf:b=c.j&262144?1:0}return b};
|
||||
m.message=function(a,b){b&&(a+=" @"+K(this,Z(this.v.Da).B,18));if(!this.Z||a!=this.Z)if(this.Z=a,this.ba&1073741824)this.R.push(a);else{var c;if(this.ba&-2147483648&&this.v&&(c=this.v.A.O)||Nb(this,!0))this.W(),c&&(a+=" (cpu halted)");this.u(a);this.v&&(a=this.v,md(a),a.ia=0,a.H&&J(a.H,void 0))}};
|
||||
function Ze(a){var b;if(!td(a))a.i&&a.i.length&&a.u("instruction history buffer freed"),a.U=0,a.i=[];else if(!a.i||!a.i.length){a.i=Array(uf);for(b=0;b<a.i.length;b++)a.i[b]=Z();a.U=0;a.u("instruction history buffer allocated")}}function vf(a,b,c){if(!wf(a,c))return!1;rc(a.v,b);return!0}
|
||||
function sc(a,b,c,d){if(!wf(a))return!1;var e="";null===c&&(e=(c=!a.Ea||"tr"==a.Ea)?"tr":"t");a.C=0;b||td(a)&&ud(a,a.v.i,0);try{b=kd(a.v,b);var f=a.v.Za(b);0<f&&(tc(a.v,f),a.C+=f,uc(a.v,f,!0),vc(a.v,f),a.ka++)}catch(g){"number"!=typeof g&&(a.C=0,zb(a.v,g.stack||g.message))}!1!==d&&(a.ra&&a.ra.stop(),J(a.H,-1));cd(a,c||!1,e);return 0<a.C}m.W=function(a){this.v&&this.v.W(a)};function cd(a,b,c){b=void 0===b?!0:b;a.Ia&&(c&&a.u(xf+c),bf(a.M,a.v.i),b&&1!=a.P?yf(a):zf(a))}
|
||||
function wf(a,b){var c;(c=!a.v||!Lb(a.v))||(c=a.v,c.A.Y?c=!0:(c.u(c.toString()+" not powered"),c=!1),c=!c);return c||a.v.A.O?(b||a.u("cpu busy or unavailable, command ignored"),!1):!Bb(a.v)}m.za=function(a,b){return!b&&(this.reset(!0),a)?this.restore(a):!0};m.pa=function(a,b){b&&this.u(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Ze(this);this.ka=0;this.Z=null;this.C=0;bf(this.M,this.v.i);this.A.O=!1;Af(this);a||cd(this)};
|
||||
m.save=function(){var a=new F(this);a.set(0,cf(this.M));a.set(1,cf(this.la));a.set(2,cf(this.ia));a.set(3,[this.j,this.T,this.ba]);a.set(4,this.F);return a.data()};m.restore=function(a){var b=0;void 0!==a[3]&&(this.M=df(this,a[b++]),this.la=df(this,a[b++]),this.ia=df(this,a[b++]),this.j=a[b][0],"string"==typeof this.j&&(this.j=[this.j]),this.T=a[b][1],this.ba|=a[b][2]);a[4]&&(this.F=a[4]);return!0};m.start=function(a,b){this.P||this.u("running");this.A.O=!0;this.Ja=a;this.Na=b};
|
||||
m.stop=function(a,b){if(this.A.O){this.A.O=!1;this.C=b-this.Na;if(!this.P){b="stopped";if(this.C){a-=this.Ja;var c=0<a?Math.round(1E3*this.C/a):0;b+=" (";td(this)&&(b+=this.ka+" instructions, ",this.ka=0);b+=this.C+" cycles, "+a+" ms, "+c+" hz)"}else Pb(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.u(b)}cd(this,!0);dd(this);Af(this,this.v.i);this.Z=null}};function td(a){return 1<a.b.length||!!a.ma}
|
||||
function ud(a,b,c){var d=-1;c||(d=a.v.f(b),2756==d>>23&&a.v.Da==b&&(b=sd(a.v,1)));if(0<c&&(a.ma&&!--a.ma||Xc(a,b,1,a.b)))return!0;0<=c&&a.i.length&&(a.ka++,0>d&&(d=a.v.f(b)),0<=d&&(bf(a.i[a.U],b),++a.U==a.i.length&&(a.U=0)));return!1}
|
||||
function Bf(a,b,c,d){var e=Z(b.B),f=a.Ma(b,1),g,h,k,l=0,p=f/Xb|0,u;for(u in Cf)if(g=Cf[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Df;l=p&3;break;case 32256:k=Ef;l=p&7;break;case 29248:k=Ff,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Gf&&(k="B");k=Hf[g||0]+k;if(g){if(28700==h)h=f/Yb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p<If.length;p++)if(g==If[p][0]&&(u=If[p][h])){k=Hf[u];l="";break}k=Da(k,8)+(l?l+",":"");f&4194304&&(k+="@");k+=K(a,f&262143,-1);(f=f>>18&15)&&(k+="("+K(a,f,
|
||||
-1)+")")}else k=Da(k,8)+jf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+jf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Da(g,16)+f;c&&(h=Da(h,48)+";"+(c||""),h=a.v.A.Ua?h+("cycles="+fd(a.v).toString()+" cs="+n(a.v.Fa)):h+(null!=d?"="+d.toString():""));return h}
|
||||
function Jf(a,b,c,d,e){var f=-1,g,h;a.ja=null;if(b){for(var k=b.toUpperCase(),l=0;l<If.length;l++)for(var p in If[l])if(+p&&(h=If[l][p],k==Hf[h])){k=Hf[If[l][0]];c&&(c=K(a,+p)+","+c);break}for(var u in Cf){g=+u;p=Cf[u];switch(g){case 32512:l=Df;break;case 32256:l=Ef;break;case 29248:l=Ff;break;default:l=[""]}for(var D in p){h=p[D];for(var I=0;I<l.length;I++){var P=l[I];"S"==P&&h>Gf&&(P="B");if(k==Hf[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&&
|
||||
m.message=function(a,b){b&&(a+=" @"+K(this,Z(this.v.Da).B,18));if(!this.Z||a!=this.Z)if(this.Z=a,this.ca&1073741824)this.S.push(a);else{var c;if(this.ca&-2147483648&&this.v&&(c=this.v.A.O)||Nb(this,!0))this.W(),c&&(a+=" (cpu halted)");this.u(a);this.v&&(a=this.v,md(a),a.ja=0,a.H&&J(a.H,void 0))}};
|
||||
function Ze(a){var b;if(!td(a))a.i&&a.i.length&&a.u("instruction history buffer freed"),a.V=0,a.i=[];else if(!a.i||!a.i.length){a.i=Array(uf);for(b=0;b<a.i.length;b++)a.i[b]=Z();a.V=0;a.u("instruction history buffer allocated")}}function vf(a,b,c){if(!wf(a,c))return!1;rc(a.v,b);return!0}
|
||||
function sc(a,b,c,d){if(!wf(a))return!1;var e="";null===c&&(e=(c=!a.Ea||"tr"==a.Ea)?"tr":"t");a.C=0;b||td(a)&&ud(a,a.v.i,0);try{b=kd(a.v,b);var f=a.v.$a(b);0<f&&(tc(a.v,f),a.C+=f,uc(a.v,f,!0),vc(a.v,f),a.la++)}catch(g){"number"!=typeof g&&(a.C=0,zb(a.v,g.stack||g.message))}!1!==d&&(a.ra&&a.ra.stop(),J(a.H,-1));cd(a,c||!1,e);return 0<a.C}m.W=function(a){this.v&&this.v.W(a)};function cd(a,b,c){b=void 0===b?!0:b;a.Ia&&(c&&a.u(xf+c),bf(a.M,a.v.i),b&&1!=a.P?yf(a):zf(a))}
|
||||
function wf(a,b){var c;(c=!a.v||!Lb(a.v))||(c=a.v,c.A.Y?c=!0:(c.u(c.toString()+" not powered"),c=!1),c=!c);return c||a.v.A.O?(b||a.u("cpu busy or unavailable, command ignored"),!1):!Bb(a.v)}m.Aa=function(a,b){return!b&&(this.reset(!0),a)?this.restore(a):!0};m.pa=function(a,b){b&&this.u(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Ze(this);this.la=0;this.Z=null;this.C=0;bf(this.M,this.v.i);this.A.O=!1;Af(this);a||cd(this)};
|
||||
m.save=function(){var a=new F(this);a.set(0,cf(this.M));a.set(1,cf(this.ma));a.set(2,cf(this.ja));a.set(3,[this.j,this.U,this.ca]);a.set(4,this.F);return a.data()};m.restore=function(a){var b=0;void 0!==a[3]&&(this.M=df(this,a[b++]),this.ma=df(this,a[b++]),this.ja=df(this,a[b++]),this.j=a[b][0],"string"==typeof this.j&&(this.j=[this.j]),this.U=a[b][1],this.ca|=a[b][2]);a[4]&&(this.F=a[4]);return!0};m.start=function(a,b){this.P||this.u("running");this.A.O=!0;this.Ja=a;this.Na=b};
|
||||
m.stop=function(a,b){if(this.A.O){this.A.O=!1;this.C=b-this.Na;if(!this.P){b="stopped";if(this.C){a-=this.Ja;var c=0<a?Math.round(1E3*this.C/a):0;b+=" (";td(this)&&(b+=this.la+" instructions, ",this.la=0);b+=this.C+" cycles, "+a+" ms, "+c+" hz)"}else Pb(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.u(b)}cd(this,!0);dd(this);Af(this,this.v.i);this.Z=null}};function td(a){return 1<a.b.length||!!a.na}
|
||||
function ud(a,b,c){var d=-1;c||(d=a.v.f(b),2756==d>>23&&a.v.Da==b&&(b=sd(a.v,1)));if(0<c&&(a.na&&!--a.na||Xc(a,b,1,a.b)))return!0;0<=c&&a.i.length&&(a.la++,0>d&&(d=a.v.f(b)),0<=d&&(bf(a.i[a.V],b),++a.V==a.i.length&&(a.V=0)));return!1}
|
||||
function Bf(a,b,c,d){var e=Z(b.B),f=a.Ma(b,1),g,h,k,l=0,p=f/Xb|0,u;for(u in Cf)if(g=Cf[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Df;l=p&3;break;case 32256:k=Ef;l=p&7;break;case 29248:k=Ff,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Gf&&(k="B");k=Hf[g||0]+k;if(g){if(28700==h)h=f/Yb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p<If.length;p++)if(g==If[p][0]&&(u=If[p][h])){k=Hf[u];l="";break}k=Ba(k,8)+(l?l+",":"");f&4194304&&(k+="@");k+=K(a,f&262143,-1);(f=f>>18&15)&&(k+="("+K(a,f,
|
||||
-1)+")")}else k=Ba(k,8)+jf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+jf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Ba(g,16)+f;c&&(h=Ba(h,48)+";"+(c||""),h=a.v.A.Ua?h+("cycles="+fd(a.v).toString()+" cs="+n(a.v.Fa)):h+(null!=d?"="+d.toString():""));return h}
|
||||
function Jf(a,b,c,d,e){var f=-1,g,h;a.ka=null;if(b){for(var k=b.toUpperCase(),l=0;l<If.length;l++)for(var p in If[l])if(+p&&(h=If[l][p],k==Hf[h])){k=Hf[If[l][0]];c&&(c=K(a,+p)+","+c);break}for(var u in Cf){g=+u;p=Cf[u];switch(g){case 32512:l=Df;break;case 32256:l=Ef;break;case 29248:l=Ff;break;default:l=[""]}for(var D in p){h=p[D];for(var I=0;I<l.length;I++){var P=l[I];"S"==P&&h>Gf&&(P="B");if(k==Hf[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&&
|
||||
(c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),u=0;u<k.length;u++)if(h=k[u].trim()){if(1<u){a.u("too many operands: "+c);f=-1;break}D=h.match(/(@?)([^(]*)\(?([^)]*)\)?/);if(!D){a.u("unknown operand: "+h);f=-1;break}D[1]&&(f+=4194304);if(h=D[3]){h=Te(a,h,e);if(void 0==h){f=-1;break}if(0>h||15<h)h&=15;f+=h<<18}h=D[2];if(u||1==k.length)h=h?h.replace(/(^|[^0-9])\./g,"$1"+K(a,d,18)):"0";h=Te(a,h,e);if(void 0==h){f=-1;break}if(!u&&1<k.length)if(28700==g){if(0>h||127<h)h&=127;f+=h*Yb}else{if(0>
|
||||
h||15<h)h&=15;f+=h<<23}else{if(b||u)if(0>h||262143<h)h&=Sb;f+=h}}0>f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Ye(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b<a.N.length;b++){c=a.N[b];c=af(c);var d=a.G;Wc(d.b[c>>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b<a.K.length;b++)c=a.K[b],c=af(c),d=a.G,Wc(d.b[c>>>d.i],!0);a.K=["bw"];a.Ca=0;a.ma=0}
|
||||
h||15<h)h&=15;f+=h<<23}else{if(b||u)if(0>h||262143<h)h&=Sb;f+=h}}0>f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Ye(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b<a.N.length;b++){c=a.N[b];c=af(c);var d=a.G;Wc(d.b[c>>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b<a.K.length;b++)c=a.K[b],c=af(c),d=a.G,Wc(d.b[c>>>d.i],!0);a.K=["bw"];a.Ca=0;a.na=0}
|
||||
m.Ra=function(a,b,c){var d=!0;c||Kf(this,a,b,!1,!0);if(a!=this.b){var e=af(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Ra(e&16383,a==this.K)}}d&&(a.push(b),c?b.oa=!0:(Lf(this,a,a.length-1,"set"),Ze(this)));return d};function Kf(a,b,c,d,e){var f=!1;c=af(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==af(h)&&(!d||h.oa)){f=!0;h.oa||e||Lf(a,b,g,"cleared");b.splice(g,1);b!=a.b&&(d=a.G,Wc(d.b[c>>>d.i],b==a.K));h.oa||Ze(a);break}}return f}
|
||||
function Mf(a,b){for(var c=1;c<b.length;c++)Lf(a,b,c);return b.length-1}function Lf(a,b,c,d){c=b[c];a.u(b[0]+" "+K(a,c.B,18)+(d?" "+d:c.hb?' "'+c.hb+'"':""))}function Af(a,b){if(void 0!==b)Xc(a,b,1,a.b,!0),a.P=0;else for(b=1;b<a.b.length;b++){var c=a.b[b];if(c.oa){if(!Kf(a,a.b,c,!0))break;b=0}}}
|
||||
function Xc(a,b,c,d,e){var f=!1;if(!a.Ca++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.oa)for(var k=af(h)&(d==a.b?65535:-1),l=0;l<c;l++)if(b+l==k){var p,f=!0;h.oa&&(Kf(a,d,h,!0),e=!0);if(p=h.zb){for(var f=!1,u=0;u<p.length;u++)if(!Nf(a,p[u],!0)){if(p[u].indexOf("if")){f=!0;break}for(var D=u+1;D<p.length&&p[D].indexOf("else");D++)u++;if(D==p.length){f=!0;break}}a.v.A.O||(f=!0)}if(f){e||Lf(a,d,g,"hit");break}}}a.Ca--;return f}
|
||||
function ng(a,b){b=void 0===b?!0:b;for(var c="",d=0;16>d;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);bf(e.Ha,d);f+="="+K(e,e.Ma(e.Ha),36)+" ";c+=f}if(b){b="";for(d=0;d<kf.length;d++)(e=kf[d]||"")&&(e+="="+K(a,a.tb(d),d>=pf?1:d==mf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function De(a,b,c,d,e){var f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var k=h.o,l=h.a;if(void 0!==k){var p=f,k=[k>>>0,g],u=Fa(p,k,a.Gb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.F.push({wd:b,B:c,Ub:d,X:e,Bb:f})}function pg(a,b,c){var d=[],e=af(b)>>>0;for(b=0;b<a.F.length;b++){var f=a.F[b],g=f.B>>>0,h=f.Ub;if(e>=g&&e<g+h){e=Fa(f.Bb,[e-g],a.Gb);0<=e?qg(a,b,e,d):c&&(e=~e,qg(a,b,e-1,d),qg(a,b,e,d));break}}return d}
|
||||
function rg(a,b,c){var d=0,e=a.G;b.forEach(function(a,b){xc(e,b,a);null==c&&(c=b);d++});d?(a.u(d+" words loaded at "+K(a,c)+"-"+K(a,c+d-1)),G(a.v,c||0),cd(a)):a.u("no data")}function qg(a,b,c,d){var e={},f=a.F[b].Bb,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.F[b].X[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}
|
||||
function sg(a,b){var c=ff(a,b[1],a.ia);if(!c)return!1;var d=b[2];if(void 0==d)return a.u("begin assemble at "+K(a,c.B,18)),a.T=!0,J(a.H),!0;var e=b[0].substr(1),f=d.match(/^(['"]?)(.*\.mac|.*\.html)\1$/i);if(f){if(a.ta)a.u("assembly already in progress");else{var g=f[2],h=c.B;a.ta=new tg(g,h,e,a,function(b,c){if(b)a.u("error ("+b+") processing "+(c||g));else try{rg(a,a.ta.V,h)}catch(p){a.u(p.message),b=-1}a.ta=null;b||ed(a)})}return!1}b.shift();b.shift();b.shift();b=Jf(a,d,b.join(""),c.B||0);0<=b&&
|
||||
function sg(a,b){var c=ff(a,b[1],a.ja);if(!c)return!1;var d=b[2];if(void 0==d)return a.u("begin assemble at "+K(a,c.B,18)),a.U=!0,J(a.H),!0;var e=b[0].substr(1),f=d.match(/^(['"]?)(.*\.mac|.*\.html)\1$/i);if(f){if(a.ta)a.u("assembly already in progress");else{var g=f[2],h=c.B;a.ta=new tg(g,h,e,a,function(b,c){if(b)a.u("error ("+b+") processing "+(c||g));else try{rg(a,a.ta.R,h)}catch(p){a.u(p.message),b=-1}a.ta=null;b||ed(a)})}return!1}b.shift();b.shift();b.shift();b=Jf(a,d,b.join(""),c.B||0);0<=b&&
|
||||
(a.yb(c,b),a.u(Bf(a,c)));return!0}function ug(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return We(a)||a.u("no variables"),!0;if(!c[2])return We(a,c[1]);if(!c[3])return delete a.I[c[1]],!0;b=Te(a,c[3]);return void 0!==b?(a.I[c[1]]=b,!0):!1}a.u("invalid assignment:"+b);return!1}
|
||||
function vg(a,b,c){var d=null;if(b=ff(a,b)){var e=pg(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.B-e[1])&&(g=" + "+n(f,4,!0)),f=e[0]+" ("+K(a,e[1],18)+")"+g,c&&a.u(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.B)&&(g=" - "+n(f,4,!0)),f=e[4]+" ("+K(a,e[5],18)+")"+g,c&&a.u(f),d||(d=f))}else c&&a.u("no symbols")}return d}
|
||||
function yf(a,b){var c;if(b&&"?"==b[1])a.u("register commands:"),a.u("\tr\tdump registers"),a.u("\trm\tdump misc registers"),a.u("\trx [#]\tset flag or register x to [#]");else{var d=a.v,e=void 0;null==c&&(c=!0);if(b&&1<b.length){var f=b[1];if("m"==f)e=!0;else{var g=f.indexOf("=");if(0<g)b=f.substr(g+1),f=f.substr(0,g);else if(2<b.length)b=b[2];else{a.u("missing value for "+b[1]);return}g=Te(a,b);if(void 0===g)return;b=a.sb(f);if(0>b){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case lf:G(h,
|
||||
g);bf(a.M,h.i);break;case of:rd(h,g);break;case pf:f=131072;break;case qf:f=65536;break;case rf:f=32768;break;case sf:f=32;break;case tf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);J(a.H);a.u("updated registers:")}}a.u(ng(a,e));c&&(bf(a.M,d.i),zf(a,K(a,a.M.B,18)))}}function wg(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1<c[2].length?a.u(c[2]):Ue(a,null,c[2].charCodeAt(0)):Te(a,b,!1)}
|
||||
function xg(a,b,c){if("?"==c)a.u("trace commands:"),a.u("\tt [#]\ttrace # instructions"),a.u("\ttr [#]\ttrace # instructions with register updates"),a.u("\ttc [#]\ttrace # cycles"),a.u("note: bn [#] breaks after # instructions without updates");else{var d="t"!=b;c=Qe(a,c,null,!0)||1;var e=0;"tc"==b&&(e=c,c=1);a.Ea=b;Ua(c,function(){return Ob(a,!0)&&sc(a,e,d,!1)},function(){a.ra&&a.ra.stop();J(a.H,-1);Ob(a,!1)})}}
|
||||
function zf(a,b,c,d){if(b=ff(a,b,a.M)){void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=Qe(a,c.substr(1)),null!=c&&(d=c);else{d=ff(a,c);if(!d||d.B<b.B)return;e=d.B-b.B;if(256<e){a.u("range too large");return}d=-1}for(c=0;0<e&&d--;){var f=Nb(a,!1)||a.P?a.C:null,g=null!=f?"cycles":null,h=pg(a,b),k=b.B;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ia;l=b;h.B=l.B;h.cb=l.cb;h.oa=l.oa;h.S=l.S;a.u(Bf(a,b,g,f));e-=b.B-k;c++}}}
|
||||
function Nf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(xf+b):(a.T&&(a.u("ended assemble at "+K(a,a.ia.B,18)),a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Z=null;if(Lb(a)&&0<b.length){a.T&&(b="a "+K(a,a.ia.B,18)+" "+b);var f=!1,g=b.replace(/ +/g," ").split(" ");g[0]=g[0].toLowerCase();if(g&&g.length)for(var h=g[0],k=h.charAt(0),l=1;l<h.length;l++){var p=h.charAt(l);if("?"==k||"r"==k||"a">p||"z"<p){g[0]=h.substr(l);g.unshift(h.substr(0,l));break}}switch(g[0].charAt(0)){case "a":d=
|
||||
sg(a,g);break;case "b":a:{var u=g[0],D=g[1],I=b;if("?"==D)a.u("breakpoint commands:"),a.u("\tbp #\tset exec breakpoint"),a.u("\tbr #\tset read breakpoint"),a.u("\tbw #\tset write breakpoint"),a.u("\tbc #\tclear breakpoint (* to clear all)"),a.u("\tbl\tlist all breakpoints"),a.u("\tbn [#]\tbreak after # instruction(s)");else{var P=u.charAt(1);if("l"==P){var db;db=0+Mf(a,a.b);db+=Mf(a,a.N);(db+=Mf(a,a.K))||a.u("no breakpoints")}else if("n"==P){var Ab=+D||0;D&&(a.ma=Ab);a.u("break after "+Ab+" instruction(s)")}else if(void 0===
|
||||
D)a.u("missing breakpoint address");else{var H=Z();if("*"!=D&&(H=ff(a,D,a.M),!H))break a;"c"==P?null==H.B?(Ye(a),a.u("all breakpoints cleared")):Kf(a,a.b,H)||Kf(a,a.N,H)||Kf(a,a.K,H)||a.u("breakpoint missing: "+K(a,H.B,18)):null!=H.B&&(hf(a,H,I),"p"==P?a.Ra(a.b,H):"r"==P?a.Ra(a.N,H):"w"==P?a.Ra(a.K,H):a.u("unknown breakpoint command: "+P))}}}break;case "c":a.xa&&(a.xa.value="");break;case "d":a:{var eb,fb=g[0],ma=g[1],Ba=g[2],yh=g[3];if("?"==ma){var gb="";for(eb in ac)a.Ba[eb]&&(gb&&(gb+=","),gb+=
|
||||
eb);gb+=",state,symbols";a.u("dump memory commands:");a.u("\tdw [a] [n] dump n words at address a");a.u("\tds [a] [n] dump n words at address a as JSON");a.u("\tdh [p] [n] dump n instructions from history position p");gb.length&&a.u("dump extension commands:\n\t"+gb)}else if("state"==ma){var Kd=yg(a.H,!0);"console"==Ba?console.log(Kd):(a.xa&&(a.xa.value=""),Kd&&a.u(Kd))}else if("symbols"==ma)for(var Ld=0;Ld<a.F.length;Ld++){var Md=a.F[Ld],hb;for(hb in Md.X)if("."!=hb.charAt(0)){var Of=Md.X[hb].o;
|
||||
if(void 0!==Of){var Pf=Md.X[hb].l;Pf&&(hb=Pf);a.u(K(a,Of,18)+" "+hb)}}}else{if("d"==fb){for(eb in ac)if(g[1]==eb){var Qf=a.Ba[eb];Qf?(g.shift(),g.shift(),Qf(g)):a.u("no dump registered for "+ma);break a}ma||(fb=a.Oa||"dw")}else a.Oa=fb;if("dh"==fb){var Rf=ma,Sf=Ba,Tf="",Uf=0,ia=a.U,na=a.i;if(na.length){var da=+Rf||a.Da,Cb=+Sf||10;isNaN(da)?da=Cb:Tf="more ";da>na.length&&(a.u("note: only "+na.length+" available"),da=na.length);ia-=da;0>ia&&(null==na[na.length-1].B?(da=ia+da,ia=0):ia+=na.length);var Nd=
|
||||
[];"call"==Sf&&(Cb=1E5,Nd=["CALL"]);for(void 0!==Rf&&a.u(da+" instructions earlier:");0<Cb&&ia!=a.U;){var Vf=na[ia++];if(null==Vf.B)break;var Db=Z(Vf.B),zh=da--,Wf=Bf(a,Db,"history",zh);(!Nd.length||0<=Wf.indexOf(Nd[0]))&&a.u(Wf);Db.qb&&(ia+=Db.qb,Cb-=Db.qb,da-=Db.qb);ia>=na.length&&(ia=0);a.Da=da;Uf++;Cb--}}Uf||(a.u("no "+Tf+"history available"),a.Da=void 0)}else{var ib=ff(a,ma,a.la);if(ib){var Ka=0,Xf="ds"==fb;if(Ba){if("l"==Ba.charAt(0))Ba=Ba.substr(1)||yh,Ka=Qe(a,Ba);else{var Yf=ff(a,Ba);Yf&&
|
||||
(Ka=Yf.B-ib.B)}0>Ka&&(Ka=0);65536<Ka&&(Ka=65536)}var Ah=a.S;ib.S&&(a.S=ib.S);for(var Zf="db"==fb?1:2,Od=Ka||32,Pd=1==Zf?1:4,Bh=(Od+Pd-1)/Pd|0||1,La="";Bh--&&0<Od;){for(var oa="",Qd="",ma=K(a,ib.B,18),$f=Pd;0<$f--&&0<Od--;){var Rd=a.Ma(ib,1);Xf?(oa&&(oa+=","),oa+=Rd):(oa+=jf(a,Rd),oa+=" ");for(var Gc=29,Ch=0;1==Zf&&0<=Gc;Ch++)var Eb=Rd/Math.pow(2,Gc)%Math.pow(2,7),oa=oa+(K(a,Eb,7)+" "),Eb=Eb+0,Qd=Qd+(32>Eb?".":String.fromCharCode(Eb)),Gc=Gc-7}La&&(La+="\n");La=Xf?La+(oa+","):La+(ma+": "+oa+(0>$f?
|
||||
" "+Qd:""))}La&&a.u(La);a.S=Ah}}}}break;case "e":if("else"==g[0])break;var ag,bg,cg=g[0],Sd=g[1];"e"==cg||"ew"==cg?(ag=a.Ma,bg=a.yb):Sd=null;if(null==Sd)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else{var Hc=ff(a,Sd,a.la);if(Hc)for(var Td=2;Td<g.length;Td++){var Fb=Te(a,g[Td]);if(void 0===Fb)break;Fb=gf(Fb);a.u("changing "+K(a,Hc.B,18)+" from "+jf(a,ag.call(a,Hc))+" to "+jf(a,Fb));bg.call(a,Hc,Fb,1)}}break;case "g":a:{var dg=g[1],Dh=b;if(void 0!==dg){var Ud=ff(a,dg);
|
||||
if(!Ud)break a;hf(a,Ud,Dh);a.Ra(a.b,Ud,!0)}vf(a,!0,c)}break;case "h":a.A.O?(c||a.u("halting"),a.W()):Nb(a,!0)||c||a.u("already halted");break;case "i":if("if"==g[0]){var Vd;var Gb=b.substr(2),Gb=Ea(Gb);Te(a,Gb)?(c||a.u("true: "+Gb),Vd=!0):(c||a.u("false: "+Gb),Vd=!1);Vd||(d=!1);break}f=!0;break;case "k":var Eh=g[0];if("?"==g[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");else{var Wd=0,Xd=Z(),Hb=Z();for(a.u("stack trace for "+K(a,Hb.B,18));10>
|
||||
Wd;){for(var Ma=null,Fh=256;65536>Hb.B>>>0;){Xd.B=a.Ma(Hb,2);if(null==Hb.B||!Fh--)break;if(!(Xd.B&1)){for(var Gh=a,Ic=Xd,eg=null,Ib=Ic.B,fg=Ib,Yd=1;6>=Yd&&Ib;Yd++){if(2<Yd){Ic.B=Ib;var Jc=Bf(Gh,Ic);if(0<=Jc.indexOf("JSR")){var gg=Jc.indexOf(" ");if(Ib+(Jc.indexOf(" ",gg+1)-gg-1)/2==fg){eg=Jc;break}}}Ib-=2}Ic.B=fg;if(Ma=eg)break}}if(!Ma||null==Ma)break;var hg=null;if("ks"==Eh){var ig=Ma.match(/[0-9A-F]+$/);ig&&(hg=vg(a,ig[0]))}Ma=Da(Ma,50)+" ;"+(hg||"stack="+K(a,Hb.B,18));a.u(Ma);Wd++}Wd||a.u("no return addresses found")}break;
|
||||
case "l":if("ln"==g[0]){vg(a,g[1],!0);break}f=!0;break;case "m":a:{var pa,qa=null,M=g[1];"?"==M&&(M=void 0);if(void 0!==M){var Ca=0;if("all"==M)Ca=1879046143,M=null;else if("on"==M)qa=!0,M=null;else if("off"==M)qa=!1,M=null;else{"keys"==M&&(M="key");"kbd"==M&&(M="keyboard");for(pa in ac)if(M==pa){Ca=ac[pa];qa=!!(a.ba&Ca);break}if(!Ca){a.u("unknown message category: "+M);break a}}if(Ca)if("on"==g[2])a.ba|=Ca,qa=!0;else if("off"==g[2]&&(a.ba&=~Ca,qa=!1,1073741824==Ca)){for(var jg=1E3<=a.R.length?a.R.length-
|
||||
1E3:0;jg<a.R.length;)a.u(a.R[jg++]);a.R=[]}}var Hh=0,Jb="";for(pa in ac)if(!M||M==pa){var Ih=!!(a.ba&ac[pa]);if(null===qa||qa==Ih)Jb&&(Jb+=","),++Hh%10||(Jb+="\n\t"),"key"==pa&&(pa="keys"),Jb+=pa}void 0===M&&a.u("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.u((null!==qa?qa?"messages on: ":"messages off: ":"message categories:\n\t")+(Jb||"none"));Ze(a)}break;case "p":if("print"==g[0]){wg(a,b.substr(5));break}var kg=g[0],lg="p"==kg?0:"pr"==kg?1:-1;if("?"==g[1]||0>lg)a.u("step commands:"),
|
||||
a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.P)a.u("step in progress");else{var mg=Z(a.v.i);a.Ma(mg);a.P?(a.Ra(a.b,mg,!0),vf(a)||(a.H&&jd(a.H),a.P=0)):xg(a,lg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}yf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var jb=+g[2];if(2==jb||8==jb||10==jb||16==jb)a.S=jb;else{a.u("invalid base: "+jb);break}}a.u("default base: "+a.S);break;case "cs":var Kb;void 0!==g[3]&&(Kb=+g[3]);switch(g[2]){case "int":a.v.ra=
|
||||
Kb;break;case "start":a.v.Ga=Kb;break;case "stop":a.v.la=Kb;break;default:a.u("unknown cs option");break a}void 0!==Kb&&bd(a.v);a.u("checksums "+(a.v.A.Ua?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(gd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.aa.toFixed(2)+"Mhz")+" ("+a.v.ga+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),
|
||||
function zf(a,b,c,d){if(b=ff(a,b,a.M)){void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=Qe(a,c.substr(1)),null!=c&&(d=c);else{d=ff(a,c);if(!d||d.B<b.B)return;e=d.B-b.B;if(256<e){a.u("range too large");return}d=-1}for(c=0;0<e&&d--;){var f=Nb(a,!1)||a.P?a.C:null,g=null!=f?"cycles":null,h=pg(a,b),k=b.B;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ja;l=b;h.B=l.B;h.eb=l.eb;h.oa=l.oa;h.T=l.T;a.u(Bf(a,b,g,f));e-=b.B-k;c++}}}
|
||||
function Nf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(xf+b):(a.U&&(a.u("ended assemble at "+K(a,a.ja.B,18)),a.U=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Z=null;if(Lb(a)&&0<b.length){a.U&&(b="a "+K(a,a.ja.B,18)+" "+b);var f=!1,g=b.replace(/ +/g," ").split(" ");g[0]=g[0].toLowerCase();if(g&&g.length)for(var h=g[0],k=h.charAt(0),l=1;l<h.length;l++){var p=h.charAt(l);if("?"==k||"r"==k||"a">p||"z"<p){g[0]=h.substr(l);g.unshift(h.substr(0,l));break}}switch(g[0].charAt(0)){case "a":d=
|
||||
sg(a,g);break;case "b":a:{var u=g[0],D=g[1],I=b;if("?"==D)a.u("breakpoint commands:"),a.u("\tbp #\tset exec breakpoint"),a.u("\tbr #\tset read breakpoint"),a.u("\tbw #\tset write breakpoint"),a.u("\tbc #\tclear breakpoint (* to clear all)"),a.u("\tbl\tlist all breakpoints"),a.u("\tbn [#]\tbreak after # instruction(s)");else{var P=u.charAt(1);if("l"==P){var db;db=0+Mf(a,a.b);db+=Mf(a,a.N);(db+=Mf(a,a.K))||a.u("no breakpoints")}else if("n"==P){var Ab=+D||0;D&&(a.na=Ab);a.u("break after "+Ab+" instruction(s)")}else if(void 0===
|
||||
D)a.u("missing breakpoint address");else{var H=Z();if("*"!=D&&(H=ff(a,D,a.M),!H))break a;"c"==P?null==H.B?(Ye(a),a.u("all breakpoints cleared")):Kf(a,a.b,H)||Kf(a,a.N,H)||Kf(a,a.K,H)||a.u("breakpoint missing: "+K(a,H.B,18)):null!=H.B&&(hf(a,H,I),"p"==P?a.Ra(a.b,H):"r"==P?a.Ra(a.N,H):"w"==P?a.Ra(a.K,H):a.u("unknown breakpoint command: "+P))}}}break;case "c":a.ya&&(a.ya.value="");break;case "d":a:{var eb,fb=g[0],ma=g[1],Ca=g[2],Ch=g[3];if("?"==ma){var gb="";for(eb in ac)a.Ba[eb]&&(gb&&(gb+=","),gb+=
|
||||
eb);gb+=",state,symbols";a.u("dump memory commands:");a.u("\tdw [a] [n] dump n words at address a");a.u("\tds [a] [n] dump n words at address a as JSON");a.u("\tdh [p] [n] dump n instructions from history position p");gb.length&&a.u("dump extension commands:\n\t"+gb)}else if("state"==ma){var Kd=yg(a.H,!0);"console"==Ca?console.log(Kd):(a.ya&&(a.ya.value=""),Kd&&a.u(Kd))}else if("symbols"==ma)for(var Ld=0;Ld<a.F.length;Ld++){var Md=a.F[Ld],hb;for(hb in Md.X)if("."!=hb.charAt(0)){var Of=Md.X[hb].o;
|
||||
if(void 0!==Of){var Pf=Md.X[hb].l;Pf&&(hb=Pf);a.u(K(a,Of,18)+" "+hb)}}}else{if("d"==fb){for(eb in ac)if(g[1]==eb){var Qf=a.Ba[eb];Qf?(g.shift(),g.shift(),Qf(g)):a.u("no dump registered for "+ma);break a}ma||(fb=a.Oa||"dw")}else a.Oa=fb;if("dh"==fb){var Rf=ma,Sf=Ca,Tf="",Uf=0,ia=a.V,na=a.i;if(na.length){var da=+Rf||a.Da,Cb=+Sf||10;isNaN(da)?da=Cb:Tf="more ";da>na.length&&(a.u("note: only "+na.length+" available"),da=na.length);ia-=da;0>ia&&(null==na[na.length-1].B?(da=ia+da,ia=0):ia+=na.length);var Nd=
|
||||
[];"call"==Sf&&(Cb=1E5,Nd=["CALL"]);for(void 0!==Rf&&a.u(da+" instructions earlier:");0<Cb&&ia!=a.V;){var Vf=na[ia++];if(null==Vf.B)break;var Db=Z(Vf.B),Dh=da--,Wf=Bf(a,Db,"history",Dh);(!Nd.length||0<=Wf.indexOf(Nd[0]))&&a.u(Wf);Db.qb&&(ia+=Db.qb,Cb-=Db.qb,da-=Db.qb);ia>=na.length&&(ia=0);a.Da=da;Uf++;Cb--}}Uf||(a.u("no "+Tf+"history available"),a.Da=void 0)}else{var ib=ff(a,ma,a.ma);if(ib){var La=0,Xf="ds"==fb;if(Ca){if("l"==Ca.charAt(0))Ca=Ca.substr(1)||Ch,La=Qe(a,Ca);else{var Yf=ff(a,Ca);Yf&&
|
||||
(La=Yf.B-ib.B)}0>La&&(La=0);65536<La&&(La=65536)}var Eh=a.T;ib.T&&(a.T=ib.T);for(var Zf="db"==fb?1:2,Od=La||32,Pd=1==Zf?1:4,Fh=(Od+Pd-1)/Pd|0||1,Ma="";Fh--&&0<Od;){for(var oa="",Qd="",ma=K(a,ib.B,18),$f=Pd;0<$f--&&0<Od--;){var Rd=a.Ma(ib,1);Xf?(oa&&(oa+=","),oa+=Rd):(oa+=jf(a,Rd),oa+=" ");for(var Gc=29,Gh=0;1==Zf&&0<=Gc;Gh++)var Eb=Rd/Math.pow(2,Gc)%Math.pow(2,7),oa=oa+(K(a,Eb,7)+" "),Eb=Eb+0,Qd=Qd+(32>Eb?".":String.fromCharCode(Eb)),Gc=Gc-7}Ma&&(Ma+="\n");Ma=Xf?Ma+(oa+","):Ma+(ma+": "+oa+(0>$f?
|
||||
" "+Qd:""))}Ma&&a.u(Ma);a.T=Eh}}}}break;case "e":if("else"==g[0])break;var ag,bg,cg=g[0],Sd=g[1];"e"==cg||"ew"==cg?(ag=a.Ma,bg=a.yb):Sd=null;if(null==Sd)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else{var Hc=ff(a,Sd,a.ma);if(Hc)for(var Td=2;Td<g.length;Td++){var Fb=Te(a,g[Td]);if(void 0===Fb)break;Fb=gf(Fb);a.u("changing "+K(a,Hc.B,18)+" from "+jf(a,ag.call(a,Hc))+" to "+jf(a,Fb));bg.call(a,Hc,Fb,1)}}break;case "g":a:{var dg=g[1],Hh=b;if(void 0!==dg){var Ud=ff(a,dg);
|
||||
if(!Ud)break a;hf(a,Ud,Hh);a.Ra(a.b,Ud,!0)}vf(a,!0,c)}break;case "h":a.A.O?(c||a.u("halting"),a.W()):Nb(a,!0)||c||a.u("already halted");break;case "i":if("if"==g[0]){var Vd;var Gb=b.substr(2),Gb=Ea(Gb);Te(a,Gb)?(c||a.u("true: "+Gb),Vd=!0):(c||a.u("false: "+Gb),Vd=!1);Vd||(d=!1);break}f=!0;break;case "k":var Ih=g[0];if("?"==g[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");else{var Wd=0,Xd=Z(),Hb=Z();for(a.u("stack trace for "+K(a,Hb.B,18));10>
|
||||
Wd;){for(var Na=null,Jh=256;65536>Hb.B>>>0;){Xd.B=a.Ma(Hb,2);if(null==Hb.B||!Jh--)break;if(!(Xd.B&1)){for(var Kh=a,Ic=Xd,eg=null,Ib=Ic.B,fg=Ib,Yd=1;6>=Yd&&Ib;Yd++){if(2<Yd){Ic.B=Ib;var Jc=Bf(Kh,Ic);if(0<=Jc.indexOf("JSR")){var gg=Jc.indexOf(" ");if(Ib+(Jc.indexOf(" ",gg+1)-gg-1)/2==fg){eg=Jc;break}}}Ib-=2}Ic.B=fg;if(Na=eg)break}}if(!Na||null==Na)break;var hg=null;if("ks"==Ih){var ig=Na.match(/[0-9A-F]+$/);ig&&(hg=vg(a,ig[0]))}Na=Ba(Na,50)+" ;"+(hg||"stack="+K(a,Hb.B,18));a.u(Na);Wd++}Wd||a.u("no return addresses found")}break;
|
||||
case "l":if("ln"==g[0]){vg(a,g[1],!0);break}f=!0;break;case "m":a:{var pa,qa=null,M=g[1];"?"==M&&(M=void 0);if(void 0!==M){var Da=0;if("all"==M)Da=1879046143,M=null;else if("on"==M)qa=!0,M=null;else if("off"==M)qa=!1,M=null;else{"keys"==M&&(M="key");"kbd"==M&&(M="keyboard");for(pa in ac)if(M==pa){Da=ac[pa];qa=!!(a.ca&Da);break}if(!Da){a.u("unknown message category: "+M);break a}}if(Da)if("on"==g[2])a.ca|=Da,qa=!0;else if("off"==g[2]&&(a.ca&=~Da,qa=!1,1073741824==Da)){for(var jg=1E3<=a.S.length?a.S.length-
|
||||
1E3:0;jg<a.S.length;)a.u(a.S[jg++]);a.S=[]}}var Lh=0,Jb="";for(pa in ac)if(!M||M==pa){var Mh=!!(a.ca&ac[pa]);if(null===qa||qa==Mh)Jb&&(Jb+=","),++Lh%10||(Jb+="\n\t"),"key"==pa&&(pa="keys"),Jb+=pa}void 0===M&&a.u("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.u((null!==qa?qa?"messages on: ":"messages off: ":"message categories:\n\t")+(Jb||"none"));Ze(a)}break;case "p":if("print"==g[0]){wg(a,b.substr(5));break}var kg=g[0],lg="p"==kg?0:"pr"==kg?1:-1;if("?"==g[1]||0>lg)a.u("step commands:"),
|
||||
a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.P)a.u("step in progress");else{var mg=Z(a.v.i);a.Ma(mg);a.P?(a.Ra(a.b,mg,!0),vf(a)||(a.H&&jd(a.H),a.P=0)):xg(a,lg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}yf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var jb=+g[2];if(2==jb||8==jb||10==jb||16==jb)a.T=jb;else{a.u("invalid base: "+jb);break}}a.u("default base: "+a.T);break;case "cs":var Kb;void 0!==g[3]&&(Kb=+g[3]);switch(g[2]){case "int":a.v.ra=
|
||||
Kb;break;case "start":a.v.Ga=Kb;break;case "stop":a.v.ma=Kb;break;default:a.u("unknown cs option");break a}void 0!==Kb&&bd(a.v);a.u("checksums "+(a.v.A.Ua?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(gd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ba.toFixed(2)+"Mhz")+" ("+a.v.ha+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),
|
||||
a.u("\tcs start #\tset checksum cycle start count to #"),a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":xg(a,g[0],g[1]);break;case "u":zf(a,g[1],g[2],8);break;case "v":if("var"==g[0]){ug(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Rb||"PDP10")+" version 1.34.3 ("+a.v.Db+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){wg(a,b.substr(1));break}var Zd="commands:",$d;for($d in zg)Zd+="\n"+
|
||||
Da($d,9)+zg[$d];td(a)||(Zd+="\nnote: history disabled if no exec breakpoints");a.u(Zd);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(og){a.u("Debugger "+(og.stack||og.message)),d=!1}return d}function ed(a,b,c){b&&(a.Ga=Ke(a,b,c));for(;b=a.Ga.shift();)if(!Nf(a,b))return!1;return!0}
|
||||
Ba($d,9)+zg[$d];td(a)||(Zd+="\nnote: history disabled if no exec breakpoints");a.u(Zd);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(og){a.u("Debugger "+(og.stack||og.message)),d=!1}return d}function ed(a,b,c){b&&(a.Ga=Ke(a,b,c));for(;b=a.Ga.shift();)if(!Nf(a,b))return!1;return!0}
|
||||
var zg={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Gf=20,Hf=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "),
|
||||
lf=0,mf=1,nf=2,of=3,pf=4,qf=5,rf=6,sf=7,tf=8,kf="PC RA EA PS OV C0 C1 ND PD".split(" "),Ag={},Cf=(Ag[28672]={0:101},Ag[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Ag[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Gf,9216:53,
|
||||
9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Ag[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Ag[29248]={24576:79,24640:80,25088:81,25152:82},Ag[28700]={28672:93,28676:94,28680:95,28684:96,
|
||||
28688:97,28692:98,28696:99,28700:100},Ag),Df=["","I","M","S"],Ef=" L E LE A GE N G".split(" "),Ff="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),If=[{0:85,8:102,4:103,2:104,6:105,1:106},{0:88,4:107,2:108,10:109}],uf=1E3,xf=">> ";Xa(function(){for(var a=w(document,v,"debugger"),b=0;b<a.length;b++){var c=a[b],d=t(c),d=new Xe(d);tb(d,c)}});
|
||||
function tg(a,b,c,d,e){this.T=b||0;this.ga=c||"";this.b=d;this.done=e;this.C=null;this.u("starting PCjs MACRO-10 Mini-Assembler...");this.j={};this.N={};this.L=[];this.K=[];this.V=[];this.na=[];this.Z=this.U=this.ca=0;this.fa=this.T;this.La=-1;this.w=[];this.I=null;this.i=0;this.F=null;this.J=this.M="";this.aa=/^[ \t]*([A-Z$%.?][0-9A-Z$%.]*:|)[ \t]*([A-Z$%.][0-9A-Z$%.]*|)([ \t]*)([^;]+|)(;?[\s\S]*)/i;this.D=this.v=null;this.H="";this.G=[];this.R=0;this.P=a.split(";");Bg(this)}
|
||||
function Bg(a){if(a.R==a.P.length)a.done(Cg(a));else{var b=a.P[a.R++];a.u("loading "+wa(b));".MAC"==b.slice(-4).toUpperCase()&&(b+=".txt");Ha(b,null,!0,function(b,d,e){if(e)a.done(e,b);else{e=d;if(ya(b,".html")){e="";var c;for(b=/<pre>([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Dg(a,"unrecognized HTML entity: "+c[0])}a.G=a.G.concat(e.split(/(\r?\n)/));setTimeout(function(){Bg(a)},
|
||||
function tg(a,b,c,d,e){this.U=b||0;this.ha=c||"";this.b=d;this.done=e;this.F=null;this.j={};this.N={};this.M=[];this.L=[];this.R=[];this.fa=[];this.Z=this.V=this.da=0;this.aa=this.U;this.La=-1;this.w=[];this.K=null;this.i=0;this.I=null;this.H=this.C="";this.ba=/^[ \t]*([A-Z$%.?][0-9A-Z$%.]*:|)[ \t]*([A-Z$%.][0-9A-Z$%.]*|)([ \t]*)([^;]+|)(;?[\s\S]*)/i;this.D=this.v=null;this.J="";this.G=[];this.S=0;this.P=a.split(";");Bg(this)}
|
||||
function Bg(a){if(a.S==a.P.length)a.done(Cg(a));else{var b=a.P[a.S++];a.u("loading "+wa(b));0>b.indexOf(":")&&".MAC"==b.slice(-4).toUpperCase()&&(b+=".txt");Ha(b,null,!0,function(b,d,e){if(e)a.done(e,b);else{e=d;if(ya(b,".html")){e="";var c;for(b=/<pre>([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Dg(a,"unrecognized HTML entity: "+c[0])}a.G=a.G.concat(e.split(/(\r?\n)/));setTimeout(function(){Bg(a)},
|
||||
0)}})}}
|
||||
function Cg(a){if(0<=a.ga.indexOf("p"))return a.u(a.G.join("")),0;var b=Ve(a.b);try{for(var c=0;c<a.G.length;c+=2){a.ca++;if(!Eg(a,a.G[c]+"\r\n"))break;if(null!==a.C)break}a.i&&a.error("open block from line "+a.j[a.F].ca);a.w.length&&a.error("open scope from line "+a.w[0].ca);for(var d=a.fa,c={},e=0;e<a.L.length;c={V:c.V,Sa:c.Sa,ya:c.ya},e++){c.ya=a.L[e];c.V=[];c.Sa=0;c.ya.V.forEach(function(a){return function(b,c){c===a.V.length&&a.V.push(b);a.Sa++}}(c));if(c.Sa==c.V.length)for(var f=d;f+c.Sa<=a.fa;f++){for(var g=
|
||||
void 0,g=0;g<c.Sa&&c.V[g]===a.V[f+g]&&c.ya.na[g]==a.na[f];g++);if(g==c.Sa){Fg(a,c.ya.name,f,Gg);c.ya=null;break}}c.ya&&(Fg(a,c.ya.name,a.fa,Gg),c.ya.V.forEach(function(b){return function(c,d){Hg(a,c,b.ya.na[d])}}(c)))}for(d=0;d<a.K.length;d++){var h=a.K[d],k=a.j[h];k?Ig(a,k.Aa):a.error("missing definition for variable: "+h)}a.na.forEach(function(b,c){var d=Jg(a,b,void 0,c);void 0===d?a.error("unable to parse expression: "+b):(d+=a.V[c],a.V[c]=Kg(a,d,c))})}catch(l){a.u(l.message),a.U=-1}a.b.I=b;return a.U}
|
||||
function Eg(a,b,c,d,e){var f;if(a.i&&(1==a.i&&(f=b.indexOf(a.J),0<=f?(a.i++,b=b.substr(f+1)):a.error("expected "+a.I+" definition: "+b)),1<a.i&&(b=Lg(a,b)),a.i))return!0;null!=a.D&&(b=Mg(a,b));var g=!0;f="";for(var h;g;){h=b.match(a.aa);if(!h||h[5]&&";"!=h[5].slice(0,1))return a.error("failed to parse line: "+b),!1;g=!1;f=h[2].toUpperCase();if(f==Ng||f==Og)c=null;if(c){for(var k=0;k<c.length;k++)for(var l=c[k],p=d[k]||e[k]||"",u=0,D=b.length-h[5].length;u<D;){var I=b.indexOf(l,u);if(0>I)break;var u=
|
||||
I+1,P=I+l.length,db="",Ab="";I&&(db=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Ab=b[P]).match(/[0-9A-Z$%.]/i)||("'"==db&&I--,"'"==Ab&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Fg(a,d,a.fa,Gg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Pg:"=:"==f&&(e|=Qg),Fg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.I=f;for((H=Rg(a,b))&&(b=b.replace(H,Sg(a,Tg,Rg(a,h))));H=Ug(a,b);)b=b.replace(H,H.slice(0,-1));
|
||||
if(!Vg(a,f,b))switch(f){case Wg:case Xg:case Yg:Mg(a,h);break;case Zg:(f=b)?(a.C=Jg(a,f,!0),void 0===a.C&&a.error("unrecognized expression: "+f)):a.C=a.T;break;case $g:ah(a,b);break;case bh:ah(a,b.replace(",",",,"));break;case ch:case dh:case eh:case Ng:case Og:case fh:Sg(a,f,h);break;case gh:case hh:case ih:case jh:break;default:H=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(H=Jf(a.b,f,b,a.fa,!0)),0>H&&(H=Jg(a,h,!0)),void 0!==H?Hg(a,H,a.b.ja):a.error("unrecognized expression: "+h)}return!0}
|
||||
function Vg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c)return b=a.v,a.v=d,d.Qa=kh(a,c,!0),Ig(a,d.Aa,d.Ta,d.Qa,d.Ab),a.v=b,!0;if("?"!=b[0])return!1;switch(b.substr(1)){case dh:d.fb||Ig(a,d.Aa);break;case eh:d.fb&&Ig(a,d.Aa);break;case Ng:case Og:for(b=0;b<d.Qa.length;b++)Ig(a,d.Aa,d.Ta,[d.Qa[b]],[]);break;case fh:for(;0<d.fb--;)Ig(a,d.Aa);break;default:d=d.Aa,a.w.push({name:b,V:a.V,na:a.na,fa:a.fa,La:a.La,ca:a.ca}),a.V=[],a.na=[],a.La=a.fa,a.fa=0,Ig(a,d),a.w.length?(a.L.push({name:a.w[a.w.length-
|
||||
1].name,V:a.V,na:a.na}),d=a.w.pop(),a.V=d.V,a.na=d.na,a.fa=d.fa,a.La=d.La,a.w.length||-1==a.La||a.error("scope restore error")):a.error("scope nesting error")}return!0}function Ig(a,b,c,d,e){b=b.split(/\r?\n/);for(var f=0;f<b.length&&Eg(a,b[f]+"\r\n",c,d,e);f++);}tg.prototype.error=function(a){throw Error("error"+(this.ca?" at line "+va(this.ca):"")+": "+a);};function Dg(a,b){a.u("warning"+(a.ca?" at line "+va(a.ca):"")+": "+b)}
|
||||
function lh(a,b){var c;c=void 0===c?",":c;for(var d=0,e=!1,f=null,g=0;d<b.length;){var h=b[d++];if('"'==h)e=!e;else if(!e){if(0<=c.indexOf(h)){d--;break}if("<"==h)g++;else if(">"==h&&0>--g){a.error("missing bracket(s): "+b);break}}}g?0<g&&a.error("extra bracket(s): "+b):f=b.substr(0,d);return f}
|
||||
function Jg(a,b,c,d){var e,f=b.match(/^([^,]*),,([^,]*)$/);f?(b=f[1]?Jg(a,f[1],c,d):0,void 0!==b&&(c=f[2]?Jg(a,f[2],c,d):0,void 0!==c&&(e=Y(a.b,b,18,!0)*Math.pow(2,18)+Y(a.b,c,18,!0)))):(void 0===d&&(d=0<=a.La?a.La:a.fa),e=Te(a.b,b.replace(/\.([^0-9]|$)/g,K(a.b,d,-1)+"$1"),c),void 0===e&&a.error("error parsing expression: "+b));return e}
|
||||
function Rg(a,b){for(var c=0,d="",e=0,f=-1,g=b.length;e<b.length;){var h=b[e];if(";"==h)break;"["==h&&(c++||(f=e));e++;if("]"==h&&0>=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Ug(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;a.j[d]&&a.error("reserved symbol redefined: "+c);var e,f,g;e=f=g=[];a.j[d]={name:d,fb:mh,Ta:e,Ab:f,Qa:g,Aa:b+": 0",ca:a.ca};a.K.push(d)}return c}
|
||||
function kh(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=lh(a,b);if(!c)break;d.push(c);b=b.substr(c.length+1)}return d}
|
||||
function Mg(a,b){var c=b;null==a.D&&(a.D=a.H="",b&&(a.D=b[0],c=b=b.substr(1)));if(a.D){var d=b.indexOf(a.D);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.D=null);a.H+=b}if(null==a.D){var d=b=0,e,f,g=a.H.length;a.I==Xg&&g++;for(var h=0;h<g;h++){b||(d=0,f=29,e=7,a.I==Yg&&(e--,f++));var k=a.H.charCodeAt(h)&127;6==e&&(97<=k&&122>=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(Hg(a,d),b=0)}b&&Hg(a,d)}return c}
|
||||
function Sg(a,b,c){var d,e,f,g,h,k;a.J="<";a.M=">";g=h=k=[];if(b==ch){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]){h=g=kh(a,e[2],!0);b=[];for(c=0;c<h.length;c++)if(d=h[c].indexOf("<"),0<=d){var l=h[c].lastIndexOf(">");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}b=nh;c=3}else if(b==Tg)a.J="[",a.M="]",f="?"+va(++a.Z,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)],
|
||||
b=oh,c=0;else if(b==Ng||b==Og){a.v||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;for(d=0;d<a.v.Ta.length&&e[1]!=a.v.Ta[d];d++);if(d==a.v.Ta.length)return a.error("invalid "+b+" parameter: "+e[1]),c;f="?"+b;g=[e[1]];b==Og?k=a.v.Qa[d].split(""):k=kh(a,a.v.Qa[d]);b=k.length;c=2}else{d=lh(a,c);if(!d)return a.error("missing "+b+" expression: "+c),c;c=c.substr(d.length+1);d=d.trim();e=c.match(/\s*(<|)([\s\S]*)/i);
|
||||
f="?"+b;b=Jg(a,d)||0;c=1}f=f.toUpperCase();a.i=1;a.F=f;a.j[f]={name:f,fb:b,Ta:g,Ab:h,Qa:k,Aa:"",ca:a.ca};e[c]&&(a.i=2,Lg(a,e[c+1]));return f}function Lg(a,b){for(var c="",d=0;d<b.length;d++)if(b[d]==a.J)a.i++;else if(b[d]==a.M&&(a.i--,1==a.i)){a.i=0;c=b.substr(d+1);b=b.substr(0,d);break}d=a.F||"";a.j[d].Aa+=b;a.i||(a.F=null,Vg(a,d));return c}function ah(a,b){var c=Jg(a,b,!0);void 0!==c?Hg(a,c,a.b.ja):a.error("unrecognized expression: "+b)}
|
||||
function Fg(a,b,c,d){d=void 0===d?0:d;b=b.toUpperCase().substr(0,6);if(d&Gg&&a.N[b])a.error("label "+b+" redefined");else{if("string"==typeof c){var e=Jg(a,c);if(void 0===e){a.error("parseExpression("+c+")");return}c=e}(e=a.N[b])?(e.value=c,e.Vb=d,e.ca=a.ca):a.N[b]={name:b,value:c,Vb:d,ca:a.ca};a.b.I[b]=c}}function Hg(a,b,c){a.V[a.fa]=Kg(a,b);null!=c&&(a.na[a.fa]=c);a.fa++}
|
||||
function Kg(a,b,c){c=void 0===c?a.fa:c;var d=Y(a.b,b||0,36,!0);(b<-A||b>=C)&&Dg(a,"truncated value "+ua(b)+" at location "+ua(c)+" to "+ua(d));return d}tg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};var Gg=1,Pg=2,Qg=4,Wg="ASCII",Xg="ASCIZ",ch="DEFINE",Zg="END",$g="EXP",dh="IFE",eh="IFN",Ng="IRP",Og="IRPC",gh="LALL",Tg="LITERAL",hh="PAGE",fh="REPEAT",Yg="SIXBIT",ih="SUBTTL",jh="TITLE",bh="XWD",nh=-1,oh=-2,mh=-3;
|
||||
function ph(a,b,c){r.call(this,"Computer",a,33554432);this.A.Y=!1;this.R=null;qh(this,b);this.N=$c(this,"autoPower",a,6);this.w=0;this.Z=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.U=!1;this.I=this.C=null;this.T=this.P=!1;this.aa=$c(this,"url")||"";(Math.random()+.1).toString(36);this.i=rh(this);if(this.v=sb("CPU",this.id)){this.D=sb("Debugger",this.id);this.G=new zc({id:this.ab+".bus",busWidth:this.Z},this.v,this.D);var d,e=qb(this.id);if((this.j=sb("Panel",this.id))&&this.j.xa)for(b=
|
||||
0;b<e.length;b++)d=e[b],d.ha=this.j.ha,d.u=this.j.u,d.xa=this.j.xa;this.u(Rb+" v1.34.3\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Ka&&d.Ka(this,this.G,this.v,this.D);b=null;d=$c(this,"resume",a);void 0!==d&&(1<d.length?b=this.F=d:this.b=parseInt(d,10));var f;if(a=$c(this,"state")||(f=!0,a.state))this.M=b=a,f||(this.K=!0,this.b=sh),this.b&&(this.I=new F(this,"1.34.3"),th(this.I)?b=null:
|
||||
delete this.I);!b&&this.b&&(b=uh(this))&&(this.K=!0);if(b){var g=this;Ha(b,null,!0,function(a,b,c){c?(g.F=null,g.K=!1,g.ha("Unable to load machine state from server (error "+c+(b?": "+Ea(b):"")+")")):(g.L=b,g.U=!0);Mb(g)})}else Mb(this);this.J.power||(this.N=!0);!c&&this.N&&vh(this,this.Wa)}else q("Unable to find CPU component")}ka(ph,r);function qh(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){q(d.message+" ("+c+")")}}a.R=b}
|
||||
function $c(a,b,c,d){var e=b.toLowerCase(),e=Sa(b)||Sa(e);void 0===e&&a.R&&(e=a.R[b]);void 0===e&&c&&(e=c[b]);void 0===e&&"object"==typeof resources&&resources[b]&&(e=b);void 0===e&&(e=void 0);if("string"==typeof e&&d)switch(d){case 4:e=+e;isNaN(e)&&(e=0);break;case 6:e="true"==e}return e}function vh(a,b,c){for(var d=qb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Lb(f)){Lb(f,function(){vh(a,b,c)});return}}b.call(a,c)}
|
||||
function wh(a,b){var c=new F(a,"1.34.3",xh);if(th(c)&&Jh(c)){var d=c.get(Kh),e=b?b.get(Kh):"unknown";d!=e&&(a.ha("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=ph.prototype;
|
||||
m.Wa=function(a){void 0===a&&(a=this.b||(this.L?Lh:sh));if(!this.w){this.w++;var b=!1,c=!1;this.P=!1;var d=this.I||new F(this,"1.34.3");if(a==Mh)b=!0;else if(a>sh){if(th(d,this.L)){this.C=new F(this,"1.34.3",Nh);th(this.C)&&(Oh(this,d),a=Ph,Qh(this.C));this.C.set(Kh,Ga());Rh(this.C);var e=this.b&&!this.K;if(a==Lh||pb("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Jh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?th(d,g):("error"==f&&"no machine state"!=
|
||||
g?(this.ha("Error: "+g),"unable to verify user"==g&&(Qa(Sh,""),this.i=null)):this.u(f+": "+g),Qh(d),th(d)?(c=Jh(d),e=!0):c=!1))}e&&wh(this,c?d:null)}else a==Ph&&d.clear()}else wh(this);delete this.L;delete this.I}e=qb(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.v&&(c=Th(this,g,d,b,c));b=[d,a,c];a!=Mh?vh(this,this.Hb,b):this.Hb(b)}};
|
||||
function Th(a,b,c,d,e){if(!b.A.Y){b.A.Y=!0;var f=null;try{if(e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,".")))),"string"===typeof f&&(f=null),!b.za(f,d)&&f&&(q("Unable to restore state for "+b.type),a.M&&!a.U?(c.clear(),a.b=sh,window&&window.location.reload()):a.P=!0,b.za(null),e=!1),!d&&b.Cb){var g=b.Cb.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(h){q("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
|
||||
m.Hb=function(a){var b=a[0],c=0>a[1];a=a[2];this.T=!0;this.A.Y=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Th(this,this.v,b,c,a),J(this,-2),this.v.ea());this.P&&(Oh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
|
||||
function Oh(a,b){if(pb("There may be a problem with your "+Rb+" machine.\n\nTo help us diagnose it, click OK to send this "+Rb+" machine state to http://www.pcjs.org.")){var c=a.aa;a=a.i||"";b=b.toString();var d={};d.app=Rb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ha("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function yg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new F(a,"1.34.3"),g=new F(a,"1.34.3",xh),h=Ga();g.set(Kh,h);f.set(Kh,h);f.set(Uh,"1.34.3");f.set(Vh,window?window.location.href:null);f.set(Wh,window?window.navigator.userAgent:"");a.v&&a.v.pa&&(c&&(b&&(a.v.A.ea=a.v.A.O),a.v.W()),d=a.v.pa(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.Y=!1,!1===d&&(e=null)));for(var h=qb(a.id),k=0;k<h.length;k++){var l=h[k];l.A.Y&&(l.pa&&(d=l.pa(b,c),"object"===typeof d&&f.set(l.id,d)),c&&(l.A.Y=
|
||||
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.i&&Xh(a,a.i,f.toString()),Rh(g)&&Rh(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Yh),d&&f.clear(h)):e=f.toString());c&&(a.A.Y=!1,b=a.J.power)&&(b.textContent="Power");a.w=0;return e}
|
||||
function Cg(a){if(0<=a.ha.indexOf("p"))return a.u(a.G.join("")),0;var b=Ve(a.b);try{for(var c=0;c<a.G.length;c+=2){a.da++;if(!Eg(a,a.G[c]+"\r\n"))break;if(null!==a.F)break}a.i&&a.error("open block from line "+a.j[a.I].da);a.w.length&&a.error("open scope from line "+a.w[0].da);for(var d=a.aa,c={},e=0;e<a.M.length;c={R:c.R,Sa:c.Sa,za:c.za},e++){c.za=a.M[e];c.R=[];c.Sa=0;c.za.R.forEach(function(a){return function(b,c){c===a.R.length&&a.R.push(b);a.Sa++}}(c));if(c.Sa==c.R.length)for(var f=d;f+c.Sa<=a.aa;f++){for(var g=
|
||||
void 0,g=0;g<c.Sa&&c.R[g]===a.R[f+g]&&c.za.fa[g]==a.fa[f];g++);if(g==c.Sa){Fg(a,c.za.name,f,Gg);c.za=null;break}}c.za&&(Fg(a,c.za.name,a.aa,Gg),c.za.R.forEach(function(b){return function(c,d){Hg(a,c,b.za.fa[d])}}(c)))}for(d=0;d<a.L.length;d++){var h=a.L[d],k=a.j[h];k?Ig(a,k.va):a.error("missing definition for variable: "+h)}a.fa.forEach(function(b,c){var d=Jg(a,b,void 0,c);void 0===d?a.error("unable to parse expression: "+b):(d+=a.R[c],a.R[c]=Kg(a,d,c))})}catch(l){a.u(l.message),a.V=-1}a.b.I=b;return a.V}
|
||||
function Eg(a,b,c,d,e){var f;if(a.i&&(1==a.i&&(f=b.indexOf(a.H),0<=f?(a.i++,b=b.substr(f+1)):a.error("expected "+a.K+" definition: "+b)),1<a.i&&(b=Lg(a,b)),a.i))return!0;null!=a.D&&(b=Mg(a,b));var g=!0;f="";for(var h;g;){h=b.match(a.ba);if(!h||h[5]&&";"!=h[5].slice(0,1))return a.error("failed to parse line: "+b),!1;g=!1;f=h[2].toUpperCase();if(f==Ng||f==Og)c=null;if(c){for(var k=0;k<c.length;k++)for(var l=c[k],p=d[k]||e[k]||"",u=0,D=b.length-h[5].length;u<D;){var I=b.indexOf(l,u);if(0>I)break;var u=
|
||||
I+1,P=I+l.length,db="",Ab="";I&&(db=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Ab=b[P]).match(/[0-9A-Z$%.]/i)||("'"==db&&I--,"'"==Ab&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Fg(a,d,a.aa,Gg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Pg:"=:"==f&&(e|=Qg),Fg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.K=f;for((H=Rg(a,b))&&(b=b.replace(H,Sg(a,Tg,Rg(a,h))));H=Ug(a,b);)b=b.replace(H,H.slice(0,-1));
|
||||
if(!Vg(a,f,b))switch(f){case Wg:case Xg:case Yg:Mg(a,h);break;case Zg:(f=b)?(a.F=Jg(a,f,!0),void 0===a.F&&a.error("unrecognized expression: "+f)):a.F=a.U;break;case $g:ah(a,b);break;case bh:ah(a,b.replace(",",",,"));break;case ch:case dh:case eh:case Ng:case Og:case fh:case gh:Sg(a,f,h);break;case hh:case ih:case jh:case kh:break;default:H=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(H=Jf(a.b,f,b,a.aa,!0)),0>H&&(H=Jg(a,h,!0)),void 0!==H?Hg(a,H,a.b.ka):a.error("unrecognized expression: "+h)}return!0}
|
||||
function Vg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c){if(d.Wa==lh){var e=a.aa;Ig(a,d.va);if(e<a.aa){mh(a);Ig(a,c);var d=a.R[0],f=a.fa[0];nh(a);if(void 0!==d)return a.R[e]+=d&130023423,a.R[e]|=d&4194304,f&&(a.fa[e]=a.fa[e]?a.fa[e]+("+"+f):f),!0}a.error("OPDEF '"+b+"' error: "+c);return!1}b=a.v;a.v=d;d.Qa=oh(a,c,!0);Ig(a,d.va,d.Ta,d.Qa,d.Ab);a.v=b;return!0}if("?"!=b[0])return!1;switch(b.substr(1)){case dh:d.Wa||Ig(a,d.va);break;case eh:d.Wa&&Ig(a,d.va);break;case Ng:case Og:for(b=0;b<d.Qa.length;b++)Ig(a,
|
||||
d.va,d.Ta,[d.Qa[b]],[]);break;case gh:for(;0<d.Wa--;)Ig(a,d.va);break;default:c=d.va,mh(a,b),Ig(a,c),nh(a)}return!0}function Ig(a,b,c,d,e){b=b.split(/\r?\n/);for(var f=0;f<b.length&&Eg(a,b[f]+"\r\n",c,d,e);f++);}function mh(a,b){a.w.push({name:b,R:a.R,fa:a.fa,aa:a.aa,La:a.La,da:a.da});a.R=[];a.fa=[];a.La=a.aa;a.aa=0}
|
||||
function nh(a){if(a.w.length){var b=a.w[a.w.length-1].name;b&&a.M.push({name:b,R:a.R,fa:a.fa});b=a.w.pop();a.R=b.R;a.fa=b.fa;a.aa=b.aa;a.La=b.La;a.w.length||-1==a.La||a.error("scope restore error")}else a.error("scope nesting error")}tg.prototype.error=function(a){throw Error("error"+(this.da?" at line "+va(this.da):"")+": "+a);};function Dg(a,b){a.u("warning"+(a.da?" at line "+va(a.da):"")+": "+b)}
|
||||
function ph(a,b){var c;c=void 0===c?",":c;for(var d=0,e=!1,f=null,g=0;d<b.length;){var h=b[d++];if('"'==h)e=!e;else if(!e){if(0<=c.indexOf(h)){d--;break}if("<"==h)g++;else if(">"==h&&0>--g){a.error("missing bracket(s): "+b);break}}}g?0<g&&a.error("extra bracket(s): "+b):f=b.substr(0,d);return f}
|
||||
function Jg(a,b,c,d){var e,f=b.match(/^([^,]*),,([^,]*)$/);f?(b=f[1]?Jg(a,f[1],c,d):0,void 0!==b&&(c=f[2]?Jg(a,f[2],c,d):0,void 0!==c&&(e=Y(a.b,b,18,!0)*Math.pow(2,18)+Y(a.b,c,18,!0)))):(void 0===d&&(d=0<=a.La?a.La:a.aa),e=Te(a.b,b.replace(/\.([^0-9]|$)/g,K(a.b,d,-1)+"$1"),c),void 0===e&&a.error("error parsing expression: "+b));return e}
|
||||
function Rg(a,b){for(var c=0,d="",e=0,f=-1,g=b.length;e<b.length;){var h=b[e];if(";"==h)break;"["==h&&(c++||(f=e));e++;if("]"==h&&0>=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Ug(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;a.j[d]&&a.error("reserved symbol redefined: "+c);var e,f,g;e=f=g=[];a.j[d]={name:d,Wa:qh,Ta:e,Ab:f,Qa:g,va:b+": 0",da:a.da};a.L.push(d)}return c}
|
||||
function oh(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=ph(a,b);if(!c)break;d.push(c);b=b.substr(c.length+1)}return d}
|
||||
function Mg(a,b){var c=b;null==a.D&&(a.D=a.J="",b&&(a.D=b[0],c=b=b.substr(1)));if(a.D){var d=b.indexOf(a.D);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.D=null);a.J+=b}if(null==a.D){var d=b=0,e,f,g=a.J.length;a.K==Xg&&g++;for(var h=0;h<g;h++){b||(d=0,f=29,e=7,a.K==Yg&&(e--,f++));var k=a.J.charCodeAt(h)&127;6==e&&(97<=k&&122>=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(Hg(a,d),b=0)}b&&Hg(a,d)}return c}
|
||||
function Sg(a,b,c){var d,e,f,g,h,k;a.H="<";a.C=">";g=h=k=[];if(b==ch){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]){h=g=oh(a,e[2],!0);b=[];for(c=0;c<h.length;c++)if(d=h[c].indexOf("<"),0<=d){var l=h[c].lastIndexOf(">");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}b=rh;c=3}else if(b==fh){a.H="[";a.C="]";e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\[)([\s\S]*)/i);if(!e)return a.error("unrecognized "+
|
||||
b+": "+c),c;f=e[1];b=lh;c=2}else if(b==Tg)a.H="[",a.C="]",f="?"+va(++a.Z,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)],b=sh,c=0;else if(b==Ng||b==Og){a.v||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;for(d=0;d<a.v.Ta.length&&e[1]!=a.v.Ta[d];d++);if(d==a.v.Ta.length)return a.error("invalid "+b+" parameter: "+e[1]),c;f="?"+b;g=[e[1]];b==Og?k=a.v.Qa[d].split(""):k=oh(a,a.v.Qa[d]);b=k.length;
|
||||
c=2}else{d=ph(a,c);if(!d)return a.error("missing "+b+" expression: "+c),c;c=c.substr(d.length+1);d=d.trim();e=c.match(/\s*(<|)([\s\S]*)/i);f="?"+b;b=Jg(a,d)||0;c=1}f=f.toUpperCase();a.i=1;a.I=f;a.j[f]={name:f,Wa:b,Ta:g,Ab:h,Qa:k,va:"",da:a.da};e[c]&&(a.i=2,Lg(a,e[c+1]));return f}function Lg(a,b){for(var c="",d=0;d<b.length;d++)if(b[d]==a.H)a.i++;else if(b[d]==a.C&&(a.i--,1==a.i)){a.i=0;c=b.substr(d+1);b=b.substr(0,d);break}d=a.I||"";a.j[d].va+=b;a.i||(a.I=null,Vg(a,d));return c}
|
||||
function ah(a,b){var c=Jg(a,b,!0);void 0!==c?Hg(a,c,a.b.ka):a.error("unrecognized expression: "+b)}function Fg(a,b,c,d){d=void 0===d?0:d;b=b.toUpperCase().substr(0,6);if(d&Gg&&a.N[b])a.error("label "+b+" redefined");else{if("string"==typeof c){var e=Jg(a,c);if(void 0===e){a.error("parseExpression("+c+")");return}c=e}(e=a.N[b])?(e.value=c,e.Vb=d,e.da=a.da):a.N[b]={name:b,value:c,Vb:d,da:a.da};a.b.I[b]=c}}function Hg(a,b,c){a.R[a.aa]=Kg(a,b);null!=c&&(a.fa[a.aa]=c);a.aa++}
|
||||
function Kg(a,b,c){c=void 0===c?a.aa:c;var d=Y(a.b,b||0,36,!0);(b<-A||b>=C)&&Dg(a,"truncated value "+ua(b)+" at location "+ua(c)+" to "+ua(d));return d}tg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};var Gg=1,Pg=2,Qg=4,Wg="ASCII",Xg="ASCIZ",ch="DEFINE",Zg="END",$g="EXP",dh="IFE",eh="IFN",Ng="IRP",Og="IRPC",hh="LALL",Tg="LITERAL",fh="OPDEF",ih="PAGE",gh="REPEAT",Yg="SIXBIT",jh="SUBTTL",kh="TITLE",bh="XWD",rh=-1,lh=-2,sh=-3,qh=-4;
|
||||
function th(a,b,c){r.call(this,"Computer",a,33554432);this.A.Y=!1;this.S=null;uh(this,b);this.N=$c(this,"autoPower",a,6);this.w=0;this.Z=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.V=!1;this.I=this.C=null;this.U=this.P=!1;this.ba=$c(this,"url")||"";(Math.random()+.1).toString(36);this.i=vh(this);if(this.v=sb("CPU",this.id)){this.D=sb("Debugger",this.id);this.G=new zc({id:this.bb+".bus",busWidth:this.Z},this.v,this.D);var d,e=qb(this.id);if((this.j=sb("Panel",this.id))&&this.j.ya)for(b=
|
||||
0;b<e.length;b++)d=e[b],d.ia=this.j.ia,d.u=this.j.u,d.ya=this.j.ya;this.u(Rb+" v1.34.3\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Ka&&d.Ka(this,this.G,this.v,this.D);b=null;d=$c(this,"resume",a);void 0!==d&&(1<d.length?b=this.F=d:this.b=parseInt(d,10));var f;if(a=$c(this,"state")||(f=!0,a.state))this.M=b=a,f||(this.K=!0,this.b=wh),this.b&&(this.I=new F(this,"1.34.3"),xh(this.I)?b=null:
|
||||
delete this.I);!b&&this.b&&(b=yh(this))&&(this.K=!0);if(b){var g=this;Ha(b,null,!0,function(a,b,c){c?(g.F=null,g.K=!1,g.ia("Unable to load machine state from server (error "+c+(b?": "+Ea(b):"")+")")):(g.L=b,g.V=!0);Mb(g)})}else Mb(this);this.J.power||(this.N=!0);!c&&this.N&&zh(this,this.Xa)}else q("Unable to find CPU component")}ka(th,r);function uh(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){q(d.message+" ("+c+")")}}a.S=b}
|
||||
function $c(a,b,c,d){var e=b.toLowerCase(),e=Sa(b)||Sa(e);void 0===e&&a.S&&(e=a.S[b]);void 0===e&&c&&(e=c[b]);void 0===e&&"object"==typeof resources&&resources[b]&&(e=b);void 0===e&&(e=void 0);if("string"==typeof e&&d)switch(d){case 4:e=+e;isNaN(e)&&(e=0);break;case 6:e="true"==e}return e}function zh(a,b,c){for(var d=qb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Lb(f)){Lb(f,function(){zh(a,b,c)});return}}b.call(a,c)}
|
||||
function Ah(a,b){var c=new F(a,"1.34.3",Bh);if(xh(c)&&Nh(c)){var d=c.get(Oh),e=b?b.get(Oh):"unknown";d!=e&&(a.ia("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=th.prototype;
|
||||
m.Xa=function(a){void 0===a&&(a=this.b||(this.L?Ph:wh));if(!this.w){this.w++;var b=!1,c=!1;this.P=!1;var d=this.I||new F(this,"1.34.3");if(a==Qh)b=!0;else if(a>wh){if(xh(d,this.L)){this.C=new F(this,"1.34.3",Rh);xh(this.C)&&(Sh(this,d),a=Th,Uh(this.C));this.C.set(Oh,Ga());Vh(this.C);var e=this.b&&!this.K;if(a==Ph||pb("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Nh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?xh(d,g):("error"==f&&"no machine state"!=
|
||||
g?(this.ia("Error: "+g),"unable to verify user"==g&&(Qa(Wh,""),this.i=null)):this.u(f+": "+g),Uh(d),xh(d)?(c=Nh(d),e=!0):c=!1))}e&&Ah(this,c?d:null)}else a==Th&&d.clear()}else Ah(this);delete this.L;delete this.I}e=qb(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.v&&(c=Xh(this,g,d,b,c));b=[d,a,c];a!=Qh?zh(this,this.Hb,b):this.Hb(b)}};
|
||||
function Xh(a,b,c,d,e){if(!b.A.Y){b.A.Y=!0;var f=null;try{if(e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,".")))),"string"===typeof f&&(f=null),!b.Aa(f,d)&&f&&(q("Unable to restore state for "+b.type),a.M&&!a.V?(c.clear(),a.b=wh,window&&window.location.reload()):a.P=!0,b.Aa(null),e=!1),!d&&b.Cb){var g=b.Cb.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(h){q("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
|
||||
m.Hb=function(a){var b=a[0],c=0>a[1];a=a[2];this.U=!0;this.A.Y=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Xh(this,this.v,b,c,a),J(this,-2),this.v.ga());this.P&&(Sh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
|
||||
function Sh(a,b){if(pb("There may be a problem with your "+Rb+" machine.\n\nTo help us diagnose it, click OK to send this "+Rb+" machine state to http://www.pcjs.org.")){var c=a.ba;a=a.i||"";b=b.toString();var d={};d.app=Rb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ha("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function yg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new F(a,"1.34.3"),g=new F(a,"1.34.3",Bh),h=Ga();g.set(Oh,h);f.set(Oh,h);f.set(Yh,"1.34.3");f.set(Zh,window?window.location.href:null);f.set($h,window?window.navigator.userAgent:"");a.v&&a.v.pa&&(c&&(b&&(a.v.A.ga=a.v.A.O),a.v.W()),d=a.v.pa(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.Y=!1,!1===d&&(e=null)));for(var h=qb(a.id),k=0;k<h.length;k++){var l=h[k];l.A.Y&&(l.pa&&(d=l.pa(b,c),"object"===typeof d&&f.set(l.id,d)),c&&(l.A.Y=
|
||||
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.i&&ai(a,a.i,f.toString()),Vh(g)&&Vh(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==bi),d&&f.clear(h)):e=f.toString());c&&(a.A.Y=!1,b=a.J.power)&&(b.textContent="Power");a.w=0;return e}
|
||||
m.reset=function(){this.A.reset=!0;this.G&&this.G.reset&&(Qb(this,"Resetting "+this.G.type),this.G.reset());this.v&&this.v.reset&&(Qb(this,"Resetting "+this.v.type),this.v.reset());for(var a=qb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.G&&c!==this.v&&c.reset&&(Qb(this,"Resetting "+c.type),c.reset())}this.A.reset=!1;J(this,-1)};m.start=function(a,b){for(var c=qb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}J(this,-1)};
|
||||
m.stop=function(a,b){for(var c=qb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}J(this,-1)};
|
||||
function J(a,b){if(a.v){var c=a.v,d=b||0,e=c.J.speed;e&&(0>=d||30<=(c.jb+=d))&&(e.textContent=c.A.O?c.Z.toFixed(2)+"Mhz":"Stopped",c.jb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.O;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.S||8,e=e||0,e=8==f?ua(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0<b&&c&&!d&&(a.i=a.v.Ba);jc(a,a.i);dc(a,a.w)}}
|
||||
m.qa=function(a,b,c){var d=this;switch(b){case "power":return this.J[b]=c,c.onclick=function(){d.w||(d.A.Y?yg(d,!1,!0):vh(d,d.Wa))},!0;case "reset":return this.J[b]=c,c.onclick=function(){if(d.A.Y&&!d.w)if(d.b&&!d.F){var a=pb("Click OK to save changes to this "+Rb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");yg(d,a,!0);!a&&d.M?window&&window.location.reload():d.Wa(sh)}else d.reset(),d.v&&!d.D&&d.v.ea()},!0;case "save":if(ya(Ja(),"pcjs.org"))c.parentNode.removeChild(c);
|
||||
else return this.J[b]=c,c.onclick=function(){var a=rh(d,!0);if(a){var b=!!(d.b&&!d.F||d.M),c=yg(d,b);b?Xh(d,a,c):d.ha("Resume disabled, machine state not saved")}},!0}return!1};
|
||||
function rh(a,b){var c=a.i;c||((c=Pa(Sh),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Zh(a,c))||a.ha("The user ID is invalid.")):b&&a.ha("Browser local storage is not available"));return c}
|
||||
function Zh(a,b){a.i=null;b=Ha(Ja()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Qa(Sh,b.data),a.i=b.data)}catch(d){q(d.message+" ("+c+")")}return a.i}function uh(a){var b=null;a.i&&(b=Ja()+"/api/v1/user?req=load&user="+a.i+"&state="+$h(a,"1.34.3"));return b}
|
||||
function Xh(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=$h(a,"1.34.3");d.data=c;b=Ha(Ja()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ha("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ha(c),Qa(Sh,""),a.i=null)}}
|
||||
function jd(a,b){if(a.xa){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a.xa.focus();!b&&window&&window.scrollTo(c,d)}}var Nh="failsafe",xh="validate",Kh="timestamp",Uh="version",Vh="url",Wh="browser",Sh="user",Mh=-1,sh=0,Lh=1,Ph=2,Yh=3;Xa(function(){for(var a=w(document,v+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=t(c),c=w(c,v,"computer"),e=0;e<c.length;e++){var f=c[e],g=t(f),g=new ph(g,d,!0);tb(g,f);g.N&&vh(g,g.Wa)}});
|
||||
Ya.show.push(function(){for(var a=w(document,v,"computer"),b=0;b<a.length;b++){var c=t(a[b]);(c=sb("Computer",c.id))&&c.T&&!c.A.Y&&c.Wa(Mh)}});Ya.exit.push(function(){for(var a=w(document,v,"computer"),b=0;b<a.length;b++){var c=t(a[b]);(c=sb("Computer",c.id))&&c.A.Y&&yg(c,!(!c.b||c.F),!0)}});function F(a,b,c){this.id=a.id;this.i="";this.b={};this.v=this.j=!1;this.key=$h(a,b,c);Qh(this,a.Sb)}m=F.prototype;m.set=function(a,b){try{this.b[a]=b}catch(c){}};m.get=function(a){return this.b[a]||null};
|
||||
m.data=function(){return this.b};function th(a,b){return b?(a.i=b,a.v=!0,a.j=!1,!0):a.v?!0:Na()&&(b=Pa(a.key))?(a.i=b,a.v=!0):!1}function Jh(a){var b=!0;if(!a.j)try{a.b=JSON.parse(a.i),a.j=!0}catch(c){q(c.message||c),b=!1}return b}function Rh(a){var b=!0;if(Na()){var c=JSON.stringify(a.b);Qa(a.key,c)||(q("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}m.toString=function(){return this.b?JSON.stringify(this.b):this.i};
|
||||
function Qh(a,b){a.i="";a.b={};a.v=a.j=!1;b&&a.set("parms",b)}m.clear=function(a){Qh(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function $h(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var ai=0;
|
||||
function bi(a,b,c,d,e,f,g){f("Loading "+a+"...");Ha(a,null,!0,function(h,k,l){l?(k||(k="unable to load "+a+" ("+l+")"),g(k,null)):ci(k,a,b,c,d,e,f,g)})}
|
||||
function ci(a,b,c,d,e,f,g,h){function k(a,g){if(g)h(g,null);else{c&&(mb(c,b,a),(g=b)&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1<e.length&&(e+=",")):e='{state:"'+e+'",':e="{",e+='url:"'+g+'"}',"object"==typeof resources&&(g=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDPjs$2"),
|
||||
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){g=null,a=u.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?di(a,g,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function di(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ha(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);di(a,b,c)}})}else c(a,null)}
|
||||
function ei(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=za(a))}function g(a){f("Error: "+a);l&&(--ai||ab(!0));l=!1}var h,k,l=!0;ai++;nb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],D=document.createElement("style");D.type="text/css";D.styleSheet?D.styleSheet.cssText=p:D.appendChild(document.createTextNode(p));u.appendChild(D)}d||
|
||||
(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.3/components.xsl");p=function(e,k){k?bi(d,null,a,null,!1,f,function(a,e){e?(mb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--ai||ab(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--ai||
|
||||
ab(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?bi(c,b,a,e,!0,f,p):ci(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(I){g(I.message)}return l}window.embedPDP10=function(a,b,c,d){ab(!1);return ei("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){ab(!1);return ei("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return sb(b,a+".machine")};
|
||||
function J(a,b){if(a.v){var c=a.v,d=b||0,e=c.J.speed;e&&(0>=d||30<=(c.jb+=d))&&(e.textContent=c.A.O?c.Z.toFixed(2)+"Mhz":"Stopped",c.jb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.O;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.T||8,e=e||0,e=8==f?ua(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0<b&&c&&!d&&(a.i=a.v.Ba);jc(a,a.i);dc(a,a.w)}}
|
||||
m.qa=function(a,b,c){var d=this;switch(b){case "power":return this.J[b]=c,c.onclick=function(){d.w||(d.A.Y?yg(d,!1,!0):zh(d,d.Xa))},!0;case "reset":return this.J[b]=c,c.onclick=function(){if(d.A.Y&&!d.w)if(d.b&&!d.F){var a=pb("Click OK to save changes to this "+Rb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");yg(d,a,!0);!a&&d.M?window&&window.location.reload():d.Xa(wh)}else d.reset(),d.v&&!d.D&&d.v.ga()},!0;case "save":if(ya(Ja(),"pcjs.org"))c.parentNode.removeChild(c);
|
||||
else return this.J[b]=c,c.onclick=function(){var a=vh(d,!0);if(a){var b=!!(d.b&&!d.F||d.M),c=yg(d,b);b?ai(d,a,c):d.ia("Resume disabled, machine state not saved")}},!0}return!1};
|
||||
function vh(a,b){var c=a.i;c||((c=Pa(Wh),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=ci(a,c))||a.ia("The user ID is invalid.")):b&&a.ia("Browser local storage is not available"));return c}
|
||||
function ci(a,b){a.i=null;b=Ha(Ja()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Qa(Wh,b.data),a.i=b.data)}catch(d){q(d.message+" ("+c+")")}return a.i}function yh(a){var b=null;a.i&&(b=Ja()+"/api/v1/user?req=load&user="+a.i+"&state="+di(a,"1.34.3"));return b}
|
||||
function ai(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=di(a,"1.34.3");d.data=c;b=Ha(Ja()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ia("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ia(c),Qa(Wh,""),a.i=null)}}
|
||||
function jd(a,b){if(a.ya){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a.ya.focus();!b&&window&&window.scrollTo(c,d)}}var Rh="failsafe",Bh="validate",Oh="timestamp",Yh="version",Zh="url",$h="browser",Wh="user",Qh=-1,wh=0,Ph=1,Th=2,bi=3;Xa(function(){for(var a=w(document,v+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=t(c),c=w(c,v,"computer"),e=0;e<c.length;e++){var f=c[e],g=t(f),g=new th(g,d,!0);tb(g,f);g.N&&zh(g,g.Xa)}});
|
||||
Ya.show.push(function(){for(var a=w(document,v,"computer"),b=0;b<a.length;b++){var c=t(a[b]);(c=sb("Computer",c.id))&&c.U&&!c.A.Y&&c.Xa(Qh)}});Ya.exit.push(function(){for(var a=w(document,v,"computer"),b=0;b<a.length;b++){var c=t(a[b]);(c=sb("Computer",c.id))&&c.A.Y&&yg(c,!(!c.b||c.F),!0)}});function F(a,b,c){this.id=a.id;this.i="";this.b={};this.v=this.j=!1;this.key=di(a,b,c);Uh(this,a.Sb)}m=F.prototype;m.set=function(a,b){try{this.b[a]=b}catch(c){}};m.get=function(a){return this.b[a]||null};
|
||||
m.data=function(){return this.b};function xh(a,b){return b?(a.i=b,a.v=!0,a.j=!1,!0):a.v?!0:Ka()&&(b=Pa(a.key))?(a.i=b,a.v=!0):!1}function Nh(a){var b=!0;if(!a.j)try{a.b=JSON.parse(a.i),a.j=!0}catch(c){q(c.message||c),b=!1}return b}function Vh(a){var b=!0;if(Ka()){var c=JSON.stringify(a.b);Qa(a.key,c)||(q("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}m.toString=function(){return this.b?JSON.stringify(this.b):this.i};
|
||||
function Uh(a,b){a.i="";a.b={};a.v=a.j=!1;b&&a.set("parms",b)}m.clear=function(a){Uh(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function di(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var ei=0;
|
||||
function fi(a,b,c,d,e,f,g){f("Loading "+a+"...");Ha(a,null,!0,function(h,k,l){l?(k||(k="unable to load "+a+" ("+l+")"),g(k,null)):gi(k,a,b,c,d,e,f,g)})}
|
||||
function gi(a,b,c,d,e,f,g,h){function k(a,g){if(g)h(g,null);else{c&&(mb(c,b,a),(g=b)&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1<e.length&&(e+=",")):e='{state:"'+e+'",':e="{",e+='url:"'+g+'"}',"object"==typeof resources&&(g=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDPjs$2"),
|
||||
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){g=null,a=u.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?hi(a,g,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function hi(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ha(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);hi(a,b,c)}})}else c(a,null)}
|
||||
function ii(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=za(a))}function g(a){f("Error: "+a);l&&(--ei||ab(!0));l=!1}var h,k,l=!0;ei++;nb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],D=document.createElement("style");D.type="text/css";D.styleSheet?D.styleSheet.cssText=p:D.appendChild(document.createTextNode(p));u.appendChild(D)}d||
|
||||
(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.3/components.xsl");p=function(e,k){k?fi(d,null,a,null,!1,f,function(a,e){e?(mb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--ei||ab(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--ei||
|
||||
ab(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?fi(c,b,a,e,!0,f,p):gi(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(I){g(I.message)}return l}window.embedPDP10=function(a,b,c,d){ab(!1);return ii("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){ab(!1);return ii("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return sb(b,a+".machine")};
|
||||
window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!vb[a]){for(var c=!0,d=vb,e=a,f=b.length,g=[],h=[],k="",l=null,p=0;p<f;p++){var u=b[p];if('"'==u||"'"==u)l&&u!=l?k+=u:(l?l=null:l=u,k&&(h.push(k),k=""));else{if(!l){if("\r"==u||"\n"==u)u=";";if(" "==u||"\t"==u||";"==u){k&&(h.push(k),k="");";"==u&&h.length&&(g.push(h),h=[]);continue}}k+=u}}k&&h.push(k);h.length&&g.push(h);d[e]=g;ub(a)||(c=!1)}return c};window.enableEvents=ab;window.sendEvent=cb;})();//# sourceMappingURL=/tmp/pdpjs/1.34.3/pdp10-dbg.map
|
||||
|
|
|
|||
Loading…
Reference in a new issue