Implemented all four primary half-word moves (HLL, HLR, HRL, HRR) but none of the flavors (Z, O, E); need to test the primary instructions first
This commit is contained in:
parent
aecd943c52
commit
0255b7b891
7 changed files with 507 additions and 359 deletions
|
|
@ -2,6 +2,6 @@
|
|||
"load": 0o100,
|
||||
"exec": 0o100,
|
||||
"data": [
|
||||
0o500000000000
|
||||
0o505040111111, // HRLI 1,111111
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,9 +53,9 @@ PDP10.opKA10 = function(op)
|
|||
};
|
||||
|
||||
/**
|
||||
* opUUO(0o0xx000): Unimplemented User Operation
|
||||
* opUUO(0o0NN000): Unimplemented User Operation
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-64:
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-64:
|
||||
*
|
||||
* Store the instruction code, A and the effective address E in bits 0-8, 9-12 and 18-35 respectively of
|
||||
* location 40; clear bits 13-17. Execute the instruction contained in location 41. The original contents
|
||||
|
|
@ -85,7 +85,7 @@ PDP10.opUUO = function(op)
|
|||
/**
|
||||
* opUFA(0o130000): Unnormalized Floating Add
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-37:
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-37:
|
||||
*
|
||||
* Floating add the contents of location E to AC. If the double length fraction in the sum is zero, clear
|
||||
* accumulator A+1. Otherwise normalize the sum only if the magnitude of its fractional part is >= 1, and place
|
||||
|
|
@ -111,7 +111,7 @@ PDP10.opUFA = function(op)
|
|||
/**
|
||||
* opDFN(0o131000): Double Floating Negate
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-37:
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-37:
|
||||
*
|
||||
* Negate the double length floating point number composed of the contents of AC and location E with AC on the left.
|
||||
* Do this by taking the twos complement of the number whose sign is AC bit 0, whose exponent is in AC bits 1-8, and
|
||||
|
|
@ -130,7 +130,7 @@ PDP10.opDFN = function(op)
|
|||
/**
|
||||
* opFSC(0o132000): Floating Scale
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-34:
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-34:
|
||||
*
|
||||
* If the fractional part of AC is zero, clear AC. Otherwise add the scale factor given by E to the exponent part
|
||||
* of AC (thus multiplying AC by 2^E), normalize the resulting word bringing 0s into bit positions vacated at the
|
||||
|
|
@ -162,7 +162,7 @@ PDP10.opFSC = function(op)
|
|||
/**
|
||||
* opIBP(0o133000): Increment Byte Pointer
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-16:
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-16:
|
||||
*
|
||||
* Increment the byte pointer in location E as explained above.
|
||||
*
|
||||
|
|
@ -2653,7 +2653,7 @@ PDP10.opSETOB = function(op)
|
|||
/**
|
||||
* opHLL(0o500000): Half Word Left to Left
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-3:
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-3:
|
||||
*
|
||||
* Move the left half of the source word specified by M to the left half of the specified destination.
|
||||
* The source and the destination right half are unaffected; the original contents of the destination are lost.
|
||||
|
|
@ -2668,18 +2668,20 @@ PDP10.opHLL = function(op)
|
|||
var a = op & PDP10.OPCODE.A_MASK;
|
||||
var src = this.readWord(this.regEA);
|
||||
var dst = this.readWord(a);
|
||||
dst = (dst & PDP10.RHWORD_MASK) + (src - (src & PDP10.RHWORD_MASK));
|
||||
dst = (dst & PDP10.WORD_MASK) + (src - (src & PDP10.WORD_MASK));
|
||||
this.writeWord(a, dst);
|
||||
};
|
||||
|
||||
/**
|
||||
* opHLLI(0o501000)
|
||||
* opHLLI(0o501000): Half Word Left to Left, Immediate
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-3:
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-3:
|
||||
*
|
||||
* Move the left half of the source word specified by M to the left half of the specified destination.
|
||||
* The source and the destination right half are unaffected; the original contents of the destination are lost.
|
||||
*
|
||||
* SIDEBAR: HLLI merely clears AC left.
|
||||
*
|
||||
* For HLLI, the source is 0,E and the destination is [A]. But since this is a left-half-only operation, src is
|
||||
* effectively 0.
|
||||
*
|
||||
|
|
@ -2690,14 +2692,14 @@ PDP10.opHLLI = function(op)
|
|||
{
|
||||
var a = op & PDP10.OPCODE.A_MASK;
|
||||
var dst = this.readWord(a);
|
||||
dst = (dst & PDP10.RHWORD_MASK);
|
||||
dst = (dst & PDP10.WORD_MASK);
|
||||
this.writeWord(a, dst);
|
||||
};
|
||||
|
||||
/**
|
||||
* opHLLM(0o502000)
|
||||
* opHLLM(0o502000): Half Word Left to Left, Memory
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-3:
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-3:
|
||||
*
|
||||
* Move the left half of the source word specified by M to the left half of the specified destination.
|
||||
* The source and the destination right half are unaffected; the original contents of the destination are lost.
|
||||
|
|
@ -2712,19 +2714,19 @@ PDP10.opHLLM = function(op)
|
|||
var a = op & PDP10.OPCODE.A_MASK;
|
||||
var src = this.readWord(a);
|
||||
var dst = this.readWord(this.regEA);
|
||||
dst = (dst & PDP10.RHWORD_MASK) + (src - (src & PDP10.RHWORD_MASK));
|
||||
dst = (dst & PDP10.WORD_MASK) + (src - (src & PDP10.WORD_MASK));
|
||||
this.writeWord(this.regEA, dst);
|
||||
};
|
||||
|
||||
/**
|
||||
* opHLLS(0o503000)
|
||||
* opHLLS(0o503000): Half Word Left to Left, Self
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-3:
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-3:
|
||||
*
|
||||
* Move the left half of the source word specified by M to the left half of the specified destination.
|
||||
* The source and the destination right half are unaffected; the original contents of the destination are lost.
|
||||
*
|
||||
* If A is zero, HLLS is a no-op, otherwise it is equivalent to HLL.
|
||||
* SIDEBAR: If A is zero, HLLS is a no-op, otherwise it is equivalent to HLL.
|
||||
*
|
||||
* For HLLS, the source is [E] and the destination is [E] (and also [A] if A is non-zero).
|
||||
*
|
||||
|
|
@ -2733,53 +2735,100 @@ PDP10.opHLLM = function(op)
|
|||
*/
|
||||
PDP10.opHLLS = function(op)
|
||||
{
|
||||
if (op & PDP10.OPCODE.A_MASK) {
|
||||
PDP10.opHLL.call(this, op);
|
||||
}
|
||||
if (op & PDP10.OPCODE.A_MASK) PDP10.opHLL.call(this, op);
|
||||
};
|
||||
|
||||
/**
|
||||
* opHRL(0o504000)
|
||||
* opHRL(0o504000): Half Word Right to Left
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-4:
|
||||
*
|
||||
* Move the right half of the source word specified by M to the left half of the specified destination.
|
||||
* The source and the destination right half are unaffected; the original contents of the destination left
|
||||
* half are lost.
|
||||
*
|
||||
* For HRL, the source is [E] and the destination is [A].
|
||||
*
|
||||
* @this {CPUStatePDP10}
|
||||
* @param {number} op
|
||||
*/
|
||||
PDP10.opHRL = function(op)
|
||||
{
|
||||
this.opUndefined(op);
|
||||
var a = op & PDP10.OPCODE.A_MASK;
|
||||
var src = this.readWord(this.regEA) & PDP10.WORD_MASK;
|
||||
var dst = this.readWord(a);
|
||||
dst = (dst & PDP10.WORD_MASK) + src * PDP10.WORD_SHIFT;
|
||||
this.writeWord(a, dst);
|
||||
};
|
||||
|
||||
/**
|
||||
* opHRLI(0o505000)
|
||||
* opHRLI(0o505000): Half Word Right to Left, Immediate
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-4:
|
||||
*
|
||||
* Move the right half of the source word specified by M to the left half of the specified destination.
|
||||
* The source and the destination right half are unaffected; the original contents of the destination left
|
||||
* half are lost.
|
||||
*
|
||||
* For HRLI, the source is 0,E and the destination is [A].
|
||||
*
|
||||
* @this {CPUStatePDP10}
|
||||
* @param {number} op
|
||||
*/
|
||||
PDP10.opHRLI = function(op)
|
||||
{
|
||||
this.opUndefined(op);
|
||||
var a = op & PDP10.OPCODE.A_MASK;
|
||||
var dst = this.readWord(a);
|
||||
dst = (dst & PDP10.WORD_MASK) + this.regEA * PDP10.WORD_SHIFT;
|
||||
this.writeWord(a, dst);
|
||||
};
|
||||
|
||||
/**
|
||||
* opHRLM(0o506000)
|
||||
* opHRLM(0o506000): Half Word Right to Left, Memory
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-4:
|
||||
*
|
||||
* Move the right half of the source word specified by M to the left half of the specified destination.
|
||||
* The source and the destination right half are unaffected; the original contents of the destination left
|
||||
* half are lost.
|
||||
*
|
||||
* For HRLM, the source is [A] and the destination is [E].
|
||||
*
|
||||
* @this {CPUStatePDP10}
|
||||
* @param {number} op
|
||||
*/
|
||||
PDP10.opHRLM = function(op)
|
||||
{
|
||||
this.opUndefined(op);
|
||||
var a = op & PDP10.OPCODE.A_MASK;
|
||||
var src = this.readWord(a) & PDP10.WORD_MASK;
|
||||
var dst = this.readWord(this.regEA);
|
||||
dst = (dst & PDP10.WORD_MASK) + src * PDP10.WORD_SHIFT;
|
||||
this.writeWord(this.regEA, dst);
|
||||
};
|
||||
|
||||
/**
|
||||
* opHRLS(0o507000)
|
||||
* opHRLS(0o507000): Half Word Right to Left, Self
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-4:
|
||||
*
|
||||
* Move the right half of the source word specified by M to the left half of the specified destination.
|
||||
* The source and the destination right half are unaffected; the original contents of the destination left
|
||||
* half are lost.
|
||||
*
|
||||
* For HRLS, the source is [E] and the destination is [E] (and also [A] if A is non-zero).
|
||||
*
|
||||
* @this {CPUStatePDP10}
|
||||
* @param {number} op
|
||||
*/
|
||||
PDP10.opHRLS = function(op)
|
||||
{
|
||||
this.opUndefined(op);
|
||||
var dst = this.readWord(this.regEA) & PDP10.WORD_MASK;
|
||||
this.writeWord(this.regEA, dst + dst * PDP10.WORD_SHIFT);
|
||||
var a = op & PDP10.OPCODE.A_MASK;
|
||||
if (a) {
|
||||
dst = this.readWord(a) & PDP10.WORD_MASK;
|
||||
this.writeWord(a, dst + dst * PDP10.WORD_SHIFT);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -3047,91 +3096,183 @@ PDP10.opHRLES = function(op)
|
|||
};
|
||||
|
||||
/**
|
||||
* opHRR(0o540000)
|
||||
* opHRR(0o540000): Half Word Right to Right
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-6:
|
||||
*
|
||||
* Move the right half of the source word specified by M to the right half of the specified destination.
|
||||
* The source and the destination left half are unaffected; the original contents of the destination right
|
||||
* half are lost.
|
||||
*
|
||||
* For HRR, the source is [E] and the destination is [A].
|
||||
*
|
||||
* @this {CPUStatePDP10}
|
||||
* @param {number} op
|
||||
*/
|
||||
PDP10.opHRR = function(op)
|
||||
{
|
||||
this.opUndefined(op);
|
||||
var a = op & PDP10.OPCODE.A_MASK;
|
||||
var src = this.readWord(this.regEA) & PDP10.WORD_MASK;
|
||||
var dst = this.readWord(a);
|
||||
dst = (dst - (dst & PDP10.WORD_MASK)) + src;
|
||||
this.writeWord(a, dst);
|
||||
};
|
||||
|
||||
/**
|
||||
* opHRRI(0o541000)
|
||||
* opHRRI(0o541000): Half Word Right to Right, Immediate
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-6:
|
||||
*
|
||||
* Move the right half of the source word specified by M to the right half of the specified destination.
|
||||
* The source and the destination left half are unaffected; the original contents of the destination right
|
||||
* half are lost.
|
||||
*
|
||||
* For HRRI, the source is 0,E and the destination is [A].
|
||||
*
|
||||
* @this {CPUStatePDP10}
|
||||
* @param {number} op
|
||||
*/
|
||||
PDP10.opHRRI = function(op)
|
||||
{
|
||||
this.opUndefined(op);
|
||||
var a = op & PDP10.OPCODE.A_MASK;
|
||||
var dst = this.readWord(a);
|
||||
dst = (dst - (dst & PDP10.WORD_MASK)) + this.regEA;
|
||||
this.writeWord(a, dst);
|
||||
};
|
||||
|
||||
/**
|
||||
* opHRRM(0o542000)
|
||||
* opHRRM(0o542000): Half Word Right to Right, Memory
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-6:
|
||||
*
|
||||
* Move the right half of the source word specified by M to the right half of the specified destination.
|
||||
* The source and the destination left half are unaffected; the original contents of the destination right
|
||||
* half are lost.
|
||||
*
|
||||
* For HRRM, the source is [A] and the destination is [E].
|
||||
*
|
||||
* @this {CPUStatePDP10}
|
||||
* @param {number} op
|
||||
*/
|
||||
PDP10.opHRRM = function(op)
|
||||
{
|
||||
this.opUndefined(op);
|
||||
var a = op & PDP10.OPCODE.A_MASK;
|
||||
var src = this.readWord(a) & PDP10.WORD_MASK;
|
||||
var dst = this.readWord(this.regEA);
|
||||
dst = (dst - (dst & PDP10.WORD_MASK)) + src;
|
||||
this.writeWord(this.regEA, dst);
|
||||
};
|
||||
|
||||
/**
|
||||
* opHRRS(0o543000)
|
||||
* opHRRS(0o543000): Half Word Right to Right, Self
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-6:
|
||||
*
|
||||
* Move the right half of the source word specified by M to the right half of the specified destination.
|
||||
* The source and the destination left half are unaffected; the original contents of the destination right
|
||||
* half are lost.
|
||||
*
|
||||
* SIDEBAR: If A is zero, HRRS is a no-op; otherwise it is equivalent to HRR.
|
||||
*
|
||||
* For HRRS, the source is [E] and the destination is [E] (and also [A] if A is non-zero).
|
||||
*
|
||||
* @this {CPUStatePDP10}
|
||||
* @param {number} op
|
||||
*/
|
||||
PDP10.opHRRS = function(op)
|
||||
{
|
||||
this.opUndefined(op);
|
||||
if (op & PDP10.OPCODE.A_MASK) PDP10.opHRR.call(this, op);
|
||||
};
|
||||
|
||||
/**
|
||||
* opHLR(0o544000)
|
||||
* opHLR(0o544000): Half Word Left to Right
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-7:
|
||||
*
|
||||
* Move the left half of the source word specified by M to the right half of the specified destination.
|
||||
* The source and the destination left half are unaffected; the original contents of the destination right half are lost.
|
||||
*
|
||||
* For HLR, the source is [E] and the destination is [A].
|
||||
*
|
||||
* @this {CPUStatePDP10}
|
||||
* @param {number} op
|
||||
*/
|
||||
PDP10.opHLR = function(op)
|
||||
{
|
||||
this.opUndefined(op);
|
||||
var a = op & PDP10.OPCODE.A_MASK;
|
||||
var src = (this.readWord(this.regEA) / PDP10.WORD_SHIFT)|0;
|
||||
var dst = this.readWord(a);
|
||||
dst = (dst - (dst & PDP10.WORD_MASK)) + src;
|
||||
this.writeWord(a, dst);
|
||||
};
|
||||
|
||||
/**
|
||||
* opHLRI(0o545000)
|
||||
* opHLRI(0o545000): Half Word Left to Right, Immediate
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-7:
|
||||
*
|
||||
* Move the left half of the source word specified by M to the right half of the specified destination.
|
||||
* The source and the destination left half are unaffected; the original contents of the destination right half are lost.
|
||||
*
|
||||
* SIDEBAR: HLRI merely clears AC right.
|
||||
*
|
||||
* For HLRI, the source is 0,E and the destination is [A].
|
||||
*
|
||||
* @this {CPUStatePDP10}
|
||||
* @param {number} op
|
||||
*/
|
||||
PDP10.opHLRI = function(op)
|
||||
{
|
||||
this.opUndefined(op);
|
||||
var a = op & PDP10.OPCODE.A_MASK;
|
||||
var dst = this.readWord(a);
|
||||
dst = (dst - (dst & PDP10.WORD_MASK));
|
||||
this.writeWord(a, dst);
|
||||
};
|
||||
|
||||
/**
|
||||
* opHLRM(0o546000)
|
||||
* opHLRM(0o546000): Half Word Left to Right, Memory
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-7:
|
||||
*
|
||||
* Move the left half of the source word specified by M to the right half of the specified destination.
|
||||
* The source and the destination left half are unaffected; the original contents of the destination right half are lost.
|
||||
*
|
||||
* For HLRM, the source is [A] and the destination is [E].
|
||||
*
|
||||
* @this {CPUStatePDP10}
|
||||
* @param {number} op
|
||||
*/
|
||||
PDP10.opHLRM = function(op)
|
||||
{
|
||||
this.opUndefined(op);
|
||||
var a = op & PDP10.OPCODE.A_MASK;
|
||||
var src = (this.readWord(a) / PDP10.WORD_SHIFT)|0;
|
||||
var dst = this.readWord(this.regEA);
|
||||
dst = (dst - (dst & PDP10.WORD_MASK)) + src;
|
||||
this.writeWord(this.regEA, dst);
|
||||
};
|
||||
|
||||
/**
|
||||
* opHLRS(0o547000)
|
||||
* opHLRS(0o547000): Half Word Left to Right, Self
|
||||
*
|
||||
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-7:
|
||||
*
|
||||
* Move the left half of the source word specified by M to the right half of the specified destination.
|
||||
* The source and the destination left half are unaffected; the original contents of the destination right half are lost.
|
||||
*
|
||||
* For HLRS, the source is [E] and the destination is [E] (and also [A] if A is non-zero).
|
||||
*
|
||||
* @this {CPUStatePDP10}
|
||||
* @param {number} op
|
||||
*/
|
||||
PDP10.opHLRS = function(op)
|
||||
{
|
||||
this.opUndefined(op);
|
||||
var dst = this.readWord(this.regEA);
|
||||
this.writeWord(this.regEA, (dst & PDP10.WORD_MASK) + ((dst / PDP10.WORD_SHIFT)|0));
|
||||
var a = op & PDP10.OPCODE.A_MASK;
|
||||
if (a) {
|
||||
dst = this.readWord(a);
|
||||
this.writeWord(a, (dst & PDP10.WORD_MASK) + ((dst / PDP10.WORD_SHIFT)|0));
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -100,7 +100,8 @@ var PDP10 = {
|
|||
ADDR_MASK: Math.pow(2, 18) - 1,
|
||||
DATA_INVALID: -1,
|
||||
DATA_LIMIT: Math.pow(2, 36),
|
||||
RHWORD_MASK: 0o777777,
|
||||
WORD_SHIFT: Math.pow(2, 18),
|
||||
WORD_MASK: 0o777777,
|
||||
|
||||
/*
|
||||
* PDP-10 opcodes are 36-bit values, most of which use the following layout:
|
||||
|
|
|
|||
|
|
@ -54,8 +54,8 @@ var Ra={"&":"&","<":"<",">":">",'"':""","'":"'"},Ua={0:"NUL"
|
|||
function Wa(){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 Xa(a,b){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;c<d;c++)if(c in a&&a[c]===b)return c;return-1}
|
||||
function Ya(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="",p;for(p in b)b.hasOwnProperty(p)&&(k&&(k+="&"),k+=p+"="+encodeURIComponent(b[p]));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 bb(a,b){var c,d={ma:null,ra:null,Qa:null,Ia: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")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Qa=g.load;d.Ia=g.exec;if(e=g.bytes)d.ma=e;else if(e=g.words)for(d.ma=Array(2*e.length),f=c=0;c<e.length;c++)d.ma[f++]=e[c]&255,d.ma[f++]=e[c]>>8&255;else if(e=g.data)for(d.ma=Array(4*e.length),f=c=0;c<e.length;c++)d.ma[f++]=
|
||||
e[c]&255,d.ma[f++]=e[c]>>8&255,d.ma[f++]=e[c]>>16&255,d.ma[f++]=e[c]>>24&255;else d.ma=g;d.ra=g.symbols;d.ma.length?1==d.ma.length&&(q(d.ma[0]),d=null):(q("Empty resource: "+a),d=null)}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){q("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.ma=e)}return d}
|
||||
function bb(a,b){var c,d={ka:null,ra:null,Qa:null,Ia: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.Qa=g.load;d.Ia=g.exec;if(e=g.bytes)d.ka=e;else if(e=g.words)for(d.ka=Array(2*e.length),f=c=0;c<e.length;c++)d.ka[f++]=e[c]&255,d.ka[f++]=e[c]>>8&255;else if(e=g.longs)for(d.ka=Array(4*e.length),f=c=0;c<e.length;c++)d.ka[f++]=
|
||||
e[c]&255,d.ka[f++]=e[c]>>8&255,d.ka[f++]=e[c]>>16&255,d.ka[f++]=e[c]>>24&255;else(e=g.data)?d.Mf=e:d.ka=g;d.ka&&(d.ka.length?1==d.ka.length&&(q(d.ka[0]),d=null):(q("Empty resource: "+a),d=null));d.ra=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){q("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.ka=e)}return d}
|
||||
function Pa(){return"http://"+(window?window.location.host:"www.pcjs.org")}function cb(){return window?window.navigator.userAgent:""}function db(){if(null==eb){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}eb=a}return eb}function fb(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function gb(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function hb(a){if(window){var b=cb();return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1}function ib(a){if(!jb){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," "))}jb=c}return jb[a]}
|
||||
function kb(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}function lb(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 mb(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}
|
||||
|
|
@ -79,24 +79,24 @@ l.rb=function(a,b){this.K&&Ea(this.K,129)&&this.K.message("attempt to write "+x(
|
|||
l.ze=function(a,b){var c=a>>2;a=(a&3)<<3;24>a?this.b[c]=this.b[c]&~(65535<<a)|b<<a:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.Ca=!0};l.ge=function(a,b){if(this.K&&null!=this.J){var c=this.K;yc(c,this.J+a,1,c.I)&&c.da(!0)}return this.ob(a,b)};l.ke=function(a,b){if(this.K&&null!=this.J){var c=this.K;yc(c,this.J+a,2,c.I)&&c.da(!0)}return this.Nb(a,b)};
|
||||
l.te=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;yc(d,this.J+a,1,d.w)&&d.da(!0)}this.u?this.rb(0,b):this.qb(a,b,c)};l.xe=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;yc(d,this.J+a,2,d.w)&&d.da(!0)}this.u?this.rb(0,b):this.Sb(a,b,c)};l.fe=function(a){return this.g[a]};l.he=function(a){return this.g[a]};l.je=function(a){return this.R.getUint16(a,!0)};l.le=function(a){return a&1?this.g[a]|this.g[a+1]<<8:this.w[a>>1]};l.se=function(a,b){this.g[a]=b;this.Ca=!0};
|
||||
l.ue=function(a,b){this.g[a]=b;this.Ca=!0};l.we=function(a,b){this.R.setUint16(a,b,!0);this.Ca=!0};l.ye=function(a,b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.w[a>>1]=b;this.Ca=!0};var dc=0,fc=2,Ib=["NONE","RAM","ROM","VID","H/W"],cc=0,tc=[],sc=[z.prototype.ie,z.prototype.ve,z.prototype.me,z.prototype.ze],wc=[z.prototype.ge,z.prototype.te,z.prototype.ke,z.prototype.xe];if(xb)var ic=[z.prototype.fe,z.prototype.se,z.prototype.je,z.prototype.we],hc=[z.prototype.he,z.prototype.ue,z.prototype.le,z.prototype.ye];
|
||||
function zc(a,b){n.call(this,"CPU",a,1);var c=a.multiplier||1;this.Fa=a.cycles||b;this.U=c;this.Ta=Math.round(this.Fa/1E4)/100;this.Z=this.Ta*this.U;this.G.ka=!1;this.G.Qb=!1;this.G.lb=a.autoStart;this.G.Bc=!1;this.G.Wa=!1;this.ya=this.oa=0;this.za=a.csStart;this.na=a.csInterval;this.sa=a.csStop;this.T=[];this.Db=this.tb.bind(this);Aa(this)}aa(zc,n);l=zc.prototype;
|
||||
function zc(a,b){n.call(this,"CPU",a,1);var c=a.multiplier||1;this.Fa=a.cycles||b;this.U=c;this.Ta=Math.round(this.Fa/1E4)/100;this.Z=this.Ta*this.U;this.G.la=!1;this.G.Qb=!1;this.G.lb=a.autoStart;this.G.Bc=!1;this.G.Wa=!1;this.ya=this.oa=0;this.za=a.csStart;this.na=a.csInterval;this.sa=a.csStop;this.T=[];this.Db=this.tb.bind(this);Aa(this)}aa(zc,n);l=zc.prototype;
|
||||
l.Ea=function(a,b,c,d){this.R=a;this.H=b;this.K=d;for(b=0;b<Ac.length;b++)(c=this.P[Ac[b]])&&this.R.ca(null,Ac[b],c);this.W=Bb(a,"ChipSet");a=Bc(a,"autoStart");null!=a&&(this.G.lb="true"==a?!0:"false"==a?!1:!!a);Aa(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};
|
||||
l.va=function(a,b){if(!b){if(a&&this.restore){Cc(this);if(!this.restore(a))return!1;Dc(this)}else this.reset();this.K?(a=this.K,a.i("Type ? for help with PC8080 Debugger commands"),Ec(a),a.ea&&(b=a.ea,a.ea=null,Fc(a,b))):this.i("No debugger detected")}Gc(this);return!0};l.ua=function(a){return a?this.save():!0};l.lb=function(){return this.G.lb||!this.K&&void 0===this.P.run?(this.tb(),!0):!1};l.Ec=function(){return 0};
|
||||
function Dc(a){void 0===a.za&&(a.za=0);void 0===a.na&&(a.na=-1);void 0===a.sa&&(a.sa=-1);a.G.Wa=0<=a.za&&0<a.na;a.G.Wa&&(a.ya=0,a.oa=a.za-a.la)}function Hc(a,b){if(a.G.Wa){var c=!1;a.ya=a.ya+a.Ec()|0;a.oa-=b;0>=a.oa&&(a.oa+=a.na,c=!0);0<=a.sa&&a.sa<=Ic(a)&&(a.na=a.sa=-1,Dc(a),a.da(),c=!0);c&&a.i(Ic(a)+" cycles: checksum="+t(a.ya))}}
|
||||
l.ca=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.P[b]=c;a=!0;break;case "run":this.P[b]=c;c.onclick=function(){var a;if(a=d.R)if(a=d.R,a.G.ja)a=!0;else{var b=null,c,h=ka(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.G.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.G.ja);c++);c==h.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.G.ready?"powered yet":"ready yet"+(b.zb?" (waiting for notification)":""))+".");a=!1}a&&(d.G.ka?d.da():d.tb())};
|
||||
a=!0;break;case "speed":this.P[b]=c;a=!0;break;case "setSpeed":this.P[b]=c,c.onclick=function(){Jc(d,d.U<<1,!0)},c.textContent=this.Z.toFixed(2)+"Mhz",a=!0}return a};function Kc(a,b,c){a.la+=b;c&&(a.ga=a.b=0)}function Lc(a,b){var c=1;b&&1<a.U&&a.Y&&(c=a.Y/a.Ta);a.jb=Math.round(1E3/Mc);a.Na=Math.floor(a.Fa/Mc*c);b||(a.wa=a.Na);a.Va=0}function Ic(a){return a.la+a.X+a.ga-a.b}function Cc(a){a.Y=0;a.kb=0;a.la=a.X=a.ga=a.b=0;Dc(a);Jc(a,1)}
|
||||
function Dc(a){void 0===a.za&&(a.za=0);void 0===a.na&&(a.na=-1);void 0===a.sa&&(a.sa=-1);a.G.Wa=0<=a.za&&0<a.na;a.G.Wa&&(a.ya=0,a.oa=a.za-a.ma)}function Hc(a,b){if(a.G.Wa){var c=!1;a.ya=a.ya+a.Ec()|0;a.oa-=b;0>=a.oa&&(a.oa+=a.na,c=!0);0<=a.sa&&a.sa<=Ic(a)&&(a.na=a.sa=-1,Dc(a),a.da(),c=!0);c&&a.i(Ic(a)+" cycles: checksum="+t(a.ya))}}
|
||||
l.ca=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.P[b]=c;a=!0;break;case "run":this.P[b]=c;c.onclick=function(){var a;if(a=d.R)if(a=d.R,a.G.ja)a=!0;else{var b=null,c,h=ka(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.G.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.G.ja);c++);c==h.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.G.ready?"powered yet":"ready yet"+(b.zb?" (waiting for notification)":""))+".");a=!1}a&&(d.G.la?d.da():d.tb())};
|
||||
a=!0;break;case "speed":this.P[b]=c;a=!0;break;case "setSpeed":this.P[b]=c,c.onclick=function(){Jc(d,d.U<<1,!0)},c.textContent=this.Z.toFixed(2)+"Mhz",a=!0}return a};function Kc(a,b,c){a.ma+=b;c&&(a.ga=a.b=0)}function Lc(a,b){var c=1;b&&1<a.U&&a.Y&&(c=a.Y/a.Ta);a.jb=Math.round(1E3/Mc);a.Na=Math.floor(a.Fa/Mc*c);b||(a.wa=a.Na);a.Va=0}function Ic(a){return a.ma+a.X+a.ga-a.b}function Cc(a){a.Y=0;a.kb=0;a.ma=a.X=a.ga=a.b=0;Dc(a);Jc(a,1)}
|
||||
function Jc(a,b,c){var d=!1;if(void 0!==b){.8>a.Y/a.Z?b=1:d=!0;a.U=b;b=a.Ta*a.U;if(a.Z!=b){a.Z=b;b=a.Z.toFixed(2)+"Mhz";var e=a.P.setSpeed;e&&(e.textContent=b);a.i("target speed: "+b)}c&&a.R&&a.R.Za()}Kc(a,a.X);a.X=0;a.V=ga();a.ea=0;Lc(a);return d}function Nc(a,b){var c=a.T.length;a.T.push([-1,b]);return c}function Oc(a,b,c){0<=b&&b<a.T.length&&0>a.T[b][0]&&(c*=a.Fa*a.U/1E3,a.T[b][0]=c+Pc(a))}function Pc(a,b){var c=a.ga-=a.b;a.b=0;b&&(a.ga=0);return c}
|
||||
l.tb=function(a){if(Da(this,!0)){if(!this.G.ka){Jc(this);this.R&&this.R.start(this.V,Ic(this));this.G.ka=!0;this.G.Qb=!0;this.W&&this.W.start();var b=this.P.run;b&&(b.textContent="Halt");this.R&&(Qc(this.R,!0),a&&this.R.Za(!0))}this.Va>=this.Fa&&Lc(this,!0);this.Ha=0;this.Ma=ga();this.ea&&(a=this.Ma-this.ea,a>this.jb&&(this.V+=a,this.V>this.Ma&&(this.V=this.Ma)));try{do{for(var c,d=this.G.Wa?1:this.Na,e=this.T.length-1;0<=e;e--){var f=this.T[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.Eb(c);c=Pc(this,!0);
|
||||
this.Ha+=c;this.X+=c;Hc(this,c);a=c;for(var g=this.T.length-1;0<=g;g--){var h=this.T[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.wa-=c;if(0>=this.wa){this.wa+=this.Na;++this.kb>=Rc&&(this.R&&Qc(this.R),this.kb=0);break}}while(this.G.ka)}catch(k){this.da();Gc(this);this.R&&this.R.stop(ga(),Ic(this));Da(this,!1);xa(this,k.stack||k.message);return}c=setTimeout;d=this.Db;this.ea=ga();e=this.jb;this.Ha&&(e=Math.round(e*this.Ha/this.Na));e-=this.ea-this.Ma;if(f=this.ea-this.V)this.Y=Math.round(this.X/
|
||||
(10*f))/100,864E5<=f&&(this.la=0,Jc(this));if(0>e||this.Y<this.Z)-1E3>e&&(this.V-=e),e=0;this.Va+=this.Ha;this.ea+=e;c(d,e)}else Gc(this),this.R&&this.R.stop(ga(),Ic(this))};l.Eb=function(){return 0};l.da=function(a){Ca(this,!0);Pc(this);Kc(this,this.X);this.X=0;if(this.G.ka){this.G.ka=!1;this.W&&this.W.stop();var b=this.P.run;b&&(b.textContent="Run")}this.G.complete=a};function Gc(a,b){if(a.R){for(var c=a.R,d=0;d<c.A.length;d++)Sc(c.A[d],b);Qc(a.R,b)}}var Mc=30,Rc=15,Ac=["power","reset"];
|
||||
function Tc(a){var b=+a.model||8080;zc.call(this,a,1E6);this.xb=b;this.gb=Uc;Cc(this);this.G.complete=this.G.zd=!1;this.ib=0;this.La=[];this.hb=0;Vc(this)}aa(Tc,zc);function Wc(a,b){a.La.push(b)}l=Tc.prototype;l.reset=function(){this.G.ka&&this.da();Vc(this);Cc(this);this.G.error=!1;zc.prototype.reset.call(this)};function Vc(a){a.g=0;a.w=0;a.A=0;a.B=0;a.C=0;a.D=0;a.F=0;a.M=0;A(a,a.hb);Xc(a,0);a.S=0}function jd(a,b){a.hb=b;A(a,b)}
|
||||
l.Ec=function(){var a=this.g+this.w+this.A+this.B+this.C+this.D+this.F|0;return a=a+this.M+this.j+kd(this)|0};l.save=function(){var a=new ld(this);a.set(0,[this.g,this.w,this.A,this.B,this.C,this.D,this.F,this.M,this.j,kd(this)]);a.set(1,[this.S,this.la,this.U]);a.set(2,Rb(this.H));return a.data()};
|
||||
l.restore=function(a){var b=a[0];this.g=b[0];this.w=b[1];this.A=b[2];this.B=b[3];this.C=b[4];this.D=b[5];this.F=b[6];this.M=b[7]&65535;A(this,b[8]);Xc(this,b[9]);b=a[1];this.S=b[0];this.la=b[1];Jc(this,b[3]);a:{b=this.H;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.O){for(var f=0,g=Array(b.O),h=0;h<e.length-1;)for(var k=e[h++],p=e[h++];k--;)g[f++]=p;e=g}f=b.b[d];if(!f||!f.restore(e)){q("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
l.tb=function(a){if(Da(this,!0)){if(!this.G.la){Jc(this);this.R&&this.R.start(this.V,Ic(this));this.G.la=!0;this.G.Qb=!0;this.W&&this.W.start();var b=this.P.run;b&&(b.textContent="Halt");this.R&&(Qc(this.R,!0),a&&this.R.Za(!0))}this.Va>=this.Fa&&Lc(this,!0);this.Ha=0;this.Ma=ga();this.ea&&(a=this.Ma-this.ea,a>this.jb&&(this.V+=a,this.V>this.Ma&&(this.V=this.Ma)));try{do{for(var c,d=this.G.Wa?1:this.Na,e=this.T.length-1;0<=e;e--){var f=this.T[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.Eb(c);c=Pc(this,!0);
|
||||
this.Ha+=c;this.X+=c;Hc(this,c);a=c;for(var g=this.T.length-1;0<=g;g--){var h=this.T[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.wa-=c;if(0>=this.wa){this.wa+=this.Na;++this.kb>=Rc&&(this.R&&Qc(this.R),this.kb=0);break}}while(this.G.la)}catch(k){this.da();Gc(this);this.R&&this.R.stop(ga(),Ic(this));Da(this,!1);xa(this,k.stack||k.message);return}c=setTimeout;d=this.Db;this.ea=ga();e=this.jb;this.Ha&&(e=Math.round(e*this.Ha/this.Na));e-=this.ea-this.Ma;if(f=this.ea-this.V)this.Y=Math.round(this.X/
|
||||
(10*f))/100,864E5<=f&&(this.ma=0,Jc(this));if(0>e||this.Y<this.Z)-1E3>e&&(this.V-=e),e=0;this.Va+=this.Ha;this.ea+=e;c(d,e)}else Gc(this),this.R&&this.R.stop(ga(),Ic(this))};l.Eb=function(){return 0};l.da=function(a){Ca(this,!0);Pc(this);Kc(this,this.X);this.X=0;if(this.G.la){this.G.la=!1;this.W&&this.W.stop();var b=this.P.run;b&&(b.textContent="Run")}this.G.complete=a};function Gc(a,b){if(a.R){for(var c=a.R,d=0;d<c.A.length;d++)Sc(c.A[d],b);Qc(a.R,b)}}var Mc=30,Rc=15,Ac=["power","reset"];
|
||||
function Tc(a){var b=+a.model||8080;zc.call(this,a,1E6);this.xb=b;this.gb=Uc;Cc(this);this.G.complete=this.G.zd=!1;this.ib=0;this.La=[];this.hb=0;Vc(this)}aa(Tc,zc);function Wc(a,b){a.La.push(b)}l=Tc.prototype;l.reset=function(){this.G.la&&this.da();Vc(this);Cc(this);this.G.error=!1;zc.prototype.reset.call(this)};function Vc(a){a.g=0;a.w=0;a.A=0;a.B=0;a.C=0;a.D=0;a.F=0;a.M=0;A(a,a.hb);Xc(a,0);a.S=0}function jd(a,b){a.hb=b;A(a,b)}
|
||||
l.Ec=function(){var a=this.g+this.w+this.A+this.B+this.C+this.D+this.F|0;return a=a+this.M+this.j+kd(this)|0};l.save=function(){var a=new ld(this);a.set(0,[this.g,this.w,this.A,this.B,this.C,this.D,this.F,this.M,this.j,kd(this)]);a.set(1,[this.S,this.ma,this.U]);a.set(2,Rb(this.H));return a.data()};
|
||||
l.restore=function(a){var b=a[0];this.g=b[0];this.w=b[1];this.A=b[2];this.B=b[3];this.C=b[4];this.D=b[5];this.F=b[6];this.M=b[7]&65535;A(this,b[8]);Xc(this,b[9]);b=a[1];this.S=b[0];this.ma=b[1];Jc(this,b[3]);a:{b=this.H;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.O){for(var f=0,g=Array(b.O),h=0;h<e.length-1;)for(var k=e[h++],p=e[h++];k--;)g[f++]=p;e=g}f=b.b[d];if(!f||!f.restore(e)){q("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
l.ca=function(a,b,c){switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.P[b]=c;this.ib++;a=!0;break;default:a=zc.prototype.ca.call(this,a,b,c)}return a};function md(a){return a.w<<8|a.A}function nd(a,b){a.w=b>>8&255;a.A=b&255}function od(a){return a.B<<8|a.C}function pd(a,b){a.B=b>>8&255;a.C=b&255}function D(a){return a.D<<8|a.F}
|
||||
function qd(a,b){a.D=b>>8&255;a.F=b&255}function A(a,b){a.j=b&65535}function rd(a){return a.I&256?1:0}function sd(a,b){a.I=a.I&255|b}function td(a){return yb[a.L&255]?4:0}function ud(a){return(a.L^a.O)&16?16:0}function vd(a){return a.I&255?0:64}function wd(a){return a.L&128?128:0}function kd(a){return a.N&-214|wd(a)|vd(a)|ud(a)|td(a)|rd(a)}function Xc(a,b){a.I=a.L=a.O=0;b&1&&(a.I|=256);b&4||(a.L|=1);b&16&&(a.O|=16);b&64||(a.I|=255);b&128&&(a.L^=192);a.N=a.N&-726|b&512|2}
|
||||
function xd(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b)&255}function yd(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?1:0))&255}function zd(a,b){a.I=a.L=a.O=a.g&b;(a.g|b)&8&&(a.O^=16);return a.I}function Ad(a,b){a.O=b^255;b=a.L=b+255&255;a.I=a.I&-256|b;return b}function Bd(a,b){a.O=b;b=a.L=b+1&255;a.I=a.I&-256|b;return b}function Cd(a,b){return a.L=a.I=a.O=a.g|b}function Dd(a,b){b^=255;a.O=a.g^b;return a.L=(a.I=a.g+b+1^256)&255}
|
||||
function Ed(a,b){b^=255;a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?0:1)^256)&255}function Fd(a,b){return a.L=a.I=a.O=a.g^b}function E(a,b){a=a.H;return a.b[(b&a.C)>>>a.g].Ya(b&a.j,b)}function Gd(a,b,c){a=a.H;a.b[(b&a.C)>>>a.g].$a(b&a.j,c&255,b)}function F(a){var b=E(a,a.j);A(a,a.j+1);return b}function G(a){var b=Lb(a.H,a.j);A(a,a.j+2);return b}function Hd(a){var b=Lb(a.H,a.M);a.M=a.M+2&65535;return b}function H(a,b){a.M=a.M-2&65535;Qb(a.H,a.M,b)}
|
||||
function Id(a){if(a.b&&a.S&255&&a.N&512){for(var b=0;8>b&&!(a.S&1<<b);b++);a.S&=~(0>b?255:1<<b);a.N&=-513;a.S&=-257;a.gb[199|b<<3].call(a)}return a.S&256?(Pc(a),!1):!0}function Jd(a,b){a.S|=1<<b;a.N&512&&Pc(a)}function I(a,b,c,d){d=d||2;a.P[b]&&(void 0===c&&(xa(a,"Value for "+b+" is invalid"),a.da()),c=!a.G.ka||a.G.Bc?t(c,d):"--------".substr(0,d),a.P[b].textContent!=c&&(a.P[b].textContent=c))}
|
||||
function Id(a){if(a.b&&a.S&255&&a.N&512){for(var b=0;8>b&&!(a.S&1<<b);b++);a.S&=~(0>b?255:1<<b);a.N&=-513;a.S&=-257;a.gb[199|b<<3].call(a)}return a.S&256?(Pc(a),!1):!0}function Jd(a,b){a.S|=1<<b;a.N&512&&Pc(a)}function I(a,b,c,d){d=d||2;a.P[b]&&(void 0===c&&(xa(a,"Value for "+b+" is invalid"),a.da()),c=!a.G.la||a.G.Bc?t(c,d):"--------".substr(0,d),a.P[b].textContent!=c&&(a.P[b].textContent=c))}
|
||||
l.Eb=function(a){this.G.complete=!0;var b=this.G.zd=this.K&&Kd(this.K),c=a?this.G.Qb?0:1:-1;this.G.Qb=!1;this.ga=this.b=a;if(Id(this)){do{if(b){if(Ld(this.K,this.j,c)){this.da();break}c=1}this.gb[F(this)].call(this)}while(0<this.b)}return this.G.complete?this.ga-this.b:void 0===this.G.complete?0:-1};ob(function(){for(var a=qa(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Tc(d);pa(d,c)}});function Md(){this.b-=4}function Nd(){A(this,G(this));this.b-=10}
|
||||
function Od(){A(this,Hd(this));this.b-=10}function Pd(){var a=G(this);H(this,this.j);A(this,a);this.b-=17}
|
||||
var Uc=[Md,function(){nd(this,G(this));this.b-=10},function(){Gd(this,md(this),this.g);this.b-=7},function(){nd(this,md(this)+1);this.b-=5},function(){this.w=Bd(this,this.w);this.b-=5},function(){this.w=Ad(this,this.w);this.b-=5},function(){this.w=F(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|a>>8;sd(this,a&256);this.b-=4},Md,function(){var a;qd(this,a=D(this)+md(this));sd(this,a>>8&256);this.b-=10},function(){this.g=E(this,md(this));this.b-=7},function(){nd(this,md(this)-1);this.b-=
|
||||
|
|
@ -138,12 +138,12 @@ J.INIT=[[J.Oc.INIT,J.xa.ic|J.xa.dd],[J.Ka.Uc,J.Ka.Vc],[J.ub.Xc,J.ub.Tc,J.ub.Wc,J
|
|||
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];Td.Bb={0:Qd.prototype.Jd,1:Qd.prototype.Kd,2:Qd.prototype.Ld,3:Qd.prototype.Id};
|
||||
Td.Cb={2:Qd.prototype.Wd,3:Qd.prototype.Yd,4:Qd.prototype.Xd,5:Qd.prototype.Zd,6:Qd.prototype.$d};J.Bb={66:Qd.prototype.Md};J.Cb={66:Qd.prototype.ae,98:Qd.prototype.de,162:Qd.prototype.ce,194:Qd.prototype.be};ob(function(){for(var a=qa(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Qd(d);pa(d,c)}});
|
||||
function Yd(a){n.call(this,"ROM",a);this.b=null;this.A=a.addr;this.g=a.size;this.w=a.alias;this.j=a.file;this.B=Ka(this.j);if(this.j){a=this.j;var b=La(this.B);"json"!=b&&"hex"!=b&&(a=Pa()+"/api/v1/dump?file="+this.j+"&format=bytes&decimal=true");var c=this;Ya(a,null,!0,function(a,b,f){Zd(c,a,b,f)})}}aa(Yd,n);Yd.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;$d(this)};
|
||||
Yd.prototype.va=function(){if(this.ra){if(this.K){var a=this.K,b=this.id,c=this.A,d=this.g,e=this.ra,f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var k=h.o,p=h.a;if(void 0!==k){var u=f,k=[k>>>0,g],v=Va(u,k,a.Ac);0>v&&u.splice(-(v+1),0,k)}p&&(h.a=p.replace(/''/g,'"'))}a.A.push({Mf:b,J:c,Qd:d,ra:e,zc:f})}delete this.ra}return!0};Yd.prototype.ua=function(){return!0};
|
||||
Yd.prototype.va=function(){if(this.ra){if(this.K){var a=this.K,b=this.id,c=this.A,d=this.g,e=this.ra,f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var k=h.o,p=h.a;if(void 0!==k){var u=f,k=[k>>>0,g],v=Va(u,k,a.Ac);0>v&&u.splice(-(v+1),0,k)}p&&(h.a=p.replace(/''/g,'"'))}a.A.push({Nf:b,J:c,Qd:d,ra:e,zc:f})}delete this.ra}return!0};Yd.prototype.ua=function(){return!0};
|
||||
function Zd(a,b,c,d){if(d)a.aa("Unable to load system ROM (error "+d+": "+b+")");else{ea(a.eb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.data;if(f)a.b=f;else if(g)for(a.b=Array(4*g.length),d=c=0;c<g.length;c++)a.b[d++]=g[c]&255,a.b[d++]=g[c]>>8&255,a.b[d++]=g[c]>>16&255,a.b[d++]=g[c]>>24&255;else a.b=e;a.ra=e.symbols;if(!a.b.length){q("Empty ROM: "+b);return}if(1==a.b.length){q(a.b[0]);return}}catch(h){a.aa("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=Ha(b[e],16);$d(a)}}
|
||||
function $d(a){if(!ya(a))if(!a.j)Aa(a);else if(a.b&&a.H){a.g||(a.g=a.b.length);if(a.b.length!=a.g)xa(a,"ROM size ("+t(a.b.length,8,!0)+") does not match specified size ("+t(a.g,8,!0)+")");else{var b;b=a.A;if(Fb(a.H,b,a.g,fc)){var c;for(c=0;c<a.b.length;c++)Pb(a.H,b+c,a.b[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.H,g=d.g,h=[],k=d.A>>>f.g;0<g&&k<f.b.length;)h.push(f.b[k++]),g-=f.w;f=d.H;d=d.g;g=0;for(e>>>=
|
||||
f.g;0<d&&e<f.b.length;){k=h[g++];if(!k)break;f.b[e++]=k;d-=f.w}}delete a.b}}Aa(a)}}ob(function(){for(var a=qa(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Yd(d);pa(d,c)}});
|
||||
function ae(a){n.call(this,"RAM",a);this.ra=this.g=null;this.w=a.addr;this.A=a.size;this.Qa=a.load;this.Ia=a.exec;this.j=!1;this.b=a.file;this.B=Ka(this.b);if(this.b){a=this.b;var b=La(this.B);"json"!=b&&"hex"!=b&&(a=Pa()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;Ya(a,null,!0,function(a,b,f){f?c.aa("Unable to load RAM resource (error "+f+": "+a+")"):(ea(c.eb,a,b),(a=bb(a,b))?(c.g=a.ma,c.ra=a.ra,null==c.Qa&&(c.Qa=a.Qa),null==c.Ia&&(c.Ia=a.Ia)):c.b=null,be(c))})}}aa(ae,n);
|
||||
function ae(a){n.call(this,"RAM",a);this.ra=this.g=null;this.w=a.addr;this.A=a.size;this.Qa=a.load;this.Ia=a.exec;this.j=!1;this.b=a.file;this.B=Ka(this.b);if(this.b){a=this.b;var b=La(this.B);"json"!=b&&"hex"!=b&&(a=Pa()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;Ya(a,null,!0,function(a,b,f){f?c.aa("Unable to load RAM resource (error "+f+": "+a+")"):(ea(c.eb,a,b),(a=bb(a,b))?(c.g=a.ka,c.ra=a.ra,null==c.Qa&&(c.Qa=a.Qa),null==c.Ia&&(c.Ia=a.Ia)):c.b=null,be(c))})}}aa(ae,n);
|
||||
ae.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;be(this)};ae.prototype.va=function(){return!0};ae.prototype.ua=function(){return!0};
|
||||
function be(a){!a.j&&a.A&&Fb(a.H,a.w,a.A,1)&&(a.j=!0);if(!ya(a)){if(!a.j)q("No RAM allocated");else if(a.b){if(!a.g||!a.H)return;var b=a.w;null!==a.Qa&&(b=a.Qa);for(var c=0;c<a.g.length;c++)Pb(a.H,b+c,a.g[c]);if(null!==a.Ia){if(a.Ia==ce){for(c=0;c<de.length;c++)Pb(a.H,de[c],118);Wc(a.u,function(a){return function(b){if(0<=de.indexOf(b)){var c=!1,d=a.u,e=a.K;if(b==ee)switch(c=!0,d.A){case fe:ge(a,String.fromCharCode(d.C));break;case he:for(var k=od(d),p="",u=255;u--;){var v=E(a.u,k++);if(36==v)break;
|
||||
p+=String.fromCharCode(v)}ge(a,p);break;default:c=!1}c?Od.call(d):e&&(a.i("\nCP/M vector "+x(b)),A(d,b),e.da());b=!0}else b=!1;return b}}(a))}jd(a.u,a.Ia)}delete a.g}Aa(a)}}ae.prototype.reset=function(){};function ge(a,b){b=b.replace(/\r/g,"");a.ta&&(a.ta.value+=b,a.ta.scrollTop=a.ta.scrollHeight)}var ee=5,fe=2,he=9,ce=256,de=[0,ee];ob(function(){for(var a=qa(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new ae(d);pa(d,c)}});
|
||||
|
|
@ -165,11 +165,11 @@ M[96]=67,M[118]=68,M[220]=69,M[m.Hb]=70,M[m.cc]=71,M[m.Zb]=72,M[m.Yb]=73,M[m.ab]
|
|||
120,N[m.xd]=121,N[m.z]=122,N[m.mc]=133,N[m.lc]=134,N[m.xc]=135,N[m.qc]=136,N[m.uc]=137,N[m.Q]=138,N[m["}"]]=148,N[m["{"]]=149,N[m.ac]=150,N[m.rc]=151,N[m.nc]=152,N[m.E]=153,N[m["!"]]=154,N[m["~"]]=164,N[m._]=165,N[m["("]]=166,N[m["&"]]=167,N[m.$]=168,N[m["#"]]=169,N[m["+"]]=180,N[m[")"]]=181,N[m["*"]]=182,N[m["^"]]=183,N[m["%"]]=184,N[m["@"]]=185,N[m["|"]]=197,N[m.Hb]=198,N[m.cc]=199,N[m.Zb]=200,N[m.Yb]=201,N[m.ab]=202,N[m['"']]=213,N[m[":"]]=214,N[m.bc]=215,N[m.$b]=216,N[m.Fb]=217,N[m.pc]=218,N[m[">"]]=
|
||||
229,N[m["<"]]=230,N[m.hc]=231,N[m.Ub]=232,N[m.wc]=233,N[m["?"]]=245,N[m.gc]=246,N[m.tc]=248,N[m.Vb]=249,N[m.wb]=250,N),Tb:{},fb:{},Ua:{"caps-lock":20,ctrl:17,esc:27,tab:9,"num-comma":116,"break":117,"line-feed":118,"no-scroll":119,setup:120},Nc:{qa:130,INIT:127},Ba:{qa:130,bd:1,ad:2,$c:4,Zc:8,cd:16,fc:32,ec:63,od:64,Ce:128,INIT:0},Yc:127};K.fb={l4:K.Ba.bd,l3:K.Ba.ad,l2:K.Ba.$c,l1:K.Ba.Zc,locked:K.Ba.cd,local:K.Ba.fc,online:~K.Ba.fc,"caps-lock":Je};var Ee={SI1978:Pe,VT100:K};
|
||||
K.INIT=[[K.Ba.INIT,K.Nc.INIT,!1,0,-1]];K.Bb={130:ie.prototype.Nd};K.Cb={130:ie.prototype.ee};ob(function(){for(var a=qa(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new ie(d);pa(d,c)}});
|
||||
function bf(a,b,c,d,e){n.call(this,"Video",a,262144);var f=this;this.Ta=hb("Gecko/");var g=["","moz","ms","webkit"];this.M=a.screenWidth;this.I=a.screenHeight;this.la=a.bufferAddr;this.vd=a.bufferRAM;var h=a.bufferFormat;this.Y=h&&cf[h.toUpperCase()]||df;this.O=a.bufferCols;this.Z=a.bufferRows;this.Ha=this.fa=a.cellWidth||1;this.ba=a.cellHeight||1;this.ea=null;this.Na=!1;this.na=a.bufferBits||1;this.yd=a.bufferLeft||0;if(this.g=a.bufferRotate)this.g=this.g%360,0<this.g&&(this.g-=360),-90!=this.g&&
|
||||
function bf(a,b,c,d,e){n.call(this,"Video",a,262144);var f=this;this.Ta=hb("Gecko/");var g=["","moz","ms","webkit"];this.M=a.screenWidth;this.I=a.screenHeight;this.ma=a.bufferAddr;this.vd=a.bufferRAM;var h=a.bufferFormat;this.Y=h&&cf[h.toUpperCase()]||df;this.O=a.bufferCols;this.Z=a.bufferRows;this.Ha=this.fa=a.cellWidth||1;this.ba=a.cellHeight||1;this.ea=null;this.Na=!1;this.na=a.bufferBits||1;this.yd=a.bufferLeft||0;if(this.g=a.bufferRotate)this.g=this.g%360,0<this.g&&(this.g-=360),-90!=this.g&&
|
||||
(this.aa("unsupported buffer rotation: "+this.g),this.g=0);this.oa=a.interruptRate;this.kb=a.refreshRate||60;this.F=b;this.j=c;this.V=(this.Cd=d)||b||null;this.Db=this.M;this.td=this.I;this.La=this.M/this.O|0;this.Ma=this.I/this.Z|0;1<this.ba&&(this.Z++,this.sa=0,this.ya=!1);b=a.smoothing;(c=ib("smoothing"))&&(b="true"==c);if(null!=b)for(c=0;c<g.length;c++)if(d=(d=g[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.j[d]){this.j[d]=b;break}if(this.w=a.screenRotate)this.w=this.w%360,
|
||||
0<this.w&&(this.w-=360),-90!=this.w?(this.aa("unsupported screen rotation: "+this.w),this.w=0):(this.j.translate(0,this.I),this.j.rotate(this.w*Math.PI/180),this.j.scale(this.I/this.M,this.M/this.I));if(this.b=e)if(this.b.Xa=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.Xa){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){ef(f,!!(document.fullscreenElement||document.msFullscreenElement||
|
||||
document.mozFullScreenElement||document.webkitFullscreenElement))},!1);break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){ef(f,null)},!1);break}}if(this.S=a.fontROM)"json"!=La(this.S)&&(this.S=Pa()+"/api/v1/dump?file="+this.S+"&format=bytes"),Ya(this.S,null,!0,function(a,b,c){ff(f,a,b,c)});this.Fa={}}aa(bf,n);
|
||||
function Wd(a){a.C=a.O*a.fa;a.N=a.Z*a.ba;var b=a.C,c=a.N;a.g&&(b=a.N,c=a.C);a.L=0;if(!a.vd&&(a.L=(a.C*a.na>>3)*a.N,!Fb(a.H,a.la,a.L,3)))return!1;a.L?(a.Va=a.j.createImageData(b,c),a.hb=16/a.na|0,gf(a,a.L>>1)):gf(a,(a.O+1)*a.Z);a.D=document.createElement("canvas");a.D.width=b;a.D.height=c;a.wa=a.D.getContext("2d");a.T={};a.X=1<<a.na;a.U=Array(a.X+hf);a.U[0]=[0,0,0,255];a.U[1]=[255,255,255,255];a.Y==jf&&(a.U[a.X+kf]=[255,255,0,255],a.U[a.X+lf]=[0,255,0,255]);a.Y==mf&&(a.jb=60,a.za=!1,a.ga=Array(a.O));
|
||||
function Wd(a){a.C=a.O*a.fa;a.N=a.Z*a.ba;var b=a.C,c=a.N;a.g&&(b=a.N,c=a.C);a.L=0;if(!a.vd&&(a.L=(a.C*a.na>>3)*a.N,!Fb(a.H,a.ma,a.L,3)))return!1;a.L?(a.Va=a.j.createImageData(b,c),a.hb=16/a.na|0,gf(a,a.L>>1)):gf(a,(a.O+1)*a.Z);a.D=document.createElement("canvas");a.D.width=b;a.D.height=c;a.wa=a.D.getContext("2d");a.T={};a.X=1<<a.na;a.U=Array(a.X+hf);a.U[0]=[0,0,0,255];a.U[1]=[255,255,255,255];a.Y==jf&&(a.U[a.X+kf]=[255,255,0,255],a.U[a.X+lf]=[0,255,0,255]);a.Y==mf&&(a.jb=60,a.za=!1,a.ga=Array(a.O));
|
||||
return!0}l=bf.prototype;l.ca=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Fa[b]=c,!0;switch(b){case "fullScreen":return this.P[b]=c,this.b&&this.b.Xa?c.onclick=function(){d.Xa()}:c.parentNode.removeChild(c),!0}return!1};
|
||||
l.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;Wd(this);if(this.B=Bb(a,"Keyboard")){for(var e in this.Fa)this.B.ca("led",e,this.Fa[e]);this.F&&this.B.ca(this.Cd?"textarea":"canvas","screen",this.V)}var f=this;this.xb=Nc(this.u,function(){Sc(f)});Oc(this.u,this.xb,1E3/Math.max(this.kb,this.oa));this.ib=0;this.S||Aa(this)};
|
||||
function ff(a,b,c,d){if(d)a.aa("Unable to load font ROM (error "+d+": "+b+")");else{ea(a.eb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){q("Empty font ROM: "+b);return}if(1==f.length){q(f[0]);return}if(2048==f.length)a.ea=f,Xd(a);else{a.aa("Unrecognized font data length ("+f.length+")");return}}catch(g){a.aa("Font ROM data error: "+g.message);return}(a.j||a.K)&&Aa(a)}}
|
||||
|
|
@ -178,9 +178,9 @@ function of(a,b,c,d){var e=8>=a.Ha?8:16,f=8<e?15:0,g=a.ea.length/e,h=!1===d,k={f
|
|||
(u&15)*b,(u>>4)*c)}return k}l.va=function(a,b){return b||!a||this.restore(a)?!0:!1};l.ua=function(a){return!a||this.save()};l.save=function(){var a=new ld(this);a.set(0,[]);return a.data()};l.restore=function(){return!0};
|
||||
l.Xa=function(){var a=!1;if(this.b){if(this.b.Xa){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.M/this.I;b>c&&(a=Math.round(c/b*100)+"%")}this.Ta?(this.F.style.width=a,this.F.style.width=a,this.F.style.display="block",this.F.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.Xa();a=!0}this.V&&this.V.focus()}return a};
|
||||
function ef(a,b){!b&&a.b&&(a.Ta?a.F.style.width=a.F.style.height="":a.b.style.width=a.b.style.height="");Fa(a,"notifyFullScreen("+b+")")}function gf(a,b){a.gb=b;a.W=!1;if(void 0===a.A||a.A.length!=a.gb)a.A=Array(a.gb)}function sf(a,b,c,d,e){d=a.g?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.Y==jf&&(208<=c&&236>c?e=a.X+kf:28<=c&&72>c&&(e=a.X+lf));a=a.U[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
|
||||
function Sc(a,b){var c=!0;if(!b){a.oa&&(120==a.oa?a.ib&1?(Jd(a.u,2),c=!1):Jd(a.u,1):Jd(a.u,4));if(c&&a.W&&a.L){for(var d=a.H,e=a.L,f=!0,g=a.la>>>d.g;0<e&&g<d.b.length;)d.b[g].Ca&&(d.b[g].Ca=f=!1,d.b[g].Dc=!0),e-=d.w,g++;f&&(c=!1)}Oc(a.u,a.xb,1E3/Math.max(a.kb,a.oa));a.ib++}if(c)if(1<a.fa)switch(a.Y){case mf:for(var c=a.la,d=-1,e=0,f=60==a.jb?2:5,h=g=0,k=-1;e<a.Z;){var p=0,u=c,v=d,B=a.O;for(v!=nf&&(B>>=1);;){var y=Kb(a.H,u++);if((y&tf)==tf){var w=Kb(a.H,u++),d=w&uf,c=(w&vf)<<8|Kb(a.H,u),c=c+(w&wf?
|
||||
function Sc(a,b){var c=!0;if(!b){a.oa&&(120==a.oa?a.ib&1?(Jd(a.u,2),c=!1):Jd(a.u,1):Jd(a.u,4));if(c&&a.W&&a.L){for(var d=a.H,e=a.L,f=!0,g=a.ma>>>d.g;0<e&&g<d.b.length;)d.b[g].Ca&&(d.b[g].Ca=f=!1,d.b[g].Dc=!0),e-=d.w,g++;f&&(c=!1)}Oc(a.u,a.xb,1E3/Math.max(a.kb,a.oa));a.ib++}if(c)if(1<a.fa)switch(a.Y){case mf:for(var c=a.ma,d=-1,e=0,f=60==a.jb?2:5,h=g=0,k=-1;e<a.Z;){var p=0,u=c,v=d,B=a.O;for(v!=nf&&(B>>=1);;){var y=Kb(a.H,u++);if((y&tf)==tf){var w=Kb(a.H,u++),d=w&uf,c=(w&vf)<<8|Kb(a.H,u),c=c+(w&wf?
|
||||
xf:yf);break}if(p<B)a.ga[p++]=y;else break}if(f)f--;else{for(;p<a.ga.length;)a.ga[p++]=0;if(0<=v)for(u=a.W&&a.A[g]==B,a.A[g++]=B,B=0;B<p;B++){y=a.ga[B];if(!u||y!==a.A[g]){a.A[k=g]=y;var w=a,C=a.wa,T=y&127;if(y=w.T[v][y&128?1:0]){var za=(T&15)*y.fa,T=(T>>4)*y.ba,L,ja,ua,na,Ma=y.fa,ec=y.ba;C?(L=B*w.fa,ja=e*w.ba,ua=w.fa,na=w.ba):(L=B*w.La,ja=e*w.Ma,ua=w.La,na=w.Ma);y.fa>w.fa&&(L*=2,ua*=2);y.ba>w.ba&&(v==rf&&(T+=w.ba),ec=w.ba);C?C.drawImage(y.canvas,za,T,Ma,ec,L,ja,ua,na):(L+=0,ja+=0,w.j.drawImage(y.canvas,
|
||||
za,T,Ma,ec,L,ja,ua,na))}h++}g++}e++}}a.W=!0;!b&&a.ya&&1==h&&(a.A[k]=-1,h=0);a.ya=!1;(h||b)&&a.wa&&a.j.drawImage(a.D,0,a.sa,a.C,a.N-a.ba,0,0,a.Db,a.td)}else{e=a.la;f=e+a.L;k=h=g=0;b=a.C;p=0;c=a.N;v=d=0;u=a.na;B=(1<<u)-1;a.yd&&(u=-u,v=16+u);for(;e<f;){w=Ob(a.H,e);if(a.W&&w===a.A[g])h+=a.hb;else{a.A[g]=w;(C=v)&&(w=w>>8|(w&255)<<8);h<b&&(b=h);for(y=a.hb;y--;)za=w>>C&B,sf(a,a.Va,h++,k,za),C+=u;h>p&&(p=h);k<c&&(c=k);k>=d&&(d=k+1)}e+=2;g++;if(h>=a.C&&(h=0,k++,k>a.N))break}a.W=!0;b<a.C&&(e=p-b,d-=c,a.g&&
|
||||
za,T,Ma,ec,L,ja,ua,na))}h++}g++}e++}}a.W=!0;!b&&a.ya&&1==h&&(a.A[k]=-1,h=0);a.ya=!1;(h||b)&&a.wa&&a.j.drawImage(a.D,0,a.sa,a.C,a.N-a.ba,0,0,a.Db,a.td)}else{e=a.ma;f=e+a.L;k=h=g=0;b=a.C;p=0;c=a.N;v=d=0;u=a.na;B=(1<<u)-1;a.yd&&(u=-u,v=16+u);for(;e<f;){w=Ob(a.H,e);if(a.W&&w===a.A[g])h+=a.hb;else{a.A[g]=w;(C=v)&&(w=w>>8|(w&255)<<8);h<b&&(b=h);for(y=a.hb;y--;)za=w>>C&B,sf(a,a.Va,h++,k,za),C+=u;h>p&&(p=h);k<c&&(c=k);k>=d&&(d=k+1)}e+=2;g++;if(h>=a.C&&(h=0,k++,k>a.N))break}a.W=!0;b<a.C&&(e=p-b,d-=c,a.g&&
|
||||
(f=b,g=e,b=c,e=d,c=a.C-(f+g),d=g),a.wa.putImageData(a.Va,0,0,b,c,e,d),a.j.drawImage(a.D,0,0,a.D.width,a.D.height,0,0,a.M,a.I))}}var kf=0,lf=1,hf=2,df=0,jf=1,mf=2,cf={SI1978:jf,VT100:mf},nf=96,pf=64,qf=32,rf=0,tf=127,vf=15,wf=16,uf=96,xf=8192,yf=16384;
|
||||
ob(function(){for(var a=qa(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=oa(c),e=document.createElement("canvas");if(!e||!e.getContext){c.innerHTML="<br/>Missing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=cb().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=
|
||||
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||ib("aspect"));f&&.3<=f&&3.33>=f&&(mb("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");hb("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new bf(d,e,g,f,c);pa(d,c)}});
|
||||
|
|
@ -203,13 +203,13 @@ d))}return d}function Wf(a,b){for(var c,d=/\{(.*?)\}/;(c=b.match(d))&&!(0<=c[1].
|
|||
function Xf(a,b,c,d){var e;null!=b?(e=a.Kb(b),0<=e?e=a.Lb(e):(e=a.S[b],null==e&&(e=Ha(b,a.na))),null!=e||d||a.i("invalid "+(c?c:"value")+": "+b)):d||a.i("missing "+(c||"value"));return e}
|
||||
function Zf(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f=4,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++){g&&(g=","+g);var k=d&255,p=void 0,u=8,v="";u?32<u&&(u=32):u=32;for(var B=null==k||isNaN(k),y=p=p||u;0<u--;)y||(v=","+v,y=p),v=(B?"?":k&1?"1":"0")+v,k>>=1,y--;g=v+g;d>>=8}d=t(c,0,!0)+" "+c+". "+Ia(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.i((null!=b?b+": ":"")+d);return e}
|
||||
function ag(a,b){if(b)return Zf(a,b,a.S[b]);var c=0;for(b in a.S)Zf(a,b,a.S[b]),c++;return 0<c}function $f(a,b){var c;c=void 0===c?0:c;switch(a.na){case 8:a=Ia(b,0<c?(c+2)/3|0:0);break;case 10:a=b;b=0<c?Math.ceil(.3*c):0;var d="";b?10<b&&(b=10):b=a&-65536?10:5;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(0>a&&-1<a&&(a=-1);0<b--;)d=String.fromCharCode(a%10+48)+d,a/=10;a=d;break;default:a=t(b,0<c?c+3>>2:0)}0>c?c=a.replace(/^0+([0-9A-F]+)$/i,"$1"):c=a;return c}
|
||||
var Yf={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};function bg(a){Tf.call(this,a);this.style=cg;this.F=dg();this.la=dg();this.O=dg();this.A=[];this.j=this.I=this.w=[];eg(this);this.W=0;fg(this);this.Z={};gg(this,a.messages);this.ea=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Fc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Fc(b,a)})}aa(bg,Tf);l=bg.prototype;
|
||||
var Yf={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};function bg(a){Tf.call(this,a);this.style=cg;this.F=dg();this.ma=dg();this.O=dg();this.A=[];this.j=this.I=this.w=[];eg(this);this.W=0;fg(this);this.Z={};gg(this,a.messages);this.ea=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Fc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Fc(b,a)})}aa(bg,Tf);l=bg.prototype;
|
||||
l.Ea=function(a,b,c,d){this.H=b;this.u=c;this.R=a;(a=Bc(a,"messages"))&&gg(this,a);this.ga=hg;Sd(this,64,function(a){a:{var b=d.H.b,c=a[0],e=a=0,k=b.length;if(c){a=ig(jg(d,c));if(-1===a){d.i("invalid address: "+c);break a}e=a>>>d.H.g;k=1}d.i("blockid physical blockaddr used size type");d.i("-------- --------- ---------- ------ ------ ----");for(var c=-1,p=0;k--;){var u=b[e];u.type==c?p++||d.i("..."):(c=u.type,p=Ib[c],u&&d.i(t(u.id)+" %"+t(e<<d.H.g)+" %%"+t(u.J)+" "+x(u.pb)+" "+
|
||||
x(u.size)+" "+p),c!=dc&&(c=-1),p=0);a+=d.H.w;e++}}});Aa(this)};
|
||||
l.ca=function(a,b,c){var d=this;switch(b){case "debugInput":return this.U=this.P[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Fc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.b<d.g.length-1&&(b=d.g[++d.b])):40==a.keyCode&&(0<d.b?b=d.g[--d.b]:(b="",d.b=-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.P[b]=c,lb(c,function(){if(d.U){var a=d.U.value;d.U.value=
|
||||
"";Fc(d,a,!0);return!0}return!1}),!0;case "step":return this.P[b]=c,lb(c,function(a){var b=!1;Ca(d,!0)||(Da(d,!0),b=kg(d,a?1:0),Da(d,!1));return b}),!0}return!1};l.Za=function(){this.U&&this.U.focus()};function ig(a){a=a&&a.J;null==a&&(a=-1);return a}l.Ga=function(a,b){var c=255,d=ig(a);-1!==d&&(c=Kb(this.H,d),b&&lg(a,b));return c};l.Gb=function(a,b){var c=65535,d=ig(a);-1!==d&&(c=Ob(this.H,d),b&&lg(a,b));return c};l.Xb=function(a,b,c){var d=ig(a);-1!==d&&(Pb(this.H,d,b),c&&lg(a,c),Gc(this.u,!0))};
|
||||
l.Qc=function(a,b,c){var d=ig(a);if(-1!==d){var e=this.H,f=d&e.j,g=(d&e.C)>>>e.g;f!=e.j?e.b[g].Sb(f,b&65535,d):(e.b[g++].qb(f,b&255,d),e.b[g&e.I].qb(0,b>>8&255,d+1));c&&lg(a,c);Gc(this.u,!0)}};function dg(a){return{J:a,Da:!1}}function mg(a){return[a.J,a.Da]}function ng(a){return{J:a[0],Da:a[1]}}
|
||||
function jg(a,b,c){var d;c=(c?a.F:a.la).J;if(void 0!==b){d=b=Wf(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.A.length;c++){var f=a.A[c].ra[d];if(void 0!==f){d=f.o;void 0!==d&&(e=dg(d));break}}if(d=e)return d;c=Vf(a,b,void 0)}null!=c&&(d=dg(c));return d}function Lg(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.sd=a.Ab(b.Jc=c[2]))}function lg(a,b){null!=a.J&&(a.J+=b||1)}function Ng(a){return t(a,4)}
|
||||
function jg(a,b,c){var d;c=(c?a.F:a.ma).J;if(void 0!==b){d=b=Wf(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.A.length;c++){var f=a.A[c].ra[d];if(void 0!==f){d=f.o;void 0!==d&&(e=dg(d));break}}if(d=e)return d;c=Vf(a,b,void 0)}null!=c&&(d=dg(c));return d}function Lg(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.sd=a.Ab(b.Jc=c[2]))}function lg(a,b){null!=a.J&&(a.J+=b||1)}function Ng(a){return t(a,4)}
|
||||
function Og(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.Ga(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function gg(a,b){a.K=a;a.ha=a.wd=536870912;a.V=null;a.X=[];b=a.Ab(b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in zb)0<=Xa(b,c)&&(a.ha|=zb[c],a.i(c+" messages enabled"))}function Sd(a,b,c){for(var d in zb)if(b==zb[d]){a.Z[d]=c;break}}
|
||||
l.Kb=function(a,b){var c;a=a.toUpperCase();null==b?c=Xa(Pg,a):(c=Xa(Pg,a.substr(b,2)),0>c&&(c=Xa(Pg,a.substr(b,1))));return c};function Qg(a,b){var c=0;a=a.Lb(b);if(void 0!==a)switch(b){case Rg:case Sg:case Tg:case Ug:case Vg:case Wg:case Xg:case Yg:c=2;break;case Zg:case $g:case ah:case bh:case ch:case dh:case eh:c=4}return c?t(a,c):"??"}
|
||||
l.Lb=function(a){var b;if(0<=a){var c=this.u;switch(a){case Rg:b=c.g;break;case Sg:b=c.w;break;case Tg:b=c.A;break;case Zg:b=md(c);break;case Ug:b=c.B;break;case Vg:b=c.C;break;case $g:b=od(c);break;case Wg:b=c.D;break;case Xg:b=c.F;break;case ah:b=D(c);break;case Yg:b=E(c,D(c));break;case bh:b=c.M;break;case ch:b=c.j;break;case dh:b=kd(c);break;case eh:b=kd(c)&255|c.g<<8}}return b};
|
||||
|
|
@ -218,14 +218,14 @@ function fh(a,b){b=Wf(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.Kb(b,c+1
|
|||
function Ga(a,b,c,d,e,f,g,h){h|=256;null!=f&&(a.ha&h)!=h||a.message(b.cb+"."+(null!=d?"outPort":"inPort")+"("+x(c)+","+(f?f:"unknown")+(null!=d?","+Ja(d):"")+")"+(null!=g?": "+Ja(g):"")+(null!=e?" at "+Ng(e):""))}
|
||||
function fg(a){var b;if(Kd(a)){if(!a.D||!a.D.length){a.D=Array(gh);for(b=0;b<a.D.length;b++)a.D[b]=dg();a.T=0;a.i("instruction history buffer allocated")}if(!a.B||!a.B.length)for(a.B=Array(256),b=0;b<a.B.length;b++)a.B[b]=[b,0]}else a.D&&a.D.length&&a.i("instruction history buffer freed"),a.T=0,a.D=[],a.B=[]}function hh(a,b){if(!ih(a))return!1;a.u.tb(b);return!0}
|
||||
function kg(a,b,c,d){if(!ih(a))return!1;a.C=0;b||Kd(a)&&Ld(a,a.u.j,0);try{var e=a.u.Eb(b);0<e&&(a.C+=e,Kc(a.u,e,!0),Hc(a.u,e),a.N++)}catch(f){"number"!=typeof f&&(a.C=0,xa(a.u,f.stack||f.message))}!1!==d&&Gc(a.u);Ec(a,c||!1);return 0<a.C}l.da=function(a){this.u&&this.u.da(a)};function Ec(a,b){void 0===b&&(b=!0);a.F=dg(a.u.j);b&&1!=a.M?jh(a):kh(a)}
|
||||
function ih(a){var b;if(b=a.u&&ya(a.u))b=a.u,b.G.ja?b=!0:(b.i(b.toString()+" not powered"),b=!1);b&&!Ca(a.u)?(a=a.u,a.G.error?(a.i(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}l.va=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};l.ua=function(a,b){b&&this.i(a?"suspending":"shutting down");return a?this.save():!0};l.reset=function(a){fg(this);this.N=this.Y=0;this.V=null;this.C=0;this.F=dg(this.u.j);this.G.ka=!1;lh(this);a||Ec(this)};
|
||||
l.save=function(){var a=new ld(this);a.set(0,mg(this.F));a.set(1,mg(this.O));a.set(2,[this.g,this.L,this.ha]);a.set(3,this.A);return a.data()};l.restore=function(a){var b=0;void 0!==a[2]&&(this.F=ng(a[b++]),this.O=ng(a[b++]),this.g=a[b][0],"string"==typeof this.g&&(this.g=[this.g]),this.L=a[b][1],this.ha|=a[b][2]);a[3]&&(this.A=a[3]);return!0};l.start=function(a,b){this.M||this.i("running");this.G.ka=!0;this.wa=a;this.ya=b};
|
||||
l.stop=function(a,b){if(this.G.ka){this.G.ka=!1;this.C=b-this.ya;if(!this.M){b="stopped";if(this.C){a-=this.wa;var c=0<a?Math.round(1E3*this.C/a):0;b+=" (";Kd(this)&&(b+=this.N+" opcodes, ",this.Y-=this.N,this.N=0);b+=this.C+" cycles, "+a+" ms, "+c+" hz)"}else Ea(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.i(b)}Ec(this,!0);this.Za();lh(this,this.u.j)}};function Kd(a){return 1<a.j.length||!!a.W}
|
||||
function ih(a){var b;if(b=a.u&&ya(a.u))b=a.u,b.G.ja?b=!0:(b.i(b.toString()+" not powered"),b=!1);b&&!Ca(a.u)?(a=a.u,a.G.error?(a.i(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}l.va=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};l.ua=function(a,b){b&&this.i(a?"suspending":"shutting down");return a?this.save():!0};l.reset=function(a){fg(this);this.N=this.Y=0;this.V=null;this.C=0;this.F=dg(this.u.j);this.G.la=!1;lh(this);a||Ec(this)};
|
||||
l.save=function(){var a=new ld(this);a.set(0,mg(this.F));a.set(1,mg(this.O));a.set(2,[this.g,this.L,this.ha]);a.set(3,this.A);return a.data()};l.restore=function(a){var b=0;void 0!==a[2]&&(this.F=ng(a[b++]),this.O=ng(a[b++]),this.g=a[b][0],"string"==typeof this.g&&(this.g=[this.g]),this.L=a[b][1],this.ha|=a[b][2]);a[3]&&(this.A=a[3]);return!0};l.start=function(a,b){this.M||this.i("running");this.G.la=!0;this.wa=a;this.ya=b};
|
||||
l.stop=function(a,b){if(this.G.la){this.G.la=!1;this.C=b-this.ya;if(!this.M){b="stopped";if(this.C){a-=this.wa;var c=0<a?Math.round(1E3*this.C/a):0;b+=" (";Kd(this)&&(b+=this.N+" opcodes, ",this.Y-=this.N,this.N=0);b+=this.C+" cycles, "+a+" ms, "+c+" hz)"}else Ea(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.i(b)}Ec(this,!0);this.Za();lh(this,this.u.j)}};function Kd(a){return 1<a.j.length||!!a.W}
|
||||
function Ld(a,b,c){var d=a.u;if(0<c&&(a.W&&!--a.W||yc(a,b,1,a.j)))return!0;0<=c&&a.B.length&&(a.N++,b=Kb(a.H,b),null!=b&&(a.B[b][1]++,b=a.D[a.T],b.J=d.j,b.Da=!1,++a.T==a.D.length&&(a.T=0)));return!1}function Vb(a,b,c){a.i("break on input from port "+x(b)+": "+t(c));a.da(!0)}function Zb(a,b,c){a.i("break on output to port "+x(b)+": "+t(c));a.da(!0)}
|
||||
function eg(a){var b,c;a.j=["bp"];if(a.I)for(b=1;b<a.I.length;b++){c=a.I[b];var d=a.H;xc(d.b[ig(c)>>>d.g],!1)}a.I=["br"];if(a.w)for(b=1;b<a.w.length;b++)c=a.w[b],d=a.H,xc(d.b[ig(c)>>>d.g],!0);a.w=["bw"];a.oa=0}l.Pa=function(a,b,c){var d=!0;c||mh(this,a,b,!1,!0);if(a!=this.j){var e=ig(b);if(-1===e)this.i("invalid address: "+Ng(b.J)),d=!1;else{var f=this.H;f.b[e>>>f.g].Pa(e&f.j,a==this.w)}}d&&(a.push(b),c?b.Da=!0:(nh(this,a,a.length-1,"set"),fg(this)));return d};
|
||||
function mh(a,b,c,d,e){var f=!1;c=ig(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==ig(h)&&(!d||h.Da)){f=!0;h.Da||e||nh(a,b,g,"cleared");b.splice(g,1);b!=a.j&&(d=a.H,xc(d.b[c>>>d.g],b==a.w));h.Da||fg(a);break}}return f}function oh(a,b){for(var c=1;c<b.length;c++)nh(a,b,c);return b.length-1}function nh(a,b,c,d){c=b[c];a.i(b[0]+" "+Ng(c.J)+(d?" "+d:c.Jc?' "'+c.Jc+'"':""))}
|
||||
function lh(a,b){if(void 0!==b)yc(a,b,1,a.j,!0),a.M=0;else for(b=1;b<a.j.length;b++){var c=a.j[b];if(c.Da){if(!mh(a,a.j,c,!0))break;b=0}}}
|
||||
function yc(a,b,c,d,e){var f=!1;if(!a.oa++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.Da)for(var k=ig(h),p=0;p<c;p++)if(b+p==k){var u,f=!0;h.Da&&(mh(a,d,h,!0),e=!0);if(u=h.sd){for(var f=!1,v=0;v<u.length;v++)if(!ph(a,u[v],!0)){if(u[v].indexOf("if")){f=!0;break}for(var B=v+1;B<u.length&&u[B].indexOf("else");B++)v++;if(B==u.length){f=!0;break}}a.u.G.ka||(f=!0)}if(f){e||nh(a,d,g,"hit");break}}}a.oa--;return f}
|
||||
function yc(a,b,c,d,e){var f=!1;if(!a.oa++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.Da)for(var k=ig(h),p=0;p<c;p++)if(b+p==k){var u,f=!0;h.Da&&(mh(a,d,h,!0),e=!0);if(u=h.sd){for(var f=!1,v=0;v<u.length;v++)if(!ph(a,u[v],!0)){if(u[v].indexOf("if")){f=!0;break}for(var B=v+1;B<u.length&&u[B].indexOf("else");B++)v++;if(B==u.length){f=!0;break}}a.u.G.la||(f=!0)}if(f){e||nh(a,d,g,"hit");break}}}a.oa--;return f}
|
||||
function qh(a,b,c,d){for(var e=dg(b.J),f=a.Ga(b,1),g=a.ga[f],h="",k=(a.style!=rh?sh:th)[g[0]],p=g.length-1,u=uh,v,B=1;B<=p;B++){var y="";v=g[B];if(void 0!==v&&!(v&O&&a.style==cg)){var w=v&vh;if(w){var C=v&wh;C?u=C:v|=u;v&xh||(v|=1==B?yh:zh);if(w&P)a:{y=a;w=v;C=b;switch(w&wh){case Q:C=t(y.Ga(C,1),2);break;case Ah:C=t(y.Ga(C,1)<<24>>24,4);break;case Bh:C=t(y.Gb(C,2),4);break;default:y="imm("+x(w)+")";break a}y.style==rh&&w&Ch?C="["+C+"]":w&Dh||(C=(y.style==cg?"$":"0x")+C);y=C}else w&Dh?(y=(v&Eh)>>8,
|
||||
w=Pg[y],a.style==rh&&v&Ch&&(y==Yg&&(w="HL"),w="["+w+"]"),y=w):w&Fh&&(y=(f>>3&7).toString());if(!y||!y.length){h="INVALID";break}0<h.length&&(h+=",");h+=y||"???"}}}f="";g=Ng(e.J)+" ";if(-1!==e.J&&-1!==b.J){do if(f+=t(a.Ga(e,1),2),null==e.J)break;while(e.J!=b.J)}g+=Sa(f,10);g+=v&Gh?"*":" ";g+=Sa(k,7);h&&(g+=" "+h);c&&(g=Sa(g,40)+";"+c,g=a.u.G.Wa?g+("cycles="+Ic(a.u).toString()+" cs="+t(a.u.ya)):g+(null!=d?"="+d.toString():""));return g}
|
||||
function Hh(a,b){switch(b){case "IF":a=a.u.N&512;break;case "SF":a=wd(a.u);break;case "ZF":a=vd(a.u);break;case "AF":a=ud(a.u);break;case "PF":a=td(a.u);break;case "CF":a=rd(a.u);break;default:a=0}return b.charAt(0)+(a?"1":"0")+" "}function Ih(a,b){return Pg[b]+"="+Qg(a,b)+" "}function Jh(a){return Ih(a,Rg)+Ih(a,Zg)+Ih(a,$g)+Ih(a,ah)+Ih(a,bh)+Hh(a,"IF")+Hh(a,"SF")+Hh(a,"ZF")+Hh(a,"AF")+Hh(a,"PF")+Hh(a,"CF")}l.Ac=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
|
|
@ -247,9 +247,9 @@ a.i("\tbl\tlist all breakpoints"),a.i("\tbn [n]\tbreak after [n] instruction(s)"
|
|||
a.i("\tdw [a] [#] dump # words at address a");a.i("\tdd [a] [#] dump # dwords at address a");a.i("\tdh [#] [#] dump # instructions from history");Mb.length&&a.i("dump extension commands:\n\t"+Mb)}else if("state"==na){var je=Sh(a.R,!0);"console"==Ma?console.log(je):(a.ta&&(a.ta.value=""),je&&a.i(je))}else if("symbols"==na)for(var ke=0;ke<a.A.length;ke++){var le=a.A[ke],Nb;for(Nb in le.ra)if("."!=Nb.charAt(0)){var og=le.ra[Nb].o;if(void 0!==og){var pg=le.ra[Nb].l;pg&&(Nb=pg);a.i(Ng(og)+" "+
|
||||
Nb)}}}else{if("d"==ua){for(ja in zb)if(f[1]==ja){var qg=a.Z[ja];qg?(f.shift(),f.shift(),qg(f)):a.i("no dump registered for "+na);break a}na||(ua=a.za||"db")}else a.za=ua;if("dh"==ua){var rg=na,sg=Ma,tg="",ug=0,Na=a.T,Za=a.D;if(Za.length){var Ba=+rg||a.sa,jc=+sg||10;isNaN(Ba)?Ba=jc:tg="more ";Ba>Za.length&&(a.i("note: only "+Za.length+" available"),Ba=Za.length);Na-=Ba;0>Na&&(null==Za[Za.length-1].J?(Ba=Na+Ba,Na=0):Na+=Za.length);var me=[];"call"==sg&&(jc=1E5,me=["CALL"]);for(void 0!==rg&&a.i(Ba+" instructions earlier:");0<
|
||||
jc&&Na!=a.T;){var vg=Za[Na++];if(null==vg.J)break;var kc=dg(vg.J),vi=Ba--,wg=qh(a,kc,"history",vi);(!me.length||0<=wg.indexOf(me[0]))&&a.i(wg);kc.Jb&&(Na+=kc.Jb,jc-=kc.Jb,Ba-=kc.Jb);Na>=Za.length&&(Na=0);a.sa=Ba;ug++;jc--}}ug||(a.i("no "+tg+"history available"),a.sa=void 0)}else{var Yc=jg(a,na);if(Yc){var Zc=0;Ma&&("l"==Ma.charAt(0)&&(Ma=Ma.substr(1)||ec),Zc=Xf(a,Ma)>>>0,65536<Zc&&(Zc=65536));for(var lc="",$c="dd"==ua?4:"dw"==ua?2:1,ad=$c*Zc||128,wi=ad+15>>4||1;wi--&&0<ad;){var bd=0,ne=0,mc,oe="",
|
||||
xg="",na=Ng(Yc.J);for(mc=16;0<mc&&0<ad;mc--){var cd=a.Ga(Yc,1),bd=bd|cd<<(ne++<<3);ne==$c&&(oe+=t(bd,2*$c),oe+=1==$c?9==mc?"-":" ":" ",bd=ne=0);xg+=32<=cd&&128>cd?String.fromCharCode(cd):".";ad--}lc&&(lc+="\n");lc+=na+" "+oe+(mc?"":" "+xg)}lc&&a.i(lc);a.la=Yc}}}}break;case "e":if("else"==f[0])break;var dd=1,yg=255,zg=a.Ga,Ag=a.Xb;"ew"==f[0]&&(dd=2,yg=65535,zg=a.Gb,Ag=a.Qc);var Bg=dd<<1,Cg=f[1];if(null==Cg)a.i("edit memory commands:"),a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");
|
||||
xg="",na=Ng(Yc.J);for(mc=16;0<mc&&0<ad;mc--){var cd=a.Ga(Yc,1),bd=bd|cd<<(ne++<<3);ne==$c&&(oe+=t(bd,2*$c),oe+=1==$c?9==mc?"-":" ":" ",bd=ne=0);xg+=32<=cd&&128>cd?String.fromCharCode(cd):".";ad--}lc&&(lc+="\n");lc+=na+" "+oe+(mc?"":" "+xg)}lc&&a.i(lc);a.ma=Yc}}}}break;case "e":if("else"==f[0])break;var dd=1,yg=255,zg=a.Ga,Ag=a.Xb;"ew"==f[0]&&(dd=2,yg=65535,zg=a.Gb,Ag=a.Qc);var Bg=dd<<1,Cg=f[1];if(null==Cg)a.i("edit memory commands:"),a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");
|
||||
else{var ed=jg(a,Cg);if(ed)for(var fd=2;fd<f.length;fd++){var nc=Vf(a,f[fd]);if(void 0===nc){a.i("unrecognized value: "+f[fd]);break}nc&~yg&&a.i("warning: "+t(nc)+" exceeds "+dd+"-byte value");var xi=zg.call(a,ed);a.i("changing "+Ng(ed.J)+" from "+t(xi,Bg,!0)+" to "+t(nc,Bg,!0));Ag.call(a,ed,nc,dd)}}break;case "f":Mh(a,f[1]);break;case "g":a:{var Dg=f[1],yi=b;if(void 0!==Dg){var pe=jg(a,Dg,!0);if(!pe)break a;Lg(a,pe,yi);a.Pa(a.j,pe,!0)}hh(a,!0)||c||a.i("cpu busy or unavailable, run command ignored")}break;
|
||||
case "h":a:{var qe;if(a.G.ka)qe="halting",a.da();else{if(Ca(a,!0))break a;qe="already halted"}c||a.i(qe)}break;case "i":if("if"==f[0]){var re;var oc=b.substr(2),oc=Ta(oc);Vf(a,oc)?(c||a.i("true: "+oc),re=!0):(c||a.i("false: "+oc),re=!1);re||(d=!1);break}if("int"==f[0]){var gd;var zi=f[1];if(a.u.N&512){var se=Vf(a,zi);null==se?gd=!1:(a.i("requesting interrupt level "+se),Jd(a.u,se),gd=!0)}else a.i("interrupts disabled (use rif=1 to enable)"),gd=!1;gd||(d=!1);break}var te=f[1];if(te&&"?"!=te){var ue=
|
||||
case "h":a:{var qe;if(a.G.la)qe="halting",a.da();else{if(Ca(a,!0))break a;qe="already halted"}c||a.i(qe)}break;case "i":if("if"==f[0]){var re;var oc=b.substr(2),oc=Ta(oc);Vf(a,oc)?(c||a.i("true: "+oc),re=!0):(c||a.i("false: "+oc),re=!1);re||(d=!1);break}if("int"==f[0]){var gd;var zi=f[1];if(a.u.N&512){var se=Vf(a,zi);null==se?gd=!1:(a.i("requesting interrupt level "+se),Jd(a.u,se),gd=!0)}else a.i("interrupts disabled (use rif=1 to enable)"),gd=!1;gd||(d=!1);break}var te=f[1];if(te&&"?"!=te){var ue=
|
||||
Xf(a,te);if(void 0!==ue){var Ai=Ub(a.H,ue);a.i(x(ue)+": "+Ja(Ai))}}else a.i("input commands:"),a.i("\ti [p]\tread port [p]"),a.i("warning: port accesses can affect hardware state");break;case "k":var Bi=f[0];if("?"==f[1])a.i("stack trace commands:"),a.i("\tk\tshow frame addresses"),a.i("\tks\tshow symbol information");else{var ve=0,Eg=dg(),pc=dg(a.u.M);for(a.i("stack trace for "+Ng(pc.J));10>ve;){for(var ub=null,Ci=256;65536>pc.J>>>0;){Eg.J=a.Gb(pc,2);if(null==pc.J||!Ci--)break;for(var Di=a,hd=Eg,
|
||||
Fg=null,qc=hd.J,Gg=qc,we=1;6>=we&&qc;we++){if(2<we){hd.J=qc;var id=qh(Di,hd);if(0<=id.indexOf("CALL")){var Hg=id.indexOf(" ");if(qc+(id.indexOf(" ",Hg+1)-Hg-1)/2==Gg){Fg=id;break}}}qc--}hd.J=Gg;if(ub=Fg)break}if(!ub||null==ub)break;var Ig=null;if("ks"==Bi){var Jg=ub.match(/[0-9A-F]+$/);Jg&&(Ig=Oh(a,Jg[0]))}ub=Sa(ub,50)+" ;"+(Ig||"stack="+Ng(pc.J));a.i(ub);ve++}ve||a.i("no return addresses found")}break;case "l":"ln"==f[0]&&Oh(a,f[1],!0);break;case "m":a:{var $a,ab=null,ba=f[1];"?"==ba&&(ba=void 0);
|
||||
if(void 0!==ba){var nb=0;if("all"==ba)nb=1878917119,ba=null;else if("on"==ba)ab=!0,ba=null;else if("off"==ba)ab=!1,ba=null;else{"keys"==ba&&(ba="key");"kbd"==ba&&(ba="keyboard");for($a in zb)if(ba==$a){nb=zb[$a];ab=!!(a.ha&nb);break}if(!nb){a.i("unknown message category: "+ba);break a}}if(nb)if("on"==f[2])a.ha|=nb,ab=!0;else if("off"==f[2]&&(a.ha&=~nb,ab=!1,1073741824==nb)){for(var xe=0;xe<a.X.length;xe++)a.i(a.X[xe]);a.X=[]}}var Ei=0,rc="";for($a in zb)if(!ba||ba==$a){var Fi=!!(a.ha&zb[$a]);if(null===
|
||||
|
|
@ -283,7 +283,7 @@ function bi(a,b){var c=a.g;c||((c=fb(qi),void 0!==c)?!c&&b&&(b=null,window&&(b=w
|
|||
function Ki(a,b){a.g=null;b=Ya(Pa()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(gb(qi,b.data),a.g=b.data)}catch(d){q(d.message+" ("+c+")")}return a.g}function di(a){var b=null;a.g&&(b=Pa()+"/api/v1/user?req=load&user="+a.g+"&state="+Li(a,"1.34.0"));return b}
|
||||
function Ii(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Li(a,"1.34.0");d.data=c;b=Ya(Pa()+"/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.aa("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.aa(c),gb(qi,""),a.g=null)}}
|
||||
function Bb(a,b,c){a=ka(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}l.Za=function(a){if(this.A.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.A[0];d.V&&d.V.focus();!a&&window&&window.scrollTo(b,c)}};
|
||||
function Qc(a,b){a.u&&(a=a.u,a.ib&&(b||!a.G.ka||a.G.Bc)&&(I(a,"A",a.g),I(a,"B",a.w),I(a,"C",a.A),I(a,"BC",md(a),4),I(a,"D",a.B),I(a,"E",a.C),I(a,"DE",od(a),4),I(a,"H",a.D),I(a,"L",a.F),I(a,"HL",D(a),4),I(a,"SP",a.M,4),I(a,"PC",a.j,4),b=kd(a),I(a,"PS",b,4),I(a,"IF",b&512?1:0,1),I(a,"SF",b&128?1:0,1),I(a,"ZF",b&64?1:0,1),I(a,"AF",b&16?1:0,1),I(a,"PF",b&4?1:0,1),I(a,"CF",b&1?1:0,1)),b=a.P.speed)&&(b.textContent=a.G.ka&&a.Y?a.Y.toFixed(2)+"Mhz":"Stopped")}
|
||||
function Qc(a,b){a.u&&(a=a.u,a.ib&&(b||!a.G.la||a.G.Bc)&&(I(a,"A",a.g),I(a,"B",a.w),I(a,"C",a.A),I(a,"BC",md(a),4),I(a,"D",a.B),I(a,"E",a.C),I(a,"DE",od(a),4),I(a,"H",a.D),I(a,"L",a.F),I(a,"HL",D(a),4),I(a,"SP",a.M,4),I(a,"PC",a.j,4),b=kd(a),I(a,"PS",b,4),I(a,"IF",b&512?1:0,1),I(a,"SF",b&128?1:0,1),I(a,"ZF",b&64?1:0,1),I(a,"AF",b&16?1:0,1),I(a,"PF",b&4?1:0,1),I(a,"CF",b&1?1:0,1)),b=a.P.speed)&&(b.textContent=a.G.la&&a.Y?a.Y.toFixed(2)+"Mhz":"Stopped")}
|
||||
var li="failsafe",gi="validate",ii="timestamp",si="version",ti="url",ui="browser",qi="user",ki=-1,ai=0,ji=1,ni=2,Ji=3;ob(function(){for(var a=qa(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=oa(c),c=qa(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=oa(f),g=new Zh(g,d,!0);pa(g,f);g.L&&ei(g,g.nb)}});pb.show.push(function(){for(var a=qa(document,"pc8080","computer"),b=0;b<a.length;b++){var c=oa(a[b]);(c=ma("Computer",c.id))&&c.W&&!c.G.ja&&c.nb(ki)}});
|
||||
pb.exit.push(function(){for(var a=qa(document,"pc8080","computer"),b=0;b<a.length;b++){var c=oa(a[b]);(c=ma("Computer",c.id))&&c.G.ja&&Sh(c,!(!c.b||c.D),!0)}});function ld(a,b,c){this.id=a.id;this.K=a.K;this.g="";this.b={};this.u=this.H=!1;this.key=Li(a,b,c);oi(this,a.Ad)}l=ld.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 ci(a,b){return b?(a.g=b,a.u=!0,a.H=!1,!0):a.u?!0:db()&&(b=fb(a.key))?(a.g=b,a.u=!0):!1}function hi(a){var b=!0;if(!a.H)try{a.b=JSON.parse(a.g),a.H=!0}catch(c){q(c.message||c),b=!1}return b}function pi(a){var b=!0;if(db()){var c=JSON.stringify(a.b);gb(a.key,c)||(q("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.g};function oi(a,b){a.g="";a.b={};a.u=a.H=!1;b&&a.set("parms",b)}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
var k;function l(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]}
|
||||
var n={Yd:0,ae:1,be:2,ce:3,de:4,ee:5,fe:6,ge:7,he:8,ie:9,je:10,ke:11,le:12,me:13,ne:14,oe:15,pe:16,qe:17,re:18,se:19,te:20,ue:21,ve:22,we:23,xe:24,ye:25,ze:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Ia:65,sb:66,tb:67,kb:68,E:69,wb:70,xb:71,yb:72,zb:73,Ab:74,Bb:75,lb:76,Fb:77,Gb:78,Jb:79,Kb:80,Q:81,Lb:82,Nb:83,Ob:84,Pb:85,Rb:86,Sb:87,
|
||||
Ub:88,Vb:89,$a:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Wb:97,Rc:98,Tc:99,d:100,e:101,Xc:102,Yc:103,Zc:104,$c:105,jd:106,k:107,kd:108,ld:109,n:110,md:111,p:112,q:113,r:114,Kd:115,t:116,Ld:117,Md:118,Nd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Ae:127},aa={59:186,61:187,173:189,224:91};
|
||||
function p(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Tb=b.comment;this.Uc=b;this.exports={};this.w=this.bindings={};a=this.id.indexOf(".");0>a?this.Ya=this.id:(this.Ka=this.id.substr(0,a),this.Ya=this.id.substr(a+1));this.i={ready:!1,ab:!1,nb:!1,U:!1,error:!1};this.eb=null;this.i.error=!1;this.J=this.m=this.u=this.D=this.pa=null;r.push(this)}function ba(a,b,c){ca[a]&&b&&(ca[a][b]=c)}function ea(){return Date.now()||+new Date}
|
||||
function p(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Tb=b.comment;this.Uc=b;this.exports={};this.w=this.bindings={};a=this.id.indexOf(".");0>a?this.Ya=this.id:(this.Ka=this.id.substr(0,a),this.Ya=this.id.substr(a+1));this.i={ready:!1,ab:!1,nb:!1,V:!1,error:!1};this.eb=null;this.i.error=!1;this.J=this.m=this.u=this.D=this.pa=null;r.push(this)}function ba(a,b,c){ca[a]&&b&&(ca[a][b]=c)}function ea(){return Date.now()||+new Date}
|
||||
function fa(a,b,c){b||t((c?c+": ":"")+a)}function t(a){window&&window.alert(a)}function ga(a){var b=!1;window&&(b=window.confirm(a));return b}function ha(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<r.length;b++){var d=r[b];a&&d.id.indexOf(a)||c.push(d)}return c}function ia(a){if(void 0!==a){var b;for(b=0;b<r.length;b++)if(r[b].id===a)return r[b]}return null}
|
||||
function ja(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<r.length;d++)if(c)c==r[d]&&(c=null);else if(!(a!=r[d].type||b&&r[d].id.indexOf(b)))return r[d]}return null}function u(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){t(c.message+" ("+a+")")}return b}
|
||||
function ka(a,b){b=y(b.parentNode,"pc8080-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){var g=f.getAttribute("class");if(g)for(var h=g.split(" "),m=0;m<h.length;m++)switch(g=h[m],g){case "pc8080-binding":(g=u(f))&&g.binding&&a.S(g.type,g.binding,f,g.value),m=h.length}}}}
|
||||
|
|
@ -40,7 +40,7 @@ function y(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.g
|
|||
function la(a){for(var b=!0,c=ma[a];c&&c.length;){var d=c.splice(0,1)[0],e=d[0],f=null;0<=na.indexOf(e)&&(f=function(){return function(){la(a)}}());var g=oa[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=ja(d[1],a);if(h)if(g=pa[e])b=g(h,d[2],d[3]);else{var m=h.exports;if(m&&(g=m[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){t("Script error: "+e+(g?" failed":" unrecognized"));break}}c&&!c.length&&delete ma[a];return b}k=p.prototype;
|
||||
k.toString=function(){return this.name?this.name:this.id||this.type};
|
||||
k.S=function(a,b,c){switch(b){case "clear":return this.w[b]||(this.w[b]=c,c.onclick=function(a){return function(){a.w.print&&(a.w.print.value="")}}(this)),!0;case "print":return this.w[b]||(this.pa=this.w[b]=c,c.value="",this.aa=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.G=function(a){this.aa(a,this.Ya)}),!0;default:return!1}};k.log=function(){};k.aa=function(){};
|
||||
k.status=function(a){this.aa(this.Ya+": "+a)};k.G=function(a,b,c){fa(a,b,c||this.type)};function qa(a,b){b&&(a.i.ready?b():a.eb=b);return a.i.ready}function A(a){if(!a.i.error&&(a.i.ready=!0,a.i.ready)){var b=a.eb;a.eb=null;b&&b()}}function ra(a,b){if(a.i.nb)return a.i.ab=!1,a.i.nb=!1;if(a.i.error)return a.aa(a.toString()+" error"),!1;a.i.ab=b;return a.i.ab}k.ca=function(){return this.i.U=!0};k.ba=function(a,b){b&&(this.i.U=!1);return!0};
|
||||
k.status=function(a){this.aa(this.Ya+": "+a)};k.G=function(a,b,c){fa(a,b,c||this.type)};function qa(a,b){b&&(a.i.ready?b():a.eb=b);return a.i.ready}function A(a){if(!a.i.error&&(a.i.ready=!0,a.i.ready)){var b=a.eb;a.eb=null;b&&b()}}function ra(a,b){if(a.i.nb)return a.i.ab=!1,a.i.nb=!1;if(a.i.error)return a.aa(a.toString()+" error"),!1;a.i.ab=b;return a.i.ab}k.ca=function(){return this.i.V=!0};k.ba=function(a,b){b&&(this.i.V=!1);return!0};
|
||||
window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]),window.PCjs.Commands||(window.PCjs.Commands={}));
|
||||
var ca=window?window.PCjs.Machines:{},r=window?window.PCjs.Components:[],ma=window?window.PCjs.Commands:{},na=["hold","sleep","wait"],oa={alert:function(a){t(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},pa={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)});
|
||||
|
|
@ -52,8 +52,8 @@ var za={"&":"&","<":"<",">":">",'"':""","'":"'"},Ba={0:"NUL"
|
|||
function Ca(){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 Da(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 m="",q;for(q in b)b.hasOwnProperty(q)&&(m&&(m+="&"),m+=q+"="+encodeURIComponent(b[q]));m=m.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(m)}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 Ea(a,b){var c,d={W:null,sa:null,Aa: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")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Aa=g.load;d.ta=g.exec;if(e=g.bytes)d.W=e;else if(e=g.words)for(d.W=Array(2*e.length),f=c=0;c<e.length;c++)d.W[f++]=e[c]&255,d.W[f++]=e[c]>>8&255;else if(e=g.data)for(d.W=Array(4*e.length),f=c=0;c<e.length;c++)d.W[f++]=e[c]&
|
||||
255,d.W[f++]=e[c]>>8&255,d.W[f++]=e[c]>>16&255,d.W[f++]=e[c]>>24&255;else d.W=g;d.sa=g.symbols;d.W.length?1==d.W.length&&(t(d.W[0]),d=null):(t("Empty resource: "+a),d=null)}catch(h){t("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)){t("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.W=e)}return d}
|
||||
function Ea(a,b){var c,d={T:null,sa:null,Aa: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.Aa=g.load;d.ta=g.exec;if(e=g.bytes)d.T=e;else if(e=g.words)for(d.T=Array(2*e.length),f=c=0;c<e.length;c++)d.T[f++]=e[c]&255,d.T[f++]=e[c]>>8&255;else if(e=g.longs)for(d.T=Array(4*e.length),f=c=0;c<e.length;c++)d.T[f++]=
|
||||
e[c]&255,d.T[f++]=e[c]>>8&255,d.T[f++]=e[c]>>16&255,d.T[f++]=e[c]>>24&255;else(e=g.data)?d.hf=e:d.T=g;d.T&&(d.T.length?1==d.T.length&&(t(d.T[0]),d=null):(t("Empty resource: "+a),d=null));d.sa=g.symbols}catch(h){t("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)){t("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.T=e)}return d}
|
||||
function wa(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Fa(){if(null==Ga){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}Ga=a}return Ga}function Ha(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function Ia(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ja(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 Ka(a){if(!La){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," "))}La=c}return La[a]}function Ma(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Na(a){Oa.init.push(a)}
|
||||
|
|
@ -76,12 +76,12 @@ var tb=0,ub=2,fb=["NONE","RAM","ROM","VID","H/W"],sb=0,zb=[],yb=[C.prototype.Dd,
|
|||
function Db(a,b){p.call(this,"CPU",a);var c=a.multiplier||1;this.na=a.cycles||b;this.O=c;this.Ea=Math.round(this.na/1E4)/100;this.X=this.Ea*this.O;this.i.ka=!1;this.i.fc=!1;this.i.Sa=a.autoStart;this.i.Xb=!1;this.i.bb=!1;this.wa=this.ea=0;this.xa=a.csStart;this.ha=a.csInterval;this.la=a.csStop;this.H=[];this.mb=this.jb.bind(this);A(this)}l(Db,p);k=Db.prototype;
|
||||
k.qa=function(a,b,c,d){this.D=a;this.u=b;this.J=d;for(b=0;b<Eb.length;b++)(c=this.w[Eb[b]])&&this.D.S(null,Eb[b],c);this.N=Za(a,"ChipSet");a=Fb(a,"autoStart");null!=a&&(this.i.Sa="true"==a?!0:"false"==a?!1:!!a);A(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};k.ca=function(a,b){if(!b){if(a&&this.restore){Gb(this);if(!this.restore(a))return!1;Hb(this)}else this.reset();this.aa("No debugger detected")}Ib(this);return!0};
|
||||
k.ba=function(a){return a?this.save():!0};k.Sa=function(){return this.i.Sa||void 0===this.w.run?(this.jb(),!0):!1};k.$b=function(){return 0};function Hb(a){void 0===a.xa&&(a.xa=0);void 0===a.ha&&(a.ha=-1);void 0===a.la&&(a.la=-1);a.i.bb=0<=a.xa&&0<a.ha;a.i.bb&&(a.wa=0,a.ea=a.xa-a.I)}
|
||||
k.S=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.w[b]=c;a=!0;break;case "run":this.w[b]=c;c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.i.U)a=!0;else{var b=null,c,h=ha(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.i.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.i.U);c++);c==h.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.i.ready?"powered yet":"ready yet"+(b.eb?" (waiting for notification)":""))+".");a=!1}a&&(d.i.ka?Jb(d):d.jb())};a=!0;
|
||||
k.S=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.w[b]=c;a=!0;break;case "run":this.w[b]=c;c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.i.V)a=!0;else{var b=null,c,h=ha(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.i.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.i.V);c++);c==h.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.i.ready?"powered yet":"ready yet"+(b.eb?" (waiting for notification)":""))+".");a=!1}a&&(d.i.ka?Jb(d):d.jb())};a=!0;
|
||||
break;case "speed":this.w[b]=c;a=!0;break;case "setSpeed":this.w[b]=c,c.onclick=function(){Kb(d,d.O<<1,!0)},c.textContent=this.X.toFixed(2)+"Mhz",a=!0}return a};function Lb(a,b){var c=1;b&&1<a.O&&a.R&&(c=a.R/a.Ea);a.Pa=Math.round(1E3/Mb);a.ya=Math.floor(a.na/Mb*c);b||(a.ma=a.ya);a.Ga=0}function Nb(a){return a.I+a.P+a.da-a.a}function Gb(a){a.R=0;a.Qa=0;a.I=a.P=a.da=a.a=0;Hb(a);Kb(a,1)}
|
||||
function Kb(a,b,c){if(void 0!==b){.8>a.R/a.X&&(b=1);a.O=b;b=a.Ea*a.O;if(a.X!=b){a.X=b;b=a.X.toFixed(2)+"Mhz";var d=a.w.setSpeed;d&&(d.textContent=b);a.aa("target speed: "+b)}c&&a.D&&Ob(a.D)}a.I+=a.P;a.P=0;a.L=ea();a.V=0;Lb(a)}function Pb(a,b){var c=a.H.length;a.H.push([-1,b]);return c}function Qb(a,b,c){0<=b&&b<a.H.length&&0>a.H[b][0]&&(c*=a.na*a.O/1E3,a.H[b][0]=c+Rb(a))}function Rb(a,b){var c=a.da-=a.a;a.a=0;b&&(a.da=0);return c}
|
||||
k.jb=function(a){if(ra(this,!0)){if(!this.i.ka){Kb(this);this.D&&this.D.start(this.L,Nb(this));this.i.ka=!0;this.i.fc=!0;this.N&&this.N.start();var b=this.w.run;b&&(b.textContent="Halt");this.D&&(Sb(this.D,!0),a&&Ob(this.D,!0))}this.Ga>=this.na&&Lb(this,!0);this.oa=0;this.va=ea();this.V&&(a=this.va-this.V,a>this.Pa&&(this.L+=a,this.L>this.va&&(this.L=this.va)));try{do{for(var c,d=this.i.bb?1:this.ya,e=this.H.length-1;0<=e;e--){var f=this.H[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.vb(c);c=Rb(this,!0);
|
||||
function Kb(a,b,c){if(void 0!==b){.8>a.R/a.X&&(b=1);a.O=b;b=a.Ea*a.O;if(a.X!=b){a.X=b;b=a.X.toFixed(2)+"Mhz";var d=a.w.setSpeed;d&&(d.textContent=b);a.aa("target speed: "+b)}c&&a.D&&Ob(a.D)}a.I+=a.P;a.P=0;a.L=ea();a.W=0;Lb(a)}function Pb(a,b){var c=a.H.length;a.H.push([-1,b]);return c}function Qb(a,b,c){0<=b&&b<a.H.length&&0>a.H[b][0]&&(c*=a.na*a.O/1E3,a.H[b][0]=c+Rb(a))}function Rb(a,b){var c=a.da-=a.a;a.a=0;b&&(a.da=0);return c}
|
||||
k.jb=function(a){if(ra(this,!0)){if(!this.i.ka){Kb(this);this.D&&this.D.start(this.L,Nb(this));this.i.ka=!0;this.i.fc=!0;this.N&&this.N.start();var b=this.w.run;b&&(b.textContent="Halt");this.D&&(Sb(this.D,!0),a&&Ob(this.D,!0))}this.Ga>=this.na&&Lb(this,!0);this.oa=0;this.va=ea();this.W&&(a=this.va-this.W,a>this.Pa&&(this.L+=a,this.L>this.va&&(this.L=this.va)));try{do{for(var c,d=this.i.bb?1:this.ya,e=this.H.length-1;0<=e;e--){var f=this.H[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.vb(c);c=Rb(this,!0);
|
||||
this.oa+=c;this.P+=c;a=c;this.i.bb&&(b=!1,this.wa=this.wa+this.$b()|0,this.ea-=a,0>=this.ea&&(this.ea+=this.ha,b=!0),0<=this.la&&this.la<=Nb(this)&&(this.ha=this.la=-1,Hb(this),Jb(this),b=!0),b&&this.aa(Nb(this)+" cycles: checksum="+B(this.wa)));a=c;for(var g=this.H.length-1;0<=g;g--){var h=this.H[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.ma-=c;if(0>=this.ma){this.ma+=this.ya;++this.Qa>=Tb&&(this.D&&Sb(this.D),this.Qa=0);break}}while(this.i.ka)}catch(m){Jb(this);Ib(this);this.D&&this.D.stop(ea(),
|
||||
Nb(this));ra(this,!1);c=m.stack||m.message;this.i.error=!0;this.G(c);return}c=setTimeout;d=this.mb;this.V=ea();e=this.Pa;this.oa&&(e=Math.round(e*this.oa/this.ya));e-=this.V-this.va;if(f=this.V-this.L)this.R=Math.round(this.P/(10*f))/100,864E5<=f&&(this.I=0,Kb(this));if(0>e||this.R<this.X)-1E3>e&&(this.L-=e),e=0;this.Ga+=this.oa;this.V+=e;c(d,e)}else Ib(this),this.D&&this.D.stop(ea(),Nb(this))};k.vb=function(){return 0};
|
||||
Nb(this));ra(this,!1);c=m.stack||m.message;this.i.error=!0;this.G(c);return}c=setTimeout;d=this.mb;this.W=ea();e=this.Pa;this.oa&&(e=Math.round(e*this.oa/this.ya));e-=this.W-this.va;if(f=this.W-this.L)this.R=Math.round(this.P/(10*f))/100,864E5<=f&&(this.I=0,Kb(this));if(0>e||this.R<this.X)-1E3>e&&(this.L-=e),e=0;this.Ga+=this.oa;this.W+=e;c(d,e)}else Ib(this),this.D&&this.D.stop(ea(),Nb(this))};k.vb=function(){return 0};
|
||||
function Jb(a){a.i.ab&&(a.i.nb=!0);Rb(a);a.I+=a.P;a.P=0;if(a.i.ka){a.i.ka=!1;a.N&&a.N.stop();var b=a.w.run;b&&(b.textContent="Run")}a.i.complete=void 0}function Ib(a){if(a.D){for(var b=a.D,c=0;c<b.g.length;c++)Ub(b.g[c],void 0);Sb(a.D,void 0)}}var Mb=30,Tb=15,Eb=["power","reset"];function Vb(a){Db.call(this,a,1E6);this.Ma=Wb;Gb(this);this.i.complete=this.i.Vc=!1;this.Oa=0;this.ra=[];this.Na=0;Xb(this)}l(Vb,Db);function Yb(a,b){a.ra.push(b)}k=Vb.prototype;
|
||||
k.reset=function(){this.i.ka&&Jb(this);Xb(this);Gb(this);this.i.error=!1;Db.prototype.reset.call(this)};function Xb(a){a.b=0;a.g=0;a.c=0;a.h=0;a.f=0;a.j=0;a.l=0;a.A=0;D(a,a.Na);$b(a,0);a.C=0}function ac(a,b){a.Na=b;D(a,b)}k.$b=function(){var a=this.b+this.g+this.c+this.h+this.f+this.j+this.l|0;return a=a+this.A+this.s+bc(this)|0};
|
||||
k.save=function(){var a=new E(this);a.set(0,[this.b,this.g,this.c,this.h,this.f,this.j,this.l,this.A,this.s,bc(this)]);a.set(1,[this.C,this.I,this.O]);a.set(2,lb(this.u));return a.data()};
|
||||
|
|
@ -117,11 +117,11 @@ H(this,ec(this));fc(this,a);this.a-=5},function(){var a=O(this);hc(this)&&(Q(thi
|
|||
D(this,a),this.a-=6);this.a-=11},function(){Q(this,bc(this)&255|this.b<<8);this.a-=11},function(){this.b=nc(this,N(this));this.a-=7},function(){Q(this,this.s);D(this,48);this.a-=11},function(){this.v&128&&(D(this,P(this)),this.a-=6);this.a-=5},function(){this.A=G(this)&65535;this.a-=5},function(){var a=O(this);this.v&128&&D(this,a);this.a-=10},function(){this.F|=512;this.a-=4;qc(this)},function(){var a=O(this);this.v&128&&(Q(this,this.s),D(this,a),this.a-=6);this.a-=11},vc,function(){J(this,N(this));
|
||||
this.a-=7},function(){Q(this,this.s);D(this,56);this.a-=11}];function S(a){p.call(this,"ChipSet",a);var b=a.model;b&&!wc[b]&&fa("Unrecognized ChipSet model: "+b);this.b=wc[b]||{};a.sound&&(this.I=null,window&&(this.I=window.AudioContext||window.webkitAudioContext),this.I&&new this.I);A(this)}l(S,p);k=S.prototype;k.S=function(){return!1};
|
||||
k.qa=function(a,b,c,d){this.u=b;this.m=c;this.J=d;this.D=a;this.h=Za(a,"Keyboard");this.g=Za(a,"SerialPort");this.video=Za(a,"Video");mb(b,this,this.b.fb);ob(b,this,this.b.gb)};k.ca=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ba=function(a){return a?this.save():!0};k.reset=function(){this.b.INIT&&!this.restore(this.b.INIT)&&this.G("reset error")};
|
||||
k.save=function(){var a=new E(this);switch(this.b.Y){case T.Y:a.set(0,[this.V,this.f,this.X,this.B,this.H,this.P,this.R]);break;case V.Y:a.set(0,[this.N,this.s]),a.set(1,[this.l,this.o]),a.set(2,[this.c,this.C,this.O,this.L]),a.set(3,[this.A,this.a,this.v,this.F,this.j])}return a.data()};
|
||||
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.Y){case T.Y:return this.V=b[0],this.f=b[1],this.X=b[2],this.B=b[3],this.H=b[4],this.P=b[5],this.R=b[6],!0;case V.Y:return this.N=b[0],this.s=b[1],b=a[1],this.l=b[0],this.o=b[1],b=a[2],this.c=b[0],this.C=b[1],this.O=b[2],this.L=b[3],b=a[3],this.A=b[0],this.a=b[1],this.v=b[2],this.F=b[3],this.j=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.dd=function(){return this.V};k.ed=function(){return this.f};k.fd=function(){return this.X};
|
||||
k.save=function(){var a=new E(this);switch(this.b.Y){case T.Y:a.set(0,[this.W,this.f,this.X,this.B,this.H,this.P,this.R]);break;case V.Y:a.set(0,[this.N,this.s]),a.set(1,[this.l,this.o]),a.set(2,[this.c,this.C,this.O,this.L]),a.set(3,[this.A,this.a,this.v,this.F,this.j])}return a.data()};
|
||||
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.Y){case T.Y:return this.W=b[0],this.f=b[1],this.X=b[2],this.B=b[3],this.H=b[4],this.P=b[5],this.R=b[6],!0;case V.Y:return this.N=b[0],this.s=b[1],b=a[1],this.l=b[0],this.o=b[1],b=a[2],this.c=b[0],this.C=b[1],this.O=b[2],this.L=b[3],b=a[3],this.A=b[0],this.a=b[1],this.v=b[2],this.F=b[3],this.j=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.dd=function(){return this.W};k.ed=function(){return this.f};k.fd=function(){return this.X};
|
||||
k.cd=function(){return this.B>>8-this.H&255};k.qd=function(a,b){this.H=b};k.sd=function(a,b){this.P=b};k.rd=function(a,b){this.B=b<<8|this.B>>8};k.td=function(a,b){this.R=b};k.ud=function(){};function xc(a){var b=0,c=0,d=~a.A;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
|
||||
k.gd=function(){var a=this.s,a=a&~V.ga.Hb;if((Nb(this.m)&64)<<1&&(a|=V.ga.Hb,a!=this.s)){var b,c;b=this.v&1;switch(this.v>>1&7){case V.ia.Ca.kc:this.A=this.A<<1|b;break;case V.ia.Ca.pc:b=xc(this);this.j[b]=V.ia.Za;break;case V.ia.Ca.lc:this.a=this.a<<1|b;break;case V.ia.Ca.Pc:b=xc(this);c=this.a&V.ia.Za;this.j[b]=c;break;case V.ia.Ca.Kc:b=xc(this);c=this.j[b];null==c&&(c=V.ia.Za);this.a=c;break;case V.ia.Ca.Lc:this.a<<=1,this.F=this.a&V.ia.Za+1}}a&=~V.ga.Ib;this.F&&(a|=V.ga.Ib);a&=~V.ga.Cb;if(b=this.h){b=
|
||||
this.h;if(c=b.h)c=b.m,c=Nb(b.m)>=b.o+c.na*c.O/1E3*1.2731488;c&&(b.h=!1);b=!b.h}b&&(a|=V.ga.Cb);a&=~V.ga.Qb;this.g&&this.g.T&yc&&(a|=V.ga.Qb);return this.s=a};k.vd=function(a,b){this.N=b};k.yd=function(a,b){this.v=b};k.xd=function(a,b){a=b&3;switch(b>>2&3){case 0:this.c=this.c&-4|a;break;case 1:this.c=this.c&-13|a<<2;this.video&&(b=this.video,a=this.c,b.la!==a&&((b.la=a)?Ub(b,!0):b.na=!0));break;case 2:switch(a){case 0:this.C=~this.C;break;case 2:case 3:this.O=3-a}break;case 3:this.L=a}};
|
||||
this.h;if(c=b.h)c=b.m,c=Nb(b.m)>=b.o+c.na*c.O/1E3*1.2731488;c&&(b.h=!1);b=!b.h}b&&(a|=V.ga.Cb);a&=~V.ga.Qb;this.g&&this.g.U&yc&&(a|=V.ga.Qb);return this.s=a};k.vd=function(a,b){this.N=b};k.yd=function(a,b){this.v=b};k.xd=function(a,b){a=b&3;switch(b>>2&3){case 0:this.c=this.c&-4|a;break;case 1:this.c=this.c&-13|a<<2;this.video&&(b=this.video,a=this.c,b.la!==a&&((b.la=a)?Ub(b,!0):b.na=!0));break;case 2:switch(a){case 0:this.C=~this.C;break;case 2:case 3:this.O=3-a}break;case 3:this.L=a}};
|
||||
k.wd=function(a,b){b&V.ua.Jc?(b&=V.ua.Mb,this.o!=b&&(this.o=b,this.video&&(this.video.bc=this.o==V.ua.Mb?50:60))):(b&=V.ua.ub,this.l!=b&&(this.l=b,this.video&&(a=this.video,b=this.l==V.ua.ub?132:80,a.C=b,a.M=a.va,80<b&&a.M--,zc(a)&&Ac(a))))};
|
||||
var T={Y:1978.1,Nc:{Z:0,Ce:1,Ge:16,Ne:32,We:64,Ve:128,Ja:14},za:{Z:1,oc:1,Ic:2,Ec:4,Fc:16,Gc:32,Hc:64,Ja:8},Oc:{Z:2,Be:3,ef:4,De:8,Re:16,Se:32,Te:64,Ee:128,Ja:0},$e:{Z:3},Ye:{Z:2,Oe:7},bf:{Z:3,ff:1,af:2,Ue:4,Le:8,Fe:16,Xd:32},Ze:{Z:4},cf:{Z:5,He:1,Ie:2,Je:4,Ke:8,gf:16}},V={Y:100,ga:{Z:66,Qb:1,Cc:2,Dc:4,Qe:8,Pe:16,Ib:32,Hb:64,Cb:128},nc:{Z:66,INIT:0},ua:{Z:194,$d:0,ub:16,Jc:32,Mb:48,sc:0,tc:32},Xa:{Z:162,Xe:0,vc:0,rc:0,uc:0,qc:0},ia:{Me:{Z:98},Ca:{lc:0,kc:1,Lc:2,Pc:4,pc:5,Kc:6,df:7},Za:16383}},wc=
|
||||
{SI1978:T,VT100:V};T.INIT=[[T.Nc.Ja,T.za.Ja,T.Oc.Ja,0,0,0,0]];
|
||||
|
|
@ -134,7 +134,7 @@ function Cc(a,b,c,d){if(d)a.G("Unable to load system ROM (error "+d+": "+b+")");
|
|||
" ").replace(/ +$/,"").split(" "),a.a=Array(b.length),e=0;e<b.length;e++)a.a[e]=sa(b[e]);Dc(a)}}
|
||||
function Dc(a){if(!qa(a))if(!a.c)A(a);else if(a.a&&a.u){a.b||(a.b=a.a.length);if(a.a.length!=a.b){var b="ROM size ("+B(a.a.length,8,!0)+") does not match specified size ("+B(a.b,8,!0)+")";a.i.error=!0;a.G(b)}else{b=a.g;if(cb(a.u,b,a.b,ub)){var c;for(c=0;c<a.a.length;c++)jb(a.u,b+c,a.a[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.u,g=d.b,h=[],m=d.g>>>f.b;0<g&&m<f.a.length;)h.push(f.a[m++]),g-=f.c;f=d.u;
|
||||
d=d.b;g=0;for(e>>>=f.b;0<d&&e<f.a.length;){m=h[g++];if(!m)break;f.a[e++]=m;d-=f.c}}delete a.a}}A(a)}}Na(function(){for(var a=y(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=u(c),d=new Bc(d);ka(d,c)}});
|
||||
function Ec(a){p.call(this,"RAM",a);this.sa=this.b=null;this.f=a.addr;this.g=a.size;this.Aa=a.load;this.ta=a.exec;this.c=!1;this.a=a.file;this.h=ta(this.a);if(this.a){a=this.a;var b=ua(this.h);"json"!=b&&"hex"!=b&&(a=wa()+"/api/v1/dump?file="+this.a+"&format=bytes&decimal=true");var c=this;Da(a,null,!0,function(a,b,f){f?c.G("Unable to load RAM resource (error "+f+": "+a+")"):(ba(c.Ka,a,b),(a=Ea(a,b))?(c.b=a.W,c.sa=a.sa,null==c.Aa&&(c.Aa=a.Aa),null==c.ta&&(c.ta=a.ta)):c.a=null,Fc(c))})}}l(Ec,p);
|
||||
function Ec(a){p.call(this,"RAM",a);this.sa=this.b=null;this.f=a.addr;this.g=a.size;this.Aa=a.load;this.ta=a.exec;this.c=!1;this.a=a.file;this.h=ta(this.a);if(this.a){a=this.a;var b=ua(this.h);"json"!=b&&"hex"!=b&&(a=wa()+"/api/v1/dump?file="+this.a+"&format=bytes&decimal=true");var c=this;Da(a,null,!0,function(a,b,f){f?c.G("Unable to load RAM resource (error "+f+": "+a+")"):(ba(c.Ka,a,b),(a=Ea(a,b))?(c.b=a.T,c.sa=a.sa,null==c.Aa&&(c.Aa=a.Aa),null==c.ta&&(c.ta=a.ta)):c.a=null,Fc(c))})}}l(Ec,p);
|
||||
Ec.prototype.qa=function(a,b,c,d){this.u=b;this.m=c;this.J=d;Fc(this)};Ec.prototype.ca=function(){return!0};Ec.prototype.ba=function(){return!0};
|
||||
function Fc(a){!a.c&&a.g&&cb(a.u,a.f,a.g,1)&&(a.c=!0);if(!qa(a)){if(!a.c)t("No RAM allocated");else if(a.a){if(!a.b||!a.u)return;var b=a.f;null!==a.Aa&&(b=a.Aa);for(var c=0;c<a.b.length;c++)jb(a.u,b+c,a.b[c]);if(null!==a.ta){if(a.ta==Gc){for(c=0;c<Hc.length;c++)jb(a.u,Hc[c],118);Yb(a.m,function(a){return function(b){if(0<=Hc.indexOf(b)){var c=!1,d=a.m,e=a.J;if(b==Ic)switch(c=!0,d.c){case Jc:Kc(a,String.fromCharCode(d.f));break;case Lc:for(var m=ec(d),q="",x=255;x--;){var w=K(a.m,m++);if(36==w)break;
|
||||
q+=String.fromCharCode(w)}Kc(a,q);break;default:c=!1}c?uc.call(d):e&&(a.aa("\nCP/M vector "+B(b,4,!0)),D(d,b),Jb(e));b=!0}else b=!1;return b}}(a))}ac(a.m,a.ta)}delete a.b}A(a)}}Ec.prototype.reset=function(){};function Kc(a,b){b=b.replace(/\r/g,"");a.pa&&(a.pa.value+=b,a.pa.scrollTop=a.pa.scrollHeight)}var Ic=5,Jc=2,Lc=9,Gc=256,Hc=[0,Ic];Na(function(){for(var a=y(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=u(c),d=new Ec(d);ka(d,c)}});
|
||||
|
|
@ -156,16 +156,16 @@ Y[n.Nd]=9,Y[n.q]=10,Y[n["]"]]=20,Y[n["["]]=21,Y[n.$c]=22,Y[n.Ld]=23,Y[n.r]=24,Y[
|
|||
Y[n.Tc]=121,Y[n.z]=122,Y[n.Kb]=133,Y[n.Jb]=134,Y[n.Vb]=135,Y[n.Ob]=136,Y[n.Sb]=137,Y[n.Q]=138,Y[n["}"]]=148,Y[n["{"]]=149,Y[n.zb]=150,Y[n.Pb]=151,Y[n.Lb]=152,Y[n.E]=153,Y[n["!"]]=154,Y[n["~"]]=164,Y[n._]=165,Y[n["("]]=166,Y[n["&"]]=167,Y[n.$]=168,Y[n["#"]]=169,Y[n["+"]]=180,Y[n[")"]]=181,Y[n["*"]]=182,Y[n["^"]]=183,Y[n["%"]]=184,Y[n["@"]]=185,Y[n["|"]]=197,Y[n.lb]=198,Y[n.Bb]=199,Y[n.xb]=200,Y[n.wb]=201,Y[n.Ia]=202,Y[n['"']]=213,Y[n[":"]]=214,Y[n.Ab]=215,Y[n.yb]=216,Y[n.kb]=217,Y[n.Nb]=218,Y[n[">"]]=
|
||||
229,Y[n["<"]]=230,Y[n.Gb]=231,Y[n.sb]=232,Y[n.Ub]=233,Y[n["?"]]=245,Y[n.Fb]=246,Y[n.Rb]=248,Y[n.tb]=249,Y[n.$a]=250,Y),rb:{},La:{},Fa:{"caps-lock":20,ctrl:17,esc:27,tab:9,"num-comma":116,"break":117,"line-feed":118,"no-scroll":119,setup:120},mc:{Z:130,INIT:127},fa:{Z:130,Ac:1,zc:2,yc:4,xc:8,Bc:16,Eb:32,Db:63,Mc:64,Zd:128,INIT:0},wc:127};W.La={l4:W.fa.Ac,l3:W.fa.zc,l2:W.fa.yc,l1:W.fa.xc,locked:W.fa.Bc,local:W.fa.Eb,online:~W.fa.Eb,"caps-lock":Sc};var Nc={SI1978:Yc,VT100:W};
|
||||
W.INIT=[[W.fa.INIT,W.mc.INIT,!1,0,-1]];W.fb={130:Mc.prototype.hd};W.gb={130:Mc.prototype.zd};Na(function(){for(var a=y(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=u(c),d=new Mc(d);ka(d,c)}});
|
||||
function ld(a,b,c,d,e){p.call(this,"Video",a);var f=this;this.Ea=Ja("Gecko/");var g=["","moz","ms","webkit"];this.A=a.screenWidth;this.s=a.screenHeight;this.da=a.bufferAddr;this.Qc=a.bufferRAM;var h=a.bufferFormat;this.P=h&&md[h.toUpperCase()]||nd;this.C=a.bufferCols;this.R=a.bufferRows;this.va=this.M=a.cellWidth||1;this.K=a.cellHeight||1;this.V=null;this.ya=!1;this.ea=a.bufferBits||1;this.Sc=a.bufferLeft||0;if(this.b=a.bufferRotate)this.b=this.b%360,0<this.b&&(this.b-=360),-90!=this.b&&(this.G("unsupported buffer rotation: "+
|
||||
function ld(a,b,c,d,e){p.call(this,"Video",a);var f=this;this.Ea=Ja("Gecko/");var g=["","moz","ms","webkit"];this.A=a.screenWidth;this.s=a.screenHeight;this.da=a.bufferAddr;this.Qc=a.bufferRAM;var h=a.bufferFormat;this.P=h&&md[h.toUpperCase()]||nd;this.C=a.bufferCols;this.R=a.bufferRows;this.va=this.M=a.cellWidth||1;this.K=a.cellHeight||1;this.W=null;this.ya=!1;this.ea=a.bufferBits||1;this.Sc=a.bufferLeft||0;if(this.b=a.bufferRotate)this.b=this.b%360,0<this.b&&(this.b-=360),-90!=this.b&&(this.G("unsupported buffer rotation: "+
|
||||
this.b),this.b=0);this.ha=a.interruptRate;this.Pa=a.refreshRate||60;this.o=b;this.c=c;this.L=(this.Wc=d)||b||null;this.mb=this.A;this.jc=this.s;this.wa=this.A/this.C|0;this.xa=this.s/this.R|0;1<this.K&&(this.R++,this.la=0,this.na=!1);b=a.smoothing;(c=Ka("smoothing"))&&(b="true"==c);if(null!=b)for(c=0;c<g.length;c++)if(d=(d=g[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.c[d]){this.c[d]=b;break}if(this.f=a.screenRotate)this.f=this.f%360,0<this.f&&(this.f-=360),-90!=this.f?(this.G("unsupported screen rotation: "+
|
||||
this.f),this.f=0):(this.c.translate(0,this.s),this.c.rotate(this.f*Math.PI/180),this.c.scale(this.s/this.A,this.A/this.s));if(this.a=e)if(this.a.Ha=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.a.Ha){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){od(f,!!(document.fullscreenElement||document.msFullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement))},!1);
|
||||
break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){od(f,null)},!1);break}}if(this.F=a.fontROM)"json"!=ua(this.F)&&(this.F=wa()+"/api/v1/dump?file="+this.F+"&format=bytes"),Da(this.F,null,!0,function(a,b,c){pd(f,a,b,c)});this.ra={}}l(ld,p);
|
||||
function zc(a){a.j=a.C*a.M;a.B=a.R*a.K;var b=a.j,c=a.B;a.b&&(b=a.B,c=a.j);a.v=0;if(!a.Qc&&(a.v=(a.j*a.ea>>3)*a.B,!cb(a.u,a.da,a.v,3)))return!1;a.v?(a.Ga=a.c.createImageData(b,c),a.Na=16/a.ea|0,qd(a,a.v>>1)):qd(a,(a.C+1)*a.R);a.l=document.createElement("canvas");a.l.width=b;a.l.height=c;a.ma=a.l.getContext("2d");a.H={};a.O=1<<a.ea;a.I=Array(a.O+rd);a.I[0]=[0,0,0,255];a.I[1]=[255,255,255,255];a.P==sd&&(a.I[a.O+td]=[255,255,0,255],a.I[a.O+ud]=[0,255,0,255]);a.P==vd&&(a.bc=60,a.oa=!1,a.X=Array(a.C));
|
||||
return!0}k=ld.prototype;k.S=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.ra[b]=c,!0;switch(b){case "fullScreen":return this.w[b]=c,this.a&&this.a.Ha?c.onclick=function(){d.Ha()}:c.parentNode.removeChild(c),!0}return!1};
|
||||
k.qa=function(a,b,c,d){this.D=a;this.u=b;this.m=c;this.J=d;zc(this);if(this.h=Za(a,"Keyboard")){for(var e in this.ra)this.h.S("led",e,this.ra[e]);this.o&&this.h.S(this.Wc?"textarea":"canvas","screen",this.L)}var f=this;this.Qa=Pb(this.m,function(){Ub(f)});Qb(this.m,this.Qa,1E3/Math.max(this.Pa,this.ha));this.Oa=0;this.F||A(this)};
|
||||
function pd(a,b,c,d){if(d)a.G("Unable to load font ROM (error "+d+": "+b+")");else{ba(a.Ka,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){t("Empty font ROM: "+b);return}if(1==f.length){t(f[0]);return}if(2048==f.length)a.V=f,Ac(a);else{a.G("Unrecognized font data length ("+f.length+")");return}}catch(g){a.G("Font ROM data error: "+g.message);return}(a.c||a.J)&&A(a)}}
|
||||
function Ac(a){a.V&&(a.ya=a.P==vd,a.H[wd]=[xd(a,a.M,a.K),xd(a,a.M,a.K,a.oa)],a.H[yd]=[xd(a,2*a.M,a.K),xd(a,2*a.M,a.K,a.oa)],a.H[zd]=a.H[Ad]=[xd(a,2*a.M,2*a.K),xd(a,2*a.M,2*a.K,a.oa)])}
|
||||
function xd(a,b,c,d){var e=8>=a.va?8:16,f=8<e?15:0,g=a.V.length/e,h=!1===d,m={M:b,K:c};m.canvas=document.createElement("canvas");m.canvas.width=16*b;m.canvas.height=g/16*c;m.context=m.canvas.getContext("2d");for(var q=m.context.createImageData(b,c),x=0;x<g;x++){for(var w=0,L=w;w<a.K;w++)for(var z=x*e+(f+w&e-1),z=d&&8==w?255:a.V[z],v=0;v<c/a.K;v++){for(var F=0,U=0,Z=U;U<a.M;U++){for(var da=z&128>>(7<U?7:U),F=a.ya&&!da&&F?F:da,xa=0;xa<b/a.M;xa++)h&&(F=!F),Bd(a,q,Z,L,F?1:0),Z++;F=da}L++}m.context.putImageData(q,
|
||||
function pd(a,b,c,d){if(d)a.G("Unable to load font ROM (error "+d+": "+b+")");else{ba(a.Ka,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){t("Empty font ROM: "+b);return}if(1==f.length){t(f[0]);return}if(2048==f.length)a.W=f,Ac(a);else{a.G("Unrecognized font data length ("+f.length+")");return}}catch(g){a.G("Font ROM data error: "+g.message);return}(a.c||a.J)&&A(a)}}
|
||||
function Ac(a){a.W&&(a.ya=a.P==vd,a.H[wd]=[xd(a,a.M,a.K),xd(a,a.M,a.K,a.oa)],a.H[yd]=[xd(a,2*a.M,a.K),xd(a,2*a.M,a.K,a.oa)],a.H[zd]=a.H[Ad]=[xd(a,2*a.M,2*a.K),xd(a,2*a.M,2*a.K,a.oa)])}
|
||||
function xd(a,b,c,d){var e=8>=a.va?8:16,f=8<e?15:0,g=a.W.length/e,h=!1===d,m={M:b,K:c};m.canvas=document.createElement("canvas");m.canvas.width=16*b;m.canvas.height=g/16*c;m.context=m.canvas.getContext("2d");for(var q=m.context.createImageData(b,c),x=0;x<g;x++){for(var w=0,L=w;w<a.K;w++)for(var z=x*e+(f+w&e-1),z=d&&8==w?255:a.W[z],v=0;v<c/a.K;v++){for(var F=0,U=0,Z=U;U<a.M;U++){for(var da=z&128>>(7<U?7:U),F=a.ya&&!da&&F?F:da,xa=0;xa<b/a.M;xa++)h&&(F=!F),Bd(a,q,Z,L,F?1:0),Z++;F=da}L++}m.context.putImageData(q,
|
||||
(x&15)*b,(x>>4)*c)}return m}k.ca=function(a,b){return b||!a||this.restore(a)?!0:!1};k.ba=function(a){return!a||this.save()};k.save=function(){var a=new E(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};
|
||||
k.Ha=function(){var a=!1;if(this.a){if(this.a.Ha){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.A/this.s;b>c&&(a=Math.round(c/b*100)+"%")}this.Ea?(this.o.style.width=a,this.o.style.width=a,this.o.style.display="block",this.o.style.margin="auto"):(this.a.style.width=a,this.a.style.height="auto");this.a.style.backgroundColor="black";this.a.Ha();a=!0}this.L&&this.L.focus()}return a};
|
||||
function od(a,b){!b&&a.a&&(a.Ea?a.o.style.width=a.o.style.height="":a.a.style.width=a.a.style.height="")}function qd(a,b){a.Ma=b;a.N=!1;if(void 0===a.g||a.g.length!=a.Ma)a.g=Array(a.Ma)}function Bd(a,b,c,d,e){d=a.b?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.P==sd&&(208<=c&&236>c?e=a.O+td:28<=c&&72>c&&(e=a.O+ud));a=a.I[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
|
||||
|
|
@ -179,33 +179,33 @@ function Id(a){p.call(this,"SerialPort",a);this.H=+a.adapter;switch(this.H){case
|
|||
k=Id.prototype;k.S=function(a,b,c,d){var e=this;switch(b){case Jd:return this.w[b]=this.b=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),Kd(e,b);return!0},c.onkeypress=function(a){a=a||window.event;Kd(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.w[b]=c,c.onclick=function(){e.pb(d);return!0},!0}return!1};
|
||||
k.qa=function(a,b,c,d){this.D=a;this.u=b;this.m=c;this.J=d;var e=this;this.P=Pb(this.m,function(){e.pb()});this.R=Pb(this.m,function(){Uc(e)});this.N=Za(a,"ChipSet");mb(b,this,Ld,this.I);ob(b,this,Md,this.I);A(this)};
|
||||
k.ac=function(a){if(!this.a){var b=Fb(this.D,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Aa(c[0]);if(d!=this.Ya)return;c=Aa(c[1]);if(this.a=ia(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.l);if(this.Ba=e.receiveData){this.l=a;this.s=e.receiveStatus;this.status("Connected "+this.Ka+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};
|
||||
k.ca=function(a,b){if(!b)if(this.ac(this.l),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.ba=function(a){return a?this.save():!0};k.reset=function(){Nd(this)};k.save=function(){var a=new E(this),b=0,c=[];c[b++]=this.o;c[b++]=this.A;c[b++]=this.C;c[b++]=this.T;c[b++]=this.h;c[b++]=this.j;c[b]=this.v;a.set(0,c);return a.data()};k.restore=function(a){return Nd(this,a[0])};
|
||||
function Nd(a,b){var c=0;b||(b=Od);a.o=b[c++];a.A=b[c++];a.C=b[c++];a.T=b[c++];a.h=b[c++];a.j=b[c++];a.v=b[c];return!0}function Pd(a,b){var c=a.v&b;b&15||(c>>=4);b=Qd[c];c=((a.h&Rd)>>2)+6;a.h&Sd&&c++;c+=((a.h&Td)>>6)+1>>1;return 1E3/Math.round(b/c)}function Kd(a,b){return a.B||a.T&Ud?!1:(a.A=b,a.T|=Ud,rc(a.m,a.O),!0)}
|
||||
k.pb=function(a){null!=a&&(this.g="number"!=typeof a?a:this.g+String.fromCharCode(a));this.g&&(Kd(this,this.g.charCodeAt(0))&&(this.g=this.g.substr(1)),this.g&&this.m&&Qb(this.m,this.P,Pd(this,Vd)));return!0};k.Jd=function(a){this.T&=~Wd;a&64&&(this.T|=Wd)};function Uc(a,b){a.T=a.T|yc|Xd;b&&a.Ba&&a.Ba.call(a.a,b)}k.bd=function(){var a=this.A;this.T&=~Ud;return a};k.ad=function(){return this.T};
|
||||
k.pd=function(a,b){this.C=b;this.T&=~(yc|Xd);if(19==b)this.B=!0;else if(17==b)this.B=!1;else if(this.Ba&&this.Ba.call(this.a,b),this.b)if(8==b)this.b.value=this.b.value.slice(0,-1),0<this.f&&this.f--;else{var c;13!=b&&10!=b&&(c=Ba[b]);a=c=c?"<"+c+">":String.fromCharCode(b);c=a.length;9==b?(b=this.L||8,c=b-this.f%b,this.L&&(a=" ".slice(0,c))):13==b&&(this.f=c=0,a="\n");this.F&&!this.f&&c&&(a=String.fromCharCode(this.F)+a);this.b.value+=a;this.b.scrollTop=this.b.scrollHeight;
|
||||
k.ca=function(a,b){if(!b)if(this.ac(this.l),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.ba=function(a){return a?this.save():!0};k.reset=function(){Nd(this)};k.save=function(){var a=new E(this),b=0,c=[];c[b++]=this.o;c[b++]=this.A;c[b++]=this.C;c[b++]=this.U;c[b++]=this.h;c[b++]=this.j;c[b]=this.v;a.set(0,c);return a.data()};k.restore=function(a){return Nd(this,a[0])};
|
||||
function Nd(a,b){var c=0;b||(b=Od);a.o=b[c++];a.A=b[c++];a.C=b[c++];a.U=b[c++];a.h=b[c++];a.j=b[c++];a.v=b[c];return!0}function Pd(a,b){var c=a.v&b;b&15||(c>>=4);b=Qd[c];c=((a.h&Rd)>>2)+6;a.h&Sd&&c++;c+=((a.h&Td)>>6)+1>>1;return 1E3/Math.round(b/c)}function Kd(a,b){return a.B||a.U&Ud?!1:(a.A=b,a.U|=Ud,rc(a.m,a.O),!0)}
|
||||
k.pb=function(a){null!=a&&(this.g="number"!=typeof a?a:this.g+String.fromCharCode(a));this.g&&(Kd(this,this.g.charCodeAt(0))&&(this.g=this.g.substr(1)),this.g&&this.m&&Qb(this.m,this.P,Pd(this,Vd)));return!0};k.Jd=function(a){this.U&=~Wd;a&64&&(this.U|=Wd)};function Uc(a,b){a.U=a.U|yc|Xd;b&&a.Ba&&a.Ba.call(a.a,b)}k.bd=function(){var a=this.A;this.U&=~Ud;return a};k.ad=function(){return this.U};
|
||||
k.pd=function(a,b){this.C=b;this.U&=~(yc|Xd);if(19==b)this.B=!0;else if(17==b)this.B=!1;else if(this.Ba&&this.Ba.call(this.a,b),this.b)if(8==b)this.b.value=this.b.value.slice(0,-1),0<this.f&&this.f--;else{var c;13!=b&&10!=b&&(c=Ba[b]);a=c=c?"<"+c+">":String.fromCharCode(b);c=a.length;9==b?(b=this.L||8,c=b-this.f%b,this.L&&(a=" ".slice(0,c))):13==b&&(this.f=c=0,a="\n");this.F&&!this.f&&c&&(a=String.fromCharCode(this.F)+a);this.b.value+=a;this.b.scrollTop=this.b.scrollHeight;
|
||||
this.f+=c}else if(null!=this.c){if(10==b||1024<=this.c.length)this.aa(this.c),this.c="";10!=b&&(this.c+=String.fromCharCode(b))}this.m&&Qb(this.m,this.R,Pd(this,Yd))};k.od=function(a,b){this.o?(this.s&&(b^this.j)&(Zd|$d)&&(a=0,this.l?(a|=b&Zd?32:0,a|=b&$d?320:0):(a|=b&Zd?16:0,a|=b&$d?1048576:0),this.s.call(this.a,a)),this.j=b,this.j&ae&&(this.o=!1)):(this.h=b,this.o=!0)};k.nd=function(a,b){this.v=b};
|
||||
var Rd=12,Sd=16,Td=192,$d=2,Zd=32,ae=64,yc=1,Ud=2,Xd=4,Wd=128,Vd=15,Yd=240,Qd=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Od=[!1,0,0,133,142,39,238],Jd="buffer",Ld={0:Id.prototype.bd,1:Id.prototype.ad},Md={0:Id.prototype.pd,1:Id.prototype.od,2:Id.prototype.nd};Na(function(){for(var a=y(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=u(c),d=new Id(d);ka(d,c)}});
|
||||
function be(a,b,c){p.call(this,"Computer",a);this.i.U=!1;ce(this,b);this.v=Fb(this,"autoPower",a);this.c=0;this.H=a.busWidth||a.buswidth;this.a=de;this.o=null;this.j=this.C=!1;this.I=Fb(this,"url")||"";(Math.random()+.1).toString(36);this.b=ee(this);if(this.m=ja("CPU",this.id)){this.J=ja("Debugger",this.id);this.g=[];for(b=null;b=Za(this,"Video",b);)this.g.push(b);this.u=new ab({id:this.Ka+".bus",busWidth:this.H},this.m,this.J);var d,e=ha(this.id);if((this.h=ja("Panel",this.id))&&this.h.pa)for(b=
|
||||
function be(a,b,c){p.call(this,"Computer",a);this.i.V=!1;ce(this,b);this.v=Fb(this,"autoPower",a);this.c=0;this.H=a.busWidth||a.buswidth;this.a=de;this.o=null;this.j=this.C=!1;this.I=Fb(this,"url")||"";(Math.random()+.1).toString(36);this.b=ee(this);if(this.m=ja("CPU",this.id)){this.J=ja("Debugger",this.id);this.g=[];for(b=null;b=Za(this,"Video",b);)this.g.push(b);this.u=new ab({id:this.Ka+".bus",busWidth:this.H},this.m,this.J);var d,e=ha(this.id);if((this.h=ja("Panel",this.id))&&this.h.pa)for(b=
|
||||
0;b<e.length;b++)d=e[b],d.G=this.h.G,d.aa=this.h.aa,d.pa=this.h.pa;this.aa("PC8080 v1.34.0\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.qa&&d.qa(this,this.u,this.m,this.J);b=null;d=Fb(this,"resume",a);void 0!==d&&(1<d.length?b=this.l=d:this.a=parseInt(d,10));var f;if(a=Fb(this,"state")||(f=!0,a.state))b=this.A=a,f||(this.j=!0,this.a=de),this.a&&(this.s=new E(this,"1.34.0"),fe(this.s)?
|
||||
b=null:delete this.s);!b&&this.a&&(b=ge(this))&&(this.j=!0);if(b){var g=this;Da(b,null,!0,function(a,b,c){c?(g.l=null,g.j=!1,g.G("Unable to load machine state from server (error "+c+(b?": "+Aa(b):"")+")")):(g.o=b,g.C=!0);A(g)})}else A(this);this.w.power||(this.v=!0);!c&&this.v&&he(this,this.Ta)}else t("Unable to find CPU component")}l(be,p);function ce(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){t(d.message+" ("+c+")")}}a.F=b}
|
||||
function Fb(a,b,c){var d=b.toLowerCase(),d=Ka(b)||Ka(d);void 0===d&&a.F&&(d=a.F[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function he(a,b,c){for(var d=ha(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!qa(f)){qa(f,function(){he(a,b,c)});return}}b.call(a,c)}
|
||||
function ie(a,b){var c=new E(a,"1.34.0",je);if(fe(c)&&ke(c)){var d=c.get(le),e=b?b.get(le):"unknown";d!=e&&(a.G("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=be.prototype;
|
||||
k.Ta=function(a){void 0===a&&(a=this.a||(this.o?me:de));if(!this.c){this.c++;var b=!1,c=!1;this.B=!1;var d=this.s||new E(this,"1.34.0");if(a==ne)b=!0;else if(a>de){if(fe(d,this.o)){this.f=new E(this,"1.34.0",oe);fe(this.f)&&(pe(this,d),a=qe,re(this.f));this.f.set(le,Ca());se(this.f);var e=this.a&&!this.j;if(a==me||ga("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=ke(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?fe(d,g):("error"==f&&"no machine state"!=
|
||||
g?(this.G("Error: "+g),"unable to verify user"==g&&(Ia(te,""),this.b=null)):this.aa(f+": "+g),re(d),fe(d)?(c=ke(d),e=!0):c=!1))}e&&ie(this,c?d:null)}else a==qe&&d.clear()}else ie(this);delete this.o;delete this.s}e=ha(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.m&&(c=ue(this,g,d,b,c));b=[d,a,c];a!=ne?he(this,this.Yb,b):this.Yb(b)}};
|
||||
function ue(a,b,c,d,e){if(!b.i.U){b.i.U=!0;if(b.ca){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ca(f,d)&&f&&(t("Unable to restore state for "+b.type),a.A&&!a.C?(c.clear(),a.a=de,window&&window.location.reload()):a.B=!0,b.ca(null),e=!1)}if(!d&&b.Tb)for(a=b.Tb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
k.Yb=function(a){var b=a[0],c=0>a[1];a=a[2];this.N=!0;this.i.U=!0;var d=this.w.power;d&&(d.textContent="Shutdown");this.m&&(ue(this,this.m,b,c,a),this.m.Sa());this.B&&(pe(this,b),b.clear());!c&&this.f&&(this.f.clear(),delete this.f);this.c=0};
|
||||
function ue(a,b,c,d,e){if(!b.i.V){b.i.V=!0;if(b.ca){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ca(f,d)&&f&&(t("Unable to restore state for "+b.type),a.A&&!a.C?(c.clear(),a.a=de,window&&window.location.reload()):a.B=!0,b.ca(null),e=!1)}if(!d&&b.Tb)for(a=b.Tb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
k.Yb=function(a){var b=a[0],c=0>a[1];a=a[2];this.N=!0;this.i.V=!0;var d=this.w.power;d&&(d.textContent="Shutdown");this.m&&(ue(this,this.m,b,c,a),this.m.Sa());this.B&&(pe(this,b),b.clear());!c&&this.f&&(this.f.clear(),delete this.f);this.c=0};
|
||||
function pe(a,b){if(ga("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.b||"";b=b.toString();var d={app:"PC8080",ver:"1.34.0"};d.url=a.I;d.user=c;d.type="bug";d.data=b;Da("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function ve(a,b,c){var d,e="none";if(a.c)return null;a.c--;var f=new E(a,"1.34.0"),g=new E(a,"1.34.0",je),h=Ca();g.set(le,h);f.set(le,h);f.set(we,"1.34.0");f.set(xe,window?window.location.href:null);f.set(ye,window?window.navigator.userAgent:"");a.m&&a.m.ba&&(c&&Jb(a.m),d=a.m.ba(b,c),"object"===typeof d&&f.set(a.m.id,d),c&&(a.m.i.U=!1,!1===d&&(e=null)));for(var h=ha(a.id),m=0;m<h.length;m++){var q=h[m];q.i.U&&(q.ba&&(d=q.ba(b,c),"object"===typeof d&&f.set(q.id,d)),c&&(q.i.U=!1,!1===d&&(e=null)))}e&&
|
||||
(c?(h=d=!1,b?(a.b&&ze(a,a.b,f.toString()),se(g)&&se(f)||(e=null,d=h=!0)):a.a&&(d=!0,h=a.a==Ae),d&&f.clear(h)):e=f.toString());c&&(a.i.U=!1,b=a.w.power)&&(b.textContent="Power");a.c=0;return e}k.reset=function(){this.u&&this.u.reset&&this.u.reset();for(var a=ha(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c.reset&&c.reset()}};k.start=function(a,b){for(var c=ha(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
|
||||
function ve(a,b,c){var d,e="none";if(a.c)return null;a.c--;var f=new E(a,"1.34.0"),g=new E(a,"1.34.0",je),h=Ca();g.set(le,h);f.set(le,h);f.set(we,"1.34.0");f.set(xe,window?window.location.href:null);f.set(ye,window?window.navigator.userAgent:"");a.m&&a.m.ba&&(c&&Jb(a.m),d=a.m.ba(b,c),"object"===typeof d&&f.set(a.m.id,d),c&&(a.m.i.V=!1,!1===d&&(e=null)));for(var h=ha(a.id),m=0;m<h.length;m++){var q=h[m];q.i.V&&(q.ba&&(d=q.ba(b,c),"object"===typeof d&&f.set(q.id,d)),c&&(q.i.V=!1,!1===d&&(e=null)))}e&&
|
||||
(c?(h=d=!1,b?(a.b&&ze(a,a.b,f.toString()),se(g)&&se(f)||(e=null,d=h=!0)):a.a&&(d=!0,h=a.a==Ae),d&&f.clear(h)):e=f.toString());c&&(a.i.V=!1,b=a.w.power)&&(b.textContent="Power");a.c=0;return e}k.reset=function(){this.u&&this.u.reset&&this.u.reset();for(var a=ha(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c.reset&&c.reset()}};k.start=function(a,b){for(var c=ha(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
|
||||
k.stop=function(a,b){for(var c=ha(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||
k.S=function(a,b,c){var d=this;switch(b){case "power":return this.w[b]=c,c.onclick=function(){d.c||(d.i.U?ve(d,!1,!0):he(d,d.Ta))},!0;case "reset":return this.w[b]=c,c.onclick=function(){if(d.i.U&&!d.c)if(d.a&&!d.l){var a=ga("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");ve(d,a,!0);!a&&d.A?window&&window.location.reload():d.Ta(de)}else d.reset(),d.m&&d.m.Sa()},!0;case "save":if(va())c.parentNode.removeChild(c);else return this.w[b]=
|
||||
k.S=function(a,b,c){var d=this;switch(b){case "power":return this.w[b]=c,c.onclick=function(){d.c||(d.i.V?ve(d,!1,!0):he(d,d.Ta))},!0;case "reset":return this.w[b]=c,c.onclick=function(){if(d.i.V&&!d.c)if(d.a&&!d.l){var a=ga("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");ve(d,a,!0);!a&&d.A?window&&window.location.reload():d.Ta(de)}else d.reset(),d.m&&d.m.Sa()},!0;case "save":if(va())c.parentNode.removeChild(c);else return this.w[b]=
|
||||
c,c.onclick=function(){var a=ee(d,!0);if(a){var b=!!(d.a&&!d.l||d.A),c=ve(d,b);b?ze(d,a,c):d.G("Resume disabled, machine state not saved")}},!0}return!1};function ee(a,b){var c=a.b;c||((c=Ha(te),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=Be(a,c))||a.G("The user ID is invalid.")):b&&a.G("Browser local storage is not available"));return c}
|
||||
function Be(a,b){a.b=null;b=Da(wa()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ia(te,b.data),a.b=b.data)}catch(d){t(d.message+" ("+c+")")}return a.b}function ge(a){var b=null;a.b&&(b=wa()+"/api/v1/user?req=load&user="+a.b+"&state="+Ce(a,"1.34.0"));return b}
|
||||
function ze(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Ce(a,"1.34.0");d.data=c;b=Da(wa()+"/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.G("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.G(c),Ia(te,""),a.b=null)}}
|
||||
function Za(a,b,c){a=ha(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}function Ob(a,b){if(a.g.length){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a=a.g[0];a.L&&a.L.focus();!b&&window&&window.scrollTo(c,d)}}
|
||||
function Sb(a,b){a.m&&(a=a.m,a.Oa&&(b||!a.i.ka||a.i.Xb)&&(R(a,"A",a.b),R(a,"B",a.g),R(a,"C",a.c),R(a,"BC",cc(a),4),R(a,"D",a.h),R(a,"E",a.f),R(a,"DE",ec(a),4),R(a,"H",a.j),R(a,"L",a.l),R(a,"HL",G(a),4),R(a,"SP",a.A,4),R(a,"PC",a.s,4),b=bc(a),R(a,"PS",b,4),R(a,"IF",b&512?1:0,1),R(a,"SF",b&128?1:0,1),R(a,"ZF",b&64?1:0,1),R(a,"AF",b&16?1:0,1),R(a,"PF",b&4?1:0,1),R(a,"CF",b&1?1:0,1)),b=a.w.speed)&&(b.textContent=a.i.ka&&a.R?a.R.toFixed(2)+"Mhz":"Stopped")}
|
||||
var oe="failsafe",je="validate",le="timestamp",we="version",xe="url",ye="browser",te="user",ne=-1,de=0,me=1,qe=2,Ae=3;Na(function(){for(var a=y(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=u(c),c=y(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=u(f),g=new be(g,d,!0);ka(g,f);g.v&&he(g,g.Ta)}});Oa.show.push(function(){for(var a=y(document,"pc8080","computer"),b=0;b<a.length;b++){var c=u(a[b]);(c=ja("Computer",c.id))&&c.N&&!c.i.U&&c.Ta(ne)}});
|
||||
Oa.exit.push(function(){for(var a=y(document,"pc8080","computer"),b=0;b<a.length;b++){var c=u(a[b]);(c=ja("Computer",c.id))&&c.i.U&&ve(c,!(!c.a||c.l),!0)}});function E(a,b,c){this.id=a.id;this.J=a.J;this.b="";this.a={};this.m=this.u=!1;this.key=Ce(a,b,c);re(this,a.Uc)}k=E.prototype;k.set=function(a,b){try{this.a[a]=b}catch(c){}};k.get=function(a){return this.a[a]||null};k.data=function(){return this.a};
|
||||
var oe="failsafe",je="validate",le="timestamp",we="version",xe="url",ye="browser",te="user",ne=-1,de=0,me=1,qe=2,Ae=3;Na(function(){for(var a=y(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=u(c),c=y(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=u(f),g=new be(g,d,!0);ka(g,f);g.v&&he(g,g.Ta)}});Oa.show.push(function(){for(var a=y(document,"pc8080","computer"),b=0;b<a.length;b++){var c=u(a[b]);(c=ja("Computer",c.id))&&c.N&&!c.i.V&&c.Ta(ne)}});
|
||||
Oa.exit.push(function(){for(var a=y(document,"pc8080","computer"),b=0;b<a.length;b++){var c=u(a[b]);(c=ja("Computer",c.id))&&c.i.V&&ve(c,!(!c.a||c.l),!0)}});function E(a,b,c){this.id=a.id;this.J=a.J;this.b="";this.a={};this.m=this.u=!1;this.key=Ce(a,b,c);re(this,a.Uc)}k=E.prototype;k.set=function(a,b){try{this.a[a]=b}catch(c){}};k.get=function(a){return this.a[a]||null};k.data=function(){return this.a};
|
||||
function fe(a,b){return b?(a.b=b,a.m=!0,a.u=!1,!0):a.m?!0:Fa()&&(b=Ha(a.key))?(a.b=b,a.m=!0):!1}function ke(a){var b=!0;if(!a.u)try{a.a=JSON.parse(a.b),a.u=!0}catch(c){t(c.message||c),b=!1}return b}function se(a){var b=!0;if(Fa()){var c=JSON.stringify(a.a);Ia(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.a?JSON.stringify(this.a):this.b};function re(a,b){a.b="";a.a={};a.m=a.u=!1;b&&a.set("parms",b)}
|
||||
k.clear=function(a){re(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 Ce(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 De=0;
|
||||
function Ee(a,b,c,d,e,f){e("Loading "+a+"...");Da(a,null,!0,function(g,h,m){m?(h||(h="unable to load "+a+" ("+m+")"),f(h,null)):Fe(h,a,b,c,d,e,f)})}
|
||||
|
|
|
|||
|
|
@ -28,22 +28,22 @@
|
|||
http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017
|
||||
http://pcjs.org/modules/pdp10/lib/debugger.js (C) Jeff Parsons 2012-2017
|
||||
*/
|
||||
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=fa)}var ga=0;function fa(a){return"jscomp_symbol_"+(a||"")+ga++}
|
||||
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 ga=0;function da(a){return"jscomp_symbol_"+(a||"")+ga++}
|
||||
function ha(){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 ia(this)}});ha=function(){}}function ia(a){var b=0;return ja(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function ja(a){ha();a={next:a};a[ba.Symbol.iterator]=function(){return this};return a}
|
||||
function p(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 ka(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})}}
|
||||
ka("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}});ka("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}});
|
||||
var ra=Math.pow(2,36),sa=-Math.pow(2,35),q={ac:0,ob:1,cc:2,dc:3,ec:4,fc:5,gc:6,hc:7,Za:8,ic:9,pb:10,jc:11,kc:12,qb:13,lc:14,mc:15,nc:16,oc:17,pc:18,qc:19,rc:20,sc:21,tc:22,uc:23,vc:24,wc:25,xc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Ya:65,$b:66,bc:67,yc:68,E:69,zc:70,Ac:71,Bc:72,Cc:73,Dc:74,Ec:75,Fc:76,Gc:77,Hc:78,Ic:79,Jc:80,Q:81,
|
||||
var la=Math.pow(2,36),sa=-Math.pow(2,35),q={ac:0,ob:1,cc:2,dc:3,ec:4,fc:5,gc:6,hc:7,Za:8,ic:9,pb:10,jc:11,kc:12,qb:13,lc:14,mc:15,nc:16,oc:17,pc:18,qc:19,rc:20,sc:21,tc:22,uc:23,vc:24,wc:25,xc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Ya:65,$b:66,bc:67,yc:68,E:69,zc:70,Ac:71,Bc:72,Cc:73,Dc:74,Ec:75,Fc:76,Gc:77,Hc:78,Ic:79,Jc:80,Q:81,
|
||||
Kc:82,Lc:83,Mc:84,Nc:85,Oc:86,Pc:87,Qc:88,Rc:89,ub:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Sc:97,Tc:98,Uc:99,d:100,e:101,Vc:102,Wc:103,Xc:104,Yc:105,Zc:106,k:107,$c:108,ad:109,n:110,bd:111,p:112,q:113,r:114,cd:115,t:116,ed:117,fd:118,gd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,rb:127};
|
||||
function t(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.cb=b.comment;this.tb=b;this.exports={};this.G=this.bindings={};a=this.id.indexOf(".");0>a?this.Ka=this.id:(this.La=this.id.substr(0,a),this.Ka=this.id.substr(a+1));this.j={ready:!1,Fa:!1,Va:!1,U:!1,error:!1};this.Na=null;this.j.error=!1;this.V=c||0;this.A=this.g=this.D=this.C=this.ka=null;u.push(this)}function ta(a,b,c){ua[a]&&b&&(ua[a][b]=c)}function va(){return Date.now()||+new Date}
|
||||
function t(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.cb=b.comment;this.tb=b;this.exports={};this.G=this.bindings={};a=this.id.indexOf(".");0>a?this.Ka=this.id:(this.La=this.id.substr(0,a),this.Ka=this.id.substr(a+1));this.j={ready:!1,Fa:!1,Va:!1,W:!1,error:!1};this.Na=null;this.j.error=!1;this.X=c||0;this.A=this.g=this.D=this.C=this.la=null;u.push(this)}function ta(a,b,c){ua[a]&&b&&(ua[a][b]=c)}function va(){return Date.now()||+new Date}
|
||||
function v(a){window&&window.alert(a)}function wa(a){var b=!1;window&&(b=window.confirm(a));return b}function w(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<u.length;b++){var d=u[b];a&&d.id.indexOf(a)||c.push(d)}return c}function xa(a){if(void 0!==a){var b;for(b=0;b<u.length;b++)if(u[b].id===a)return u[b]}return null}
|
||||
function y(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<u.length;d++)if(c)c==u[d]&&(c=null);else if(!(a!=u[d].type||b&&u[d].id.indexOf(b)))return u[d]}return null}function A(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){v(c.message+" ("+a+")")}return b}
|
||||
function B(a,b){var c=C;b=D(b.parentNode,c+"-control");for(var d=0;d<b.length;d++)for(var e=b[d].childNodes,g=0;g<e.length;g++){var f=e[g];if(1===f.nodeType){var h=f.getAttribute("class");if(h)for(var k=h.split(" "),m=0;m<k.length;m++)switch(h=k[m],h){case c+"-binding":(h=A(f))&&h.binding&&a.ea(h.type,h.binding,f,h.value),m=k.length}}}}
|
||||
function B(a,b){var c=C;b=D(b.parentNode,c+"-control");for(var d=0;d<b.length;d++)for(var e=b[d].childNodes,g=0;g<e.length;g++){var f=e[g];if(1===f.nodeType){var h=f.getAttribute("class");if(h)for(var k=h.split(" "),m=0;m<k.length;m++)switch(h=k[m],h){case c+"-binding":(h=A(f))&&h.binding&&a.fa(h.type,h.binding,f,h.value),m=k.length}}}}
|
||||
function D(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 ya(a){for(var b=!0,c=za[a];c&&c.length;){var d=c.splice(0,1)[0],e=d[0],g=null;0<=Aa.indexOf(e)&&(g=function(){return function(){ya(a)}}());var f=Ba[e];if(f)if(!g)b=f(d[1],d[2],d[3]);else{if(!f(g,d[1],d[2],d[3]))break}else{var b=!1,h=y(d[1],a);if(h)if(f=Ca[e])b=f(h,d[2],d[3]);else{var k=h.exports;if(k&&(f=k[e]))if(b=!0,!g)b=f.call(h,d[2],d[3]);else if(!f.call(h,g,d[2],d[3]))break}}if(!b){v("Script error: "+e+(f?" failed":" unrecognized"));break}}c&&!c.length&&delete za[a];return b}l=t.prototype;
|
||||
l.toString=function(){return this.name?this.name:this.id||this.type};
|
||||
l.ea=function(a,b,c){switch(b){case "clear":return this.G[b]||(this.G[b]=c,c.onclick=function(a){return function(){a.G.print&&(a.G.print.value="")}}(this)),!0;case "print":return this.G[b]||(this.ka=this.G[b]=c,c.value="",this.f=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.Z=function(a){this.f(a,this.Ka)}),!0;default:return!1}};l.log=function(){};l.f=function(){};
|
||||
l.status=function(a){this.f(this.Ka+": "+a)};l.Z=function(a,b,c){c=c||this.type;b||v((c?c+": ":"")+a)};function Ia(a,b){a.j.error=!0;a.Z(b)}function Ja(a){return a.j.error?(a.f(a.toString()+" error"),!0):!1}function Ka(a,b){b&&(a.j.ready?b():a.Na=b);return a.j.ready}function E(a){if(!a.j.error&&(a.j.ready=!0,a.j.ready)){var b=a.Na;a.Na=null;b&&b()}}function La(a,b){a.j.Fa&&(b?a.j.Va=!0:void 0===b&&a.f(a.toString()+" busy"));return a.j.Fa}
|
||||
function Ma(a,b){if(a.j.Va)return a.j.Fa=!1,a.j.Va=!1;if(a.j.error)return a.f(a.toString()+" error"),!1;a.j.Fa=b;return a.j.Fa}l.ma=function(){return this.j.U=!0};l.da=function(a,b){b&&(this.j.U=!1);return!0};function Na(a,b){if(a.A){a===a.A?b|=0:b=b||a.V;var c=a.A.V&b;return!!b&&c===b||!!(c&a.A.ib)}return!1}function Oa(a,b,c,d){a.A&&(!0===c||Na(a,c|0))&&a.A.message(b,d)}
|
||||
l.fa=function(a,b,c){switch(b){case "clear":return this.G[b]||(this.G[b]=c,c.onclick=function(a){return function(){a.G.print&&(a.G.print.value="")}}(this)),!0;case "print":return this.G[b]||(this.la=this.G[b]=c,c.value="",this.f=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.ba=function(a){this.f(a,this.Ka)}),!0;default:return!1}};l.log=function(){};l.f=function(){};
|
||||
l.status=function(a){this.f(this.Ka+": "+a)};l.ba=function(a,b,c){c=c||this.type;b||v((c?c+": ":"")+a)};function Da(a,b){a.j.error=!0;a.ba(b)}function Ja(a){return a.j.error?(a.f(a.toString()+" error"),!0):!1}function Ka(a,b){b&&(a.j.ready?b():a.Na=b);return a.j.ready}function E(a){if(!a.j.error&&(a.j.ready=!0,a.j.ready)){var b=a.Na;a.Na=null;b&&b()}}function La(a,b){a.j.Fa&&(b?a.j.Va=!0:void 0===b&&a.f(a.toString()+" busy"));return a.j.Fa}
|
||||
function Ma(a,b){if(a.j.Va)return a.j.Fa=!1,a.j.Va=!1;if(a.j.error)return a.f(a.toString()+" error"),!1;a.j.Fa=b;return a.j.Fa}l.na=function(){return this.j.W=!0};l.ea=function(a,b){b&&(this.j.W=!1);return!0};function Na(a,b){if(a.A){a===a.A?b|=0:b=b||a.X;var c=a.A.X&b;return!!b&&c===b||!!(c&a.A.ib)}return!1}function Oa(a,b,c,d){a.A&&(!0===c||Na(a,c|0))&&a.A.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 ua=window?window.PCjs.Machines:{},u=window?window.PCjs.Components:[],za=window?window.PCjs.Commands:{},Aa=["hold","sleep","wait"],Ba={alert:function(a){v(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},Ca={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)});
|
||||
|
|
@ -51,59 +51,59 @@ Function.prototype.bind||(Function.prototype.bind=function(a){function b(){retur
|
|||
function Pa(a,b){var c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var g,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):2==e&&
|
||||
d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(g=parseInt(a,b))&&(c=g)}return c}function Qa(a,b,c){var d="";b?11<b&&(b=11):b=a&-16777216?11:a&-65536?8:6;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(0>a&&-1<a&&(a=-1);0<b--;)d=String.fromCharCode((a&7)+48)+d,a>>=3;return(c?"0o":"")+d}
|
||||
function F(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(0>a&&-1<a&&(a=-1);0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}function Ra(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function Sa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function Ta(){var a=Ua();return-1!==a.indexOf("pcjs.org",a.length-8)}
|
||||
function Va(a){return a.replace(/[&<>"']/g,function(a){return Wa[a]})}function Xa(a,b){return(a+" ").slice(0,b)}function Ya(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Wa={"&":"&","<":"<",">":">",'"':""","'":"'"};function gb(a,b,c){var d=0,e=a.length,g=0;for(c||(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var f=d+e>>1,h;h=c(b,a[f]);0<h?d=f+1:(e=f,g=!h)}return g?d:~d}
|
||||
function Va(a){return a.replace(/[&<>"']/g,function(a){return Wa[a]})}function Xa(a,b){return(a+" ").slice(0,b)}function Ya(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Wa={"&":"&","<":"<",">":">",'"':""","'":"'"};function Za(a,b,c){var d=0,e=a.length,g=0;for(c||(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var f=d+e>>1,h;h=c(b,a[f]);0<h?d=f+1:(e=f,g=!h)}return g?d:~d}
|
||||
function hb(){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 H(a,b,c,d){c=void 0===c?!1:c;var e=0,g=null,f=null;if("object"==typeof resources&&(g=resources[a]))return d&&d(a,g,e),[g,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),f;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(g=h.responseText,200==h.status||!h.status&&g.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
|
||||
function ib(a,b,c,d){c=void 0===c?!1:c;var e=0,g=null,f=null;if("object"==typeof resources&&(g=resources[a]))return d&&d(a,g,e),[g,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),f;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(g=h.responseText,200==h.status||!h.status&&g.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
|
||||
g,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||(g=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,g,e),f=[g,e]);return f}
|
||||
function ib(a,b){var c,d={W:null,T:null,ja:null,ia:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,g,f;if("<"==b.substr(0,1))throw Error(b);f=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.ja=f.load;d.ia=f.exec;if(e=f.bytes)d.W=e;else if(e=f.words)for(d.W=Array(2*e.length),g=c=0;c<e.length;c++)d.W[g++]=e[c]&255,d.W[g++]=e[c]>>8&255;else if(e=f.longs)for(d.W=Array(4*e.length),g=c=0;c<e.length;c++)d.W[g++]=
|
||||
e[c]&255,d.W[g++]=e[c]>>8&255,d.W[g++]=e[c]>>16&255,d.W[g++]=e[c]>>24&255;else(e=f.data)?d.Aa=e:d.W=f;d.W&&(d.W.length?1==d.W.length&&(v(d.W[0]),d=null):(v("Empty resource: "+a),d=null));d.T=f.symbols}catch(h){v("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){g=parseInt(b[c],16);if(isNaN(g)){v("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(g&255)}c==b.length&&(d.W=e)}return d}
|
||||
function Ua(){return"http://"+(window?window.location.host:"www.pcjs.org")}function jb(){if(null==kb){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}kb=a}return kb}function lb(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function mb(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function nb(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 ob(a){if(!pb){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,g=/([^&=]+)=?([^&]*)/g;d=g.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}pb=c}return pb[a]}function qb(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function rb(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,g=!1;a.onmousedown=function(){g||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);g=!0}}function sb(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function tb(a){ub.init.push(a)}
|
||||
function vb(a){if(wb)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){v(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function xb(a){!wb&&a?(wb=!0,yb&&zb("init"),Ab&&zb("show")):wb=a}function zb(a){ub[a]&&vb(ub[a])}var pb=null,ub={init:[],show:[],exit:[]},yb=!1,Ab=!1,wb=!0,kb=null;sb("onload",function(){yb=!0;vb(ub.init)});sb("onpageshow",function(){Ab=!0;vb(ub.show)});sb(nb("Opera")||nb("iOS")?"onunload":"onbeforeunload",function(){vb(ub.exit)});
|
||||
var C="pdp10",Bb="PDPjs",Hb=Math.pow(2,18),Ib=Math.pow(2,18)-1,Jb=Math.pow(2,36),Kb=Math.pow(2,21),Lb=Math.pow(2,26),Mb=Math.pow(2,23),C="pdp10",Bb="PDPjs",I={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 Nb(a,b){t.call(this,"Panel",a,512);this.I=this.K=0;this.S=b;this.i=this.H=this.u=this.w=0;this.L=this.M=-1;this.N=this.O=this.F=!1;this.P=Ob;this.B={};this.b={START:[1,1,!0,!1,this.Hb],STEP:[1,1,!1,!1,this.Ib],ENABLE:[1,1,!1,!1,this.Cb],CONT:[1,1,!0,!1,this.Ab],DEP:[0,0,!0,!1,this.Bb],EXAM:[1,1,!0,!1,this.Db],LOAD:[1,1,!0,!1,this.Fb],TEST:[0,0,!0,!1,this.Eb]};for(a=0;22>a;a++)this.b["S"+a]=[0,0,!1,!1,this.Gb,a];this.A=this.g=this.D=this.C=null;this.exports={hold:this.yb,toggle:this.Tb,reset:this.Pb,
|
||||
set:this.Sb};E(this)}p(Nb,t);l=Nb.prototype;l.reset=function(a){this.stop();a&&Pb(this,this.w=0)};
|
||||
l.ea=function(a,b,c,d){if(this.C&&this.C.ea(a,b,c,d)||this.g&&this.g.ea(a,b,c,d)||this.A&&this.A.ea(a,b,c,d))return!0;switch(b){case "PC":return this.G[b]=c,this.K++,!0;default:return"led"==a||"rled"==a?(this.G[b]=c,this.B[b]=d?1:0,this.K++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.G[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Qb(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){Rb(a,b)}}(this,b),a.ontouchstart=
|
||||
function(a,b){return function(c){Qb(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){Rb(a,b)}}(this,b),!0):t.prototype.ea.call(this,a,b,c,d)}};l.ua=function(a,b,c,d){this.C=a;this.D=b;this.g=c;this.A=d;Sb(this);Tb(this)};l.ma=function(a,b){if(!b)if(this.S&&Ub(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};l.da=function(a){return a?this.save():!0};l.save=function(){var a=new J(this);a.set(0,[this.i,this.w,this.u]);return a.data()};
|
||||
l.restore=function(a){if(a=a[0])Vb(this,this.i=a[0]),Pb(this,this.w=a[1]),Wb(this,a[2]);return!0};l.Pb=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}Tb(this);return!0};function Xb(a,b,c){if(a=a.G[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Sb(a,b){for(var c in a.B)Xb(a,c,null!=b?b:a.B[c])}function Yb(a,b,c){if(a=a.G[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function Tb(a){for(var b in a.b)Yb(a,b,a.b[b][1])}
|
||||
l.yb=function(a,b,c){if(Qb(this,b)){if(c){var d=this;setTimeout(function(){Rb(d,b);a&&a()},+c);return!1}Rb(this,b)}return!0};l.Sb=function(a,b){if("SR"==a)return Wb(this,Pa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,Yb(this,a,c[1]),!0):!1};l.Tb=function(a){return Qb(this,a)?(Rb(this,a),!0):!1};function Qb(a,b){var c=a.b[b];return c?(Yb(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=Zb&&(a.N=b==$b,a.O=b==ac),!0):!1}
|
||||
function Rb(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(Yb(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}l.Hb=function(a){a||this.g.j.J||(this.g.i=this.i%Hb,this.b[bc]&&this.b[bc][1]&&cc(this.g))};l.Ib=function(){};l.Cb=function(a){a||this.g.R()};
|
||||
l.Ab=function(a){if(!a&&!this.g.j.J)if(this.b[bc]&&this.b[bc][1])cc(this.g);else{if((a=this.A)&&!La(a,!0))Ma(a,!0),dc(a,0,null),Ma(a,!1);else try{var b=this.g.Ja(1);0<b&&(ec(this.g,b),fc(this.g,b,!0),gc(this.g,b))}catch(c){"number"!=typeof c&&Ia(this.g,c.stack||c.message)}this.stop();this.C&&K(this.C)}};l.Bb=function(a){a&&!this.g.j.J&&(this.N&&hc(this),a=Pb(this,this.w=this.u),this.P==Ob?ic(this.D,this.i,a):this.g.wa(this.i,a))};
|
||||
l.Db=function(a){if(!a&&!this.g.j.J){var b;this.O&&hc(this);this.P==Ob?b=jc(this.D,this.i):b=this.g.aa(this.i);Pb(this,this.w=b)}};l.Fb=function(a){a||this.g.j.J||Vb(this,this.u)};l.Eb=function(a){a?(this.F=!0,Sb(this,!0)):(this.F=!1,Sb(this),Wb(this,0))};l.Gb=function(a,b){this.u=a?this.u|1<<b:this.u&~(1<<b)};function hc(a){var b=1,c=a.D.u;a.b[Zb]&&a.b[Zb][1]||(b=-b);Vb(a,a.i&~c|a.i+b&c)}
|
||||
function Vb(a,b){a.i=b&a.D.u;if(a.L!==a.i){a.L=a.i;b=a.L;for(var c=0;22>c;c++){var d=a,e="A"+c,g=b&1<<c;d.B[e]=g;d.F||Xb(d,e,g)}}}function Pb(a,b){a.H=b%Jb;if(a.M!==a.H){a.M=a.H;b=a.M;for(var c=0;16>c;c++){var d=a,e="D"+c,g=b&1<<c;d.B[e]=g;d.F||Xb(d,e,g)}}return a.H}function Wb(a,b){a.u=b|0;for(b=0;22>b;b++)a.b["S"+b][1]=a.u&1<<b?1:0;Tb(a);return!0}l.stop=function(){Vb(this,this.g.i)};
|
||||
function Ub(){for(var a=D(document,C,"panel"),b=0;b<a.length;b++){var c=a[b],d=A(c),e=xa(d.id);e||(e=new Nb(d,!0));B(e,c)}}var Ob=7,$b="DEP",bc="ENABLE",ac="EXAM",Zb="STEP";tb(Ub);function kc(a,b,c){t.call(this,"Bus",a,16);this.g=b;this.A=c;this.H=+a.busWidth||18;this.F=1<<this.H;this.u=this.F-1;this.i=Math.log2(16384);this.B=this.F/16384|0;this.w=0;this.b=[];a=new M(this);lc(a,this.A);this.b=Array(this.B);for(b=0;b<this.B;b++)this.b[b]=a;E(this)}p(kc,t);l=kc.prototype;l.reset=function(){};
|
||||
l.ma=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.da=function(a){return a?this.save():!0};l.save=function(){var a=new J(this);a.set(0,mc(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,g=Array(4096),f=0;f<d.length-1;)for(var h=d[f++],k=d[f++];h--;)g[e++]=k;d=g}e=this.b[c];if(!e||!e.restore(d)){v("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
|
||||
function nc(a,b,c,d){for(var e=b,g=c,f=e>>>a.i;0<g&&f<a.b.length;){var h=a.b[f],k=16384*f,m=16384-(e-k);m>g&&(m=g);if(h&&h.size){if(h.type==d){if(e+g<=h.v)return h.Ia+=h.v-e,h.v=e,!0;if(e>=h.v+h.Ia){m=h.size-(e-k);m>g&&(m=g);h.Ia=e-h.v+m;e=k+16384;g-=m;f++;continue}}return oc(pc,e,g)}e=new M(a,e,m,16384,d);lc(e,a.A,h);a.b[f++]=e;e=k+16384;g-=m}return 0>=g?(a.status("Added "+(c>>10)+"Kb "+Gc[d]+" at "+Qa(b)),!0):oc(Hc,b,c)}
|
||||
function jc(a,b){var c=a.b[(b&a.u)>>>a.i];a.w++;b=c.i(b&16383,b);a.w--;return b}function ic(a,b,c){var d=a.b[(b&a.u)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function mc(a){for(var b=0,c=[],d=0;d<a.B;d++){var e=a.b[d];if(e.Ma||e.vb){c[b++]=d;var g=b++;if(e=e.save()){for(var f=0,h=0,k=[];f<e.length;){for(var m=e[f],n=f+1;n<e.length&&e[n]===m;)n++;k[h++]=n-f;k[h++]=m;f=n}k.length<e.length&&(e=k)}c[g]=e}}return c}
|
||||
l.xb=function(a){this.w||(this.A&&Na(this.A,4)&&Oa(this.A,"memory fault on "+N(this.A,a),!0,!0),this.g.R())};function oc(a,b,c){v("Memory block error ("+a+": "+F(b)+","+F(c)+")");return!1}var pc=1,Hc=2;function Ic(a){t.call(this,"Device",a,256)}p(Ic,t);l=Ic.prototype;l.ua=function(a,b,c,d){this.D=b;this.C=a;this.g=c;this.A=d;E(this)};l.ma=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.da=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){return(new J(this)).data()};
|
||||
l.restore=function(){return!0};tb(function(){for(var a=D(document,C,"device"),b=0;b<a.length;b++){var c,d=a[b];c=A(d);switch(c.type){case "default":c=new Ic(c),B(c,d)}}});function M(a,b,c,d,e){this.B=a;this.id=Jc+=2;this.v=b;this.Ia=c;this.size=d||0;this.type=e||Kc;this.G=e==Lc;this.b=null;this.aa=this.i=this.u=this.Ha;this.wa=this.D=this.w=this.va;this.A=this.C=0;lc(this);this.Ma=this.vb=!1;if(this.size){a=this.g=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Mc(this,Nc)}else Mc(this)}l=M.prototype;
|
||||
l.save=function(){return this.g};l.restore=function(a){return a&&this.size==a.length?(this.g=a,this.Ma=!0):!1};function Mc(a,b){b||(b=Oc);Pc(a,b,void 0);Qc(a,b,void 0)}function Pc(a,b,c){c&&a.A||(a.aa=b[2]||a.Ha);if(c||void 0===c)a.u=b[0]||a.Ha,a.i=b[2]||a.Ha}function Qc(a,b,c){c&&a.C||(a.wa=!a.G&&b[3]||a.va);if(c||void 0===c)a.w=b[1]||a.va,a.D=b[3]||a.va}l.Ba=function(a,b){b?this.C++||Qc(this,Rc,!1):this.A++||Pc(this,Rc,!1)};function Sc(a,b){b?--a.C||(a.wa=a.G?a.va:a.D):--a.A||(a.aa=a.i)}
|
||||
function lc(a,b,c){a.b=b;a.A=a.C=0;c&&((a.A=c.A)&&Pc(a,Rc,!1),(a.C=c.C)&&Qc(a,Rc,!1))}l.Ha=function(a,b){this.b&&Na(this.b,32)&&Oa(this.b,"attempt to read invalid address "+N(this.b,b),!0);this.B.xb(b);return-1};l.va=function(a,b,c){this.b&&Na(this.b,32)&&Oa(this.b,"attempt to write "+N(this.b,a)+" to invalid addresses "+N(this.b,c),!0)};l.Kb=function(a,b,c,d){a=this.g[a];return a=32>=c+d?a>>c&(1<<d)-1:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d)};l.Nb=function(a){return this.g[a]};
|
||||
l.Wb=function(a,b,c,d,e){c=this.g[b];var g=Math.pow(2,d);a%=Math.pow(2,e);d=c%Math.pow(2,d+e);c=c-d+a*g+d%g;this.g[b]!=c&&(this.g[b]=c,this.Ma=!0)};l.Yb=function(a,b){this.g[b]=a;this.Ma=!0};l.Jb=function(a,b,c,d){if(this.b&&null!=this.v){var e=this.b;Tc(e,this.v+a,1,e.K)&&e.R(!1)}return this.u(a,b,c,d)};l.Lb=function(a,b){if(this.b&&null!=this.v){var c=this.b;Tc(c,this.v+a,2,c.K)&&c.R(!1)}return this.i(a,b)};
|
||||
l.Vb=function(a,b,c,d,e){if(this.b&&null!=this.v){var g=this.b;Tc(g,this.v+b,1,g.F)&&g.R(!1)}this.G?this.va(a,0,c):this.w(a,b,c,d,e)};l.Xb=function(a,b,c){if(this.b&&null!=this.v){var d=this.b;Tc(d,this.v+b,2,d.F)&&d.R(!1)}this.G?this.va(a,0,c):this.D(a,b,c)};var Kc=0,Lc=2,Gc=["NONE","RAM","ROM"],Jc=0,Oc=[],Nc=[M.prototype.Kb,M.prototype.Wb,M.prototype.Nb,M.prototype.Yb],Rc=[M.prototype.Jb,M.prototype.Vb,M.prototype.Lb,M.prototype.Xb];
|
||||
function Uc(a,b){t.call(this,"CPU",a,1);b=+a.cycles||b;var c=+a.multiplier||1;this.Da=0;this.Ta=b;this.S=c;this.Ra=Math.round(this.Ta/1E4)/100;this.P=this.Ra*this.S;this.Sa=this.ta=this.Y=this.ya=0;this.j.J=this.j.Qa=!1;this.j.X=a.autoStart;"string"==typeof this.j.X&&(this.j.X="true"==this.j.X);this.j.Ea=!1;this.ra=this.fa=0;this.sa=+a.csStart;this.ba=+a.csInterval;this.ga=+a.csStop;this.H=[];this.fb=this.Qb.bind(this);this.M=this.F=this.K=this.L=this.B=this.qa=this.I=this.ha=this.Ua=this.O=0;this.xa=
|
||||
null;E(this)}p(Uc,t);l=Uc.prototype;l.ua=function(a,b,c,d){this.C=a;this.D=b;this.A=d;this.xa=a.u;for(a=0;a<Vc.length;a++)(b=this.G[Vc[a]])&&this.C.ea(null,Vc[a],b);E(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};
|
||||
l.ma=function(a,b){var c=Wc(this.C,"autoStart");null!=c?this.j.X="true"==c?!0:"false"==c?!1:!!c:null==this.j.X&&(this.j.X=!this.A&&void 0===this.G.run);if(!b){if(a){Xc(this);if(!this.restore(a))return!1;Yc(this)}else this.reset();this.A?(a=this.A,b=this.j.X,a.xa=!0,a.f("Type ? for help with PDPjs Debugger commands"),Zc(a),b||$c(a),a.sa&&(b=a.sa,a.sa=null,ad(a,b))):this.status("No debugger detected");this.j.X||this.f("CPU will not be auto-started "+(this.xa?"(click Run to start)":"(type 'go' to start)"))}return!0};
|
||||
l.da=function(a){return a?this.save():!0};l.X=function(){return this.j.J?!0:this.j.X?(cc(this),!0):!1};l.lb=function(){return 0};function Yc(a){void 0===a.sa&&(a.sa=0);void 0===a.ba&&(a.ba=-1);void 0===a.ga&&(a.ga=-1);a.j.Ea=0<=a.sa&&0<a.ba;a.j.Ea&&(a.ra=0,a.fa=a.sa-a.M)}function gc(a,b){if(a.j.Ea){var c=!1;a.ra=a.ra+a.lb()|0;a.fa-=b;0>=a.fa&&(a.fa+=a.ba,c=!0);0<=a.ga&&a.ga<=bd(a)&&(a.ba=a.ga=-1,Yc(a),a.R(),c=!0);c&&a.f(bd(a)+" cycles: checksum="+F(a.ra))}}
|
||||
l.ea=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.G[b]=c,!0;case "run":return this.G[b]=c,c.onclick=function(){var a;if(a=d.C)if(a=d.C,a.j.U)a=!0;else{var b=null,c,h=w(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.j.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.j.U);c++);c==h.length&&(b=a);v("The "+b.type+" component ("+b.id+") is not "+(b.j.ready?"powered yet":"ready yet"+(b.Na?" (waiting for notification)":""))+".");a=!1}a&&(d.j.J?d.R():cc(d))},!0;case "speed":return this.G[b]=
|
||||
c,!0;case "setSpeed":return this.G[b]=c,c.onclick=function(){cd(d,d.S<<1,!0)},c.textContent=this.P.toFixed(2)+"Mhz",!0}return!1};function fc(a,b,c){a.M+=b;c&&(a.K=a.L=0)}function dd(a,b){var c=1;b&&1<a.S&&a.O&&(c=a.O/a.Ra);a.Sa=Math.round(1E3/ed);a.ta=Math.floor(a.Ta/ed*c);b||(a.Y=a.ta);a.ya=0}function bd(a){return a.M+a.F+a.K-a.L}function Xc(a){a.O=0;a.Ua=0;a.M=a.F=a.K=a.L=0;Yc(a);cd(a,1)}
|
||||
function cd(a,b,c){var d=!1;if(void 0!==b){.8>a.O/a.P?b=1:d=!0;a.S=b;b=a.Ra*a.S;if(a.P!=b){a.P=b;b=a.P.toFixed(2)+"Mhz";var e=a.G.setSpeed;e&&(e.textContent=b);a.f("target speed: "+b)}c&&a.C&&fd(a.C)}fc(a,a.F);a.F=0;a.B=va();a.I=0;dd(a);return d}function gd(a,b){for(var c=a.H.length-1;0<=c;c--){var d=a.H[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function hd(a){for(var b=[],c=0;c<a.H.length;c++)b.push(a.H[c][0]);return b}
|
||||
function ec(a,b){for(var c=a.H.length-1;0<=c;c--){var d=a.H[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function id(a,b){var c=a.K-=a.L;a.L=0;b&&(a.K=0);return c}
|
||||
l.Qb=function(){if(this.j.J){this.ya>=this.Ta&&dd(this,!0);this.ha=0;this.qa=va();if(this.I){var a=this.qa-this.I;a>this.Sa&&(this.B+=a,this.B>this.qa&&(this.B=this.qa))}try{do{var b=gd(this,this.j.Ea?1:this.ta);try{this.Ja(b)}catch(e){if("number"!=typeof e)throw e;}b=id(this,!0);this.ha+=b;this.F+=b;gc(this,b);ec(this,b);this.Y-=b;if(0>=this.Y){this.Y+=this.ta;++this.Ua>=jd&&(this.C&&K(this.C,void 0),this.Ua=0);break}}while(this.j.J)}catch(e){this.R();this.C&&this.C.stop(va(),bd(this));Ia(this,e.stack||
|
||||
e.message);return}if(this.j.J){a=setTimeout;b=this.fb;this.I=va();var c=this.Sa;this.ha&&(c=Math.round(c*this.ha/this.ta));var c=c-(this.I-this.qa),d=this.I-this.B;d&&(this.O=Math.round(this.F/(10*d))/100,864E5<=d&&(this.M=0,cd(this)));if(0>c||this.O<this.P)-1E3>c&&(this.B-=c),c=0;this.ya+=this.ha;this.I+=c;a(b,c)}}};
|
||||
function cc(a,b){if(!Ja(a))if(a.j.J)a.f(a.toString()+" busy");else{cd(a);a.j.J=!0;a.j.Qa=!0;var c=a.G.run;c&&(c.textContent="Halt");a.C&&(b&&fd(a.C,!0),a.C.start(a.B,bd(a)));a.A||a.status("Started");setTimeout(a.fb,0)}}l.Ja=function(){return 0};l.R=function(a){var b=!1;if(this.j.J){id(this);fc(this,this.F);this.F=0;this.j.J=!1;if(b=this.G.run)b.textContent="Run";this.C&&this.C.stop(va(),bd(this));b=!0;this.A||this.status("Stopped")}this.j.complete=a;return b};var ed=30,jd=15,Vc=["power","reset"];
|
||||
function kd(a){var b=+a.model||1001;Uc.call(this,a,1E6);this.eb=b;this.bb=+a.addrReset||0;this.sb=ld.bind(this);this.b=O.bind(this);this.na=null;this.ab=[];this.j.complete=!1}p(kd,Uc);l=kd.prototype;l.reset=function(){this.status("Model "+this.eb);this.j.J&&this.R();this.w=this.N=this.za=0;this.oa=this.i=this.pa=this.bb;this.u=0;this.aa=this.Mb;this.wa=this.Zb;this.na=null;Xc(this);this.j.error=!1;Uc.prototype.reset.call(this)};l.lb=function(){return 0};
|
||||
l.save=function(){var a=new J(this);a.set(0,[this.w,this.N,this.za,this.i,this.pa,this.oa,this.u]);a.set(1,[]);a.set(2,[this.M,this.S,this.j.X]);a.set(3,md(this));a.set(4,hd(this));return a.data()};
|
||||
l.restore=function(a){var b;b=a[0];ha();ca();ha();var c=b[Symbol.iterator];b=c?c.call(b):ia(b);this.w=b.next().value;this.N=b.next().value;this.za=b.next().value;this.i=b.next().value;this.pa=b.next().value;this.oa=b.next().value;this.u=b.next().value;b=a[2];this.M=b[0];cd(this,b[1]);this.j.X=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.ab.length;d++){var e=this.ab[d];if(e.Ub===b[c]){d=e;break a}}d=null}d&&(d.next=this.na,this.na=d)}a=a[4];for(b=0;b<this.H.length&&b<a.length;b++)this.H[b][0]=
|
||||
a[b];return!0};function nd(a,b){var c=a.i;a.i=(c+b)%Hb;return c}function md(a){var b=[];for(a=a.na;a;)b.push(a.Ub),a=a.next;return b}l.Mb=function(a){var b=this.D;a=this.oa=a;return b.b[(a&b.u)>>>b.i].aa(a&16383,a)};l.Zb=function(a,b){var c=this.D;a=this.oa=a;c.b[(a&c.u)>>>c.i].wa(b,a&16383,a)};
|
||||
l.Ja=function(a){this.j.complete=!0;var b=this.A?od(this.A)?1:this.j.Qa?-1:0:0,c=a?this.j.Qa?0:1:-1;this.j.Qa=!1;this.K=this.L=a;this.u=this.u&-5|(b?4:0);do{if(this.u){if(this.u&4){if(pd(this.A,this.i,c)){this.R();break}++b||(this.u&=-5);c||c++}if(a=this.u&11)this.u&2?this.na||(this.u&=-3):this.u&1&&this.u++,a=!1;if(a){if(this.u&4&&pd(this.A,this.i,c)){this.R();break}if(0>c)break}}this.u&=15;this.N=this.N&4194304?this.aa(this.w):this.za=this.aa(this.pa=this.i);this.w=this.N&262143;if(a=this.N>>18&
|
||||
15)this.w=this.w+this.aa(a)&Ib;this.N&4194304?a=-1:(this.i=(this.i+1)%Hb,a=this.za/Mb|0);0<=a&&this.sb(a)}while(0<this.L);return this.j.complete?this.K-this.L:!1===this.j.complete?-1:0};tb(function(){for(var a=D(document,C,"cpu"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new kd(d);B(d,c)}});function ld(a){qd[a>>4].call(this,a)}function Q(a){this.b(a)}function rd(a){this.b(a)}function sd(a){this.b(a)}function td(a){a&=15;var b=this.aa(this.w),c=this.aa(a);this.wa(a,(c&262143)+(b-(b&262143)))}
|
||||
function W(a){this.b(a)}function O(a){this.f("undefined opcode: "+Qa(a));nd(this,-1);this.R()}
|
||||
var qd=[Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function jb(a,b){var c,d={Y:null,V:null,ka:null,ja:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,g,f;if("<"==b.substr(0,1))throw Error(b);f=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.ka=f.load;d.ja=f.exec;if(e=f.bytes)d.Y=e;else if(e=f.words)for(d.Y=Array(2*e.length),g=c=0;c<e.length;c++)d.Y[g++]=e[c]&255,d.Y[g++]=e[c]>>8&255;else if(e=f.longs)for(d.Y=Array(4*e.length),g=c=0;c<e.length;c++)d.Y[g++]=
|
||||
e[c]&255,d.Y[g++]=e[c]>>8&255,d.Y[g++]=e[c]>>16&255,d.Y[g++]=e[c]>>24&255;else(e=f.data)?d.Aa=e:d.Y=f;d.Y&&(d.Y.length?1==d.Y.length&&(v(d.Y[0]),d=null):(v("Empty resource: "+a),d=null));d.V=f.symbols}catch(h){v("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){g=parseInt(b[c],16);if(isNaN(g)){v("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(g&255)}c==b.length&&(d.Y=e)}return d}
|
||||
function Ua(){return"http://"+(window?window.location.host:"www.pcjs.org")}function kb(){if(null==lb){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}lb=a}return lb}function mb(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function nb(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function ob(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 pb(a){if(!qb){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,g=/([^&=]+)=?([^&]*)/g;d=g.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}qb=c}return qb[a]}function rb(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function sb(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,g=!1;a.onmousedown=function(){g||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);g=!0}}function tb(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function ub(a){vb.init.push(a)}
|
||||
function wb(a){if(xb)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){v(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function yb(a){!xb&&a?(xb=!0,zb&&Ab("init"),Bb&&Ab("show")):xb=a}function Ab(a){vb[a]&&wb(vb[a])}var qb=null,vb={init:[],show:[],exit:[]},zb=!1,Bb=!1,xb=!0,lb=null;tb("onload",function(){zb=!0;wb(vb.init)});tb("onpageshow",function(){Bb=!0;wb(vb.show)});tb(ob("Opera")||ob("iOS")?"onunload":"onbeforeunload",function(){wb(vb.exit)});
|
||||
var C="pdp10",Cb="PDPjs",Ib=Math.pow(2,18),Jb=Math.pow(2,18)-1,Kb=Math.pow(2,36),H=Math.pow(2,18),Lb=Math.pow(2,21),Mb=Math.pow(2,26),Nb=Math.pow(2,23),C="pdp10",Cb="PDPjs",I={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 Ob(a,b){t.call(this,"Panel",a,512);this.J=this.L=0;this.U=b;this.i=this.I=this.u=this.v=0;this.M=this.N=-1;this.O=this.P=this.F=!1;this.R=Pb;this.B={};this.b={START:[1,1,!0,!1,this.Hb],STEP:[1,1,!1,!1,this.Ib],ENABLE:[1,1,!1,!1,this.Cb],CONT:[1,1,!0,!1,this.Ab],DEP:[0,0,!0,!1,this.Bb],EXAM:[1,1,!0,!1,this.Db],LOAD:[1,1,!0,!1,this.Fb],TEST:[0,0,!0,!1,this.Eb]};for(a=0;22>a;a++)this.b["S"+a]=[0,0,!1,!1,this.Gb,a];this.A=this.g=this.D=this.C=null;this.exports={hold:this.yb,toggle:this.Tb,reset:this.Pb,
|
||||
set:this.Sb};E(this)}p(Ob,t);l=Ob.prototype;l.reset=function(a){this.stop();a&&Qb(this,this.v=0)};
|
||||
l.fa=function(a,b,c,d){if(this.C&&this.C.fa(a,b,c,d)||this.g&&this.g.fa(a,b,c,d)||this.A&&this.A.fa(a,b,c,d))return!0;switch(b){case "PC":return this.G[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.G[b]=c,this.B[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.G[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Rb(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){Sb(a,b)}}(this,b),a.ontouchstart=
|
||||
function(a,b){return function(c){Rb(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){Sb(a,b)}}(this,b),!0):t.prototype.fa.call(this,a,b,c,d)}};l.va=function(a,b,c,d){this.C=a;this.D=b;this.g=c;this.A=d;Tb(this);Ub(this)};l.na=function(a,b){if(!b)if(this.U&&Vb(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};l.ea=function(a){return a?this.save():!0};l.save=function(){var a=new J(this);a.set(0,[this.i,this.v,this.u]);return a.data()};
|
||||
l.restore=function(a){if(a=a[0])Wb(this,this.i=a[0]),Qb(this,this.v=a[1]),Xb(this,a[2]);return!0};l.Pb=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}Ub(this);return!0};function Yb(a,b,c){if(a=a.G[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Tb(a,b){for(var c in a.B)Yb(a,c,null!=b?b:a.B[c])}function Zb(a,b,c){if(a=a.G[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function Ub(a){for(var b in a.b)Zb(a,b,a.b[b][1])}
|
||||
l.yb=function(a,b,c){if(Rb(this,b)){if(c){var d=this;setTimeout(function(){Sb(d,b);a&&a()},+c);return!1}Sb(this,b)}return!0};l.Sb=function(a,b){if("SR"==a)return Xb(this,Pa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,Zb(this,a,c[1]),!0):!1};l.Tb=function(a){return Rb(this,a)?(Sb(this,a),!0):!1};function Rb(a,b){var c=a.b[b];return c?(Zb(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=$b&&(a.O=b==ac,a.P=b==bc),!0):!1}
|
||||
function Sb(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(Zb(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}l.Hb=function(a){a||this.g.j.K||(this.g.u=this.i%Ib,this.b[cc]&&this.b[cc][1]&&dc(this.g))};l.Ib=function(){};l.Cb=function(a){a||this.g.S()};
|
||||
l.Ab=function(a){if(!a&&!this.g.j.K)if(this.b[cc]&&this.b[cc][1])dc(this.g);else{if((a=this.A)&&!La(a,!0))Ma(a,!0),ec(a,0,null),Ma(a,!1);else try{var b=this.g.Ja(1);0<b&&(fc(this.g,b),gc(this.g,b,!0),hc(this.g,b))}catch(c){"number"!=typeof c&&Da(this.g,c.stack||c.message)}this.stop();this.C&&K(this.C)}};l.Bb=function(a){a&&!this.g.j.K&&(this.O&&ic(this),a=Qb(this,this.v=this.u),this.R==Pb?jc(this.D,this.i,a):this.g.T(this.i,a))};
|
||||
l.Db=function(a){if(!a&&!this.g.j.K){var b;this.P&&ic(this);this.R==Pb?b=kc(this.D,this.i):b=this.g.H(this.i);Qb(this,this.v=b)}};l.Fb=function(a){a||this.g.j.K||Wb(this,this.u)};l.Eb=function(a){a?(this.F=!0,Tb(this,!0)):(this.F=!1,Tb(this),Xb(this,0))};l.Gb=function(a,b){this.u=a?this.u|1<<b:this.u&~(1<<b)};function ic(a){var b=1,c=a.D.u;a.b[$b]&&a.b[$b][1]||(b=-b);Wb(a,a.i&~c|a.i+b&c)}
|
||||
function Wb(a,b){a.i=b&a.D.u;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,g=b&1<<c;d.B[e]=g;d.F||Yb(d,e,g)}}}function Qb(a,b){a.I=b%Kb;if(a.N!==a.I){a.N=a.I;b=a.N;for(var c=0;16>c;c++){var d=a,e="D"+c,g=b&1<<c;d.B[e]=g;d.F||Yb(d,e,g)}}return a.I}function Xb(a,b){a.u=b|0;for(b=0;22>b;b++)a.b["S"+b][1]=a.u&1<<b?1:0;Ub(a);return!0}l.stop=function(){Wb(this,this.g.u)};
|
||||
function Vb(){for(var a=D(document,C,"panel"),b=0;b<a.length;b++){var c=a[b],d=A(c),e=xa(d.id);e||(e=new Ob(d,!0));B(e,c)}}var Pb=7,ac="DEP",cc="ENABLE",bc="EXAM",$b="STEP";ub(Vb);function lc(a,b,c){t.call(this,"Bus",a,16);this.g=b;this.A=c;this.I=+a.busWidth||18;this.F=1<<this.I;this.u=this.F-1;this.i=Math.log2(16384);this.B=this.F/16384|0;this.v=0;this.b=[];a=new M(this);mc(a,this.A);this.b=Array(this.B);for(b=0;b<this.B;b++)this.b[b]=a;E(this)}p(lc,t);l=lc.prototype;l.reset=function(){};
|
||||
l.na=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.ea=function(a){return a?this.save():!0};l.save=function(){var a=new J(this);a.set(0,nc(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,g=Array(4096),f=0;f<d.length-1;)for(var h=d[f++],k=d[f++];h--;)g[e++]=k;d=g}e=this.b[c];if(!e||!e.restore(d)){v("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
|
||||
function oc(a,b,c,d){for(var e=b,g=c,f=e>>>a.i;0<g&&f<a.b.length;){var h=a.b[f],k=16384*f,m=16384-(e-k);m>g&&(m=g);if(h&&h.size){if(h.type==d){if(e+g<=h.w)return h.Ia+=h.w-e,h.w=e,!0;if(e>=h.w+h.Ia){m=h.size-(e-k);m>g&&(m=g);h.Ia=e-h.w+m;e=k+16384;g-=m;f++;continue}}return pc(qc,e,g)}e=new M(a,e,m,16384,d);mc(e,a.A,h);a.b[f++]=e;e=k+16384;g-=m}return 0>=g?(a.status("Added "+(c>>10)+"Kb "+Hc[d]+" at "+Qa(b)),!0):pc(Ic,b,c)}
|
||||
function kc(a,b){var c=a.b[(b&a.u)>>>a.i];a.v++;b=c.i(b&16383,b);a.v--;return b}function jc(a,b,c){var d=a.b[(b&a.u)>>>a.i];a.v++;d.D(c,b&16383,b);a.v--}function nc(a){for(var b=0,c=[],d=0;d<a.B;d++){var e=a.b[d];if(e.Ma||e.vb){c[b++]=d;var g=b++;if(e=e.save()){for(var f=0,h=0,k=[];f<e.length;){for(var m=e[f],n=f+1;n<e.length&&e[n]===m;)n++;k[h++]=n-f;k[h++]=m;f=n}k.length<e.length&&(e=k)}c[g]=e}}return c}
|
||||
l.xb=function(a){this.v||(this.A&&Na(this.A,4)&&Oa(this.A,"memory fault on "+N(this.A,a),!0,!0),this.g.S())};function pc(a,b,c){v("Memory block error ("+a+": "+F(b)+","+F(c)+")");return!1}var qc=1,Ic=2;function Jc(a){t.call(this,"Device",a,256)}p(Jc,t);l=Jc.prototype;l.va=function(a,b,c,d){this.D=b;this.C=a;this.g=c;this.A=d;E(this)};l.na=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.ea=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){return(new J(this)).data()};
|
||||
l.restore=function(){return!0};ub(function(){for(var a=D(document,C,"device"),b=0;b<a.length;b++){var c,d=a[b];c=A(d);switch(c.type){case "default":c=new Jc(c),B(c,d)}}});function M(a,b,c,d,e){this.B=a;this.id=Kc+=2;this.w=b;this.Ia=c;this.size=d||0;this.type=e||Lc;this.G=e==Mc;this.b=null;this.H=this.i=this.u=this.Ha;this.T=this.D=this.v=this.wa;this.A=this.C=0;mc(this);this.Ma=this.vb=!1;if(this.size){a=this.g=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Nc(this,Oc)}else Nc(this)}l=M.prototype;
|
||||
l.save=function(){return this.g};l.restore=function(a){return a&&this.size==a.length?(this.g=a,this.Ma=!0):!1};function Nc(a,b){b||(b=Pc);Qc(a,b,void 0);Rc(a,b,void 0)}function Qc(a,b,c){c&&a.A||(a.H=b[2]||a.Ha);if(c||void 0===c)a.u=b[0]||a.Ha,a.i=b[2]||a.Ha}function Rc(a,b,c){c&&a.C||(a.T=!a.G&&b[3]||a.wa);if(c||void 0===c)a.v=b[1]||a.wa,a.D=b[3]||a.wa}l.Ba=function(a,b){b?this.C++||Rc(this,Sc,!1):this.A++||Qc(this,Sc,!1)};function Tc(a,b){b?--a.C||(a.T=a.G?a.wa:a.D):--a.A||(a.H=a.i)}
|
||||
function mc(a,b,c){a.b=b;a.A=a.C=0;c&&((a.A=c.A)&&Qc(a,Sc,!1),(a.C=c.C)&&Rc(a,Sc,!1))}l.Ha=function(a,b){this.b&&Na(this.b,32)&&Oa(this.b,"attempt to read invalid address "+N(this.b,b),!0);this.B.xb(b);return-1};l.wa=function(a,b,c){this.b&&Na(this.b,32)&&Oa(this.b,"attempt to write "+N(this.b,a)+" to invalid addresses "+N(this.b,c),!0)};l.Kb=function(a,b,c,d){a=this.g[a];return a=32>=c+d?a>>c&(1<<d)-1:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d)};l.Nb=function(a){return this.g[a]};
|
||||
l.Wb=function(a,b,c,d,e){c=this.g[b];var g=Math.pow(2,d);a%=Math.pow(2,e);d=c%Math.pow(2,d+e);c=c-d+a*g+d%g;this.g[b]!=c&&(this.g[b]=c,this.Ma=!0)};l.Yb=function(a,b){this.g[b]=a;this.Ma=!0};l.Jb=function(a,b,c,d){if(this.b&&null!=this.w){var e=this.b;Uc(e,this.w+a,1,e.L)&&e.S(!1)}return this.u(a,b,c,d)};l.Lb=function(a,b){if(this.b&&null!=this.w){var c=this.b;Uc(c,this.w+a,2,c.L)&&c.S(!1)}return this.i(a,b)};
|
||||
l.Vb=function(a,b,c,d,e){if(this.b&&null!=this.w){var g=this.b;Uc(g,this.w+b,1,g.F)&&g.S(!1)}this.G?this.wa(a,0,c):this.v(a,b,c,d,e)};l.Xb=function(a,b,c){if(this.b&&null!=this.w){var d=this.b;Uc(d,this.w+b,2,d.F)&&d.S(!1)}this.G?this.wa(a,0,c):this.D(a,b,c)};var Lc=0,Mc=2,Hc=["NONE","RAM","ROM"],Kc=0,Pc=[],Oc=[M.prototype.Kb,M.prototype.Wb,M.prototype.Nb,M.prototype.Yb],Sc=[M.prototype.Jb,M.prototype.Vb,M.prototype.Lb,M.prototype.Xb];
|
||||
function Vc(a,b){t.call(this,"CPU",a,1);b=+a.cycles||b;var c=+a.multiplier||1;this.Da=0;this.Ta=b;this.U=c;this.Ra=Math.round(this.Ta/1E4)/100;this.R=this.Ra*this.U;this.Sa=this.ua=this.aa=this.ya=0;this.j.K=this.j.Qa=!1;this.j.Z=a.autoStart;"string"==typeof this.j.Z&&(this.j.Z="true"==this.j.Z);this.j.Ea=!1;this.sa=this.ga=0;this.ta=+a.csStart;this.ca=+a.csInterval;this.ha=+a.csStop;this.I=[];this.fb=this.Qb.bind(this);this.N=this.F=this.L=this.M=this.B=this.ra=this.J=this.ia=this.Ua=this.P=0;this.xa=
|
||||
null;E(this)}p(Vc,t);l=Vc.prototype;l.va=function(a,b,c,d){this.C=a;this.D=b;this.A=d;this.xa=a.u;for(a=0;a<Wc.length;a++)(b=this.G[Wc[a]])&&this.C.fa(null,Wc[a],b);E(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};
|
||||
l.na=function(a,b){var c=Xc(this.C,"autoStart");null!=c?this.j.Z="true"==c?!0:"false"==c?!1:!!c:null==this.j.Z&&(this.j.Z=!this.A&&void 0===this.G.run);if(!b){if(a){Yc(this);if(!this.restore(a))return!1;Zc(this)}else this.reset();this.A?(a=this.A,b=this.j.Z,a.xa=!0,a.f("Type ? for help with PDPjs Debugger commands"),$c(a),b||ad(a),a.ta&&(b=a.ta,a.ta=null,bd(a,b))):this.status("No debugger detected");this.j.Z||this.f("CPU will not be auto-started "+(this.xa?"(click Run to start)":"(type 'go' to start)"))}return!0};
|
||||
l.ea=function(a){return a?this.save():!0};l.Z=function(){return this.j.K?!0:this.j.Z?(dc(this),!0):!1};l.lb=function(){return 0};function Zc(a){void 0===a.ta&&(a.ta=0);void 0===a.ca&&(a.ca=-1);void 0===a.ha&&(a.ha=-1);a.j.Ea=0<=a.ta&&0<a.ca;a.j.Ea&&(a.sa=0,a.ga=a.ta-a.N)}function hc(a,b){if(a.j.Ea){var c=!1;a.sa=a.sa+a.lb()|0;a.ga-=b;0>=a.ga&&(a.ga+=a.ca,c=!0);0<=a.ha&&a.ha<=cd(a)&&(a.ca=a.ha=-1,Zc(a),a.S(),c=!0);c&&a.f(cd(a)+" cycles: checksum="+F(a.sa))}}
|
||||
l.fa=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.G[b]=c,!0;case "run":return this.G[b]=c,c.onclick=function(){var a;if(a=d.C)if(a=d.C,a.j.W)a=!0;else{var b=null,c,h=w(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.j.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.j.W);c++);c==h.length&&(b=a);v("The "+b.type+" component ("+b.id+") is not "+(b.j.ready?"powered yet":"ready yet"+(b.Na?" (waiting for notification)":""))+".");a=!1}a&&(d.j.K?d.S():dc(d))},!0;case "speed":return this.G[b]=
|
||||
c,!0;case "setSpeed":return this.G[b]=c,c.onclick=function(){dd(d,d.U<<1,!0)},c.textContent=this.R.toFixed(2)+"Mhz",!0}return!1};function gc(a,b,c){a.N+=b;c&&(a.L=a.M=0)}function ed(a,b){var c=1;b&&1<a.U&&a.P&&(c=a.P/a.Ra);a.Sa=Math.round(1E3/fd);a.ua=Math.floor(a.Ta/fd*c);b||(a.aa=a.ua);a.ya=0}function cd(a){return a.N+a.F+a.L-a.M}function Yc(a){a.P=0;a.Ua=0;a.N=a.F=a.L=a.M=0;Zc(a);dd(a,1)}
|
||||
function dd(a,b,c){var d=!1;if(void 0!==b){.8>a.P/a.R?b=1:d=!0;a.U=b;b=a.Ra*a.U;if(a.R!=b){a.R=b;b=a.R.toFixed(2)+"Mhz";var e=a.G.setSpeed;e&&(e.textContent=b);a.f("target speed: "+b)}c&&a.C&&gd(a.C)}gc(a,a.F);a.F=0;a.B=va();a.J=0;ed(a);return d}function hd(a,b){for(var c=a.I.length-1;0<=c;c--){var d=a.I[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function id(a){for(var b=[],c=0;c<a.I.length;c++)b.push(a.I[c][0]);return b}
|
||||
function fc(a,b){for(var c=a.I.length-1;0<=c;c--){var d=a.I[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function jd(a,b){var c=a.L-=a.M;a.M=0;b&&(a.L=0);return c}
|
||||
l.Qb=function(){if(this.j.K){this.ya>=this.Ta&&ed(this,!0);this.ia=0;this.ra=va();if(this.J){var a=this.ra-this.J;a>this.Sa&&(this.B+=a,this.B>this.ra&&(this.B=this.ra))}try{do{var b=hd(this,this.j.Ea?1:this.ua);try{this.Ja(b)}catch(e){if("number"!=typeof e)throw e;}b=jd(this,!0);this.ia+=b;this.F+=b;hc(this,b);fc(this,b);this.aa-=b;if(0>=this.aa){this.aa+=this.ua;++this.Ua>=kd&&(this.C&&K(this.C,void 0),this.Ua=0);break}}while(this.j.K)}catch(e){this.S();this.C&&this.C.stop(va(),cd(this));Da(this,
|
||||
e.stack||e.message);return}if(this.j.K){a=setTimeout;b=this.fb;this.J=va();var c=this.Sa;this.ia&&(c=Math.round(c*this.ia/this.ua));var c=c-(this.J-this.ra),d=this.J-this.B;d&&(this.P=Math.round(this.F/(10*d))/100,864E5<=d&&(this.N=0,dd(this)));if(0>c||this.P<this.R)-1E3>c&&(this.B-=c),c=0;this.ya+=this.ia;this.J+=c;a(b,c)}}};
|
||||
function dc(a,b){if(!Ja(a))if(a.j.K)a.f(a.toString()+" busy");else{dd(a);a.j.K=!0;a.j.Qa=!0;var c=a.G.run;c&&(c.textContent="Halt");a.C&&(b&&gd(a.C,!0),a.C.start(a.B,cd(a)));a.A||a.status("Started");setTimeout(a.fb,0)}}l.Ja=function(){return 0};l.S=function(a){var b=!1;if(this.j.K){jd(this);gc(this,this.F);this.F=0;this.j.K=!1;if(b=this.G.run)b.textContent="Run";this.C&&this.C.stop(va(),cd(this));b=!0;this.A||this.status("Stopped")}this.j.complete=a;return b};var fd=30,kd=15,Wc=["power","reset"];
|
||||
function ld(a){var b=+a.model||1001;Vc.call(this,a,1E6);this.eb=b;this.bb=+a.addrReset||0;this.sb=md.bind(this);this.b=O.bind(this);this.oa=null;this.ab=[];this.j.complete=!1}p(ld,Vc);l=ld.prototype;l.reset=function(){this.status("Model "+this.eb);this.j.K&&this.S();this.i=this.O=this.za=0;this.pa=this.u=this.qa=this.bb;this.v=0;this.H=this.Mb;this.T=this.Zb;this.oa=null;Yc(this);this.j.error=!1;Vc.prototype.reset.call(this)};l.lb=function(){return 0};
|
||||
l.save=function(){var a=new J(this);a.set(0,[this.i,this.O,this.za,this.u,this.qa,this.pa,this.v]);a.set(1,[]);a.set(2,[this.N,this.U,this.j.Z]);a.set(3,nd(this));a.set(4,id(this));return a.data()};
|
||||
l.restore=function(a){var b;b=a[0];ha();ca();ha();var c=b[Symbol.iterator];b=c?c.call(b):ia(b);this.i=b.next().value;this.O=b.next().value;this.za=b.next().value;this.u=b.next().value;this.qa=b.next().value;this.pa=b.next().value;this.v=b.next().value;b=a[2];this.N=b[0];dd(this,b[1]);this.j.Z=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.ab.length;d++){var e=this.ab[d];if(e.Ub===b[c]){d=e;break a}}d=null}d&&(d.next=this.oa,this.oa=d)}a=a[4];for(b=0;b<this.I.length&&b<a.length;b++)this.I[b][0]=
|
||||
a[b];return!0};function od(a,b){var c=a.u;a.u=(c+b)%Ib;return c}function nd(a){var b=[];for(a=a.oa;a;)b.push(a.Ub),a=a.next;return b}l.Mb=function(a){var b=this.D;a=this.pa=a;return b.b[(a&b.u)>>>b.i].H(a&16383,a)};l.Zb=function(a,b){var c=this.D;a=this.pa=a;c.b[(a&c.u)>>>c.i].T(b,a&16383,a)};
|
||||
l.Ja=function(a){this.j.complete=!0;var b=this.A?pd(this.A)?1:this.j.Qa?-1:0:0,c=a?this.j.Qa?0:1:-1;this.j.Qa=!1;this.L=this.M=a;this.v=this.v&-5|(b?4:0);do{if(this.v){if(this.v&4){if(qd(this.A,this.u,c)){this.S();break}++b||(this.v&=-5);c||c++}if(a=this.v&11)this.v&2?this.oa||(this.v&=-3):this.v&1&&this.v++,a=!1;if(a){if(this.v&4&&qd(this.A,this.u,c)){this.S();break}if(0>c)break}}this.v&=15;this.O=this.O&4194304?this.H(this.i):this.za=this.H(this.qa=this.u);this.i=this.O&262143;if(a=this.O>>18&15)this.i=
|
||||
this.i+this.H(a)&Jb;this.O&4194304?a=-1:(this.u=(this.u+1)%Ib,a=this.za/Nb|0);0<=a&&this.sb(a)}while(0<this.M);return this.j.complete?this.L-this.M:!1===this.j.complete?-1:0};ub(function(){for(var a=D(document,C,"cpu"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new ld(d);B(d,c)}});function md(a){rd[a>>4].call(this,a)}function Q(a){this.b(a)}function sd(a){this.b(a)}function td(a){this.b(a)}function ud(a){a&=15;var b=this.H(this.i),c=this.H(a);this.T(a,(c&262143)+(b-(b&262143)))}
|
||||
function vd(a){a&=15;var b=this.H(this.i)&262143,c=this.H(a);this.T(a,c-(c&262143)+b)}function R(a){this.b(a)}function O(a){this.f("undefined opcode: "+Qa(a));od(this,-1);this.S()}
|
||||
var rd=[Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},rd,sd,sd,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},rd,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},sd,td,td,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},sd,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},O,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},O,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
|
|
@ -111,114 +111,117 @@ function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a)
|
|||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},td,function(a){a&=15;var b=this.aa(a);this.wa(a,b&262143)},function(a){a=this.aa(a&15);var b=this.aa(this.w);this.wa(this.w,(b&262143)+(a-(a&262143)))},function(a){a&15&&td.call(this,
|
||||
a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},ud,function(a){a&=15;var b=this.H(a);this.T(a,b&262143)},function(a){a=this.H(a&15);var b=this.H(this.i);this.T(this.i,(b&262143)+(a-(a&262143)))},function(a){a&15&&ud.call(this,a)},
|
||||
function(a){a&=15;var b=this.H(this.i)&262143,c=this.H(a),c=(c&262143)+b*H;this.T(a,c)},function(a){a&=15;var b=this.H(a),b=(b&262143)+this.i*H;this.T(a,b)},function(a){a=this.H(a&15)&262143;var b=this.H(this.i),b=(b&262143)+a*H;this.T(this.i,b)},function(a){var b=this.H(this.i)&262143;this.T(this.i,b+b*H);if(a&=15)b=this.H(a)&262143,this.T(a,b+b*H)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},vd,function(a){a&=15;var b=this.H(a),b=b-(b&262143)+this.i;this.T(a,b)},function(a){a=this.H(a&15)&262143;var b=
|
||||
this.H(this.i);this.T(this.i,b-(b&262143)+a)},function(a){a&15&&vd.call(this,a)},function(a){a&=15;var b=this.H(this.i)/H|0,c=this.H(a);this.T(a,c-(c&262143)+b)},function(a){a&=15;var b=this.H(a);this.T(a,b-(b&262143))},function(a){a=this.H(a&15)/H|0;var b=this.H(this.i);this.T(this.i,b-(b&262143)+a)},function(a){var b=this.H(this.i);this.T(this.i,(b&262143)+(b/H|0));if(a&=15)b=this.H(a),this.T(a,(b&262143)+(b/H|0))},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W];
|
||||
function ud(a){t.call(this,"ROM",a,128);this.T=this.b=null;this.B=+a.addr;this.u=+a.size;this.i=a.alias;"string"==typeof this.i&&(this.i=eval(this.i));this.w=a.file;this.F=Ra(this.w);if(this.w){a=this.w;var b=Sa(this.F);"json"!=b&&"hex"!=b&&(a=Ua()+"/api/v1/dump?file="+this.w+"&format=bytes&decimal=true");var c=this;H(a,null,!0,function(a,b,g){g?(c.Z("Unable to load ROM resource (error "+g+": "+a+")"),c.w=null):(ta(c.La,a,b),(a=ib(a,b))?(c.b=a.W,c.T=a.T):c.w=null);vd(c)})}}p(ud,t);
|
||||
ud.prototype.ua=function(a,b,c,d){this.D=b;this.g=c;this.A=d;vd(this)};ud.prototype.ma=function(){this.T&&(this.A&&wd(this.A,this.id,this.B,this.u,this.T),delete this.T);return!0};ud.prototype.da=function(){return!0};
|
||||
function vd(a){if(!Ka(a)){if(a.w){if(!a.b||!a.D)return;a.u||(a.u=a.b.length);if(a.b.length!=a.u)Ia(a,"ROM size ("+F(a.b.length,8,!0)+") does not match specified size ("+F(a.u,8,!0)+")");else{var b;b=a.B;if(nc(a.D,b,a.u,Lc)){var c;for(c=0;c<a.b.length;c++)ic(a.D,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],g=d.D,f=d.u,h=[],k=d.B>>>g.i;0<f&&k<g.b.length;)h.push(g.b[k++]),f-=16384;g=d.D;d=d.u;f=0;for(e>>>=
|
||||
g.i;0<d&&e<g.b.length;){k=h[f++];if(!k)break;g.b[e++]=k;d-=16384}}delete a.b}}}E(a)}}tb(function(){for(var a=D(document,C,"rom"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new ud(d);B(d,c)}});
|
||||
function xd(a){t.call(this,"RAM",a);this.T=this.Aa=null;this.i=+a.addr;this.u=+a.size;this.ja=a.load;this.ia=a.exec;null!=this.ja&&(this.ja=+this.ja);null!=this.ia&&(this.ia=+this.ia);this.w=this.F=!1;this.b=a.file;this.B=Ra(this.b);if(this.b){a=this.b;var b=Sa(this.B);"json"!=b&&"hex"!=b&&(a=Ua()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;H(a,null,!0,function(a,b,g){g?(c.Z("Unable to load RAM resource (error "+g+": "+a+")"),c.b=null):(ta(c.La,a,b),(a=ib(a,b))?(c.Aa=a.Aa,
|
||||
c.T=a.T,null==c.ja&&(c.ja=a.ja),null==c.ia&&(c.ia=a.ia)):c.b=null);yd(c)})}}p(xd,t);xd.prototype.ua=function(a,b,c,d){this.D=b;this.g=c;this.A=d;yd(this)};xd.prototype.ma=function(a,b){this.T&&(this.A&&wd(this.A,this.id,this.i,this.u,this.T),delete this.T);b||this.reset();return!0};xd.prototype.da=function(){return!0};
|
||||
function yd(a){if(a.D&&(!a.w&&a.u&&(nc(a.D,a.i,a.u,1)?a.w=!0:a.u=0),!Ka(a))){if(!a.w)v("No RAM allocated");else if(a.b){if(!a.Aa)return;zd(a,a.Aa,a.ja,a.ia,a.i)?a.status('Loaded image "'+a.B+'"'):a.Z('Error loading image "'+a.B+'"')}a.F=!0;E(a)}}
|
||||
xd.prototype.reset=function(){if(this.w&&!this.F){for(var a=this.D,b=this.i,c=this.u,d=b&16383,b=b>>>a.i;0<c&&b<a.b.length;){var e=a.b[b],g=c,f=0,h,d=d||0,f=f||0;0>f&&f>=sa&&(f+=ra);f=Math.trunc(Math.abs(f))%ra;void 0===g&&(g=e.size);for(h=d;g--&&h<e.size;h++)e.D(f,d,e.v+d);c-=16384;b++;d=0}this.Aa&&zd(this,this.Aa,this.ja,this.ia,this.i,!this.A)}this.F=!1};
|
||||
function zd(a,b,c,d,e,g){var f=!1;null==c&&(c=e);if(null!=c){for(f=0;f<b.length;f++)ic(a.D,c+f,b[f]);f=!0}f&&(null==d&&(a.g.R(),g=!1),null!=d&&(a=a.g,a.bb=d,a.i=d%Hb,g?a.j.U?a.j.J||cc(a):a.j.X=!0:a.A&&a.j.U?a.R()||a.C.j.reset||(Zc(a.A),K(a.C,-1)):!1===g&&a.R(),!a.j.J&&a.xa&&a.xa.stop()));return f}tb(function(){for(var a=D(document,C,"ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new xd(d);B(d,c)}});
|
||||
function Ad(a){t.call(this,"SerialPort",a,1048576);this.w=a.upperCase;"string"==typeof this.w&&(this.w="true"==this.w);this.u=!0;this.i=[];var b=a.binding;if("console"!=b){var c;a=Bd;b&&(void 0===c&&(c="Panel"),(c=y(c,this.id))&&(b=c.G[b])&&this.ea(null,a,b))}this.b=this.B=null;this.exports={connect:this.nb,receiveData:this.Oa,receiveStatus:this.Ob,setConnection:this.Rb}}p(Ad,t);l=Ad.prototype;
|
||||
l.ea=function(a,b,c){var d=this;switch(b){case Bd:return this.G[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?q.Za:q.rb:46==c?b=q.Za:a.ctrlKey&&c>=q.Ya&&c<=q.ub&&(b=c-(q.Ya-q.ob));b&&(a.preventDefault&&a.preventDefault(),d.Oa(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==q.qb&&(b=q.pb);d.Oa(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.Oa(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};l.ua=function(a,b,c,d){this.C=a;this.D=b;this.g=c;this.A=d;E(this)};
|
||||
l.nb=function(a){if(!this.b){var b=Wc(this.C,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ya(c[0]);if(d!=this.Ka)return;c=Ya(c[1]);if(this.b=xa(c)){var e=this.b.exports;if(e){var g=e.connect;g&&g.call(this.b,this.u);if(this.B=e.receiveData){this.u=a;this.status("Connected "+this.La+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};l.ma=function(a,b){if(!b)if(this.nb(this.u),!a)this.reset();else if(!this.restore(a))return!1;return!0};
|
||||
l.da=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){var a=new J(this);a.set(0,[]);return a.data()};l.restore=function(){return!0};l.Oa=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.Ob=function(){};l.Rb=function(a,b){return this.b?!1:(this.b=a,this.B=b,!0)};var Bd="buffer";
|
||||
tb(function(){for(var a=D(document,C,"serial"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Ad(d);B(d,c)}});function Cd(a){t.call(this,"Debugger",a);this.ca=+a.base||16;this.na=!1;this.B=0;this.O=!1;this.w=-1;this.u=[];this.Y={}}p(Cd,t);Cd.prototype.mb=function(){return-1};Cd.prototype.Xa=function(){};
|
||||
function Dd(a,b,c,d){if(c)if(b){0>a.w&&a.u.length&&(a.w=0);if(0>a.w||b!=a.u[a.w])a.u.splice(0,0,b),a.w=0;a.w--}else a.O?b="end":b=a.u[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var g=0;g<=b.length;g++){var f=b.charAt(g);if('"'==f||"'"==f)e?f==e&&(e=null):e=f;else if(f==d&&!e||!f)a.push(Ya(b.substring(c,g))),c=g+1}}return a}
|
||||
function Ed(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),g=a.pop();switch(d){case "*":d=g*e;break;case "/":if(!e)return!1;d=g/e;break;case "%":if(!e)return!1;d=g%e;break;case "+":d=g+e;break;case "-":d=g-e;break;case "<<":d=g<<e;break;case ">>":d=g>>e;break;case ">>>":d=g>>>e;break;case "<":d=g<e?1:0;break;case "<=":d=g<=e?1:0;break;case ">":d=g>e?1:0;break;case ">=":d=g>=e?1:0;break;case "==":d=g==e?1:0;break;case "!=":d=g!=e?1:0;break;case "&":d=g&e;break;
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,
|
||||
R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R];
|
||||
function wd(a){t.call(this,"ROM",a,128);this.V=this.b=null;this.B=+a.addr;this.u=+a.size;this.i=a.alias;"string"==typeof this.i&&(this.i=eval(this.i));this.v=a.file;this.F=Ra(this.v);if(this.v){a=this.v;var b=Sa(this.F);"json"!=b&&"hex"!=b&&(a=Ua()+"/api/v1/dump?file="+this.v+"&format=bytes&decimal=true");var c=this;ib(a,null,!0,function(a,b,g){g?(c.ba("Unable to load ROM resource (error "+g+": "+a+")"),c.v=null):(ta(c.La,a,b),(a=jb(a,b))?(c.b=a.Y,c.V=a.V):c.v=null);xd(c)})}}p(wd,t);
|
||||
wd.prototype.va=function(a,b,c,d){this.D=b;this.g=c;this.A=d;xd(this)};wd.prototype.na=function(){this.V&&(this.A&&yd(this.A,this.id,this.B,this.u,this.V),delete this.V);return!0};wd.prototype.ea=function(){return!0};
|
||||
function xd(a){if(!Ka(a)){if(a.v){if(!a.b||!a.D)return;a.u||(a.u=a.b.length);if(a.b.length!=a.u)Da(a,"ROM size ("+F(a.b.length,8,!0)+") does not match specified size ("+F(a.u,8,!0)+")");else{var b;b=a.B;if(oc(a.D,b,a.u,Mc)){var c;for(c=0;c<a.b.length;c++)jc(a.D,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],g=d.D,f=d.u,h=[],k=d.B>>>g.i;0<f&&k<g.b.length;)h.push(g.b[k++]),f-=16384;g=d.D;d=d.u;f=0;for(e>>>=
|
||||
g.i;0<d&&e<g.b.length;){k=h[f++];if(!k)break;g.b[e++]=k;d-=16384}}delete a.b}}}E(a)}}ub(function(){for(var a=D(document,C,"rom"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new wd(d);B(d,c)}});
|
||||
function zd(a){t.call(this,"RAM",a);this.V=this.Aa=null;this.i=+a.addr;this.u=+a.size;this.ka=a.load;this.ja=a.exec;null!=this.ka&&(this.ka=+this.ka);null!=this.ja&&(this.ja=+this.ja);this.v=this.F=!1;this.b=a.file;this.B=Ra(this.b);if(this.b){a=this.b;var b=Sa(this.B);"json"!=b&&"hex"!=b&&(a=Ua()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;ib(a,null,!0,function(a,b,g){g?(c.ba("Unable to load RAM resource (error "+g+": "+a+")"),c.b=null):(ta(c.La,a,b),(a=jb(a,b))?(c.Aa=a.Aa,
|
||||
c.V=a.V,null==c.ka&&(c.ka=a.ka),null==c.ja&&(c.ja=a.ja)):c.b=null);Ad(c)})}}p(zd,t);zd.prototype.va=function(a,b,c,d){this.D=b;this.g=c;this.A=d;Ad(this)};zd.prototype.na=function(a,b){this.V&&(this.A&&yd(this.A,this.id,this.i,this.u,this.V),delete this.V);b||this.reset();return!0};zd.prototype.ea=function(){return!0};
|
||||
function Ad(a){if(a.D&&(!a.v&&a.u&&(oc(a.D,a.i,a.u,1)?a.v=!0:a.u=0),!Ka(a))){if(!a.v)v("No RAM allocated");else if(a.b){if(!a.Aa)return;Bd(a,a.Aa,a.ka,a.ja,a.i)?a.status('Loaded image "'+a.B+'"'):a.ba('Error loading image "'+a.B+'"')}a.F=!0;E(a)}}
|
||||
zd.prototype.reset=function(){if(this.v&&!this.F){for(var a=this.D,b=this.i,c=this.u,d=b&16383,b=b>>>a.i;0<c&&b<a.b.length;){var e=a.b[b],g=c,f=0,h,d=d||0,f=f||0;0>f&&f>=sa&&(f+=la);f=Math.trunc(Math.abs(f))%la;void 0===g&&(g=e.size);for(h=d;g--&&h<e.size;h++)e.D(f,d,e.w+d);c-=16384;b++;d=0}this.Aa&&Bd(this,this.Aa,this.ka,this.ja,this.i,!this.A)}this.F=!1};
|
||||
function Bd(a,b,c,d,e,g){var f=!1;null==c&&(c=e);if(null!=c){for(f=0;f<b.length;f++)jc(a.D,c+f,b[f]);f=!0}f&&(null==d&&(a.g.S(),g=!1),null!=d&&(a=a.g,a.bb=d,a.u=d%Ib,g?a.j.W?a.j.K||dc(a):a.j.Z=!0:a.A&&a.j.W?a.S()||a.C.j.reset||($c(a.A),K(a.C,-1)):!1===g&&a.S(),!a.j.K&&a.xa&&a.xa.stop()));return f}ub(function(){for(var a=D(document,C,"ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new zd(d);B(d,c)}});
|
||||
function Cd(a){t.call(this,"SerialPort",a,1048576);this.v=a.upperCase;"string"==typeof this.v&&(this.v="true"==this.v);this.u=!0;this.i=[];var b=a.binding;if("console"!=b){var c;a=Dd;b&&(void 0===c&&(c="Panel"),(c=y(c,this.id))&&(b=c.G[b])&&this.fa(null,a,b))}this.b=this.B=null;this.exports={connect:this.nb,receiveData:this.Oa,receiveStatus:this.Ob,setConnection:this.Rb}}p(Cd,t);l=Cd.prototype;
|
||||
l.fa=function(a,b,c){var d=this;switch(b){case Dd:return this.G[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?q.Za:q.rb:46==c?b=q.Za:a.ctrlKey&&c>=q.Ya&&c<=q.ub&&(b=c-(q.Ya-q.ob));b&&(a.preventDefault&&a.preventDefault(),d.Oa(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==q.qb&&(b=q.pb);d.Oa(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.Oa(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};l.va=function(a,b,c,d){this.C=a;this.D=b;this.g=c;this.A=d;E(this)};
|
||||
l.nb=function(a){if(!this.b){var b=Xc(this.C,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ya(c[0]);if(d!=this.Ka)return;c=Ya(c[1]);if(this.b=xa(c)){var e=this.b.exports;if(e){var g=e.connect;g&&g.call(this.b,this.u);if(this.B=e.receiveData){this.u=a;this.status("Connected "+this.La+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};l.na=function(a,b){if(!b)if(this.nb(this.u),!a)this.reset();else if(!this.restore(a))return!1;return!0};
|
||||
l.ea=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){var a=new J(this);a.set(0,[]);return a.data()};l.restore=function(){return!0};l.Oa=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.Ob=function(){};l.Rb=function(a,b){return this.b?!1:(this.b=a,this.B=b,!0)};var Dd="buffer";
|
||||
ub(function(){for(var a=D(document,C,"serial"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Cd(d);B(d,c)}});function Ed(a){t.call(this,"Debugger",a);this.da=+a.base||16;this.oa=!1;this.B=0;this.P=!1;this.v=-1;this.u=[];this.aa={}}p(Ed,t);Ed.prototype.mb=function(){return-1};Ed.prototype.Xa=function(){};
|
||||
function Fd(a,b,c,d){if(c)if(b){0>a.v&&a.u.length&&(a.v=0);if(0>a.v||b!=a.u[a.v])a.u.splice(0,0,b),a.v=0;a.v--}else a.P?b="end":b=a.u[a.v+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var g=0;g<=b.length;g++){var f=b.charAt(g);if('"'==f||"'"==f)e?f==e&&(e=null):e=f;else if(f==d&&!e||!f)a.push(Ya(b.substring(c,g))),c=g+1}}return a}
|
||||
function Gd(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),g=a.pop();switch(d){case "*":d=g*e;break;case "/":if(!e)return!1;d=g/e;break;case "%":if(!e)return!1;d=g%e;break;case "+":d=g+e;break;case "-":d=g-e;break;case "<<":d=g<<e;break;case ">>":d=g>>e;break;case ">>>":d=g>>>e;break;case "<":d=g<e?1:0;break;case "<=":d=g<=e?1:0;break;case ">":d=g>e?1:0;break;case ">=":d=g>=e?1:0;break;case "==":d=g==e?1:0;break;case "!=":d=g!=e?1:0;break;case "&":d=g&e;break;
|
||||
case "^":d=g^e;break;case "|":d=g|e;break;case "&&":d=g&&e?1:0;break;case "||":d=g||e?1:0;break;default:return!1}a.push(d|0)}return!0}
|
||||
function Fd(a,b,c){var d;if(b){b=Gd(a,b);for(var e=0,g=!1,f=b,h=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<m.length;){var n=m[e++],r=n.length,n=Ya(n);if(!n){g=!0;break}n=Hd(a,n,null,!1===c);if(void 0===n){g=!0;c=!1;break}h.push(n);if(e==m.length)break;var n=m[e++],x=n.length;k.length&&Id[n]<Id[k[k.length-1]]&&Ed(h,k,1);k.push(n);b=b.substr(r+x)}Ed(h,k)&&1==h.length||(g=!0);g?c&&a.f("error parsing '"+f+"' at character "+(f.length-b.length)):(d=h.pop(),c&&Jd(a,null,
|
||||
d))}return d}function Gd(a,b){for(var c,d=a.na?"(":"{",e=a.na?")":"}",g=new RegExp(a.na?"\\((.*?)\\)":"\\{(.*?)\\}");(c=b.match(g))&&!(0<=c[1].indexOf(d));){var f=Fd(a,c[1]);b=b.replace(d+c[1]+e,null!=f?N(a,f):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)b=b.replace("["+c[1]+"]","unimplemented");for(a=b;b=a.match(/\$([a-z]+)/i);){c=null;switch(b[1].toLowerCase()){case "ops":c=0}if(null==c)break;a=a.replace(b[0],c.toString())}return a}
|
||||
function Hd(a,b,c,d){var e;null!=b?(e=a.mb(b),0<=e?e=a.Xa(e):(e=a.Y[b],null==e&&(e=Pa(b,a.ca))),null!=e||d||a.f("invalid "+(c?c:"value")+": "+b)):d||a.f("missing "+(c||"value"));return e}
|
||||
function Jd(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var g=4,f="";if(!g||4<g)g=4;for(var h=0;h<g;h++){f&&(f=","+f);var k=d&255,m=void 0,n=8,r="";n?32<n&&(n=32):n=32;for(var x=null==k||isNaN(k),R=m=m||n;0<n--;)R||(r=","+r,R=m),r=(x?"?":k&1?"1":"0")+r,k>>=1,R--;f=r+f;d>>=8}d=F(c,0,!0)+" "+c+". "+Qa(c,0,!0)+" "+("0b"+f);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.f((null!=b?b+": ":"")+d);return e}
|
||||
function Kd(a,b){if(b)return Jd(a,b,a.Y[b]);var c=0;for(b in a.Y)Jd(a,b,a.Y[b]),c++;return 0<c}function N(a,b,c){c=void 0===c?0:c;switch(a.ca){case 8:a=Qa(b,0<c?(c+2)/3|0:0);break;case 10:a=b;b=0<c?Math.ceil(.3*c):0;var d="";b?10<b&&(b=10):b=a&-65536?10:5;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(0>a&&-1<a&&(a=-1);0<b--;)d=String.fromCharCode(a%10+48)+d,a/=10;a=d;break;default:a=F(b,0<c?c+3>>2:0)}0>c?c=a.replace(/^0+([0-9A-F]+)$/i,"$1"):c=a;return c}
|
||||
var Id={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function Ld(a){Cd.call(this,a);this.xa=!1;this.na=!0;this.I=X();this.ta=X();this.N=X();this.H=[];this.b=this.K=this.F=[];Md(this);this.P=this.ha=0;this.i=[];this.qa=void 0;Nd(this);this.A=this;this.oa={};this.V=this.ib=0;this.S=null;this.M=[];Od(this,a.messages);this.sa=a.commands;this.L=0;this.Da=this.ra=null;this.B=this.za=this.ya=this.ga=this.pa=0;this.fa=this.ba=null;var b=this;window?void 0===window[C]&&(window[C]=function(a){return ad(b,a)}):void 0===global[C]&&(global[C]=function(a){return ad(b,
|
||||
a)})}p(Ld,Cd);function Y(a){a=a&&a.v;null==a&&(a=-1);return a}function X(a,b,c){return{v:void 0===a?null:a,wb:void 0===b?!1:b,la:!1,ca:c}}function Pd(a){return[a.v,a.wb,a.ca,a.la,a.Pa]}function Qd(a,b){var c=X(b[0],b[1],b[2]);c.la=b[3];b[4]&&(c.gb=Dd(a,c.Pa=b[4]));return c}l=Ld.prototype;
|
||||
l.ua=function(a,b,c,d){this.D=b;this.C=a;this.g=c;this.fa=a.u;(a=Wc(a,"messages"))&&Od(this,a);Rd(this,function(a){a:{var b=d.D.b,c=a[0],e=a=0,k=b.length;if(c){a=Y(Z(d,c));if(-1===a){d.f("invalid address: "+c);break a}e=a>>>d.D.i;k=1}d.f("blockid physical blockaddr used size type");d.f("-------- --------- --------- ------ ------ ----");for(var c=-1,m=0;k--;){var n=b[e];n.type==c?m++||d.f("..."):(c=n.type,m=Gc[c],n&&d.f(F(n.id,8)+" %"+F(e<<d.D.i,8)+" %"+F(n.v,8)+" "+F(n.Ia,4,!0)+
|
||||
" "+F(n.size,4,!0)+" "+m),c!=Kc&&(c=-1),m=0);a+=16384;e++}}});E(this)};
|
||||
l.ea=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ba=this.G[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",ad(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.w<d.u.length-1&&(b=d.u[++d.w])):40==a.keyCode&&(0<d.w?b=d.u[--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.G[b]=c,rb(c,function(){if(d.ba){var a=d.ba.value;
|
||||
d.ba.value="";ad(d,a,!0);return!0}return!1}),!0;case "step":return this.G[b]=c,rb(c,function(a){var b=!1;La(d,!0)||(Ma(d,!0),b=dc(d,a?1:0,null),Ma(d,!1));return b}),!0}return!1};function $c(a){if(a.ba){var b=0,c=0;window&&(b=window.scrollX,c=window.scrollY);a.ba.focus();window&&window.scrollTo(b,c)}}l.Ca=function(a,b){var c=-1,d=Y(a);-1!==d&&(c=jc(this.D,d),b&&null!=a.v&&(a.v+=b||1));return c};l.$a=function(a,b,c){var d=Y(a);-1!==d&&(ic(this.D,d,b),c&&null!=a.v&&(a.v+=c||1),K(this.C,-1))};
|
||||
function Z(a,b,c){var d;c=(c?a.I:a.ta).v;var e,g;if(void 0!==b){b=Gd(a,b);"%"==b.charAt(0)&&(e=!0,b=b.substr(1));d=b;var f,h;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.H.length;c++){var k=a.H[c].T[d];if(null!=k){h=k.o;break}}null!=h&&(f=X(h));if(d=f)return d;0<=b.indexOf("0x")?g=16:0<=b.indexOf("0o")?g=8:0<=b.indexOf(".")&&(g=10);c=Fd(a,b,void 0)}null!=c&&(d=X(c,e,g));return d}function Sd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.gb=Dd(a,b.Pa=c[2]))}
|
||||
function Td(a){return Qa(a/Hb,6)+" "+Qa(a%Hb,6)}function Od(a,b){a.A=a;a.V=a.ib=536870916;a.S=null;a.M=[];b=Dd(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in I){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.V|=I[c],a.f(c+" messages enabled"))}}function Rd(a,b){for(var c in I)if(16==I[c]){a.oa[c]=b;break}}l.mb=function(a){return Ud.indexOf(a.toUpperCase())};
|
||||
l.Xa=function(a){var b;switch(a){case Vd:b=this.g.i;break;case Wd:b=this.g.N;break;case Xd:b=this.g.w}return b};l.message=function(a,b){b&&(a+=" @"+N(this,X(this.g.pa).v));if(!this.S||a!=this.S)if(this.S=a,this.V&1073741824)this.M.push(a);else{var c;if(this.V&-2147483648&&this.g&&(c=this.g.j.J)||La(this,!0))this.R(),c&&(a+=" (cpu halted)");this.f(a);this.g&&(a=this.g,id(a),a.Y=0,a.C&&K(a.C,void 0))}};
|
||||
function Nd(a){var b;if(!od(a))a.i&&a.i.length&&a.f("instruction history buffer freed"),a.P=0,a.i=[];else if(!a.i||!a.i.length){a.i=Array(Yd);for(b=0;b<a.i.length;b++)a.i[b]=X();a.P=0;a.f("instruction history buffer allocated")}}function Zd(a,b,c){if(!Ae(a,c))return!1;cc(a.g,b);return!0}
|
||||
function dc(a,b,c,d){if(!Ae(a))return!1;var e="";null===c&&(e=(c=!a.ra||"tr"==a.ra)?"tr":"t");a.B=0;b||od(a)&&pd(a,a.g.i,0);try{b=gd(a.g,b);var g=a.g.Ja(b);0<g&&(ec(a.g,g),a.B+=g,fc(a.g,g,!0),gc(a.g,g),a.ga++)}catch(f){"number"!=typeof f&&(a.B=0,Ia(a.g,f.stack||f.message))}!1!==d&&(a.fa&&a.fa.stop(),K(a.C,-1));Zc(a,c||!1,e);return 0<a.B}l.R=function(a){this.g&&this.g.R(a)};function Zc(a,b,c){a.xa&&(void 0===b&&(b=!0),c&&a.f(Ce+c),a.I=X(a.g.i),b&&1!=a.L?De(a):Ee(a))}
|
||||
function Ae(a,b){var c;(c=!a.g||!Ka(a.g))||(c=a.g,c.j.U?c=!0:(c.f(c.toString()+" not powered"),c=!1),c=!c);return c||a.g.j.J?(b||a.f("cpu busy or unavailable, command ignored"),!1):!Ja(a.g)}l.ma=function(a,b){return!b&&(this.reset(!0),a)?this.restore(a):!0};l.da=function(a,b){b&&this.f(a?"suspending":"shutting down");return a?this.save():!0};l.reset=function(a){Nd(this);this.ga=0;this.S=null;this.B=0;this.I=X(this.g.i);this.j.J=!1;Fe(this);a||Zc(this)};
|
||||
l.save=function(){var a=new J(this);a.set(0,Pd(this.I));a.set(1,Pd(this.N));a.set(2,[this.u,this.O,this.V]);a.set(3,this.H);return a.data()};l.restore=function(a){var b=0;void 0!==a[2]&&(this.I=Qd(this,a[b++]),this.N=Qd(this,a[b++]),this.u=a[b][0],"string"==typeof this.u&&(this.u=[this.u]),this.O=a[b][1],this.V|=a[b][2]);a[3]&&(this.H=a[3]);return!0};l.start=function(a,b){this.L||this.f("running");this.j.J=!0;this.ya=a;this.za=b};
|
||||
l.stop=function(a,b){if(this.j.J){this.j.J=!1;this.B=b-this.za;if(!this.L){b="stopped";if(this.B){a-=this.ya;var c=0<a?Math.round(1E3*this.B/a):0;b+=" (";od(this)&&(b+=this.ga+" instructions, ",this.ga=0);b+=this.B+" cycles, "+a+" ms, "+c+" hz)"}else Na(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.f(b)}Zc(this,!0);$c(this);Fe(this,this.g.i);this.S=null}};function od(a){return 1<a.b.length||!!a.ha}
|
||||
function pd(a,b,c){var d=-1;c||(d=a.g.aa(b),2756==d>>23&&a.g.pa==b&&(b=nd(a.g,1)));if(0<c&&(a.ha&&!--a.ha||Tc(a,b,1,a.b)))return!0;0<=c&&a.i.length&&(a.ga++,0>d&&(d=a.g.aa(b)),0<=d&&(c=a.i[a.P],c.v=b,c.la=!1,c.ca=void 0,++a.P==a.i.length&&(a.P=0)));return!1}
|
||||
function Ge(a,b,c,d){var e=X(b.v),g=a.Ca(b,1),f,h,k,m=0,n=g/Kb|0,r;for(r in He)if(f=He[r][n&r]){h=+r;n>>=6;switch(h){case 32512:k=Ie;m=n&3;break;case 32256:k=Je;m=n&7;break;case 29248:k=Ke,m=(n&48)>>2|(n&6)>>1}break}k=k&&k[m]||"";"S"==k&&f>Le&&(k="B");k=Me[f||0]+k;k=Xa(k,8);f?(k=28700==h?k+N(a,g/Lb&127,-1):k+N(a,g>>23&15,-1),k+=",",g&4194304&&(k+="@"),k+=N(a,g&262143,-1),(g=g>>18&15)&&(k+="("+N(a,g,-1)+")")):k+=Td(g);g=k;f="";h=N(a,e.v)+":";if(-1!==e.v&&-1!==b.v){do if(k=a.Ca(e,1),f+=" "+Td(k),null==
|
||||
e.v)break;while(e.v!=b.v)}h+=Xa(f,16)+g;c&&(h=Xa(h,60)+";"+(c||""),h=a.g.j.Ea?h+("cycles="+bd(a.g).toString()+" cs="+F(a.g.ra)):h+(null!=d?"="+d.toString():""));return h}function Md(a){var b,c;a.b=["bp"];if(a.K)for(b=1;b<a.K.length;b++){c=a.K[b];c=Y(c);var d=a.D;Sc(d.b[c>>>d.i],!1)}a.K=["br"];if(a.F)for(b=1;b<a.F.length;b++)c=a.F[b],c=Y(c),d=a.D,Sc(d.b[c>>>d.i],!0);a.F=["bw"];a.pa=0;a.ha=0}
|
||||
l.Ba=function(a,b,c){var d=!0;c||Ne(this,a,b,!1,!0);if(a!=this.b){var e=Y(b);if(-1===e)this.f("invalid address: "+N(this,b.v)),d=!1;else{var g=this.D;g.b[e>>>g.i].Ba(e&16383,a==this.F)}}d&&(a.push(b),c?b.la=!0:(Oe(this,a,a.length-1,"set"),Nd(this)));return d};function Ne(a,b,c,d,e){var g=!1;c=Y(c);for(var f=1;f<b.length;f++){var h=b[f];if(c==Y(h)&&(!d||h.la)){g=!0;h.la||e||Oe(a,b,f,"cleared");b.splice(f,1);b!=a.b&&(d=a.D,Sc(d.b[c>>>d.i],b==a.F));h.la||Nd(a);break}}return g}
|
||||
function Pe(a,b){for(var c=1;c<b.length;c++)Oe(a,b,c);return b.length-1}function Oe(a,b,c,d){c=b[c];a.f(b[0]+" "+N(a,c.v)+(d?" "+d:c.Pa?' "'+c.Pa+'"':""))}function Fe(a,b){if(void 0!==b)Tc(a,b,1,a.b,!0),a.L=0;else for(b=1;b<a.b.length;b++){var c=a.b[b];if(c.la){if(!Ne(a,a.b,c,!0))break;b=0}}}
|
||||
function Tc(a,b,c,d,e){var g=!1;if(!a.pa++)for(var f=1;!g&&f<d.length;f++){var h=d[f];if(!e||h.la)for(var k=Y(h)&(d==a.b?65535:-1),m=0;m<c;m++)if(b+m==k){var n,g=!0;h.la&&(Ne(a,d,h,!0),e=!0);if(n=h.gb){for(var g=!1,r=0;r<n.length;r++)if(!Qe(a,n[r],!0)){if(n[r].indexOf("if")){g=!0;break}for(var x=r+1;x<n.length&&n[x].indexOf("else");x++)r++;if(x==n.length){g=!0;break}}a.g.j.J||(g=!0)}if(g){e||Oe(a,d,f,"hit");break}}}a.pa--;return g}
|
||||
function Re(a,b){var c=Ud[b]||"";c&&(c+="="+N(a,a.Xa(b))+" ");return c}l.jb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};function wd(a,b,c,d,e){var g=[],f;for(f in e){var h=e[f];"number"==typeof h&&(e[f]=h={o:h});var k=h.o,m=h.a;if(void 0!==k){var n=g,k=[k>>>0,f],r=gb(n,k,a.jb);0>r&&n.splice(-(r+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.H.push({dd:b,v:c,zb:d,T:e,hb:g})}
|
||||
function Se(a,b,c){var d=[],e=Y(b)>>>0;for(b=0;b<a.H.length;b++){var g=a.H[b],f=g.v>>>0,h=g.zb;if(e>=f&&e<f+h){e=gb(g.hb,[e-f],a.jb);0<=e?Te(a,b,e,d):c&&(e=~e,Te(a,b,e-1,d),Te(a,b,e,d));break}}return d}function Te(a,b,c,d){var e={},g=a.H[b].hb,f=0,h=null;0<=c&&c<g.length&&(f=g[c][0],h=g[c][1]);h&&(e=a.H[b].T[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(f);d.push(e.a);d.push(e.c)}
|
||||
function Ue(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Kd(a)||a.f("no variables"),!0;if(!c[2])return Kd(a,c[1]);if(!c[3])return delete a.Y[c[1]],!0;b=Fd(a,c[3]);return void 0!==b?(a.Y[c[1]]=b,!0):!1}a.f("invalid assignment:"+b);return!1}
|
||||
function Ve(a,b,c){var d=null;if(b=Z(a,b,!0)){var e=Se(a,b,!0);if(e.length){var g,f;e[0]&&(f="",(g=b.v-e[1])&&(f=" + "+F(g,4,!0)),g=e[0]+" ("+N(a,e[1])+")"+f,c&&a.f(g),d=g);4<e.length&&e[4]&&(f="",(g=e[5]-b.v)&&(f=" - "+F(g,4,!0)),g=e[4]+" ("+N(a,e[5])+")"+f,c&&a.f(g),d||(d=g))}else c&&a.f("no symbols")}return d}
|
||||
function De(a,b){var c;if(b&&"?"==b[1])a.f("register commands:"),a.f("\tr\tdump registers"),a.f("\trm\tdump misc registers"),a.f("\trx [#]\tset flag or register x to [#]");else{var d=!1,e=a.g;null==c&&(c=!0);if(b&&1<b.length){var g=b[1];if("m"==g)d=!0;else{var f=g.indexOf("=");if(0<f)b=g.substr(f+1),g=g.substr(0,f);else if(2<b.length)b=b[2];else{a.f("missing value for "+b[1]);return}f=Fd(a,b);if(void 0===f)return;switch(g.toUpperCase()){case "PC":e.i=f%Hb;a.I=X(e.i);break;default:a.f("unknown register: "+
|
||||
g);return}K(a.C);a.f("updated registers:")}}g=""+(Re(a,Wd)+Re(a,Xd));d&&(g+="\n");a.f(g);c&&(a.I=X(e.i),Ee(a,N(a,a.I.v)))}}function We(a,b){b=Ya(b);var c=b.match(/^(['"])(.*?)\1$/);c?1<c[2].length?a.f(c[2]):Jd(a,null,c[2].charCodeAt(0)):Fd(a,b,!0)}
|
||||
function Xe(a,b,c){if("?"==c)a.f("trace commands:"),a.f("\tt [#]\ttrace # instructions"),a.f("\ttr [#]\ttrace # instructions with register updates"),a.f("\ttc [#]\ttrace # cycles"),a.f("note: bn [#] breaks after # instructions without updates");else{var d="t"!=b;c=Hd(a,c,null,!0)||1;var e=0;"tc"==b&&(e=c,c=1);a.ra=b;qb(c,function(){return Ma(a,!0)&&dc(a,e,d,!1)},function(){a.fa&&a.fa.stop();K(a.C,-1);Ma(a,!1)})}}
|
||||
function Ee(a,b,c,d){if(b=Z(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=Hd(a,c.substr(1)),null!=c&&(d=c);else{d=Z(a,c,!0);if(!d||d.v<b.v)return;e=d.v-b.v;if(256<e){a.f("range too large");return}d=-1}c=0;for(var g;0<e&&d--;){g=La(a,!1)||a.L?a.B:null;var f=null!=g?"cycles":null,h=Se(a,b),k=b.v;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.f(m)}h[3]&&(f=h[3],g=null);g=Ge(a,b,f,g);a.f(g);a.I=b;e-=b.v-k;c++}}}
|
||||
function Qe(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.f(Ce+b):(a.O&&(a.f("ended assemble at "+N(a,a.N.v)),a.I=a.N,a.O=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.S=null;if(Ka(a)&&0<b.length){a.O&&(b="a "+N(a,a.N.v)+" "+b);var g=!1,f=b.replace(/ +/g," ").split(" ");f[0]=f[0].toLowerCase();if(f&&f.length)for(var h=f[0],k=h.charAt(0),m=1;m<h.length;m++){var n=h.charAt(m);if("?"==k||"r"==k||"a">n||"z"<n){f[0]=h.substr(m);f.unshift(h.substr(0,m));break}}switch(f[0].charAt(0)){case "a":var r=
|
||||
Z(a,f[1],!0);if(r)if(a.N=r,void 0===f[2])a.f("begin assemble at "+N(a,r.v)),a.O=!0,K(a.C);else{var x;a.f("not supported yet");x=[];if(x.length){for(var R=0;R<x.length;R++)a.$a(r,x[R],1);a.f(Ge(a,a.N))}}break;case "b":a:{var zf=f[0],Da=f[1],Af=b;if("?"==Da)a.f("breakpoint commands:"),a.f("\tbp #\tset exec breakpoint"),a.f("\tbr #\tset read breakpoint"),a.f("\tbw #\tset write breakpoint"),a.f("\tbc #\tclear breakpoint (* to clear all)"),a.f("\tbl\tlist all breakpoints"),a.f("\tbn [#]\tbreak after # instruction(s)");
|
||||
else{var la=zf.charAt(1);if("l"==la){var qc;qc=0+Pe(a,a.b);qc+=Pe(a,a.K);(qc+=Pe(a,a.F))||a.f("no breakpoints")}else if("n"==la){var $d=+Da||0;Da&&(a.ha=$d);a.f("break after "+$d+" instruction(s)")}else if(void 0===Da)a.f("missing breakpoint address");else{var G=X();if("*"!=Da&&(G=Z(a,Da,!0),!G))break a;"c"==la?null==G.v?(Md(a),a.f("all breakpoints cleared")):Ne(a,a.b,G)||Ne(a,a.K,G)||Ne(a,a.F,G)||a.f("breakpoint missing: "+N(a,G.v)):null!=G.v&&(Sd(a,G,Af),"p"==la?a.Ba(a.b,G):"r"==la?a.Ba(a.K,G):
|
||||
"w"==la?a.Ba(a.F,G):a.f("unknown breakpoint command: "+la))}}}break;case "c":a.ka&&(a.ka.value="");break;case "d":a:{var Ea,Fa=f[0],S=f[1],da=f[2],Bf=f[3];if("?"==S){var Ga="";for(Ea in I)a.oa[Ea]&&(Ga&&(Ga+=","),Ga+=Ea);Ga+=",state,symbols";a.f("dump memory commands:");a.f("\tdw [a] [n] dump n words at address a");a.f("\tds [a] [n] dump n words at address a as JSON");a.f("\tdh [p] [n] dump n instructions from history position p");Ga.length&&a.f("dump extension commands:\n\t"+Ga)}else if("state"==
|
||||
S){var rc=Ye(a.C,!0);"console"==da?console.log(rc):(a.ka&&(a.ka.value=""),rc&&a.f(rc))}else if("symbols"==S)for(var sc=0;sc<a.H.length;sc++){var tc=a.H[sc],Ha;for(Ha in tc.T)if("."!=Ha.charAt(0)){var ae=tc.T[Ha].o;if(void 0!==ae){var be=tc.T[Ha].l;be&&(Ha=be);a.f(N(a,ae)+" "+Ha)}}}else{if("d"==Fa){for(Ea in I)if(f[1]==Ea){var ce=a.oa[Ea];ce?(f.shift(),f.shift(),ce(f)):a.f("no dump registered for "+S);break a}S||(Fa=a.Da||"dw")}else a.Da=Fa;if("dh"==Fa){var de=S,ee=da,fe="",ge=0,P=a.P,T=a.i;if(T.length){var L=
|
||||
+de||a.qa,Za=+ee||10;isNaN(L)?L=Za:fe="more ";L>T.length&&(a.f("note: only "+T.length+" available"),L=T.length);P-=L;0>P&&(null==T[T.length-1].v?(L=P+L,P=0):P+=T.length);var uc=[];"call"==ee&&(Za=1E5,uc=["CALL"]);for(void 0!==de&&a.f(L+" instructions earlier:");0<Za&&P!=a.P;){var he=T[P++];if(null==he.v)break;var $a=X(he.v),Cf=L--,ie=Ge(a,$a,"history",Cf);(!uc.length||0<=ie.indexOf(uc[0]))&&a.f(ie);$a.Wa&&(P+=$a.Wa,Za-=$a.Wa,L-=$a.Wa);P>=T.length&&(P=0);a.qa=L;ge++;Za--}}ge||(a.f("no "+fe+"history available"),
|
||||
a.qa=void 0)}else{var ma=Z(a,S);if(ma){var na=0,je="ds"==Fa;if(da){if("l"==da.charAt(0))da=da.substr(1)||Bf,na=Hd(a,da);else{var ke=Z(a,da);ke&&(na=ke.v-ma.v)}0>na&&(na=0);65536<na&&(na=65536)}var Df=a.ca;ma.ca&&(a.ca=ma.ca);for(var le="db"==Fa?1:2,vc=na||32,wc=1==le?2:4,Ef=(vc+wc-1)/wc|0||1,oa="";Ef--&&0<vc;){for(var pa="",me="",S=N(a,ma.v),ne=wc;0<ne--&&0<vc--;){var Cb=a.Ca(ma,1);je?(pa&&(pa+=","),pa+=Cb):(pa+=Td(Cb),pa+=" ");for(var oe=0;1==le&&6>oe;oe++)me+=String.fromCharCode((Cb%64|0)+32),
|
||||
Cb/=64}oa&&(oa+="\n");oa=je?oa+(pa+","):oa+(S+": "+pa+(0>ne?" "+me:""))}oa&&a.f(oa);a.ta=ma;a.ca=Df}}}}break;case "e":if("else"==f[0])break;var pe,qe,re=f[0],xc=f[1];"e"==re||"ew"==re?(pe=a.Ca,qe=a.$a):xc=null;if(null==xc)a.f("edit memory commands:"),a.f("\tew [a] [...] edit words at address a");else{var Db=Z(a,xc);if(Db)for(var Eb=2;Eb<f.length;Eb++){var yc=Fd(a,f[Eb]);if(void 0===yc){a.f("unrecognized value: "+f[Eb]);break}a.f("changing "+N(a,Db.v)+" from "+Td(pe.call(a,Db))+" to "+Td(yc));qe.call(a,
|
||||
Db,yc,1)}}break;case "g":a:{var se=f[1],Ff=b;if(void 0!==se){var zc=Z(a,se,!0);if(!zc)break a;Sd(a,zc,Ff);a.Ba(a.b,zc,!0)}Zd(a,!0,c)}break;case "h":a.j.J?(c||a.f("halting"),a.R()):La(a,!0)||c||a.f("already halted");break;case "i":if("if"==f[0]){var Ac;var ab=b.substr(2),ab=Ya(ab);Fd(a,ab)?(c||a.f("true: "+ab),Ac=!0):(c||a.f("false: "+ab),Ac=!1);Ac||(d=!1);break}g=!0;break;case "k":var Gf=f[0];if("?"==f[1])a.f("stack trace commands:"),a.f("\tk\tshow frame addresses"),a.f("\tks\tshow symbol information");
|
||||
else{var Bc=0,Cc=X(),bb=X();for(a.f("stack trace for "+N(a,bb.v));10>Bc;){for(var qa=null,Hf=256;65536>bb.v>>>0;){Cc.v=a.Ca(bb,2);if(null==bb.v||!Hf--)break;if(!(Cc.v&1)){for(var If=a,Fb=Cc,te=null,cb=Fb.v,ue=cb,Dc=1;6>=Dc&&cb;Dc++){if(2<Dc){Fb.v=cb;var Gb=Ge(If,Fb);if(0<=Gb.indexOf("JSR")){var ve=Gb.indexOf(" ");if(cb+(Gb.indexOf(" ",ve+1)-ve-1)/2==ue){te=Gb;break}}}cb-=2}Fb.v=ue;if(qa=te)break}}if(!qa||null==qa)break;var we=null;if("ks"==Gf){var xe=qa.match(/[0-9A-F]+$/);xe&&(we=Ve(a,xe[0]))}qa=
|
||||
Xa(qa,50)+" ;"+(we||"stack="+N(a,bb.v));a.f(qa);Bc++}Bc||a.f("no return addresses found")}break;case "l":if("ln"==f[0]){Ve(a,f[1],!0);break}g=!0;break;case "m":a:{var U,V=null,z=f[1];"?"==z&&(z=void 0);if(void 0!==z){var ea=0;if("all"==z)ea=1879046143,z=null;else if("on"==z)V=!0,z=null;else if("off"==z)V=!1,z=null;else{"keys"==z&&(z="key");"kbd"==z&&(z="keyboard");for(U in I)if(z==U){ea=I[U];V=!!(a.V&ea);break}if(!ea){a.f("unknown message category: "+z);break a}}if(ea)if("on"==f[2])a.V|=ea,V=!0;
|
||||
else if("off"==f[2]&&(a.V&=~ea,V=!1,1073741824==ea)){for(var ye=1E3<=a.M.length?a.M.length-1E3:0;ye<a.M.length;)a.f(a.M[ye++]);a.M=[]}}var Jf=0,db="";for(U in I)if(!z||z==U){var Kf=!!(a.V&I[U]);if(null===V||V==Kf)db&&(db+=","),++Jf%10||(db+="\n\t"),"key"==U&&(U="keys"),db+=U}void 0===z&&a.f("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.f((null!==V?V?"messages on: ":"messages off: ":"message categories:\n\t")+(db||"none"));Nd(a)}break;case "p":if("print"==f[0]){We(a,b.substr(5));
|
||||
break}var Lf=f[0];if("?"==f[1])a.f("step commands:"),a.f("\tp\tstep over instruction"),a.f("\tpr\tstep over instruction with register update");else{var Mf="pr"==Lf?1:0;if(a.L)a.f("step in progress");else{var ze=X(a.g.i);a.Ca(ze);a.L?(a.Ba(a.b,ze,!0),Zd(a)||(a.C&&fd(a.C),a.L=0)):Xe(a,Mf?"tr":"t")}}break;case "r":if("reset"==b){a.C&&a.C.reset();break}De(a,f);break;case "s":a:switch(f[1]){case "base":if(f[2]){var eb=+f[2];if(8==eb||10==eb||16==eb)a.ca=eb;else{a.f("invalid base: "+eb);break}}a.f("default base: "+
|
||||
a.ca);break;case "cs":var fb;void 0!==f[3]&&(fb=+f[3]);switch(f[2]){case "int":a.g.ba=fb;break;case "start":a.g.sa=fb;break;case "stop":a.g.ga=fb;break;default:a.f("unknown cs option");break a}void 0!==fb&&Yc(a.g);a.f("checksums "+(a.g.j.Ea?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(cd(a.g,+f[2])||a.f("warning: using 1x multiplier, previous target not reached"));a.f("target speed: "+(a.g.P.toFixed(2)+"Mhz")+" ("+a.g.S+"x)");break;default:if(f[1]){a.f("unknown option: "+f[1]);break}case "?":a.f("debugger options:"),
|
||||
a.f("\tbase #\t\tset default base to #"),a.f("\tcs int #\tset checksum cycle interval to #"),a.f("\tcs start #\tset checksum cycle start count to #"),a.f("\tcs stop #\tset checksum cycle stop count to #"),a.f("\tsp #\t\tset speed multiplier to #")}break;case "t":Xe(a,f[0],f[1]);break;case "u":Ee(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Ue(a,b.substr(3))||(d=!1);break}if("ver"==f[0]){a.f((Bb||"PDP10")+" version 1.34.0 ("+a.g.eb+",RELEASE)");a.f(window?window.navigator.userAgent:"");break}g=!0;
|
||||
break;case "?":if(f[1]){We(a,b.substr(1));break}var Ec="commands:",Fc;for(Fc in Ze)Ec+="\n"+Xa(Fc,9)+Ze[Fc];od(a)||(Ec+="\nnote: history disabled if no exec breakpoints");a.f(Ec);break;default:g=!0}g&&(a.f("unknown command: "+b),d=!1)}}catch(Be){a.f("debugger error: "+(Be.stack||Be.message)),d=!1}return d}function ad(a,b,c){b=Dd(a,b,c);for(var d in b)if(!Qe(a,b[+d]))return!1;return!0}
|
||||
var Ze={"?":"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"},Le=20,Me=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOV 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 CA 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".split(" "),
|
||||
Vd=0,Wd=1,Xd=2,Ud=["PC","RA","EA"],$e={},He=($e[28672]={0:101},$e[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},$e[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Le,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},$e[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},$e[29248]={24576:79,24640:80,25088:81,25152:82},$e[28700]={28672:93,28676:94,28680:95,28684:96,28688:97,28692:98,28696:99,28700:100},$e),Ie=["","I",
|
||||
"M","S"],Je=" L E LE A GE N G".split(" "),Ke="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Yd=1E3,Ce=">> ";tb(function(){for(var a=D(document,C,"debugger"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Ld(d);B(d,c)}});
|
||||
function af(a,b,c){t.call(this,"Computer",a,33554432);this.j.U=!1;this.O=null;bf(this,b);this.M=Wc(this,"autoPower",a,6);this.w=0;this.Y=+a.busWidth||+a.buswidth;this.K=this.F=this.L=null;this.I=this.S=!1;this.H=this.B=null;this.P=this.N=!1;this.ba=Wc(this,"url")||"";(Math.random()+.1).toString(36);this.i=cf(this);if(this.g=y("CPU",this.id)){this.A=y("Debugger",this.id);this.D=new kc({id:this.La+".bus",busWidth:this.Y},this.g,this.A);var d,e=w(this.id);if((this.u=y("Panel",this.id))&&this.u.ka)for(b=
|
||||
0;b<e.length;b++)d=e[b],d.Z=this.u.Z,d.f=this.u.f,d.ka=this.u.ka;this.f(Bb+" v1.34.0\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.ua&&d.ua(this,this.D,this.g,this.A);b=null;d=Wc(this,"resume",a);void 0!==d&&(1<d.length?b=this.F=d:this.b=parseInt(d,10));var g;if(a=Wc(this,"state")||(g=!0,a.state))this.L=b=a,g||(this.I=!0,this.b=df),this.b&&(this.H=new J(this,"1.34.0"),ef(this.H)?b=null:
|
||||
delete this.H);!b&&this.b&&(b=ff(this))&&(this.I=!0);if(b){var f=this;H(b,null,!0,function(a,b,c){c?(f.F=null,f.I=!1,f.Z("Unable to load machine state from server (error "+c+(b?": "+Ya(b):"")+")")):(f.K=b,f.S=!0);E(f)})}else E(this);this.G.power||(this.M=!0);!c&&this.M&&gf(this,this.Ga)}else v("Unable to find CPU component")}p(af,t);function bf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){v(d.message+" ("+c+")")}}a.O=b}
|
||||
function Wc(a,b,c,d){var e=b.toLowerCase(),e=ob(b)||ob(e);void 0===e&&a.O&&(e=a.O[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 gf(a,b,c){for(var d=w(a.id),e=0;e<=d.length;e++){var g=e<d.length?d[e]:a;if(!Ka(g)){Ka(g,function(){gf(a,b,c)});return}}b.call(a,c)}
|
||||
function hf(a,b){var c=new J(a,"1.34.0",jf);if(ef(c)&&kf(c)){var d=c.get(lf),e=b?b.get(lf):"unknown";d!=e&&(a.Z("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=af.prototype;
|
||||
l.Ga=function(a){void 0===a&&(a=this.b||(this.K?mf:df));if(!this.w){this.w++;var b=!1,c=!1;this.N=!1;var d=this.H||new J(this,"1.34.0");if(a==nf)b=!0;else if(a>df){if(ef(d,this.K)){this.B=new J(this,"1.34.0",of);ef(this.B)&&(pf(this,d),a=qf,rf(this.B));this.B.set(lf,hb());sf(this.B);var e=this.b&&!this.I;if(a==mf||wa("Click OK to restore the previous "+Bb+" machine state, or CANCEL to reset the machine.")){if(c=kf(d)){var g=d.get("code"),f=d.get("data");g&&("ok"==g?ef(d,f):("error"==g&&"no machine state"!=
|
||||
f?(this.Z("Error: "+f),"unable to verify user"==f&&(mb(tf,""),this.i=null)):this.f(g+": "+f),rf(d),ef(d)?(c=kf(d),e=!0):c=!1))}e&&hf(this,c?d:null)}else a==qf&&d.clear()}else hf(this);delete this.K;delete this.H}e=w(this.id);for(g=0;g<e.length;g++)f=e[g],f!==this&&f!=this.g&&(c=uf(this,f,d,b,c));b=[d,a,c];a!=nf?gf(this,this.kb,b):this.kb(b)}};
|
||||
function uf(a,b,c,d,e){if(!b.j.U){b.j.U=!0;var g=null;try{if(e&&((g=c.get(b.id))||(g=c.get(b.id.replace(/[a-z0-9]\./i,".")))),"string"===typeof g&&(g=null),!b.ma(g,d)&&g&&(v("Unable to restore state for "+b.type),a.L&&!a.S?(c.clear(),a.b=df,window&&window.location.reload()):a.N=!0,b.ma(null),e=!1),!d&&b.cb){var f=b.cb.split("|");for(a=0;a<f.length;a++)b.status(f[a])}}catch(h){v("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
|
||||
l.kb=function(a){var b=a[0],c=0>a[1];a=a[2];this.P=!0;this.j.U=!0;var d=this.G.power;d&&(d.textContent="Shutdown");this.g&&(uf(this,this.g,b,c,a),K(this,-2),this.g.X());this.N&&(pf(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B);this.w=0};
|
||||
function pf(a,b){if(wa("There may be a problem with your "+Bb+" machine.\n\nTo help us diagnose it, click OK to send this "+Bb+" machine state to http://www.pcjs.org.")){var c=a.ba;a=a.i||"";b=b.toString();var d={};d.app=Bb;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;H("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function Ye(a,b,c){var d,e="none";if(a.w)return null;a.w--;var g=new J(a,"1.34.0"),f=new J(a,"1.34.0",jf),h=hb();f.set(lf,h);g.set(lf,h);g.set(vf,"1.34.0");g.set(wf,window?window.location.href:null);g.set(xf,window?window.navigator.userAgent:"");a.g&&a.g.da&&(c&&(b&&(a.g.j.X=a.g.j.J),a.g.R()),d=a.g.da(b,c),"object"===typeof d&&g.set(a.g.id,d),c&&(a.g.j.U=!1,!1===d&&(e=null)));for(var h=w(a.id),k=0;k<h.length;k++){var m=h[k];m.j.U&&(m.da&&(d=m.da(b,c),"object"===typeof d&&g.set(m.id,d)),c&&(m.j.U=
|
||||
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.i&&yf(a,a.i,g.toString()),sf(f)&&sf(g)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Nf),d&&g.clear(h)):e=g.toString());c&&(a.j.U=!1,b=a.G.power)&&(b.textContent="Power");a.w=0;return e}
|
||||
function Hd(a,b,c){var d;if(b){b=Id(a,b);for(var e=0,g=!1,f=b,h=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<m.length;){var n=m[e++],r=n.length,n=Ya(n);if(!n){g=!0;break}n=Jd(a,n,null,!1===c);if(void 0===n){g=!0;c=!1;break}h.push(n);if(e==m.length)break;var n=m[e++],x=n.length;k.length&&Kd[n]<Kd[k[k.length-1]]&&Gd(h,k,1);k.push(n);b=b.substr(r+x)}Gd(h,k)&&1==h.length||(g=!0);g?c&&a.f("error parsing '"+f+"' at character "+(f.length-b.length)):(d=h.pop(),c&&Ld(a,null,
|
||||
d))}return d}function Id(a,b){for(var c,d=a.oa?"(":"{",e=a.oa?")":"}",g=new RegExp(a.oa?"\\((.*?)\\)":"\\{(.*?)\\}");(c=b.match(g))&&!(0<=c[1].indexOf(d));){var f=Hd(a,c[1]);b=b.replace(d+c[1]+e,null!=f?N(a,f):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)b=b.replace("["+c[1]+"]","unimplemented");for(a=b;b=a.match(/\$([a-z]+)/i);){c=null;switch(b[1].toLowerCase()){case "ops":c=0}if(null==c)break;a=a.replace(b[0],c.toString())}return a}
|
||||
function Jd(a,b,c,d){var e;null!=b?(e=a.mb(b),0<=e?e=a.Xa(e):(e=a.aa[b],null==e&&(e=Pa(b,a.da))),null!=e||d||a.f("invalid "+(c?c:"value")+": "+b)):d||a.f("missing "+(c||"value"));return e}
|
||||
function Ld(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var g=4,f="";if(!g||4<g)g=4;for(var h=0;h<g;h++){f&&(f=","+f);var k=d&255,m=void 0,n=8,r="";n?32<n&&(n=32):n=32;for(var x=null==k||isNaN(k),S=m=m||n;0<n--;)S||(r=","+r,S=m),r=(x?"?":k&1?"1":"0")+r,k>>=1,S--;f=r+f;d>>=8}d=F(c,0,!0)+" "+c+". "+Qa(c,0,!0)+" "+("0b"+f);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.f((null!=b?b+": ":"")+d);return e}
|
||||
function Md(a,b){if(b)return Ld(a,b,a.aa[b]);var c=0;for(b in a.aa)Ld(a,b,a.aa[b]),c++;return 0<c}function N(a,b,c){c=void 0===c?0:c;switch(a.da){case 8:a=Qa(b,0<c?(c+2)/3|0:0);break;case 10:a=b;b=0<c?Math.ceil(.3*c):0;var d="";b?10<b&&(b=10):b=a&-65536?10:5;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(0>a&&-1<a&&(a=-1);0<b--;)d=String.fromCharCode(a%10+48)+d,a/=10;a=d;break;default:a=F(b,0<c?c+3>>2:0)}0>c?c=a.replace(/^0+([0-9A-F]+)$/i,"$1"):c=a;return c}
|
||||
var Kd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function Nd(a){Ed.call(this,a);this.xa=!1;this.oa=!0;this.J=X();this.ua=X();this.O=X();this.I=[];this.b=this.L=this.F=[];Od(this);this.R=this.ia=0;this.i=[];this.ra=void 0;Pd(this);this.A=this;this.pa={};this.X=this.ib=0;this.U=null;this.N=[];Qd(this,a.messages);this.ta=a.commands;this.M=0;this.Da=this.sa=null;this.B=this.za=this.ya=this.ha=this.qa=0;this.ga=this.ca=null;var b=this;window?void 0===window[C]&&(window[C]=function(a){return bd(b,a)}):void 0===global[C]&&(global[C]=function(a){return bd(b,
|
||||
a)})}p(Nd,Ed);function Y(a){a=a&&a.w;null==a&&(a=-1);return a}function X(a,b,c){return{w:void 0===a?null:a,wb:void 0===b?!1:b,ma:!1,da:c}}function Rd(a){return[a.w,a.wb,a.da,a.ma,a.Pa]}function Sd(a,b){var c=X(b[0],b[1],b[2]);c.ma=b[3];b[4]&&(c.gb=Fd(a,c.Pa=b[4]));return c}l=Nd.prototype;
|
||||
l.va=function(a,b,c,d){this.D=b;this.C=a;this.g=c;this.ga=a.u;(a=Xc(a,"messages"))&&Qd(this,a);Td(this,function(a){a:{var b=d.D.b,c=a[0],e=a=0,k=b.length;if(c){a=Y(Z(d,c));if(-1===a){d.f("invalid address: "+c);break a}e=a>>>d.D.i;k=1}d.f("blockid physical blockaddr used size type");d.f("-------- --------- --------- ------ ------ ----");for(var c=-1,m=0;k--;){var n=b[e];n.type==c?m++||d.f("..."):(c=n.type,m=Hc[c],n&&d.f(F(n.id,8)+" %"+F(e<<d.D.i,8)+" %"+F(n.w,8)+" "+F(n.Ia,4,!0)+
|
||||
" "+F(n.size,4,!0)+" "+m),c!=Lc&&(c=-1),m=0);a+=16384;e++}}});E(this)};
|
||||
l.fa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ca=this.G[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",bd(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.v<d.u.length-1&&(b=d.u[++d.v])):40==a.keyCode&&(0<d.v?b=d.u[--d.v]:(b="",d.v=-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.G[b]=c,sb(c,function(){if(d.ca){var a=d.ca.value;
|
||||
d.ca.value="";bd(d,a,!0);return!0}return!1}),!0;case "step":return this.G[b]=c,sb(c,function(a){var b=!1;La(d,!0)||(Ma(d,!0),b=ec(d,a?1:0,null),Ma(d,!1));return b}),!0}return!1};function ad(a){if(a.ca){var b=0,c=0;window&&(b=window.scrollX,c=window.scrollY);a.ca.focus();window&&window.scrollTo(b,c)}}l.Ca=function(a,b){var c=-1,d=Y(a);-1!==d&&(c=kc(this.D,d),b&&null!=a.w&&(a.w+=b||1));return c};l.$a=function(a,b,c){var d=Y(a);-1!==d&&(jc(this.D,d,b),c&&null!=a.w&&(a.w+=c||1),K(this.C,-1))};
|
||||
function Z(a,b,c){var d;c=(c?a.J:a.ua).w;var e,g;if(void 0!==b){b=Id(a,b);"%"==b.charAt(0)&&(e=!0,b=b.substr(1));d=b;var f,h;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.I.length;c++){var k=a.I[c].V[d];if(null!=k){h=k.o;break}}null!=h&&(f=X(h));if(d=f)return d;0<=b.indexOf("0x")?g=16:0<=b.indexOf("0o")?g=8:0<=b.indexOf(".")&&(g=10);c=Hd(a,b,void 0)}null!=c&&(d=X(c,e,g));return d}function Ud(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.gb=Fd(a,b.Pa=c[2]))}
|
||||
function Vd(a){return Qa(a/Ib,6)+" "+Qa(a%Ib,6)}function Qd(a,b){a.A=a;a.X=a.ib=536870916;a.U=null;a.N=[];b=Fd(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in I){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.X|=I[c],a.f(c+" messages enabled"))}}function Td(a,b){for(var c in I)if(16==I[c]){a.pa[c]=b;break}}l.mb=function(a){return Wd.indexOf(a.toUpperCase())};
|
||||
l.Xa=function(a){var b;switch(a){case Xd:b=this.g.u;break;case Yd:b=this.g.O;break;case Zd:b=this.g.i}return b};l.message=function(a,b){b&&(a+=" @"+N(this,X(this.g.qa).w));if(!this.U||a!=this.U)if(this.U=a,this.X&1073741824)this.N.push(a);else{var c;if(this.X&-2147483648&&this.g&&(c=this.g.j.K)||La(this,!0))this.S(),c&&(a+=" (cpu halted)");this.f(a);this.g&&(a=this.g,jd(a),a.aa=0,a.C&&K(a.C,void 0))}};
|
||||
function Pd(a){var b;if(!pd(a))a.i&&a.i.length&&a.f("instruction history buffer freed"),a.R=0,a.i=[];else if(!a.i||!a.i.length){a.i=Array($d);for(b=0;b<a.i.length;b++)a.i[b]=X();a.R=0;a.f("instruction history buffer allocated")}}function ae(a,b,c){if(!Ce(a,c))return!1;dc(a.g,b);return!0}
|
||||
function ec(a,b,c,d){if(!Ce(a))return!1;var e="";null===c&&(e=(c=!a.sa||"tr"==a.sa)?"tr":"t");a.B=0;b||pd(a)&&qd(a,a.g.u,0);try{b=hd(a.g,b);var g=a.g.Ja(b);0<g&&(fc(a.g,g),a.B+=g,gc(a.g,g,!0),hc(a.g,g),a.ha++)}catch(f){"number"!=typeof f&&(a.B=0,Da(a.g,f.stack||f.message))}!1!==d&&(a.ga&&a.ga.stop(),K(a.C,-1));$c(a,c||!1,e);return 0<a.B}l.S=function(a){this.g&&this.g.S(a)};function $c(a,b,c){a.xa&&(void 0===b&&(b=!0),c&&a.f(Ee+c),a.J=X(a.g.u),b&&1!=a.M?Fe(a):Ge(a))}
|
||||
function Ce(a,b){var c;(c=!a.g||!Ka(a.g))||(c=a.g,c.j.W?c=!0:(c.f(c.toString()+" not powered"),c=!1),c=!c);return c||a.g.j.K?(b||a.f("cpu busy or unavailable, command ignored"),!1):!Ja(a.g)}l.na=function(a,b){return!b&&(this.reset(!0),a)?this.restore(a):!0};l.ea=function(a,b){b&&this.f(a?"suspending":"shutting down");return a?this.save():!0};l.reset=function(a){Pd(this);this.ha=0;this.U=null;this.B=0;this.J=X(this.g.u);this.j.K=!1;He(this);a||$c(this)};
|
||||
l.save=function(){var a=new J(this);a.set(0,Rd(this.J));a.set(1,Rd(this.O));a.set(2,[this.u,this.P,this.X]);a.set(3,this.I);return a.data()};l.restore=function(a){var b=0;void 0!==a[2]&&(this.J=Sd(this,a[b++]),this.O=Sd(this,a[b++]),this.u=a[b][0],"string"==typeof this.u&&(this.u=[this.u]),this.P=a[b][1],this.X|=a[b][2]);a[3]&&(this.I=a[3]);return!0};l.start=function(a,b){this.M||this.f("running");this.j.K=!0;this.ya=a;this.za=b};
|
||||
l.stop=function(a,b){if(this.j.K){this.j.K=!1;this.B=b-this.za;if(!this.M){b="stopped";if(this.B){a-=this.ya;var c=0<a?Math.round(1E3*this.B/a):0;b+=" (";pd(this)&&(b+=this.ha+" instructions, ",this.ha=0);b+=this.B+" cycles, "+a+" ms, "+c+" hz)"}else Na(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.f(b)}$c(this,!0);ad(this);He(this,this.g.u);this.U=null}};function pd(a){return 1<a.b.length||!!a.ia}
|
||||
function qd(a,b,c){var d=-1;c||(d=a.g.H(b),2756==d>>23&&a.g.qa==b&&(b=od(a.g,1)));if(0<c&&(a.ia&&!--a.ia||Uc(a,b,1,a.b)))return!0;0<=c&&a.i.length&&(a.ha++,0>d&&(d=a.g.H(b)),0<=d&&(c=a.i[a.R],c.w=b,c.ma=!1,c.da=void 0,++a.R==a.i.length&&(a.R=0)));return!1}
|
||||
function Ie(a,b,c,d){var e=X(b.w),g=a.Ca(b,1),f,h,k,m=0,n=g/Lb|0,r;for(r in Je)if(f=Je[r][n&r]){h=+r;n>>=6;switch(h){case 32512:k=Ke;m=n&3;break;case 32256:k=Le;m=n&7;break;case 29248:k=Me,m=(n&48)>>2|(n&6)>>1}break}k=k&&k[m]||"";"S"==k&&f>Ne&&(k="B");k=Oe[f||0]+k;k=Xa(k,8);f?(k=28700==h?k+N(a,g/Mb&127,-1):k+N(a,g>>23&15,-1),k+=",",g&4194304&&(k+="@"),k+=N(a,g&262143,-1),(g=g>>18&15)&&(k+="("+N(a,g,-1)+")")):k+=Vd(g);g=k;f="";h=N(a,e.w)+":";if(-1!==e.w&&-1!==b.w){do if(k=a.Ca(e,1),f+=" "+Vd(k),null==
|
||||
e.w)break;while(e.w!=b.w)}h+=Xa(f,16)+g;c&&(h=Xa(h,60)+";"+(c||""),h=a.g.j.Ea?h+("cycles="+cd(a.g).toString()+" cs="+F(a.g.sa)):h+(null!=d?"="+d.toString():""));return h}function Od(a){var b,c;a.b=["bp"];if(a.L)for(b=1;b<a.L.length;b++){c=a.L[b];c=Y(c);var d=a.D;Tc(d.b[c>>>d.i],!1)}a.L=["br"];if(a.F)for(b=1;b<a.F.length;b++)c=a.F[b],c=Y(c),d=a.D,Tc(d.b[c>>>d.i],!0);a.F=["bw"];a.qa=0;a.ia=0}
|
||||
l.Ba=function(a,b,c){var d=!0;c||Pe(this,a,b,!1,!0);if(a!=this.b){var e=Y(b);if(-1===e)this.f("invalid address: "+N(this,b.w)),d=!1;else{var g=this.D;g.b[e>>>g.i].Ba(e&16383,a==this.F)}}d&&(a.push(b),c?b.ma=!0:(Qe(this,a,a.length-1,"set"),Pd(this)));return d};function Pe(a,b,c,d,e){var g=!1;c=Y(c);for(var f=1;f<b.length;f++){var h=b[f];if(c==Y(h)&&(!d||h.ma)){g=!0;h.ma||e||Qe(a,b,f,"cleared");b.splice(f,1);b!=a.b&&(d=a.D,Tc(d.b[c>>>d.i],b==a.F));h.ma||Pd(a);break}}return g}
|
||||
function Re(a,b){for(var c=1;c<b.length;c++)Qe(a,b,c);return b.length-1}function Qe(a,b,c,d){c=b[c];a.f(b[0]+" "+N(a,c.w)+(d?" "+d:c.Pa?' "'+c.Pa+'"':""))}function He(a,b){if(void 0!==b)Uc(a,b,1,a.b,!0),a.M=0;else for(b=1;b<a.b.length;b++){var c=a.b[b];if(c.ma){if(!Pe(a,a.b,c,!0))break;b=0}}}
|
||||
function Uc(a,b,c,d,e){var g=!1;if(!a.qa++)for(var f=1;!g&&f<d.length;f++){var h=d[f];if(!e||h.ma)for(var k=Y(h)&(d==a.b?65535:-1),m=0;m<c;m++)if(b+m==k){var n,g=!0;h.ma&&(Pe(a,d,h,!0),e=!0);if(n=h.gb){for(var g=!1,r=0;r<n.length;r++)if(!Se(a,n[r],!0)){if(n[r].indexOf("if")){g=!0;break}for(var x=r+1;x<n.length&&n[x].indexOf("else");x++)r++;if(x==n.length){g=!0;break}}a.g.j.K||(g=!0)}if(g){e||Qe(a,d,f,"hit");break}}}a.qa--;return g}
|
||||
function Te(a,b){var c=Wd[b]||"";c&&(c+="="+N(a,a.Xa(b))+" ");return c}l.jb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};function yd(a,b,c,d,e){var g=[],f;for(f in e){var h=e[f];"number"==typeof h&&(e[f]=h={o:h});var k=h.o,m=h.a;if(void 0!==k){var n=g,k=[k>>>0,f],r=Za(n,k,a.jb);0>r&&n.splice(-(r+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.I.push({dd:b,w:c,zb:d,V:e,hb:g})}
|
||||
function Ue(a,b,c){var d=[],e=Y(b)>>>0;for(b=0;b<a.I.length;b++){var g=a.I[b],f=g.w>>>0,h=g.zb;if(e>=f&&e<f+h){e=Za(g.hb,[e-f],a.jb);0<=e?Ve(a,b,e,d):c&&(e=~e,Ve(a,b,e-1,d),Ve(a,b,e,d));break}}return d}function Ve(a,b,c,d){var e={},g=a.I[b].hb,f=0,h=null;0<=c&&c<g.length&&(f=g[c][0],h=g[c][1]);h&&(e=a.I[b].V[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(f);d.push(e.a);d.push(e.c)}
|
||||
function We(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Md(a)||a.f("no variables"),!0;if(!c[2])return Md(a,c[1]);if(!c[3])return delete a.aa[c[1]],!0;b=Hd(a,c[3]);return void 0!==b?(a.aa[c[1]]=b,!0):!1}a.f("invalid assignment:"+b);return!1}
|
||||
function Xe(a,b,c){var d=null;if(b=Z(a,b,!0)){var e=Ue(a,b,!0);if(e.length){var g,f;e[0]&&(f="",(g=b.w-e[1])&&(f=" + "+F(g,4,!0)),g=e[0]+" ("+N(a,e[1])+")"+f,c&&a.f(g),d=g);4<e.length&&e[4]&&(f="",(g=e[5]-b.w)&&(f=" - "+F(g,4,!0)),g=e[4]+" ("+N(a,e[5])+")"+f,c&&a.f(g),d||(d=g))}else c&&a.f("no symbols")}return d}
|
||||
function Fe(a,b){var c;if(b&&"?"==b[1])a.f("register commands:"),a.f("\tr\tdump registers"),a.f("\trm\tdump misc registers"),a.f("\trx [#]\tset flag or register x to [#]");else{var d=!1,e=a.g;null==c&&(c=!0);if(b&&1<b.length){var g=b[1];if("m"==g)d=!0;else{var f=g.indexOf("=");if(0<f)b=g.substr(f+1),g=g.substr(0,f);else if(2<b.length)b=b[2];else{a.f("missing value for "+b[1]);return}f=Hd(a,b);if(void 0===f)return;switch(g.toUpperCase()){case "PC":e.u=f%Ib;a.J=X(e.u);break;default:a.f("unknown register: "+
|
||||
g);return}K(a.C);a.f("updated registers:")}}g=""+(Te(a,Yd)+Te(a,Zd));d&&(g+="\n");a.f(g);c&&(a.J=X(e.u),Ge(a,N(a,a.J.w)))}}function Ye(a,b){b=Ya(b);var c=b.match(/^(['"])(.*?)\1$/);c?1<c[2].length?a.f(c[2]):Ld(a,null,c[2].charCodeAt(0)):Hd(a,b,!0)}
|
||||
function Ze(a,b,c){if("?"==c)a.f("trace commands:"),a.f("\tt [#]\ttrace # instructions"),a.f("\ttr [#]\ttrace # instructions with register updates"),a.f("\ttc [#]\ttrace # cycles"),a.f("note: bn [#] breaks after # instructions without updates");else{var d="t"!=b;c=Jd(a,c,null,!0)||1;var e=0;"tc"==b&&(e=c,c=1);a.sa=b;rb(c,function(){return Ma(a,!0)&&ec(a,e,d,!1)},function(){a.ga&&a.ga.stop();K(a.C,-1);Ma(a,!1)})}}
|
||||
function Ge(a,b,c,d){if(b=Z(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=Jd(a,c.substr(1)),null!=c&&(d=c);else{d=Z(a,c,!0);if(!d||d.w<b.w)return;e=d.w-b.w;if(256<e){a.f("range too large");return}d=-1}c=0;for(var g;0<e&&d--;){g=La(a,!1)||a.M?a.B:null;var f=null!=g?"cycles":null,h=Ue(a,b),k=b.w;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.f(m)}h[3]&&(f=h[3],g=null);g=Ie(a,b,f,g);a.f(g);a.J=b;e-=b.w-k;c++}}}
|
||||
function Se(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.f(Ee+b):(a.P&&(a.f("ended assemble at "+N(a,a.O.w)),a.J=a.O,a.P=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.U=null;if(Ka(a)&&0<b.length){a.P&&(b="a "+N(a,a.O.w)+" "+b);var g=!1,f=b.replace(/ +/g," ").split(" ");f[0]=f[0].toLowerCase();if(f&&f.length)for(var h=f[0],k=h.charAt(0),m=1;m<h.length;m++){var n=h.charAt(m);if("?"==k||"r"==k||"a">n||"z"<n){f[0]=h.substr(m);f.unshift(h.substr(0,m));break}}switch(f[0].charAt(0)){case "a":var r=
|
||||
Z(a,f[1],!0);if(r)if(a.O=r,void 0===f[2])a.f("begin assemble at "+N(a,r.w)),a.P=!0,K(a.C);else{var x;a.f("not supported yet");x=[];if(x.length){for(var S=0;S<x.length;S++)a.$a(r,x[S],1);a.f(Ie(a,a.O))}}break;case "b":a:{var Bf=f[0],Ea=f[1],Cf=b;if("?"==Ea)a.f("breakpoint commands:"),a.f("\tbp #\tset exec breakpoint"),a.f("\tbr #\tset read breakpoint"),a.f("\tbw #\tset write breakpoint"),a.f("\tbc #\tclear breakpoint (* to clear all)"),a.f("\tbl\tlist all breakpoints"),a.f("\tbn [#]\tbreak after # instruction(s)");
|
||||
else{var ma=Bf.charAt(1);if("l"==ma){var rc;rc=0+Re(a,a.b);rc+=Re(a,a.L);(rc+=Re(a,a.F))||a.f("no breakpoints")}else if("n"==ma){var be=+Ea||0;Ea&&(a.ia=be);a.f("break after "+be+" instruction(s)")}else if(void 0===Ea)a.f("missing breakpoint address");else{var G=X();if("*"!=Ea&&(G=Z(a,Ea,!0),!G))break a;"c"==ma?null==G.w?(Od(a),a.f("all breakpoints cleared")):Pe(a,a.b,G)||Pe(a,a.L,G)||Pe(a,a.F,G)||a.f("breakpoint missing: "+N(a,G.w)):null!=G.w&&(Ud(a,G,Cf),"p"==ma?a.Ba(a.b,G):"r"==ma?a.Ba(a.L,G):
|
||||
"w"==ma?a.Ba(a.F,G):a.f("unknown breakpoint command: "+ma))}}}break;case "c":a.la&&(a.la.value="");break;case "d":a:{var Fa,Ga=f[0],T=f[1],ea=f[2],Df=f[3];if("?"==T){var Ha="";for(Fa in I)a.pa[Fa]&&(Ha&&(Ha+=","),Ha+=Fa);Ha+=",state,symbols";a.f("dump memory commands:");a.f("\tdw [a] [n] dump n words at address a");a.f("\tds [a] [n] dump n words at address a as JSON");a.f("\tdh [p] [n] dump n instructions from history position p");Ha.length&&a.f("dump extension commands:\n\t"+Ha)}else if("state"==
|
||||
T){var sc=$e(a.C,!0);"console"==ea?console.log(sc):(a.la&&(a.la.value=""),sc&&a.f(sc))}else if("symbols"==T)for(var tc=0;tc<a.I.length;tc++){var uc=a.I[tc],Ia;for(Ia in uc.V)if("."!=Ia.charAt(0)){var ce=uc.V[Ia].o;if(void 0!==ce){var de=uc.V[Ia].l;de&&(Ia=de);a.f(N(a,ce)+" "+Ia)}}}else{if("d"==Ga){for(Fa in I)if(f[1]==Fa){var ee=a.pa[Fa];ee?(f.shift(),f.shift(),ee(f)):a.f("no dump registered for "+T);break a}T||(Ga=a.Da||"dw")}else a.Da=Ga;if("dh"==Ga){var fe=T,ge=ea,he="",ie=0,P=a.R,U=a.i;if(U.length){var L=
|
||||
+fe||a.ra,$a=+ge||10;isNaN(L)?L=$a:he="more ";L>U.length&&(a.f("note: only "+U.length+" available"),L=U.length);P-=L;0>P&&(null==U[U.length-1].w?(L=P+L,P=0):P+=U.length);var vc=[];"call"==ge&&($a=1E5,vc=["CALL"]);for(void 0!==fe&&a.f(L+" instructions earlier:");0<$a&&P!=a.R;){var je=U[P++];if(null==je.w)break;var ab=X(je.w),Ef=L--,ke=Ie(a,ab,"history",Ef);(!vc.length||0<=ke.indexOf(vc[0]))&&a.f(ke);ab.Wa&&(P+=ab.Wa,$a-=ab.Wa,L-=ab.Wa);P>=U.length&&(P=0);a.ra=L;ie++;$a--}}ie||(a.f("no "+he+"history available"),
|
||||
a.ra=void 0)}else{var na=Z(a,T);if(na){var oa=0,le="ds"==Ga;if(ea){if("l"==ea.charAt(0))ea=ea.substr(1)||Df,oa=Jd(a,ea);else{var me=Z(a,ea);me&&(oa=me.w-na.w)}0>oa&&(oa=0);65536<oa&&(oa=65536)}var Ff=a.da;na.da&&(a.da=na.da);for(var ne="db"==Ga?1:2,wc=oa||32,xc=1==ne?2:4,Gf=(wc+xc-1)/xc|0||1,pa="";Gf--&&0<wc;){for(var qa="",oe="",T=N(a,na.w),pe=xc;0<pe--&&0<wc--;){var Db=a.Ca(na,1);le?(qa&&(qa+=","),qa+=Db):(qa+=Vd(Db),qa+=" ");for(var qe=0;1==ne&&6>qe;qe++)oe+=String.fromCharCode((Db%64|0)+32),
|
||||
Db/=64}pa&&(pa+="\n");pa=le?pa+(qa+","):pa+(T+": "+qa+(0>pe?" "+oe:""))}pa&&a.f(pa);a.ua=na;a.da=Ff}}}}break;case "e":if("else"==f[0])break;var re,se,te=f[0],yc=f[1];"e"==te||"ew"==te?(re=a.Ca,se=a.$a):yc=null;if(null==yc)a.f("edit memory commands:"),a.f("\tew [a] [...] edit words at address a");else{var Eb=Z(a,yc);if(Eb)for(var Fb=2;Fb<f.length;Fb++){var zc=Hd(a,f[Fb]);if(void 0===zc){a.f("unrecognized value: "+f[Fb]);break}a.f("changing "+N(a,Eb.w)+" from "+Vd(re.call(a,Eb))+" to "+Vd(zc));se.call(a,
|
||||
Eb,zc,1)}}break;case "g":a:{var ue=f[1],Hf=b;if(void 0!==ue){var Ac=Z(a,ue,!0);if(!Ac)break a;Ud(a,Ac,Hf);a.Ba(a.b,Ac,!0)}ae(a,!0,c)}break;case "h":a.j.K?(c||a.f("halting"),a.S()):La(a,!0)||c||a.f("already halted");break;case "i":if("if"==f[0]){var Bc;var bb=b.substr(2),bb=Ya(bb);Hd(a,bb)?(c||a.f("true: "+bb),Bc=!0):(c||a.f("false: "+bb),Bc=!1);Bc||(d=!1);break}g=!0;break;case "k":var If=f[0];if("?"==f[1])a.f("stack trace commands:"),a.f("\tk\tshow frame addresses"),a.f("\tks\tshow symbol information");
|
||||
else{var Cc=0,Dc=X(),cb=X();for(a.f("stack trace for "+N(a,cb.w));10>Cc;){for(var ra=null,Jf=256;65536>cb.w>>>0;){Dc.w=a.Ca(cb,2);if(null==cb.w||!Jf--)break;if(!(Dc.w&1)){for(var Kf=a,Gb=Dc,ve=null,db=Gb.w,we=db,Ec=1;6>=Ec&&db;Ec++){if(2<Ec){Gb.w=db;var Hb=Ie(Kf,Gb);if(0<=Hb.indexOf("JSR")){var xe=Hb.indexOf(" ");if(db+(Hb.indexOf(" ",xe+1)-xe-1)/2==we){ve=Hb;break}}}db-=2}Gb.w=we;if(ra=ve)break}}if(!ra||null==ra)break;var ye=null;if("ks"==If){var ze=ra.match(/[0-9A-F]+$/);ze&&(ye=Xe(a,ze[0]))}ra=
|
||||
Xa(ra,50)+" ;"+(ye||"stack="+N(a,cb.w));a.f(ra);Cc++}Cc||a.f("no return addresses found")}break;case "l":if("ln"==f[0]){Xe(a,f[1],!0);break}g=!0;break;case "m":a:{var V,W=null,z=f[1];"?"==z&&(z=void 0);if(void 0!==z){var fa=0;if("all"==z)fa=1879046143,z=null;else if("on"==z)W=!0,z=null;else if("off"==z)W=!1,z=null;else{"keys"==z&&(z="key");"kbd"==z&&(z="keyboard");for(V in I)if(z==V){fa=I[V];W=!!(a.X&fa);break}if(!fa){a.f("unknown message category: "+z);break a}}if(fa)if("on"==f[2])a.X|=fa,W=!0;
|
||||
else if("off"==f[2]&&(a.X&=~fa,W=!1,1073741824==fa)){for(var Ae=1E3<=a.N.length?a.N.length-1E3:0;Ae<a.N.length;)a.f(a.N[Ae++]);a.N=[]}}var Lf=0,eb="";for(V in I)if(!z||z==V){var Mf=!!(a.X&I[V]);if(null===W||W==Mf)eb&&(eb+=","),++Lf%10||(eb+="\n\t"),"key"==V&&(V="keys"),eb+=V}void 0===z&&a.f("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.f((null!==W?W?"messages on: ":"messages off: ":"message categories:\n\t")+(eb||"none"));Pd(a)}break;case "p":if("print"==f[0]){Ye(a,b.substr(5));
|
||||
break}var Nf=f[0];if("?"==f[1])a.f("step commands:"),a.f("\tp\tstep over instruction"),a.f("\tpr\tstep over instruction with register update");else{var Of="pr"==Nf?1:0;if(a.M)a.f("step in progress");else{var Be=X(a.g.u);a.Ca(Be);a.M?(a.Ba(a.b,Be,!0),ae(a)||(a.C&&gd(a.C),a.M=0)):Ze(a,Of?"tr":"t")}}break;case "r":if("reset"==b){a.C&&a.C.reset();break}Fe(a,f);break;case "s":a:switch(f[1]){case "base":if(f[2]){var fb=+f[2];if(8==fb||10==fb||16==fb)a.da=fb;else{a.f("invalid base: "+fb);break}}a.f("default base: "+
|
||||
a.da);break;case "cs":var gb;void 0!==f[3]&&(gb=+f[3]);switch(f[2]){case "int":a.g.ca=gb;break;case "start":a.g.ta=gb;break;case "stop":a.g.ha=gb;break;default:a.f("unknown cs option");break a}void 0!==gb&&Zc(a.g);a.f("checksums "+(a.g.j.Ea?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(dd(a.g,+f[2])||a.f("warning: using 1x multiplier, previous target not reached"));a.f("target speed: "+(a.g.R.toFixed(2)+"Mhz")+" ("+a.g.U+"x)");break;default:if(f[1]){a.f("unknown option: "+f[1]);break}case "?":a.f("debugger options:"),
|
||||
a.f("\tbase #\t\tset default base to #"),a.f("\tcs int #\tset checksum cycle interval to #"),a.f("\tcs start #\tset checksum cycle start count to #"),a.f("\tcs stop #\tset checksum cycle stop count to #"),a.f("\tsp #\t\tset speed multiplier to #")}break;case "t":Ze(a,f[0],f[1]);break;case "u":Ge(a,f[1],f[2],8);break;case "v":if("var"==f[0]){We(a,b.substr(3))||(d=!1);break}if("ver"==f[0]){a.f((Cb||"PDP10")+" version 1.34.0 ("+a.g.eb+",RELEASE)");a.f(window?window.navigator.userAgent:"");break}g=!0;
|
||||
break;case "?":if(f[1]){Ye(a,b.substr(1));break}var Fc="commands:",Gc;for(Gc in af)Fc+="\n"+Xa(Gc,9)+af[Gc];pd(a)||(Fc+="\nnote: history disabled if no exec breakpoints");a.f(Fc);break;default:g=!0}g&&(a.f("unknown command: "+b),d=!1)}}catch(De){a.f("debugger error: "+(De.stack||De.message)),d=!1}return d}function bd(a,b,c){b=Fd(a,b,c);for(var d in b)if(!Se(a,b[+d]))return!1;return!0}
|
||||
var af={"?":"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"},Ne=20,Oe=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOV 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 CA 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".split(" "),
|
||||
Xd=0,Yd=1,Zd=2,Wd=["PC","RA","EA"],bf={},Je=(bf[28672]={0:101},bf[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},bf[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Ne,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},bf[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},bf[29248]={24576:79,24640:80,25088:81,25152:82},bf[28700]={28672:93,28676:94,28680:95,28684:96,28688:97,28692:98,28696:99,28700:100},bf),Ke=["","I",
|
||||
"M","S"],Le=" L E LE A GE N G".split(" "),Me="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),$d=1E3,Ee=">> ";ub(function(){for(var a=D(document,C,"debugger"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Nd(d);B(d,c)}});
|
||||
function cf(a,b,c){t.call(this,"Computer",a,33554432);this.j.W=!1;this.P=null;df(this,b);this.N=Xc(this,"autoPower",a,6);this.v=0;this.aa=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.J=this.U=!1;this.I=this.B=null;this.R=this.O=!1;this.ca=Xc(this,"url")||"";(Math.random()+.1).toString(36);this.i=ef(this);if(this.g=y("CPU",this.id)){this.A=y("Debugger",this.id);this.D=new lc({id:this.La+".bus",busWidth:this.aa},this.g,this.A);var d,e=w(this.id);if((this.u=y("Panel",this.id))&&this.u.la)for(b=
|
||||
0;b<e.length;b++)d=e[b],d.ba=this.u.ba,d.f=this.u.f,d.la=this.u.la;this.f(Cb+" v1.34.0\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.va&&d.va(this,this.D,this.g,this.A);b=null;d=Xc(this,"resume",a);void 0!==d&&(1<d.length?b=this.F=d:this.b=parseInt(d,10));var g;if(a=Xc(this,"state")||(g=!0,a.state))this.M=b=a,g||(this.J=!0,this.b=ff),this.b&&(this.I=new J(this,"1.34.0"),gf(this.I)?b=null:
|
||||
delete this.I);!b&&this.b&&(b=hf(this))&&(this.J=!0);if(b){var f=this;ib(b,null,!0,function(a,b,c){c?(f.F=null,f.J=!1,f.ba("Unable to load machine state from server (error "+c+(b?": "+Ya(b):"")+")")):(f.L=b,f.U=!0);E(f)})}else E(this);this.G.power||(this.N=!0);!c&&this.N&&jf(this,this.Ga)}else v("Unable to find CPU component")}p(cf,t);function df(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){v(d.message+" ("+c+")")}}a.P=b}
|
||||
function Xc(a,b,c,d){var e=b.toLowerCase(),e=pb(b)||pb(e);void 0===e&&a.P&&(e=a.P[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 jf(a,b,c){for(var d=w(a.id),e=0;e<=d.length;e++){var g=e<d.length?d[e]:a;if(!Ka(g)){Ka(g,function(){jf(a,b,c)});return}}b.call(a,c)}
|
||||
function kf(a,b){var c=new J(a,"1.34.0",lf);if(gf(c)&&mf(c)){var d=c.get(nf),e=b?b.get(nf):"unknown";d!=e&&(a.ba("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=cf.prototype;
|
||||
l.Ga=function(a){void 0===a&&(a=this.b||(this.L?of:ff));if(!this.v){this.v++;var b=!1,c=!1;this.O=!1;var d=this.I||new J(this,"1.34.0");if(a==pf)b=!0;else if(a>ff){if(gf(d,this.L)){this.B=new J(this,"1.34.0",qf);gf(this.B)&&(rf(this,d),a=sf,tf(this.B));this.B.set(nf,hb());uf(this.B);var e=this.b&&!this.J;if(a==of||wa("Click OK to restore the previous "+Cb+" machine state, or CANCEL to reset the machine.")){if(c=mf(d)){var g=d.get("code"),f=d.get("data");g&&("ok"==g?gf(d,f):("error"==g&&"no machine state"!=
|
||||
f?(this.ba("Error: "+f),"unable to verify user"==f&&(nb(vf,""),this.i=null)):this.f(g+": "+f),tf(d),gf(d)?(c=mf(d),e=!0):c=!1))}e&&kf(this,c?d:null)}else a==sf&&d.clear()}else kf(this);delete this.L;delete this.I}e=w(this.id);for(g=0;g<e.length;g++)f=e[g],f!==this&&f!=this.g&&(c=wf(this,f,d,b,c));b=[d,a,c];a!=pf?jf(this,this.kb,b):this.kb(b)}};
|
||||
function wf(a,b,c,d,e){if(!b.j.W){b.j.W=!0;var g=null;try{if(e&&((g=c.get(b.id))||(g=c.get(b.id.replace(/[a-z0-9]\./i,".")))),"string"===typeof g&&(g=null),!b.na(g,d)&&g&&(v("Unable to restore state for "+b.type),a.M&&!a.U?(c.clear(),a.b=ff,window&&window.location.reload()):a.O=!0,b.na(null),e=!1),!d&&b.cb){var f=b.cb.split("|");for(a=0;a<f.length;a++)b.status(f[a])}}catch(h){v("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
|
||||
l.kb=function(a){var b=a[0],c=0>a[1];a=a[2];this.R=!0;this.j.W=!0;var d=this.G.power;d&&(d.textContent="Shutdown");this.g&&(wf(this,this.g,b,c,a),K(this,-2),this.g.Z());this.O&&(rf(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B);this.v=0};
|
||||
function rf(a,b){if(wa("There may be a problem with your "+Cb+" machine.\n\nTo help us diagnose it, click OK to send this "+Cb+" machine state to http://www.pcjs.org.")){var c=a.ca;a=a.i||"";b=b.toString();var d={};d.app=Cb;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;ib("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function $e(a,b,c){var d,e="none";if(a.v)return null;a.v--;var g=new J(a,"1.34.0"),f=new J(a,"1.34.0",lf),h=hb();f.set(nf,h);g.set(nf,h);g.set(xf,"1.34.0");g.set(yf,window?window.location.href:null);g.set(zf,window?window.navigator.userAgent:"");a.g&&a.g.ea&&(c&&(b&&(a.g.j.Z=a.g.j.K),a.g.S()),d=a.g.ea(b,c),"object"===typeof d&&g.set(a.g.id,d),c&&(a.g.j.W=!1,!1===d&&(e=null)));for(var h=w(a.id),k=0;k<h.length;k++){var m=h[k];m.j.W&&(m.ea&&(d=m.ea(b,c),"object"===typeof d&&g.set(m.id,d)),c&&(m.j.W=
|
||||
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.i&&Af(a,a.i,g.toString()),uf(f)&&uf(g)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Pf),d&&g.clear(h)):e=g.toString());c&&(a.j.W=!1,b=a.G.power)&&(b.textContent="Power");a.v=0;return e}
|
||||
l.reset=function(){this.j.reset=!0;this.D&&this.D.reset&&(Oa(this,"Resetting "+this.D.type),this.D.reset());this.g&&this.g.reset&&(Oa(this,"Resetting "+this.g.type),this.g.reset());for(var a=w(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.D&&c!==this.g&&c.reset&&(Oa(this,"Resetting "+c.type),c.reset())}this.j.reset=!1;K(this,-1)};l.start=function(a,b){for(var c=w(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}K(this,-1)};
|
||||
l.stop=function(a,b){for(var c=w(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}K(this,-1)};
|
||||
function K(a,b){if(a.g){var c=a.g,d=b||0,e=c.G.speed;e&&(0>=d||30<=(c.Da+=d))&&(e.textContent=c.j.J?c.O.toFixed(2)+"Mhz":"Stopped",c.Da=0)}if(a.u&&(a=a.u,b=b||0,a.K)){c=a.g.j.J;d=!!(a.g.u&8);if(0>=b||60<=(a.I+=b)){e=a.g.i;if(a.G.PC){var g=a.A&&a.A.ca||8,e=e||0,e=8==g?Qa(e,void 0):F(e,void 0);a.G.PC.textContent!=e&&(a.G.PC.textContent=e)}a.I=0}-1>b?a.i=a.g.i:0<b&&c&&!d&&(a.i=a.g.oa);Vb(a,a.i);Pb(a,a.w)}}
|
||||
l.ea=function(a,b,c){var d=this;switch(b){case "power":return this.G[b]=c,c.onclick=function(){d.w||(d.j.U?Ye(d,!1,!0):gf(d,d.Ga))},!0;case "reset":return this.G[b]=c,c.onclick=function(){if(d.j.U&&!d.w)if(d.b&&!d.F){var a=wa("Click OK to save changes to this "+Bb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Ye(d,a,!0);!a&&d.L?window&&window.location.reload():d.Ga(df)}else d.reset(),d.g&&!d.A&&d.g.X()},!0;case "save":if(Ta())c.parentNode.removeChild(c);else return this.G[b]=
|
||||
c,c.onclick=function(){var a=cf(d,!0);if(a){var b=!!(d.b&&!d.F||d.L),c=Ye(d,b);b?yf(d,a,c):d.Z("Resume disabled, machine state not saved")}},!0}return!1};function cf(a,b){var c=a.i;c||((c=lb(tf),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=Of(a,c))||a.Z("The user ID is invalid.")):b&&a.Z("Browser local storage is not available"));return c}
|
||||
function Of(a,b){a.i=null;b=H(Ua()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(mb(tf,b.data),a.i=b.data)}catch(d){v(d.message+" ("+c+")")}return a.i}function ff(a){var b=null;a.i&&(b=Ua()+"/api/v1/user?req=load&user="+a.i+"&state="+Pf(a,"1.34.0"));return b}
|
||||
function yf(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Pf(a,"1.34.0");d.data=c;b=H(Ua()+"/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.Z("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.Z(c),mb(tf,""),a.i=null)}}
|
||||
function fd(a,b){if(a.ka){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a.ka.focus();!b&&window&&window.scrollTo(c,d)}}var of="failsafe",jf="validate",lf="timestamp",vf="version",wf="url",xf="browser",tf="user",nf=-1,df=0,mf=1,qf=2,Nf=3;tb(function(){for(var a=D(document,C+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=D(c,C,"computer"),e=0;e<c.length;e++){var g=c[e],f=A(g),f=new af(f,d,!0);B(f,g);f.M&&gf(f,f.Ga)}});
|
||||
ub.show.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=y("Computer",c.id))&&c.P&&!c.j.U&&c.Ga(nf)}});ub.exit.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=y("Computer",c.id))&&c.j.U&&Ye(c,!(!c.b||c.F),!0)}});function J(a,b,c){this.id=a.id;this.g="";this.b={};this.A=this.C=!1;this.key=Pf(a,b,c);rf(this,a.tb)}l=J.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 ef(a,b){return b?(a.g=b,a.A=!0,a.C=!1,!0):a.A?!0:jb()&&(b=lb(a.key))?(a.g=b,a.A=!0):!1}function kf(a){var b=!0;if(!a.C)try{a.b=JSON.parse(a.g),a.C=!0}catch(c){v(c.message||c),b=!1}return b}function sf(a){var b=!0;if(jb()){var c=JSON.stringify(a.b);mb(a.key,c)||(v("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.g};
|
||||
function rf(a,b){a.g="";a.b={};a.A=a.C=!1;b&&a.set("parms",b)}l.clear=function(a){rf(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 Pf(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 Qf=0;
|
||||
function Rf(a,b,c,d,e,g,f){g("Loading "+a+"...");H(a,null,!0,function(h,k,m){m?(k||(k="unable to load "+a+" ("+m+")"),f(k,null)):Sf(k,a,b,c,d,e,g,f)})}
|
||||
function Sf(a,b,c,d,e,g,f,h){function k(a,f){if(f)h(f,null);else{c&&(ta(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1<e.length&&(e+=",")):e='{state:"'+e+'",':e="{",e+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(f?' url="'+f+'"':"")));g||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDPjs$2"),
|
||||
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1"+d+"$2"));f=null;if("<"==a.charAt(0))try{g||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){f=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,f)}}a?g?Tf(a,f,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Tf(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");H(e,null,!0,function(g,f,h){if(h||!f)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(g=d[3])if(h=f.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(g);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(f=f.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}f=f.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],f);Tf(a,b,c)}})}else c(a,null)}
|
||||
function Uf(a,b,c,d,e){function g(a){if(void 0===k){var b=h&&D(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Va(a))}function f(a){g("Error: "+a);m&&(--Qf||xb(!0));m=!1}var h,k,m=!0;Qf++;ua[b]={};try{if(h=document.getElementById(b)){var n;if("object"==typeof resources&&(n=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],x=document.createElement("style");x.type="text/css";x.styleSheet?x.styleSheet.cssText=n:x.appendChild(document.createTextNode(n));r.appendChild(x)}d||
|
||||
(n=a,"pdp"==a.substr(0,3)&&(n="pdpjs"),d="/versions/"+n+"/1.34.0/components.xsl");n=function(e,k){k?Rf(d,null,a,null,!1,g,function(a,e){e?(ta(b,d,a),g("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Qf||xb(!0)):f("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),--Qf||
|
||||
xb(!0)):f("invalid machine element: "+b):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(a)}):f(e)};"<"!=c.charAt(0)?Rf(c,b,a,e,!0,g,n):Sf(c,null,b,a,e,!1,g,n)}else f("missing machine element: "+b)}catch(R){f(R.message)}return m}window.embedPDP10=function(a,b,c,d){xb(!1);return Uf("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){xb(!1);return Uf("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return y(b,a+".machine")};
|
||||
window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!za[a]){for(var c=!0,d=za,e=a,g=b.length,f=[],h=[],k="",m=null,n=0;n<g;n++){var r=b[n];if('"'==r||"'"==r)m&&r!=m?k+=r:(m?m=null:m=r,k&&(h.push(k),k=""));else{if(!m){if("\r"==r||"\n"==r)r=";";if(" "==r||"\t"==r||";"==r){k&&(h.push(k),k="");";"==r&&h.length&&(f.push(h),h=[]);continue}}k+=r}}k&&h.push(k);h.length&&f.push(h);d[e]=f;ya(a)||(c=!1)}return c};window.enableEvents=xb;window.sendEvent=zb;})();//# sourceMappingURL=/tmp/pdpjs/1.34.0/pdp10-dbg.map
|
||||
function K(a,b){if(a.g){var c=a.g,d=b||0,e=c.G.speed;e&&(0>=d||30<=(c.Da+=d))&&(e.textContent=c.j.K?c.P.toFixed(2)+"Mhz":"Stopped",c.Da=0)}if(a.u&&(a=a.u,b=b||0,a.L)){c=a.g.j.K;d=!!(a.g.v&8);if(0>=b||60<=(a.J+=b)){e=a.g.u;if(a.G.PC){var g=a.A&&a.A.da||8,e=e||0,e=8==g?Qa(e,void 0):F(e,void 0);a.G.PC.textContent!=e&&(a.G.PC.textContent=e)}a.J=0}-1>b?a.i=a.g.u:0<b&&c&&!d&&(a.i=a.g.pa);Wb(a,a.i);Qb(a,a.v)}}
|
||||
l.fa=function(a,b,c){var d=this;switch(b){case "power":return this.G[b]=c,c.onclick=function(){d.v||(d.j.W?$e(d,!1,!0):jf(d,d.Ga))},!0;case "reset":return this.G[b]=c,c.onclick=function(){if(d.j.W&&!d.v)if(d.b&&!d.F){var a=wa("Click OK to save changes to this "+Cb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");$e(d,a,!0);!a&&d.M?window&&window.location.reload():d.Ga(ff)}else d.reset(),d.g&&!d.A&&d.g.Z()},!0;case "save":if(Ta())c.parentNode.removeChild(c);else return this.G[b]=
|
||||
c,c.onclick=function(){var a=ef(d,!0);if(a){var b=!!(d.b&&!d.F||d.M),c=$e(d,b);b?Af(d,a,c):d.ba("Resume disabled, machine state not saved")}},!0}return!1};
|
||||
function ef(a,b){var c=a.i;c||((c=mb(vf),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=Qf(a,c))||a.ba("The user ID is invalid.")):b&&a.ba("Browser local storage is not available"));return c}
|
||||
function Qf(a,b){a.i=null;b=ib(Ua()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(nb(vf,b.data),a.i=b.data)}catch(d){v(d.message+" ("+c+")")}return a.i}function hf(a){var b=null;a.i&&(b=Ua()+"/api/v1/user?req=load&user="+a.i+"&state="+Rf(a,"1.34.0"));return b}
|
||||
function Af(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Rf(a,"1.34.0");d.data=c;b=ib(Ua()+"/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.ba("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.ba(c),nb(vf,""),a.i=null)}}
|
||||
function gd(a,b){if(a.la){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a.la.focus();!b&&window&&window.scrollTo(c,d)}}var qf="failsafe",lf="validate",nf="timestamp",xf="version",yf="url",zf="browser",vf="user",pf=-1,ff=0,of=1,sf=2,Pf=3;ub(function(){for(var a=D(document,C+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=D(c,C,"computer"),e=0;e<c.length;e++){var g=c[e],f=A(g),f=new cf(f,d,!0);B(f,g);f.N&&jf(f,f.Ga)}});
|
||||
vb.show.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=y("Computer",c.id))&&c.R&&!c.j.W&&c.Ga(pf)}});vb.exit.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=y("Computer",c.id))&&c.j.W&&$e(c,!(!c.b||c.F),!0)}});function J(a,b,c){this.id=a.id;this.g="";this.b={};this.A=this.C=!1;this.key=Rf(a,b,c);tf(this,a.tb)}l=J.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 gf(a,b){return b?(a.g=b,a.A=!0,a.C=!1,!0):a.A?!0:kb()&&(b=mb(a.key))?(a.g=b,a.A=!0):!1}function mf(a){var b=!0;if(!a.C)try{a.b=JSON.parse(a.g),a.C=!0}catch(c){v(c.message||c),b=!1}return b}function uf(a){var b=!0;if(kb()){var c=JSON.stringify(a.b);nb(a.key,c)||(v("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.g};
|
||||
function tf(a,b){a.g="";a.b={};a.A=a.C=!1;b&&a.set("parms",b)}l.clear=function(a){tf(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 Rf(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 Sf=0;
|
||||
function Tf(a,b,c,d,e,g,f){g("Loading "+a+"...");ib(a,null,!0,function(h,k,m){m?(k||(k="unable to load "+a+" ("+m+")"),f(k,null)):Uf(k,a,b,c,d,e,g,f)})}
|
||||
function Uf(a,b,c,d,e,g,f,h){function k(a,f){if(f)h(f,null);else{c&&(ta(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1<e.length&&(e+=",")):e='{state:"'+e+'",':e="{",e+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(f?' url="'+f+'"':"")));g||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDPjs$2"),
|
||||
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1"+d+"$2"));f=null;if("<"==a.charAt(0))try{g||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){f=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,f)}}a?g?Vf(a,f,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Vf(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");ib(e,null,!0,function(g,f,h){if(h||!f)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(g=d[3])if(h=f.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(g);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(f=f.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}f=f.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],f);Vf(a,b,c)}})}else c(a,null)}
|
||||
function Wf(a,b,c,d,e){function g(a){if(void 0===k){var b=h&&D(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Va(a))}function f(a){g("Error: "+a);m&&(--Sf||yb(!0));m=!1}var h,k,m=!0;Sf++;ua[b]={};try{if(h=document.getElementById(b)){var n;if("object"==typeof resources&&(n=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],x=document.createElement("style");x.type="text/css";x.styleSheet?x.styleSheet.cssText=n:x.appendChild(document.createTextNode(n));r.appendChild(x)}d||
|
||||
(n=a,"pdp"==a.substr(0,3)&&(n="pdpjs"),d="/versions/"+n+"/1.34.0/components.xsl");n=function(e,k){k?Tf(d,null,a,null,!1,g,function(a,e){e?(ta(b,d,a),g("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Sf||yb(!0)):f("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),--Sf||
|
||||
yb(!0)):f("invalid machine element: "+b):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(a)}):f(e)};"<"!=c.charAt(0)?Tf(c,b,a,e,!0,g,n):Uf(c,null,b,a,e,!1,g,n)}else f("missing machine element: "+b)}catch(S){f(S.message)}return m}window.embedPDP10=function(a,b,c,d){yb(!1);return Wf("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){yb(!1);return Wf("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return y(b,a+".machine")};
|
||||
window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!za[a]){for(var c=!0,d=za,e=a,g=b.length,f=[],h=[],k="",m=null,n=0;n<g;n++){var r=b[n];if('"'==r||"'"==r)m&&r!=m?k+=r:(m?m=null:m=r,k&&(h.push(k),k=""));else{if(!m){if("\r"==r||"\n"==r)r=";";if(" "==r||"\t"==r||";"==r){k&&(h.push(k),k="");";"==r&&h.length&&(f.push(h),h=[]);continue}}k+=r}}k&&h.push(k);h.length&&f.push(h);d[e]=f;ya(a)||(c=!1)}return c};window.enableEvents=yb;window.sendEvent=Ab;})();//# sourceMappingURL=/tmp/pdpjs/1.34.0/pdp10-dbg.map
|
||||
|
|
|
|||
|
|
@ -30,19 +30,19 @@
|
|||
*/
|
||||
var k,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)},m="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this;function ba(){ba=function(){};m.Symbol||(m.Symbol=ca)}var da=0;function ca(a){return"jscomp_symbol_"+(a||"")+da++}
|
||||
function ea(){ba();var a=m.Symbol.iterator;a||(a=m.Symbol.iterator=m.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return fa(this)}});ea=function(){}}function fa(a){var b=0;return ga(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function ga(a){ea();a={next:a};a[m.Symbol.iterator]=function(){return this};return a}
|
||||
function n(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 ia(a,b){if(b){var c=m;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})}}
|
||||
ia("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}});ia("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}});
|
||||
function n(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 ha(a,b){if(b){var c=m;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})}}
|
||||
ha("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}});ha("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}});
|
||||
var ja=Math.pow(2,36),ka=-Math.pow(2,35),q={Cb:0,Ra:1,Eb:2,Fb:3,Gb:4,Hb:5,Ib:6,Jb:7,Ja:8,Kb:9,Sa:10,Lb:11,Mb:12,Ta:13,Nb:14,Ob:15,Pb:16,Qb:17,Rb:18,Sb:19,Tb:20,Ub:21,Vb:22,Wb:23,Xb:24,Yb:25,Zb:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Ia:65,Bb:66,Db:67,$b:68,E:69,ac:70,bc:71,cc:72,dc:73,ec:74,fc:75,gc:76,hc:77,ic:78,jc:79,kc:80,Q:81,
|
||||
lc:82,mc:83,nc:84,oc:85,pc:86,qc:87,rc:88,sc:89,Ya:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,tc:97,uc:98,vc:99,d:100,e:101,wc:102,xc:103,yc:104,zc:105,Ac:106,k:107,Bc:108,Cc:109,n:110,Dc:111,p:112,q:113,r:114,Ec:115,t:116,Fc:117,Gc:118,Hc:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Ua:127};
|
||||
function t(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ma=b.comment;this.Xa=b;this.exports={};this.i=this.bindings={};a=this.id.indexOf(".");0>a?this.na=this.id:(this.oa=this.id.substr(0,a),this.na=this.id.substr(a+1));this.b={ready:!1,ta:!1,Ga:!1,w:!1,error:!1};this.wa=null;this.b.error=!1;this.o=this.f=this.l=this.m=this.ba=null;u.push(this)}function la(a,b,c){ma[a]&&b&&(ma[a][b]=c)}function w(){return Date.now()||+new Date}
|
||||
function t(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ma=b.comment;this.Xa=b;this.exports={};this.i=this.bindings={};a=this.id.indexOf(".");0>a?this.na=this.id:(this.oa=this.id.substr(0,a),this.na=this.id.substr(a+1));this.b={ready:!1,ta:!1,Ga:!1,B:!1,error:!1};this.wa=null;this.b.error=!1;this.s=this.f=this.l=this.o=this.ba=null;u.push(this)}function la(a,b,c){ma[a]&&b&&(ma[a][b]=c)}function w(){return Date.now()||+new Date}
|
||||
function x(a){window&&window.alert(a)}function na(a){var b=!1;window&&(b=window.confirm(a));return b}function y(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<u.length;b++){var d=u[b];a&&d.id.indexOf(a)||c.push(d)}return c}function oa(a){if(void 0!==a){var b;for(b=0;b<u.length;b++)if(u[b].id===a)return u[b]}return null}
|
||||
function z(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<u.length;d++)if(c)c==u[d]&&(c=null);else if(!(a!=u[d].type||b&&u[d].id.indexOf(b)))return u[d]}return null}function A(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){x(c.message+" ("+a+")")}return b}
|
||||
function B(a,b){var c=C;b=D(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 l=h.split(" "),p=0;p<l.length;p++)switch(h=l[p],h){case c+"-binding":(h=A(g))&&h.binding&&a.T(h.type,h.binding,g,h.value),p=l.length}}}}
|
||||
function B(a,b){var c=C;b=D(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 l=h.split(" "),p=0;p<l.length;p++)switch(h=l[p],h){case c+"-binding":(h=A(g))&&h.binding&&a.U(h.type,h.binding,g,h.value),p=l.length}}}}
|
||||
function D(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 pa(a){for(var b=!0,c=qa[a];c&&c.length;){var d=c.splice(0,1)[0],e=d[0],f=null;0<=ra.indexOf(e)&&(f=function(){return function(){pa(a)}}());var g=sa[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=z(d[1],a);if(h)if(g=ta[e])b=g(h,d[2],d[3]);else{var l=h.exports;if(l&&(g=l[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){x("Script error: "+e+(g?" failed":" unrecognized"));break}}c&&!c.length&&delete qa[a];return b}k=t.prototype;
|
||||
k.toString=function(){return this.name?this.name:this.id||this.type};
|
||||
k.T=function(a,b,c){switch(b){case "clear":return this.i[b]||(this.i[b]=c,c.onclick=function(a){return function(){a.i.print&&(a.i.print.value="")}}(this)),!0;case "print":return this.i[b]||(this.ba=this.i[b]=c,c.value="",this.I=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.C=function(a){this.I(a,this.na)}),!0;default:return!1}};k.log=function(){};k.I=function(){};
|
||||
k.status=function(a){this.I(this.na+": "+a)};k.C=function(a,b,c){c=c||this.type;b||x((c?c+": ":"")+a)};function ua(a,b){b&&(a.b.ready?b():a.wa=b);return a.b.ready}function E(a){if(!a.b.error&&(a.b.ready=!0,a.b.ready)){var b=a.wa;a.wa=null;b&&b()}}function va(a,b){a.b.Ga?(a.b.ta=!1,a.b.Ga=!1):a.b.error?a.I(a.toString()+" error"):a.b.ta=b}k.U=function(){return this.b.w=!0};k.O=function(a,b){b&&(this.b.w=!1);return!0};
|
||||
k.U=function(a,b,c){switch(b){case "clear":return this.i[b]||(this.i[b]=c,c.onclick=function(a){return function(){a.i.print&&(a.i.print.value="")}}(this)),!0;case "print":return this.i[b]||(this.ba=this.i[b]=c,c.value="",this.K=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.F=function(a){this.K(a,this.na)}),!0;default:return!1}};k.log=function(){};k.K=function(){};
|
||||
k.status=function(a){this.K(this.na+": "+a)};k.F=function(a,b,c){c=c||this.type;b||x((c?c+": ":"")+a)};function ua(a,b){b&&(a.b.ready?b():a.wa=b);return a.b.ready}function E(a){if(!a.b.error&&(a.b.ready=!0,a.b.ready)){var b=a.wa;a.wa=null;b&&b()}}function va(a,b){a.b.Ga?(a.b.ta=!1,a.b.Ga=!1):a.b.error?a.K(a.toString()+" error"):a.b.ta=b}k.V=function(){return this.b.B=!0};k.P=function(a,b){b&&(this.b.B=!1);return!0};
|
||||
window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]),window.PCjs.Commands||(window.PCjs.Commands={}));
|
||||
var ma=window?window.PCjs.Machines:{},u=window?window.PCjs.Components:[],qa=window?window.PCjs.Commands:{},ra=["hold","sleep","wait"],sa={alert:function(a){x(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},ta={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)});
|
||||
|
|
@ -52,53 +52,54 @@ function xa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf(
|
|||
function Da(){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 H(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 l="",p;for(p in b)b.hasOwnProperty(p)&&(l&&(l+="&"),l+=p+"="+encodeURIComponent(b[p]));l=l.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(l)}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 Ea(a,b){var c,d={F:null,L:null,S:null,R: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.S=g.load;d.R=g.exec;if(e=g.bytes)d.F=e;else if(e=g.words)for(d.F=Array(2*e.length),f=c=0;c<e.length;c++)d.F[f++]=e[c]&255,d.F[f++]=e[c]>>8&255;else if(e=g.longs)for(d.F=Array(4*e.length),f=c=0;c<e.length;c++)d.F[f++]=
|
||||
e[c]&255,d.F[f++]=e[c]>>8&255,d.F[f++]=e[c]>>16&255,d.F[f++]=e[c]>>24&255;else(e=g.data)?d.X=e:d.F=g;d.F&&(d.F.length?1==d.F.length&&(x(d.F[0]),d=null):(x("Empty resource: "+a),d=null));d.L=g.symbols}catch(h){x("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)){x("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.F=e)}return d}
|
||||
function Ea(a,b){var c,d={H:null,N:null,T:null,S: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.T=g.load;d.S=g.exec;if(e=g.bytes)d.H=e;else if(e=g.words)for(d.H=Array(2*e.length),f=c=0;c<e.length;c++)d.H[f++]=e[c]&255,d.H[f++]=e[c]>>8&255;else if(e=g.longs)for(d.H=Array(4*e.length),f=c=0;c<e.length;c++)d.H[f++]=
|
||||
e[c]&255,d.H[f++]=e[c]>>8&255,d.H[f++]=e[c]>>16&255,d.H[f++]=e[c]>>24&255;else(e=g.data)?d.Y=e:d.H=g;d.H&&(d.H.length?1==d.H.length&&(x(d.H[0]),d=null):(x("Empty resource: "+a),d=null));d.N=g.symbols}catch(h){x("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)){x("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.H=e)}return d}
|
||||
function G(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Fa(){if(null==Ga){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}Ga=a}return Ga}function Ha(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function Ia(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ja(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 Ka(a){if(!La){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," "))}La=c}return La[a]}function Ma(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function I(a){J.init.push(a)}
|
||||
function Na(a){if(Oa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){x(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function K(a){!Oa&&a?(Oa=!0,Pa&&Qa("init"),Ra&&Qa("show")):Oa=a}function Qa(a){J[a]&&Na(J[a])}var La=null,J={init:[],show:[],exit:[]},Pa=!1,Ra=!1,Oa=!0,Ga=null;Ma("onload",function(){Pa=!0;Na(J.init)});Ma("onpageshow",function(){Ra=!0;Na(J.show)});Ma(Ja("Opera")||Ja("iOS")?"onunload":"onbeforeunload",function(){Na(J.exit)});
|
||||
var C="pdp10",L="PDPjs",Sa=Math.pow(2,18),Ta=Math.pow(2,18)-1,Ua=Math.pow(2,36),Va=Math.pow(2,23),C="pdp10",L="PDPjs";
|
||||
function Wa(a,b){t.call(this,"Panel",a);this.A=this.B=0;this.P=b;this.c=this.u=this.g=this.h=0;this.D=this.G=-1;this.J=this.K=this.s=!1;this.N=Xa;this.j={};this.a={START:[1,1,!0,!1,this.ib],STEP:[1,1,!1,!1,this.jb],ENABLE:[1,1,!1,!1,this.cb],CONT:[1,1,!0,!1,this.ab],DEP:[0,0,!0,!1,this.bb],EXAM:[1,1,!0,!1,this.eb],LOAD:[1,1,!0,!1,this.gb],TEST:[0,0,!0,!1,this.fb]};for(a=0;22>a;a++)this.a["S"+a]=[0,0,!1,!1,this.hb,a];this.o=this.f=this.l=this.m=null;this.exports={hold:this.$a,toggle:this.ub,reset:this.qb,
|
||||
set:this.tb};E(this)}n(Wa,t);k=Wa.prototype;k.reset=function(a){this.stop();a&&M(this,this.h=0)};
|
||||
k.T=function(a,b,c,d){if(this.m&&this.m.T(a,b,c,d)||this.f&&this.f.T(a,b,c,d))return!0;switch(b){case "PC":return this.i[b]=c,this.B++,!0;default:return"led"==a||"rled"==a?(this.i[b]=c,this.j[b]=d?1:0,this.B++,!0):"switch"==a?(void 0===this.a[b]&&(this.a[b]=[d?1:0,d?1:0]),this.i[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Ya(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){N(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){Ya(a,
|
||||
b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){N(a,b)}}(this,b),!0):t.prototype.T.call(this,a,b,c,d)}};k.Y=function(a,b,c,d){this.m=a;this.l=b;this.f=c;this.o=d;Za(this);$a(this)};k.U=function(a,b){if(!b)if(this.P&&ab(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};k.O=function(a){return a?this.save():!0};k.save=function(){var a=new O(this);a.set(0,[this.c,this.h,this.g]);return a.data()};
|
||||
k.restore=function(a){if(a=a[0])P(this,this.c=a[0]),M(this,this.h=a[1]),bb(this,a[2]);return!0};k.qb=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}$a(this);return!0};function cb(a,b,c){if(a=a.i[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Za(a,b){for(var c in a.j)cb(a,c,null!=b?b:a.j[c])}function db(a,b,c){if(a=a.i[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function $a(a){for(var b in a.a)db(a,b,a.a[b][1])}
|
||||
k.$a=function(a,b,c){if(Ya(this,b)){if(c){var d=this;setTimeout(function(){N(d,b);a&&a()},+c);return!1}N(this,b)}return!0};
|
||||
var C="pdp10",L="PDPjs",Sa=Math.pow(2,18),Ta=Math.pow(2,18)-1,Ua=Math.pow(2,36),M=Math.pow(2,18),Va=Math.pow(2,23),C="pdp10",L="PDPjs";
|
||||
function Wa(a,b){t.call(this,"Panel",a);this.C=this.D=0;this.R=b;this.c=this.v=this.g=this.h=0;this.G=this.I=-1;this.L=this.M=this.u=!1;this.O=Xa;this.j={};this.a={START:[1,1,!0,!1,this.ib],STEP:[1,1,!1,!1,this.jb],ENABLE:[1,1,!1,!1,this.cb],CONT:[1,1,!0,!1,this.ab],DEP:[0,0,!0,!1,this.bb],EXAM:[1,1,!0,!1,this.eb],LOAD:[1,1,!0,!1,this.gb],TEST:[0,0,!0,!1,this.fb]};for(a=0;22>a;a++)this.a["S"+a]=[0,0,!1,!1,this.hb,a];this.s=this.f=this.l=this.o=null;this.exports={hold:this.$a,toggle:this.ub,reset:this.qb,
|
||||
set:this.tb};E(this)}n(Wa,t);k=Wa.prototype;k.reset=function(a){this.stop();a&&N(this,this.h=0)};
|
||||
k.U=function(a,b,c,d){if(this.o&&this.o.U(a,b,c,d)||this.f&&this.f.U(a,b,c,d))return!0;switch(b){case "PC":return this.i[b]=c,this.D++,!0;default:return"led"==a||"rled"==a?(this.i[b]=c,this.j[b]=d?1:0,this.D++,!0):"switch"==a?(void 0===this.a[b]&&(this.a[b]=[d?1:0,d?1:0]),this.i[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Ya(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){O(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){Ya(a,
|
||||
b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){O(a,b)}}(this,b),!0):t.prototype.U.call(this,a,b,c,d)}};k.Z=function(a,b,c,d){this.o=a;this.l=b;this.f=c;this.s=d;Za(this);$a(this)};k.V=function(a,b){if(!b)if(this.R&&ab(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};k.P=function(a){return a?this.save():!0};k.save=function(){var a=new P(this);a.set(0,[this.c,this.h,this.g]);return a.data()};
|
||||
k.restore=function(a){if(a=a[0])Q(this,this.c=a[0]),N(this,this.h=a[1]),bb(this,a[2]);return!0};k.qb=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}$a(this);return!0};function cb(a,b,c){if(a=a.i[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Za(a,b){for(var c in a.j)cb(a,c,null!=b?b:a.j[c])}function db(a,b,c){if(a=a.i[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function $a(a){for(var b in a.a)db(a,b,a.a[b][1])}
|
||||
k.$a=function(a,b,c){if(Ya(this,b)){if(c){var d=this;setTimeout(function(){O(d,b);a&&a()},+c);return!1}O(this,b)}return!0};
|
||||
k.tb=function(a,b){if("SR"==a){a=b;b=8;var c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var f,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):
|
||||
2==e&&d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f)}return bb(this,c)}return(c=this.a[a])?(c[1]=+b?1:0,db(this,a,c[1]),!0):!1};k.ub=function(a){return Ya(this,a)?(N(this,a),!0):!1};function Ya(a,b){var c=a.a[b];return c?(db(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=eb&&(a.J=b==fb,a.K=b==gb),!0):!1}function N(a,b){var c=a.a[b];c&&(c[2]&&c[3]&&(db(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}
|
||||
k.ib=function(a){a||this.f.b.v||(this.f.g=this.c%Sa,this.a[hb]&&this.a[hb][1]&&Q(this.f))};k.jb=function(){};k.cb=function(a){a||R(this.f)};k.ab=function(a){if(!a&&!this.f.b.v)if(this.a[hb]&&this.a[hb][1])Q(this.f);else{a=this.o;var b;if(b=a)a.b.ta&&(a.b.Ga=!0),b=!a.b.ta;if(b)va(a,!0),a.c(0,null),va(a,!1);else try{var c=this.f.za(1);0<c&&(ib(this.f,c),jb(this.f,c,!0),kb(this.f,c))}catch(d){"number"!=typeof d&&(c=this.f,a=d.stack||d.message,c.b.error=!0,c.C(a))}this.stop();this.m&&S(this.m)}};
|
||||
k.bb=function(a){a&&!this.f.b.v&&(this.J&&lb(this),a=M(this,this.h=this.g),this.N==Xa?mb(this.l,this.c,a):this.f.Z(this.c,a))};k.eb=function(a){if(!a&&!this.f.b.v){this.K&&lb(this);if(this.N==Xa){a=this.l;var b=this.c,c=a.a[(b&a.g)>>>a.c];a.h++;b=c.o(b&16383,b);a.h--;a=b}else a=this.f.M(this.c);M(this,this.h=a)}};k.gb=function(a){a||this.f.b.v||P(this,this.g)};k.fb=function(a){a?(this.s=!0,Za(this,!0)):(this.s=!1,Za(this),bb(this,0))};k.hb=function(a,b){this.g=a?this.g|1<<b:this.g&~(1<<b)};
|
||||
function lb(a){var b=1,c=a.l.g;a.a[eb]&&a.a[eb][1]||(b=-b);P(a,a.c&~c|a.c+b&c)}function P(a,b){a.c=b&a.l.g;if(a.D!==a.c){a.D=a.c;b=a.D;for(var c=0;22>c;c++){var d=a,e="A"+c,f=b&1<<c;d.j[e]=f;d.s||cb(d,e,f)}}}function M(a,b){a.u=b%Ua;if(a.G!==a.u){a.G=a.u;b=a.G;for(var c=0;16>c;c++){var d=a,e="D"+c,f=b&1<<c;d.j[e]=f;d.s||cb(d,e,f)}}return a.u}function bb(a,b){a.g=b|0;for(b=0;22>b;b++)a.a["S"+b][1]=a.g&1<<b?1:0;$a(a);return!0}k.stop=function(){P(this,this.f.g)};
|
||||
function ab(){for(var a=D(document,C,"panel"),b=0;b<a.length;b++){var c=a[b],d=A(c),e=oa(d.id);e||(e=new Wa(d,!0));B(e,c)}}var Xa=7,fb="DEP",hb="ENABLE",gb="EXAM",eb="STEP";I(ab);function nb(a,b,c){t.call(this,"Bus",a);this.f=b;this.o=c;this.u=+a.busWidth||18;this.s=1<<this.u;this.g=this.s-1;this.c=Math.log2(16384);this.j=this.s/16384|0;this.h=0;this.a=[];a=new T(this);ob(a);this.a=Array(this.j);for(b=0;b<this.j;b++)this.a[b]=a;E(this)}n(nb,t);k=nb.prototype;k.reset=function(){};
|
||||
k.U=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.O=function(a){return a?this.save():!0};k.save=function(){var a=new O(this);a.set(0,pb(this));return a.data()};k.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++],l=d[g++];h--;)f[e++]=l;d=f}e=this.a[c];if(!e||!e.restore(d)){x("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
|
||||
function qb(a,b,c,d){for(var e=b,f=c,g=e>>>a.c;0<f&&g<a.a.length;){var h=a.a[g],l=16384*g,p=16384-(e-l);p>f&&(p=f);if(h&&h.size){if(h.type==d){if(e+f<=h.aa)return h.ya+=h.aa-e,h.aa=e,!0;if(e>=h.aa+h.ya){p=h.size-(e-l);p>f&&(p=f);h.ya=e-h.aa+p;e=l+16384;f-=p;g++;continue}}return rb(sb,e,f)}e=new T(a,e,p,16384,d);ob(e,h);a.a[g++]=e;e=l+16384;f-=p}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+tb[d]+" at "+wa(b)),!0):rb(ub,b,c)}function mb(a,b,c){var d=a.a[(b&a.g)>>>a.c];a.h++;d.l(c,b&16383,b);a.h--}
|
||||
function pb(a){for(var b=0,c=[],d=0;d<a.j;d++){var e=a.a[d];if(e.va||e.Za){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,l=[];g<e.length;){for(var p=e[g],r=g+1;r<e.length&&e[r]===p;)r++;l[h++]=r-g;l[h++]=p;g=r}l.length<e.length&&(e=l)}c[f]=e}}return c}function rb(a,b,c){x("Memory block error ("+a+": "+F(b)+","+F(c)+")");return!1}var sb=1,ub=2;function vb(a){t.call(this,"Device",a)}n(vb,t);k=vb.prototype;k.Y=function(a,b,c,d){this.l=b;this.m=a;this.f=c;this.o=d;E(this)};
|
||||
k.U=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.O=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){return(new O(this)).data()};k.restore=function(){return!0};I(function(){for(var a=D(document,C,"device"),b=0;b<a.length;b++){var c,d=a[b];c=A(d);switch(c.type){case "default":c=new vb(c),B(c,d)}}});
|
||||
function T(a,b,c,d,e){this.h=a;this.id=wb+=2;this.aa=b;this.ya=c;this.size=d||0;this.type=e||xb;this.m=e==yb;this.M=this.o=this.c=this.ha;this.Z=this.l=this.g=this.ia;this.f=this.i=0;ob(this);this.va=this.Za=!1;if(this.size){a=this.a=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;zb(this,Ab)}else zb(this)}k=T.prototype;k.save=function(){return this.a};k.restore=function(a){return a&&this.size==a.length?(this.a=a,this.va=!0):!1};function zb(a,b){b||(b=Bb);Cb(a,b,void 0);Db(a,b,void 0)}
|
||||
function Cb(a,b,c){c&&a.f||(a.M=b[2]||a.ha);if(c||void 0===c)a.c=b[0]||a.ha,a.o=b[2]||a.ha}function Db(a,b,c){c&&a.i||(a.Z=!a.m&&b[3]||a.ia);if(c||void 0===c)a.g=b[1]||a.ia,a.l=b[3]||a.ia}function ob(a,b){a.f=a.i=0;b&&((a.f=b.f)&&Cb(a,Eb,!1),(a.i=b.i)&&Db(a,Eb,!1))}k.ha=function(){var a=this.h;a.h||R(a.f);return-1};k.ia=function(){};k.lb=function(a,b,c,d){a=this.a[a];return a=32>=c+d?a>>c&(1<<d)-1:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d)};k.ob=function(a){return this.a[a]};
|
||||
k.xb=function(a,b,c,d,e){c=this.a[b];var f=Math.pow(2,d);a%=Math.pow(2,e);d=c%Math.pow(2,d+e);c=c-d+a*f+d%f;this.a[b]!=c&&(this.a[b]=c,this.va=!0)};k.zb=function(a,b){this.a[b]=a;this.va=!0};k.kb=function(a,b,c,d){return this.c(a,b,c,d)};k.mb=function(a,b){return this.o(a,b)};k.wb=function(a,b,c,d,e){this.m||this.g(a,b,c,d,e)};k.yb=function(a,b,c){this.m||this.l(a,b,c)};
|
||||
var xb=0,yb=2,tb=["NONE","RAM","ROM"],wb=0,Bb=[],Ab=[T.prototype.lb,T.prototype.xb,T.prototype.ob,T.prototype.zb],Eb=[T.prototype.kb,T.prototype.wb,T.prototype.mb,T.prototype.yb];
|
||||
function Fb(a,b){t.call(this,"CPU",a);b=+a.cycles||b;var c=+a.multiplier||1;this.Aa=0;this.Ea=b;this.V=c;this.Ca=Math.round(this.Ea/1E4)/100;this.N=this.Ca*this.V;this.Da=this.fa=this.W=this.ra=0;this.b.v=this.b.Ha=!1;this.b.H=a.autoStart;"string"==typeof this.b.H&&(this.b.H="true"==this.b.H);this.b.ua=!1;this.pa=this.P=0;this.qa=+a.csStart;this.da=+a.csInterval;this.ea=+a.csStop;this.u=[];this.Na=this.rb.bind(this);this.G=this.j=this.B=this.D=this.h=this.la=this.A=this.ca=this.Fa=this.J=0;this.ma=
|
||||
null;E(this)}n(Fb,t);k=Fb.prototype;k.Y=function(a,b,c,d){this.m=a;this.l=b;this.o=d;this.ma=a.g;for(a=0;a<Gb.length;a++)(b=this.i[Gb[a]])&&this.m.T(null,Gb[a],b);E(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
|
||||
k.U=function(a,b){var c=U(this.m,"autoStart");null!=c?this.b.H="true"==c?!0:"false"==c?!1:!!c:null==this.b.H&&(this.b.H=void 0===this.i.run);if(!b){if(a){Hb(this);if(!this.restore(a))return!1;Ib(this)}else this.reset();this.status("No debugger detected");this.b.H||this.I("CPU will not be auto-started "+(this.ma?"(click Run to start)":"(type 'go' to start)"))}return!0};k.O=function(a){return a?this.save():!0};k.H=function(){return this.b.v?!0:this.b.H?(Q(this),!0):!1};k.Pa=function(){return 0};
|
||||
function Ib(a){void 0===a.qa&&(a.qa=0);void 0===a.da&&(a.da=-1);void 0===a.ea&&(a.ea=-1);a.b.ua=0<=a.qa&&0<a.da;a.b.ua&&(a.pa=0,a.P=a.qa-a.G)}function kb(a,b){if(a.b.ua){var c=!1;a.pa=a.pa+a.Pa()|0;a.P-=b;0>=a.P&&(a.P+=a.da,c=!0);0<=a.ea&&a.ea<=Jb(a)&&(a.da=a.ea=-1,Ib(a),R(a),c=!0);c&&a.I(Jb(a)+" cycles: checksum="+F(a.pa))}}
|
||||
k.T=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.i[b]=c,!0;case "run":return this.i[b]=c,c.onclick=function(){var a;if(a=d.m)if(a=d.m,a.b.w)a=!0;else{var b=null,c,h=y(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.b.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.b.w);c++);c==h.length&&(b=a);x("The "+b.type+" component ("+b.id+") is not "+(b.b.ready?"powered yet":"ready yet"+(b.wa?" (waiting for notification)":""))+".");a=!1}a&&(d.b.v?R(d):Q(d))},!0;case "speed":return this.i[b]=
|
||||
c,!0;case "setSpeed":return this.i[b]=c,c.onclick=function(){Kb(d,d.V<<1,!0)},c.textContent=this.N.toFixed(2)+"Mhz",!0}return!1};function jb(a,b,c){a.G+=b;c&&(a.B=a.D=0)}function Lb(a,b){var c=1;b&&1<a.V&&a.J&&(c=a.J/a.Ca);a.Da=Math.round(1E3/Mb);a.fa=Math.floor(a.Ea/Mb*c);b||(a.W=a.fa);a.ra=0}function Jb(a){return a.G+a.j+a.B-a.D}function Hb(a){a.J=0;a.Fa=0;a.G=a.j=a.B=a.D=0;Ib(a);Kb(a,1)}
|
||||
function Kb(a,b,c){if(void 0!==b){.8>a.J/a.N&&(b=1);a.V=b;b=a.Ca*a.V;if(a.N!=b){a.N=b;b=a.N.toFixed(2)+"Mhz";var d=a.i.setSpeed;d&&(d.textContent=b);a.I("target speed: "+b)}c&&a.m&&(c=a.m,c.ba&&(d=b=0,window&&(b=window.scrollX,d=window.scrollY),c.ba.focus(),window&&window.scrollTo(b,d)))}jb(a,a.j);a.j=0;a.h=w();a.A=0;Lb(a)}function Nb(a){for(var b=[],c=0;c<a.u.length;c++)b.push(a.u[c][0]);return b}
|
||||
function ib(a,b){for(var c=a.u.length-1;0<=c;c--){var d=a.u[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function Ob(a,b){var c=a.B-=a.D;a.D=0;b&&(a.B=0);return c}
|
||||
k.rb=function(){if(this.b.v){this.ra>=this.Ea&&Lb(this,!0);this.ca=0;this.la=w();if(this.A){var a=this.la-this.A;a>this.Da&&(this.h+=a,this.h>this.la&&(this.h=this.la))}try{do{for(var b,c=this.b.ua?1:this.fa,d=this.u.length-1;0<=d;d--){var e=this.u[d];0>e[0]||c>e[0]&&(c=e[0])}b=c;try{this.za(b)}catch(f){if("number"!=typeof f)throw f;}b=Ob(this,!0);this.ca+=b;this.j+=b;kb(this,b);ib(this,b);this.W-=b;if(0>=this.W){this.W+=this.fa;++this.Fa>=Pb&&(this.m&&S(this.m,void 0),this.Fa=0);break}}while(this.b.v)}catch(f){R(this);
|
||||
this.m&&this.m.stop(w(),Jb(this));a=f.stack||f.message;this.b.error=!0;this.C(a);return}if(this.b.v){a=setTimeout;b=this.Na;this.A=w();c=this.Da;this.ca&&(c=Math.round(c*this.ca/this.fa));c-=this.A-this.la;if(d=this.A-this.h)this.J=Math.round(this.j/(10*d))/100,864E5<=d&&(this.G=0,Kb(this));if(0>c||this.J<this.N)-1E3>c&&(this.h-=c),c=0;this.ra+=this.ca;this.A+=c;a(b,c)}}};
|
||||
function Q(a){var b;a.b.error?(a.I(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.b.v)a.I(a.toString()+" busy");else{Kb(a);a.b.v=!0;a.b.Ha=!0;if(b=a.i.run)b.textContent="Halt";a.m&&a.m.start(a.h,Jb(a));a.o||a.status("Started");setTimeout(a.Na,0)}}k.za=function(){return 0};function R(a){var b=!1;if(a.b.v){Ob(a);jb(a,a.j);a.j=0;a.b.v=!1;if(b=a.i.run)b.textContent="Run";a.m&&a.m.stop(w(),Jb(a));b=!0;a.o||a.status("Stopped")}a.b.complete=void 0;return b}var Mb=30,Pb=15,Gb=["power","reset"];
|
||||
function Qb(a){var b=+a.model||1001;Fb.call(this,a,1E6);this.Va=b;this.La=+a.addrReset||0;this.Wa=Rb.bind(this);this.a=V.bind(this);this.ja=null;this.Ka=[];this.b.complete=!1}n(Qb,Fb);k=Qb.prototype;k.reset=function(){this.status("Model "+this.Va);this.b.v&&R(this);this.s=this.K=this.sa=0;this.ka=this.g=this.Ba=this.La;this.c=0;this.M=this.nb;this.Z=this.Ab;this.ja=null;Hb(this);this.b.error=!1;Fb.prototype.reset.call(this)};k.Pa=function(){return 0};
|
||||
k.save=function(){var a=new O(this);a.set(0,[this.s,this.K,this.sa,this.g,this.Ba,this.ka,this.c]);a.set(1,[]);a.set(2,[this.G,this.V,this.b.H]);a.set(3,Sb(this));a.set(4,Nb(this));return a.data()};
|
||||
k.restore=function(a){var b;b=a[0];ea();ba();ea();var c=b[Symbol.iterator];b=c?c.call(b):fa(b);this.s=b.next().value;this.K=b.next().value;this.sa=b.next().value;this.g=b.next().value;this.Ba=b.next().value;this.ka=b.next().value;this.c=b.next().value;b=a[2];this.G=b[0];Kb(this,b[1]);this.b.H=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.Ka.length;d++){var e=this.Ka[d];if(e.vb===b[c]){d=e;break a}}d=null}d&&(d.next=this.ja,this.ja=d)}a=a[4];for(b=0;b<this.u.length&&b<a.length;b++)this.u[b][0]=
|
||||
a[b];return!0};function Sb(a){var b=[];for(a=a.ja;a;)b.push(a.vb),a=a.next;return b}k.nb=function(a){var b=this.l;a=this.ka=a;return b.a[(a&b.g)>>>b.c].M(a&16383,a)};k.Ab=function(a,b){var c=this.l;a=this.ka=a;c.a[(a&c.g)>>>c.c].Z(b,a&16383,a)};
|
||||
k.za=function(a){this.b.complete=!0;var b=a?this.b.Ha?0:1:-1;this.b.Ha=!1;this.B=this.D=a;this.c=this.c&-5|0;do{if(a=this.c)if(a=this.c&11)this.c&2?this.ja||(this.c&=-3):this.c&1&&this.c++,a=!1;if(a){if(this.c&4&&this.o.h(this.g,b)){R(this);break}if(0>b)break}this.c&=15;this.K=this.K&4194304?this.M(this.s):this.sa=this.M(this.Ba=this.g);this.s=this.K&262143;if(a=this.K>>18&15)this.s=this.s+this.M(a)&Ta;this.K&4194304?a=-1:(this.g=(this.g+1)%Sa,a=this.sa/Va|0);0<=a&&this.Wa(a)}while(0<this.D);return this.b.complete?
|
||||
this.B-this.D:!1===this.b.complete?-1:0};I(function(){for(var a=D(document,C,"cpu"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Qb(d);B(d,c)}});function Rb(a){Tb[a>>4].call(this,a)}function W(a){this.a(a)}function Ub(a){this.a(a)}function Vb(a){this.a(a)}function Wb(a){a&=15;var b=this.M(this.s),c=this.M(a);this.Z(a,(c&262143)+(b-(b&262143)))}function X(a){this.a(a)}function V(a){this.I("undefined opcode: "+wa(a));this.g=(this.g+-1)%Sa;R(this)}
|
||||
var Tb=[W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
2==e&&d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f)}return bb(this,c)}return(c=this.a[a])?(c[1]=+b?1:0,db(this,a,c[1]),!0):!1};k.ub=function(a){return Ya(this,a)?(O(this,a),!0):!1};function Ya(a,b){var c=a.a[b];return c?(db(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=eb&&(a.L=b==fb,a.M=b==gb),!0):!1}function O(a,b){var c=a.a[b];c&&(c[2]&&c[3]&&(db(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}
|
||||
k.ib=function(a){a||this.f.b.w||(this.f.h=this.c%Sa,this.a[hb]&&this.a[hb][1]&&ib(this.f))};k.jb=function(){};k.cb=function(a){a||R(this.f)};k.ab=function(a){if(!a&&!this.f.b.w)if(this.a[hb]&&this.a[hb][1])ib(this.f);else{a=this.s;var b;if(b=a)a.b.ta&&(a.b.Ga=!0),b=!a.b.ta;if(b)va(a,!0),a.c(0,null),va(a,!1);else try{var c=this.f.za(1);0<c&&(jb(this.f,c),kb(this.f,c,!0),lb(this.f,c))}catch(d){"number"!=typeof d&&(c=this.f,a=d.stack||d.message,c.b.error=!0,c.F(a))}this.stop();this.o&&S(this.o)}};
|
||||
k.bb=function(a){a&&!this.f.b.w&&(this.L&&mb(this),a=N(this,this.h=this.g),this.O==Xa?nb(this.l,this.c,a):this.f.A(this.c,a))};k.eb=function(a){if(!a&&!this.f.b.w){this.M&&mb(this);if(this.O==Xa){a=this.l;var b=this.c,c=a.a[(b&a.g)>>>a.c];a.h++;b=c.s(b&16383,b);a.h--;a=b}else a=this.f.m(this.c);N(this,this.h=a)}};k.gb=function(a){a||this.f.b.w||Q(this,this.g)};k.fb=function(a){a?(this.u=!0,Za(this,!0)):(this.u=!1,Za(this),bb(this,0))};k.hb=function(a,b){this.g=a?this.g|1<<b:this.g&~(1<<b)};
|
||||
function mb(a){var b=1,c=a.l.g;a.a[eb]&&a.a[eb][1]||(b=-b);Q(a,a.c&~c|a.c+b&c)}function Q(a,b){a.c=b&a.l.g;if(a.G!==a.c){a.G=a.c;b=a.G;for(var c=0;22>c;c++){var d=a,e="A"+c,f=b&1<<c;d.j[e]=f;d.u||cb(d,e,f)}}}function N(a,b){a.v=b%Ua;if(a.I!==a.v){a.I=a.v;b=a.I;for(var c=0;16>c;c++){var d=a,e="D"+c,f=b&1<<c;d.j[e]=f;d.u||cb(d,e,f)}}return a.v}function bb(a,b){a.g=b|0;for(b=0;22>b;b++)a.a["S"+b][1]=a.g&1<<b?1:0;$a(a);return!0}k.stop=function(){Q(this,this.f.h)};
|
||||
function ab(){for(var a=D(document,C,"panel"),b=0;b<a.length;b++){var c=a[b],d=A(c),e=oa(d.id);e||(e=new Wa(d,!0));B(e,c)}}var Xa=7,fb="DEP",hb="ENABLE",gb="EXAM",eb="STEP";I(ab);function ob(a,b,c){t.call(this,"Bus",a);this.f=b;this.s=c;this.v=+a.busWidth||18;this.u=1<<this.v;this.g=this.u-1;this.c=Math.log2(16384);this.j=this.u/16384|0;this.h=0;this.a=[];a=new T(this);pb(a);this.a=Array(this.j);for(b=0;b<this.j;b++)this.a[b]=a;E(this)}n(ob,t);k=ob.prototype;k.reset=function(){};
|
||||
k.V=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.P=function(a){return a?this.save():!0};k.save=function(){var a=new P(this);a.set(0,qb(this));return a.data()};k.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++],l=d[g++];h--;)f[e++]=l;d=f}e=this.a[c];if(!e||!e.restore(d)){x("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
|
||||
function rb(a,b,c,d){for(var e=b,f=c,g=e>>>a.c;0<f&&g<a.a.length;){var h=a.a[g],l=16384*g,p=16384-(e-l);p>f&&(p=f);if(h&&h.size){if(h.type==d){if(e+f<=h.aa)return h.ya+=h.aa-e,h.aa=e,!0;if(e>=h.aa+h.ya){p=h.size-(e-l);p>f&&(p=f);h.ya=e-h.aa+p;e=l+16384;f-=p;g++;continue}}return sb(tb,e,f)}e=new T(a,e,p,16384,d);pb(e,h);a.a[g++]=e;e=l+16384;f-=p}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+ub[d]+" at "+wa(b)),!0):sb(vb,b,c)}function nb(a,b,c){var d=a.a[(b&a.g)>>>a.c];a.h++;d.l(c,b&16383,b);a.h--}
|
||||
function qb(a){for(var b=0,c=[],d=0;d<a.j;d++){var e=a.a[d];if(e.va||e.Za){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,l=[];g<e.length;){for(var p=e[g],r=g+1;r<e.length&&e[r]===p;)r++;l[h++]=r-g;l[h++]=p;g=r}l.length<e.length&&(e=l)}c[f]=e}}return c}function sb(a,b,c){x("Memory block error ("+a+": "+F(b)+","+F(c)+")");return!1}var tb=1,vb=2;function wb(a){t.call(this,"Device",a)}n(wb,t);k=wb.prototype;k.Z=function(a,b,c,d){this.l=b;this.o=a;this.f=c;this.s=d;E(this)};
|
||||
k.V=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.P=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){return(new P(this)).data()};k.restore=function(){return!0};I(function(){for(var a=D(document,C,"device"),b=0;b<a.length;b++){var c,d=a[b];c=A(d);switch(c.type){case "default":c=new wb(c),B(c,d)}}});
|
||||
function T(a,b,c,d,e){this.h=a;this.id=xb+=2;this.aa=b;this.ya=c;this.size=d||0;this.type=e||yb;this.o=e==zb;this.m=this.s=this.c=this.ha;this.A=this.l=this.g=this.ia;this.f=this.i=0;pb(this);this.va=this.Za=!1;if(this.size){a=this.a=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Ab(this,Bb)}else Ab(this)}k=T.prototype;k.save=function(){return this.a};k.restore=function(a){return a&&this.size==a.length?(this.a=a,this.va=!0):!1};function Ab(a,b){b||(b=Cb);Db(a,b,void 0);Eb(a,b,void 0)}
|
||||
function Db(a,b,c){c&&a.f||(a.m=b[2]||a.ha);if(c||void 0===c)a.c=b[0]||a.ha,a.s=b[2]||a.ha}function Eb(a,b,c){c&&a.i||(a.A=!a.o&&b[3]||a.ia);if(c||void 0===c)a.g=b[1]||a.ia,a.l=b[3]||a.ia}function pb(a,b){a.f=a.i=0;b&&((a.f=b.f)&&Db(a,Fb,!1),(a.i=b.i)&&Eb(a,Fb,!1))}k.ha=function(){var a=this.h;a.h||R(a.f);return-1};k.ia=function(){};k.lb=function(a,b,c,d){a=this.a[a];return a=32>=c+d?a>>c&(1<<d)-1:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d)};k.ob=function(a){return this.a[a]};
|
||||
k.xb=function(a,b,c,d,e){c=this.a[b];var f=Math.pow(2,d);a%=Math.pow(2,e);d=c%Math.pow(2,d+e);c=c-d+a*f+d%f;this.a[b]!=c&&(this.a[b]=c,this.va=!0)};k.zb=function(a,b){this.a[b]=a;this.va=!0};k.kb=function(a,b,c,d){return this.c(a,b,c,d)};k.mb=function(a,b){return this.s(a,b)};k.wb=function(a,b,c,d,e){this.o||this.g(a,b,c,d,e)};k.yb=function(a,b,c){this.o||this.l(a,b,c)};
|
||||
var yb=0,zb=2,ub=["NONE","RAM","ROM"],xb=0,Cb=[],Bb=[T.prototype.lb,T.prototype.xb,T.prototype.ob,T.prototype.zb],Fb=[T.prototype.kb,T.prototype.wb,T.prototype.mb,T.prototype.yb];
|
||||
function Gb(a,b){t.call(this,"CPU",a);b=+a.cycles||b;var c=+a.multiplier||1;this.Aa=0;this.Ea=b;this.W=c;this.Ca=Math.round(this.Ea/1E4)/100;this.O=this.Ca*this.W;this.Da=this.fa=this.X=this.ra=0;this.b.w=this.b.Ha=!1;this.b.J=a.autoStart;"string"==typeof this.b.J&&(this.b.J="true"==this.b.J);this.b.ua=!1;this.pa=this.R=0;this.qa=+a.csStart;this.da=+a.csInterval;this.ea=+a.csStop;this.v=[];this.Na=this.rb.bind(this);this.I=this.u=this.D=this.G=this.j=this.la=this.C=this.ca=this.Fa=this.L=0;this.ma=
|
||||
null;E(this)}n(Gb,t);k=Gb.prototype;k.Z=function(a,b,c,d){this.o=a;this.l=b;this.s=d;this.ma=a.g;for(a=0;a<Hb.length;a++)(b=this.i[Hb[a]])&&this.o.U(null,Hb[a],b);E(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
|
||||
k.V=function(a,b){var c=U(this.o,"autoStart");null!=c?this.b.J="true"==c?!0:"false"==c?!1:!!c:null==this.b.J&&(this.b.J=void 0===this.i.run);if(!b){if(a){Ib(this);if(!this.restore(a))return!1;Jb(this)}else this.reset();this.status("No debugger detected");this.b.J||this.K("CPU will not be auto-started "+(this.ma?"(click Run to start)":"(type 'go' to start)"))}return!0};k.P=function(a){return a?this.save():!0};k.J=function(){return this.b.w?!0:this.b.J?(ib(this),!0):!1};k.Pa=function(){return 0};
|
||||
function Jb(a){void 0===a.qa&&(a.qa=0);void 0===a.da&&(a.da=-1);void 0===a.ea&&(a.ea=-1);a.b.ua=0<=a.qa&&0<a.da;a.b.ua&&(a.pa=0,a.R=a.qa-a.I)}function lb(a,b){if(a.b.ua){var c=!1;a.pa=a.pa+a.Pa()|0;a.R-=b;0>=a.R&&(a.R+=a.da,c=!0);0<=a.ea&&a.ea<=Kb(a)&&(a.da=a.ea=-1,Jb(a),R(a),c=!0);c&&a.K(Kb(a)+" cycles: checksum="+F(a.pa))}}
|
||||
k.U=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.i[b]=c,!0;case "run":return this.i[b]=c,c.onclick=function(){var a;if(a=d.o)if(a=d.o,a.b.B)a=!0;else{var b=null,c,h=y(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.b.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.b.B);c++);c==h.length&&(b=a);x("The "+b.type+" component ("+b.id+") is not "+(b.b.ready?"powered yet":"ready yet"+(b.wa?" (waiting for notification)":""))+".");a=!1}a&&(d.b.w?R(d):ib(d))},!0;case "speed":return this.i[b]=
|
||||
c,!0;case "setSpeed":return this.i[b]=c,c.onclick=function(){Lb(d,d.W<<1,!0)},c.textContent=this.O.toFixed(2)+"Mhz",!0}return!1};function kb(a,b,c){a.I+=b;c&&(a.D=a.G=0)}function Mb(a,b){var c=1;b&&1<a.W&&a.L&&(c=a.L/a.Ca);a.Da=Math.round(1E3/Nb);a.fa=Math.floor(a.Ea/Nb*c);b||(a.X=a.fa);a.ra=0}function Kb(a){return a.I+a.u+a.D-a.G}function Ib(a){a.L=0;a.Fa=0;a.I=a.u=a.D=a.G=0;Jb(a);Lb(a,1)}
|
||||
function Lb(a,b,c){if(void 0!==b){.8>a.L/a.O&&(b=1);a.W=b;b=a.Ca*a.W;if(a.O!=b){a.O=b;b=a.O.toFixed(2)+"Mhz";var d=a.i.setSpeed;d&&(d.textContent=b);a.K("target speed: "+b)}c&&a.o&&(c=a.o,c.ba&&(d=b=0,window&&(b=window.scrollX,d=window.scrollY),c.ba.focus(),window&&window.scrollTo(b,d)))}kb(a,a.u);a.u=0;a.j=w();a.C=0;Mb(a)}function Ob(a){for(var b=[],c=0;c<a.v.length;c++)b.push(a.v[c][0]);return b}
|
||||
function jb(a,b){for(var c=a.v.length-1;0<=c;c--){var d=a.v[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function Pb(a,b){var c=a.D-=a.G;a.G=0;b&&(a.D=0);return c}
|
||||
k.rb=function(){if(this.b.w){this.ra>=this.Ea&&Mb(this,!0);this.ca=0;this.la=w();if(this.C){var a=this.la-this.C;a>this.Da&&(this.j+=a,this.j>this.la&&(this.j=this.la))}try{do{for(var b,c=this.b.ua?1:this.fa,d=this.v.length-1;0<=d;d--){var e=this.v[d];0>e[0]||c>e[0]&&(c=e[0])}b=c;try{this.za(b)}catch(f){if("number"!=typeof f)throw f;}b=Pb(this,!0);this.ca+=b;this.u+=b;lb(this,b);jb(this,b);this.X-=b;if(0>=this.X){this.X+=this.fa;++this.Fa>=Qb&&(this.o&&S(this.o,void 0),this.Fa=0);break}}while(this.b.w)}catch(f){R(this);
|
||||
this.o&&this.o.stop(w(),Kb(this));a=f.stack||f.message;this.b.error=!0;this.F(a);return}if(this.b.w){a=setTimeout;b=this.Na;this.C=w();c=this.Da;this.ca&&(c=Math.round(c*this.ca/this.fa));c-=this.C-this.la;if(d=this.C-this.j)this.L=Math.round(this.u/(10*d))/100,864E5<=d&&(this.I=0,Lb(this));if(0>c||this.L<this.O)-1E3>c&&(this.j-=c),c=0;this.ra+=this.ca;this.C+=c;a(b,c)}}};
|
||||
function ib(a){var b;a.b.error?(a.K(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.b.w)a.K(a.toString()+" busy");else{Lb(a);a.b.w=!0;a.b.Ha=!0;if(b=a.i.run)b.textContent="Halt";a.o&&a.o.start(a.j,Kb(a));a.s||a.status("Started");setTimeout(a.Na,0)}}k.za=function(){return 0};function R(a){var b=!1;if(a.b.w){Pb(a);kb(a,a.u);a.u=0;a.b.w=!1;if(b=a.i.run)b.textContent="Run";a.o&&a.o.stop(w(),Kb(a));b=!0;a.s||a.status("Stopped")}a.b.complete=void 0;return b}var Nb=30,Qb=15,Hb=["power","reset"];
|
||||
function Rb(a){var b=+a.model||1001;Gb.call(this,a,1E6);this.Va=b;this.La=+a.addrReset||0;this.Wa=Sb.bind(this);this.a=V.bind(this);this.ja=null;this.Ka=[];this.b.complete=!1}n(Rb,Gb);k=Rb.prototype;k.reset=function(){this.status("Model "+this.Va);this.b.w&&R(this);this.c=this.M=this.sa=0;this.ka=this.h=this.Ba=this.La;this.g=0;this.m=this.nb;this.A=this.Ab;this.ja=null;Ib(this);this.b.error=!1;Gb.prototype.reset.call(this)};k.Pa=function(){return 0};
|
||||
k.save=function(){var a=new P(this);a.set(0,[this.c,this.M,this.sa,this.h,this.Ba,this.ka,this.g]);a.set(1,[]);a.set(2,[this.I,this.W,this.b.J]);a.set(3,Tb(this));a.set(4,Ob(this));return a.data()};
|
||||
k.restore=function(a){var b;b=a[0];ea();ba();ea();var c=b[Symbol.iterator];b=c?c.call(b):fa(b);this.c=b.next().value;this.M=b.next().value;this.sa=b.next().value;this.h=b.next().value;this.Ba=b.next().value;this.ka=b.next().value;this.g=b.next().value;b=a[2];this.I=b[0];Lb(this,b[1]);this.b.J=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.Ka.length;d++){var e=this.Ka[d];if(e.vb===b[c]){d=e;break a}}d=null}d&&(d.next=this.ja,this.ja=d)}a=a[4];for(b=0;b<this.v.length&&b<a.length;b++)this.v[b][0]=
|
||||
a[b];return!0};function Tb(a){var b=[];for(a=a.ja;a;)b.push(a.vb),a=a.next;return b}k.nb=function(a){var b=this.l;a=this.ka=a;return b.a[(a&b.g)>>>b.c].m(a&16383,a)};k.Ab=function(a,b){var c=this.l;a=this.ka=a;c.a[(a&c.g)>>>c.c].A(b,a&16383,a)};
|
||||
k.za=function(a){this.b.complete=!0;var b=a?this.b.Ha?0:1:-1;this.b.Ha=!1;this.D=this.G=a;this.g=this.g&-5|0;do{if(a=this.g)if(a=this.g&11)this.g&2?this.ja||(this.g&=-3):this.g&1&&this.g++,a=!1;if(a){if(this.g&4&&this.s.h(this.h,b)){R(this);break}if(0>b)break}this.g&=15;this.M=this.M&4194304?this.m(this.c):this.sa=this.m(this.Ba=this.h);this.c=this.M&262143;if(a=this.M>>18&15)this.c=this.c+this.m(a)&Ta;this.M&4194304?a=-1:(this.h=(this.h+1)%Sa,a=this.sa/Va|0);0<=a&&this.Wa(a)}while(0<this.G);return this.b.complete?
|
||||
this.D-this.G:!1===this.b.complete?-1:0};I(function(){for(var a=D(document,C,"cpu"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Rb(d);B(d,c)}});function Sb(a){Ub[a>>4].call(this,a)}function W(a){this.a(a)}function Vb(a){this.a(a)}function Wb(a){this.a(a)}function Xb(a){a&=15;var b=this.m(this.c),c=this.m(a);this.A(a,(c&262143)+(b-(b&262143)))}function Yb(a){a&=15;var b=this.m(this.c)&262143,c=this.m(a);this.A(a,c-(c&262143)+b)}function X(a){this.a(a)}
|
||||
function V(a){this.K("undefined opcode: "+wa(a));this.h=(this.h+-1)%Sa;R(this)}
|
||||
var Ub=[W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Ub,Vb,Vb,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Ub,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Vb,Wb,Wb,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Vb,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},V,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},V,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
|
|
@ -106,56 +107,58 @@ function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a)
|
|||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Wb,function(a){a&=15;var b=this.M(a);this.Z(a,b&262143)},function(a){a=this.M(a&15);var b=this.M(this.s);this.Z(this.s,(b&262143)+(a-(a&262143)))},function(a){a&15&&Wb.call(this,a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Xb,function(a){a&=15;var b=this.m(a);this.A(a,b&262143)},function(a){a=this.m(a&15);var b=this.m(this.c);this.A(this.c,(b&262143)+(a-(a&262143)))},function(a){a&15&&Xb.call(this,a)},
|
||||
function(a){a&=15;var b=this.m(this.c)&262143,c=this.m(a),c=(c&262143)+b*M;this.A(a,c)},function(a){a&=15;var b=this.m(a),b=(b&262143)+this.c*M;this.A(a,b)},function(a){a=this.m(a&15)&262143;var b=this.m(this.c),b=(b&262143)+a*M;this.A(this.c,b)},function(a){var b=this.m(this.c)&262143;this.A(this.c,b+b*M);if(a&=15)b=this.m(a)&262143,this.A(a,b+b*M)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Yb,function(a){a&=15;var b=this.m(a),b=b-(b&262143)+this.c;this.A(a,b)},function(a){a=this.m(a&15)&262143;var b=
|
||||
this.m(this.c);this.A(this.c,b-(b&262143)+a)},function(a){a&15&&Yb.call(this,a)},function(a){a&=15;var b=this.m(this.c)/M|0,c=this.m(a);this.A(a,c-(c&262143)+b)},function(a){a&=15;var b=this.m(a);this.A(a,b-(b&262143))},function(a){a=this.m(a&15)/M|0;var b=this.m(this.c);this.A(this.c,b-(b&262143)+a)},function(a){var b=this.m(this.c);this.A(this.c,(b&262143)+(b/M|0));if(a&=15)b=this.m(a),this.A(a,(b&262143)+(b/M|0))},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X];
|
||||
function Xb(a){t.call(this,"ROM",a);this.L=this.a=null;this.j=+a.addr;this.g=+a.size;this.c=a.alias;"string"==typeof this.c&&(this.c=eval(this.c));this.h=a.file;this.s=xa(this.h);if(this.h){a=this.h;var b=ya(this.s);"json"!=b&&"hex"!=b&&(a=G()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;H(a,null,!0,function(a,b,f){f?(c.C("Unable to load ROM resource (error "+f+": "+a+")"),c.h=null):(la(c.oa,a,b),(a=Ea(a,b))?(c.a=a.F,c.L=a.L):c.h=null);Yb(c)})}}n(Xb,t);
|
||||
Xb.prototype.Y=function(a,b,c,d){this.l=b;this.f=c;this.o=d;Yb(this)};Xb.prototype.U=function(){this.L&&(this.o&&this.o.a(this.id,this.j,this.g,this.L),delete this.L);return!0};Xb.prototype.O=function(){return!0};
|
||||
function Yb(a){if(!ua(a)){if(a.h){if(!a.a||!a.l)return;a.g||(a.g=a.a.length);if(a.a.length!=a.g){var b="ROM size ("+F(a.a.length,8,!0)+") does not match specified size ("+F(a.g,8,!0)+")";a.b.error=!0;a.C(b)}else{b=a.j;if(qb(a.l,b,a.g,yb)){var c;for(c=0;c<a.a.length;c++)mb(a.l,b+c,a.a[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.c?b.push(a.c):null!=a.c&&a.c.length&&(b=a.c);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.l,g=d.g,h=[],l=d.j>>>f.c;0<g&&l<f.a.length;)h.push(f.a[l++]),g-=16384;f=d.l;
|
||||
d=d.g;g=0;for(e>>>=f.c;0<d&&e<f.a.length;){l=h[g++];if(!l)break;f.a[e++]=l;d-=16384}}delete a.a}}}E(a)}}I(function(){for(var a=D(document,C,"rom"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Xb(d);B(d,c)}});
|
||||
function Y(a){t.call(this,"RAM",a);this.L=this.X=null;this.c=+a.addr;this.g=+a.size;this.S=a.load;this.R=a.exec;null!=this.S&&(this.S=+this.S);null!=this.R&&(this.R=+this.R);this.h=this.s=!1;this.a=a.file;this.j=xa(this.a);if(this.a){a=this.a;var b=ya(this.j);"json"!=b&&"hex"!=b&&(a=G()+"/api/v1/dump?file="+this.a+"&format=bytes&decimal=true");var c=this;H(a,null,!0,function(a,b,f){f?(c.C("Unable to load RAM resource (error "+f+": "+a+")"),c.a=null):(la(c.oa,a,b),(a=Ea(a,b))?(c.X=a.X,c.L=a.L,null==
|
||||
c.S&&(c.S=a.S),null==c.R&&(c.R=a.R)):c.a=null);Zb(c)})}}n(Y,t);Y.prototype.Y=function(a,b,c,d){this.l=b;this.f=c;this.o=d;Zb(this)};Y.prototype.U=function(a,b){this.L&&(this.o&&this.o.a(this.id,this.c,this.g,this.L),delete this.L);b||this.reset();return!0};Y.prototype.O=function(){return!0};
|
||||
function Zb(a){if(a.l&&(!a.h&&a.g&&(qb(a.l,a.c,a.g,1)?a.h=!0:a.g=0),!ua(a))){if(!a.h)x("No RAM allocated");else if(a.a){if(!a.X)return;$b(a,a.X,a.S,a.R,a.c)?a.status('Loaded image "'+a.j+'"'):a.C('Error loading image "'+a.j+'"')}a.s=!0;E(a)}}
|
||||
Y.prototype.reset=function(){if(this.h&&!this.s){for(var a=this.l,b=this.c,c=this.g,d=b&16383,b=b>>>a.c;0<c&&b<a.a.length;){var e=a.a[b],f=c,g=0,h,d=d||0,g=g||0;0>g&&g>=ka&&(g+=ja);g=Math.trunc(Math.abs(g))%ja;void 0===f&&(f=e.size);for(h=d;f--&&h<e.size;h++)e.l(g,d,e.aa+d);c-=16384;b++;d=0}this.X&&$b(this,this.X,this.S,this.R,this.c,!this.o)}this.s=!1};
|
||||
function $b(a,b,c,d,e,f){var g=!1;null==c&&(c=e);if(null!=c){for(g=0;g<b.length;g++)mb(a.l,c+g,b[g]);g=!0}g&&(null==d&&(R(a.f),f=!1),null!=d&&(a=a.f,a.La=d,a.g=d%Sa,f?a.b.w?a.b.v||Q(a):a.b.H=!0:a.o&&a.b.w?R(a)||a.m.b.reset||(a.o.g(),S(a.m,-1)):!1===f&&R(a),!a.b.v&&a.ma&&a.ma.stop()));return g}I(function(){for(var a=D(document,C,"ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Y(d);B(d,c)}});
|
||||
function ac(a){t.call(this,"SerialPort",a);this.h=a.upperCase;"string"==typeof this.h&&(this.h="true"==this.h);this.g=!0;this.c=[];var b=a.binding;if("console"!=b){var c;a=bc;b&&(void 0===c&&(c="Panel"),(c=z(c,this.id))&&(b=c.i[b])&&this.T(null,a,b))}this.a=this.j=null;this.exports={connect:this.Qa,receiveData:this.xa,receiveStatus:this.pb,setConnection:this.sb}}n(ac,t);k=ac.prototype;
|
||||
k.T=function(a,b,c){var d=this;switch(b){case bc:return this.i[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?q.Ja:q.Ua:46==c?b=q.Ja:a.ctrlKey&&c>=q.Ia&&c<=q.Ya&&(b=c-(q.Ia-q.Ra));b&&(a.preventDefault&&a.preventDefault(),d.xa(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==q.Ta&&(b=q.Sa);d.xa(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.xa(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};k.Y=function(a,b,c,d){this.m=a;this.l=b;this.f=c;this.o=d;E(this)};
|
||||
k.Qa=function(a){if(!this.a){var b=U(this.m,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ca(c[0]);if(d!=this.na)return;c=Ca(c[1]);if(this.a=oa(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.g);if(this.j=e.receiveData){this.g=a;this.status("Connected "+this.oa+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};k.U=function(a,b){if(!b)if(this.Qa(this.g),!a)this.reset();else if(!this.restore(a))return!1;return!0};
|
||||
k.O=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){var a=new O(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};k.xa=function(a){if("number"==typeof a)this.c.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.c.push(b)}else this.c=this.c.concat(a);return!0};k.pb=function(){};k.sb=function(a,b){return this.a?!1:(this.a=a,this.j=b,!0)};var bc="buffer";
|
||||
I(function(){for(var a=D(document,C,"serial"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new ac(d);B(d,c)}});
|
||||
function cc(a,b,c){t.call(this,"Computer",a);this.b.w=!1;this.K=null;dc(this,b);this.G=U(this,"autoPower",a,6);this.h=0;this.V=+a.busWidth||+a.buswidth;this.B=this.s=this.D=null;this.A=this.P=!1;this.u=this.j=null;this.N=this.J=!1;this.W=U(this,"url")||"";(Math.random()+.1).toString(36);this.c=ec(this);if(this.f=z("CPU",this.id)){this.o=z("Debugger",this.id);this.l=new nb({id:this.oa+".bus",busWidth:this.V},this.f,this.o);var d,e=y(this.id);if((this.g=z("Panel",this.id))&&this.g.ba)for(b=0;b<e.length;b++)d=
|
||||
e[b],d.C=this.g.C,d.I=this.g.I,d.ba=this.g.ba;this.I(L+" v1.34.0\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.Y&&d.Y(this,this.l,this.f,this.o);b=null;d=U(this,"resume",a);void 0!==d&&(1<d.length?b=this.s=d:this.a=parseInt(d,10));var f;if(a=U(this,"state")||(f=!0,a.state))this.D=b=a,f||(this.A=!0,this.a=fc),this.a&&(this.u=new O(this,"1.34.0"),Z(this.u)?b=null:delete this.u);!b&&this.a&&
|
||||
(b=gc(this))&&(this.A=!0);if(b){var g=this;H(b,null,!0,function(a,b,c){c?(g.s=null,g.A=!1,g.C("Unable to load machine state from server (error "+c+(b?": "+Ca(b):"")+")")):(g.B=b,g.P=!0);E(g)})}else E(this);this.i.power||(this.G=!0);!c&&this.G&&hc(this,this.ga)}else x("Unable to find CPU component")}n(cc,t);function dc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){x(d.message+" ("+c+")")}}a.K=b}
|
||||
function U(a,b,c,d){var e=b.toLowerCase(),e=Ka(b)||Ka(e);void 0===e&&a.K&&(e=a.K[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 hc(a,b,c){for(var d=y(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ua(f)){ua(f,function(){hc(a,b,c)});return}}b.call(a,c)}
|
||||
function ic(a,b){var c=new O(a,"1.34.0",jc);if(Z(c)&&kc(c)){var d=c.get(lc),e=b?b.get(lc):"unknown";d!=e&&(a.C("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=cc.prototype;
|
||||
k.ga=function(a){void 0===a&&(a=this.a||(this.B?mc:fc));if(!this.h){this.h++;var b=!1,c=!1;this.J=!1;var d=this.u||new O(this,"1.34.0");if(a==nc)b=!0;else if(a>fc){if(Z(d,this.B)){this.j=new O(this,"1.34.0",oc);Z(this.j)&&(pc(this,d),a=qc,rc(this.j));this.j.set(lc,Da());sc(this.j);var e=this.a&&!this.A;if(a==mc||na("Click OK to restore the previous "+L+" machine state, or CANCEL to reset the machine.")){if(c=kc(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Z(d,g):("error"==f&&"no machine state"!=
|
||||
g?(this.C("Error: "+g),"unable to verify user"==g&&(Ia(tc,""),this.c=null)):this.I(f+": "+g),rc(d),Z(d)?(c=kc(d),e=!0):c=!1))}e&&ic(this,c?d:null)}else a==qc&&d.clear()}else ic(this);delete this.B;delete this.u}e=y(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.f&&(c=uc(this,g,d,b,c));b=[d,a,c];a!=nc?hc(this,this.Oa,b):this.Oa(b)}};
|
||||
function uc(a,b,c,d,e){if(!b.b.w){b.b.w=!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.U(f,d)&&f&&(x("Unable to restore state for "+b.type),a.D&&!a.P?(c.clear(),a.a=fc,window&&window.location.reload()):a.J=!0,b.U(null),e=!1),!d&&b.Ma){var g=b.Ma.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(h){x("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
|
||||
k.Oa=function(a){var b=a[0],c=0>a[1];a=a[2];this.N=!0;this.b.w=!0;var d=this.i.power;d&&(d.textContent="Shutdown");this.f&&(uc(this,this.f,b,c,a),S(this,-2),this.f.H());this.J&&(pc(this,b),b.clear());!c&&this.j&&(this.j.clear(),delete this.j);this.h=0};
|
||||
function pc(a,b){if(na("There may be a problem with your "+L+" machine.\n\nTo help us diagnose it, click OK to send this "+L+" machine state to http://www.pcjs.org.")){var c=a.W;a=a.c||"";b=b.toString();var d={};d.app=L;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;H("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function vc(a,b,c){var d,e="none";if(a.h)return null;a.h--;var f=new O(a,"1.34.0"),g=new O(a,"1.34.0",jc),h=Da();g.set(lc,h);f.set(lc,h);f.set(wc,"1.34.0");f.set(xc,window?window.location.href:null);f.set(yc,window?window.navigator.userAgent:"");a.f&&a.f.O&&(c&&(b&&(a.f.b.H=a.f.b.v),R(a.f)),d=a.f.O(b,c),"object"===typeof d&&f.set(a.f.id,d),c&&(a.f.b.w=!1,!1===d&&(e=null)));for(var h=y(a.id),l=0;l<h.length;l++){var p=h[l];p.b.w&&(p.O&&(d=p.O(b,c),"object"===typeof d&&f.set(p.id,d)),c&&(p.b.w=!1,!1===
|
||||
d&&(e=null)))}e&&(c?(h=d=!1,b?(a.c&&zc(a,a.c,f.toString()),sc(g)&&sc(f)||(e=null,d=h=!0)):a.a&&(d=!0,h=a.a==Ac),d&&f.clear(h)):e=f.toString());c&&(a.b.w=!1,b=a.i.power)&&(b.textContent="Power");a.h=0;return e}k.reset=function(){this.b.reset=!0;this.l&&this.l.reset&&this.l.reset();this.f&&this.f.reset&&this.f.reset();for(var a=y(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.l&&c!==this.f&&c.reset&&c.reset()}this.b.reset=!1;S(this,-1)};
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
|
||||
X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X];
|
||||
function Zb(a){t.call(this,"ROM",a);this.N=this.a=null;this.j=+a.addr;this.g=+a.size;this.c=a.alias;"string"==typeof this.c&&(this.c=eval(this.c));this.h=a.file;this.u=xa(this.h);if(this.h){a=this.h;var b=ya(this.u);"json"!=b&&"hex"!=b&&(a=G()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;H(a,null,!0,function(a,b,f){f?(c.F("Unable to load ROM resource (error "+f+": "+a+")"),c.h=null):(la(c.oa,a,b),(a=Ea(a,b))?(c.a=a.H,c.N=a.N):c.h=null);$b(c)})}}n(Zb,t);
|
||||
Zb.prototype.Z=function(a,b,c,d){this.l=b;this.f=c;this.s=d;$b(this)};Zb.prototype.V=function(){this.N&&(this.s&&this.s.a(this.id,this.j,this.g,this.N),delete this.N);return!0};Zb.prototype.P=function(){return!0};
|
||||
function $b(a){if(!ua(a)){if(a.h){if(!a.a||!a.l)return;a.g||(a.g=a.a.length);if(a.a.length!=a.g){var b="ROM size ("+F(a.a.length,8,!0)+") does not match specified size ("+F(a.g,8,!0)+")";a.b.error=!0;a.F(b)}else{b=a.j;if(rb(a.l,b,a.g,zb)){var c;for(c=0;c<a.a.length;c++)nb(a.l,b+c,a.a[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.c?b.push(a.c):null!=a.c&&a.c.length&&(b=a.c);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.l,g=d.g,h=[],l=d.j>>>f.c;0<g&&l<f.a.length;)h.push(f.a[l++]),g-=16384;f=d.l;
|
||||
d=d.g;g=0;for(e>>>=f.c;0<d&&e<f.a.length;){l=h[g++];if(!l)break;f.a[e++]=l;d-=16384}}delete a.a}}}E(a)}}I(function(){for(var a=D(document,C,"rom"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Zb(d);B(d,c)}});
|
||||
function Y(a){t.call(this,"RAM",a);this.N=this.Y=null;this.c=+a.addr;this.g=+a.size;this.T=a.load;this.S=a.exec;null!=this.T&&(this.T=+this.T);null!=this.S&&(this.S=+this.S);this.h=this.u=!1;this.a=a.file;this.j=xa(this.a);if(this.a){a=this.a;var b=ya(this.j);"json"!=b&&"hex"!=b&&(a=G()+"/api/v1/dump?file="+this.a+"&format=bytes&decimal=true");var c=this;H(a,null,!0,function(a,b,f){f?(c.F("Unable to load RAM resource (error "+f+": "+a+")"),c.a=null):(la(c.oa,a,b),(a=Ea(a,b))?(c.Y=a.Y,c.N=a.N,null==
|
||||
c.T&&(c.T=a.T),null==c.S&&(c.S=a.S)):c.a=null);ac(c)})}}n(Y,t);Y.prototype.Z=function(a,b,c,d){this.l=b;this.f=c;this.s=d;ac(this)};Y.prototype.V=function(a,b){this.N&&(this.s&&this.s.a(this.id,this.c,this.g,this.N),delete this.N);b||this.reset();return!0};Y.prototype.P=function(){return!0};
|
||||
function ac(a){if(a.l&&(!a.h&&a.g&&(rb(a.l,a.c,a.g,1)?a.h=!0:a.g=0),!ua(a))){if(!a.h)x("No RAM allocated");else if(a.a){if(!a.Y)return;bc(a,a.Y,a.T,a.S,a.c)?a.status('Loaded image "'+a.j+'"'):a.F('Error loading image "'+a.j+'"')}a.u=!0;E(a)}}
|
||||
Y.prototype.reset=function(){if(this.h&&!this.u){for(var a=this.l,b=this.c,c=this.g,d=b&16383,b=b>>>a.c;0<c&&b<a.a.length;){var e=a.a[b],f=c,g=0,h,d=d||0,g=g||0;0>g&&g>=ka&&(g+=ja);g=Math.trunc(Math.abs(g))%ja;void 0===f&&(f=e.size);for(h=d;f--&&h<e.size;h++)e.l(g,d,e.aa+d);c-=16384;b++;d=0}this.Y&&bc(this,this.Y,this.T,this.S,this.c,!this.s)}this.u=!1};
|
||||
function bc(a,b,c,d,e,f){var g=!1;null==c&&(c=e);if(null!=c){for(g=0;g<b.length;g++)nb(a.l,c+g,b[g]);g=!0}g&&(null==d&&(R(a.f),f=!1),null!=d&&(a=a.f,a.La=d,a.h=d%Sa,f?a.b.B?a.b.w||ib(a):a.b.J=!0:a.s&&a.b.B?R(a)||a.o.b.reset||(a.s.g(),S(a.o,-1)):!1===f&&R(a),!a.b.w&&a.ma&&a.ma.stop()));return g}I(function(){for(var a=D(document,C,"ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Y(d);B(d,c)}});
|
||||
function cc(a){t.call(this,"SerialPort",a);this.h=a.upperCase;"string"==typeof this.h&&(this.h="true"==this.h);this.g=!0;this.c=[];var b=a.binding;if("console"!=b){var c;a=dc;b&&(void 0===c&&(c="Panel"),(c=z(c,this.id))&&(b=c.i[b])&&this.U(null,a,b))}this.a=this.j=null;this.exports={connect:this.Qa,receiveData:this.xa,receiveStatus:this.pb,setConnection:this.sb}}n(cc,t);k=cc.prototype;
|
||||
k.U=function(a,b,c){var d=this;switch(b){case dc:return this.i[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?q.Ja:q.Ua:46==c?b=q.Ja:a.ctrlKey&&c>=q.Ia&&c<=q.Ya&&(b=c-(q.Ia-q.Ra));b&&(a.preventDefault&&a.preventDefault(),d.xa(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==q.Ta&&(b=q.Sa);d.xa(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.xa(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};k.Z=function(a,b,c,d){this.o=a;this.l=b;this.f=c;this.s=d;E(this)};
|
||||
k.Qa=function(a){if(!this.a){var b=U(this.o,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ca(c[0]);if(d!=this.na)return;c=Ca(c[1]);if(this.a=oa(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.g);if(this.j=e.receiveData){this.g=a;this.status("Connected "+this.oa+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};k.V=function(a,b){if(!b)if(this.Qa(this.g),!a)this.reset();else if(!this.restore(a))return!1;return!0};
|
||||
k.P=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){var a=new P(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};k.xa=function(a){if("number"==typeof a)this.c.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.c.push(b)}else this.c=this.c.concat(a);return!0};k.pb=function(){};k.sb=function(a,b){return this.a?!1:(this.a=a,this.j=b,!0)};var dc="buffer";
|
||||
I(function(){for(var a=D(document,C,"serial"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new cc(d);B(d,c)}});
|
||||
function ec(a,b,c){t.call(this,"Computer",a);this.b.B=!1;this.M=null;fc(this,b);this.I=U(this,"autoPower",a,6);this.h=0;this.W=+a.busWidth||+a.buswidth;this.D=this.u=this.G=null;this.C=this.R=!1;this.v=this.j=null;this.O=this.L=!1;this.X=U(this,"url")||"";(Math.random()+.1).toString(36);this.c=gc(this);if(this.f=z("CPU",this.id)){this.s=z("Debugger",this.id);this.l=new ob({id:this.oa+".bus",busWidth:this.W},this.f,this.s);var d,e=y(this.id);if((this.g=z("Panel",this.id))&&this.g.ba)for(b=0;b<e.length;b++)d=
|
||||
e[b],d.F=this.g.F,d.K=this.g.K,d.ba=this.g.ba;this.K(L+" v1.34.0\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.Z&&d.Z(this,this.l,this.f,this.s);b=null;d=U(this,"resume",a);void 0!==d&&(1<d.length?b=this.u=d:this.a=parseInt(d,10));var f;if(a=U(this,"state")||(f=!0,a.state))this.G=b=a,f||(this.C=!0,this.a=hc),this.a&&(this.v=new P(this,"1.34.0"),Z(this.v)?b=null:delete this.v);!b&&this.a&&
|
||||
(b=ic(this))&&(this.C=!0);if(b){var g=this;H(b,null,!0,function(a,b,c){c?(g.u=null,g.C=!1,g.F("Unable to load machine state from server (error "+c+(b?": "+Ca(b):"")+")")):(g.D=b,g.R=!0);E(g)})}else E(this);this.i.power||(this.I=!0);!c&&this.I&&jc(this,this.ga)}else x("Unable to find CPU component")}n(ec,t);function fc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){x(d.message+" ("+c+")")}}a.M=b}
|
||||
function U(a,b,c,d){var e=b.toLowerCase(),e=Ka(b)||Ka(e);void 0===e&&a.M&&(e=a.M[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 jc(a,b,c){for(var d=y(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ua(f)){ua(f,function(){jc(a,b,c)});return}}b.call(a,c)}
|
||||
function kc(a,b){var c=new P(a,"1.34.0",lc);if(Z(c)&&mc(c)){var d=c.get(nc),e=b?b.get(nc):"unknown";d!=e&&(a.F("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=ec.prototype;
|
||||
k.ga=function(a){void 0===a&&(a=this.a||(this.D?oc:hc));if(!this.h){this.h++;var b=!1,c=!1;this.L=!1;var d=this.v||new P(this,"1.34.0");if(a==pc)b=!0;else if(a>hc){if(Z(d,this.D)){this.j=new P(this,"1.34.0",qc);Z(this.j)&&(rc(this,d),a=sc,tc(this.j));this.j.set(nc,Da());uc(this.j);var e=this.a&&!this.C;if(a==oc||na("Click OK to restore the previous "+L+" machine state, or CANCEL to reset the machine.")){if(c=mc(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Z(d,g):("error"==f&&"no machine state"!=
|
||||
g?(this.F("Error: "+g),"unable to verify user"==g&&(Ia(vc,""),this.c=null)):this.K(f+": "+g),tc(d),Z(d)?(c=mc(d),e=!0):c=!1))}e&&kc(this,c?d:null)}else a==sc&&d.clear()}else kc(this);delete this.D;delete this.v}e=y(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.f&&(c=wc(this,g,d,b,c));b=[d,a,c];a!=pc?jc(this,this.Oa,b):this.Oa(b)}};
|
||||
function wc(a,b,c,d,e){if(!b.b.B){b.b.B=!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.V(f,d)&&f&&(x("Unable to restore state for "+b.type),a.G&&!a.R?(c.clear(),a.a=hc,window&&window.location.reload()):a.L=!0,b.V(null),e=!1),!d&&b.Ma){var g=b.Ma.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(h){x("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
|
||||
k.Oa=function(a){var b=a[0],c=0>a[1];a=a[2];this.O=!0;this.b.B=!0;var d=this.i.power;d&&(d.textContent="Shutdown");this.f&&(wc(this,this.f,b,c,a),S(this,-2),this.f.J());this.L&&(rc(this,b),b.clear());!c&&this.j&&(this.j.clear(),delete this.j);this.h=0};
|
||||
function rc(a,b){if(na("There may be a problem with your "+L+" machine.\n\nTo help us diagnose it, click OK to send this "+L+" machine state to http://www.pcjs.org.")){var c=a.X;a=a.c||"";b=b.toString();var d={};d.app=L;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;H("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function xc(a,b,c){var d,e="none";if(a.h)return null;a.h--;var f=new P(a,"1.34.0"),g=new P(a,"1.34.0",lc),h=Da();g.set(nc,h);f.set(nc,h);f.set(yc,"1.34.0");f.set(zc,window?window.location.href:null);f.set(Ac,window?window.navigator.userAgent:"");a.f&&a.f.P&&(c&&(b&&(a.f.b.J=a.f.b.w),R(a.f)),d=a.f.P(b,c),"object"===typeof d&&f.set(a.f.id,d),c&&(a.f.b.B=!1,!1===d&&(e=null)));for(var h=y(a.id),l=0;l<h.length;l++){var p=h[l];p.b.B&&(p.P&&(d=p.P(b,c),"object"===typeof d&&f.set(p.id,d)),c&&(p.b.B=!1,!1===
|
||||
d&&(e=null)))}e&&(c?(h=d=!1,b?(a.c&&Bc(a,a.c,f.toString()),uc(g)&&uc(f)||(e=null,d=h=!0)):a.a&&(d=!0,h=a.a==Cc),d&&f.clear(h)):e=f.toString());c&&(a.b.B=!1,b=a.i.power)&&(b.textContent="Power");a.h=0;return e}k.reset=function(){this.b.reset=!0;this.l&&this.l.reset&&this.l.reset();this.f&&this.f.reset&&this.f.reset();for(var a=y(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.l&&c!==this.f&&c.reset&&c.reset()}this.b.reset=!1;S(this,-1)};
|
||||
k.start=function(a,b){for(var c=y(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}S(this,-1)};k.stop=function(a,b){for(var c=y(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}S(this,-1)};
|
||||
function S(a,b){if(a.f){var c=a.f,d=b||0,e=c.i.speed;e&&(0>=d||30<=(c.Aa+=d))&&(e.textContent=c.b.v?c.J.toFixed(2)+"Mhz":"Stopped",c.Aa=0)}if(a.g&&(a=a.g,b=b||0,a.B)){c=a.f.b.v;d=!!(a.f.c&8);if(0>=b||60<=(a.A+=b)){e=a.f.g;if(a.i.PC){var f=a.o&&a.o.j||8,e=e||0,e=8==f?wa(e,void 0):F(e,void 0);a.i.PC.textContent!=e&&(a.i.PC.textContent=e)}a.A=0}-1>b?a.c=a.f.g:0<b&&c&&!d&&(a.c=a.f.ka);P(a,a.c);M(a,a.h)}}
|
||||
k.T=function(a,b,c){var d=this;switch(b){case "power":return this.i[b]=c,c.onclick=function(){d.h||(d.b.w?vc(d,!1,!0):hc(d,d.ga))},!0;case "reset":return this.i[b]=c,c.onclick=function(){if(d.b.w&&!d.h)if(d.a&&!d.s){var a=na("Click OK to save changes to this "+L+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");vc(d,a,!0);!a&&d.D?window&&window.location.reload():d.ga(fc)}else d.reset(),d.f&&!d.o&&d.f.H()},!0;case "save":if(za())c.parentNode.removeChild(c);else return this.i[b]=
|
||||
c,c.onclick=function(){var a=ec(d,!0);if(a){var b=!!(d.a&&!d.s||d.D),c=vc(d,b);b?zc(d,a,c):d.C("Resume disabled, machine state not saved")}},!0}return!1};function ec(a,b){var c=a.c;c||((c=Ha(tc),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=Bc(a,c))||a.C("The user ID is invalid.")):b&&a.C("Browser local storage is not available"));return c}
|
||||
function Bc(a,b){a.c=null;b=H(G()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ia(tc,b.data),a.c=b.data)}catch(d){x(d.message+" ("+c+")")}return a.c}function gc(a){var b=null;a.c&&(b=G()+"/api/v1/user?req=load&user="+a.c+"&state="+Cc(a,"1.34.0"));return b}
|
||||
function zc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Cc(a,"1.34.0");d.data=c;b=H(G()+"/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.C("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.C(c),Ia(tc,""),a.c=null)}}
|
||||
var oc="failsafe",jc="validate",lc="timestamp",wc="version",xc="url",yc="browser",tc="user",nc=-1,fc=0,mc=1,qc=2,Ac=3;I(function(){for(var a=D(document,C+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=D(c,C,"computer"),e=0;e<c.length;e++){var f=c[e],g=A(f),g=new cc(g,d,!0);B(g,f);g.G&&hc(g,g.ga)}});J.show.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=z("Computer",c.id))&&c.N&&!c.b.w&&c.ga(nc)}});
|
||||
J.exit.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=z("Computer",c.id))&&c.b.w&&vc(c,!(!c.a||c.s),!0)}});function O(a,b,c){this.id=a.id;this.f="";this.a={};this.i=this.l=!1;this.key=Cc(a,b,c);rc(this,a.Xa)}k=O.prototype;k.set=function(a,b){try{this.a[a]=b}catch(c){}};k.get=function(a){return this.a[a]||null};k.data=function(){return this.a};function Z(a,b){return b?(a.f=b,a.i=!0,a.l=!1,!0):a.i?!0:Fa()&&(b=Ha(a.key))?(a.f=b,a.i=!0):!1}
|
||||
function kc(a){var b=!0;if(!a.l)try{a.a=JSON.parse(a.f),a.l=!0}catch(c){x(c.message||c),b=!1}return b}function sc(a){var b=!0;if(Fa()){var c=JSON.stringify(a.a);Ia(a.key,c)||(x("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.a?JSON.stringify(this.a):this.f};function rc(a,b){a.f="";a.a={};a.i=a.l=!1;b&&a.set("parms",b)}
|
||||
k.clear=function(a){rc(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 Cc(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 Dc=0;
|
||||
function Ec(a,b,c,d,e,f,g){f("Loading "+a+"...");H(a,null,!0,function(h,l,p){p?(l||(l="unable to load "+a+" ("+p+")"),g(l,null)):Fc(l,a,b,c,d,e,f,g)})}
|
||||
function Fc(a,b,c,d,e,f,g,h){function l(a,g){if(g)h(g,null);else{c&&(la(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(v){g=null,a=v.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?Gc(a,g,l):l(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Gc(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");H(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 l=h[0],p,r=/( [a-z]+=)(['"])(.*?)\2/g;p=r.exec(f);)l=0>l.indexOf(p[1])?l.replace(">",p[0]+">"):l.replace(new RegExp(p[1]+"(['\"])(.*?)\\1"),p[0]);h[0]!=l&&(g=g.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);Gc(a,b,c)}})}else c(a,null)}
|
||||
function Hc(a,b,c,d,e){function f(a){if(void 0===l){var b=h&&D(h,"machine-warning");l=b&&b[0]||h}l&&(l.innerHTML=Aa(a))}function g(a){f("Error: "+a);p&&(--Dc||K(!0));p=!1}var h,l,p=!0;Dc++;ma[b]={};try{if(h=document.getElementById(b)){var r;if("object"==typeof resources&&(r=resources.css)){var v=document.head||document.getElementsByTagName("head")[0],ha=document.createElement("style");ha.type="text/css";ha.styleSheet?ha.styleSheet.cssText=r:ha.appendChild(document.createTextNode(r));v.appendChild(ha)}d||
|
||||
(r=a,"pdp"==a.substr(0,3)&&(r="pdpjs"),d="/versions/"+r+"/1.34.0/components.xsl");r=function(e,l){l?Ec(d,null,a,null,!1,f,function(a,e){e?(la(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=l.transformNode(e))?(h.outerHTML=e,--Dc||K(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(l,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Dc||
|
||||
K(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Ec(c,b,a,e,!0,f,r):Fc(c,null,b,a,e,!1,f,r)}else g("missing machine element: "+b)}catch(Ic){g(Ic.message)}return p}window.embedPDP10=function(a,b,c,d){K(!1);return Hc("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){K(!1);return Hc("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return z(b,a+".machine")};
|
||||
function S(a,b){if(a.f){var c=a.f,d=b||0,e=c.i.speed;e&&(0>=d||30<=(c.Aa+=d))&&(e.textContent=c.b.w?c.L.toFixed(2)+"Mhz":"Stopped",c.Aa=0)}if(a.g&&(a=a.g,b=b||0,a.D)){c=a.f.b.w;d=!!(a.f.g&8);if(0>=b||60<=(a.C+=b)){e=a.f.h;if(a.i.PC){var f=a.s&&a.s.j||8,e=e||0,e=8==f?wa(e,void 0):F(e,void 0);a.i.PC.textContent!=e&&(a.i.PC.textContent=e)}a.C=0}-1>b?a.c=a.f.h:0<b&&c&&!d&&(a.c=a.f.ka);Q(a,a.c);N(a,a.h)}}
|
||||
k.U=function(a,b,c){var d=this;switch(b){case "power":return this.i[b]=c,c.onclick=function(){d.h||(d.b.B?xc(d,!1,!0):jc(d,d.ga))},!0;case "reset":return this.i[b]=c,c.onclick=function(){if(d.b.B&&!d.h)if(d.a&&!d.u){var a=na("Click OK to save changes to this "+L+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");xc(d,a,!0);!a&&d.G?window&&window.location.reload():d.ga(hc)}else d.reset(),d.f&&!d.s&&d.f.J()},!0;case "save":if(za())c.parentNode.removeChild(c);else return this.i[b]=
|
||||
c,c.onclick=function(){var a=gc(d,!0);if(a){var b=!!(d.a&&!d.u||d.G),c=xc(d,b);b?Bc(d,a,c):d.F("Resume disabled, machine state not saved")}},!0}return!1};function gc(a,b){var c=a.c;c||((c=Ha(vc),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=Dc(a,c))||a.F("The user ID is invalid.")):b&&a.F("Browser local storage is not available"));return c}
|
||||
function Dc(a,b){a.c=null;b=H(G()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ia(vc,b.data),a.c=b.data)}catch(d){x(d.message+" ("+c+")")}return a.c}function ic(a){var b=null;a.c&&(b=G()+"/api/v1/user?req=load&user="+a.c+"&state="+Ec(a,"1.34.0"));return b}
|
||||
function Bc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Ec(a,"1.34.0");d.data=c;b=H(G()+"/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.F("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.F(c),Ia(vc,""),a.c=null)}}
|
||||
var qc="failsafe",lc="validate",nc="timestamp",yc="version",zc="url",Ac="browser",vc="user",pc=-1,hc=0,oc=1,sc=2,Cc=3;I(function(){for(var a=D(document,C+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=D(c,C,"computer"),e=0;e<c.length;e++){var f=c[e],g=A(f),g=new ec(g,d,!0);B(g,f);g.I&&jc(g,g.ga)}});J.show.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=z("Computer",c.id))&&c.O&&!c.b.B&&c.ga(pc)}});
|
||||
J.exit.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=z("Computer",c.id))&&c.b.B&&xc(c,!(!c.a||c.u),!0)}});function P(a,b,c){this.id=a.id;this.f="";this.a={};this.i=this.l=!1;this.key=Ec(a,b,c);tc(this,a.Xa)}k=P.prototype;k.set=function(a,b){try{this.a[a]=b}catch(c){}};k.get=function(a){return this.a[a]||null};k.data=function(){return this.a};function Z(a,b){return b?(a.f=b,a.i=!0,a.l=!1,!0):a.i?!0:Fa()&&(b=Ha(a.key))?(a.f=b,a.i=!0):!1}
|
||||
function mc(a){var b=!0;if(!a.l)try{a.a=JSON.parse(a.f),a.l=!0}catch(c){x(c.message||c),b=!1}return b}function uc(a){var b=!0;if(Fa()){var c=JSON.stringify(a.a);Ia(a.key,c)||(x("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.a?JSON.stringify(this.a):this.f};function tc(a,b){a.f="";a.a={};a.i=a.l=!1;b&&a.set("parms",b)}
|
||||
k.clear=function(a){tc(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 Ec(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 Fc=0;
|
||||
function Gc(a,b,c,d,e,f,g){f("Loading "+a+"...");H(a,null,!0,function(h,l,p){p?(l||(l="unable to load "+a+" ("+p+")"),g(l,null)):Hc(l,a,b,c,d,e,f,g)})}
|
||||
function Hc(a,b,c,d,e,f,g,h){function l(a,g){if(g)h(g,null);else{c&&(la(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(v){g=null,a=v.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?Ic(a,g,l):l(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Ic(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");H(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 l=h[0],p,r=/( [a-z]+=)(['"])(.*?)\2/g;p=r.exec(f);)l=0>l.indexOf(p[1])?l.replace(">",p[0]+">"):l.replace(new RegExp(p[1]+"(['\"])(.*?)\\1"),p[0]);h[0]!=l&&(g=g.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);Ic(a,b,c)}})}else c(a,null)}
|
||||
function Jc(a,b,c,d,e){function f(a){if(void 0===l){var b=h&&D(h,"machine-warning");l=b&&b[0]||h}l&&(l.innerHTML=Aa(a))}function g(a){f("Error: "+a);p&&(--Fc||K(!0));p=!1}var h,l,p=!0;Fc++;ma[b]={};try{if(h=document.getElementById(b)){var r;if("object"==typeof resources&&(r=resources.css)){var v=document.head||document.getElementsByTagName("head")[0],ia=document.createElement("style");ia.type="text/css";ia.styleSheet?ia.styleSheet.cssText=r:ia.appendChild(document.createTextNode(r));v.appendChild(ia)}d||
|
||||
(r=a,"pdp"==a.substr(0,3)&&(r="pdpjs"),d="/versions/"+r+"/1.34.0/components.xsl");r=function(e,l){l?Gc(d,null,a,null,!1,f,function(a,e){e?(la(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=l.transformNode(e))?(h.outerHTML=e,--Fc||K(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(l,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Fc||
|
||||
K(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Gc(c,b,a,e,!0,f,r):Hc(c,null,b,a,e,!1,f,r)}else g("missing machine element: "+b)}catch(Kc){g(Kc.message)}return p}window.embedPDP10=function(a,b,c,d){K(!1);return Jc("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){K(!1);return Jc("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return z(b,a+".machine")};
|
||||
window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!qa[a]){for(var c=!0,d=qa,e=a,f=b.length,g=[],h=[],l="",p=null,r=0;r<f;r++){var v=b[r];if('"'==v||"'"==v)p&&v!=p?l+=v:(p?p=null:p=v,l&&(h.push(l),l=""));else{if(!p){if("\r"==v||"\n"==v)v=";";if(" "==v||"\t"==v||";"==v){l&&(h.push(l),l="");";"==v&&h.length&&(g.push(h),h=[]);continue}}l+=v}}l&&h.push(l);h.length&&g.push(h);d[e]=g;pa(a)||(c=!1)}return c};window.enableEvents=K;window.sendEvent=Qa;})();//# sourceMappingURL=/tmp/pdpjs/1.34.0/pdp10.map
|
||||
|
|
|
|||
Loading…
Reference in a new issue