The recursive MACRO-10 test case (MACTEST1.MAC) found in the June 1972 MACRO-10 manual passes now

This commit is contained in:
Jeff 2017-03-19 14:03:49 -07:00 committed by Jeff Parsons
commit 4cce2177f4
9 changed files with 264 additions and 177 deletions

View file

@ -9,13 +9,20 @@
; last word if it is not already left-justified. The first part of the example shows the
; normal listing, then SALL is set to show what code the macros are generating.
;
; The original listing encodes the following two lines as follows:
; The original listing encoded two of the lines as follows:
;
; IFN ZZ,<DEFINE SHIFT ;;REMAINDER LEFT
; IFE ZZ&777B8,> ;;IF NOT LEFT JUSTIFIED
;
; The April 1978 MACRO-10 manual says that a macro body "must be enclosed in angle brackets",
; so I'm not sure how the above lines make sense.
; so the DEFINE looks wrong, and the IFE contains only a closing angle bracket, which also seems
; wrong. Perhaps what's shown above is a side-effect of some MACRO-10 listing generation bug
; and not an accurate reflection of the original code. In any event, after making two small
; modifications below, macro10.js is able to assemble the code fine.
;
; This example also begs the question: did MACRO-10 optimize tail recursion? Because without
; it, if the SHIFT macro required many iterations (for example, if "ZZ==ZZ_9" was replaced with
; "ZZ==ZZ+9"), wouldn't MACRO-10 blow its stack? I've noted this in macro10.js as well.
;
TITLE STORE TEXT CHARACTER BY CHARACTER
SUBTTL %1 5-APR-72

View file

@ -7,7 +7,7 @@ machines:
type: pdp10
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
debugger: true
commands: a 100 /apps/pdp10/tests/MACTEST.MAC
commands: a 100 /apps/pdp10/tests/MACTEST1.MAC
---
DEC PDP-10 Opcode Tests

View file

@ -721,8 +721,8 @@ function Xx(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<<b)
function Yx(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "%":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e<f?1:0;break;case "<=":e=e<=f?1:0;break;case ">":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&=
f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=Xx(e,0,!0),e=0<f?e*Math.pow(2,f):Math.trunc(e/Math.pow(2,-f)));break;default:return!1}a.push(Xx(e))}return!0}
function Zx(a,b,c,d,e,f){var g,h,k,m=!1,p=0,v=[],u=[],E=a.L;for(a.L=e;c<d;){h=b[c++].trim();k=c<d?b[c++]:"";if(h)p=$x(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=Zx(a,b,p,c-1,a.L,f);h=c<d?b[c++].trim():"";k=c<d?b[c++]:""}else{if("~"==k||"^-"==k){p=1;continue}if("-"==k){p=-1;continue}m=!0;break}if(void 0===p)if(null==a.Ha&&f)a.Ha=h,p=0;else{m=!0;f=!f;break}v.push(Xx(p));if(!k)break;u.length&&ay[k]<ay[u[u.length-1]]&&Yx(v,u,1);
u.push(k);a.L="^_"==k?10:e;p=0}Yx(v,u)&&1==v.length||(m=!0);m?!1===f&&a.P("parse error ("+(h||k)+")"):g=v.pop();a.L=E;return g}function by(a,b,c,d,e){for(var f;0<=(f=b.indexOf(c));){for(var g=0,h=e,k=f+1;h--;){var m=b[k++];if(m==c)break;m=m.charCodeAt(0);7==d?m&=127:m=m-32&63;g=Xx(g*Math.pow(2,d)+m,d*e,!0)}b=b.substr(0,f)+cy(a,g,-1)+b.substr(k)}return b}
function dy(a,b,c){var d;a.Ha=null;b&&("{"!=a.qa[0]&&(b=b.split(a.qa[0]).join("{").split(a.qa[1]).join("}")),b=by(a,b,'"',7,5),b=by(a,b,"'",6,6),b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_"),b=b.split(/(\{|}|\|\||&&|\||\^!|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/),d=Zx(a,b,0,b.length,a.L,c),void 0!==d&&!1===c&&ey(a,null,d));return d}
u.push(k);a.L="^_"==k?10:e;p=0}Yx(v,u)&&1==v.length||(m=!0);m?!1===f&&a.P("parse error ("+(h||k)+")"):g=v.pop();a.L=E;return g}function by(a,b,c,d,e,f){for(var g;0<=(g=b.indexOf(c));){for(var h=0,k=g+1,m=e;m;){var p=b[k++];if(p==c){m=-1;break}p=p.charCodeAt(0);7==d?p&=127:p=p-32&63;h=Xx(h*Math.pow(2,d)+p,d*e,!0);m--}if(0<=m){!1===f&&a.P("parse error ("+b+")");break}else b=b.substr(0,g)+cy(a,h,-1)+b.substr(k)}return b}
function dy(a,b,c){var d=void 0;a.Ha=null;if(b){"{"!=a.qa[0]&&(b=b.split(a.qa[0]).join("{").split(a.qa[1]).join("}"));b=by(a,b,'"',7,5,c);if(!b)return d;b=by(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_");b=b.split(/(\{|}|\|\||&&|\||\^!|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);d=Zx(a,b,0,b.length,a.L,c);void 0!==d&&!1===c&&ey(a,null,d)}return d}
function fy(a,b){var c,d=a.qa[0],e=a.qa[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=dy(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?cy(a,g):"undefined")}if(a.Aa.length)for(d=a.Aa[0],e=a.Aa[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=a.Pk(b,c[1]);for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e=a.Y-a.ha}if(null==
e)break;b=b.replace(d[0],e.toString())}return b}function $x(a,b,c,d,e){e=void 0===e?0:e;var f;null!=b?(f=a.gh(b),0<=f?f=a.hh(f):(f=a.ga[b],null==f&&(f=1<b.length?a.L:10,0>e&&(b="-"+b,e=0),f=oa(b,f))),null!=f?0>e?f=-f:0<e&&(f|=-1):d||a.P("invalid "+(c?c:"value")+": "+b)):d||a.P("missing "+(c||"value"));return f}
function ey(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.L?c+". "+sa(c,0,!0):q(c,0,!0)+" "+c+". "+sa(c,0,!0)+" "+ra(c,4,!0),32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.P((null!=b?b+": ":"")+d);return e}function gy(a,b){if(b)return ey(a,b,a.ga[b]);var c=0;for(b in a.ga)ey(a,b,a.ga[b]),c++;return 0<c}

View file

@ -91,6 +91,7 @@ var Fixup;
* @property {number} iURL
* @property {Array.<string>} asURLs
* @property {Array.<string>} asLines
* @property {number|null|undefined} nAddrStart
*/
class Macro10 {
/**
@ -128,6 +129,11 @@ class Macro10 {
this.dbg = dbg;
this.done = done;
/*
* The next set of properties may be updated by the assembly process and queried by the caller.
*/
this.nAddrStart = null;
this.println("starting PCjs MACRO-10 Mini-Assembler...");
/*
@ -149,7 +155,7 @@ class Macro10 {
* Macros have the name that was assigned to them, REPEAT and conditional blocks have generated names
* that match the pseudo-op (eg, "?REPEAT", "?IFE"), and LITERAL blocks have generated location-based
* names. All generated names use a leading question mark ('?') so that they don't conflict with
* normal MACRO-10 labels.
* normal MACRO-10 symbols.
*/
/**
@ -313,6 +319,11 @@ class Macro10 {
* are in the array and insert my own uniform CR/LF sequences.
*/
if (!this.parseLine(this.asLines[i] + '\r\n')) break;
/*
* When an END statement is encountered, nAddrStart will change from null to either undefined
* or a starting address.
*/
if (this.nAddrStart !== null) break;
}
if (this.nMacroDef) {
@ -482,6 +493,14 @@ class Macro10 {
this.addASCII(sRemainder);
break;
case Macro10.PSEUDO_OP.END:
this.addEND(sOperands);
break;
case Macro10.PSEUDO_OP.EXP:
this.addEXP(sOperands);
break;
case Macro10.PSEUDO_OP.XWD:
this.addXWD(sOperands);
break;
@ -527,6 +546,13 @@ class Macro10 {
this.macroCall = macro;
macro.aValues = this.getValues(sOperands, true);
this.parseText(macro.sText, macro.aParms, macro.aValues, macro.aDefaults);
/*
* WARNING: Our simplistic approach to macro expansion and processing means that recursive macros
* (such as the SHIFT macro contained in /apps/pdp10/tests/MACTEST1.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?
*/
this.macroCall = macroPrev;
return true;
}
@ -700,9 +726,9 @@ class Macro10 {
this.error("error parsing expression: " + sOperand);
}
} else {
var wLeft = match[1]? this.parseExpression(match[1]) : 0;
var wLeft = match[1]? this.parseExpression(match[1], fPass1, nLocation) : 0;
if (wLeft !== undefined) {
var wRight = match[2]? this.parseExpression(match[2]) : 0;
var wRight = match[2]? this.parseExpression(match[2], fPass1, nLocation) : 0;
if (wRight !== undefined) {
/*
* NOTE: These must be combined as UNSIGNED values, so that's what we tell truncate() to produce.
@ -1034,6 +1060,44 @@ class Macro10 {
return sRemain;
}
/**
* addEND()
*
* Processes the END pseudo-op.
*
* @this {Macro10}
* @param {string} sOperands
*/
addEND(sOperands)
{
if (!sOperands) {
this.nAddrStart = this.nAddr;
} else {
this.nAddrStart = this.parseExpression(sOperands, true);
if (this.nAddrStart === undefined) {
this.error("unrecognized expression: " + sOperands);
}
}
}
/**
* addEXP()
*
* Processes the EXP pseudo-op.
*
* @this {Macro10}
* @param {string} sOperands
*/
addEXP(sOperands)
{
var w = this.parseExpression(sOperands, true);
if (w !== undefined) {
this.genWord(w, this.dbg.sUndefined);
} else {
this.error("unrecognized expression: " + sOperands);
}
}
/**
* addSymbol(name, value, nType)
*
@ -1101,15 +1165,17 @@ class Macro10 {
/**
* addXWD()
*
* The XWD pseudo-op appears to be equivalent to two values separated by two commas, which our fixup code
* must also support, so we simply treat the XWD operands as a fixup expression.
* Processes the XWD pseudo-op.
*
* Since the XWD pseudo-op appears to be equivalent to two values separated by two commas, which addEXP() must also
* support, we can piggy-back on addExp().
*
* @this {Macro10}
* @param {string} sOperands
*/
addXWD(sOperands)
{
this.genWord(0, sOperands.replace(",", ",,"));
this.addEXP(sOperands.replace(",", ",,"));
}
/**
@ -1214,6 +1280,8 @@ Macro10.PSEUDO_OP = {
ASCII: "ASCII",
ASCIZ: "ASCIZ",
DEFINE: "DEFINE",
END: "END",
EXP: "EXP",
IFE: "IFE",
IFN: "IFN",
IRP: "IRP",

View file

@ -721,34 +721,44 @@ class Debugger extends Component
}
/**
* parseASCII(sExp, chDelim, nBits, nMax)
* parseASCII(sExp, chDelim, nBits, cchMax, fQuiet)
*
* @this {Debugger}
* @param {string} sExp
* @param {string} chDelim
* @param {number} nBits
* @param {number} nMax
* @param {number} cchMax
* @param {boolean} [fQuiet] (true for quiet parsing)
* @return {string}
*/
parseASCII(sExp, chDelim, nBits, nMax)
parseASCII(sExp, chDelim, nBits, cchMax, fQuiet)
{
var i;
while ((i = sExp.indexOf(chDelim)) >= 0) {
var v = 0;
var n = nMax;
var j = i + 1;
while (n--) {
var cch = cchMax;
while (cch) {
var ch = sExp[j++];
if (ch == chDelim) break;
if (ch == chDelim) {
cch = -1;
break;
}
var c = ch.charCodeAt(0);
if (nBits == 7) {
c &= 0x7F;
} else {
c = (c - 0x20) & 0x3F;
}
v = this.truncate(v * Math.pow(2, nBits) + c, nBits * nMax, true);
v = this.truncate(v * Math.pow(2, nBits) + c, nBits * cchMax, true);
cch--;
}
if (cch >= 0) {
if (fQuiet === false) this.println("parse error (" + sExp + ")");
break;
} else {
sExp = sExp.substr(0, i) + this.toStrBase(v, -1) + sExp.substr(j);
}
sExp = sExp.substr(0, i) + this.toStrBase(v, -1) + sExp.substr(j);
}
return sExp;
}
@ -780,8 +790,7 @@ class Debugger extends Component
*/
parseExpression(sExp, fQuiet)
{
var value;
var value = undefined;
this.sUndefined = null;
if (sExp) {
@ -804,8 +813,10 @@ class Debugger extends Component
* Quoted ASCII characters can have a numeric value, too, which must be converted now, to avoid any
* conflicts with the operators below.
*/
sExp = this.parseASCII(sExp, '"', 7, 5); // MACRO-10 packs up to 5 7-bit ASCII codes in the value
sExp = this.parseASCII(sExp, "'", 6, 6); // MACRO-10 packs up to 6 6-bit ASCII (SIXBIT) codes in the value
sExp = this.parseASCII(sExp, '"', 7, 5, fQuiet); // MACRO-10 packs up to 5 7-bit ASCII codes into a value
if (!sExp) return value;
sExp = this.parseASCII(sExp, "'", 6, 6, fQuiet); // MACRO-10 packs up to 6 6-bit ASCII (SIXBIT) codes into a value
if (!sExp) return value;
/*
* All browsers (including, I believe, IE9 and up) support the following idiosyncrasy of a RegExp split():

View file

@ -202,8 +202,8 @@ function dg(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<<b)
function eg(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "%":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e<f?1:0;break;case "<=":e=e<=f?1:0;break;case ">":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&=
f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=dg(e,0,!0),e=0<f?e*Math.pow(2,f):Math.trunc(e/Math.pow(2,-f)));break;default:return!1}a.push(dg(e))}return!0}
function fg(a,b,c,d,e,f){var g,h,k,p=!1,u=0,v=[],B=[],y=a.L;for(a.L=e;c<d;){h=b[c++].trim();k=c<d?b[c++]:"";if(h)u=gg(a,h,null,f,u);else if("{"==k){h=1;for(u=c;c<d;)if(c++,k=c<b.length?b[c++]:"","{"==k)h++;else if("}"==k&&!--h)break;u=fg(a,b,u,c-1,a.L,f);h=c<d?b[c++].trim():"";k=c<d?b[c++]:""}else{if("~"==k||"^-"==k){u=1;continue}if("-"==k){u=-1;continue}p=!0;break}if(void 0===u)if(null==a.oa&&f)a.oa=h,u=0;else{p=!0;f=!f;break}v.push(dg(u));if(!k)break;B.length&&hg[k]<hg[B[B.length-1]]&&eg(v,B,1);
B.push(k);a.L="^_"==k?10:e;u=0}eg(v,B)&&1==v.length||(p=!0);p?!1===f&&a.i("parse error ("+(h||k)+")"):g=v.pop();a.L=y;return g}function ig(a,b,c,d,e){for(var f;0<=(f=b.indexOf(c));){for(var g=0,h=e,k=f+1;h--;){var p=b[k++];if(p==c)break;p=p.charCodeAt(0);7==d?p&=127:p=p-32&63;g=dg(g*Math.pow(2,d)+p,d*e,!0)}b=b.substr(0,f)+jg(a,g,-1)+b.substr(k)}return b}
function kg(a,b,c){var d;a.oa=null;b&&("{"!=a.W[0]&&(b=b.split(a.W[0]).join("{").split(a.W[1]).join("}")),b=ig(a,b,'"',7,5),b=ig(a,b,"'",6,6),b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_"),b=b.split(/(\{|}|\|\||&&|\||\^!|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/),d=fg(a,b,0,b.length,a.L,c),void 0!==d&&!1===c&&lg(a,null,d));return d}
B.push(k);a.L="^_"==k?10:e;u=0}eg(v,B)&&1==v.length||(p=!0);p?!1===f&&a.i("parse error ("+(h||k)+")"):g=v.pop();a.L=y;return g}function ig(a,b,c,d,e,f){for(var g;0<=(g=b.indexOf(c));){for(var h=0,k=g+1,p=e;p;){var u=b[k++];if(u==c){p=-1;break}u=u.charCodeAt(0);7==d?u&=127:u=u-32&63;h=dg(h*Math.pow(2,d)+u,d*e,!0);p--}if(0<=p){!1===f&&a.i("parse error ("+b+")");break}else b=b.substr(0,g)+jg(a,h,-1)+b.substr(k)}return b}
function kg(a,b,c){var d=void 0;a.oa=null;if(b){"{"!=a.W[0]&&(b=b.split(a.W[0]).join("{").split(a.W[1]).join("}"));b=ig(a,b,'"',7,5,c);if(!b)return d;b=ig(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_");b=b.split(/(\{|}|\|\||&&|\||\^!|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);d=fg(a,b,0,b.length,a.L,c);void 0!==d&&!1===c&&lg(a,null,d)}return d}
function mg(a,b){var c,d=a.W[0],e=a.W[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=kg(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?jg(a,g):"undefined")}if(a.fa.length)for(d=a.fa[0],e=a.fa[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=b.replace("["+c[1]+"]","unimplemented");for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e=
a.O-a.ba}if(null==e)break;b=b.replace(d[0],e.toString())}return b}function gg(a,b,c,d,e){e=void 0===e?0:e;var f;null!=b?(f=a.Kb(b),0<=f?f=a.Lb(f):(f=a.T[b],null==f&&(f=1<b.length?a.L:10,0>e&&(b="-"+b,e=0),f=ma(b,f))),null!=f?0>e?f=-f:0<e&&(f|=-1):d||a.i("invalid "+(c?c:"value")+": "+b)):d||a.i("missing "+(c||"value"));return f}
function lg(a,b,c){var d,e=!1;if(void 0!==c){e=!0;if(8==a.L)d=c+". "+qa(c,0,!0);else{d=c;var f=4,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++)g&&(g=","+g),g=pa(d&255,8)+g,d>>=8;d=n(c,0,!0)+" "+c+". "+qa(c,0,!0)+" "+("0b"+g)}32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.i((null!=b?b+": ":"")+d);return e}function ng(a,b){if(b)return lg(a,b,a.T[b]);var c=0;for(b in a.T)lg(a,b,a.T[b]),c++;return 0<c}

View file

@ -721,8 +721,8 @@ function Xx(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<<b)
function Yx(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "%":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e<f?1:0;break;case "<=":e=e<=f?1:0;break;case ">":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&=
f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=Xx(e,0,!0),e=0<f?e*Math.pow(2,f):Math.trunc(e/Math.pow(2,-f)));break;default:return!1}a.push(Xx(e))}return!0}
function Zx(a,b,c,d,e,f){var g,h,k,m=!1,p=0,v=[],u=[],E=a.L;for(a.L=e;c<d;){h=b[c++].trim();k=c<d?b[c++]:"";if(h)p=$x(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=Zx(a,b,p,c-1,a.L,f);h=c<d?b[c++].trim():"";k=c<d?b[c++]:""}else{if("~"==k||"^-"==k){p=1;continue}if("-"==k){p=-1;continue}m=!0;break}if(void 0===p)if(null==a.Ha&&f)a.Ha=h,p=0;else{m=!0;f=!f;break}v.push(Xx(p));if(!k)break;u.length&&ay[k]<ay[u[u.length-1]]&&Yx(v,u,1);
u.push(k);a.L="^_"==k?10:e;p=0}Yx(v,u)&&1==v.length||(m=!0);m?!1===f&&a.P("parse error ("+(h||k)+")"):g=v.pop();a.L=E;return g}function by(a,b,c,d,e){for(var f;0<=(f=b.indexOf(c));){for(var g=0,h=e,k=f+1;h--;){var m=b[k++];if(m==c)break;m=m.charCodeAt(0);7==d?m&=127:m=m-32&63;g=Xx(g*Math.pow(2,d)+m,d*e,!0)}b=b.substr(0,f)+cy(a,g,-1)+b.substr(k)}return b}
function dy(a,b,c){var d;a.Ha=null;b&&("{"!=a.qa[0]&&(b=b.split(a.qa[0]).join("{").split(a.qa[1]).join("}")),b=by(a,b,'"',7,5),b=by(a,b,"'",6,6),b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_"),b=b.split(/(\{|}|\|\||&&|\||\^!|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/),d=Zx(a,b,0,b.length,a.L,c),void 0!==d&&!1===c&&ey(a,null,d));return d}
u.push(k);a.L="^_"==k?10:e;p=0}Yx(v,u)&&1==v.length||(m=!0);m?!1===f&&a.P("parse error ("+(h||k)+")"):g=v.pop();a.L=E;return g}function by(a,b,c,d,e,f){for(var g;0<=(g=b.indexOf(c));){for(var h=0,k=g+1,m=e;m;){var p=b[k++];if(p==c){m=-1;break}p=p.charCodeAt(0);7==d?p&=127:p=p-32&63;h=Xx(h*Math.pow(2,d)+p,d*e,!0);m--}if(0<=m){!1===f&&a.P("parse error ("+b+")");break}else b=b.substr(0,g)+cy(a,h,-1)+b.substr(k)}return b}
function dy(a,b,c){var d=void 0;a.Ha=null;if(b){"{"!=a.qa[0]&&(b=b.split(a.qa[0]).join("{").split(a.qa[1]).join("}"));b=by(a,b,'"',7,5,c);if(!b)return d;b=by(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_");b=b.split(/(\{|}|\|\||&&|\||\^!|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);d=Zx(a,b,0,b.length,a.L,c);void 0!==d&&!1===c&&ey(a,null,d)}return d}
function fy(a,b){var c,d=a.qa[0],e=a.qa[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=dy(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?cy(a,g):"undefined")}if(a.Aa.length)for(d=a.Aa[0],e=a.Aa[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=a.Pk(b,c[1]);for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e=a.Y-a.ha}if(null==
e)break;b=b.replace(d[0],e.toString())}return b}function $x(a,b,c,d,e){e=void 0===e?0:e;var f;null!=b?(f=a.gh(b),0<=f?f=a.hh(f):(f=a.ga[b],null==f&&(f=1<b.length?a.L:10,0>e&&(b="-"+b,e=0),f=oa(b,f))),null!=f?0>e?f=-f:0<e&&(f|=-1):d||a.P("invalid "+(c?c:"value")+": "+b)):d||a.P("missing "+(c||"value"));return f}
function ey(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.L?c+". "+sa(c,0,!0):q(c,0,!0)+" "+c+". "+sa(c,0,!0)+" "+ra(c,4,!0),32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.P((null!=b?b+": ":"")+d);return e}function gy(a,b){if(b)return ey(a,b,a.ga[b]);var c=0;for(b in a.ga)ey(a,b,a.ga[b]),c++;return 0<c}

View file

@ -27,7 +27,7 @@
http://pcjs.org/modules/pdp10/lib/debugger.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pdp10/lib/macro10.js (C) Jeff Parsons 2012-2017
*/
var m,aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},ba="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this;function ca(){ca=function(){};ba.Symbol||(ba.Symbol=da)}var ea=0;function da(a){return"jscomp_symbol_"+(a||"")+ea++}
var l,aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},ba="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this;function ca(){ca=function(){};ba.Symbol||(ba.Symbol=da)}var ea=0;function da(a){return"jscomp_symbol_"+(a||"")+ea++}
function ga(){ca();var a=ba.Symbol.iterator;a||(a=ba.Symbol.iterator=ba.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ha(this)}});ga=function(){}}function ha(a){var b=0;return ia(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function ia(a){ga();a={next:a};a[ba.Symbol.iterator]=function(){return this};return a}
function ja(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}function la(a,b){if(b){var c=ba;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];e in c||(c[e]={});c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&aa(c,a,{configurable:!0,writable:!0,value:b})}}
la("Math.trunc",function(a){return a?a:function(a){a=Number(a);if(isNaN(a)||Infinity===a||-Infinity===a||!a)return a;var b=Math.floor(Math.abs(a));return 0>a?-b:b}});la("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}});
@ -40,24 +40,24 @@ function n(a,b,c){b?12<b&&(b=12):b=a&-16777216?12:a&-65536?8:6;return ta(a,8,b,c
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={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};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={aa:null,W:null,ua:null,ta: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.ua=g.load;d.ta=g.exec;if(e=g.bytes)d.aa=e;else if(e=g.words)for(d.aa=Array(2*e.length),f=c=0;c<e.length;c++)d.aa[f++]=e[c]&255,d.aa[f++]=e[c]>>8&255;else if(e=g.longs)for(d.aa=Array(4*e.length),f=c=0;c<e.length;c++)d.aa[f++]=
e[c]&255,d.aa[f++]=e[c]>>8&255,d.aa[f++]=e[c]>>16&255,d.aa[f++]=e[c]>>24&255;else(e=g.data)?d.Ka=e:d.aa=g;d.aa&&(d.aa.length?1==d.aa.length&&(r(d.aa[0]),d=null):(r("Empty resource: "+a),d=null));d.W=g.symbols}catch(h){r("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)){r("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.aa=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}
f,e))});if(b&&"object"==typeof b){var k="",m;for(m in b)b.hasOwnProperty(m)&&(k&&(k+="&"),k+=m+"="+encodeURIComponent(b[m]));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={ba:null,W:null,ua:null,ta: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.ua=g.load;d.ta=g.exec;if(e=g.bytes)d.ba=e;else if(e=g.words)for(d.ba=Array(2*e.length),f=c=0;c<e.length;c++)d.ba[f++]=e[c]&255,d.ba[f++]=e[c]>>8&255;else if(e=g.longs)for(d.ba=Array(4*e.length),f=c=0;c<e.length;c++)d.ba[f++]=
e[c]&255,d.ba[f++]=e[c]>>8&255,d.ba[f++]=e[c]>>16&255,d.ba[f++]=e[c]>>24&255;else(e=g.data)?d.Ka=e:d.ba=g;d.ba&&(d.ba.length?1==d.ba.length&&(r(d.ba[0]),d=null):(r("Empty resource: "+a),d=null));d.W=g.symbols}catch(h){r("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)){r("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.ba=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){r(""+("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,ib&&jb("init"),kb&&jb("show")):$a=a}function jb(a){Ya[a]&&Za(Ya[a])}var Ta=null,Ya={init:[],show:[],exit:[]},ib=!1,kb=!1,$a=!0,Oa=null;Wa("onload",function(){ib=!0;Za(Ya.init)});Wa("onpageshow",function(){kb=!0;Za(Ya.show)});Wa(Ra("Opera")||Ra("iOS")?"onunload":"onbeforeunload",function(){Za(Ya.exit)});
function u(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.xb=b.comment;this.Ob=b;this.exports={};this.J=this.bindings={};a=this.id.indexOf(".");0>a?this.Va=this.id:(this.Wa=this.id.substr(0,a),this.Va=this.id.substr(a+1));this.A={ready:!1,Pa:!1,kb:!1,X:!1,error:!1};this.Za=null;this.A.error=!1;this.Z=c||0;this.D=this.v=this.G=this.H=this.va=null;lb.push(this)}function mb(a,b,c){nb[a]&&b&&(nb[a][b]=c)}function ob(){return Date.now()||+new Date}
function Za(a){if($a)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){r(""+("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&&jb("init"),kb&&jb("show")):$a=a}function jb(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 u(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.xb=b.comment;this.Ob=b;this.exports={};this.J=this.bindings={};a=this.id.indexOf(".");0>a?this.Va=this.id:(this.Wa=this.id.substr(0,a),this.Va=this.id.substr(a+1));this.A={ready:!1,Pa:!1,kb:!1,X:!1,error:!1};this.Za=null;this.A.error=!1;this.aa=c||0;this.D=this.v=this.G=this.H=this.va=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){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 tb(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){r(c.message+" ("+a+")")}return b}
function ub(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=tb(g))&&h.binding&&a.na(h.type,h.binding,g,h.value),l=k.length}}}}
function ub(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(" "),m=0;m<k.length;m++)switch(h=k[m],h){case c+"-binding":(h=tb(g))&&h.binding&&a.na(h.type,h.binding,g,h.value),m=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 vb(a){for(var b=!0,c=wb[a];c&&c.length;){var d=c.splice(0,1)[0],e=d[0],f=null;0<=xb.indexOf(e)&&(f=function(){return function(){vb(a)}}());var g=yb[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=zb[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){r("Script error: "+e+(g?" failed":" unrecognized"));break}}c&&!c.length&&delete wb[a];return b}m=u.prototype;
m.toString=function(){return this.name?this.name:this.id||this.type};
m.na=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.va=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.ea=function(a){this.u(a,this.Va)}),!0;default:return!1}};m.log=function(){};m.u=function(){};
m.status=function(a){this.u(this.Va+": "+a)};m.ea=function(a,b,c){c=c||this.type;b||r((c?c+": ":"")+a)};function Ab(a,b){a.A.error=!0;a.ea(b)}function Cb(a){return a.A.error?(a.u(a.toString()+" error"),!0):!1}function Mb(a,b){b&&(a.A.ready?b():a.Za=b);return a.A.ready}function Nb(a){if(!a.A.error&&(a.A.ready=!0,a.A.ready)){var b=a.Za;a.Za=null;b&&b()}}function Ob(a,b){a.A.Pa&&(b?a.A.kb=!0:void 0===b&&a.u(a.toString()+" busy"));return a.A.Pa}
function Pb(a,b){if(a.A.kb)return a.A.Pa=!1,a.A.kb=!1;if(a.A.error)return a.u(a.toString()+" error"),!1;a.A.Pa=b;return a.A.Pa}m.wa=function(){return this.A.X=!0};m.ma=function(a,b){b&&(this.A.X=!1);return!0};function Qb(a,b){if(a.D){a===a.D?b|=0:b=b||a.Z;var c=a.D.Z&b;return!!b&&c===b||!!(c&a.D.zb)}return!1}function Rb(a,b,c,d){a.D&&(!0===c||Qb(a,c|0))&&a.D.message(b,d)}
function vb(a){for(var b=!0,c=wb[a];c&&c.length;){var d=c.splice(0,1)[0],e=d[0],f=null;0<=xb.indexOf(e)&&(f=function(){return function(){vb(a)}}());var g=yb[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=zb[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){r("Script error: "+e+(g?" failed":" unrecognized"));break}}c&&!c.length&&delete wb[a];return b}l=u.prototype;
l.toString=function(){return this.name?this.name:this.id||this.type};
l.na=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.va=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.ea=function(a){this.u(a,this.Va)}),!0;default:return!1}};l.log=function(){};l.u=function(){};
l.status=function(a){this.u(this.Va+": "+a)};l.ea=function(a,b,c){c=c||this.type;b||r((c?c+": ":"")+a)};function Ab(a,b){a.A.error=!0;a.ea(b)}function Cb(a){return a.A.error?(a.u(a.toString()+" error"),!0):!1}function Mb(a,b){b&&(a.A.ready?b():a.Za=b);return a.A.ready}function Nb(a){if(!a.A.error&&(a.A.ready=!0,a.A.ready)){var b=a.Za;a.Za=null;b&&b()}}function Ob(a,b){a.A.Pa&&(b?a.A.kb=!0:void 0===b&&a.u(a.toString()+" busy"));return a.A.Pa}
function Pb(a,b){if(a.A.kb)return a.A.Pa=!1,a.A.kb=!1;if(a.A.error)return a.u(a.toString()+" error"),!1;a.A.Pa=b;return a.A.Pa}l.wa=function(){return this.A.X=!0};l.ma=function(a,b){b&&(this.A.X=!1);return!0};function Qb(a,b){if(a.D){a===a.D?b|=0:b=b||a.aa;var c=a.D.aa&b;return!!b&&c===b||!!(c&a.D.zb)}return!1}function Rb(a,b,c,d){a.D&&(!0===c||Qb(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:[],wb=window?window.PCjs.Commands:{},xb=["hold","sleep","wait"],yb={alert:function(a){r(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},zb={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)});
@ -65,41 +65,41 @@ Function.prototype.bind||(Function.prototype.bind=function(a){function b(){retur
var v="pdp10",Sb="PDPjs",Tb=Math.pow(2,18)-1,Ub=Math.pow(2,18),Vb=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,E=Math.pow(2,36),F=Math.pow(2,32),Wb=Math.pow(2,34),Xb=Math.pow(2,36),Yb=Math.pow(2,21),Zb=Math.pow(2,26),$b=Math.pow(2,23),ac=Math.pow(2,30),v="pdp10",Sb="PDPjs",bc={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 cc(a,b){u.call(this,"Panel",a,512);this.K=this.L=0;this.T=b;this.i=this.I=this.j=this.w=0;this.M=this.O=-1;this.P=this.R=this.F=!1;this.S=dc;this.C={};this.b={START:[1,1,!0,!1,this.Zb],STEP:[1,1,!1,!1,this.$b],ENABLE:[1,1,!1,!1,this.Ub],CONT:[1,1,!0,!1,this.Sb],DEP:[0,0,!0,!1,this.Tb],EXAM:[1,1,!0,!1,this.Vb],LOAD:[1,1,!0,!1,this.Xb],TEST:[0,0,!0,!1,this.Wb]};for(a=0;22>a;a++)this.b["S"+a]=[0,0,!1,!1,this.Yb,a];this.D=this.v=this.G=this.H=null;this.exports={hold:this.Pb,toggle:this.ic,reset:this.ec,
set:this.hc};Nb(this)}ja(cc,u);m=cc.prototype;m.reset=function(a){this.stop();a&&ec(this,this.w=0)};
m.na=function(a,b,c,d){if(this.H&&this.H.na(a,b,c,d)||this.v&&this.v.na(a,b,c,d)||this.D&&this.D.na(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(){fc(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){gc(a,b)}}(this,b),a.ontouchstart=
function(a,b){return function(c){fc(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){gc(a,b)}}(this,b),!0):u.prototype.na.call(this,a,b,c,d)}};m.Ha=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;hc(this);ic(this)};m.wa=function(a,b){if(!b)if(this.T&&jc(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.ma=function(a){return a?this.save():!0};m.save=function(){var a=new G(this);a.set(0,[this.i,this.w,this.j]);return a.data()};
m.restore=function(a){if(a=a[0])kc(this,this.i=a[0]),ec(this,this.w=a[1]),lc(this,a[2]);return!0};m.ec=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}ic(this);return!0};function mc(a,b,c){if(a=a.J[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function hc(a,b){for(var c in a.C)mc(a,c,null!=b?b:a.C[c])}function nc(a,b,c){if(a=a.J[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function ic(a){for(var b in a.b)nc(a,b,a.b[b][1])}
m.Pb=function(a,b,c){if(fc(this,b)){if(c){var d=this;setTimeout(function(){gc(d,b);a&&a()},+c);return!1}gc(this,b)}return!0};m.hc=function(a,b){if("SR"==a)return lc(this,na(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,nc(this,a,c[1]),!0):!1};m.ic=function(a){return fc(this,a)?(gc(this,a),!0):!1};function fc(a,b){var c=a.b[b];return c?(nc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=oc&&(a.P=b==pc,a.R=b==qc),!0):!1}
function gc(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(nc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}m.Zb=function(a){a||this.v.A.N||(I(this.v,this.i),this.b[rc]&&this.b[rc][1]&&sc(this.v))};m.$b=function(){};m.Ub=function(a){a||this.v.V()};
m.Sb=function(a){if(!a&&!this.v.A.N)if(this.b[rc]&&this.b[rc][1])sc(this.v);else{if((a=this.D)&&!Ob(a,!0))Pb(a,!0),tc(a,0,null),Pb(a,!1);else try{var b=this.v.Ta(1);0<b&&(uc(this.v,b),vc(this.v,b,!0),wc(this.v,b))}catch(c){"number"!=typeof c&&Ab(this.v,c.stack||c.message)}this.stop();this.H&&J(this.H)}};m.Tb=function(a){a&&!this.v.A.N&&(this.P&&xc(this),a=ec(this,this.w=this.j),this.S==dc?yc(this.G,this.i,a):this.v.g(this.i,a))};
m.Vb=function(a){if(!a&&!this.v.A.N){var b;this.R&&xc(this);this.S==dc?b=zc(this.G,this.i):b=this.v.f(this.i);ec(this,this.w=b)}};m.Xb=function(a){a||this.v.A.N||kc(this,this.j)};m.Wb=function(a){a?(this.F=!0,hc(this,!0)):(this.F=!1,hc(this),lc(this,0))};m.Yb=function(a,b){this.j=a?this.j|1<<b:this.j&~(1<<b)};function xc(a){var b=1,c=a.G.j;a.b[oc]&&a.b[oc][1]||(b=-b);kc(a,a.i&~c|a.i+b&c)}
function kc(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||mc(d,e,f)}}}function ec(a,b){a.I=b%E;if(a.O!==a.I){a.O=a.I;b=a.O;for(var c=0;16>c;c++){var d=a,e="D"+c,f=b&1<<c;d.C[e]=f;d.F||mc(d,e,f)}}return a.I}function lc(a,b){a.j=b|0;for(b=0;22>b;b++)a.b["S"+b][1]=a.j&1<<b?1:0;ic(a);return!0}m.stop=function(){kc(this,this.v.i)};
function jc(){for(var a=w(document,v,"panel"),b=0;b<a.length;b++){var c=a[b],d=tb(c),e=rb(d.id);e||(e=new cc(d,!0));ub(e,c)}}var dc=7,pc="DEP",rc="ENABLE",qc="EXAM",oc="STEP";Xa(jc);function Ac(a,b,c){u.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 Bc(this);Cc(a,this.D);this.b=Array(this.C);for(b=0;b<this.C;b++)this.b[b]=a;Nb(this)}ja(Ac,u);m=Ac.prototype;m.reset=function(){};
m.wa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.ma=function(a){return a?this.save():!0};m.save=function(){var a=new G(this);a.set(0,Dc(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)){r("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
function Ic(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.Ra+=h.B-e,h.B=e,!0;if(e>=h.B+h.Ra){l=h.size-(e-k);l>f&&(l=f);h.Ra=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Jc(Kc,e,f)}e=new Bc(a,e,l,16384,d);Cc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Lc[d]+" at "+n(b)),!0):Jc(Mc,b,c)}
function zc(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.D(b&16383,b);a.w--;return b}function yc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.w(c,b&16383,b);a.w--}function Dc(a){for(var b=0,c=[],d=0;d<a.C;d++){var e=a.b[d];if(e.mb||e.Mb){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.Nb=function(a){this.w||(this.D&&Qb(this.D,4)&&Rb(this.D,"memory fault on "+K(this.D,a),!0,!0),this.v.V())};function Jc(a,b,c){r("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Kc=1,Mc=2;function Nc(a){u.call(this,"Device",a,256)}ja(Nc,u);m=Nc.prototype;m.Ha=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.D=d;Nb(this)};m.wa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.ma=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){return(new G(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=tb(d);switch(c.type){case "default":c=new Nc(c),ub(c,d)}}});function Bc(a,b,c,d,e){this.H=a;this.id=Oc+=2;this.B=b;this.Ra=c;this.size=d||0;this.type=e||Pc;this.G=e==Qc;this.b=null;this.f=this.D=this.pb;this.g=this.w=this.Sa;this.i=this.v=0;Cc(this);this.mb=this.Mb=!1;if(this.size){a=this.j=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Rc(this,Sc)}else Rc(this)}m=Bc.prototype;m.save=function(){return this.j};
m.restore=function(a){return a&&this.size==a.length?(this.j=a,this.mb=!0):!1};function Rc(a,b){b||(b=Tc);Uc(a,b,void 0);Vc(a,b,void 0)}function Uc(a,b,c){c&&a.i||(a.f=b[0]||a.pb);if(c||void 0===c)a.D=b[0]||a.pb}function Vc(a,b,c){c&&a.v||(a.g=!a.G&&b[1]||a.Sa);if(c||void 0===c)a.w=b[1]||a.Sa}m.Ma=function(a,b){b?this.v++||Vc(this,Wc,!1):this.i++||Uc(this,Wc,!1)};function Xc(a,b){b?--a.v||(a.g=a.G?a.Sa:a.w):--a.i||(a.f=a.D)}
function Cc(a,b,c){a.b=b;a.i=a.v=0;c&&((a.i=c.i)&&Uc(a,Wc,!1),(a.v=c.v)&&Vc(a,Wc,!1))}m.pb=function(a,b){this.b&&Qb(this.b,32)&&Rb(this.b,"attempt to read invalid address "+K(this.b,b),!0);this.H.Nb(b);return-1};m.Sa=function(a,b,c){this.b&&Qb(this.b,32)&&Rb(this.b,"attempt to write "+K(this.b,a)+" to invalid addresses "+K(this.b,c),!0)};m.cc=function(a){return this.j[a]};m.lc=function(a,b){this.j[b]!=a&&(this.j[b]=a,this.mb=!0)};
m.ac=function(a,b){if(this.b&&null!=this.B){var c=this.b;Yc(c,this.B+a,2,c.M)&&c.V(!1)}return this.D(a,b)};m.kc=function(a,b,c){if(this.b&&null!=this.B){var d=this.b;Yc(d,this.B+b,2,d.I)&&d.V(!1)}this.G?this.Sa(a,0,c):this.w(a,b,c)};var Pc=0,Qc=2,Lc=["NONE","RAM","ROM"],Oc=0,Tc=[],Sc=[Bc.prototype.cc,Bc.prototype.lc],Wc=[Bc.prototype.ac,Bc.prototype.kc];
function Zc(a,b){u.call(this,"CPU",a,1);b=+a.cycles||b;var c=+a.multiplier||1;this.eb=0;this.hb=b;this.fa=c;this.fb=Math.round(this.hb/1E4)/100;this.da=this.fb*this.fa;this.gb=this.Ea=this.ga=this.Xa=0;this.A.N=this.A.cb=!1;this.A.ba=a.autoStart;"string"==typeof this.A.ba&&(this.A.ba="true"==this.A.ba);this.A.Oa=!1;this.Ca=this.ia=0;this.Da=+a.csStart;this.oa=+a.csInterval;this.ja=+a.csStop;this.O=[];this.Ab=this.fc.bind(this);this.T=this.M=this.R=this.S=this.L=this.Aa=this.P=this.ka=this.ib=this.Y=
0;this.Ja=null;Nb(this)}ja(Zc,u);m=Zc.prototype;m.Ha=function(a,b,c,d){this.H=a;this.G=b;this.D=d;this.Ja=a.j;for(a=0;a<$c.length;a++)(b=this.J[$c[a]])&&this.H.na(null,$c[a],b);Nb(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
m.wa=function(a,b){var c=ad(this.H,"autoStart");null!=c?this.A.ba="true"==c?!0:"false"==c?!1:!!c:null==this.A.ba&&(this.A.ba=!this.D&&void 0===this.J.run);if(!b){if(a){bd(this);if(!this.restore(a))return!1;cd(this)}else this.reset();this.D?(a=this.D,b=this.A.ba,a.Ea=!0,a.u("Type ? for help with PDPjs Debugger commands"),dd(a),b||ed(a),a.ra&&(b=a.ra,a.ra=null,fd(a,b,!0))):this.status("No debugger detected");this.A.ba||this.u("CPU will not be auto-started "+(this.Ja?"(click Run to start)":"(type 'go' to start)"))}return!0};
m.ma=function(a){return a?this.save():!0};m.ba=function(){return this.A.N?!0:this.A.ba?(sc(this),!0):!1};m.Db=function(){return 0};function cd(a){void 0===a.Da&&(a.Da=0);void 0===a.oa&&(a.oa=-1);void 0===a.ja&&(a.ja=-1);a.A.Oa=0<=a.Da&&0<a.oa;a.A.Oa&&(a.Ca=0,a.ia=a.Da-a.T)}function wc(a,b){if(a.A.Oa){var c=!1;a.Ca=a.Ca+a.Db()|0;a.ia-=b;0>=a.ia&&(a.ia+=a.oa,c=!0);0<=a.ja&&a.ja<=gd(a)&&(a.oa=a.ja=-1,cd(a),a.V(),c=!0);c&&a.u(gd(a)+" cycles: checksum="+q(a.Ca))}}
m.na=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.X)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.X);c++);c==h.length&&(b=a);r("The "+b.type+" component ("+b.id+") is not "+(b.A.ready?"powered yet":"ready yet"+(b.Za?" (waiting for notification)":""))+".");a=!1}a&&(d.A.N?d.V():sc(d))},!0;case "speed":return this.J[b]=
c,!0;case "setSpeed":return this.J[b]=c,c.onclick=function(){hd(d,d.fa<<1,!0)},c.textContent=this.da.toFixed(2)+"Mhz",!0}return!1};function vc(a,b,c){a.T+=b;c&&(a.R=a.S=0)}function id(a,b){var c=1;b&&1<a.fa&&a.Y&&(c=a.Y/a.fb);a.gb=Math.round(1E3/jd);a.Ea=Math.floor(a.hb/jd*c);b||(a.ga=a.Ea);a.Xa=0}function gd(a){return a.T+a.M+a.R-a.S}function bd(a){a.Y=0;a.ib=0;a.T=a.M=a.R=a.S=0;cd(a);hd(a,1)}
function hd(a,b,c){var d=!1;if(void 0!==b){.8>a.Y/a.da?b=1:d=!0;a.fa=b;b=a.fb*a.fa;if(a.da!=b){a.da=b;b=a.da.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&kd(a.H)}vc(a,a.M);a.M=0;a.L=ob();a.P=0;id(a);return d}function ld(a,b){for(var c=a.O.length-1;0<=c;c--){var d=a.O[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function md(a){for(var b=[],c=0;c<a.O.length;c++)b.push(a.O[c][0]);return b}
set:this.hc};Nb(this)}ja(cc,u);l=cc.prototype;l.reset=function(a){this.stop();a&&ec(this,this.w=0)};
l.na=function(a,b,c,d){if(this.H&&this.H.na(a,b,c,d)||this.v&&this.v.na(a,b,c,d)||this.D&&this.D.na(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(){fc(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){gc(a,b)}}(this,b),a.ontouchstart=
function(a,b){return function(c){fc(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){gc(a,b)}}(this,b),!0):u.prototype.na.call(this,a,b,c,d)}};l.Ha=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;hc(this);ic(this)};l.wa=function(a,b){if(!b)if(this.T&&jc(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};l.ma=function(a){return a?this.save():!0};l.save=function(){var a=new G(this);a.set(0,[this.i,this.w,this.j]);return a.data()};
l.restore=function(a){if(a=a[0])kc(this,this.i=a[0]),ec(this,this.w=a[1]),lc(this,a[2]);return!0};l.ec=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}ic(this);return!0};function mc(a,b,c){if(a=a.J[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function hc(a,b){for(var c in a.C)mc(a,c,null!=b?b:a.C[c])}function nc(a,b,c){if(a=a.J[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function ic(a){for(var b in a.b)nc(a,b,a.b[b][1])}
l.Pb=function(a,b,c){if(fc(this,b)){if(c){var d=this;setTimeout(function(){gc(d,b);a&&a()},+c);return!1}gc(this,b)}return!0};l.hc=function(a,b){if("SR"==a)return lc(this,na(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,nc(this,a,c[1]),!0):!1};l.ic=function(a){return fc(this,a)?(gc(this,a),!0):!1};function fc(a,b){var c=a.b[b];return c?(nc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=oc&&(a.P=b==pc,a.R=b==qc),!0):!1}
function gc(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(nc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}l.Zb=function(a){a||this.v.A.N||(I(this.v,this.i),this.b[rc]&&this.b[rc][1]&&sc(this.v))};l.$b=function(){};l.Ub=function(a){a||this.v.V()};
l.Sb=function(a){if(!a&&!this.v.A.N)if(this.b[rc]&&this.b[rc][1])sc(this.v);else{if((a=this.D)&&!Ob(a,!0))Pb(a,!0),tc(a,0,null),Pb(a,!1);else try{var b=this.v.Ta(1);0<b&&(uc(this.v,b),vc(this.v,b,!0),wc(this.v,b))}catch(c){"number"!=typeof c&&Ab(this.v,c.stack||c.message)}this.stop();this.H&&J(this.H)}};l.Tb=function(a){a&&!this.v.A.N&&(this.P&&xc(this),a=ec(this,this.w=this.j),this.S==dc?yc(this.G,this.i,a):this.v.g(this.i,a))};
l.Vb=function(a){if(!a&&!this.v.A.N){var b;this.R&&xc(this);this.S==dc?b=zc(this.G,this.i):b=this.v.f(this.i);ec(this,this.w=b)}};l.Xb=function(a){a||this.v.A.N||kc(this,this.j)};l.Wb=function(a){a?(this.F=!0,hc(this,!0)):(this.F=!1,hc(this),lc(this,0))};l.Yb=function(a,b){this.j=a?this.j|1<<b:this.j&~(1<<b)};function xc(a){var b=1,c=a.G.j;a.b[oc]&&a.b[oc][1]||(b=-b);kc(a,a.i&~c|a.i+b&c)}
function kc(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||mc(d,e,f)}}}function ec(a,b){a.I=b%E;if(a.O!==a.I){a.O=a.I;b=a.O;for(var c=0;16>c;c++){var d=a,e="D"+c,f=b&1<<c;d.C[e]=f;d.F||mc(d,e,f)}}return a.I}function lc(a,b){a.j=b|0;for(b=0;22>b;b++)a.b["S"+b][1]=a.j&1<<b?1:0;ic(a);return!0}l.stop=function(){kc(this,this.v.i)};
function jc(){for(var a=w(document,v,"panel"),b=0;b<a.length;b++){var c=a[b],d=tb(c),e=rb(d.id);e||(e=new cc(d,!0));ub(e,c)}}var dc=7,pc="DEP",rc="ENABLE",qc="EXAM",oc="STEP";Xa(jc);function Ac(a,b,c){u.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 Bc(this);Cc(a,this.D);this.b=Array(this.C);for(b=0;b<this.C;b++)this.b[b]=a;Nb(this)}ja(Ac,u);l=Ac.prototype;l.reset=function(){};
l.wa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.ma=function(a){return a?this.save():!0};l.save=function(){var a=new G(this);a.set(0,Dc(this));return a.data()};l.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)){r("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
function Ic(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,m=16384-(e-k);m>f&&(m=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Ra+=h.B-e,h.B=e,!0;if(e>=h.B+h.Ra){m=h.size-(e-k);m>f&&(m=f);h.Ra=e-h.B+m;e=k+16384;f-=m;g++;continue}}return Jc(Kc,e,f)}e=new Bc(a,e,m,16384,d);Cc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=m}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Lc[d]+" at "+n(b)),!0):Jc(Mc,b,c)}
function zc(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.D(b&16383,b);a.w--;return b}function yc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.w(c,b&16383,b);a.w--}function Dc(a){for(var b=0,c=[],d=0;d<a.C;d++){var e=a.b[d];if(e.mb||e.Mb){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,k=[];g<e.length;){for(var m=e[g],p=g+1;p<e.length&&e[p]===m;)p++;k[h++]=p-g;k[h++]=m;g=p}k.length<e.length&&(e=k)}c[f]=e}}return c}
l.Nb=function(a){this.w||(this.D&&Qb(this.D,4)&&Rb(this.D,"memory fault on "+K(this.D,a),!0,!0),this.v.V())};function Jc(a,b,c){r("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Kc=1,Mc=2;function Nc(a){u.call(this,"Device",a,256)}ja(Nc,u);l=Nc.prototype;l.Ha=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.D=d;Nb(this)};l.wa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.ma=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){return(new G(this)).data()};
l.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=tb(d);switch(c.type){case "default":c=new Nc(c),ub(c,d)}}});function Bc(a,b,c,d,e){this.H=a;this.id=Oc+=2;this.B=b;this.Ra=c;this.size=d||0;this.type=e||Pc;this.G=e==Qc;this.b=null;this.f=this.D=this.pb;this.g=this.w=this.Sa;this.i=this.v=0;Cc(this);this.mb=this.Mb=!1;if(this.size){a=this.j=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Rc(this,Sc)}else Rc(this)}l=Bc.prototype;l.save=function(){return this.j};
l.restore=function(a){return a&&this.size==a.length?(this.j=a,this.mb=!0):!1};function Rc(a,b){b||(b=Tc);Uc(a,b,void 0);Vc(a,b,void 0)}function Uc(a,b,c){c&&a.i||(a.f=b[0]||a.pb);if(c||void 0===c)a.D=b[0]||a.pb}function Vc(a,b,c){c&&a.v||(a.g=!a.G&&b[1]||a.Sa);if(c||void 0===c)a.w=b[1]||a.Sa}l.Ma=function(a,b){b?this.v++||Vc(this,Wc,!1):this.i++||Uc(this,Wc,!1)};function Xc(a,b){b?--a.v||(a.g=a.G?a.Sa:a.w):--a.i||(a.f=a.D)}
function Cc(a,b,c){a.b=b;a.i=a.v=0;c&&((a.i=c.i)&&Uc(a,Wc,!1),(a.v=c.v)&&Vc(a,Wc,!1))}l.pb=function(a,b){this.b&&Qb(this.b,32)&&Rb(this.b,"attempt to read invalid address "+K(this.b,b),!0);this.H.Nb(b);return-1};l.Sa=function(a,b,c){this.b&&Qb(this.b,32)&&Rb(this.b,"attempt to write "+K(this.b,a)+" to invalid addresses "+K(this.b,c),!0)};l.cc=function(a){return this.j[a]};l.lc=function(a,b){this.j[b]!=a&&(this.j[b]=a,this.mb=!0)};
l.ac=function(a,b){if(this.b&&null!=this.B){var c=this.b;Yc(c,this.B+a,2,c.M)&&c.V(!1)}return this.D(a,b)};l.kc=function(a,b,c){if(this.b&&null!=this.B){var d=this.b;Yc(d,this.B+b,2,d.I)&&d.V(!1)}this.G?this.Sa(a,0,c):this.w(a,b,c)};var Pc=0,Qc=2,Lc=["NONE","RAM","ROM"],Oc=0,Tc=[],Sc=[Bc.prototype.cc,Bc.prototype.lc],Wc=[Bc.prototype.ac,Bc.prototype.kc];
function Zc(a,b){u.call(this,"CPU",a,1);b=+a.cycles||b;var c=+a.multiplier||1;this.eb=0;this.hb=b;this.fa=c;this.fb=Math.round(this.hb/1E4)/100;this.Z=this.fb*this.fa;this.gb=this.Ea=this.ga=this.Xa=0;this.A.N=this.A.cb=!1;this.A.ca=a.autoStart;"string"==typeof this.A.ca&&(this.A.ca="true"==this.A.ca);this.A.Oa=!1;this.Ca=this.ia=0;this.Da=+a.csStart;this.oa=+a.csInterval;this.ja=+a.csStop;this.O=[];this.Ab=this.fc.bind(this);this.T=this.M=this.R=this.S=this.L=this.Aa=this.P=this.ka=this.ib=this.Y=
0;this.Ja=null;Nb(this)}ja(Zc,u);l=Zc.prototype;l.Ha=function(a,b,c,d){this.H=a;this.G=b;this.D=d;this.Ja=a.j;for(a=0;a<$c.length;a++)(b=this.J[$c[a]])&&this.H.na(null,$c[a],b);Nb(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};
l.wa=function(a,b){var c=ad(this.H,"autoStart");null!=c?this.A.ca="true"==c?!0:"false"==c?!1:!!c:null==this.A.ca&&(this.A.ca=!this.D&&void 0===this.J.run);if(!b){if(a){bd(this);if(!this.restore(a))return!1;cd(this)}else this.reset();this.D?(a=this.D,b=this.A.ca,a.Ea=!0,a.u("Type ? for help with PDPjs Debugger commands"),dd(a),b||ed(a),a.ra&&(b=a.ra,a.ra=null,fd(a,b,!0))):this.status("No debugger detected");this.A.ca||this.u("CPU will not be auto-started "+(this.Ja?"(click Run to start)":"(type 'go' to start)"))}return!0};
l.ma=function(a){return a?this.save():!0};l.ca=function(){return this.A.N?!0:this.A.ca?(sc(this),!0):!1};l.Db=function(){return 0};function cd(a){void 0===a.Da&&(a.Da=0);void 0===a.oa&&(a.oa=-1);void 0===a.ja&&(a.ja=-1);a.A.Oa=0<=a.Da&&0<a.oa;a.A.Oa&&(a.Ca=0,a.ia=a.Da-a.T)}function wc(a,b){if(a.A.Oa){var c=!1;a.Ca=a.Ca+a.Db()|0;a.ia-=b;0>=a.ia&&(a.ia+=a.oa,c=!0);0<=a.ja&&a.ja<=gd(a)&&(a.oa=a.ja=-1,cd(a),a.V(),c=!0);c&&a.u(gd(a)+" cycles: checksum="+q(a.Ca))}}
l.na=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.X)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.X);c++);c==h.length&&(b=a);r("The "+b.type+" component ("+b.id+") is not "+(b.A.ready?"powered yet":"ready yet"+(b.Za?" (waiting for notification)":""))+".");a=!1}a&&(d.A.N?d.V():sc(d))},!0;case "speed":return this.J[b]=
c,!0;case "setSpeed":return this.J[b]=c,c.onclick=function(){hd(d,d.fa<<1,!0)},c.textContent=this.Z.toFixed(2)+"Mhz",!0}return!1};function vc(a,b,c){a.T+=b;c&&(a.R=a.S=0)}function id(a,b){var c=1;b&&1<a.fa&&a.Y&&(c=a.Y/a.fb);a.gb=Math.round(1E3/jd);a.Ea=Math.floor(a.hb/jd*c);b||(a.ga=a.Ea);a.Xa=0}function gd(a){return a.T+a.M+a.R-a.S}function bd(a){a.Y=0;a.ib=0;a.T=a.M=a.R=a.S=0;cd(a);hd(a,1)}
function hd(a,b,c){var d=!1;if(void 0!==b){.8>a.Y/a.Z?b=1:d=!0;a.fa=b;b=a.fb*a.fa;if(a.Z!=b){a.Z=b;b=a.Z.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&kd(a.H)}vc(a,a.M);a.M=0;a.L=ob();a.P=0;id(a);return d}function ld(a,b){for(var c=a.O.length-1;0<=c;c--){var d=a.O[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function md(a){for(var b=[],c=0;c<a.O.length;c++)b.push(a.O[c][0]);return b}
function uc(a,b){for(var c=a.O.length-1;0<=c;c--){var d=a.O[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function nd(a,b){var c=a.R-=a.S;a.S=0;b&&(a.R=0);return c}
m.fc=function(){if(this.A.N){this.Xa>=this.hb&&id(this,!0);this.ka=0;this.Aa=ob();if(this.P){var a=this.Aa-this.P;a>this.gb&&(this.L+=a,this.L>this.Aa&&(this.L=this.Aa))}try{do{var b=ld(this,this.A.Oa?1:this.Ea);try{this.Ta(b)}catch(e){if("number"!=typeof e)throw e;}b=nd(this,!0);this.ka+=b;this.M+=b;wc(this,b);uc(this,b);this.ga-=b;if(0>=this.ga){this.ga+=this.Ea;++this.ib>=od&&(this.H&&J(this.H,void 0),this.ib=0);break}}while(this.A.N)}catch(e){this.V();this.H&&this.H.stop(ob(),gd(this));Ab(this,
e.stack||e.message);return}if(this.A.N){a=setTimeout;b=this.Ab;this.P=ob();var c=this.gb;this.ka&&(c=Math.round(c*this.ka/this.Ea));var c=c-(this.P-this.Aa),d=this.P-this.L;d&&(this.Y=Math.round(this.M/(10*d))/100,864E5<=d&&(this.T=0,hd(this)));if(0>c||this.Y<this.da)-1E3>c&&(this.L-=c),c=0;this.Xa+=this.ka;this.P+=c;a(b,c)}}};
function sc(a,b){if(!Cb(a))if(a.A.N)a.u(a.toString()+" busy");else{hd(a);a.A.N=!0;a.A.cb=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&kd(a.H,!0),a.H.start(a.L,gd(a)));a.D||a.status("Started");setTimeout(a.Ab,0)}}m.Ta=function(){return 0};m.V=function(a){var b=!1;if(this.A.N){nd(this);vc(this,this.M);this.M=0;this.A.N=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),gd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var jd=30,od=15,$c=["power","reset"];
function pd(a){var b=+a.model||1001;Zc.call(this,a,1E6);this.yb=b;this.Ua=+a.addrReset||0;this.Lb=qd.bind(this);this.w=L.bind(this);this.ya=null;this.qb=[];this.A.complete=!1}ja(pd,Zc);m=pd.prototype;
m.reset=function(){this.status("Model "+this.yb);this.A.N&&this.V();this.Fa=this.Ga=this.b=this.K=0;this.i=this.za=this.Ua;this.I=this.ra=-1;this.F=this.j=0;this.jb=[0,0];this.pa=[0,0];this.ha=[0,0];this.qa=[0,0];this.xa=this.i;this.C=0;this.f=this.bc;this.g=this.mc;this.ya=null;bd(this);this.A.error=!1;Zc.prototype.reset.call(this)};m.Db=function(){return 0};
m.save=function(){var a=new G(this);a.set(0,[this.b,this.K,this.Fa,this.Ga,this.i,this.ra,this.I,this.j,this.C,this.za,this.xa,this.Ua]);a.set(1,[]);a.set(2,[this.T,this.fa,this.A.ba]);a.set(3,rd(this));a.set(4,md(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.Fa=b.next().value;this.Ga=b.next().value;this.i=b.next().value;this.ra=b.next().value;this.I=b.next().value;this.j=b.next().value;this.C=b.next().value;this.za=b.next().value;this.xa=b.next().value;this.Ua=b.next().value;b=a[2];this.T=b[0];hd(this,b[1]);this.A.ba=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.qb.length;d++){var e=this.qb[d];
if(e.jc===b[c]){d=e;break a}}d=null}d&&(d.next=this.ya,this.ya=d)}a=a[4];for(b=0;b<this.O.length&&b<a.length;b++)this.O[b][0]=a[b];return!0};function sd(a,b){var c=a.i;a.i=(c+b)%Ub;return c}function I(a,b){a.i=b%Ub}function rd(a){var b=[];for(a=a.ya;a;)b.push(a.jc),a=a.next;return b}m.bc=function(a){var b=this.G;a=this.xa=a;return b.b[(a&b.j)>>>b.i].f(a&16383,a)};m.mc=function(a,b){var c=this.G;a=this.xa=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b};
m.Ta=function(a){this.A.complete=!0;var b=this.D?td(this.D)?1:this.A.cb?-1:0:0,c=a?this.A.cb?0:1:-1;this.A.cb=!1;this.R=this.S=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.V();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.ya||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&ud(this.D,this.i,c)){this.V();break}if(0>c)break}}this.C&=15;this.K&4194304?this.K=this.Fa=this.f(this.b):0<=this.ra?(this.K=this.Ga=this.f(this.ra),this.ra=-1):(this.K=
l.fc=function(){if(this.A.N){this.Xa>=this.hb&&id(this,!0);this.ka=0;this.Aa=ob();if(this.P){var a=this.Aa-this.P;a>this.gb&&(this.L+=a,this.L>this.Aa&&(this.L=this.Aa))}try{do{var b=ld(this,this.A.Oa?1:this.Ea);try{this.Ta(b)}catch(e){if("number"!=typeof e)throw e;}b=nd(this,!0);this.ka+=b;this.M+=b;wc(this,b);uc(this,b);this.ga-=b;if(0>=this.ga){this.ga+=this.Ea;++this.ib>=od&&(this.H&&J(this.H,void 0),this.ib=0);break}}while(this.A.N)}catch(e){this.V();this.H&&this.H.stop(ob(),gd(this));Ab(this,
e.stack||e.message);return}if(this.A.N){a=setTimeout;b=this.Ab;this.P=ob();var c=this.gb;this.ka&&(c=Math.round(c*this.ka/this.Ea));var c=c-(this.P-this.Aa),d=this.P-this.L;d&&(this.Y=Math.round(this.M/(10*d))/100,864E5<=d&&(this.T=0,hd(this)));if(0>c||this.Y<this.Z)-1E3>c&&(this.L-=c),c=0;this.Xa+=this.ka;this.P+=c;a(b,c)}}};
function sc(a,b){if(!Cb(a))if(a.A.N)a.u(a.toString()+" busy");else{hd(a);a.A.N=!0;a.A.cb=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&kd(a.H,!0),a.H.start(a.L,gd(a)));a.D||a.status("Started");setTimeout(a.Ab,0)}}l.Ta=function(){return 0};l.V=function(a){var b=!1;if(this.A.N){nd(this);vc(this,this.M);this.M=0;this.A.N=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),gd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var jd=30,od=15,$c=["power","reset"];
function pd(a){var b=+a.model||1001;Zc.call(this,a,1E6);this.yb=b;this.Ua=+a.addrReset||0;this.Lb=qd.bind(this);this.w=L.bind(this);this.ya=null;this.qb=[];this.A.complete=!1}ja(pd,Zc);l=pd.prototype;
l.reset=function(){this.status("Model "+this.yb);this.A.N&&this.V();this.Fa=this.Ga=this.b=this.K=0;this.i=this.za=this.Ua;this.I=this.ra=-1;this.F=this.j=0;this.jb=[0,0];this.pa=[0,0];this.ha=[0,0];this.qa=[0,0];this.xa=this.i;this.C=0;this.f=this.bc;this.g=this.mc;this.ya=null;bd(this);this.A.error=!1;Zc.prototype.reset.call(this)};l.Db=function(){return 0};
l.save=function(){var a=new G(this);a.set(0,[this.b,this.K,this.Fa,this.Ga,this.i,this.ra,this.I,this.j,this.C,this.za,this.xa,this.Ua]);a.set(1,[]);a.set(2,[this.T,this.fa,this.A.ca]);a.set(3,rd(this));a.set(4,md(this));return a.data()};
l.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.Fa=b.next().value;this.Ga=b.next().value;this.i=b.next().value;this.ra=b.next().value;this.I=b.next().value;this.j=b.next().value;this.C=b.next().value;this.za=b.next().value;this.xa=b.next().value;this.Ua=b.next().value;b=a[2];this.T=b[0];hd(this,b[1]);this.A.ca=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.qb.length;d++){var e=this.qb[d];
if(e.jc===b[c]){d=e;break a}}d=null}d&&(d.next=this.ya,this.ya=d)}a=a[4];for(b=0;b<this.O.length&&b<a.length;b++)this.O[b][0]=a[b];return!0};function sd(a,b){var c=a.i;a.i=(c+b)%Ub;return c}function I(a,b){a.i=b%Ub}function rd(a){var b=[];for(a=a.ya;a;)b.push(a.jc),a=a.next;return b}l.bc=function(a){var b=this.G;a=this.xa=a;return b.b[(a&b.j)>>>b.i].f(a&16383,a)};l.mc=function(a,b){var c=this.G;a=this.xa=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b};
l.Ta=function(a){this.A.complete=!0;var b=this.D?td(this.D)?1:this.A.cb?-1:0:0,c=a?this.A.cb?0:1:-1;this.A.cb=!1;this.R=this.S=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.V();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.ya||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&ud(this.D,this.i,c)){this.V();break}if(0>c)break}}this.C&=15;this.K&4194304?this.K=this.Fa=this.f(this.b):0<=this.ra?(this.K=this.Ga=this.f(this.ra),this.ra=-1):(this.K=
this.Ga=this.f(this.za=this.i),this.i=(this.i+1)%Ub);this.K&=8388607;this.b=this.K&262143;if(a=this.K>>18&15)this.b=this.b+(this.Fa=this.f(a))&Tb;a=this.K&4194304?-1:this.Ga/$b|0;0<=a&&this.Lb(a)}while(0<this.S);return this.A.complete?this.R-this.S:!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=tb(c),d=new pd(d);ub(d,c)}});function qd(a){vd[a>>4].call(this,a,a&15)}function M(a){this.w(a)}
function wd(){var a=0,b=this.f(this.b),c=b/ac&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*ac+(d<<24)+(b&16777215);a&&(b=(b+a)%E);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/ac&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/ac&63,d=this.I>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%E;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)}
@ -151,7 +151,7 @@ c)&&I(this,this.i+1);this.g(b,W(a,c))},function(a,b){this.g(b,U(this.f(b),this.b
b){a=this.f(b);var c=this.b*y;S(a,c)&&I(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);S(a,c)||I(this,this.i+1);this.g(b,U(a,c))},function(a,b){a=this.f(b);var c=X(this.f(this.b));S(a,c)||I(this,this.i+1);this.g(b,U(a,c))},function(a,b){I(this,this.i+1);this.g(b,U(this.f(b),this.f(this.b)))},function(a,b){I(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);S(a,c)&&I(this,this.i+1);this.g(b,U(a,c))},function(a,b){a=this.f(b);var c=X(this.f(this.b));S(a,c)&&I(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){u.call(this,"ROM",a,128);this.W=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.ea("Unable to load ROM resource (error "+f+": "+a+")"),c.w=null):(mb(c.Wa,a,b),(a=Ia(a,b))?(c.b=a.aa,c.W=a.W):c.w=null);Ce(c)})}}ja(Be,u);
function Be(a){u.call(this,"ROM",a,128);this.W=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.ea("Unable to load ROM resource (error "+f+": "+a+")"),c.w=null):(mb(c.Wa,a,b),(a=Ia(a,b))?(c.b=a.ba,c.W=a.W):c.w=null);Ce(c)})}}ja(Be,u);
Be.prototype.Ha=function(a,b,c,d){this.G=b;this.v=c;this.D=d;Ce(this)};Be.prototype.wa=function(){this.W&&(this.D&&De(this.D,this.id,this.C,this.j,this.W),delete this.W);return!0};Be.prototype.ma=function(){return!0};
function Ce(a){if(!Mb(a)){if(a.w){if(!a.b||!a.G)return;a.j||(a.j=a.b.length);if(a.b.length!=a.j)Ab(a,"ROM size ("+q(a.b.length,8,!0)+") does not match specified size ("+q(a.j,8,!0)+")");else{var b;b=a.C;if(Ic(a.G,b,a.j,Qc)){var c;for(c=0;c<a.b.length;c++)yc(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}}}Nb(a)}}Xa(function(){for(var a=w(document,v,"rom"),b=0;b<a.length;b++){var c=a[b],d=tb(c),d=new Be(d);ub(d,c)}});
@ -159,126 +159,127 @@ function Ee(a){u.call(this,"RAM",a);this.W=this.Ka=null;this.i=+a.addr;this.j=+a
c.W=a.W,null==c.ua&&(c.ua=a.ua),null==c.ta&&(c.ta=a.ta)):c.b=null);Fe(c)})}}ja(Ee,u);Ee.prototype.Ha=function(a,b,c,d){this.G=b;this.v=c;this.D=d;Fe(this)};Ee.prototype.wa=function(a,b){this.W&&(this.D&&De(this.D,this.id,this.i,this.j,this.W),delete this.W);b||this.reset();return!0};Ee.prototype.ma=function(){return!0};
function Fe(a){if(a.G&&(!a.w&&a.j&&(Ic(a.G,a.i,a.j,1)?a.w=!0:a.j=0),!Mb(a))){if(!a.w)r("No RAM allocated");else if(a.b){if(!a.Ka)return;Ge(a,a.Ka,a.ua,a.ta,a.i)?a.status('Loaded image "'+a.C+'"'):a.ea('Error loading image "'+a.C+'"')}a.F=!0;Nb(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+=E);for(var g=Math.trunc(Math.abs(g))%E,h=d;f--&&h<e.size;h++)e.w(g,d,e.B+d);c-=16384;b++;d=0}this.Ka&&Ge(this,this.Ka,this.ua,this.ta,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++)yc(a.G,c+g,b[g]);g=!0}g&&(null==d&&(a.v.V(),f=!1),null!=d&&(a=a.v,a.Ua=d,I(a,d),f?a.A.X?a.A.N||sc(a):a.A.ba=!0:a.D&&a.A.X?a.V()||a.H.A.reset||(dd(a.D),J(a.H,-1)):!1===f&&a.V(),!a.A.N&&a.Ja&&a.Ja.stop()));return g}Xa(function(){for(var a=w(document,v,"ram"),b=0;b<a.length;b++){var c=a[b],d=tb(c),d=new Ee(d);ub(d,c)}});
function He(a){u.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.na(null,a,b))}this.b=this.C=null;this.exports={connect:this.Eb,receiveData:this.ab,receiveStatus:this.dc,setConnection:this.gc}}ja(He,u);m=He.prototype;
m.na=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?ma.sb:ma.Jb:46==c?b=ma.sb:a.ctrlKey&&c>=ma.rb&&c<=ma.Kb&&(b=c-(ma.rb-ma.Gb));b&&(a.preventDefault&&a.preventDefault(),d.ab(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ma.Ib&&(b=ma.Hb);d.ab(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.ab(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.Ha=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Nb(this)};
m.Eb=function(a){if(!this.b){var b=ad(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.Va)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.Wa+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.wa=function(a,b){if(!b)if(this.Eb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0};
m.ma=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new G(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.ab=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.dc=function(){};m.gc=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=tb(c),d=new He(d);ub(d,c)}});function Je(a){u.call(this,"Debugger",a);this.U=+a.base||16;this.ia=32;this.ka=null;this.Y=["{","}"];this.pa=["[","]"];this.C=0;this.R=!1;this.w=-1;this.j=[];this.K={}}ja(Je,u);Je.prototype.nb=function(){return-1};Je.prototype.ob=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.R?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.ia)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.ia;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?e=b%a:b>=2*a&&(e=b%(2*a)));b!=e&&(b=e);return b}
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++)yc(a.G,c+g,b[g]);g=!0}g&&(null==d&&(a.v.V(),f=!1),null!=d&&(a=a.v,a.Ua=d,I(a,d),f?a.A.X?a.A.N||sc(a):a.A.ca=!0:a.D&&a.A.X?a.V()||a.H.A.reset||(dd(a.D),J(a.H,-1)):!1===f&&a.V(),!a.A.N&&a.Ja&&a.Ja.stop()));return g}Xa(function(){for(var a=w(document,v,"ram"),b=0;b<a.length;b++){var c=a[b],d=tb(c),d=new Ee(d);ub(d,c)}});
function He(a){u.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.na(null,a,b))}this.b=this.C=null;this.exports={connect:this.Eb,receiveData:this.ab,receiveStatus:this.dc,setConnection:this.gc}}ja(He,u);l=He.prototype;
l.na=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?ma.sb:ma.Jb:46==c?b=ma.sb:a.ctrlKey&&c>=ma.rb&&c<=ma.Kb&&(b=c-(ma.rb-ma.Gb));b&&(a.preventDefault&&a.preventDefault(),d.ab(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ma.Ib&&(b=ma.Hb);d.ab(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.ab(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};l.Ha=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Nb(this)};
l.Eb=function(a){if(!this.b){var b=ad(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.Va)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.Wa+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};l.wa=function(a,b){if(!b)if(this.Eb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0};
l.ma=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){var a=new G(this);a.set(0,[]);return a.data()};l.restore=function(){return!0};l.ab=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};l.dc=function(){};l.gc=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=tb(c),d=new He(d);ub(d,c)}});function Je(a){u.call(this,"Debugger",a);this.U=+a.base||16;this.ja=32;this.ga=null;this.Y=["{","}"];this.pa=["[","]"];this.C=0;this.R=!1;this.w=-1;this.j=[];this.K={}}ja(Je,u);Je.prototype.nb=function(){return-1};Je.prototype.ob=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.R?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.ja)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.ja;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?e=b%a:b>=2*a&&(e=b%(2*a)));b!=e&&(b=e);return b}
function Ne(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 "&":e=a;32>=e.ia?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 "!":case "|":e=a;32>=e.ia?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=Le(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 Oe(a,b,c,d,e,f){var g,h,k,l=!1,p=0,t=[],C=[],H=a.U;for(a.U=e;c<d;){h=b[c++].trim();k=c<d?b[c++]:"";if(h)p=Pe(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=Oe(a,b,p,c-1,a.U,f);h=c<d?b[c++].trim():"";k=c<d?b[c++]:""}else{if("~"==k||"^-"==k){p=1;continue}if("-"==k){p=-1;continue}l=!0;break}if(void 0===p)if(null==a.ka&&f)a.ka=h,p=0;else{l=!0;f=!f;break}t.push(Y(a,p));if(!k)break;C.length&&Qe[k]<Qe[C[C.length-1]]&&Ne(a,t,C,
1);C.push(k);a.U="^_"==k?10:e;p=0}Ne(a,t,C)&&1==t.length||(l=!0);l?!1===f&&a.u("parse error ("+(h||k)+")"):g=t.pop();a.U=H;return g}function Re(a,b,c,d,e){for(var f;0<=(f=b.indexOf(c));){for(var g=0,h=e,k=f+1;h--;){var l=b[k++];if(l==c)break;l=l.charCodeAt(0);7==d?l&=127:l=l-32&63;g=Y(a,g*Math.pow(2,d)+l,d*e,!0)}b=b.substr(0,f)+K(a,g,-1)+b.substr(k)}return b}
function Se(a,b,c){var d;a.ka=null;b&&("{"!=a.Y[0]&&(b=b.split(a.Y[0]).join("{").split(a.Y[1]).join("}")),b=Re(a,b,'"',7,5),b=Re(a,b,"'",6,6),b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_"),b=b.split(/(\{|}|\|\||&&|\||\^!|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/),d=Oe(a,b,0,b.length,a.U,c),void 0!==d&&!1===c&&Te(a,null,d));return d}
case "&":e=a;32>=e.ja?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 "!":case "|":e=a;32>=e.ja?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=Le(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 Oe(a,b,c,d,e,f){var g,h,k,m=!1,p=0,t=[],C=[],H=a.U;for(a.U=e;c<d;){h=b[c++].trim();k=c<d?b[c++]:"";if(h)p=Pe(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=Oe(a,b,p,c-1,a.U,f);h=c<d?b[c++].trim():"";k=c<d?b[c++]:""}else{if("~"==k||"^-"==k){p=1;continue}if("-"==k){p=-1;continue}m=!0;break}if(void 0===p)if(null==a.ga&&f)a.ga=h,p=0;else{m=!0;f=!f;break}t.push(Y(a,p));if(!k)break;C.length&&Qe[k]<Qe[C[C.length-1]]&&Ne(a,t,C,
1);C.push(k);a.U="^_"==k?10:e;p=0}Ne(a,t,C)&&1==t.length||(m=!0);m?!1===f&&a.u("parse error ("+(h||k)+")"):g=t.pop();a.U=H;return g}function Re(a,b,c,d,e,f){for(var g;0<=(g=b.indexOf(c));){for(var h=0,k=g+1,m=e;m;){var p=b[k++];if(p==c){m=-1;break}p=p.charCodeAt(0);7==d?p&=127:p=p-32&63;h=Y(a,h*Math.pow(2,d)+p,d*e,!0);m--}if(0<=m){!1===f&&a.u("parse error ("+b+")");break}else b=b.substr(0,g)+K(a,h,-1)+b.substr(k)}return b}
function Se(a,b,c){var d=void 0;a.ga=null;if(b){"{"!=a.Y[0]&&(b=b.split(a.Y[0]).join("{").split(a.Y[1]).join("}"));b=Re(a,b,'"',7,5,c);if(!b)return d;b=Re(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_");b=b.split(/(\{|}|\|\||&&|\||\^!|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);d=Oe(a,b,0,b.length,a.U,c);void 0!==d&&!1===c&&Te(a,null,d)}return d}
function Pe(a,b,c,d,e){e=void 0===e?0:e;var f;null!=b?(f=a.nb(b),0<=f?f=a.ob(f):(f=a.K[b],null==f&&(f=1<b.length?a.U:10,0>e&&(b="-"+b,e=0),f=na(b,f))),null!=f?0>e?f=-f:0<e&&(f=Le(a,f,-1)):d||a.u("invalid "+(c?c:"value")+": "+b)):d||a.u("missing "+(c||"value"));return f}
function Te(a,b,c){var d,e=!1;if(void 0!==c){e=!0;if(8==a.U)d=c+". "+n(c,0,!0);else{d=c;var f=4,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++)g&&(g=","+g),g=ua(d&255,8)+g,d>>=8;d=q(c,0,!0)+" "+c+". "+n(c,0,!0)+" "+("0b"+g)}32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.u((null!=b?b+": ":"")+d);return e}function Ue(a){var b=a.K;a.K={};return b}function Ve(a,b){if(b)return Te(a,b,a.K[b]);var c=0;for(b in a.K)Te(a,b,a.K[b]),c++;return 0<c}
function K(a,b,c){c=void 0===c?0:c;switch(a.U){case 2:a=ua(b,0<c?c:0);break;case 8:a=n(b,0<c?(c+2)/3|0:0);break;case 10:a=va(b,0<c?Math.ceil(.3*c):0);break;default:a=q(b,0<c?c+3>>2:0)}0>c?c=a.replace(/^0+([0-9A-F]+)$/i,"$1"):c=a;return c}var Qe={"||":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 We(a){Je.call(this,a);this.Ea=!1;this.Ca=18;this.ia=36;this.Y=["<",">"];this.pa=[];this.Da=Z();this.L=Z(0);this.oa=Z(0);this.fa=Z(0);this.F=[];this.b=this.M=this.I=[];Xe(this);this.S=this.ja=0;this.i=[];this.za=void 0;Ye(this);this.D=this;this.xa={};this.Z=this.zb=0;this.T=null;this.P=[];Ze(this,a.messages);this.ra=a.commands;this.O=0;this.Ja=this.Aa=null;this.C=this.Ga=this.Fa=this.ha=this.ya=0;this.qa=this.ga=this.da=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return fd(b,
a)}):void 0===global[v]&&(global[v]=function(a){return fd(b,a)})}ja(We,Je);function $e(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,Ya:void 0===b?!1:b,la:!1,U:c}}function af(a,b,c,d){a.B=b;a.Ya=c||!1;a.la=!1;a.U=d}function bf(a){return[a.B,a.Ya,a.la,a.U,a.bb]}function cf(a,b){var c=Z(b[0],b[1],b[2]);c.la=b[3];b[4]&&(c.ub=Ke(a,c.bb=b[4]));return c}m=We.prototype;
m.Ha=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.ga=a.j;this.Ca=b.F;(b=ad(a,"messages"))&&Ze(this,b);if(a=ad(a,"commands"))this.ra=a;df(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=$e(ef(d,c,d.oa));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=Lc[c],p&&d.u(q(p.id,8)+" %"+
q(e<<d.G.i,8)+" %"+q(p.B,8)+" "+q(p.Ra,4,!0)+" "+q(p.size,4,!0)+" "+l),c!=Pc&&(c=-1),l=0);a+=16384;e++}}});Nb(this)};
m.na=function(a,b,c){var d=this;switch(b){case "debugInput":return this.da=this.J[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",fd(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.da){var a=d.da.value;
d.da.value="";fd(d,a,!0);return!0}return!1}),!0;case "step":return this.J[b]=c,Va(c,function(a){var b=!1;Ob(d,!0)||(Pb(d,!0),b=tc(d,a?1:0,null),Pb(d,!1));return b}),!0}return!1};function ed(a){if(a.da){var b=0,c=0;window&&(b=window.scrollX,c=window.scrollY);a.da.focus();window&&window.scrollTo(b,c)}}m.Ia=function(a,b){var c=-1,d=$e(a);-1!==d&&(c=zc(this.G,d),b&&null!=a.B&&(a.B+=b||1));return c};m.tb=function(a,b,c){var d=$e(a);-1!==d&&(yc(this.G,d,b),c&&null!=a.B&&(a.B+=c||1),J(this.H,-1))};
function ef(a,b,c){var d,e;c||(c=Z());var f=c.B;if(void 0!==b){a:{var g,f=a.Y[0],h=a.Y[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=Se(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.pa.length)for(f=a.pa[0],h=a.pa[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 We(a){Je.call(this,a);this.Ea=!1;this.Ca=18;this.ja=36;this.Y=["<",">"];this.pa=[];this.Da=Z();this.L=Z(0);this.ia=Z(0);this.fa=Z(0);this.F=[];this.b=this.M=this.I=[];Xe(this);this.S=this.ka=0;this.i=[];this.za=void 0;Ye(this);this.D=this;this.xa={};this.aa=this.zb=0;this.T=null;this.P=[];Ze(this,a.messages);this.ra=a.commands;this.O=0;this.Ja=this.Aa=null;this.C=this.Ga=this.Fa=this.oa=this.ya=0;this.qa=this.ha=this.Z=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return fd(b,
a)}):void 0===global[v]&&(global[v]=function(a){return fd(b,a)})}ja(We,Je);function $e(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,Ya:void 0===b?!1:b,la:!1,U:c}}function af(a,b,c,d){a.B=b;a.Ya=c||!1;a.la=!1;a.U=d}function bf(a){return[a.B,a.Ya,a.la,a.U,a.bb]}function cf(a,b){var c=Z(b[0],b[1],b[2]);c.la=b[3];b[4]&&(c.ub=Ke(a,c.bb=b[4]));return c}l=We.prototype;
l.Ha=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.ha=a.j;this.Ca=b.F;(b=ad(a,"messages"))&&Ze(this,b);if(a=ad(a,"commands"))this.ra=a;df(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=$e(ef(d,c,d.ia));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,m=0;k--;){var p=b[e];p.type==c?m++||d.u("..."):(c=p.type,m=Lc[c],p&&d.u(q(p.id,8)+" %"+
q(e<<d.G.i,8)+" %"+q(p.B,8)+" "+q(p.Ra,4,!0)+" "+q(p.size,4,!0)+" "+m),c!=Pc&&(c=-1),m=0);a+=16384;e++}}});Nb(this)};
l.na=function(a,b,c){var d=this;switch(b){case "debugInput":return this.Z=this.J[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",fd(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.Z){var a=d.Z.value;d.Z.value=
"";fd(d,a,!0);return!0}return!1}),!0;case "step":return this.J[b]=c,Va(c,function(a){var b=!1;Ob(d,!0)||(Pb(d,!0),b=tc(d,a?1:0,null),Pb(d,!1));return b}),!0}return!1};function ed(a){if(a.Z){var b=0,c=0;window&&(b=window.scrollX,c=window.scrollY);a.Z.focus();window&&window.scrollTo(b,c)}}l.Ia=function(a,b){var c=-1,d=$e(a);-1!==d&&(c=zc(this.G,d),b&&null!=a.B&&(a.B+=b||1));return c};l.tb=function(a,b,c){var d=$e(a);-1!==d&&(yc(this.G,d,b),c&&null!=a.B&&(a.B+=c||1),J(this.H,-1))};
function ef(a,b,c){var d,e;c||(c=Z());var f=c.B;if(void 0!==b){a:{var g,f=a.Y[0],h=a.Y[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 m=Se(a,g[1]);if(void 0===m){b=void 0;break a}b=b.replace(f+g[1]+h,null!=m?K(a,m):"undefined")}if(a.pa.length)for(f=a.pa[0],h=a.pa[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,t;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].W[f],null!=g){t=g.o;break}null!=t&&(p=Z(t));if(p)return p;0<=b.indexOf("0x")?e=16:0<=b.indexOf("0o")?e=8:0<=b.indexOf(".")&&(e=10);f=Se(a,b)}null!=f&&(f=ff(f,a.Ca),af(c,f,d,e));return c}function gf(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.ub=Ke(a,b.bb=c[2]))}
function ff(a,b){0>a&&a>=-A&&(a+=E);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function hf(a){return n(a/Ub,6)+" "+n(a%Ub,6)}
function Ze(a,b){a.D=a;a.Z=a.zb=536870916;a.T=null;a.P=[];b=Ke(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in bc){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.Z|=bc[c],a.u(c+" messages enabled"))}}function df(a,b){for(var c in bc)if(16==bc[c]){a.xa[c]=b;break}}m.nb=function(a){return jf.indexOf(a.toUpperCase())};
m.ob=function(a){var b,c=this.v;switch(a){case kf:b=c.i;break;case lf:b=c.K;break;case mf:b=c.b;break;case nf:b=c.j&65536?1:0;break;case of:b=c.j&32768?1:0;break;case pf:b=c.j&131072?1:0;break;case qf:b=c.j&32?1:0;break;case rf:b=c.j&262144?1:0}return b};
m.message=function(a,b){b&&(a+=" @"+K(this,Z(this.v.za).B));if(!this.T||a!=this.T)if(this.T=a,this.Z&1073741824)this.P.push(a);else{var c;if(this.Z&-2147483648&&this.v&&(c=this.v.A.N)||Ob(this,!0))this.V(),c&&(a+=" (cpu halted)");this.u(a);this.v&&(a=this.v,nd(a),a.ga=0,a.H&&J(a.H,void 0))}};
function Ze(a,b){a.D=a;a.aa=a.zb=536870916;a.T=null;a.P=[];b=Ke(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in bc){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.aa|=bc[c],a.u(c+" messages enabled"))}}function df(a,b){for(var c in bc)if(16==bc[c]){a.xa[c]=b;break}}l.nb=function(a){return jf.indexOf(a.toUpperCase())};
l.ob=function(a){var b,c=this.v;switch(a){case kf:b=c.i;break;case lf:b=c.K;break;case mf:b=c.b;break;case nf:b=c.j&65536?1:0;break;case of:b=c.j&32768?1:0;break;case pf:b=c.j&131072?1:0;break;case qf:b=c.j&32?1:0;break;case rf:b=c.j&262144?1:0}return b};
l.message=function(a,b){b&&(a+=" @"+K(this,Z(this.v.za).B));if(!this.T||a!=this.T)if(this.T=a,this.aa&1073741824)this.P.push(a);else{var c;if(this.aa&-2147483648&&this.v&&(c=this.v.A.N)||Ob(this,!0))this.V(),c&&(a+=" (cpu halted)");this.u(a);this.v&&(a=this.v,nd(a),a.ga=0,a.H&&J(a.H,void 0))}};
function Ye(a){var b;if(!td(a))a.i&&a.i.length&&a.u("instruction history buffer freed"),a.S=0,a.i=[];else if(!a.i||!a.i.length){a.i=Array(sf);for(b=0;b<a.i.length;b++)a.i[b]=Z();a.S=0;a.u("instruction history buffer allocated")}}function tf(a,b,c){if(!uf(a,c))return!1;sc(a.v,b);return!0}
function tc(a,b,c,d){if(!uf(a))return!1;var e="";null===c&&(e=(c=!a.Aa||"tr"==a.Aa)?"tr":"t");a.C=0;b||td(a)&&ud(a,a.v.i,0);try{b=ld(a.v,b);var f=a.v.Ta(b);0<f&&(uc(a.v,f),a.C+=f,vc(a.v,f,!0),wc(a.v,f),a.ha++)}catch(g){"number"!=typeof g&&(a.C=0,Ab(a.v,g.stack||g.message))}!1!==d&&(a.ga&&a.ga.stop(),J(a.H,-1));dd(a,c||!1,e);return 0<a.C}m.V=function(a){this.v&&this.v.V(a)};function dd(a,b,c){b=void 0===b?!0:b;a.Ea&&(c&&a.u(vf+c),af(a.L,a.v.i),b&&1!=a.O?wf(a):xf(a))}
function uf(a,b){var c;(c=!a.v||!Mb(a.v))||(c=a.v,c.A.X?c=!0:(c.u(c.toString()+" not powered"),c=!1),c=!c);return c||a.v.A.N?(b||a.u("cpu busy or unavailable, command ignored"),!1):!Cb(a.v)}m.wa=function(a,b){return!b&&(this.reset(!0),a)?this.restore(a):!0};m.ma=function(a,b){b&&this.u(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Ye(this);this.ha=0;this.T=null;this.C=0;af(this.L,this.v.i);this.A.N=!1;yf(this);a||dd(this)};
m.save=function(){var a=new G(this);a.set(0,bf(this.L));a.set(1,bf(this.oa));a.set(2,bf(this.fa));a.set(3,[this.j,this.R,this.Z]);a.set(4,this.F);return a.data()};m.restore=function(a){var b=0;void 0!==a[3]&&(this.L=cf(this,a[b++]),this.oa=cf(this,a[b++]),this.fa=cf(this,a[b++]),this.j=a[b][0],"string"==typeof this.j&&(this.j=[this.j]),this.R=a[b][1],this.Z|=a[b][2]);a[4]&&(this.F=a[4]);return!0};m.start=function(a,b){this.O||this.u("running");this.A.N=!0;this.Fa=a;this.Ga=b};
m.stop=function(a,b){if(this.A.N){this.A.N=!1;this.C=b-this.Ga;if(!this.O){b="stopped";if(this.C){a-=this.Fa;var c=0<a?Math.round(1E3*this.C/a):0;b+=" (";td(this)&&(b+=this.ha+" instructions, ",this.ha=0);b+=this.C+" cycles, "+a+" ms, "+c+" hz)"}else Qb(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.u(b)}dd(this,!0);ed(this);yf(this,this.v.i);this.T=null}};function td(a){return 1<a.b.length||!!a.ja}
function ud(a,b,c){var d=-1;c||(d=a.v.f(b),2756==d>>23&&a.v.za==b&&(b=sd(a.v,1)));if(0<c&&(a.ja&&!--a.ja||Yc(a,b,1,a.b)))return!0;0<=c&&a.i.length&&(a.ha++,0>d&&(d=a.v.f(b)),0<=d&&(af(a.i[a.S],b),++a.S==a.i.length&&(a.S=0)));return!1}
function zf(a,b,c,d){var e=Z(b.B),f=a.Ia(b,1),g,h,k,l=0,p=f/Yb|0,t;for(t in Af)if(g=Af[t][p&t]){h=+t;p>>=6;switch(h){case 32512:k=Bf;l=p&3;break;case 32256:k=Cf;l=p&7;break;case 29248:k=Df,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Ef&&(k="B");k=Ff[g||0]+k;if(g){if(28700==h)h=f/Zb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p<Gf.length;p++)if(g==Gf[p][0]&&(t=Gf[p][h])){k=Ff[t];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,
function tc(a,b,c,d){if(!uf(a))return!1;var e="";null===c&&(e=(c=!a.Aa||"tr"==a.Aa)?"tr":"t");a.C=0;b||td(a)&&ud(a,a.v.i,0);try{b=ld(a.v,b);var f=a.v.Ta(b);0<f&&(uc(a.v,f),a.C+=f,vc(a.v,f,!0),wc(a.v,f),a.oa++)}catch(g){"number"!=typeof g&&(a.C=0,Ab(a.v,g.stack||g.message))}!1!==d&&(a.ha&&a.ha.stop(),J(a.H,-1));dd(a,c||!1,e);return 0<a.C}l.V=function(a){this.v&&this.v.V(a)};function dd(a,b,c){b=void 0===b?!0:b;a.Ea&&(c&&a.u(vf+c),af(a.L,a.v.i),b&&1!=a.O?wf(a):xf(a))}
function uf(a,b){var c;(c=!a.v||!Mb(a.v))||(c=a.v,c.A.X?c=!0:(c.u(c.toString()+" not powered"),c=!1),c=!c);return c||a.v.A.N?(b||a.u("cpu busy or unavailable, command ignored"),!1):!Cb(a.v)}l.wa=function(a,b){return!b&&(this.reset(!0),a)?this.restore(a):!0};l.ma=function(a,b){b&&this.u(a?"suspending":"shutting down");return a?this.save():!0};l.reset=function(a){Ye(this);this.oa=0;this.T=null;this.C=0;af(this.L,this.v.i);this.A.N=!1;yf(this);a||dd(this)};
l.save=function(){var a=new G(this);a.set(0,bf(this.L));a.set(1,bf(this.ia));a.set(2,bf(this.fa));a.set(3,[this.j,this.R,this.aa]);a.set(4,this.F);return a.data()};l.restore=function(a){var b=0;void 0!==a[3]&&(this.L=cf(this,a[b++]),this.ia=cf(this,a[b++]),this.fa=cf(this,a[b++]),this.j=a[b][0],"string"==typeof this.j&&(this.j=[this.j]),this.R=a[b][1],this.aa|=a[b][2]);a[4]&&(this.F=a[4]);return!0};l.start=function(a,b){this.O||this.u("running");this.A.N=!0;this.Fa=a;this.Ga=b};
l.stop=function(a,b){if(this.A.N){this.A.N=!1;this.C=b-this.Ga;if(!this.O){b="stopped";if(this.C){a-=this.Fa;var c=0<a?Math.round(1E3*this.C/a):0;b+=" (";td(this)&&(b+=this.oa+" instructions, ",this.oa=0);b+=this.C+" cycles, "+a+" ms, "+c+" hz)"}else Qb(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.u(b)}dd(this,!0);ed(this);yf(this,this.v.i);this.T=null}};function td(a){return 1<a.b.length||!!a.ka}
function ud(a,b,c){var d=-1;c||(d=a.v.f(b),2756==d>>23&&a.v.za==b&&(b=sd(a.v,1)));if(0<c&&(a.ka&&!--a.ka||Yc(a,b,1,a.b)))return!0;0<=c&&a.i.length&&(a.oa++,0>d&&(d=a.v.f(b)),0<=d&&(af(a.i[a.S],b),++a.S==a.i.length&&(a.S=0)));return!1}
function zf(a,b,c,d){var e=Z(b.B),f=a.Ia(b,1),g,h,k,m=0,p=f/Yb|0,t;for(t in Af)if(g=Af[t][p&t]){h=+t;p>>=6;switch(h){case 32512:k=Bf;m=p&3;break;case 32256:k=Cf;m=p&7;break;case 29248:k=Df,m=(p&48)>>2|(p&6)>>1}break}k=k&&k[m]||"";"S"==k&&g>Ef&&(k="B");k=Ff[g||0]+k;if(g){if(28700==h)h=f/Zb&127,m=K(a,h,-1);else for(h=f>>23&15,m=K(a,h,-1),p=0;m&&p<Gf.length;p++)if(g==Gf[p][0]&&(t=Gf[p][h])){k=Ff[t];m="";break}k=Ba(k,8)+(m?m+",":"");f&4194304&&(k+="@");k+=K(a,f&262143,-1);(f=f>>18&15)&&(k+="("+K(a,f,
-1)+")")}else k=Ba(k,8)+hf(f);f=k;g="";h=K(a,e.B)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ia(e,1),g+=" "+hf(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.Oa?h+("cycles="+gd(a.v).toString()+" cs="+q(a.v.Ca)):h+(null!=d?"="+d.toString():""));return h}
function Hf(a,b,c,d,e){var f=-1,g,h;a.ka=null;if(b){for(var k=b.toUpperCase(),l=0;l<Gf.length;l++)for(var p in Gf[l])if(+p&&(h=Gf[l][p],k==Ff[h])){k=Ff[Gf[l][0]];c&&(c=K(a,+p)+","+c);break}for(var t in Af){g=+t;p=Af[t];switch(g){case 32512:l=Bf;break;case 32256:l=Cf;break;case 29248:l=Df;break;default:l=[""]}for(var C in p){h=p[C];for(var H=0;H<l.length;H++){var R=l[H];"S"==R&&h>Ef&&(R="B");if(k==Ff[h]+R){f=29248!=g?H:(H&3)<<1|(H&12)<<2;f=(C|f<<6)*Yb;break}}if(0<=f)break}if(0<=f)break}}else c&&(f=
function Hf(a,b,c,d,e){var f=-1,g,h;a.ga=null;if(b){for(var k=b.toUpperCase(),m=0;m<Gf.length;m++)for(var p in Gf[m])if(+p&&(h=Gf[m][p],k==Ff[h])){k=Ff[Gf[m][0]];c&&(c=K(a,+p)+","+c);break}for(var t in Af){g=+t;p=Af[t];switch(g){case 32512:m=Bf;break;case 32256:m=Cf;break;case 29248:m=Df;break;default:m=[""]}for(var C in p){h=p[C];for(var H=0;H<m.length;H++){var R=m[H];"S"==R&&h>Ef&&(R="B");if(k==Ff[h]+R){f=29248!=g?H:(H&3)<<1|(H&12)<<2;f=(C|f<<6)*Yb;break}}if(0<=f)break}if(0<=f)break}}else c&&(f=
g=0);if(0<=f&&c)for(k=c.split(","),t=0;t<k.length;t++)if(h=k[t].trim()){if(1<t){a.u("too many operands: "+c);f=-1;break}C=h.match(/(@?)([^(]*)\(?([^)]*)\)?/);if(!C){a.u("unknown operand: "+h);f=-1;break}h=C[2];if(t||1==k.length)h=h?h.replace(/(^|[^0-9])\./g,"$1"+K(a,d)):"0";h=Se(a,h,e);if(void 0==h){f=-1;break}if(!t&&1<k.length)if(28700==g){if(0>h||127<h)h&=127;f+=h*Zb}else{if(0>h||15<h)h&=15;f+=h<<23}else{if(0>h||262143<h)h&=Tb;f+=h;if(h=C[3]){h=Se(a,h,e);if(void 0==h){f=-1;break}if(0>h||15<h)h&=
15;f+=h<<18}C[1]&&(f+=4194304)}}0>f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Xe(a){var b,c;a.b=["bp"];if(a.M)for(b=1;b<a.M.length;b++){c=a.M[b];c=$e(c);var d=a.G;Xc(d.b[c>>>d.i],!1)}a.M=["br"];if(a.I)for(b=1;b<a.I.length;b++)c=a.I[b],c=$e(c),d=a.G,Xc(d.b[c>>>d.i],!0);a.I=["bw"];a.ya=0;a.ja=0}
m.Ma=function(a,b,c){var d=!0;c||If(this,a,b,!1,!0);if(a!=this.b){var e=$e(b);if(-1===e)this.u("invalid address: "+K(this,b.B)),d=!1;else{var f=this.G;f.b[e>>>f.i].Ma(e&16383,a==this.I)}}d&&(a.push(b),c?b.la=!0:(Jf(this,a,a.length-1,"set"),Ye(this)));return d};function If(a,b,c,d,e){var f=!1;c=$e(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==$e(h)&&(!d||h.la)){f=!0;h.la||e||Jf(a,b,g,"cleared");b.splice(g,1);b!=a.b&&(d=a.G,Xc(d.b[c>>>d.i],b==a.I));h.la||Ye(a);break}}return f}
15;f+=h<<18}C[1]&&(f+=4194304)}}0>f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Xe(a){var b,c;a.b=["bp"];if(a.M)for(b=1;b<a.M.length;b++){c=a.M[b];c=$e(c);var d=a.G;Xc(d.b[c>>>d.i],!1)}a.M=["br"];if(a.I)for(b=1;b<a.I.length;b++)c=a.I[b],c=$e(c),d=a.G,Xc(d.b[c>>>d.i],!0);a.I=["bw"];a.ya=0;a.ka=0}
l.Ma=function(a,b,c){var d=!0;c||If(this,a,b,!1,!0);if(a!=this.b){var e=$e(b);if(-1===e)this.u("invalid address: "+K(this,b.B)),d=!1;else{var f=this.G;f.b[e>>>f.i].Ma(e&16383,a==this.I)}}d&&(a.push(b),c?b.la=!0:(Jf(this,a,a.length-1,"set"),Ye(this)));return d};function If(a,b,c,d,e){var f=!1;c=$e(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==$e(h)&&(!d||h.la)){f=!0;h.la||e||Jf(a,b,g,"cleared");b.splice(g,1);b!=a.b&&(d=a.G,Xc(d.b[c>>>d.i],b==a.I));h.la||Ye(a);break}}return f}
function jg(a,b){for(var c=1;c<b.length;c++)Jf(a,b,c);return b.length-1}function Jf(a,b,c,d){c=b[c];a.u(b[0]+" "+K(a,c.B)+(d?" "+d:c.bb?' "'+c.bb+'"':""))}function yf(a,b){if(void 0!==b)Yc(a,b,1,a.b,!0),a.O=0;else for(b=1;b<a.b.length;b++){var c=a.b[b];if(c.la){if(!If(a,a.b,c,!0))break;b=0}}}
function Yc(a,b,c,d,e){var f=!1;if(!a.ya++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.la)for(var k=$e(h)&(d==a.b?65535:-1),l=0;l<c;l++)if(b+l==k){var p,f=!0;h.la&&(If(a,d,h,!0),e=!0);if(p=h.ub){for(var f=!1,t=0;t<p.length;t++)if(!lg(a,p[t],!0)){if(p[t].indexOf("if")){f=!0;break}for(var C=t+1;C<p.length&&p[C].indexOf("else");C++)t++;if(C==p.length){f=!0;break}}a.v.A.N||(f=!0)}if(f){e||Jf(a,d,g,"hit");break}}}a.ya--;return f}
function mg(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=n(d,2);af(e.Da,d);f+="="+K(e,e.Ia(e.Da),36)+" ";c+=f}if(b){b="";for(d=0;d<jf.length;d++)(e=jf[d]||"")&&(e+="="+K(a,a.ob(d),d>=nf?1:d==lf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Bb=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],t=Fa(p,k,a.Bb);0>t&&p.splice(-(t+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.F.push({sd:b,B:c,Qb:d,W:e,wb:f})}function ng(a,b,c){var d=[],e=$e(b)>>>0;for(b=0;b<a.F.length;b++){var f=a.F[b],g=f.B>>>0,h=f.Qb;if(e>=g&&e<g+h){e=Fa(f.wb,[e-g],a.Bb);0<=e?og(a,b,e,d):c&&(e=~e,og(a,b,e-1,d),og(a,b,e,d));break}}return d}
function Yc(a,b,c,d,e){var f=!1;if(!a.ya++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.la)for(var k=$e(h)&(d==a.b?65535:-1),m=0;m<c;m++)if(b+m==k){var p,f=!0;h.la&&(If(a,d,h,!0),e=!0);if(p=h.ub){for(var f=!1,t=0;t<p.length;t++)if(!lg(a,p[t],!0)){if(p[t].indexOf("if")){f=!0;break}for(var C=t+1;C<p.length&&p[C].indexOf("else");C++)t++;if(C==p.length){f=!0;break}}a.v.A.N||(f=!0)}if(f){e||Jf(a,d,g,"hit");break}}}a.ya--;return f}
function mg(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=n(d,2);af(e.Da,d);f+="="+K(e,e.Ia(e.Da),36)+" ";c+=f}if(b){b="";for(d=0;d<jf.length;d++)(e=jf[d]||"")&&(e+="="+K(a,a.ob(d),d>=nf?1:d==lf?23:18)+" "),b+=e;c+="\n"+b}return c}l.Bb=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,m=h.a;if(void 0!==k){var p=f,k=[k>>>0,g],t=Fa(p,k,a.Bb);0>t&&p.splice(-(t+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.F.push({sd:b,B:c,Qb:d,W:e,wb:f})}function ng(a,b,c){var d=[],e=$e(b)>>>0;for(b=0;b<a.F.length;b++){var f=a.F[b],g=f.B>>>0,h=f.Qb;if(e>=g&&e<g+h){e=Fa(f.wb,[e-g],a.Bb);0<=e?og(a,b,e,d):c&&(e=~e,og(a,b,e-1,d),og(a,b,e,d));break}}return d}
function pg(a,b,c){var d=0,e=a.G;b.forEach(function(a,b){yc(e,b,a);null==c&&(c=b);d++});d?(a.u(d+" words loaded at "+K(a,c)+"-"+K(a,c+d-1)),I(a.v,c||0),dd(a)):a.u("no data")}function og(a,b,c,d){var e={},f=a.F[b].wb,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.F[b].W[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}
function qg(a,b){var c=ef(a,b[1],a.fa);if(c){var d=b[2];if(void 0==d)a.u("begin assemble at "+K(a,c.B)),a.R=!0,J(a.H);else{var e=b[0].substr(1),f=d.match(/^(['"]?)((\/|http:).*)\1$/);if(f)if(a.qa)a.u("assembly already in progress");else{var g=f[2],h=c.B;a.qa=new rg(g,h,e,a,function(b,c){if(b)a.u("error ("+b+") processing "+(c||g));else try{pg(a,a.qa.J,h)}catch(p){a.u(p.message)}a.qa=null})}else b.shift(),b.shift(),b.shift(),b=Hf(a,d,b.join(""),c.B||0),0<=b&&(a.tb(c,b),a.u(zf(a,c)))}}}
function sg(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ve(a)||a.u("no variables"),!0;if(!c[2])return Ve(a,c[1]);if(!c[3])return delete a.K[c[1]],!0;b=Se(a,c[3]);return void 0!==b?(a.K[c[1]]=b,!0):!1}a.u("invalid assignment:"+b);return!1}
function tg(a,b,c){var d=null;if(b=ef(a,b)){var e=ng(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.B-e[1])&&(g=" + "+q(f,4,!0)),f=e[0]+" ("+K(a,e[1])+")"+g,c&&a.u(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.B)&&(g=" - "+q(f,4,!0)),f=e[4]+" ("+K(a,e[5])+")"+g,c&&a.u(f),d||(d=f))}else c&&a.u("no symbols")}return d}
function wf(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=Se(a,b);if(void 0===g)return;b=a.nb(f);if(0>b){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case kf:I(h,
g);af(a.L,h.i);break;case nf:f=65536;break;case of:f=32768;break;case pf:f=131072;break;case qf:f=32;break;case rf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);J(a.H);a.u("updated registers:")}}a.u(mg(a,e));c&&(af(a.L,d.i),xf(a,K(a,a.L.B)))}}function ug(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1<c[2].length?a.u(c[2]):Te(a,null,c[2].charCodeAt(0)):Se(a,b,!1)}
function vg(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=Pe(a,c,null,!0)||1;var e=0;"tc"==b&&(e=c,c=1);a.Aa=b;Ua(c,function(){return Pb(a,!0)&&tc(a,e,d,!1)},function(){a.ga&&a.ga.stop();J(a.H,-1);Pb(a,!1)})}}
function xf(a,b,c,d){if(b=ef(a,b,a.L)){void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=Pe(a,c.substr(1)),null!=c&&(d=c);else{d=ef(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=Ob(a,!1)||a.O?a.C:null,g=null!=f?"cycles":null,h=ng(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.fa;l=b;h.B=l.B;h.Ya=l.Ya;h.la=l.la;h.U=l.U;a.u(zf(a,b,g,f));e-=b.B-k;c++}}}
function lg(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(vf+b):(a.R&&(a.u("ended assemble at "+K(a,a.fa.B)),a.R=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.T=null;if(Mb(a)&&0<b.length){a.R&&(b="a "+K(a,a.fa.B)+" "+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":qg(a,g);
break;case "b":a:{var t=g[0],C=g[1],H=b;if("?"==C)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 R=t.charAt(1);if("l"==R){var bb;bb=0+jg(a,a.b);bb+=jg(a,a.M);(bb+=jg(a,a.I))||a.u("no breakpoints")}else if("n"==R){var Bb=+C||0;C&&(a.ja=Bb);a.u("break after "+Bb+" instruction(s)")}else if(void 0===
C)a.u("missing breakpoint address");else{var D=Z();if("*"!=C&&(D=ef(a,C,a.L),!D))break a;"c"==R?null==D.B?(Xe(a),a.u("all breakpoints cleared")):If(a,a.b,D)||If(a,a.M,D)||If(a,a.I,D)||a.u("breakpoint missing: "+K(a,D.B)):null!=D.B&&(gf(a,D,H),"p"==R?a.Ma(a.b,D):"r"==R?a.Ma(a.M,D):"w"==R?a.Ma(a.I,D):a.u("unknown breakpoint command: "+R))}}}break;case "c":a.va&&(a.va.value="");break;case "d":a:{var cb,db=g[0],oa=g[1],Ca=g[2],uh=g[3];if("?"==oa){var eb="";for(cb in bc)a.xa[cb]&&(eb&&(eb+=","),eb+=cb);
eb+=",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");eb.length&&a.u("dump extension commands:\n\t"+eb)}else if("state"==oa){var Jd=wg(a.H,!0);"console"==Ca?console.log(Jd):(a.va&&(a.va.value=""),Jd&&a.u(Jd))}else if("symbols"==oa)for(var Kd=0;Kd<a.F.length;Kd++){var Ld=a.F[Kd],fb;for(fb in Ld.W)if("."!=fb.charAt(0)){var Kf=Ld.W[fb].o;
if(void 0!==Kf){var Lf=Ld.W[fb].l;Lf&&(fb=Lf);a.u(K(a,Kf)+" "+fb)}}}else{if("d"==db){for(cb in bc)if(g[1]==cb){var Mf=a.xa[cb];Mf?(g.shift(),g.shift(),Mf(g)):a.u("no dump registered for "+oa);break a}oa||(db=a.Ja||"dw")}else a.Ja=db;if("dh"==db){var Nf=oa,Of=Ca,Pf="",Qf=0,ka=a.S,pa=a.i;if(pa.length){var fa=+Nf||a.za,Db=+Of||10;isNaN(fa)?fa=Db:Pf="more ";fa>pa.length&&(a.u("note: only "+pa.length+" available"),fa=pa.length);ka-=fa;0>ka&&(null==pa[pa.length-1].B?(fa=ka+fa,ka=0):ka+=pa.length);var Md=
[];"call"==Of&&(Db=1E5,Md=["CALL"]);for(void 0!==Nf&&a.u(fa+" instructions earlier:");0<Db&&ka!=a.S;){var Rf=pa[ka++];if(null==Rf.B)break;var Eb=Z(Rf.B),vh=fa--,Sf=zf(a,Eb,"history",vh);(!Md.length||0<=Sf.indexOf(Md[0]))&&a.u(Sf);Eb.lb&&(ka+=Eb.lb,Db-=Eb.lb,fa-=Eb.lb);ka>=pa.length&&(ka=0);a.za=fa;Qf++;Db--}}Qf||(a.u("no "+Pf+"history available"),a.za=void 0)}else{var gb=ef(a,oa,a.oa);if(gb){var Ka=0,Tf="ds"==db;if(Ca){if("l"==Ca.charAt(0))Ca=Ca.substr(1)||uh,Ka=Pe(a,Ca);else{var Uf=ef(a,Ca);Uf&&
(Ka=Uf.B-gb.B)}0>Ka&&(Ka=0);65536<Ka&&(Ka=65536)}var wh=a.U;gb.U&&(a.U=gb.U);for(var Vf="db"==db?1:2,Nd=Ka||32,Od=1==Vf?1:4,xh=(Nd+Od-1)/Od|0||1,La="";xh--&&0<Nd;){for(var qa="",Pd="",oa=K(a,gb.B),Wf=Od;0<Wf--&&0<Nd--;){var Qd=a.Ia(gb,1);Tf?(qa&&(qa+=","),qa+=Qd):(qa+=hf(Qd),qa+=" ");for(var Ec=29,yh=0;1==Vf&&0<=Ec;yh++)var Fb=Qd/Math.pow(2,Ec)%Math.pow(2,7),qa=qa+K(a,Fb,7),Fb=Fb+0,Pd=Pd+(32>Fb?".":String.fromCharCode(Fb)),Ec=Ec-7}La&&(La+="\n");La=Tf?La+(qa+","):La+(oa+": "+qa+(0>Wf?" "+Pd:""))}La&&
a.u(La);a.U=wh}}}}break;case "e":if("else"==g[0])break;var Xf,Yf,Zf=g[0],Rd=g[1];"e"==Zf||"ew"==Zf?(Xf=a.Ia,Yf=a.tb):Rd=null;if(null==Rd)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else{var Fc=ef(a,Rd,a.oa);if(Fc)for(var Sd=2;Sd<g.length;Sd++){var Gb=Se(a,g[Sd]);if(void 0===Gb)break;Gb=ff(Gb);a.u("changing "+K(a,Fc.B)+" from "+hf(Xf.call(a,Fc))+" to "+hf(Gb));Yf.call(a,Fc,Gb,1)}}break;case "g":a:{var $f=g[1],zh=b;if(void 0!==$f){var Td=ef(a,$f);if(!Td)break a;gf(a,
Td,zh);a.Ma(a.b,Td,!0)}tf(a,!0,c)}break;case "h":a.A.N?(c||a.u("halting"),a.V()):Ob(a,!0)||c||a.u("already halted");break;case "i":if("if"==g[0]){var Ud;var Hb=b.substr(2),Hb=Ea(Hb);Se(a,Hb)?(c||a.u("true: "+Hb),Ud=!0):(c||a.u("false: "+Hb),Ud=!1);Ud||(d=!1);break}f=!0;break;case "k":var Ah=g[0];if("?"==g[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");else{var Vd=0,Wd=Z(),Ib=Z();for(a.u("stack trace for "+K(a,Ib.B));10>Vd;){for(var Ma=null,Bh=
256;65536>Ib.B>>>0;){Wd.B=a.Ia(Ib,2);if(null==Ib.B||!Bh--)break;if(!(Wd.B&1)){for(var Ch=a,Gc=Wd,ag=null,Jb=Gc.B,bg=Jb,Xd=1;6>=Xd&&Jb;Xd++){if(2<Xd){Gc.B=Jb;var Hc=zf(Ch,Gc);if(0<=Hc.indexOf("JSR")){var cg=Hc.indexOf(" ");if(Jb+(Hc.indexOf(" ",cg+1)-cg-1)/2==bg){ag=Hc;break}}}Jb-=2}Gc.B=bg;if(Ma=ag)break}}if(!Ma||null==Ma)break;var dg=null;if("ks"==Ah){var eg=Ma.match(/[0-9A-F]+$/);eg&&(dg=tg(a,eg[0]))}Ma=Ba(Ma,50)+" ;"+(dg||"stack="+K(a,Ib.B));a.u(Ma);Vd++}Vd||a.u("no return addresses found")}break;
case "l":if("ln"==g[0]){tg(a,g[1],!0);break}f=!0;break;case "m":a:{var ra,sa=null,N=g[1];"?"==N&&(N=void 0);if(void 0!==N){var Da=0;if("all"==N)Da=1879046143,N=null;else if("on"==N)sa=!0,N=null;else if("off"==N)sa=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(ra in bc)if(N==ra){Da=bc[ra];sa=!!(a.Z&Da);break}if(!Da){a.u("unknown message category: "+N);break a}}if(Da)if("on"==g[2])a.Z|=Da,sa=!0;else if("off"==g[2]&&(a.Z&=~Da,sa=!1,1073741824==Da)){for(var fg=1E3<=a.P.length?a.P.length-
1E3:0;fg<a.P.length;)a.u(a.P[fg++]);a.P=[]}}var Dh=0,Kb="";for(ra in bc)if(!N||N==ra){var Eh=!!(a.Z&bc[ra]);if(null===sa||sa==Eh)Kb&&(Kb+=","),++Dh%10||(Kb+="\n\t"),"key"==ra&&(ra="keys"),Kb+=ra}void 0===N&&a.u("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.u((null!==sa?sa?"messages on: ":"messages off: ":"message categories:\n\t")+(Kb||"none"));Ye(a)}break;case "p":if("print"==g[0]){ug(a,b.substr(5));break}var gg=g[0],hg="p"==gg?0:"pr"==gg?1:-1;if("?"==g[1]||0>hg)a.u("step commands:"),
a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.O)a.u("step in progress");else{var ig=Z(a.v.i);a.Ia(ig);a.O?(a.Ma(a.b,ig,!0),tf(a)||(a.H&&kd(a.H),a.O=0)):vg(a,hg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}wf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var hb=+g[2];if(2==hb||8==hb||10==hb||16==hb)a.U=hb;else{a.u("invalid base: "+hb);break}}a.u("default base: "+a.U);break;case "cs":var Lb;void 0!==g[3]&&(Lb=+g[3]);switch(g[2]){case "int":a.v.oa=
Lb;break;case "start":a.v.Da=Lb;break;case "stop":a.v.ja=Lb;break;default:a.u("unknown cs option");break a}void 0!==Lb&&cd(a.v);a.u("checksums "+(a.v.A.Oa?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(hd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.da.toFixed(2)+"Mhz")+" ("+a.v.fa+"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 vg(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=Pe(a,c,null,!0)||1;var e=0;"tc"==b&&(e=c,c=1);a.Aa=b;Ua(c,function(){return Pb(a,!0)&&tc(a,e,d,!1)},function(){a.ha&&a.ha.stop();J(a.H,-1);Pb(a,!1)})}}
function xf(a,b,c,d){if(b=ef(a,b,a.L)){void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=Pe(a,c.substr(1)),null!=c&&(d=c);else{d=ef(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=Ob(a,!1)||a.O?a.C:null,g=null!=f?"cycles":null,h=ng(a,b),k=b.B;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.u(m)}h[3]&&(g=h[3],f=null);h=a.fa;m=b;h.B=m.B;h.Ya=m.Ya;h.la=m.la;h.U=m.U;a.u(zf(a,b,g,f));e-=b.B-k;c++}}}
function lg(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(vf+b):(a.R&&(a.u("ended assemble at "+K(a,a.fa.B)),a.R=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.T=null;if(Mb(a)&&0<b.length){a.R&&(b="a "+K(a,a.fa.B)+" "+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),m=1;m<h.length;m++){var p=h.charAt(m);if("?"==k||"r"==k||"a">p||"z"<p){g[0]=h.substr(m);g.unshift(h.substr(0,m));break}}switch(g[0].charAt(0)){case "a":qg(a,g);
break;case "b":a:{var t=g[0],C=g[1],H=b;if("?"==C)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 R=t.charAt(1);if("l"==R){var cb;cb=0+jg(a,a.b);cb+=jg(a,a.M);(cb+=jg(a,a.I))||a.u("no breakpoints")}else if("n"==R){var Bb=+C||0;C&&(a.ka=Bb);a.u("break after "+Bb+" instruction(s)")}else if(void 0===
C)a.u("missing breakpoint address");else{var D=Z();if("*"!=C&&(D=ef(a,C,a.L),!D))break a;"c"==R?null==D.B?(Xe(a),a.u("all breakpoints cleared")):If(a,a.b,D)||If(a,a.M,D)||If(a,a.I,D)||a.u("breakpoint missing: "+K(a,D.B)):null!=D.B&&(gf(a,D,H),"p"==R?a.Ma(a.b,D):"r"==R?a.Ma(a.M,D):"w"==R?a.Ma(a.I,D):a.u("unknown breakpoint command: "+R))}}}break;case "c":a.va&&(a.va.value="");break;case "d":a:{var db,eb=g[0],oa=g[1],Ca=g[2],vh=g[3];if("?"==oa){var fb="";for(db in bc)a.xa[db]&&(fb&&(fb+=","),fb+=db);
fb+=",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");fb.length&&a.u("dump extension commands:\n\t"+fb)}else if("state"==oa){var Jd=wg(a.H,!0);"console"==Ca?console.log(Jd):(a.va&&(a.va.value=""),Jd&&a.u(Jd))}else if("symbols"==oa)for(var Kd=0;Kd<a.F.length;Kd++){var Ld=a.F[Kd],gb;for(gb in Ld.W)if("."!=gb.charAt(0)){var Kf=Ld.W[gb].o;
if(void 0!==Kf){var Lf=Ld.W[gb].l;Lf&&(gb=Lf);a.u(K(a,Kf)+" "+gb)}}}else{if("d"==eb){for(db in bc)if(g[1]==db){var Mf=a.xa[db];Mf?(g.shift(),g.shift(),Mf(g)):a.u("no dump registered for "+oa);break a}oa||(eb=a.Ja||"dw")}else a.Ja=eb;if("dh"==eb){var Nf=oa,Of=Ca,Pf="",Qf=0,ka=a.S,pa=a.i;if(pa.length){var fa=+Nf||a.za,Db=+Of||10;isNaN(fa)?fa=Db:Pf="more ";fa>pa.length&&(a.u("note: only "+pa.length+" available"),fa=pa.length);ka-=fa;0>ka&&(null==pa[pa.length-1].B?(fa=ka+fa,ka=0):ka+=pa.length);var Md=
[];"call"==Of&&(Db=1E5,Md=["CALL"]);for(void 0!==Nf&&a.u(fa+" instructions earlier:");0<Db&&ka!=a.S;){var Rf=pa[ka++];if(null==Rf.B)break;var Eb=Z(Rf.B),wh=fa--,Sf=zf(a,Eb,"history",wh);(!Md.length||0<=Sf.indexOf(Md[0]))&&a.u(Sf);Eb.lb&&(ka+=Eb.lb,Db-=Eb.lb,fa-=Eb.lb);ka>=pa.length&&(ka=0);a.za=fa;Qf++;Db--}}Qf||(a.u("no "+Pf+"history available"),a.za=void 0)}else{var hb=ef(a,oa,a.ia);if(hb){var La=0,Tf="ds"==eb;if(Ca){if("l"==Ca.charAt(0))Ca=Ca.substr(1)||vh,La=Pe(a,Ca);else{var Uf=ef(a,Ca);Uf&&
(La=Uf.B-hb.B)}0>La&&(La=0);65536<La&&(La=65536)}var xh=a.U;hb.U&&(a.U=hb.U);for(var Vf="db"==eb?1:2,Nd=La||32,Od=1==Vf?1:4,yh=(Nd+Od-1)/Od|0||1,Ma="";yh--&&0<Nd;){for(var qa="",Pd="",oa=K(a,hb.B),Wf=Od;0<Wf--&&0<Nd--;){var Qd=a.Ia(hb,1);Tf?(qa&&(qa+=","),qa+=Qd):(qa+=hf(Qd),qa+=" ");for(var Ec=29,zh=0;1==Vf&&0<=Ec;zh++)var Fb=Qd/Math.pow(2,Ec)%Math.pow(2,7),qa=qa+K(a,Fb,7),Fb=Fb+0,Pd=Pd+(32>Fb?".":String.fromCharCode(Fb)),Ec=Ec-7}Ma&&(Ma+="\n");Ma=Tf?Ma+(qa+","):Ma+(oa+": "+qa+(0>Wf?" "+Pd:""))}Ma&&
a.u(Ma);a.U=xh}}}}break;case "e":if("else"==g[0])break;var Xf,Yf,Zf=g[0],Rd=g[1];"e"==Zf||"ew"==Zf?(Xf=a.Ia,Yf=a.tb):Rd=null;if(null==Rd)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else{var Fc=ef(a,Rd,a.ia);if(Fc)for(var Sd=2;Sd<g.length;Sd++){var Gb=Se(a,g[Sd]);if(void 0===Gb)break;Gb=ff(Gb);a.u("changing "+K(a,Fc.B)+" from "+hf(Xf.call(a,Fc))+" to "+hf(Gb));Yf.call(a,Fc,Gb,1)}}break;case "g":a:{var $f=g[1],Ah=b;if(void 0!==$f){var Td=ef(a,$f);if(!Td)break a;gf(a,
Td,Ah);a.Ma(a.b,Td,!0)}tf(a,!0,c)}break;case "h":a.A.N?(c||a.u("halting"),a.V()):Ob(a,!0)||c||a.u("already halted");break;case "i":if("if"==g[0]){var Ud;var Hb=b.substr(2),Hb=Ea(Hb);Se(a,Hb)?(c||a.u("true: "+Hb),Ud=!0):(c||a.u("false: "+Hb),Ud=!1);Ud||(d=!1);break}f=!0;break;case "k":var Bh=g[0];if("?"==g[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");else{var Vd=0,Wd=Z(),Ib=Z();for(a.u("stack trace for "+K(a,Ib.B));10>Vd;){for(var Na=null,Ch=
256;65536>Ib.B>>>0;){Wd.B=a.Ia(Ib,2);if(null==Ib.B||!Ch--)break;if(!(Wd.B&1)){for(var Dh=a,Gc=Wd,ag=null,Jb=Gc.B,bg=Jb,Xd=1;6>=Xd&&Jb;Xd++){if(2<Xd){Gc.B=Jb;var Hc=zf(Dh,Gc);if(0<=Hc.indexOf("JSR")){var cg=Hc.indexOf(" ");if(Jb+(Hc.indexOf(" ",cg+1)-cg-1)/2==bg){ag=Hc;break}}}Jb-=2}Gc.B=bg;if(Na=ag)break}}if(!Na||null==Na)break;var dg=null;if("ks"==Bh){var eg=Na.match(/[0-9A-F]+$/);eg&&(dg=tg(a,eg[0]))}Na=Ba(Na,50)+" ;"+(dg||"stack="+K(a,Ib.B));a.u(Na);Vd++}Vd||a.u("no return addresses found")}break;
case "l":if("ln"==g[0]){tg(a,g[1],!0);break}f=!0;break;case "m":a:{var ra,sa=null,N=g[1];"?"==N&&(N=void 0);if(void 0!==N){var Da=0;if("all"==N)Da=1879046143,N=null;else if("on"==N)sa=!0,N=null;else if("off"==N)sa=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(ra in bc)if(N==ra){Da=bc[ra];sa=!!(a.aa&Da);break}if(!Da){a.u("unknown message category: "+N);break a}}if(Da)if("on"==g[2])a.aa|=Da,sa=!0;else if("off"==g[2]&&(a.aa&=~Da,sa=!1,1073741824==Da)){for(var fg=1E3<=a.P.length?a.P.length-
1E3:0;fg<a.P.length;)a.u(a.P[fg++]);a.P=[]}}var Eh=0,Kb="";for(ra in bc)if(!N||N==ra){var Fh=!!(a.aa&bc[ra]);if(null===sa||sa==Fh)Kb&&(Kb+=","),++Eh%10||(Kb+="\n\t"),"key"==ra&&(ra="keys"),Kb+=ra}void 0===N&&a.u("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.u((null!==sa?sa?"messages on: ":"messages off: ":"message categories:\n\t")+(Kb||"none"));Ye(a)}break;case "p":if("print"==g[0]){ug(a,b.substr(5));break}var gg=g[0],hg="p"==gg?0:"pr"==gg?1:-1;if("?"==g[1]||0>hg)a.u("step commands:"),
a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.O)a.u("step in progress");else{var ig=Z(a.v.i);a.Ia(ig);a.O?(a.Ma(a.b,ig,!0),tf(a)||(a.H&&kd(a.H),a.O=0)):vg(a,hg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}wf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var ib=+g[2];if(2==ib||8==ib||10==ib||16==ib)a.U=ib;else{a.u("invalid base: "+ib);break}}a.u("default base: "+a.U);break;case "cs":var Lb;void 0!==g[3]&&(Lb=+g[3]);switch(g[2]){case "int":a.v.oa=
Lb;break;case "start":a.v.Da=Lb;break;case "stop":a.v.ja=Lb;break;default:a.u("unknown cs option");break a}void 0!==Lb&&cd(a.v);a.u("checksums "+(a.v.A.Oa?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(hd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.Z.toFixed(2)+"Mhz")+" ("+a.v.fa+"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":vg(a,g[0],g[1]);break;case "u":xf(a,g[1],g[2],8);break;case "v":if("var"==g[0]){sg(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Sb||"PDP10")+" version 1.34.2 ("+a.v.yb+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){ug(a,b.substr(1));break}var Yd="commands:",Zd;for(Zd in xg)Yd+="\n"+
Ba(Zd,9)+xg[Zd];td(a)||(Yd+="\nnote: history disabled if no exec breakpoints");a.u(Yd);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(kg){a.u("Debugger "+(kg.stack||kg.message)),d=!1}return d}function fd(a,b,c){b=Ke(a,b,c);for(var d in b)if(!lg(a,b[+d]))return!1;return!0}
var xg={"?":"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"},Ef=20,Ff=".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(" "),
kf=0,lf=1,mf=2,nf=3,of=4,pf=5,qf=6,rf=7,jf="PC RA EA C0 C1 OV ND PD".split(" "),yg={},Af=(yg[28672]={0:101},yg[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},yg[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Ef,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},yg[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},yg[29248]={24576:79,24640:80,25088:81,25152:82},yg[28700]={28672:93,28676:94,28680:95,28684:96,28688:97,
28692:98,28696:99,28700:100},yg),Bf=["","I","M","S"],Cf=" L E LE A GE N G".split(" "),Df="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Gf=[{0:85,8:102,4:103,2:104,6:105,1:106},{0:88,4:107,2:108,10:109}],sf=1E3,vf=">> ";Xa(function(){for(var a=w(document,v,"debugger"),b=0;b<a.length;b++){var c=a[b],d=tb(c),d=new We(d);ub(d,c)}});
function rg(a,b,c,d,e){this.S=b||0;this.Y=c||"";this.b=d;this.done=e;this.u("starting PCjs MACRO-10 Mini-Assembler...");this.j={};this.L={};this.H=[];this.M=[];this.J=[];this.R=this.ca=0;this.sa=this.S;this.I=null;this.i=0;this.F=null;this.C=this.K="";this.T=/\s*([A-Z$%.?][0-9A-Z$%.]*:|)\s*([A-Z$%.][0-9A-Z$%.]*|)\s*([^;]+|)(;?[\s\S]*)/i;this.w=this.v=null;this.G="";this.D=[];this.P=0;this.O=a.split(";");zg(this)}
function zg(a){if(a.P==a.O.length)a.done(Ag(a));else{var b=a.O[a.P++];a.u("loading "+wa(b));"/"==b[0]&&".MAC"==b.slice(-4)&&(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(/&lt;/gi,"<").replace(/&gt;/gi,">").replace(/&amp;/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Bg(a,"unrecognized HTML entity: "+c[0])}a.D=a.D.concat(e.split(/(\r?\n)/));setTimeout(function(){zg(a)},0)}})}}
function Ag(a){if(0<=a.Y.indexOf("p"))return a.u(a.D.join()),0;var b=Ue(a.b);try{var c;for(c=0;c<a.D.length&&(a.ca++,Cg(a,a.D[c]+"\r\n"));c+=2);a.i&&a.error("open block from line "+a.j[a.F].ca);for(c=0;c<a.H.length;c++){var d=a.H[c],e=a.j[d];e?Dg(a,e.Ba):a.error("missing definition for literal: "+d)}a.M.forEach(function(b){var c=b.sa,d=Eg(a,b.Fb,void 0,c);void 0===d?a.error("unable to parse expression: "+b.Fb):(d+=a.J[c],a.J[c]=Fg(a,d,c))})}catch(f){a.u(f.message),a.R=-1}a.b.K=b;return a.R}
function Cg(a,b,c,d,e){var f;if(a.i&&(1==a.i&&(f=b.indexOf(a.C),0<=f?(a.i++,b=b.substr(f+1)):a.error("expected "+a.I+" definition: "+b)),1<a.i&&(b=Gg(a,b)),a.i))return!0;null!=a.w&&(b=Hg(a,b));var g=!0;f="";for(var h;g;){h=b.match(a.T);if(!h||h[4]&&";"!=h[4].slice(0,1))return a.error("failed to parse line: "+b),!1;g=!1;f=h[2].toUpperCase();if(f==Ig||f==Jg)c=null;if(c){for(var k=0;k<c.length;k++)for(var l=c[k],p=d[k]||e[k]||"",t=0,C=b.length-h[4].length;t<C;){var H=b.indexOf(l,t);if(0>H)break;var t=
H+1,R=H+l.length,bb="",Bb="";H&&(bb=b[H-1]).match(/[0-9A-Z$%.]/i)||!(R>=b.length)&&(Bb=b[R]).match(/[0-9A-Z$%.]/i)||("'"==bb&&H--,"'"==Bb&&R++,b=b.substr(0,H)+p+b.substr(R),t=H+p.length,g=!0)}c=null}}c=h[1];b=h[3].trim();h=h[3]+h[4];c&&(c=c.slice(0,-1),Kg(a,c,a.sa,Lg));var D;f&&(D=b.match(/^([=:]+)(.*)/))&&(d=0,c=f,f=D[1],b=D[2],"=="==f?d|=Mg:"=:"==f&&(d|=Ng),Kg(a,c,b,d),f=b="");if(!f&&!b)return!0;a.I=f;D=b;c=0;d=null;e=0;for(g=-1;e<D.length&&!(k=D[e],"["==k&&(c++||(g=e)),e++,"]"==k&&0>=--c););0>
c&&a.error("missing bracket(s): "+D);0<=g&&(d=D.substr(g,e-g));for((D=d)&&(b=b.replace(D,Og(a,Pg,D)));D=Qg(a,b);)b=b.replace(D,D.slice(0,-1));if(!Rg(a,f,b))switch(f){case Sg:case Tg:case Ug:Hg(a,h);break;case Vg:Wg(a,0,b.replace(",",",,"));break;case Xg:case Yg:case Zg:case Ig:case Jg:case $g:Og(a,f,h);break;case ah:case bh:case ch:break;default:h=b,D=f+" "+h,0<=D.indexOf(",,")||!f&&0>D.indexOf("@")&&0>D.indexOf("(")?f=Eg(a,D,!0):(f=Hf(a.b,f,h,a.sa,!0),0>f&&(f=Hf(a.b,"",D,a.sa,!0),0>f&&(f=void 0))),
void 0!==f?Wg(a,f,a.b.ka):a.error("unrecognized expression: "+D)}return!0}function Rg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c)return b=a.v,a.v=d,d.La=dh(a,c,!0),Dg(a,d.Ba,d.Na,d.La,d.vb),a.v=b,!0;if("?"!=b[0])return!1;switch(b.substr(1)){case Yg:d.$a||Dg(a,d.Ba);break;case Zg:d.$a&&Dg(a,d.Ba);break;case Ig:case Jg:for(c=0;c<d.La.length;c++)Dg(a,d.Ba,d.Na,[d.La[c]],[]);break;case $g:for(;0<d.$a--;)Dg(a,d.Ba);break;default:return!1}return!0}
function Dg(a,b,c,d,e){b=b.split(/\r?\n/);for(var f=0;f<b.length&&Cg(a,b[f]+"\r\n",c,d,e);f++);}rg.prototype.error=function(a){throw Error("error"+(this.ca?" at line "+va(this.ca):"")+": "+a);};function Bg(a,b){a.u("warning"+(a.ca?" at line "+va(a.ca):"")+": "+b)}
function eh(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 Eg(a,b,c,d){var e,f=b.match(/^([^,]*),,([^,]*)$/);f?(b=f[1]?Eg(a,f[1]):0,void 0!==b&&(f=f[2]?Eg(a,f[2]):0,void 0!==f&&(e=Y(a.b,b,18,!0)*Math.pow(2,18)+Y(a.b,f,18,!0)))):(void 0===d&&(d=a.sa),e=Se(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 Qg(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,$a:fh,Na:e,vb:f,La:g,Ba:b+": 0",ca:a.ca};a.H.push(d)}return c}function dh(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=eh(a,b);if(!c)break;d.push(c);b=b.substr(c.length+1)}return d}
function Hg(a,b){var c=b;null==a.w&&(a.w=a.G="",b&&(a.w=b[0],c=b=b.substr(1)));if(a.w){var d=b.indexOf(a.w);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.w=null);a.G+=b}if(null==a.w){var d=b=0,e,f,g=a.G.length;a.I==Tg&&g++;for(var h=0;h<g;h++){b||(d=0,f=29,e=7,a.I==Ug&&(e--,f++));var k=a.G.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&&(Wg(a,d),b=0)}b&&Wg(a,d)}return c}
function Og(a,b,c){var d,e,f,g,h,k;a.C="<";a.K=">";g=h=k=[];if(b==Xg){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=dh(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=gh;c=3}else if(b==Pg)a.C="[",a.K="]",f="?"+va(a.sa,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],f+": "+c.substr(1)],
b=hh,a.H.push(f),c=0;else if(b==Ig||b==Jg){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.Na.length&&e[1]!=a.v.Na[d];d++);if(d==a.v.Na.length)return a.error("invalid "+b+" parameter: "+e[1]),c;f="?"+b;g=[e[1]];b==Jg?k=a.v.La[d].split(""):k=dh(a,a.v.La[d]);b=k.length;c=2}else{d=eh(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=Eg(a,d)||0;c=1}f=f.toUpperCase();a.i=1;a.F=f;a.j[f]={name:f,$a:b,Na:g,vb:h,La:k,Ba:"",ca:a.ca};e[c]&&(a.i=2,Gg(a,e[c+1]));return f}function Gg(a,b){for(var c="",d=0;d<b.length;d++)if(b[d]==a.C)a.i++;else if(b[d]==a.K&&(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].Ba+=b;a.i||(a.F=null,Rg(a,d));return c}
function Kg(a,b,c,d){d=void 0===d?0:d;b=b.toUpperCase().substr(0,6);if(d&Lg&&a.L[b])a.error("label "+b+" redefined");else{if("string"==typeof c){var e=Eg(a,c);if(void 0===e){a.error("parseExpression("+c+")");return}c=e}(e=a.L[b])?(e.value=c,e.Rb=d,e.ca=a.ca):a.L[b]={name:b,value:c,Rb:d,ca:a.ca};a.b.K[b]=c}}function Wg(a,b,c){a.J[a.sa]=Fg(a,b);null!=c&&a.M.push({sa:a.sa,Fb:c,ca:a.ca});a.sa++}
function Fg(a,b,c){c=void 0===c?a.sa:c;var d=Y(a.b,b||0,36,!0);(b<-A||b>=E)&&Bg(a,"truncated value "+n(b)+" at location "+n(c)+" to "+n(d));return d}rg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};var Lg=1,Mg=2,Ng=4,Sg="ASCII",Tg="ASCIZ",Xg="DEFINE",Yg="IFE",Zg="IFN",Ig="IRP",Jg="IRPC",Pg="LITERAL",ah="PAGE",$g="REPEAT",Ug="SIXBIT",bh="SUBTTL",ch="TITLE",Vg="XWD",gh=-1,hh=-2,fh=-3;
function ih(a,b,c){u.call(this,"Computer",a,33554432);this.A.X=!1;this.R=null;jh(this,b);this.O=ad(this,"autoPower",a,6);this.w=0;this.Y=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.T=!1;this.I=this.C=null;this.S=this.P=!1;this.da=ad(this,"url")||"";(Math.random()+.1).toString(36);this.i=kh(this);if(this.v=sb("CPU",this.id)){this.D=sb("Debugger",this.id);this.G=new Ac({id:this.Wa+".bus",busWidth:this.Y},this.v,this.D);var d,e=qb(this.id);if((this.j=sb("Panel",this.id))&&this.j.va)for(b=
0;b<e.length;b++)d=e[b],d.ea=this.j.ea,d.u=this.j.u,d.va=this.j.va;this.u(Sb+" v1.34.2\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.Ha&&d.Ha(this,this.G,this.v,this.D);b=null;d=ad(this,"resume",a);void 0!==d&&(1<d.length?b=this.F=d:this.b=parseInt(d,10));var f;if(a=ad(this,"state")||(f=!0,a.state))this.M=b=a,f||(this.K=!0,this.b=lh),this.b&&(this.I=new G(this,"1.34.2"),mh(this.I)?b=null:
delete this.I);!b&&this.b&&(b=nh(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.ea("Unable to load machine state from server (error "+c+(b?": "+Ea(b):"")+")")):(g.L=b,g.T=!0);Nb(g)})}else Nb(this);this.J.power||(this.O=!0);!c&&this.O&&oh(this,this.Qa)}else r("Unable to find CPU component")}ja(ih,u);function jh(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.R=b}
function ad(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 oh(a,b,c){for(var d=qb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Mb(f)){Mb(f,function(){oh(a,b,c)});return}}b.call(a,c)}
function ph(a,b){var c=new G(a,"1.34.2",qh);if(mh(c)&&rh(c)){var d=c.get(sh),e=b?b.get(sh):"unknown";d!=e&&(a.ea("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=ih.prototype;
m.Qa=function(a){void 0===a&&(a=this.b||(this.L?th:lh));if(!this.w){this.w++;var b=!1,c=!1;this.P=!1;var d=this.I||new G(this,"1.34.2");if(a==Fh)b=!0;else if(a>lh){if(mh(d,this.L)){this.C=new G(this,"1.34.2",Gh);mh(this.C)&&(Hh(this,d),a=Ih,Jh(this.C));this.C.set(sh,Ga());Kh(this.C);var e=this.b&&!this.K;if(a==th||pb("Click OK to restore the previous "+Sb+" machine state, or CANCEL to reset the machine.")){if(c=rh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?mh(d,g):("error"==f&&"no machine state"!=
g?(this.ea("Error: "+g),"unable to verify user"==g&&(Qa(Lh,""),this.i=null)):this.u(f+": "+g),Jh(d),mh(d)?(c=rh(d),e=!0):c=!1))}e&&ph(this,c?d:null)}else a==Ih&&d.clear()}else ph(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=Mh(this,g,d,b,c));b=[d,a,c];a!=Fh?oh(this,this.Cb,b):this.Cb(b)}};
function Mh(a,b,c,d,e){if(!b.A.X){b.A.X=!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.wa(f,d)&&f&&(r("Unable to restore state for "+b.type),a.M&&!a.T?(c.clear(),a.b=lh,window&&window.location.reload()):a.P=!0,b.wa(null),e=!1),!d&&b.xb){var g=b.xb.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(h){r("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
m.Cb=function(a){var b=a[0],c=0>a[1];a=a[2];this.S=!0;this.A.X=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Mh(this,this.v,b,c,a),J(this,-2),this.v.ba());this.P&&(Hh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
function Hh(a,b){if(pb("There may be a problem with your "+Sb+" machine.\n\nTo help us diagnose it, click OK to send this "+Sb+" machine state to http://www.pcjs.org.")){var c=a.da;a=a.i||"";b=b.toString();var d={};d.app=Sb;d.ver="1.34.2";d.url=c;d.user=a;d.type="bug";d.data=b;Ha("http://www.pcjs.org/api/v1/report",d,!0)}}
function wg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new G(a,"1.34.2"),g=new G(a,"1.34.2",qh),h=Ga();g.set(sh,h);f.set(sh,h);f.set(Nh,"1.34.2");f.set(Oh,window?window.location.href:null);f.set(Ph,window?window.navigator.userAgent:"");a.v&&a.v.ma&&(c&&(b&&(a.v.A.ba=a.v.A.N),a.v.V()),d=a.v.ma(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.X=!1,!1===d&&(e=null)));for(var h=qb(a.id),k=0;k<h.length;k++){var l=h[k];l.A.X&&(l.ma&&(d=l.ma(b,c),"object"===typeof d&&f.set(l.id,d)),c&&(l.A.X=
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.i&&Qh(a,a.i,f.toString()),Kh(g)&&Kh(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Rh),d&&f.clear(h)):e=f.toString());c&&(a.A.X=!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&&(Rb(this,"Resetting "+this.G.type),this.G.reset());this.v&&this.v.reset&&(Rb(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&&(Rb(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 rg(a,b,c,d,e){this.S=b||0;this.Z=c||"";this.b=d;this.done=e;this.F=null;this.u("starting PCjs MACRO-10 Mini-Assembler...");this.j={};this.M={};this.H=[];this.O=[];this.J=[];this.T=this.da=0;this.sa=this.S;this.K=null;this.i=0;this.I=null;this.C=this.L="";this.Y=/\s*([A-Z$%.?][0-9A-Z$%.]*:|)\s*([A-Z$%.][0-9A-Z$%.]*|)\s*([^;]+|)(;?[\s\S]*)/i;this.w=this.v=null;this.G="";this.D=[];this.R=0;this.P=a.split(";");zg(this)}
function zg(a){if(a.R==a.P.length)a.done(Ag(a));else{var b=a.P[a.R++];a.u("loading "+wa(b));"/"==b[0]&&".MAC"==b.slice(-4)&&(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(/&lt;/gi,"<").replace(/&gt;/gi,">").replace(/&amp;/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Bg(a,"unrecognized HTML entity: "+c[0])}a.D=a.D.concat(e.split(/(\r?\n)/));setTimeout(function(){zg(a)},0)}})}}
function Ag(a){if(0<=a.Z.indexOf("p"))return a.u(a.D.join()),0;var b=Ue(a.b);try{var c;for(c=0;c<a.D.length;c+=2){a.da++;if(!Cg(a,a.D[c]+"\r\n"))break;if(null!==a.F)break}a.i&&a.error("open block from line "+a.j[a.I].da);for(c=0;c<a.H.length;c++){var d=a.H[c],e=a.j[d];e?Dg(a,e.Ba):a.error("missing definition for literal: "+d)}a.O.forEach(function(b){var c=b.sa,d=Eg(a,b.Fb,void 0,c);void 0===d?a.error("unable to parse expression: "+b.Fb):(d+=a.J[c],a.J[c]=Fg(a,d,c))})}catch(f){a.u(f.message),a.T=-1}a.b.K=
b;return a.T}
function Cg(a,b,c,d,e){var f;if(a.i&&(1==a.i&&(f=b.indexOf(a.C),0<=f?(a.i++,b=b.substr(f+1)):a.error("expected "+a.K+" definition: "+b)),1<a.i&&(b=Gg(a,b)),a.i))return!0;null!=a.w&&(b=Hg(a,b));var g=!0;f="";for(var h;g;){h=b.match(a.Y);if(!h||h[4]&&";"!=h[4].slice(0,1))return a.error("failed to parse line: "+b),!1;g=!1;f=h[2].toUpperCase();if(f==Ig||f==Jg)c=null;if(c){for(var k=0;k<c.length;k++)for(var m=c[k],p=d[k]||e[k]||"",t=0,C=b.length-h[4].length;t<C;){var H=b.indexOf(m,t);if(0>H)break;var t=
H+1,R=H+m.length,cb="",Bb="";H&&(cb=b[H-1]).match(/[0-9A-Z$%.]/i)||!(R>=b.length)&&(Bb=b[R]).match(/[0-9A-Z$%.]/i)||("'"==cb&&H--,"'"==Bb&&R++,b=b.substr(0,H)+p+b.substr(R),t=H+p.length,g=!0)}c=null}}c=h[1];b=h[3].trim();h=h[3]+h[4];c&&(c=c.slice(0,-1),Kg(a,c,a.sa,Lg));var D;f&&(D=b.match(/^([=:]+)(.*)/))&&(d=0,c=f,f=D[1],b=D[2],"=="==f?d|=Mg:"=:"==f&&(d|=Ng),Kg(a,c,b,d),f=b="");if(!f&&!b)return!0;a.K=f;D=b;c=0;d=null;e=0;for(g=-1;e<D.length&&!(k=D[e],"["==k&&(c++||(g=e)),e++,"]"==k&&0>=--c););0>
c&&a.error("missing bracket(s): "+D);0<=g&&(d=D.substr(g,e-g));for((D=d)&&(b=b.replace(D,Og(a,Pg,D)));D=Qg(a,b);)b=b.replace(D,D.slice(0,-1));if(!Rg(a,f,b))switch(f){case Sg:case Tg:case Ug:Hg(a,h);break;case Vg:(f=b)?(a.F=Eg(a,f,!0),void 0===a.F&&a.error("unrecognized expression: "+f)):a.F=a.S;break;case Wg:Xg(a,b);break;case Yg:Xg(a,b.replace(",",",,"));break;case Zg:case $g:case ah:case Ig:case Jg:case bh:Og(a,f,h);break;case ch:case dh:case eh:break;default:h=b,D=f+" "+h,0<=D.indexOf(",,")||!f&&
0>D.indexOf("@")&&0>D.indexOf("(")?f=Eg(a,D,!0):(f=Hf(a.b,f,h,a.sa,!0),0>f&&(f=Hf(a.b,"",D,a.sa,!0),0>f&&(f=void 0))),void 0!==f?fh(a,f,a.b.ga):a.error("unrecognized expression: "+D)}return!0}
function Rg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c)return b=a.v,a.v=d,d.La=gh(a,c,!0),Dg(a,d.Ba,d.Na,d.La,d.vb),a.v=b,!0;if("?"!=b[0])return!1;switch(b.substr(1)){case $g:d.$a||Dg(a,d.Ba);break;case ah:d.$a&&Dg(a,d.Ba);break;case Ig:case Jg:for(c=0;c<d.La.length;c++)Dg(a,d.Ba,d.Na,[d.La[c]],[]);break;case bh:for(;0<d.$a--;)Dg(a,d.Ba);break;default:return!1}return!0}function Dg(a,b,c,d,e){b=b.split(/\r?\n/);for(var f=0;f<b.length&&Cg(a,b[f]+"\r\n",c,d,e);f++);}
rg.prototype.error=function(a){throw Error("error"+(this.da?" at line "+va(this.da):"")+": "+a);};function Bg(a,b){a.u("warning"+(a.da?" at line "+va(a.da):"")+": "+b)}function hh(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 Eg(a,b,c,d){var e,f=b.match(/^([^,]*),,([^,]*)$/);f?(b=f[1]?Eg(a,f[1],c,d):0,void 0!==b&&(c=f[2]?Eg(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=a.sa),e=Se(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 Qg(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,$a:ih,Na:e,vb:f,La:g,Ba:b+": 0",da:a.da};a.H.push(d)}return c}function gh(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=hh(a,b);if(!c)break;d.push(c);b=b.substr(c.length+1)}return d}
function Hg(a,b){var c=b;null==a.w&&(a.w=a.G="",b&&(a.w=b[0],c=b=b.substr(1)));if(a.w){var d=b.indexOf(a.w);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.w=null);a.G+=b}if(null==a.w){var d=b=0,e,f,g=a.G.length;a.K==Tg&&g++;for(var h=0;h<g;h++){b||(d=0,f=29,e=7,a.K==Ug&&(e--,f++));var k=a.G.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&&(fh(a,d),b=0)}b&&fh(a,d)}return c}
function Og(a,b,c){var d,e,f,g,h,k;a.C="<";a.L=">";g=h=k=[];if(b==Zg){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=gh(a,e[2],!0);b=[];for(c=0;c<h.length;c++)if(d=h[c].indexOf("<"),0<=d){var m=h[c].lastIndexOf(">");0>m&&(m=h[c].length);b[c]=h[c].substr(d,m-d);h[c]=h[c].substr(0,d)}h=b}b=jh;c=3}else if(b==Pg)a.C="[",a.L="]",f="?"+va(a.sa,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],f+": "+c.substr(1)],
b=kh,a.H.push(f),c=0;else if(b==Ig||b==Jg){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.Na.length&&e[1]!=a.v.Na[d];d++);if(d==a.v.Na.length)return a.error("invalid "+b+" parameter: "+e[1]),c;f="?"+b;g=[e[1]];b==Jg?k=a.v.La[d].split(""):k=gh(a,a.v.La[d]);b=k.length;c=2}else{d=hh(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=Eg(a,d)||0;c=1}f=f.toUpperCase();a.i=1;a.I=f;a.j[f]={name:f,$a:b,Na:g,vb:h,La:k,Ba:"",da:a.da};e[c]&&(a.i=2,Gg(a,e[c+1]));return f}function Gg(a,b){for(var c="",d=0;d<b.length;d++)if(b[d]==a.C)a.i++;else if(b[d]==a.L&&(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].Ba+=b;a.i||(a.I=null,Rg(a,d));return c}function Xg(a,b){var c=Eg(a,b,!0);void 0!==c?fh(a,c,a.b.ga):a.error("unrecognized expression: "+b)}
function Kg(a,b,c,d){d=void 0===d?0:d;b=b.toUpperCase().substr(0,6);if(d&Lg&&a.M[b])a.error("label "+b+" redefined");else{if("string"==typeof c){var e=Eg(a,c);if(void 0===e){a.error("parseExpression("+c+")");return}c=e}(e=a.M[b])?(e.value=c,e.Rb=d,e.da=a.da):a.M[b]={name:b,value:c,Rb:d,da:a.da};a.b.K[b]=c}}function fh(a,b,c){a.J[a.sa]=Fg(a,b);null!=c&&a.O.push({sa:a.sa,Fb:c,da:a.da});a.sa++}
function Fg(a,b,c){c=void 0===c?a.sa:c;var d=Y(a.b,b||0,36,!0);(b<-A||b>=E)&&Bg(a,"truncated value "+n(b)+" at location "+n(c)+" to "+n(d));return d}rg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};var Lg=1,Mg=2,Ng=4,Sg="ASCII",Tg="ASCIZ",Zg="DEFINE",Vg="END",Wg="EXP",$g="IFE",ah="IFN",Ig="IRP",Jg="IRPC",Pg="LITERAL",ch="PAGE",bh="REPEAT",Ug="SIXBIT",dh="SUBTTL",eh="TITLE",Yg="XWD",jh=-1,kh=-2,ih=-3;
function lh(a,b,c){u.call(this,"Computer",a,33554432);this.A.X=!1;this.R=null;mh(this,b);this.O=ad(this,"autoPower",a,6);this.w=0;this.Y=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.T=!1;this.I=this.C=null;this.S=this.P=!1;this.Z=ad(this,"url")||"";(Math.random()+.1).toString(36);this.i=nh(this);if(this.v=sb("CPU",this.id)){this.D=sb("Debugger",this.id);this.G=new Ac({id:this.Wa+".bus",busWidth:this.Y},this.v,this.D);var d,e=qb(this.id);if((this.j=sb("Panel",this.id))&&this.j.va)for(b=
0;b<e.length;b++)d=e[b],d.ea=this.j.ea,d.u=this.j.u,d.va=this.j.va;this.u(Sb+" v1.34.2\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.Ha&&d.Ha(this,this.G,this.v,this.D);b=null;d=ad(this,"resume",a);void 0!==d&&(1<d.length?b=this.F=d:this.b=parseInt(d,10));var f;if(a=ad(this,"state")||(f=!0,a.state))this.M=b=a,f||(this.K=!0,this.b=oh),this.b&&(this.I=new G(this,"1.34.2"),ph(this.I)?b=null:
delete this.I);!b&&this.b&&(b=qh(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.ea("Unable to load machine state from server (error "+c+(b?": "+Ea(b):"")+")")):(g.L=b,g.T=!0);Nb(g)})}else Nb(this);this.J.power||(this.O=!0);!c&&this.O&&rh(this,this.Qa)}else r("Unable to find CPU component")}ja(lh,u);function mh(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.R=b}
function ad(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 rh(a,b,c){for(var d=qb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Mb(f)){Mb(f,function(){rh(a,b,c)});return}}b.call(a,c)}
function sh(a,b){var c=new G(a,"1.34.2",th);if(ph(c)&&uh(c)){var d=c.get(Gh),e=b?b.get(Gh):"unknown";d!=e&&(a.ea("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=lh.prototype;
l.Qa=function(a){void 0===a&&(a=this.b||(this.L?Hh:oh));if(!this.w){this.w++;var b=!1,c=!1;this.P=!1;var d=this.I||new G(this,"1.34.2");if(a==Ih)b=!0;else if(a>oh){if(ph(d,this.L)){this.C=new G(this,"1.34.2",Jh);ph(this.C)&&(Kh(this,d),a=Lh,Mh(this.C));this.C.set(Gh,Ga());Nh(this.C);var e=this.b&&!this.K;if(a==Hh||pb("Click OK to restore the previous "+Sb+" machine state, or CANCEL to reset the machine.")){if(c=uh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?ph(d,g):("error"==f&&"no machine state"!=
g?(this.ea("Error: "+g),"unable to verify user"==g&&(Qa(Oh,""),this.i=null)):this.u(f+": "+g),Mh(d),ph(d)?(c=uh(d),e=!0):c=!1))}e&&sh(this,c?d:null)}else a==Lh&&d.clear()}else sh(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=Ph(this,g,d,b,c));b=[d,a,c];a!=Ih?rh(this,this.Cb,b):this.Cb(b)}};
function Ph(a,b,c,d,e){if(!b.A.X){b.A.X=!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.wa(f,d)&&f&&(r("Unable to restore state for "+b.type),a.M&&!a.T?(c.clear(),a.b=oh,window&&window.location.reload()):a.P=!0,b.wa(null),e=!1),!d&&b.xb){var g=b.xb.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(h){r("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
l.Cb=function(a){var b=a[0],c=0>a[1];a=a[2];this.S=!0;this.A.X=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Ph(this,this.v,b,c,a),J(this,-2),this.v.ca());this.P&&(Kh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
function Kh(a,b){if(pb("There may be a problem with your "+Sb+" machine.\n\nTo help us diagnose it, click OK to send this "+Sb+" machine state to http://www.pcjs.org.")){var c=a.Z;a=a.i||"";b=b.toString();var d={};d.app=Sb;d.ver="1.34.2";d.url=c;d.user=a;d.type="bug";d.data=b;Ha("http://www.pcjs.org/api/v1/report",d,!0)}}
function wg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new G(a,"1.34.2"),g=new G(a,"1.34.2",th),h=Ga();g.set(Gh,h);f.set(Gh,h);f.set(Qh,"1.34.2");f.set(Rh,window?window.location.href:null);f.set(Sh,window?window.navigator.userAgent:"");a.v&&a.v.ma&&(c&&(b&&(a.v.A.ca=a.v.A.N),a.v.V()),d=a.v.ma(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.X=!1,!1===d&&(e=null)));for(var h=qb(a.id),k=0;k<h.length;k++){var m=h[k];m.A.X&&(m.ma&&(d=m.ma(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.A.X=
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.i&&Th(a,a.i,f.toString()),Nh(g)&&Nh(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Uh),d&&f.clear(h)):e=f.toString());c&&(a.A.X=!1,b=a.J.power)&&(b.textContent="Power");a.w=0;return e}
l.reset=function(){this.A.reset=!0;this.G&&this.G.reset&&(Rb(this,"Resetting "+this.G.type),this.G.reset());this.v&&this.v.reset&&(Rb(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&&(Rb(this,"Resetting "+c.type),c.reset())}this.A.reset=!1;J(this,-1)};l.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)};
l.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.eb+=d))&&(e.textContent=c.A.N?c.Y.toFixed(2)+"Mhz":"Stopped",c.eb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.N;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.U||8,e=e||0,e=8==f?n(e,void 0):q(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.xa);kc(a,a.i);ec(a,a.w)}}
m.na=function(a,b,c){var d=this;switch(b){case "power":return this.J[b]=c,c.onclick=function(){d.w||(d.A.X?wg(d,!1,!0):oh(d,d.Qa))},!0;case "reset":return this.J[b]=c,c.onclick=function(){if(d.A.X&&!d.w)if(d.b&&!d.F){var a=pb("Click OK to save changes to this "+Sb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");wg(d,a,!0);!a&&d.M?window&&window.location.reload():d.Qa(lh)}else d.reset(),d.v&&!d.D&&d.v.ba()},!0;case "save":if(ya(Ja(),"pcjs.org"))c.parentNode.removeChild(c);
else return this.J[b]=c,c.onclick=function(){var a=kh(d,!0);if(a){var b=!!(d.b&&!d.F||d.M),c=wg(d,b);b?Qh(d,a,c):d.ea("Resume disabled, machine state not saved")}},!0}return!1};
function kh(a,b){var c=a.i;c||((c=Pa(Lh),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=Sh(a,c))||a.ea("The user ID is invalid.")):b&&a.ea("Browser local storage is not available"));return c}
function Sh(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(Lh,b.data),a.i=b.data)}catch(d){r(d.message+" ("+c+")")}return a.i}function nh(a){var b=null;a.i&&(b=Ja()+"/api/v1/user?req=load&user="+a.i+"&state="+Th(a,"1.34.2"));return b}
function Qh(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Th(a,"1.34.2");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.ea("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.ea(c),Qa(Lh,""),a.i=null)}}
function kd(a,b){if(a.va){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a.va.focus();!b&&window&&window.scrollTo(c,d)}}var Gh="failsafe",qh="validate",sh="timestamp",Nh="version",Oh="url",Ph="browser",Lh="user",Fh=-1,lh=0,th=1,Ih=2,Rh=3;Xa(function(){for(var a=w(document,v+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=tb(c),c=w(c,v,"computer"),e=0;e<c.length;e++){var f=c[e],g=tb(f),g=new ih(g,d,!0);ub(g,f);g.O&&oh(g,g.Qa)}});
Ya.show.push(function(){for(var a=w(document,v,"computer"),b=0;b<a.length;b++){var c=tb(a[b]);(c=sb("Computer",c.id))&&c.S&&!c.A.X&&c.Qa(Fh)}});Ya.exit.push(function(){for(var a=w(document,v,"computer"),b=0;b<a.length;b++){var c=tb(a[b]);(c=sb("Computer",c.id))&&c.A.X&&wg(c,!(!c.b||c.F),!0)}});function G(a,b,c){this.id=a.id;this.i="";this.b={};this.v=this.j=!1;this.key=Th(a,b,c);Jh(this,a.Ob)}m=G.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 mh(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 rh(a){var b=!0;if(!a.j)try{a.b=JSON.parse(a.i),a.j=!0}catch(c){r(c.message||c),b=!1}return b}function Kh(a){var b=!0;if(Na()){var c=JSON.stringify(a.b);Qa(a.key,c)||(r("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 Jh(a,b){a.i="";a.b={};a.v=a.j=!1;b&&a.set("parms",b)}m.clear=function(a){Jh(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 Th(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 Uh=0;
function Vh(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)):Wh(k,a,b,c,d,e,f,g)})}
function Wh(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(t){g=null,a=t.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?Xh(a,g,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Xh(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);Xh(a,b,c)}})}else c(a,null)}
function Yh(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&&(--Uh||ab(!0));l=!1}var h,k,l=!0;Uh++;nb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var t=document.head||document.getElementsByTagName("head")[0],C=document.createElement("style");C.type="text/css";C.styleSheet?C.styleSheet.cssText=p:C.appendChild(document.createTextNode(p));t.appendChild(C)}d||
(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.2/components.xsl");p=function(e,k){k?Vh(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,--Uh||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),--Uh||
ab(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Vh(c,b,a,e,!0,f,p):Wh(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(H){g(H.message)}return l}window.embedPDP10=function(a,b,c,d){ab(!1);return Yh("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){ab(!1);return Yh("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&&!wb[a]){for(var c=!0,d=wb,e=a,f=b.length,g=[],h=[],k="",l=null,p=0;p<f;p++){var t=b[p];if('"'==t||"'"==t)l&&t!=l?k+=t:(l?l=null:l=t,k&&(h.push(k),k=""));else{if(!l){if("\r"==t||"\n"==t)t=";";if(" "==t||"\t"==t||";"==t){k&&(h.push(k),k="");";"==t&&h.length&&(g.push(h),h=[]);continue}}k+=t}}k&&h.push(k);h.length&&g.push(h);d[e]=g;vb(a)||(c=!1)}return c};window.enableEvents=ab;window.sendEvent=jb;})();//# sourceMappingURL=/tmp/pdpjs/1.34.2/pdp10-dbg.map
l.na=function(a,b,c){var d=this;switch(b){case "power":return this.J[b]=c,c.onclick=function(){d.w||(d.A.X?wg(d,!1,!0):rh(d,d.Qa))},!0;case "reset":return this.J[b]=c,c.onclick=function(){if(d.A.X&&!d.w)if(d.b&&!d.F){var a=pb("Click OK to save changes to this "+Sb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");wg(d,a,!0);!a&&d.M?window&&window.location.reload():d.Qa(oh)}else d.reset(),d.v&&!d.D&&d.v.ca()},!0;case "save":if(ya(Ja(),"pcjs.org"))c.parentNode.removeChild(c);
else return this.J[b]=c,c.onclick=function(){var a=nh(d,!0);if(a){var b=!!(d.b&&!d.F||d.M),c=wg(d,b);b?Th(d,a,c):d.ea("Resume disabled, machine state not saved")}},!0}return!1};
function nh(a,b){var c=a.i;c||((c=Pa(Oh),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=Vh(a,c))||a.ea("The user ID is invalid.")):b&&a.ea("Browser local storage is not available"));return c}
function Vh(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(Oh,b.data),a.i=b.data)}catch(d){r(d.message+" ("+c+")")}return a.i}function qh(a){var b=null;a.i&&(b=Ja()+"/api/v1/user?req=load&user="+a.i+"&state="+Wh(a,"1.34.2"));return b}
function Th(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Wh(a,"1.34.2");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.ea("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.ea(c),Qa(Oh,""),a.i=null)}}
function kd(a,b){if(a.va){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a.va.focus();!b&&window&&window.scrollTo(c,d)}}var Jh="failsafe",th="validate",Gh="timestamp",Qh="version",Rh="url",Sh="browser",Oh="user",Ih=-1,oh=0,Hh=1,Lh=2,Uh=3;Xa(function(){for(var a=w(document,v+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=tb(c),c=w(c,v,"computer"),e=0;e<c.length;e++){var f=c[e],g=tb(f),g=new lh(g,d,!0);ub(g,f);g.O&&rh(g,g.Qa)}});
Ya.show.push(function(){for(var a=w(document,v,"computer"),b=0;b<a.length;b++){var c=tb(a[b]);(c=sb("Computer",c.id))&&c.S&&!c.A.X&&c.Qa(Ih)}});Ya.exit.push(function(){for(var a=w(document,v,"computer"),b=0;b<a.length;b++){var c=tb(a[b]);(c=sb("Computer",c.id))&&c.A.X&&wg(c,!(!c.b||c.F),!0)}});function G(a,b,c){this.id=a.id;this.i="";this.b={};this.v=this.j=!1;this.key=Wh(a,b,c);Mh(this,a.Ob)}l=G.prototype;l.set=function(a,b){try{this.b[a]=b}catch(c){}};l.get=function(a){return this.b[a]||null};
l.data=function(){return this.b};function ph(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 uh(a){var b=!0;if(!a.j)try{a.b=JSON.parse(a.i),a.j=!0}catch(c){r(c.message||c),b=!1}return b}function Nh(a){var b=!0;if(Ka()){var c=JSON.stringify(a.b);Qa(a.key,c)||(r("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}l.toString=function(){return this.b?JSON.stringify(this.b):this.i};
function Mh(a,b){a.i="";a.b={};a.v=a.j=!1;b&&a.set("parms",b)}l.clear=function(a){Mh(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 Wh(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 Xh=0;
function Yh(a,b,c,d,e,f,g){f("Loading "+a+"...");Ha(a,null,!0,function(h,k,m){m?(k||(k="unable to load "+a+" ("+m+")"),g(k,null)):Zh(k,a,b,c,d,e,f,g)})}
function Zh(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(t){g=null,a=t.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?$h(a,g,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
function $h(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],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[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);$h(a,b,c)}})}else c(a,null)}
function ai(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);m&&(--Xh||ab(!0));m=!1}var h,k,m=!0;Xh++;nb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var t=document.head||document.getElementsByTagName("head")[0],C=document.createElement("style");C.type="text/css";C.styleSheet?C.styleSheet.cssText=p:C.appendChild(document.createTextNode(p));t.appendChild(C)}d||
(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.2/components.xsl");p=function(e,k){k?Yh(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,--Xh||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),--Xh||
ab(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Yh(c,b,a,e,!0,f,p):Zh(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(H){g(H.message)}return m}window.embedPDP10=function(a,b,c,d){ab(!1);return ai("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){ab(!1);return ai("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&&!wb[a]){for(var c=!0,d=wb,e=a,f=b.length,g=[],h=[],k="",m=null,p=0;p<f;p++){var t=b[p];if('"'==t||"'"==t)m&&t!=m?k+=t:(m?m=null:m=t,k&&(h.push(k),k=""));else{if(!m){if("\r"==t||"\n"==t)t=";";if(" "==t||"\t"==t||";"==t){k&&(h.push(k),k="");";"==t&&h.length&&(g.push(h),h=[]);continue}}k+=t}}k&&h.push(k);h.length&&g.push(h);d[e]=g;vb(a)||(c=!1)}return c};window.enableEvents=ab;window.sendEvent=jb;})();//# sourceMappingURL=/tmp/pdpjs/1.34.2/pdp10-dbg.map

View file

@ -294,8 +294,8 @@ function zj(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<<b)
function Aj(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "%":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e<f?1:0;break;case "<=":e=e<=f?1:0;break;case ">":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&=
f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=zj(e,0,!0),e=0<f?e*Math.pow(2,f):Math.trunc(e/Math.pow(2,-f)));break;default:return!1}a.push(zj(e))}return!0}
function Bj(a,b,c,d,e,f){var g,k,l,m=!1,n=0,q=[],t=[],r=a.aa;for(a.aa=e;c<d;){k=b[c++].trim();l=c<d?b[c++]:"";if(k)n=Cj(a,k,null,f,n);else if("{"==l){k=1;for(n=c;c<d;)if(c++,l=c<b.length?b[c++]:"","{"==l)k++;else if("}"==l&&!--k)break;n=Bj(a,b,n,c-1,a.aa,f);k=c<d?b[c++].trim():"";l=c<d?b[c++]:""}else{if("~"==l||"^-"==l){n=1;continue}if("-"==l){n=-1;continue}m=!0;break}if(void 0===n)if(null==a.za&&f)a.za=k,n=0;else{m=!0;f=!f;break}q.push(zj(n));if(!l)break;t.length&&Dj[l]<Dj[t[t.length-1]]&&Aj(q,t,
1);t.push(l);a.aa="^_"==l?10:e;n=0}Aj(q,t)&&1==q.length||(m=!0);m?!1===f&&a.v("parse error ("+(k||l)+")"):g=q.pop();a.aa=r;return g}function Ej(a,b,c,d,e){for(var f;0<=(f=b.indexOf(c));){for(var g=0,k=e,l=f+1;k--;){var m=b[l++];if(m==c)break;m=m.charCodeAt(0);7==d?m&=127:m=m-32&63;g=zj(g*Math.pow(2,d)+m,d*e,!0)}b=b.substr(0,f)+K(a,g,-1)+b.substr(l)}return b}
function Fj(a,b,c){var d;a.za=null;b&&("{"!=a.U[0]&&(b=b.split(a.U[0]).join("{").split(a.U[1]).join("}")),b=Ej(a,b,'"',7,5),b=Ej(a,b,"'",6,6),b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_"),b=b.split(/(\{|}|\|\||&&|\||\^!|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/),d=Bj(a,b,0,b.length,a.aa,c),void 0!==d&&!1===c&&Gj(a,null,d));return d}
1);t.push(l);a.aa="^_"==l?10:e;n=0}Aj(q,t)&&1==q.length||(m=!0);m?!1===f&&a.v("parse error ("+(k||l)+")"):g=q.pop();a.aa=r;return g}function Ej(a,b,c,d,e,f){for(var g;0<=(g=b.indexOf(c));){for(var k=0,l=g+1,m=e;m;){var n=b[l++];if(n==c){m=-1;break}n=n.charCodeAt(0);7==d?n&=127:n=n-32&63;k=zj(k*Math.pow(2,d)+n,d*e,!0);m--}if(0<=m){!1===f&&a.v("parse error ("+b+")");break}else b=b.substr(0,g)+K(a,k,-1)+b.substr(l)}return b}
function Fj(a,b,c){var d=void 0;a.za=null;if(b){"{"!=a.U[0]&&(b=b.split(a.U[0]).join("{").split(a.U[1]).join("}"));b=Ej(a,b,'"',7,5,c);if(!b)return d;b=Ej(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_");b=b.split(/(\{|}|\|\||&&|\||\^!|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);d=Bj(a,b,0,b.length,a.aa,c);void 0!==d&&!1===c&&Gj(a,null,d)}return d}
function Cj(a,b,c,d,e){e=void 0===e?0:e;var f;null!=b?(f=a.re(b),0<=f?f=a.Bd(f):(f=a.S[b],null==f&&(f=1<b.length?a.aa:10,0>e&&(b="-"+b,e=0),f=ma(b,f))),null!=f?0>e?f=-f:0<e&&(f|=-1):d||a.v("invalid "+(c?c:"value")+": "+b)):d||a.v("missing "+(c||"value"));return f}
function Gj(a,b,c){var d,e=!1;if(void 0!==c){e=!0;if(8==a.aa)d=c+". "+u(c,0,!0);else{d=c;var f=4,g="";if(!f||4<f)f=4;for(var k=0;k<f;k++)g&&(g=","+g),g=pa(d&255,8)+g,d>>=8;d=v(c,0,!0)+" "+c+". "+u(c,0,!0)+" "+("0b"+g)}32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.v((null!=b?b+": ":"")+d);return e}function Hj(a,b){if(b)return Gj(a,b,a.S[b]);var c=0;for(b in a.S)Gj(a,b,a.S[b]),c++;return 0<c}
function K(a,b,c){c=void 0===c?0:c;switch(a.aa){case 2:a=pa(b,0<c?c:0);break;case 8:a=u(b,0<c?(c+2)/3|0:0);break;case 10:a=qa(b,0<c?Math.ceil(.3*c):0);break;default:a=v(b,0<c?c+3>>2:0)}0>c?c=a.replace(/^0+([0-9A-F]+)$/i,"$1"):c=a;return c}var Dj={"||":0,"&&":1,"!":2,"|":2,"^!":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9,_:10,"^_":10,"{":11,"}":11};