Immunized cursor blink rate from changes to CPU speed

This commit is contained in:
Jeff Parsons 2016-08-23 12:52:11 -07:00
commit c1b34a87ed
5 changed files with 219 additions and 201 deletions

View file

@ -79,21 +79,21 @@ function CPU8080(parmsCPU, nCyclesDefault)
var nMultiplier = parmsCPU['multiplier'] || 1; var nMultiplier = parmsCPU['multiplier'] || 1;
this.aCounts = {}; this.counts = {};
this.aCounts.nCyclesPerSecond = nCycles; this.counts.nCyclesPerSecond = nCycles;
this.aCounts.nVideoUpdates = 0; this.counts.nVideoUpdates = 0;
/* /*
* nCyclesMultiplier replaces the old "speed" variable (0, 1, 2) and eliminates the need for * nCyclesMultiplier replaces the old "speed" variable (0, 1, 2) and eliminates the need for
* the constants (SPEED_SLOW, SPEED_FAST and SPEED_MAX). The UI simply doubles the multiplier * the constants (SPEED_SLOW, SPEED_FAST and SPEED_MAX). The UI simply doubles the multiplier
* until we've exceeded the host's speed limit and then starts the multiplier over at 1. * until we've exceeded the host's speed limit and then starts the multiplier over at 1.
*/ */
this.aCounts.nCyclesMultiplier = nMultiplier; this.counts.nCyclesMultiplier = nMultiplier;
this.aCounts.mhzDefault = Math.round(this.aCounts.nCyclesPerSecond / 10000) / 100; this.counts.mhzDefault = Math.round(this.counts.nCyclesPerSecond / 10000) / 100;
/* /*
* TODO: Take care of this with an initial setSpeed() call instead? * TODO: Take care of this with an initial setSpeed() call instead?
*/ */
this.aCounts.mhzTarget = this.aCounts.mhzDefault * this.aCounts.nCyclesMultiplier; this.counts.mhzTarget = this.counts.mhzDefault * this.counts.nCyclesMultiplier;
/* /*
* We add a number of flags to the set initialized by Component * We add a number of flags to the set initialized by Component
@ -117,10 +117,10 @@ function CPU8080(parmsCPU, nCyclesDefault)
* and call resetChecksum(). * and call resetChecksum().
*/ */
this.flags.fChecksum = false; this.flags.fChecksum = false;
this.aCounts.nChecksum = this.aCounts.nCyclesChecksumNext = 0; this.counts.nChecksum = this.counts.nCyclesChecksumNext = 0;
this.aCounts.nCyclesChecksumStart = parmsCPU["csStart"]; this.counts.nCyclesChecksumStart = parmsCPU["csStart"];
this.aCounts.nCyclesChecksumInterval = parmsCPU["csInterval"]; this.counts.nCyclesChecksumInterval = parmsCPU["csInterval"];
this.aCounts.nCyclesChecksumStop = parmsCPU["csStop"]; this.counts.nCyclesChecksumStop = parmsCPU["csStop"];
/* /*
* Array of countdown timers managed by addTimer() and setTimer(). * Array of countdown timers managed by addTimer() and setTimer().
@ -141,16 +141,16 @@ Component.subclass(CPU8080);
* calcCycles(), which uses the nCyclesPerSecond passed to the constructor as a starting * calcCycles(), which uses the nCyclesPerSecond passed to the constructor as a starting
* point and computes the following variables: * point and computes the following variables:
* *
* this.aCounts.nCyclesPerYield (this.aCounts.nCyclesPerSecond / CPU8080.YIELDS_PER_SECOND) * this.counts.nCyclesPerYield (this.counts.nCyclesPerSecond / CPU8080.YIELDS_PER_SECOND)
* this.aCounts.nCyclesPerVideoUpdate (this.aCounts.nCyclesPerSecond / CPU8080.VIDEO_UPDATES_PER_SECOND) * this.counts.nCyclesPerVideoUpdate (this.counts.nCyclesPerSecond / CPU8080.VIDEO_UPDATES_PER_SECOND)
* this.aCounts.nCyclesPerStatusUpdate (this.aCounts.nCyclesPerSecond / CPU8080.STATUS_UPDATES_PER_SECOND) * this.counts.nCyclesPerStatusUpdate (this.counts.nCyclesPerSecond / CPU8080.STATUS_UPDATES_PER_SECOND)
* *
* The above variables are also multiplied by any cycle multiplier in effect, via setSpeed(), * The above variables are also multiplied by any cycle multiplier in effect, via setSpeed(),
* and then they're used to initialize another set of variables for each runCPU() iteration: * and then they're used to initialize another set of variables for each runCPU() iteration:
* *
* this.aCounts.nCyclesNextYield <= this.aCounts.nCyclesPerYield * this.counts.nCyclesNextYield <= this.counts.nCyclesPerYield
* this.aCounts.nCyclesNextVideoUpdate <= this.aCounts.nCyclesPerVideoUpdate * this.counts.nCyclesNextVideoUpdate <= this.counts.nCyclesPerVideoUpdate
* this.aCounts.nCyclesNextStatusUpdate <= this.aCounts.nCyclesPerStatusUpdate * this.counts.nCyclesNextStatusUpdate <= this.counts.nCyclesPerStatusUpdate
*/ */
CPU8080.YIELDS_PER_SECOND = 30; CPU8080.YIELDS_PER_SECOND = 30;
CPU8080.VIDEO_UPDATES_PER_SECOND = 60; CPU8080.VIDEO_UPDATES_PER_SECOND = 60;
@ -207,7 +207,7 @@ CPU8080.prototype.initBus = function(cmp, bus, cpu, dbg)
*/ */
CPU8080.prototype.reset = function() CPU8080.prototype.reset = function()
{ {
this.aCounts.nVideoUpdates = 0; this.counts.nVideoUpdates = 0;
}; };
/** /**
@ -375,16 +375,16 @@ CPU8080.prototype.getChecksum = function()
*/ */
CPU8080.prototype.resetChecksum = function() CPU8080.prototype.resetChecksum = function()
{ {
if (this.aCounts.nCyclesChecksumStart === undefined) this.aCounts.nCyclesChecksumStart = 0; if (this.counts.nCyclesChecksumStart === undefined) this.counts.nCyclesChecksumStart = 0;
if (this.aCounts.nCyclesChecksumInterval === undefined) this.aCounts.nCyclesChecksumInterval = -1; if (this.counts.nCyclesChecksumInterval === undefined) this.counts.nCyclesChecksumInterval = -1;
if (this.aCounts.nCyclesChecksumStop === undefined) this.aCounts.nCyclesChecksumStop = -1; if (this.counts.nCyclesChecksumStop === undefined) this.counts.nCyclesChecksumStop = -1;
this.flags.fChecksum = (this.aCounts.nCyclesChecksumStart >= 0 && this.aCounts.nCyclesChecksumInterval > 0); this.flags.fChecksum = (this.counts.nCyclesChecksumStart >= 0 && this.counts.nCyclesChecksumInterval > 0);
if (this.flags.fChecksum) { if (this.flags.fChecksum) {
this.aCounts.nChecksum = 0; this.counts.nChecksum = 0;
this.aCounts.nCyclesChecksumNext = this.aCounts.nCyclesChecksumStart - this.nTotalCycles; this.counts.nCyclesChecksumNext = this.counts.nCyclesChecksumStart - this.nTotalCycles;
/* /*
* this.aCounts.nCyclesChecksumNext = this.aCounts.nCyclesChecksumStart + this.aCounts.nCyclesChecksumInterval - * this.counts.nCyclesChecksumNext = this.counts.nCyclesChecksumStart + this.counts.nCyclesChecksumInterval -
* (this.nTotalCycles % this.aCounts.nCyclesChecksumInterval); * (this.nTotalCycles % this.counts.nCyclesChecksumInterval);
*/ */
return true; return true;
} }
@ -409,15 +409,15 @@ CPU8080.prototype.updateChecksum = function(nCycles)
* Get a 32-bit summation of the current CPU state and add it to our running 32-bit checksum * Get a 32-bit summation of the current CPU state and add it to our running 32-bit checksum
*/ */
var fDisplay = false; var fDisplay = false;
this.aCounts.nChecksum = (this.aCounts.nChecksum + this.getChecksum())|0; this.counts.nChecksum = (this.counts.nChecksum + this.getChecksum())|0;
this.aCounts.nCyclesChecksumNext -= nCycles; this.counts.nCyclesChecksumNext -= nCycles;
if (this.aCounts.nCyclesChecksumNext <= 0) { if (this.counts.nCyclesChecksumNext <= 0) {
this.aCounts.nCyclesChecksumNext += this.aCounts.nCyclesChecksumInterval; this.counts.nCyclesChecksumNext += this.counts.nCyclesChecksumInterval;
fDisplay = true; fDisplay = true;
} }
if (this.aCounts.nCyclesChecksumStop >= 0) { if (this.counts.nCyclesChecksumStop >= 0) {
if (this.aCounts.nCyclesChecksumStop <= this.getCycles()) { if (this.counts.nCyclesChecksumStop <= this.getCycles()) {
this.aCounts.nCyclesChecksumInterval = this.aCounts.nCyclesChecksumStop = -1; this.counts.nCyclesChecksumInterval = this.counts.nCyclesChecksumStop = -1;
this.resetChecksum(); this.resetChecksum();
this.stopCPU(); this.stopCPU();
fDisplay = true; fDisplay = true;
@ -438,7 +438,7 @@ CPU8080.prototype.updateChecksum = function(nCycles)
*/ */
CPU8080.prototype.displayChecksum = function() CPU8080.prototype.displayChecksum = function()
{ {
this.println(this.getCycles() + " cycles: " + "checksum=" + str.toHex(this.aCounts.nChecksum)); this.println(this.getCycles() + " cycles: " + "checksum=" + str.toHex(this.counts.nChecksum));
}; };
/** /**
@ -522,7 +522,7 @@ CPU8080.prototype.setBinding = function(sHTMLType, sBinding, control, sValue)
case "setSpeed": case "setSpeed":
this.bindings[sBinding] = control; this.bindings[sBinding] = control;
control.onclick = function onClickSetSpeed() { control.onclick = function onClickSetSpeed() {
cpu.setSpeed(cpu.aCounts.nCyclesMultiplier << 1, true); cpu.setSpeed(cpu.counts.nCyclesMultiplier << 1, true);
}; };
control.textContent = this.getSpeedTarget(); control.textContent = this.getSpeedTarget();
fBound = true; fBound = true;
@ -622,26 +622,26 @@ CPU8080.prototype.calcCycles = function(fRecalc)
*/ */
var vMultiplier = 1; var vMultiplier = 1;
if (fRecalc) { if (fRecalc) {
if (this.aCounts.nCyclesMultiplier > 1 && this.aCounts.mhz) { if (this.counts.nCyclesMultiplier > 1 && this.counts.mhz) {
vMultiplier = (this.aCounts.mhz / this.aCounts.mhzDefault); vMultiplier = (this.counts.mhz / this.counts.mhzDefault);
} }
} }
this.aCounts.msPerYield = Math.round(1000 / CPU8080.YIELDS_PER_SECOND); this.counts.msPerYield = Math.round(1000 / CPU8080.YIELDS_PER_SECOND);
this.aCounts.nCyclesPerBurst = Math.floor(this.aCounts.nCyclesPerSecond / nMostUpdatesPerSecond * vMultiplier); this.counts.nCyclesPerBurst = Math.floor(this.counts.nCyclesPerSecond / nMostUpdatesPerSecond * vMultiplier);
this.aCounts.nCyclesPerYield = Math.floor(this.aCounts.nCyclesPerSecond / CPU8080.YIELDS_PER_SECOND * vMultiplier); this.counts.nCyclesPerYield = Math.floor(this.counts.nCyclesPerSecond / CPU8080.YIELDS_PER_SECOND * vMultiplier);
this.aCounts.nCyclesPerVideoUpdate = Math.floor(this.aCounts.nCyclesPerSecond / this.refreshRate * vMultiplier); this.counts.nCyclesPerVideoUpdate = Math.floor(this.counts.nCyclesPerSecond / this.refreshRate * vMultiplier);
this.aCounts.nCyclesPerStatusUpdate = Math.floor(this.aCounts.nCyclesPerSecond / CPU8080.STATUS_UPDATES_PER_SECOND * vMultiplier); this.counts.nCyclesPerStatusUpdate = Math.floor(this.counts.nCyclesPerSecond / CPU8080.STATUS_UPDATES_PER_SECOND * vMultiplier);
/* /*
* And initialize "next" yield, video update, and status update cycle "threshold" counters to those "per" values * And initialize "next" yield, video update, and status update cycle "threshold" counters to those "per" values
*/ */
if (!fRecalc) { if (!fRecalc) {
this.aCounts.nCyclesNextYield = this.aCounts.nCyclesPerYield; this.counts.nCyclesNextYield = this.counts.nCyclesPerYield;
this.aCounts.nCyclesNextVideoUpdate = this.aCounts.nCyclesPerVideoUpdate; this.counts.nCyclesNextVideoUpdate = this.counts.nCyclesPerVideoUpdate;
this.aCounts.nCyclesNextStatusUpdate = this.aCounts.nCyclesPerStatusUpdate; this.counts.nCyclesNextStatusUpdate = this.counts.nCyclesPerStatusUpdate;
} }
this.aCounts.nCyclesRecalc = 0; this.counts.nCyclesRecalc = 0;
}; };
/** /**
@ -664,11 +664,11 @@ CPU8080.prototype.calcCycles = function(fRecalc)
CPU8080.prototype.getCycles = function(fScaled) CPU8080.prototype.getCycles = function(fScaled)
{ {
var nCycles = this.nTotalCycles + this.nRunCycles + this.nBurstCycles - this.nStepCycles; var nCycles = this.nTotalCycles + this.nRunCycles + this.nBurstCycles - this.nStepCycles;
if (fScaled && this.aCounts.nCyclesMultiplier > 1 && this.aCounts.mhz > this.aCounts.mhzDefault) { if (fScaled && this.counts.nCyclesMultiplier > 1 && this.counts.mhz > this.counts.mhzDefault) {
/* /*
* We could scale the current cycle count by the current effective speed (this.aCounts.mhz); eg: * We could scale the current cycle count by the current effective speed (this.counts.mhz); eg:
* *
* nCycles = Math.round(nCycles / (this.aCounts.mhz / this.aCounts.mhzDefault)); * nCycles = Math.round(nCycles / (this.counts.mhz / this.counts.mhzDefault));
* *
* but that speed will fluctuate somewhat: large fluctuations at first, but increasingly smaller * but that speed will fluctuate somewhat: large fluctuations at first, but increasingly smaller
* fluctuations after each burst of instructions that runCPU() executes. * fluctuations after each burst of instructions that runCPU() executes.
@ -683,7 +683,7 @@ CPU8080.prototype.getCycles = function(fScaled)
* interface allows any value, as does the CPU "multiplier" parmsCPU property (from the machine's * interface allows any value, as does the CPU "multiplier" parmsCPU property (from the machine's
* XML file). * XML file).
*/ */
nCycles = Math.round(nCycles / this.aCounts.nCyclesMultiplier); nCycles = Math.round(nCycles / this.counts.nCyclesMultiplier);
} }
return nCycles; return nCycles;
}; };
@ -698,7 +698,7 @@ CPU8080.prototype.getCycles = function(fScaled)
*/ */
CPU8080.prototype.getCyclesPerSecond = function() CPU8080.prototype.getCyclesPerSecond = function()
{ {
return this.aCounts.nCyclesPerSecond; return this.counts.nCyclesPerSecond;
}; };
/** /**
@ -712,7 +712,7 @@ CPU8080.prototype.getCyclesPerSecond = function()
*/ */
CPU8080.prototype.resetCycles = function() CPU8080.prototype.resetCycles = function()
{ {
this.aCounts.mhz = 0; this.counts.mhz = 0;
this.nTotalCycles = this.nRunCycles = this.nBurstCycles = this.nStepCycles = 0; this.nTotalCycles = this.nRunCycles = this.nBurstCycles = this.nStepCycles = 0;
this.resetChecksum(); this.resetChecksum();
this.setSpeed(1); this.setSpeed(1);
@ -726,7 +726,7 @@ CPU8080.prototype.resetCycles = function()
*/ */
CPU8080.prototype.getSpeed = function() CPU8080.prototype.getSpeed = function()
{ {
return this.aCounts.nCyclesMultiplier; return this.counts.nCyclesMultiplier;
}; };
/** /**
@ -740,7 +740,7 @@ CPU8080.prototype.getSpeedCurrent = function()
/* /*
* TODO: Has toFixed() been "fixed" in all browsers (eg, IE) to return a rounded value now? * TODO: Has toFixed() been "fixed" in all browsers (eg, IE) to return a rounded value now?
*/ */
return ((this.flags.fRunning && this.aCounts.mhz)? (this.aCounts.mhz.toFixed(2) + "Mhz") : "Stopped"); return ((this.flags.fRunning && this.counts.mhz)? (this.counts.mhz.toFixed(2) + "Mhz") : "Stopped");
}; };
/** /**
@ -754,7 +754,7 @@ CPU8080.prototype.getSpeedTarget = function()
/* /*
* TODO: Has toFixed() been "fixed" in all browsers (eg, IE) to return a rounded value now? * TODO: Has toFixed() been "fixed" in all browsers (eg, IE) to return a rounded value now?
*/ */
return this.aCounts.mhzTarget.toFixed(2) + "Mhz"; return this.counts.mhzTarget.toFixed(2) + "Mhz";
}; };
/** /**
@ -778,15 +778,15 @@ CPU8080.prototype.setSpeed = function(nMultiplier, fUpdateFocus)
/* /*
* If we haven't reached 80% (0.8) of the current target speed, revert to a multiplier of one (1). * If we haven't reached 80% (0.8) of the current target speed, revert to a multiplier of one (1).
*/ */
if (this.aCounts.mhz / this.aCounts.mhzTarget < 0.8) { if (this.counts.mhz / this.counts.mhzTarget < 0.8) {
nMultiplier = 1; nMultiplier = 1;
} else { } else {
fSuccess = true; fSuccess = true;
} }
this.aCounts.nCyclesMultiplier = nMultiplier; this.counts.nCyclesMultiplier = nMultiplier;
var mhz = this.aCounts.mhzDefault * this.aCounts.nCyclesMultiplier; var mhz = this.counts.mhzDefault * this.counts.nCyclesMultiplier;
if (this.aCounts.mhzTarget != mhz) { if (this.counts.mhzTarget != mhz) {
this.aCounts.mhzTarget = mhz; this.counts.mhzTarget = mhz;
var sSpeed = this.getSpeedTarget(); var sSpeed = this.getSpeedTarget();
var controlSpeed = this.bindings["setSpeed"]; var controlSpeed = this.bindings["setSpeed"];
if (controlSpeed) controlSpeed.textContent = sSpeed; if (controlSpeed) controlSpeed.textContent = sSpeed;
@ -796,8 +796,8 @@ CPU8080.prototype.setSpeed = function(nMultiplier, fUpdateFocus)
} }
this.addCycles(this.nRunCycles); this.addCycles(this.nRunCycles);
this.nRunCycles = 0; this.nRunCycles = 0;
this.aCounts.msStartRun = usr.getTime(); this.counts.msStartRun = usr.getTime();
this.aCounts.msEndThisRun = 0; this.counts.msEndThisRun = 0;
this.calcCycles(); this.calcCycles();
return fSuccess; return fSuccess;
}; };
@ -812,7 +812,7 @@ CPU8080.prototype.setSpeed = function(nMultiplier, fUpdateFocus)
CPU8080.prototype.calcSpeed = function(nCycles, msElapsed) CPU8080.prototype.calcSpeed = function(nCycles, msElapsed)
{ {
if (msElapsed) { if (msElapsed) {
this.aCounts.mhz = Math.round(nCycles / (msElapsed * 10)) / 100; this.counts.mhz = Math.round(nCycles / (msElapsed * 10)) / 100;
if (msElapsed >= 86400000) { if (msElapsed >= 86400000) {
this.nTotalCycles = 0; this.nTotalCycles = 0;
this.setSpeed(); // reset all counters once per day so that we never have to worry about overflow this.setSpeed(); // reset all counters once per day so that we never have to worry about overflow
@ -827,11 +827,11 @@ CPU8080.prototype.calcSpeed = function(nCycles, msElapsed)
*/ */
CPU8080.prototype.calcStartTime = function() CPU8080.prototype.calcStartTime = function()
{ {
if (this.aCounts.nCyclesRecalc >= this.aCounts.nCyclesPerSecond) { if (this.counts.nCyclesRecalc >= this.counts.nCyclesPerSecond) {
this.calcCycles(true); this.calcCycles(true);
} }
this.aCounts.nCyclesThisRun = 0; this.counts.nCyclesThisRun = 0;
this.aCounts.msStartThisRun = usr.getTime(); this.counts.msStartThisRun = usr.getTime();
/* /*
* Try to detect situations where the browser may have throttled us, such as when the user switches * Try to detect situations where the browser may have throttled us, such as when the user switches
@ -858,19 +858,19 @@ CPU8080.prototype.calcStartTime = function()
* to hit its target speed, since you would expect any instruction that displays a message to be an * to hit its target speed, since you would expect any instruction that displays a message to be an
* EXTREMELY slow instruction. * EXTREMELY slow instruction.
*/ */
if (this.aCounts.msEndThisRun) { if (this.counts.msEndThisRun) {
var msDelta = this.aCounts.msStartThisRun - this.aCounts.msEndThisRun; var msDelta = this.counts.msStartThisRun - this.counts.msEndThisRun;
if (msDelta > this.aCounts.msPerYield) { if (msDelta > this.counts.msPerYield) {
if (MAXDEBUG) this.println("large time delay: " + msDelta + "ms"); if (MAXDEBUG) this.println("large time delay: " + msDelta + "ms");
this.aCounts.msStartRun += msDelta; this.counts.msStartRun += msDelta;
/* /*
* Bumping msStartRun forward should NEVER cause it to exceed msStartThisRun; however, just * Bumping msStartRun forward should NEVER cause it to exceed msStartThisRun; however, just
* in case, I make absolutely sure it cannot happen, since doing so could result in negative * in case, I make absolutely sure it cannot happen, since doing so could result in negative
* speed calculations. * speed calculations.
*/ */
this.assert(this.aCounts.msStartRun <= this.aCounts.msStartThisRun); this.assert(this.counts.msStartRun <= this.counts.msStartThisRun);
if (this.aCounts.msStartRun > this.aCounts.msStartThisRun) { if (this.counts.msStartRun > this.counts.msStartThisRun) {
this.aCounts.msStartRun = this.aCounts.msStartThisRun; this.counts.msStartRun = this.counts.msStartThisRun;
} }
} }
} }
@ -884,47 +884,47 @@ CPU8080.prototype.calcStartTime = function()
*/ */
CPU8080.prototype.calcRemainingTime = function() CPU8080.prototype.calcRemainingTime = function()
{ {
this.aCounts.msEndThisRun = usr.getTime(); this.counts.msEndThisRun = usr.getTime();
var msYield = this.aCounts.msPerYield; var msYield = this.counts.msPerYield;
if (this.aCounts.nCyclesThisRun) { if (this.counts.nCyclesThisRun) {
/* /*
* Normally, we would assume we executed a full quota of work over msPerYield, but since the CPU * Normally, we would assume we executed a full quota of work over msPerYield, but since the CPU
* now has the option of calling yieldCPU(), that might not be true. If nCyclesThisRun is correct, then * now has the option of calling yieldCPU(), that might not be true. If nCyclesThisRun is correct, then
* the ratio of nCyclesThisRun/nCyclesPerYield should represent the percentage of work we performed, * the ratio of nCyclesThisRun/nCyclesPerYield should represent the percentage of work we performed,
* and so applying that percentage to msPerYield should give us a better estimate of work vs. time. * and so applying that percentage to msPerYield should give us a better estimate of work vs. time.
*/ */
msYield = Math.round(msYield * this.aCounts.nCyclesThisRun / this.aCounts.nCyclesPerYield); msYield = Math.round(msYield * this.counts.nCyclesThisRun / this.counts.nCyclesPerYield);
} }
var msElapsedThisRun = this.aCounts.msEndThisRun - this.aCounts.msStartThisRun; var msElapsedThisRun = this.counts.msEndThisRun - this.counts.msStartThisRun;
var msRemainsThisRun = msYield - msElapsedThisRun; var msRemainsThisRun = msYield - msElapsedThisRun;
/* /*
* We could pass only "this run" results to calcSpeed(): * We could pass only "this run" results to calcSpeed():
* *
* nCycles = this.aCounts.nCyclesThisRun; * nCycles = this.counts.nCyclesThisRun;
* msElapsed = msElapsedThisRun; * msElapsed = msElapsedThisRun;
* *
* but it seems preferable to use longer time periods and hopefully get a more accurate speed. * but it seems preferable to use longer time periods and hopefully get a more accurate speed.
* *
* Also, if msRemainsThisRun >= 0 && this.aCounts.nCyclesMultiplier == 1, we could pass these results instead: * Also, if msRemainsThisRun >= 0 && this.counts.nCyclesMultiplier == 1, we could pass these results instead:
* *
* nCycles = this.aCounts.nCyclesThisRun; * nCycles = this.counts.nCyclesThisRun;
* msElapsed = this.aCounts.msPerYield; * msElapsed = this.counts.msPerYield;
* *
* to insure that we display a smooth, constant N Mhz. But for now, I prefer seeing any fluctuations. * to insure that we display a smooth, constant N Mhz. But for now, I prefer seeing any fluctuations.
*/ */
var nCycles = this.nRunCycles; var nCycles = this.nRunCycles;
var msElapsed = this.aCounts.msEndThisRun - this.aCounts.msStartRun; var msElapsed = this.counts.msEndThisRun - this.counts.msStartRun;
if (MAXDEBUG && msRemainsThisRun < 0 && this.aCounts.nCyclesMultiplier > 1) { if (MAXDEBUG && msRemainsThisRun < 0 && this.counts.nCyclesMultiplier > 1) {
this.println("warning: updates @" + msElapsedThisRun + "ms (prefer " + Math.round(msYield) + "ms)"); this.println("warning: updates @" + msElapsedThisRun + "ms (prefer " + Math.round(msYield) + "ms)");
} }
this.calcSpeed(nCycles, msElapsed); this.calcSpeed(nCycles, msElapsed);
if (msRemainsThisRun < 0 || this.aCounts.mhz < this.aCounts.mhzTarget) { if (msRemainsThisRun < 0 || this.counts.mhz < this.counts.mhzTarget) {
/* /*
* If the last burst took MORE time than we allotted (ie, it's taking more than 1 second to simulate * If the last burst took MORE time than we allotted (ie, it's taking more than 1 second to simulate
* nCyclesPerSecond), all we can do is yield for as little time as possible (ie, 0ms) and hope that the * nCyclesPerSecond), all we can do is yield for as little time as possible (ie, 0ms) and hope that the
@ -937,13 +937,13 @@ CPU8080.prototype.calcRemainingTime = function()
* Last but not least, update nCyclesRecalc, so that when runCPU() starts up again and calls calcStartTime(), * Last but not least, update nCyclesRecalc, so that when runCPU() starts up again and calls calcStartTime(),
* it'll be ready to decide if calcCycles() should be called again. * it'll be ready to decide if calcCycles() should be called again.
*/ */
this.aCounts.nCyclesRecalc += this.aCounts.nCyclesThisRun; this.counts.nCyclesRecalc += this.counts.nCyclesThisRun;
if (DEBUG && this.messageEnabled(Messages8080.LOG) && msRemainsThisRun) { if (DEBUG && this.messageEnabled(Messages8080.LOG) && msRemainsThisRun) {
this.log("calcRemainingTime: " + msRemainsThisRun + "ms to sleep after " + this.aCounts.msEndThisRun + "ms"); this.log("calcRemainingTime: " + msRemainsThisRun + "ms to sleep after " + this.counts.msEndThisRun + "ms");
} }
this.aCounts.msEndThisRun += msRemainsThisRun; this.counts.msEndThisRun += msRemainsThisRun;
return msRemainsThisRun; return msRemainsThisRun;
}; };
@ -980,9 +980,9 @@ CPU8080.prototype.addTimer = function(callBack)
* This is preferred over JavaScript's setTimeout(), because all our timers are effectively paused when * This is preferred over JavaScript's setTimeout(), because all our timers are effectively paused when
* the CPU is paused (eg, when the Debugger halts execution). Moreover, setTimeout() handlers only run after * the CPU is paused (eg, when the Debugger halts execution). Moreover, setTimeout() handlers only run after
* runCPU() yields, which is far too granular for some components (eg, when the SerialPort tries to simulate * runCPU() yields, which is far too granular for some components (eg, when the SerialPort tries to simulate
* receiver interrupts at 9600 baud). * interrupts at 9600 baud).
* *
* Ideally, the only function that would use setTimeout() is runCPU(), while the rest of the components would * Ideally, the only function that would use setTimeout() is runCPU(), while the rest of the components
* use setTimer(); however, due to legacy code (ie, code that predates these functions) and/or laziness, * use setTimer(); however, due to legacy code (ie, code that predates these functions) and/or laziness,
* that's currently not the case. TODO: Fix. * that's currently not the case. TODO: Fix.
* *
@ -995,24 +995,36 @@ CPU8080.prototype.setTimer = function(iTimer, ms)
{ {
var nCycles = -1; var nCycles = -1;
if (iTimer >= 0 && iTimer < this.aTimers.length) { if (iTimer >= 0 && iTimer < this.aTimers.length) {
nCycles = (this.aCounts.nCyclesPerSecond * this.aCounts.nCyclesMultiplier) / 1000 * ms; nCycles = this.getCyclesMS(ms);
this.aTimers[iTimer][0] = nCycles; this.aTimers[iTimer][0] = nCycles;
} }
return nCycles; return nCycles;
}; };
/** /**
* getTimerBurst(nCycles) * getCyclesMS(ms)
* *
* Used by runCPU() to either accept or shorten the current burst if any timers need to fire soon. * @this {CPU8080}
* @param {number} ms
* @return {number} number of corresponding cycles
*/
CPU8080.prototype.getCyclesMS = function(ms)
{
return (this.counts.nCyclesPerSecond * this.counts.nCyclesMultiplier) / 1000 * ms;
};
/**
* getCyclesBurst(nCycles)
*
* Used by runCPU() to get min(nCycles,[timer cycle counts])
* *
* @this {CPU8080} * @this {CPU8080}
* @param {number} nCycles (number of cycles about to execute) * @param {number} nCycles (number of cycles about to execute)
* @return {number} (either nCycles or less if a timer needs to fire) * @return {number} (either nCycles or less if a timer needs to fire)
*/ */
CPU8080.prototype.getTimerBurst = function(nCycles) CPU8080.prototype.getCyclesBurst = function(nCycles)
{ {
for (var i = 0; i < this.aTimers.length; i++) { for (var i = this.aTimers.length - 1; i >= 0; i--) {
var timer = this.aTimers[i]; var timer = this.aTimers[i];
if (timer[0] < 0) continue; if (timer[0] < 0) continue;
if (nCycles > timer[0]) { if (nCycles > timer[0]) {
@ -1034,7 +1046,7 @@ CPU8080.prototype.getTimerBurst = function(nCycles)
*/ */
CPU8080.prototype.updateTimers = function(nCycles) CPU8080.prototype.updateTimers = function(nCycles)
{ {
for (var i = 0; i < this.aTimers.length; i++) { for (var i = this.aTimers.length - 1; i >= 0; i--) {
var timer = this.aTimers[i]; var timer = this.aTimers[i];
if (timer[0] < 0) continue; if (timer[0] < 0) continue;
timer[0] -= nCycles; timer[0] -= nCycles;
@ -1072,12 +1084,12 @@ CPU8080.prototype.runCPU = function(fUpdateFocus)
* nCyclesPerBurst is how many cycles we WANT to run on each iteration of stepCPU(), but it may run * nCyclesPerBurst is how many cycles we WANT to run on each iteration of stepCPU(), but it may run
* significantly less (or slightly more, since we can't execute partial instructions). * significantly less (or slightly more, since we can't execute partial instructions).
*/ */
var nCyclesPerBurst = (this.flags.fChecksum? 1 : this.aCounts.nCyclesPerBurst); var nCyclesPerBurst = (this.flags.fChecksum? 1 : this.counts.nCyclesPerBurst);
/* /*
* Adjust nCyclesPerBurst if there are any CPU timers that need to fire within the current burst. * Adjust nCyclesPerBurst if there are any CPU timers that need to fire within the current burst.
*/ */
nCyclesPerBurst = this.getTimerBurst(nCyclesPerBurst); nCyclesPerBurst = this.getCyclesBurst(nCyclesPerBurst);
/* /*
* Execute the burst. * Execute the burst.
@ -1097,27 +1109,27 @@ CPU8080.prototype.runCPU = function(fUpdateFocus)
/* /*
* Add nCycles to nCyclesThisRun, as well as nRunCycles (the cycle count since the CPU first started). * Add nCycles to nCyclesThisRun, as well as nRunCycles (the cycle count since the CPU first started).
*/ */
this.aCounts.nCyclesThisRun += nCycles; this.counts.nCyclesThisRun += nCycles;
this.nRunCycles += nCycles; this.nRunCycles += nCycles;
this.addCycles(0, true); this.addCycles(0, true);
this.updateChecksum(nCycles); this.updateChecksum(nCycles);
this.aCounts.nCyclesNextVideoUpdate -= nCycles; this.counts.nCyclesNextVideoUpdate -= nCycles;
if (this.aCounts.nCyclesNextVideoUpdate <= 0) { if (this.counts.nCyclesNextVideoUpdate <= 0) {
this.aCounts.nCyclesNextVideoUpdate += this.aCounts.nCyclesPerVideoUpdate; this.counts.nCyclesNextVideoUpdate += this.counts.nCyclesPerVideoUpdate;
if (this.cmp) this.cmp.updateVideo(this.aCounts.nVideoUpdates++); if (this.cmp) this.cmp.updateVideo(this.counts.nVideoUpdates++);
if (this.aCounts.nVideoUpdates > this.refreshRate) this.aCounts.nVideoUpdates = 0; if (this.counts.nVideoUpdates > this.refreshRate) this.counts.nVideoUpdates = 0;
} }
this.aCounts.nCyclesNextStatusUpdate -= nCycles; this.counts.nCyclesNextStatusUpdate -= nCycles;
if (this.aCounts.nCyclesNextStatusUpdate <= 0) { if (this.counts.nCyclesNextStatusUpdate <= 0) {
this.aCounts.nCyclesNextStatusUpdate += this.aCounts.nCyclesPerStatusUpdate; this.counts.nCyclesNextStatusUpdate += this.counts.nCyclesPerStatusUpdate;
if (this.cmp) this.cmp.updateStatus(); if (this.cmp) this.cmp.updateStatus();
} }
this.aCounts.nCyclesNextYield -= nCycles; this.counts.nCyclesNextYield -= nCycles;
if (this.aCounts.nCyclesNextYield <= 0) { if (this.counts.nCyclesNextYield <= 0) {
this.aCounts.nCyclesNextYield += this.aCounts.nCyclesPerYield; this.counts.nCyclesNextYield += this.counts.nCyclesPerYield;
break; break;
} }
} while (this.flags.fRunning); } while (this.flags.fRunning);
@ -1150,7 +1162,7 @@ CPU8080.prototype.startCPU = function(fUpdateFocus)
* threshold counter. * threshold counter.
*/ */
this.setSpeed(); this.setSpeed();
if (this.cmp) this.cmp.start(this.aCounts.msStartRun, this.getCycles()); if (this.cmp) this.cmp.start(this.counts.msStartRun, this.getCycles());
this.flags.fRunning = true; this.flags.fRunning = true;
this.flags.fStarting = true; this.flags.fStarting = true;
if (this.chipset) this.chipset.start(); if (this.chipset) this.chipset.start();
@ -1233,7 +1245,7 @@ CPU8080.prototype.updateCPU = function(fForce)
*/ */
CPU8080.prototype.yieldCPU = function() CPU8080.prototype.yieldCPU = function()
{ {
this.aCounts.nCyclesNextYield = 0; // this will break us out of runCPU(), once we break out of stepCPU() this.counts.nCyclesNextYield = 0; // this will break us out of runCPU(), once we break out of stepCPU()
this.nBurstCycles -= this.nStepCycles; this.nBurstCycles -= this.nStepCycles;
this.nStepCycles = 0; // this will break us out of stepCPU() this.nStepCycles = 0; // this will break us out of stepCPU()
// if (DEBUG) this.nSnapCycles = this.nBurstCycles; // if (DEBUG) this.nSnapCycles = this.nBurstCycles;

View file

@ -2465,7 +2465,7 @@ if (DEBUGGER) {
sLine += (nSequence != null? '=' + nSequence.toString() : ""); sLine += (nSequence != null? '=' + nSequence.toString() : "");
} else { } else {
var nCycles = this.cpu.getCycles(); var nCycles = this.cpu.getCycles();
sLine += "cycles=" + nCycles.toString() + " cs=" + str.toHex(this.cpu.aCounts.nChecksum); sLine += "cycles=" + nCycles.toString() + " cs=" + str.toHex(this.cpu.counts.nChecksum);
} }
} }
return sLine; return sLine;
@ -3719,11 +3719,11 @@ if (DEBUGGER) {
Debugger8080.prototype.doInfo = function(asArgs) Debugger8080.prototype.doInfo = function(asArgs)
{ {
if (DEBUG) { if (DEBUG) {
this.println("msPerYield: " + this.cpu.aCounts.msPerYield); this.println("msPerYield: " + this.cpu.counts.msPerYield);
this.println("nCyclesPerBurst: " + this.cpu.aCounts.nCyclesPerBurst); this.println("nCyclesPerBurst: " + this.cpu.counts.nCyclesPerBurst);
this.println("nCyclesPerYield: " + this.cpu.aCounts.nCyclesPerYield); this.println("nCyclesPerYield: " + this.cpu.counts.nCyclesPerYield);
this.println("nCyclesPerVideoUpdate: " + this.cpu.aCounts.nCyclesPerVideoUpdate); this.println("nCyclesPerVideoUpdate: " + this.cpu.counts.nCyclesPerVideoUpdate);
this.println("nCyclesPerStatusUpdate: " + this.cpu.aCounts.nCyclesPerStatusUpdate); this.println("nCyclesPerStatusUpdate: " + this.cpu.counts.nCyclesPerStatusUpdate);
return true; return true;
} }
return false; return false;
@ -3974,13 +3974,13 @@ if (DEBUGGER) {
if (asArgs[3] !== undefined) nCycles = +asArgs[3]; // warning: decimal instead of hex conversion if (asArgs[3] !== undefined) nCycles = +asArgs[3]; // warning: decimal instead of hex conversion
switch (asArgs[2]) { switch (asArgs[2]) {
case "int": case "int":
this.cpu.aCounts.nCyclesChecksumInterval = nCycles; this.cpu.counts.nCyclesChecksumInterval = nCycles;
break; break;
case "start": case "start":
this.cpu.aCounts.nCyclesChecksumStart = nCycles; this.cpu.counts.nCyclesChecksumStart = nCycles;
break; break;
case "stop": case "stop":
this.cpu.aCounts.nCyclesChecksumStop = nCycles; this.cpu.counts.nCyclesChecksumStop = nCycles;
break; break;
default: default:
this.println("unknown cs option"); this.println("unknown cs option");

View file

@ -893,12 +893,12 @@ Keyboard8080.prototype.checkSoftKeysToRelease = function()
* options: * options:
* *
* 1) Snapshot the CPU cycle count each time a byte is transmitted (see outVT100UARTStatus()) and then every * 1) Snapshot the CPU cycle count each time a byte is transmitted (see outVT100UARTStatus()) and then every
* time this is polled, see if the cycle count has exceeded the snapshot value by the necessary threshold * time this is polled, see if the cycle count has exceeded the snapshot value by the necessary threshold;
* amount; if we assume 361.69ns per CPU cycle, there are 22 CPU cycles for every 1 LBA4 cycle, and since * if we assume 361.69ns per CPU cycle, there are 22 CPU cycles for every 1 LBA4 cycle, and since transmission
* transmission time is supposed to last for 160 LBA4 cycles, that means 22*160 CPU cycles, or 3520 cycles. * time is supposed to last for 160 LBA4 cycles, the threshold is 22*160 CPU cycles, or 3520 cycles.
* *
* 2) Set a CPU timer using the new setTimer() interface, which can be passed the number of milliseconds to * 2) Set a CPU timer using the new setTimer() interface, which can be passed the number of milliseconds to
* wait before firing (in this case, 7945ms). * wait before firing (in this case, roughly 1.27ms).
* *
* 3) Call the ChipSet's getVT100LBA(4) function for the state of the simulated LBA4, and count 160 LBA4 * 3) Call the ChipSet's getVT100LBA(4) function for the state of the simulated LBA4, and count 160 LBA4
* transitions; however, that would be the worst solution, because there's no guarantee that the firmware's * transitions; however, that would be the worst solution, because there's no guarantee that the firmware's
@ -912,7 +912,12 @@ Keyboard8080.prototype.checkSoftKeysToRelease = function()
Keyboard8080.prototype.isVT100TransmitterReady = function() Keyboard8080.prototype.isVT100TransmitterReady = function()
{ {
if (this.fVT100UARTBusy) { if (this.fVT100UARTBusy) {
if (this.cpu.getCycles() >= this.nVT100UARTCycleSnap + 3520) { /*
* NOTE: getCyclesMS(1.2731488) should work out to 3520 cycles for a CPU clocked at 361.69ns per cycle,
* which is roughly 2.76Mhz. We could just hard-code 3520 instead of calling getCyclesMS(), but this helps
* maintain a reasonable blink rate for the cursor even when the user cranks up the CPU speed.
*/
if (this.cpu.getCycles() >= this.nVT100UARTCycleSnap + this.cpu.getCyclesMS(1.2731488)) {
this.fVT100UARTBusy = false; this.fVT100UARTBusy = false;
} }
} }

View file

@ -9,59 +9,59 @@ function ta(){return window?window.navigator.userAgent:""}function u(a){window&&
function ya(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function za(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Aa(a){if(window){var b=ta();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ba(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()} function ya(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function za(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Aa(a){if(window){var b=ta();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ba(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
function Ca(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}}var Da={init:[],show:[],exit:[]},Ea=!1,Ja=!1,Ka=!0;function La(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ma(a){Da.init.push(a)} function Ca(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}}var Da={init:[],show:[],exit:[]},Ea=!1,Ja=!1,Ka=!0;function La(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ma(a){Da.init.push(a)}
function Na(a){if(Ka)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Oa("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Pa(a){!Ka&&a?(Ka=!0,Ea&&Qa("init"),Ja&&Qa("show")):Ka=a}function Qa(a){Da[a]&&Na(Da[a])}La("onload",function(){Ea=!0;Na(Da.init)});La("onpageshow",function(){Ja=!0;Na(Da.show)});La(Aa("Opera")||Aa("iOS")?"onunload":"onbeforeunload",function(){Na(Da.exit)}); function Na(a){if(Ka)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Oa("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Pa(a){!Ka&&a?(Ka=!0,Ea&&Qa("init"),Ja&&Qa("show")):Ka=a}function Qa(a){Da[a]&&Na(Da[a])}La("onload",function(){Ea=!0;Na(Da.init)});La("onpageshow",function(){Ja=!0;Na(Da.show)});La(Aa("Opera")||Aa("iOS")?"onunload":"onbeforeunload",function(){Na(Da.exit)});
function w(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.yc=b.comment;this.Yd=b;b=this.id.indexOf(".");0>b?this.Za=this.id:(this.Mb=this.id.substr(0,b),this.Za=this.id.substr(b+1));this[a]=c;this.D={Ma:!1,lb:!1,Wb:!1,va:!1,nb:!1};this.Pb=null;this.D.nb=!1;this.N={};this.I=null;this.ra=d||0;Ta.push(this)}var Ua=void 0,Va={}; function w(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.yc=b.comment;this.Yd=b;b=this.id.indexOf(".");0>b?this.$a=this.id:(this.Mb=this.id.substr(0,b),this.$a=this.id.substr(b+1));this[a]=c;this.D={Ma:!1,lb:!1,Wb:!1,va:!1,nb:!1};this.Pb=null;this.D.nb=!1;this.N={};this.I=null;this.ra=d||0;Ta.push(this)}var Ua=void 0,Va={};
if(window){Ua||(Ua=window.location.search.substr(1));for(var Wa,Xa=/\+/g,$a=/([^&=]+)=?([^&]*)/g;Wa=$a.exec(Ua);)Va[decodeURIComponent(Wa[1].replace(Xa," "))]=decodeURIComponent(Wa[2].replace(Xa," "))}function ab(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b} if(window){Ua||(Ua=window.location.search.substr(1));for(var Wa,Xa=/\+/g,$a=/([^&=]+)=?([^&]*)/g;Wa=$a.exec(Ua);)Va[decodeURIComponent(Wa[1].replace(Xa," "))]=decodeURIComponent(Wa[2].replace(Xa," "))}function ab(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
function bb(a,b){b||(b=w);a.prototype=ab(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var cb=window.PCjs.Machines||(window.PCjs.Machines={}),Ta=window.PCjs.Components||(window.PCjs.Components=[])}else cb={},Ta=[];function db(a,b,c){cb[a]&&b&&(cb[a][b]=c)}function Oa(a,b,c){b||u((c?c+": ":"")+a)} function bb(a,b){b||(b=w);a.prototype=ab(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var cb=window.PCjs.Machines||(window.PCjs.Machines={}),Ta=window.PCjs.Components||(window.PCjs.Components=[])}else cb={},Ta=[];function db(a,b,c){cb[a]&&b&&(cb[a][b]=c)}function Oa(a,b,c){b||u((c?c+": ":"")+a)}
function eb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Ta.length;b++){var d=Ta[b];a&&d.id.indexOf(a)||c.push(d)}return c}function fb(a){if(void 0!==a){var b;for(b=0;b<Ta.length;b++)if(Ta[b].id===a)return Ta[b]}return null}function gb(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<Ta.length;d++)if(c)c==Ta[d]&&(c=null);else if(!(a!=Ta[d].type||b&&Ta[d].id.indexOf(b)))return Ta[d]}return null} function eb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Ta.length;b++){var d=Ta[b];a&&d.id.indexOf(a)||c.push(d)}return c}function fb(a){if(void 0!==a){var b;for(b=0;b<Ta.length;b++)if(Ta[b].id===a)return Ta[b]}return null}function gb(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<Ta.length;d++)if(c)c==Ta[d]&&(c=null);else if(!(a!=Ta[d].type||b&&Ta[d].id.indexOf(b)))return Ta[d]}return null}
function z(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}function hb(a,b){for(var c=B(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pc8080-binding":(g=z(h))&&g.binding&&a.la(g.type,g.binding,h,g.value),l=k.length}}}} function z(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}function hb(a,b){for(var c=B(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pc8080-binding":(g=z(h))&&g.binding&&a.la(g.type,g.binding,h,g.value),l=k.length}}}}
function B(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 B(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}
w.prototype={constructor:w,parent:null,toString:function(){return this.name?this.name:this.id||this.type},la:function(a,b,c){switch(b){case "clear":return this.N[b]||(this.N[b]=c,c.onclick=function(a){return function(){a.N.print&&(a.N.print.value="")}}(this)),!0;case "print":return this.N[b]||(this.Fa=this.N[b]=c,c.value="",this.g=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), w.prototype={constructor:w,parent:null,toString:function(){return this.name?this.name:this.id||this.type},la:function(a,b,c){switch(b){case "clear":return this.N[b]||(this.N[b]=c,c.onclick=function(a){return function(){a.N.print&&(a.N.print.value="")}}(this)),!0;case "print":return this.N[b]||(this.Fa=this.N[b]=c,c.value="",this.g=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
this.ia=function(a){this.g(a,this.Za)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.Za+": "+a)},ia:function(a,b,c){Oa(a,b,c||this.type)},Ea:function(){return this.D.va=!0},Ha:function(a,b){b&&(this.D.va=!1);return!0}};function D(a,b,c,d,e,f,h){a.I&&(!0===h?h=0:null==h&&(h=a.ra),ib(a.I,a,b,c,d,e,f,h))}function jb(a,b){a.I&&kb(a,0)&&a.I.message(b,void 0)}function kb(a,b){if(a.I){a===a.I?b|=0:b=b||a.ra;var c=a.I.ra&b;return!!b&&c===b||!!(c&a.I.vd)}return!1} this.ia=function(a){this.g(a,this.$a)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.$a+": "+a)},ia:function(a,b,c){Oa(a,b,c||this.type)},Ea:function(){return this.D.va=!0},Ha:function(a,b){b&&(this.D.va=!1);return!0}};function D(a,b,c,d,e,f,h){a.I&&(!0===h?h=0:null==h&&(h=a.ra),ib(a.I,a,b,c,d,e,f,h))}function jb(a,b){a.I&&kb(a,0)&&a.I.message(b,void 0)}function kb(a,b){if(a.I){a===a.I?b|=0:b=b||a.ra;var c=a.I.ra&b;return!!b&&c===b||!!(c&a.I.vd)}return!1}
function lb(a,b){if(a.D.Wb)return a.D.lb&&(a.D.lb=!1),a.D.Wb=!1;if(a.D.nb)return a.g(a.toString()+" error"),!1;a.D.lb=b;return a.D.lb}function mb(a,b){a.D.lb&&(b?a.D.Wb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.D.lb}function E(a){if(!a.D.nb&&(a.D.Ma=!0,a.D.Ma)){var b=a.Pb;a.Pb=null;b&&b()}}function nb(a,b){b&&(a.D.Ma?b():a.Pb=b);return a.D.Ma}function qb(a,b){a.D.nb=!0;a.ia(b)} function lb(a,b){if(a.D.Wb)return a.D.lb&&(a.D.lb=!1),a.D.Wb=!1;if(a.D.nb)return a.g(a.toString()+" error"),!1;a.D.lb=b;return a.D.lb}function mb(a,b){a.D.lb&&(b?a.D.Wb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.D.lb}function E(a){if(!a.D.nb&&(a.D.Ma=!0,a.D.Ma)){var b=a.Pb;a.Pb=null;b&&b()}}function nb(a,b){b&&(a.D.Ma?b():a.Pb=b);return a.D.Ma}function qb(a,b){a.D.nb=!0;a.ia(b)}
var rb="undefined"!==typeof ArrayBuffer,sb=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1, var rb="undefined"!==typeof ArrayBuffer,sb=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1],tb={cpu:1,bus:64,mem:128,port:256,nvr:16384,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function ub(a){w.call(this,"Panel",a,ub)}bb(ub);m=ub.prototype; 0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1],tb={cpu:1,bus:64,mem:128,port:256,nvr:16384,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function ub(a){w.call(this,"Panel",a,ub)}bb(ub);m=ub.prototype;
m.la=function(a,b,c,d){return this.B&&this.B.la(a,b,c,d)||this.b&&this.b.la(a,b,c,d)||this.K&&this.K.la(a,b,c,d)||this.I&&this.I.la(a,b,c,d)?!0:this.parent.la.call(this,a,b,c,d)};m.Qa=function(a,b,c,d){this.B=a;this.w=b;this.b=c;this.I=d;this.K=vb(a,"Keyboard")};m.Ea=function(a,b){b||wb();return!0};m.Ha=function(){return!0};m.Ia=function(){};function wb(){for(var a=!1,b=B(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f=fb(e.id);f||(a=!0,f=new ub(e));hb(f,d);a&&E(f)}}Ma(wb); m.la=function(a,b,c,d){return this.B&&this.B.la(a,b,c,d)||this.b&&this.b.la(a,b,c,d)||this.K&&this.K.la(a,b,c,d)||this.I&&this.I.la(a,b,c,d)?!0:this.parent.la.call(this,a,b,c,d)};m.Qa=function(a,b,c,d){this.B=a;this.w=b;this.b=c;this.I=d;this.K=vb(a,"Keyboard")};m.Ea=function(a,b){b||wb();return!0};m.Ha=function(){return!0};m.Ia=function(){};function wb(){for(var a=!1,b=B(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f=fb(e.id);f||(a=!0,f=new ub(e));hb(f,d);a&&E(f)}}Ma(wb);
function xb(a,b,c){w.call(this,"Bus",a,xb);this.b=b;this.I=c;this.H=a.busWidth||16;this.M=Math.pow(2,this.H);this.A=this.M-1|0;this.oa=16>=this.H?10:20>=this.H?12:24>=this.H?14:15;this.Ga=1<<this.oa;this.O=this.Ga>>2;this.w=this.Ga-1;this.L=this.M/this.Ga|0;this.K=this.L-1;this.B=[];this.u=[];this.F=this.J=!1;this.R=[];this.S=[];a=new F;yb(a,this.I);this.Y=Array(this.L);for(b=0;b<this.L;b++)this.Y[b]=a;E(this)}bb(xb);m=xb.prototype;m.reset=function(){};m.Ea=function(a,b){b||this.reset();return!0}; function xb(a,b,c){w.call(this,"Bus",a,xb);this.b=b;this.I=c;this.H=a.busWidth||16;this.M=Math.pow(2,this.H);this.A=this.M-1|0;this.oa=16>=this.H?10:20>=this.H?12:24>=this.H?14:15;this.Ga=1<<this.oa;this.O=this.Ga>>2;this.w=this.Ga-1;this.L=this.M/this.Ga|0;this.K=this.L-1;this.B=[];this.u=[];this.F=this.J=!1;this.R=[];this.S=[];a=new F;yb(a,this.I);this.Y=Array(this.L);for(b=0;b<this.L;b++)this.Y[b]=a;E(this)}bb(xb);m=xb.prototype;m.reset=function(){};m.Ea=function(a,b){b||this.reset();return!0};
function zb(a,b,c,d){for(var e=b,f=c,h=e>>>a.oa;0<f&&h<a.Y.length;){var g=a.Y[h],k=h*a.Ga,l=a.Ga-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==d){if(e+f<=g.G)return g.Ib+=g.G-e,g.G=e,!0;if(e>=g.G+g.Ib){l=g.size-(e-k);l>f&&(l=f);g.Ib=e-g.G+l;e=k+a.Ga;f-=l;h++;continue}}return Ab(1,e,f)}e=new F(e,l,a.Ga,d);yb(e,a.I,g);a.Y[h++]=e;e=k+a.Ga;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Bb[d]+" at "+t(b)),!0):Ab(2,b,c)}m.$=function(a){return this.Y[(a&this.A)>>>this.oa].tb(a&this.w,a)}; function zb(a,b,c,d){for(var e=b,f=c,h=e>>>a.oa;0<f&&h<a.Y.length;){var g=a.Y[h],k=h*a.Ga,l=a.Ga-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==d){if(e+f<=g.G)return g.Ib+=g.G-e,g.G=e,!0;if(e>=g.G+g.Ib){l=g.size-(e-k);l>f&&(l=f);g.Ib=e-g.G+l;e=k+a.Ga;f-=l;h++;continue}}return Ab(1,e,f)}e=new F(e,l,a.Ga,d);yb(e,a.I,g);a.Y[h++]=e;e=k+a.Ga;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Bb[d]+" at "+t(b)),!0):Ab(2,b,c)}m.$=function(a){return this.Y[(a&this.A)>>>this.oa].tb(a&this.w,a)};
function Cb(a,b){return a.Y[(b&a.A)>>>a.oa].Hb(b&a.w,b)}m.Sa=function(a){var b=a&this.w,c=(a&this.A)>>>this.oa;return b!=this.w?this.Y[c].Lc(b,a):this.Y[c++].tb(b,a)|this.Y[c&this.K].tb(0,a+1)<<8};function Db(a,b){var c=b&a.w,d=(b&a.A)>>>a.oa;return c!=a.w?a.Y[d].dc(c,b):a.Y[d++].Hb(c,b)|a.Y[d&a.K].Hb(0,b+1)<<8}m.ta=function(a,b){this.Y[(a&this.A)>>>this.oa].vb(a&this.w,b&255,a)};function Eb(a,b,c){a.Y[(b&a.A)>>>a.oa].Jb(b&a.w,c&255,b)} function Cb(a,b){return a.Y[(b&a.A)>>>a.oa].Hb(b&a.w,b)}m.Ta=function(a){var b=a&this.w,c=(a&this.A)>>>this.oa;return b!=this.w?this.Y[c].Lc(b,a):this.Y[c++].tb(b,a)|this.Y[c&this.K].tb(0,a+1)<<8};function Db(a,b){var c=b&a.w,d=(b&a.A)>>>a.oa;return c!=a.w?a.Y[d].dc(c,b):a.Y[d++].Hb(c,b)|a.Y[d&a.K].Hb(0,b+1)<<8}m.ta=function(a,b){this.Y[(a&this.A)>>>this.oa].vb(a&this.w,b&255,a)};function Eb(a,b,c){a.Y[(b&a.A)>>>a.oa].Jb(b&a.w,c&255,b)}
m.Ub=function(a,b){var c=a&this.w,d=(a&this.A)>>>this.oa;c!=this.w?this.Y[d].Nc(c,b&65535,a):(this.Y[d++].vb(c,b&255,a),this.Y[d&this.K].vb(0,b>>8&255,a+1))};function Gb(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function Hb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.B[k]?u("Input port "+t(k)+" already registered"):f.B[k]=[g,!1]}} m.Ub=function(a,b){var c=a&this.w,d=(a&this.A)>>>this.oa;c!=this.w?this.Y[d].Nc(c,b&65535,a):(this.Y[d++].vb(c,b&255,a),this.Y[d&this.K].vb(0,b>>8&255,a+1))};function Gb(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function Hb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.B[k]?u("Input port "+t(k)+" already registered"):f.B[k]=[g,!1]}}
function Ib(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.B[b],g=a.R[b]||1,k=1==g?255:2==g?65535:-1,l=k;void 0!==h?(h[0]&&(l=h[0](b,c),void 0===l?l=k:l&=k),a.I&&a.F!=h[1]&&Jb(a.I,b,l)):a.I&&(ib(a.I,a,b,null,c),a.F&&Jb(a.I,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Sb(a,b){if(void 0===b)return a.J=!a.J,a.J;void 0===a.u[b]&&(a.u[b]=[null,!1]);a.u[b][1]=!a.u[b][1];return a.u[b][1]} function Ib(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.B[b],g=a.R[b]||1,k=1==g?255:2==g?65535:-1,l=k;void 0!==h?(h[0]&&(l=h[0](b,c),void 0===l?l=k:l&=k),a.I&&a.F!=h[1]&&Jb(a.I,b,l)):a.I&&(ib(a.I,a,b,null,c),a.F&&Jb(a.I,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Sb(a,b){if(void 0===b)return a.J=!a.J,a.J;void 0===a.u[b]&&(a.u[b]=[null,!1]);a.u[b][1]=!a.u[b][1];return a.u[b][1]}
function Tb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.u[k]?u("Output port "+t(k)+" already registered"):f.u[k]=[g,!1]}}function Ub(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.u[b],g=a.S[b]||1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h){if(h[0])h[0](b,k,d);a.I&&a.J!=h[1]&&Vb(a.I,b,k)}else a.I&&(ib(a.I,a,b,k,d),a.J&&Vb(a.I,b,k));f+=g<<3;b+=g;e-=g}} function Tb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.u[k]?u("Output port "+t(k)+" already registered"):f.u[k]=[g,!1]}}function Ub(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.u[b],g=a.S[b]||1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h){if(h[0])h[0](b,k,d);a.I&&a.J!=h[1]&&Vb(a.I,b,k)}else a.I&&(ib(a.I,a,b,k,d),a.J&&Vb(a.I,b,k));f+=g<<3;b+=g;e-=g}}
function Ab(a,b,c){u("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Wb;if(rb){var Xb=new ArrayBuffer(2);(new DataView(Xb)).setUint16(0,256,!0);Wb=256===(new Uint16Array(Xb))[0]}else Wb=!1;var Yb=Wb; function Ab(a,b,c){u("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Wb;if(rb){var Xb=new ArrayBuffer(2);(new DataView(Xb)).setUint16(0,256,!0);Wb=256===(new Uint16Array(Xb))[0]}else Wb=!1;var Yb=Wb;
function F(a,b,c,d){this.id=Zb+=2;this.b=null;this.G=a;this.Ib=b;this.size=c||0;this.type=d||$b;this.B=d==ac;yb(this);this.Oa=this.uc=!1;if(c)if(rb)this.F=new ArrayBuffer(c),this.J=new DataView(this.F,0,c),this.w=new Uint8Array(this.F,0,c),this.K=new Uint16Array(this.F,0,c>>1),this.b=new Int32Array(this.F,0,c>>2),bc(this,Yb?cc:dc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;bc(this,ec)}else bc(this)}var $b=0,ac=2,Bb=["NONE","RAM","ROM","VID","H/W"],Zb=0; function F(a,b,c,d){this.id=Zb+=2;this.b=null;this.G=a;this.Ib=b;this.size=c||0;this.type=d||$b;this.B=d==ac;yb(this);this.Oa=this.uc=!1;if(c)if(rb)this.F=new ArrayBuffer(c),this.J=new DataView(this.F,0,c),this.w=new Uint8Array(this.F,0,c),this.K=new Uint16Array(this.F,0,c>>1),this.b=new Int32Array(this.F,0,c>>2),bc(this,Yb?cc:dc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;bc(this,ec)}else bc(this)}var $b=0,ac=2,Bb=["NONE","RAM","ROM","VID","H/W"],Zb=0;
F.prototype={constructor:F,parent:null,save:function(){var a,b;if(rb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.J.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(rb)for(b=0;b<a.length;b++)this.J.setInt32(b<<2,a[b],!0);else this.b=a;return this.Oa=!0}return!1},$a:function(a,b){b?0===this.u++&&fc(this,gc,!1):0===this.N++&&hc(this,gc,!1)},L:function(){this.I&&kb(this.I,129)&&this.I.message("attempt to read invalid block %"+n(this.G),!0); F.prototype={constructor:F,parent:null,save:function(){var a,b;if(rb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.J.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(rb)for(b=0;b<a.length;b++)this.J.setInt32(b<<2,a[b],!0);else this.b=a;return this.Oa=!0}return!1},ab:function(a,b){b?0===this.u++&&fc(this,gc,!1):0===this.N++&&hc(this,gc,!1)},L:function(){this.I&&kb(this.I,129)&&this.I.message("attempt to read invalid block %"+n(this.G),!0);
return 255},A:function(a,b){this.I&&kb(this.I,129)&&this.I.message("attempt to write "+t(b)+" to invalid block %"+n(this.G),!0)},M:function(a,b){return this.tb(a++,b++)|this.tb(a,b)<<8},H:function(a,b,c){this.vb(a++,b&255,c++);this.vb(a,b>>8,c)},aa:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ga:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},ua:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.Oa=!0},Ca:function(a, return 255},A:function(a,b){this.I&&kb(this.I,129)&&this.I.message("attempt to write "+t(b)+" to invalid block %"+n(this.G),!0)},M:function(a,b){return this.tb(a++,b++)|this.tb(a,b)<<8},H:function(a,b,c){this.vb(a++,b&255,c++);this.vb(a,b>>8,c)},aa:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ga:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},ua:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.Oa=!0},Ca:function(a,
b){var c=a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.Oa=!0},R:function(a,b){if(this.I&&null!=this.G){var c=this.I;ic(c,this.G+a,1,c.R)&&c.ma(!0)}return this.Hb(a,b)},da:function(a,b){if(this.I&&null!=this.G){var c=this.I;ic(c,this.G+a,2,c.R)&&c.ma(!0)}return this.dc(a,b)},pa:function(a,b,c){if(this.I&&null!=this.G){var d=this.I;ic(d,this.G+a,1,d.J)&&d.ma(!0)}this.B?this.A(a,b,c):this.Jb(a,b,c)},Za:function(a, b){var c=a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.Oa=!0},R:function(a,b){if(this.I&&null!=this.G){var c=this.I;ic(c,this.G+a,1,c.R)&&c.ma(!0)}return this.Hb(a,b)},da:function(a,b){if(this.I&&null!=this.G){var c=this.I;ic(c,this.G+a,2,c.R)&&c.ma(!0)}return this.dc(a,b)},pa:function(a,b,c){if(this.I&&null!=this.G){var d=this.I;ic(d,this.G+a,1,d.J)&&d.ma(!0)}this.B?this.A(a,b,c):this.Jb(a,b,c)},$a:function(a,
b,c){if(this.I&&null!=this.G){var d=this.I;ic(d,this.G+a,2,d.J)&&d.ma(!0)}this.B?this.A(a,b,c):this.gc(a,b,c)},O:function(a){return this.w[a]},S:function(a){return this.w[a]},ca:function(a){return this.J.getUint16(a,!0)},fa:function(a){return a&1?this.w[a]|this.w[a+1]<<8:this.K[a>>1]},ha:function(a,b){this.w[a]=b;this.Oa=!0},qa:function(a,b){this.w[a]=b;this.Oa=!0},ya:function(a,b){this.J.setUint16(a,b,!0);this.Oa=!0},Ba:function(a,b){a&1?(this.w[a]=b,this.w[a+1]=b>>8):this.K[a>>1]=b;this.Oa=!0}}; b,c){if(this.I&&null!=this.G){var d=this.I;ic(d,this.G+a,2,d.J)&&d.ma(!0)}this.B?this.A(a,b,c):this.gc(a,b,c)},O:function(a){return this.w[a]},S:function(a){return this.w[a]},ca:function(a){return this.J.getUint16(a,!0)},fa:function(a){return a&1?this.w[a]|this.w[a+1]<<8:this.K[a>>1]},ha:function(a,b){this.w[a]=b;this.Oa=!0},qa:function(a,b){this.w[a]=b;this.Oa=!0},ya:function(a,b){this.J.setUint16(a,b,!0);this.Oa=!0},Ba:function(a,b){a&1?(this.w[a]=b,this.w[a+1]=b>>8):this.K[a>>1]=b;this.Oa=!0}};
function yb(a,b,c){a.I=b;a.N=a.u=0;c&&((a.N=c.N)&&hc(a,gc,!1),(a.u=c.u)&&fc(a,gc,!1))}function jc(a,b){b?0===--a.u&&(a.vb=a.B?a.A:a.Jb,a.Nc=a.B?a.H:a.gc):0===--a.N&&(a.tb=a.Hb,a.Lc=a.dc)}function fc(a,b,c){c&&a.u||(a.vb=!a.B&&b[2]||a.A,a.Nc=!a.B&&b[3]||a.H);if(c||void 0===c)a.Jb=b[2]||a.A,a.gc=b[3]||a.H}function hc(a,b,c){c&&a.N||(a.tb=b[0]||a.L,a.Lc=b[1]||a.M);if(c||void 0===c)a.Hb=b[0]||a.L,a.dc=b[1]||a.M}function bc(a,b){b||(b=kc);hc(a,b,void 0);fc(a,b,void 0)} function yb(a,b,c){a.I=b;a.N=a.u=0;c&&((a.N=c.N)&&hc(a,gc,!1),(a.u=c.u)&&fc(a,gc,!1))}function jc(a,b){b?0===--a.u&&(a.vb=a.B?a.A:a.Jb,a.Nc=a.B?a.H:a.gc):0===--a.N&&(a.tb=a.Hb,a.Lc=a.dc)}function fc(a,b,c){c&&a.u||(a.vb=!a.B&&b[2]||a.A,a.Nc=!a.B&&b[3]||a.H);if(c||void 0===c)a.Jb=b[2]||a.A,a.gc=b[3]||a.H}function hc(a,b,c){c&&a.N||(a.tb=b[0]||a.L,a.Lc=b[1]||a.M);if(c||void 0===c)a.Hb=b[0]||a.L,a.dc=b[1]||a.M}function bc(a,b){b||(b=kc);hc(a,b,void 0);fc(a,b,void 0)}
var kc=[],ec=[F.prototype.aa,F.prototype.ga,F.prototype.ua,F.prototype.Ca],gc=[F.prototype.R,F.prototype.da,F.prototype.pa,F.prototype.Za];if(rb)var dc=[F.prototype.O,F.prototype.ca,F.prototype.ha,F.prototype.ya],cc=[F.prototype.S,F.prototype.fa,F.prototype.qa,F.prototype.Ba]; var kc=[],ec=[F.prototype.aa,F.prototype.ga,F.prototype.ua,F.prototype.Ca],gc=[F.prototype.R,F.prototype.da,F.prototype.pa,F.prototype.$a];if(rb)var dc=[F.prototype.O,F.prototype.ca,F.prototype.ha,F.prototype.ya],cc=[F.prototype.S,F.prototype.fa,F.prototype.qa,F.prototype.Ba];
function lc(a,b){w.call(this,"CPU",a,lc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.fb=c;this.i.Rb=0;this.i.Ta=d;this.i.$b=Math.round(this.i.fb/1E4)/100;this.i.cb=this.i.$b*this.i.Ta;this.D.xa=!1;this.D.Xb=!1;this.D.tc=a.autoStart;this.D.vc=!1;this.D.mb=!1;this.i.Bb=this.i.qb=0;this.i.Cb=a.csStart;this.i.pb=a.csInterval;this.i.rb=a.csStop;this.F=[];this.aa=this.gb.bind(this);E(this)}bb(lc);var mc=["power","reset"];m=lc.prototype; function lc(a,b){w.call(this,"CPU",a,lc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.Ua=c;this.i.Rb=0;this.i.Sa=d;this.i.$b=Math.round(this.i.Ua/1E4)/100;this.i.eb=this.i.$b*this.i.Sa;this.D.xa=!1;this.D.Xb=!1;this.D.tc=a.autoStart;this.D.vc=!1;this.D.mb=!1;this.i.Bb=this.i.qb=0;this.i.Cb=a.csStart;this.i.pb=a.csInterval;this.i.rb=a.csStop;this.F=[];this.aa=this.gb.bind(this);E(this)}bb(lc);var mc=["power","reset"];m=lc.prototype;
m.Qa=function(a,b,c,d){this.B=a;this.w=b;this.I=d;for(b=0;b<mc.length;b++)(c=this.N[mc[b]])&&this.B.la(null,mc[b],c);this.M=(b=vb(a,"Video"))&&Math.max(b.Zd,b.Yb)||60;this.J=vb(a,"ChipSet");a=nc(a,"autoStart");null!=a&&(this.D.tc="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){this.i.Rb=0};m.save=function(){return null};m.restore=function(){return!1}; m.Qa=function(a,b,c,d){this.B=a;this.w=b;this.I=d;for(b=0;b<mc.length;b++)(c=this.N[mc[b]])&&this.B.la(null,mc[b],c);this.M=(b=vb(a,"Video"))&&Math.max(b.Zd,b.Yb)||60;this.J=vb(a,"ChipSet");a=nc(a,"autoStart");null!=a&&(this.D.tc="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){this.i.Rb=0};m.save=function(){return null};m.restore=function(){return!1};
m.Ea=function(a,b){if(!b){if(a&&this.restore){oc(this);if(!this.restore(a))return!1;Bc(this)}else this.reset();if(this.I){var c=this.I;c.g("Type ? for help with PC8080 Debugger commands");c.Ia();if(c.Ca){var d=c.Ca;c.Ca=null;Cc(c,d)}}else this.g("No debugger detected")}Dc(this);return!0};m.Ha=function(a){return a?this.save():!0};function Ec(a){(a.D.tc||!a.I&&void 0===a.N.run)&&a.gb(!0)}m.wc=function(){return 0}; m.Ea=function(a,b){if(!b){if(a&&this.restore){oc(this);if(!this.restore(a))return!1;Bc(this)}else this.reset();if(this.I){var c=this.I;c.g("Type ? for help with PC8080 Debugger commands");c.Ia();if(c.Ca){var d=c.Ca;c.Ca=null;Cc(c,d)}}else this.g("No debugger detected")}Dc(this);return!0};m.Ha=function(a){return a?this.save():!0};function Ec(a){(a.D.tc||!a.I&&void 0===a.N.run)&&a.gb(!0)}m.wc=function(){return 0};
function Bc(a){void 0===a.i.Cb&&(a.i.Cb=0);void 0===a.i.pb&&(a.i.pb=-1);void 0===a.i.rb&&(a.i.rb=-1);a.D.mb=0<=a.i.Cb&&0<a.i.pb;a.D.mb&&(a.i.Bb=0,a.i.qb=a.i.Cb-a.K)}function Fc(a,b){if(a.D.mb){var c=!1;a.i.Bb=a.i.Bb+a.wc()|0;a.i.qb-=b;0>=a.i.qb&&(a.i.qb+=a.i.pb,c=!0);0<=a.i.rb&&a.i.rb<=Gc(a)&&(a.i.pb=a.i.rb=-1,Bc(a),a.ma(),c=!0);c&&a.g(Gc(a)+" cycles: checksum="+n(a.i.Bb))}} function Bc(a){void 0===a.i.Cb&&(a.i.Cb=0);void 0===a.i.pb&&(a.i.pb=-1);void 0===a.i.rb&&(a.i.rb=-1);a.D.mb=0<=a.i.Cb&&0<a.i.pb;a.D.mb&&(a.i.Bb=0,a.i.qb=a.i.Cb-a.K)}function Fc(a,b){if(a.D.mb){var c=!1;a.i.Bb=a.i.Bb+a.wc()|0;a.i.qb-=b;0>=a.i.qb&&(a.i.qb+=a.i.pb,c=!0);0<=a.i.rb&&a.i.rb<=Gc(a)&&(a.i.pb=a.i.rb=-1,Bc(a),a.ma(),c=!0);c&&a.g(Gc(a)+" cycles: checksum="+n(a.i.Bb))}}
m.la=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.N[b]=c;a=!0;break;case "run":this.N[b]=c;c.onclick=function(){var a;if(a=d.B)if(a=d.B,a.D.va)a=!0;else{var b=null,c,g=eb(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.D.Ma);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.D.va);c++);c==g.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.D.Ma?"powered yet":"ready yet"+(b.Pb?" (waiting for notification)":""))+".");a=!1}a&&(d.D.xa?d.ma(!0):d.gb(!0))};a= m.la=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.N[b]=c;a=!0;break;case "run":this.N[b]=c;c.onclick=function(){var a;if(a=d.B)if(a=d.B,a.D.va)a=!0;else{var b=null,c,g=eb(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.D.Ma);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.D.va);c++);c==g.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.D.Ma?"powered yet":"ready yet"+(b.Pb?" (waiting for notification)":""))+".");a=!1}a&&(d.D.xa?d.ma(!0):d.gb(!0))};a=
!0;break;case "speed":this.N[b]=c;a=!0;break;case "setSpeed":this.N[b]=c,c.onclick=function(){Hc(d,d.i.Ta<<1,!0)},c.textContent=this.i.cb.toFixed(2)+"Mhz",a=!0}return a};function Ic(a,b,c){a.K+=b;c&&(a.u=a.b=0)} !0;break;case "speed":this.N[b]=c;a=!0;break;case "setSpeed":this.N[b]=c,c.onclick=function(){Hc(d,d.i.Sa<<1,!0)},c.textContent=this.i.eb.toFixed(2)+"Mhz",a=!0}return a};function Ic(a,b,c){a.K+=b;c&&(a.u=a.b=0)}
function Jc(a,b){var c=30;c<a.M&&(c=a.M);2>c&&(c=2);var d=1;b&&1<a.i.Ta&&a.i.bb&&(d=a.i.bb/a.i.$b);a.i.Dc=Math.round(1E3/30);a.i.Gd=Math.floor(a.i.fb/c*d);a.i.bc=Math.floor(a.i.fb/30*d);a.i.Fc=Math.floor(a.i.fb/a.M*d);a.i.Ec=Math.floor(a.i.fb/2*d);b||(a.i.sb=a.i.bc,a.i.Eb=a.i.Fc,a.i.Db=a.i.Ec);a.i.cc=0}function Gc(a){return a.K+a.H+a.u-a.b}function oc(a){a.i.bb=0;a.K=a.H=a.u=a.b=0;Bc(a);Hc(a,1)} function Jc(a,b){var c=30;c<a.M&&(c=a.M);2>c&&(c=2);var d=1;b&&1<a.i.Sa&&a.i.cb&&(d=a.i.cb/a.i.$b);a.i.Dc=Math.round(1E3/30);a.i.Gd=Math.floor(a.i.Ua/c*d);a.i.bc=Math.floor(a.i.Ua/30*d);a.i.Fc=Math.floor(a.i.Ua/a.M*d);a.i.Ec=Math.floor(a.i.Ua/2*d);b||(a.i.sb=a.i.bc,a.i.Eb=a.i.Fc,a.i.Db=a.i.Ec);a.i.cc=0}function Gc(a){return a.K+a.H+a.u-a.b}function oc(a){a.i.cb=0;a.K=a.H=a.u=a.b=0;Bc(a);Hc(a,1)}
function Hc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.bb/a.i.cb?b=1:d=!0;a.i.Ta=b;b=a.i.$b*a.i.Ta;if(a.i.cb!=b){a.i.cb=b;b=a.i.cb.toFixed(2)+"Mhz";var e=a.N.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.B&&a.B.hb()}Ic(a,a.H);a.H=0;a.i.ob=pa();a.i.eb=0;Jc(a);return d}function Kc(a,b){var c=a.F.length;a.F.push([-1,b]);return c}function Lc(a,b,c){var d=-1;0<=b&&b<a.F.length&&(d=a.i.fb*a.i.Ta/1E3*c,a.F[b][0]=d)} function Hc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.cb/a.i.eb?b=1:d=!0;a.i.Sa=b;b=a.i.$b*a.i.Sa;if(a.i.eb!=b){a.i.eb=b;b=a.i.eb.toFixed(2)+"Mhz";var e=a.N.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.B&&a.B.hb()}Ic(a,a.H);a.H=0;a.i.ob=pa();a.i.fb=0;Jc(a);return d}function Kc(a,b){var c=a.F.length;a.F.push([-1,b]);return c}function Lc(a,b,c){var d=-1;0<=b&&b<a.F.length&&(d=a.i.Ua*a.i.Sa/1E3*c,a.F[b][0]=d)}
m.gb=function(a){if(lb(this,!0)){if(!this.D.xa){Hc(this);this.B&&this.B.start(this.i.ob,Gc(this));this.D.xa=!0;this.D.Xb=!0;this.J&&this.J.start();var b=this.N.run;b&&(b.textContent="Halt");this.B&&(this.B.Ia(!0),a&&this.B.hb(!0))}this.i.cc>=this.i.fb&&Jc(this,!0);this.i.Fb=0;this.i.Qb=pa();this.i.eb&&(a=this.i.Qb-this.i.eb,a>this.i.Dc&&(this.i.ob+=a,this.i.ob>this.i.Qb&&(this.i.ob=this.i.Qb)));try{do{var c=this.D.mb?1:this.i.Gd;a=c;for(b=0;b<this.F.length;b++){var d=this.F[b];0>d[0]||a>d[0]&&(a= m.gb=function(a){if(lb(this,!0)){if(!this.D.xa){Hc(this);this.B&&this.B.start(this.i.ob,Gc(this));this.D.xa=!0;this.D.Xb=!0;this.J&&this.J.start();var b=this.N.run;b&&(b.textContent="Halt");this.B&&(this.B.Ia(!0),a&&this.B.hb(!0))}this.i.cc>=this.i.Ua&&Jc(this,!0);this.i.Fb=0;this.i.Qb=pa();this.i.fb&&(a=this.i.Qb-this.i.fb,a>this.i.Dc&&(this.i.ob+=a,this.i.ob>this.i.Qb&&(this.i.ob=this.i.Qb)));try{do{var c=this.D.mb?1:this.i.Gd;a=c;for(var d=this.F.length-1;0<=d;d--){var e=this.F[d];0>e[0]||a>e[0]&&
d[0])}c=a;this.ub(c);var e=this.u-this.b;a=e;for(b=0;b<this.F.length;b++){var f=this.F[b];0>f[0]||(f[0]-=a,0>=f[0]&&(f[0]=-1,f[1]()))}this.i.Fb+=e;this.H+=e;Ic(this,0,!0);Fc(this,e);this.i.Eb-=e;0>=this.i.Eb&&(this.i.Eb+=this.i.Fc,this.B&&Mc(this.B,this.i.Rb++),this.i.Rb>this.M&&(this.i.Rb=0));this.i.Db-=e;0>=this.i.Db&&(this.i.Db+=this.i.Ec,this.B&&this.B.Ia());this.i.sb-=e;if(0>=this.i.sb){this.i.sb+=this.i.bc;break}}while(this.D.xa)}catch(h){this.ma();Dc(this);this.B&&this.B.stop(pa(),Gc(this)); (a=e[0])}c=a;this.ub(c);var f=this.u-this.b;a=f;for(var h=this.F.length-1;0<=h;h--){var g=this.F[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.i.Fb+=f;this.H+=f;Ic(this,0,!0);Fc(this,f);this.i.Eb-=f;0>=this.i.Eb&&(this.i.Eb+=this.i.Fc,this.B&&Mc(this.B,this.i.Rb++),this.i.Rb>this.M&&(this.i.Rb=0));this.i.Db-=f;0>=this.i.Db&&(this.i.Db+=this.i.Ec,this.B&&this.B.Ia());this.i.sb-=f;if(0>=this.i.sb){this.i.sb+=this.i.bc;break}}while(this.D.xa)}catch(k){this.ma();Dc(this);this.B&&this.B.stop(pa(),
lb(this,!1);qb(this,h.stack||h.message);return}c=setTimeout;d=this.aa;this.i.eb=pa();e=this.i.Dc;this.i.Fb&&(e=Math.round(e*this.i.Fb/this.i.bc));e-=this.i.eb-this.i.Qb;if(f=this.i.eb-this.i.ob)this.i.bb=Math.round(this.H/(10*f))/100,864E5<=f&&(this.K=0,Hc(this));if(0>e||this.i.bb<this.i.cb)e=0;this.i.cc+=this.i.Fb;this.i.eb+=e;c(d,e)}else Dc(this),this.B&&this.B.stop(pa(),Gc(this))};m.ub=function(){return 0}; Gc(this));lb(this,!1);qb(this,k.stack||k.message);return}c=setTimeout;d=this.aa;this.i.fb=pa();e=this.i.Dc;this.i.Fb&&(e=Math.round(e*this.i.Fb/this.i.bc));e-=this.i.fb-this.i.Qb;if(f=this.i.fb-this.i.ob)this.i.cb=Math.round(this.H/(10*f))/100,864E5<=f&&(this.K=0,Hc(this));if(0>e||this.i.cb<this.i.eb)e=0;this.i.cc+=this.i.Fb;this.i.fb+=e;c(d,e)}else Dc(this),this.B&&this.B.stop(pa(),Gc(this))};m.ub=function(){return 0};
m.ma=function(a){mb(this,!0);this.u-=this.b;this.b=0;Ic(this,this.H);this.H=0;if(this.D.xa){this.D.xa=!1;this.J&&this.J.stop();var b=this.N.run;b&&(b.textContent="Run")}this.D.Ob=a};function Dc(a,b){a.B&&(Mc(a.B,-1),a.B.Ia(b))}function Nc(a){this.Cc=+a.model||8080;lc.call(this,a,1E6);this.O=Oc;oc(this);this.D.Ob=this.D.wd=!1;this.S=0;this.L=[];this.R=0;Pc(this)}bb(Nc,lc);function Qc(a,b){a.L.push(b)}m=Nc.prototype;m.reset=function(){this.D.xa&&this.ma();Pc(this);oc(this);this.D.nb=!1;this.parent.reset.call(this)}; m.ma=function(a){mb(this,!0);this.u-=this.b;this.b=0;Ic(this,this.H);this.H=0;if(this.D.xa){this.D.xa=!1;this.J&&this.J.stop();var b=this.N.run;b&&(b.textContent="Run")}this.D.Ob=a};function Dc(a,b){a.B&&(Mc(a.B,-1),a.B.Ia(b))}function Nc(a){this.Cc=+a.model||8080;lc.call(this,a,1E6);this.O=Oc;oc(this);this.D.Ob=this.D.wd=!1;this.S=0;this.L=[];this.R=0;Pc(this)}bb(Nc,lc);function Qc(a,b){a.L.push(b)}m=Nc.prototype;m.reset=function(){this.D.xa&&this.ma();Pc(this);oc(this);this.D.nb=!1;this.parent.reset.call(this)};
function Pc(a){a.j=0;a.T=0;a.U=0;a.V=0;a.W=0;a.X=0;a.Z=0;a.ka=0;G(a,a.R);Rc(a,0);a.A=0}function Sc(a,b){a.R=b;G(a,b)}m.wc=function(){var a=this.j+this.T+this.U+this.V+this.W+this.X+this.Z|0;return a=a+this.ka+this.P+Tc(this)|0}; function Pc(a){a.j=0;a.T=0;a.U=0;a.V=0;a.W=0;a.X=0;a.Z=0;a.ka=0;G(a,a.R);Rc(a,0);a.A=0}function Sc(a,b){a.R=b;G(a,b)}m.wc=function(){var a=this.j+this.T+this.U+this.V+this.W+this.X+this.Z|0;return a=a+this.ka+this.P+Tc(this)|0};
m.save=function(){var a=new H(this);I(a,0,[this.j,this.T,this.U,this.V,this.W,this.X,this.Z,this.ka,this.P,Tc(this)]);I(a,1,[this.A,this.K,this.i.Ta]);for(var b=this.w,c=0,d=[],e=0;e<b.L;e++){var f=b.Y[e];if(f.Oa||f.uc){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var p=f[g],q=g+1;q<f.length&&f[q]===p;)q++;l[k++]=q-g;l[k++]=p;g=q}if(l.length<f.length){f=l;break a}}d[h]=f}}I(a,2,d);return a.data()}; m.save=function(){var a=new H(this);I(a,0,[this.j,this.T,this.U,this.V,this.W,this.X,this.Z,this.ka,this.P,Tc(this)]);I(a,1,[this.A,this.K,this.i.Sa]);for(var b=this.w,c=0,d=[],e=0;e<b.L;e++){var f=b.Y[e];if(f.Oa||f.uc){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var p=f[g],q=g+1;q<f.length&&f[q]===p;)q++;l[k++]=q-g;l[k++]=p;g=q}if(l.length<f.length){f=l;break a}}d[h]=f}}I(a,2,d);return a.data()};
m.restore=function(a){var b=a[0];this.j=b[0];this.T=b[1];this.U=b[2];this.V=b[3];this.W=b[4];this.X=b[5];this.Z=b[6];this.ka=b[7]&65535;G(this,b[8]);Rc(this,b[9]);b=a[1];this.A=b[0];this.K=b[1];Hc(this,b[3]);a:{b=this.w;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,h=Array(b.O),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.Y[d];if(!f||!f.restore(e)){u("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b}; m.restore=function(a){var b=a[0];this.j=b[0];this.T=b[1];this.U=b[2];this.V=b[3];this.W=b[4];this.X=b[5];this.Z=b[6];this.ka=b[7]&65535;G(this,b[8]);Rc(this,b[9]);b=a[1];this.A=b[0];this.K=b[1];Hc(this,b[3]);a:{b=this.w;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,h=Array(b.O),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.Y[d];if(!f||!f.restore(e)){u("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
m.la=function(a,b,c){var d=!1;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.N[b]=c;this.S++;d=!0;break;default:d=this.parent.la.call(this,a,b,c)}return d};function Uc(a){return a.T<<8|a.U}function Vc(a,b){a.T=b>>8&255;a.U=b&255}function Wc(a){return a.V<<8|a.W}function Xc(a,b){a.V=b>>8&255;a.W=b&255}function J(a){return a.X<<8|a.Z} m.la=function(a,b,c){var d=!1;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.N[b]=c;this.S++;d=!0;break;default:d=this.parent.la.call(this,a,b,c)}return d};function Uc(a){return a.T<<8|a.U}function Vc(a,b){a.T=b>>8&255;a.U=b&255}function Wc(a){return a.V<<8|a.W}function Xc(a,b){a.V=b>>8&255;a.W=b&255}function J(a){return a.X<<8|a.Z}
function Yc(a,b){a.X=b>>8&255;a.Z=b&255}function G(a,b){a.P=b&65535}function Zc(a){return a.ba&256?1:0}function $c(a,b){a.ba=a.ba&255|b}function ad(a){return sb[a.ea&255]?4:0}function bd(a){return(a.ea^a.wa)&16?16:0}function cd(a){return a.ba&255?0:64}function dd(a){return a.ea&128?128:0}function Tc(a){return a.sa&-214|dd(a)|cd(a)|bd(a)|ad(a)|Zc(a)}function Rc(a,b){a.ba=a.ea=a.wa=0;b&1&&(a.ba|=256);b&4||(a.ea|=1);b&16&&(a.wa|=16);b&64||(a.ba|=255);b&128&&(a.ea^=192);a.sa=a.sa&-726|b&512|2} function Yc(a,b){a.X=b>>8&255;a.Z=b&255}function G(a,b){a.P=b&65535}function Zc(a){return a.ba&256?1:0}function $c(a,b){a.ba=a.ba&255|b}function ad(a){return sb[a.ea&255]?4:0}function bd(a){return(a.ea^a.wa)&16?16:0}function cd(a){return a.ba&255?0:64}function dd(a){return a.ea&128?128:0}function Tc(a){return a.sa&-214|dd(a)|cd(a)|bd(a)|ad(a)|Zc(a)}function Rc(a,b){a.ba=a.ea=a.wa=0;b&1&&(a.ba|=256);b&4||(a.ea|=1);b&16&&(a.wa|=16);b&64||(a.ba|=255);b&128&&(a.ea^=192);a.sa=a.sa&-726|b&512|2}
function ed(a,b){a.wa=a.j^b;return a.ea=(a.ba=a.j+b)&255}function fd(a,b){a.wa=a.j^b;return a.ea=(a.ba=a.j+b+(a.ba&256?1:0))&255}function gd(a,b){a.ba=a.ea=a.wa=a.j&b;(a.j|b)&8&&(a.wa^=16);return a.ba}function Ad(a,b){a.wa=b^255;b=a.ea=b+255&255;a.ba=a.ba&-256|b;return b}function Bd(a,b){a.wa=b;b=a.ea=b+1&255;a.ba=a.ba&-256|b;return b}function Cd(a,b){return a.ea=a.ba=a.wa=a.j|b}function K(a,b){b^=255;a.wa=a.j^b;return a.ea=(a.ba=a.j+b+1^256)&255} function ed(a,b){a.wa=a.j^b;return a.ea=(a.ba=a.j+b)&255}function fd(a,b){a.wa=a.j^b;return a.ea=(a.ba=a.j+b+(a.ba&256?1:0))&255}function gd(a,b){a.ba=a.ea=a.wa=a.j&b;(a.j|b)&8&&(a.wa^=16);return a.ba}function Ad(a,b){a.wa=b^255;b=a.ea=b+255&255;a.ba=a.ba&-256|b;return b}function Bd(a,b){a.wa=b;b=a.ea=b+1&255;a.ba=a.ba&-256|b;return b}function Cd(a,b){return a.ea=a.ba=a.wa=a.j|b}function K(a,b){b^=255;a.wa=a.j^b;return a.ea=(a.ba=a.j+b+1^256)&255}
function Dd(a,b){b^=255;a.wa=a.j^b;return a.ea=(a.ba=a.j+b+(a.ba&256?0:1)^256)&255}function Ed(a,b){return a.ea=a.ba=a.wa=a.j^b}m.$=function(a){return this.w.$(a)};m.ta=function(a,b){this.w.ta(a,b)};function L(a){var b=a.$(a.P);G(a,a.P+1);return b}function M(a){var b=a.w.Sa(a.P);G(a,a.P+2);return b}function O(a){var b=a.w.Sa(a.ka);a.ka=a.ka+2&65535;return b}function P(a,b){a.ka=a.ka-2&65535;a.w.Ub(a.ka,b)} function Dd(a,b){b^=255;a.wa=a.j^b;return a.ea=(a.ba=a.j+b+(a.ba&256?0:1)^256)&255}function Ed(a,b){return a.ea=a.ba=a.wa=a.j^b}m.$=function(a){return this.w.$(a)};m.ta=function(a,b){this.w.ta(a,b)};function L(a){var b=a.$(a.P);G(a,a.P+1);return b}function M(a){var b=a.w.Ta(a.P);G(a,a.P+2);return b}function O(a){var b=a.w.Ta(a.ka);a.ka=a.ka+2&65535;return b}function P(a,b){a.ka=a.ka-2&65535;a.w.Ub(a.ka,b)}
function Fd(a){if(a.b&&a.A&255&&a.sa&512){for(var b=0;8>b&&!(a.A&1<<b);b++);a.A&=~(0>b?255:1<<b);a.sa&=-513;a.A&=-257;a.O[199|b<<3].call(a)}return a.A&256?(a.u-=a.b,a.b=0,!1):!0}function Gd(a,b){a.A|=1<<b;a.sa&512&&(a.u-=a.b,a.b=0)}function R(a,b,c,d){d=d||2;a.N[b]&&(void 0===c&&(qb(a,"Value for "+b+" is invalid"),a.ma()),c=!a.D.xa||a.D.vc?n(c,d):"--------".substr(0,d),a.N[b].textContent!=c&&(a.N[b].textContent=c))} function Fd(a){if(a.b&&a.A&255&&a.sa&512){for(var b=0;8>b&&!(a.A&1<<b);b++);a.A&=~(0>b?255:1<<b);a.sa&=-513;a.A&=-257;a.O[199|b<<3].call(a)}return a.A&256?(a.u-=a.b,a.b=0,!1):!0}function Gd(a,b){a.A|=1<<b;a.sa&512&&(a.u-=a.b,a.b=0)}function R(a,b,c,d){d=d||2;a.N[b]&&(void 0===c&&(qb(a,"Value for "+b+" is invalid"),a.ma()),c=!a.D.xa||a.D.vc?n(c,d):"--------".substr(0,d),a.N[b].textContent!=c&&(a.N[b].textContent=c))}
m.Ia=function(a){this.S&&(a||!this.D.xa||this.D.vc)&&(R(this,"A",this.j),R(this,"B",this.T),R(this,"C",this.U),R(this,"BC",Uc(this),4),R(this,"D",this.V),R(this,"E",this.W),R(this,"DE",Wc(this),4),R(this,"H",this.X),R(this,"L",this.Z),R(this,"HL",J(this),4),R(this,"SP",this.ka,4),R(this,"PC",this.P,4),a=Tc(this),R(this,"PS",a,4),R(this,"IF",a&512?1:0,1),R(this,"SF",a&128?1:0,1),R(this,"ZF",a&64?1:0,1),R(this,"AF",a&16?1:0,1),R(this,"PF",a&4?1:0,1),R(this,"CF",a&1?1:0,1));if(a=this.N.speed)a.textContent= m.Ia=function(a){this.S&&(a||!this.D.xa||this.D.vc)&&(R(this,"A",this.j),R(this,"B",this.T),R(this,"C",this.U),R(this,"BC",Uc(this),4),R(this,"D",this.V),R(this,"E",this.W),R(this,"DE",Wc(this),4),R(this,"H",this.X),R(this,"L",this.Z),R(this,"HL",J(this),4),R(this,"SP",this.ka,4),R(this,"PC",this.P,4),a=Tc(this),R(this,"PS",a,4),R(this,"IF",a&512?1:0,1),R(this,"SF",a&128?1:0,1),R(this,"ZF",a&64?1:0,1),R(this,"AF",a&16?1:0,1),R(this,"PF",a&4?1:0,1),R(this,"CF",a&1?1:0,1));if(a=this.N.speed)a.textContent=
this.D.xa&&this.i.bb?this.i.bb.toFixed(2)+"Mhz":"Stopped"};m.ub=function(a){this.D.Ob=!0;var b=this.D.wd=this.I&&Hd(this.I),c=a?this.D.Xb?0:1:-1;this.D.Xb=!1;this.u=this.b=a;if(Fd(this)){do{if(b){if(Id(this.I,this.P,c)){this.ma();break}c=1}this.O[L(this)].call(this)}while(0<this.b)}return this.D.Ob?this.u-this.b:void 0===this.D.Ob?0:-1};Ma(function(){for(var a=B(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Nc(d);hb(d,c)}});function Jd(){this.b-=4} this.D.xa&&this.i.cb?this.i.cb.toFixed(2)+"Mhz":"Stopped"};m.ub=function(a){this.D.Ob=!0;var b=this.D.wd=this.I&&Hd(this.I),c=a?this.D.Xb?0:1:-1;this.D.Xb=!1;this.u=this.b=a;if(Fd(this)){do{if(b){if(Id(this.I,this.P,c)){this.ma();break}c=1}this.O[L(this)].call(this)}while(0<this.b)}return this.D.Ob?this.u-this.b:void 0===this.D.Ob?0:-1};Ma(function(){for(var a=B(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Nc(d);hb(d,c)}});function Jd(){this.b-=4}
function Kd(){G(this,M(this));this.b-=10}function Ld(){G(this,O(this));this.b-=10}function Md(){var a=M(this);P(this,this.P);G(this,a);this.b-=17} function Kd(){G(this,M(this));this.b-=10}function Ld(){G(this,O(this));this.b-=10}function Md(){var a=M(this);P(this,this.P);G(this,a);this.b-=17}
var Oc=[Jd,function(){Vc(this,M(this));this.b-=10},function(){this.ta(Uc(this),this.j);this.b-=7},function(){Vc(this,Uc(this)+1);this.b-=5},function(){this.T=Bd(this,this.T);this.b-=5},function(){this.T=Ad(this,this.T);this.b-=5},function(){this.T=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|a>>8;$c(this,a&256);this.b-=4},Jd,function(){var a;Yc(this,a=J(this)+Uc(this));$c(this,a>>8&256);this.b-=10},function(){this.j=this.$(Uc(this));this.b-=7},function(){Vc(this,Uc(this)-1);this.b-= var Oc=[Jd,function(){Vc(this,M(this));this.b-=10},function(){this.ta(Uc(this),this.j);this.b-=7},function(){Vc(this,Uc(this)+1);this.b-=5},function(){this.T=Bd(this,this.T);this.b-=5},function(){this.T=Ad(this,this.T);this.b-=5},function(){this.T=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|a>>8;$c(this,a&256);this.b-=4},Jd,function(){var a;Yc(this,a=J(this)+Uc(this));$c(this,a>>8&256);this.b-=10},function(){this.j=this.$(Uc(this));this.b-=7},function(){Vc(this,Uc(this)-1);this.b-=
5},function(){this.U=Bd(this,this.U);this.b-=5},function(){this.U=Ad(this,this.U);this.b-=5},function(){this.U=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(a|this.j)>>1;$c(this,a);this.b-=4},Jd,function(){Xc(this,M(this));this.b-=10},function(){this.ta(Wc(this),this.j);this.b-=7},function(){Xc(this,Wc(this)+1);this.b-=5},function(){this.V=Bd(this,this.V);this.b-=5},function(){this.V=Ad(this,this.V);this.b-=5},function(){this.V=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255| 5},function(){this.U=Bd(this,this.U);this.b-=5},function(){this.U=Ad(this,this.U);this.b-=5},function(){this.U=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(a|this.j)>>1;$c(this,a);this.b-=4},Jd,function(){Xc(this,M(this));this.b-=10},function(){this.ta(Wc(this),this.j);this.b-=7},function(){Xc(this,Wc(this)+1);this.b-=5},function(){this.V=Bd(this,this.V);this.b-=5},function(){this.V=Ad(this,this.V);this.b-=5},function(){this.V=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|
Zc(this);$c(this,a&256);this.b-=4},Jd,function(){var a;Yc(this,a=J(this)+Wc(this));$c(this,a>>8&256);this.b-=10},function(){this.j=this.$(Wc(this));this.b-=7},function(){Xc(this,Wc(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=L(this);this.b-=7},function(){var a=this.j<<8;this.j=(Zc(this)<<8|this.j)>>1;$c(this,a&256);this.b-=4},Jd,function(){Yc(this,M(this));this.b-=10},function(){var a=M(this);this.w.Ub(a,J(this)); Zc(this);$c(this,a&256);this.b-=4},Jd,function(){var a;Yc(this,a=J(this)+Wc(this));$c(this,a>>8&256);this.b-=10},function(){this.j=this.$(Wc(this));this.b-=7},function(){Xc(this,Wc(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=L(this);this.b-=7},function(){var a=this.j<<8;this.j=(Zc(this)<<8|this.j)>>1;$c(this,a&256);this.b-=4},Jd,function(){Yc(this,M(this));this.b-=10},function(){var a=M(this);this.w.Ub(a,J(this));
this.b-=16},function(){Yc(this,J(this)+1);this.b-=5},function(){this.X=Bd(this,this.X);this.b-=5},function(){this.X=Ad(this,this.X);this.b-=5},function(){this.X=L(this);this.b-=7},function(){var a=0,b=Zc(this);if(bd(this)||9<(this.j&15))a|=6;if(b||154<=this.j)a|=96,b=1;this.j=ed(this,a);$c(this,b?256:0);this.b-=4},Jd,function(){var a;Yc(this,a=J(this)+J(this));$c(this,a>>8&256);this.b-=10},function(){var a;a=M(this);a=this.w.Sa(a);Yc(this,a);this.b-=16},function(){Yc(this,J(this)-1);this.b-=5},function(){this.Z= this.b-=16},function(){Yc(this,J(this)+1);this.b-=5},function(){this.X=Bd(this,this.X);this.b-=5},function(){this.X=Ad(this,this.X);this.b-=5},function(){this.X=L(this);this.b-=7},function(){var a=0,b=Zc(this);if(bd(this)||9<(this.j&15))a|=6;if(b||154<=this.j)a|=96,b=1;this.j=ed(this,a);$c(this,b?256:0);this.b-=4},Jd,function(){var a;Yc(this,a=J(this)+J(this));$c(this,a>>8&256);this.b-=10},function(){var a;a=M(this);a=this.w.Ta(a);Yc(this,a);this.b-=16},function(){Yc(this,J(this)-1);this.b-=5},function(){this.Z=
Bd(this,this.Z);this.b-=5},function(){this.Z=Ad(this,this.Z);this.b-=5},function(){this.Z=L(this);this.b-=7},function(){this.j=~this.j&255;this.b-=4},Jd,function(){this.ka=M(this)&65535;this.b-=10},function(){this.ta(M(this),this.j);this.b-=13},function(){this.ka=this.ka+1&65535;this.b-=5},function(){var a=J(this);this.ta(a,Bd(this,this.$(a)));this.b-=10},function(){var a=J(this);this.ta(a,Ad(this,this.$(a)));this.b-=10},function(){this.ta(J(this),L(this));this.b-=10},function(){this.ba|=256;this.b-= Bd(this,this.Z);this.b-=5},function(){this.Z=Ad(this,this.Z);this.b-=5},function(){this.Z=L(this);this.b-=7},function(){this.j=~this.j&255;this.b-=4},Jd,function(){this.ka=M(this)&65535;this.b-=10},function(){this.ta(M(this),this.j);this.b-=13},function(){this.ka=this.ka+1&65535;this.b-=5},function(){var a=J(this);this.ta(a,Bd(this,this.$(a)));this.b-=10},function(){var a=J(this);this.ta(a,Ad(this,this.$(a)));this.b-=10},function(){this.ta(J(this),L(this));this.b-=10},function(){this.ba|=256;this.b-=
4},Jd,function(){var a;Yc(this,a=J(this)+this.ka);$c(this,a>>8&256);this.b-=10},function(){this.j=this.$(M(this));this.b-=13},function(){this.ka=this.ka-1&65535;this.b-=5},function(){this.j=Bd(this,this.j);this.b-=5},function(){this.j=Ad(this,this.j);this.b-=5},function(){this.j=L(this);this.b-=7},function(){$c(this,Zc(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.T=this.U;this.b-=5},function(){this.T=this.V;this.b-=5},function(){this.T=this.W;this.b-=5},function(){this.T=this.X;this.b-= 4},Jd,function(){var a;Yc(this,a=J(this)+this.ka);$c(this,a>>8&256);this.b-=10},function(){this.j=this.$(M(this));this.b-=13},function(){this.ka=this.ka-1&65535;this.b-=5},function(){this.j=Bd(this,this.j);this.b-=5},function(){this.j=Ad(this,this.j);this.b-=5},function(){this.j=L(this);this.b-=7},function(){$c(this,Zc(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.T=this.U;this.b-=5},function(){this.T=this.V;this.b-=5},function(){this.T=this.W;this.b-=5},function(){this.T=this.X;this.b-=
5},function(){this.T=this.Z;this.b-=5},function(){this.T=this.$(J(this));this.b-=7},function(){this.T=this.j;this.b-=5},function(){this.U=this.T;this.b-=5},function(){this.b-=5},function(){this.U=this.V;this.b-=5},function(){this.U=this.W;this.b-=5},function(){this.U=this.X;this.b-=5},function(){this.U=this.Z;this.b-=5},function(){this.U=this.$(J(this));this.b-=7},function(){this.U=this.j;this.b-=5},function(){this.V=this.T;this.b-=5},function(){this.V=this.U;this.b-=5},function(){this.b-=5},function(){this.V= 5},function(){this.T=this.Z;this.b-=5},function(){this.T=this.$(J(this));this.b-=7},function(){this.T=this.j;this.b-=5},function(){this.U=this.T;this.b-=5},function(){this.b-=5},function(){this.U=this.V;this.b-=5},function(){this.U=this.W;this.b-=5},function(){this.U=this.X;this.b-=5},function(){this.U=this.Z;this.b-=5},function(){this.U=this.$(J(this));this.b-=7},function(){this.U=this.j;this.b-=5},function(){this.V=this.T;this.b-=5},function(){this.V=this.U;this.b-=5},function(){this.b-=5},function(){this.V=
@ -82,44 +82,44 @@ J(this));this.b-=11},function(){this.j=gd(this,L(this));this.b-=7},function(){P(
40);this.b-=11},function(){dd(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){var a=O(this);Rc(this,a&255|this.sa&-256);this.j=a>>8;this.b-=10},function(){var a=M(this);dd(this)||G(this,a);this.b-=10},function(){this.sa&=-513;this.b-=4},function(){var a=M(this);dd(this)||(P(this,this.P),G(this,a),this.b-=6);this.b-=11},function(){P(this,Tc(this)&255|this.j<<8);this.b-=11},function(){this.j=Cd(this,L(this));this.b-=7},function(){P(this,this.P);G(this,48);this.b-=11},function(){dd(this)&&(G(this, 40);this.b-=11},function(){dd(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){var a=O(this);Rc(this,a&255|this.sa&-256);this.j=a>>8;this.b-=10},function(){var a=M(this);dd(this)||G(this,a);this.b-=10},function(){this.sa&=-513;this.b-=4},function(){var a=M(this);dd(this)||(P(this,this.P),G(this,a),this.b-=6);this.b-=11},function(){P(this,Tc(this)&255|this.j<<8);this.b-=11},function(){this.j=Cd(this,L(this));this.b-=7},function(){P(this,this.P);G(this,48);this.b-=11},function(){dd(this)&&(G(this,
O(this)),this.b-=6);this.b-=5},function(){this.ka=J(this)&65535;this.b-=5},function(){var a=M(this);dd(this)&&G(this,a);this.b-=10},function(){this.sa|=512;this.b-=4;Fd(this)},function(){var a=M(this);dd(this)&&(P(this,this.P),G(this,a),this.b-=6);this.b-=11},Md,function(){K(this,L(this));this.b-=7},function(){P(this,this.P);G(this,56);this.b-=11}]; O(this)),this.b-=6);this.b-=5},function(){this.ka=J(this)&65535;this.b-=5},function(){var a=M(this);dd(this)&&G(this,a);this.b-=10},function(){this.sa|=512;this.b-=4;Fd(this)},function(){var a=M(this);dd(this)&&(P(this,this.P),G(this,a),this.b-=6);this.b-=11},Md,function(){K(this,L(this));this.b-=7},function(){P(this,this.P);G(this,56);this.b-=11}];
function S(a){w.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!Nd[b]&&Oa("Unrecognized ChipSet model: "+b);this.A=Nd[b]||{};a.sound&&(this.ga=null,window&&(this.ga=window.AudioContext||window.webkitAudioContext),this.ga&&new this.ga);E(this)}bb(S); function S(a){w.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!Nd[b]&&Oa("Unrecognized ChipSet model: "+b);this.A=Nd[b]||{};a.sound&&(this.ga=null,window&&(this.ga=window.AudioContext||window.webkitAudioContext),this.ga&&new this.ga);E(this)}bb(S);
var T={za:1978.1,rd:{Aa:0,ee:1,ie:16,pe:32,ye:64,xe:128,wb:14},Ya:{Aa:1,Sc:1,ld:2,gd:4,hd:16,jd:32,kd:64,wb:8},sd:{Aa:2,de:3,Ge:4,fe:8,te:16,ue:32,ve:64,ge:128,wb:0},Ce:{Aa:3},Ae:{Aa:2,qe:7},Ee:{Aa:3,He:1,De:2,we:4,ne:8,he:16,ae:32},Be:{Aa:4},Fe:{Aa:5,je:1,ke:2,le:4,me:8,Ie:16}},U={za:100,Ja:{Aa:66,qc:1,mc:2,fd:4,se:8,re:16,oc:32,nc:64,jc:128},Rc:{Aa:66,INIT:0},Wa:{Aa:194,ce:0,ic:16,md:32,pc:48,Wc:0,Xc:32},Kb:{Aa:162,ze:0,Zc:0,Vc:0,Yc:0,Uc:0},Ka:{oe:{Aa:98},Va:{Pc:0,Oc:1,od:2,td:4,Tc:5,nd:6,pd:7}, var T={za:1978.1,rd:{Aa:0,ee:1,ie:16,pe:32,ye:64,xe:128,wb:14},Za:{Aa:1,Sc:1,ld:2,gd:4,hd:16,jd:32,kd:64,wb:8},sd:{Aa:2,de:3,Ge:4,fe:8,te:16,ue:32,ve:64,ge:128,wb:0},Ce:{Aa:3},Ae:{Aa:2,qe:7},Ee:{Aa:3,He:1,De:2,we:4,ne:8,he:16,ae:32},Be:{Aa:4},Fe:{Aa:5,je:1,ke:2,le:4,me:8,Ie:16}},U={za:100,Ja:{Aa:66,qc:1,mc:2,fd:4,se:8,re:16,oc:32,nc:64,jc:128},Rc:{Aa:66,INIT:0},Xa:{Aa:194,ce:0,ic:16,md:32,pc:48,Wc:0,Xc:32},Kb:{Aa:162,ze:0,Zc:0,Vc:0,Yc:0,Uc:0},Ka:{oe:{Aa:98},Wa:{Pc:0,Oc:1,od:2,td:4,Tc:5,nd:6,pd:7},
Lb:16383}},Nd={SI1978:T,VT100:U};S.prototype.la=function(){return!1};S.prototype.Qa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;this.B=a;this.K=vb(a,"Keyboard");this.Na=vb(a,"SerialPort");this.video=vb(a,"Video");Hb(b,this,this.A.Sb);Tb(b,this,this.A.Tb);if(d){var e=this;Od(d,16384,function(){for(var a="",b=0;b<e.F.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=t(e.F[b]);e.I.g(a)})}};S.prototype.Ea=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0}; Lb:16383}},Nd={SI1978:T,VT100:U};S.prototype.la=function(){return!1};S.prototype.Qa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;this.B=a;this.K=vb(a,"Keyboard");this.Na=vb(a,"SerialPort");this.video=vb(a,"Video");Hb(b,this,this.A.Sb);Tb(b,this,this.A.Tb);if(d){var e=this;Od(d,16384,function(){for(var a="",b=0;b<e.F.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=t(e.F[b]);e.I.g(a)})}};S.prototype.Ea=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};
S.prototype.Ha=function(a){return a?this.save():!0};T.INIT=[[T.rd.wb,T.Ya.wb,T.sd.wb,0,0,0,0]]; S.prototype.Ha=function(a){return a?this.save():!0};T.INIT=[[T.rd.wb,T.Za.wb,T.sd.wb,0,0,0,0]];
U.INIT=[[U.Rc.INIT,U.Ja.mc|U.Ja.fd],[U.Wa.Wc,U.Wa.Xc],[U.Kb.Zc,U.Kb.Vc,U.Kb.Yc,U.Kb.Uc],[0,0,0,0,[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,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,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], U.INIT=[[U.Rc.INIT,U.Ja.mc|U.Ja.fd],[U.Xa.Wc,U.Xa.Xc],[U.Kb.Zc,U.Kb.Vc,U.Kb.Yc,U.Kb.Uc],[0,0,0,0,[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,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,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],
[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]]];m=S.prototype;m.reset=function(){this.A.INIT&&!this.restore(this.A.INIT)&&this.ia("reset error")}; [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]]];m=S.prototype;m.reset=function(){this.A.INIT&&!this.restore(this.A.INIT)&&this.ia("reset error")};
m.save=function(){var a=new H(this);switch(this.A.za){case T.za:I(a,0,[this.Ba,this.H,this.Ca,this.aa,this.fa,this.ua,this.ya]);break;case U.za:I(a,0,[this.ha,this.L]),I(a,1,[this.M,this.O]),I(a,2,[this.J,this.ca,this.qa,this.pa]),I(a,3,[this.S,this.u,this.R,this.da,this.F])}return a.data()}; m.save=function(){var a=new H(this);switch(this.A.za){case T.za:I(a,0,[this.Ba,this.H,this.Ca,this.aa,this.fa,this.ua,this.ya]);break;case U.za:I(a,0,[this.ha,this.L]),I(a,1,[this.M,this.O]),I(a,2,[this.J,this.ca,this.qa,this.pa]),I(a,3,[this.S,this.u,this.R,this.da,this.F])}return a.data()};
m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.A.za){case T.za:return this.Ba=b[0],this.H=b[1],this.Ca=b[2],this.aa=b[3],this.fa=b[4],this.ua=b[5],this.ya=b[6],!0;case U.za:return this.ha=b[0],this.L=b[1],b=a[1],this.M=b[0],this.O=b[1],b=a[2],this.J=b[0],this.ca=b[1],this.qa=b[2],this.pa=b[3],b=a[3],this.S=b[0],this.u=b[1],this.R=b[2],this.da=b[3],this.F=b[4],!0}return!1};m.start=function(){};m.stop=function(){};m.Ad=function(a,b){var c=this.Ba;D(this,a,null,b,"STATUS0",c,!0);return c}; m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.A.za){case T.za:return this.Ba=b[0],this.H=b[1],this.Ca=b[2],this.aa=b[3],this.fa=b[4],this.ua=b[5],this.ya=b[6],!0;case U.za:return this.ha=b[0],this.L=b[1],b=a[1],this.M=b[0],this.O=b[1],b=a[2],this.J=b[0],this.ca=b[1],this.qa=b[2],this.pa=b[3],b=a[3],this.S=b[0],this.u=b[1],this.R=b[2],this.da=b[3],this.F=b[4],!0}return!1};m.start=function(){};m.stop=function(){};m.Ad=function(a,b){var c=this.Ba;D(this,a,null,b,"STATUS0",c,!0);return c};
m.Bd=function(a,b){var c=this.H;D(this,a,null,b,"STATUS1",c,!0);return c};m.Cd=function(a,b){var c=this.Ca;D(this,a,null,b,"STATUS2",c,!0);return c};m.zd=function(a,b){var c=this.aa>>8-this.fa&255;D(this,a,null,b,"SHIFT.RESULT",c,!0);return c};m.Kd=function(a,b,c){D(this,a,b,c,"SHIFT.COUNT",null,!0);this.fa=b};m.Md=function(a,b,c){D(this,a,b,c,"SOUND1",null,!0);this.ua=b};m.Ld=function(a,b,c){D(this,a,b,c,"SHIFT.DATA",null,!0);this.aa=b<<8|this.aa>>8}; m.Bd=function(a,b){var c=this.H;D(this,a,null,b,"STATUS1",c,!0);return c};m.Cd=function(a,b){var c=this.Ca;D(this,a,null,b,"STATUS2",c,!0);return c};m.zd=function(a,b){var c=this.aa>>8-this.fa&255;D(this,a,null,b,"SHIFT.RESULT",c,!0);return c};m.Kd=function(a,b,c){D(this,a,b,c,"SHIFT.COUNT",null,!0);this.fa=b};m.Md=function(a,b,c){D(this,a,b,c,"SOUND1",null,!0);this.ua=b};m.Ld=function(a,b,c){D(this,a,b,c,"SHIFT.DATA",null,!0);this.aa=b<<8|this.aa>>8};
m.Nd=function(a,b,c){D(this,a,b,c,"SOUND2",null,!0);this.ya=b};m.Od=function(a,b,c){D(this,a,b,c,"WATCHDOG",null,!0)};function Pd(a){var b=0,c=0,d=~a.S;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} m.Nd=function(a,b,c){D(this,a,b,c,"SOUND2",null,!0);this.ya=b};m.Od=function(a,b,c){D(this,a,b,c,"WATCHDOG",null,!0)};function Pd(a){var b=0,c=0,d=~a.S;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}
m.Dd=function(a,b){var c=this.L,c=c&~U.Ja.nc;if((Gc(this.b)&64)<<1&&(c|=U.Ja.nc,c!=this.L)){var d,e;d=this.R&1;e=this.R>>1&7;switch(e){case U.Ka.Va.pd:break;case U.Ka.Va.Oc:this.S=this.S<<1|d;break;case U.Ka.Va.Tc:d=Pd(this);this.F[d]=U.Ka.Lb;jb(this,"doNVRCommand(): erase data at addr "+t(d));break;case U.Ka.Va.Pc:this.u=this.u<<1|d;break;case U.Ka.Va.td:d=Pd(this);e=this.u&U.Ka.Lb;this.F[d]=e;jb(this,"doNVRCommand(): write data "+t(e)+" to addr "+t(d));break;case U.Ka.Va.nd:d=Pd(this);e=this.F[d]; m.Dd=function(a,b){var c=this.L,c=c&~U.Ja.nc;if((Gc(this.b)&64)<<1&&(c|=U.Ja.nc,c!=this.L)){var d,e;d=this.R&1;e=this.R>>1&7;switch(e){case U.Ka.Wa.pd:break;case U.Ka.Wa.Oc:this.S=this.S<<1|d;break;case U.Ka.Wa.Tc:d=Pd(this);this.F[d]=U.Ka.Lb;jb(this,"doNVRCommand(): erase data at addr "+t(d));break;case U.Ka.Wa.Pc:this.u=this.u<<1|d;break;case U.Ka.Wa.td:d=Pd(this);e=this.u&U.Ka.Lb;this.F[d]=e;jb(this,"doNVRCommand(): write data "+t(e)+" to addr "+t(d));break;case U.Ka.Wa.nd:d=Pd(this);e=this.F[d];
null==e&&(e=U.Ka.Lb);this.u=e;jb(this,"doNVRCommand(): read data "+t(e)+" from addr "+t(d));break;case U.Ka.Va.od:this.u<<=1;this.da=this.u&U.Ka.Lb+1;break;default:jb(this,"doNVRCommand(): unrecognized command "+da(e))}}c&=~U.Ja.oc;this.da&&(c|=U.Ja.oc);c&=~U.Ja.jc;if(d=this.K)d=this.K,d.F&&Gc(d.b)>=d.L+3520&&(d.F=!1),d=!d.F;d&&(c|=U.Ja.jc);c&=~U.Ja.qc;this.Na&&this.Na.Da&1&&(c|=U.Ja.qc);this.L=c;D(this,a,null,b,"FLAGS",c);return c};m.Pd=function(a,b,c){D(this,a,b,c,"BRIGHTNESS");this.ha=b}; null==e&&(e=U.Ka.Lb);this.u=e;jb(this,"doNVRCommand(): read data "+t(e)+" from addr "+t(d));break;case U.Ka.Wa.od:this.u<<=1;this.da=this.u&U.Ka.Lb+1;break;default:jb(this,"doNVRCommand(): unrecognized command "+da(e))}}c&=~U.Ja.oc;this.da&&(c|=U.Ja.oc);c&=~U.Ja.jc;if(d=this.K){d=this.K;if(e=d.F)e=d.b,e=Gc(d.b)>=d.L+e.i.Ua*e.i.Sa/1E3*1.2731488;e&&(d.F=!1);d=!d.F}d&&(c|=U.Ja.jc);c&=~U.Ja.qc;this.Na&&this.Na.Da&1&&(c|=U.Ja.qc);this.L=c;D(this,a,null,b,"FLAGS",c);return c};
m.Sd=function(a,b,c){D(this,a,b,c,"NVR.LATCH");this.R=b};m.Rd=function(a,b,c){D(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.J=this.J&-4|a;break;case 1:this.J=this.J&-13|a<<2;this.video&&(b=this.video,a=this.J,jb(b,"updateScrollOffset("+a+")"),b.ib!==a&&((b.ib=a)?Qd(b,-1):b.yb=!0));break;case 2:switch(a){case 0:this.ca=~this.ca;break;case 2:case 3:this.qa=3-a}break;case 3:this.pa=a}}; m.Pd=function(a,b,c){D(this,a,b,c,"BRIGHTNESS");this.ha=b};m.Sd=function(a,b,c){D(this,a,b,c,"NVR.LATCH");this.R=b};m.Rd=function(a,b,c){D(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.J=this.J&-4|a;break;case 1:this.J=this.J&-13|a<<2;this.video&&(b=this.video,a=this.J,jb(b,"updateScrollOffset("+a+")"),b.ib!==a&&((b.ib=a)?Qd(b,-1):b.yb=!0));break;case 2:switch(a){case 0:this.ca=~this.ca;break;case 2:case 3:this.qa=3-a}break;case 3:this.pa=a}};
m.Qd=function(a,b,c){D(this,a,b,c,"DC011");b&U.Wa.md?(b&=U.Wa.pc,this.O!=b&&(this.O=b,this.video&&(a=this.video,b=this.O==U.Wa.pc?50:60,jb(a,"updateRate("+b+")"),a.Zb=b))):(b&=U.Wa.ic,this.M!=b&&(this.M=b,this.video&&(a=this.M==U.Wa.ic?132:80,b=this.video,jb(b,"updateDimensions("+a+","+(80<a&&this.L&U.Ja.mc?14:24)+")"),b.da=a,b.na=b.zc,80<a&&b.na--,Rd(b)&&Sd(b))))};T.Sb={0:S.prototype.Ad,1:S.prototype.Bd,2:S.prototype.Cd,3:S.prototype.zd}; m.Qd=function(a,b,c){D(this,a,b,c,"DC011");b&U.Xa.md?(b&=U.Xa.pc,this.O!=b&&(this.O=b,this.video&&(a=this.video,b=this.O==U.Xa.pc?50:60,jb(a,"updateRate("+b+")"),a.Zb=b))):(b&=U.Xa.ic,this.M!=b&&(this.M=b,this.video&&(a=this.M==U.Xa.ic?132:80,b=this.video,jb(b,"updateDimensions("+a+","+(80<a&&this.L&U.Ja.mc?14:24)+")"),b.da=a,b.na=b.zc,80<a&&b.na--,Rd(b)&&Sd(b))))};T.Sb={0:S.prototype.Ad,1:S.prototype.Bd,2:S.prototype.Cd,3:S.prototype.zd};
T.Tb={2:S.prototype.Kd,3:S.prototype.Md,4:S.prototype.Ld,5:S.prototype.Nd,6:S.prototype.Od};U.Sb={66:S.prototype.Dd};U.Tb={66:S.prototype.Pd,98:S.prototype.Sd,162:S.prototype.Rd,194:S.prototype.Qd};Ma(function(){for(var a=B(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new S(d);hb(d,c)}}); T.Tb={2:S.prototype.Kd,3:S.prototype.Md,4:S.prototype.Ld,5:S.prototype.Nd,6:S.prototype.Od};U.Sb={66:S.prototype.Dd};U.Tb={66:S.prototype.Pd,98:S.prototype.Sd,162:S.prototype.Rd,194:S.prototype.Qd};Ma(function(){for(var a=B(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new S(d);hb(d,c)}});
function Td(a){w.call(this,"ROM",a,Td);this.B=null;this.J=a.addr;this.u=a.size;this.H=a.writable;this.A=a.alias;this.F=a.file;this.K=ea(this.F);if(this.F){a=this.F;var b=fa(this.K);"json"!=b&&"hex"!=b&&(a=ha()+"/api/v1/dump?file="+this.F+"&format=bytes&decimal=true");var c=this;sa(a,null,!0,function(a,b,f){Ud(c,a,b,f)})}}bb(Td);var Vd=[0,5];Td.prototype.Qa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;Wd(this)}; function Td(a){w.call(this,"ROM",a,Td);this.B=null;this.J=a.addr;this.u=a.size;this.H=a.writable;this.A=a.alias;this.F=a.file;this.K=ea(this.F);if(this.F){a=this.F;var b=fa(this.K);"json"!=b&&"hex"!=b&&(a=ha()+"/api/v1/dump?file="+this.F+"&format=bytes&decimal=true");var c=this;sa(a,null,!0,function(a,b,f){Ud(c,a,b,f)})}}bb(Td);var Vd=[0,5];Td.prototype.Qa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;Wd(this)};
Td.prototype.Ea=function(){if(this.Ra){if(this.I){var a=this.I,b=this.id,c=this.J,d=this.u,e=this.Ra,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var p=f,k=[k>>>0,h],q=oa(p,k,a.Ua);0>q&&p.splice(-(q+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.H.push({Je:b,G:c,Fd:d,Ra:e,rc:f})}delete this.Ra}return!0};Td.prototype.Ha=function(){return!0}; Td.prototype.Ea=function(){if(this.Ra){if(this.I){var a=this.I,b=this.id,c=this.J,d=this.u,e=this.Ra,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var p=f,k=[k>>>0,h],q=oa(p,k,a.Va);0>q&&p.splice(-(q+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.H.push({Je:b,G:c,Fd:d,Ra:e,rc:f})}delete this.Ra}return!0};Td.prototype.Ha=function(){return!0};
function Ud(a,b,c,d){if(d)a.ia("Unable to load system ROM (error "+d+": "+b+")");else{db(a.Mb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.B=f;else if(h)for(a.B=Array(4*h.length),d=c=0;c<h.length;c++)a.B[d++]=h[c]&255,a.B[d++]=h[c]>>8&255,a.B[d++]=h[c]>>16&255,a.B[d++]=h[c]>>24&255;else a.B=e;a.Ra=e.symbols;if(!a.B.length){u("Empty ROM: "+b);return}if(1==a.B.length){u(a.B[0]);return}}catch(g){a.ia("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm, function Ud(a,b,c,d){if(d)a.ia("Unable to load system ROM (error "+d+": "+b+")");else{db(a.Mb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.B=f;else if(h)for(a.B=Array(4*h.length),d=c=0;c<h.length;c++)a.B[d++]=h[c]&255,a.B[d++]=h[c]>>8&255,a.B[d++]=h[c]>>16&255,a.B[d++]=h[c]>>24&255;else a.B=e;a.Ra=e.symbols;if(!a.B.length){u("Empty ROM: "+b);return}if(1==a.B.length){u(a.B[0]);return}}catch(g){a.ia("ROM data error: "+g.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]=ca(b[e],16);Wd(a)}} " ").replace(/ +$/,"").split(" "),a.B=Array(b.length),e=0;e<b.length;e++)a.B[e]=ca(b[e],16);Wd(a)}}
function Wd(a){if(!nb(a))if(!a.F)E(a);else if(a.B&&a.w){a.u||(a.u=a.B.length);if(a.B.length!=a.u)qb(a,"ROM size (0x"+n(a.B.length)+") does not match specified size ("+("0x"+n(a.u))+")");else if(Xd(a,a.J)){var b=[];"number"==typeof a.A?b.push(a.A):null!=a.A&&a.A.length&&(b=a.A);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.w,h=d.u,g=[],k=d.J>>>f.oa;0<h&&k<f.Y.length;)g.push(f.Y[k++]),h-=f.Ga;f=d.w;d=d.u;h=0;for(e>>>=f.oa;0<d&&e<f.Y.length;){k=g[h++];if(!k)break;f.Y[e++]=k;d-=f.Ga}}delete a.B}E(a)}} function Wd(a){if(!nb(a))if(!a.F)E(a);else if(a.B&&a.w){a.u||(a.u=a.B.length);if(a.B.length!=a.u)qb(a,"ROM size (0x"+n(a.B.length)+") does not match specified size ("+("0x"+n(a.u))+")");else if(Xd(a,a.J)){var b=[];"number"==typeof a.A?b.push(a.A):null!=a.A&&a.A.length&&(b=a.A);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.w,h=d.u,g=[],k=d.J>>>f.oa;0<h&&k<f.Y.length;)g.push(f.Y[k++]),h-=f.Ga;f=d.w;d=d.u;h=0;for(e>>>=f.oa;0<d&&e<f.Y.length;){k=g[h++];if(!k)break;f.Y[e++]=k;d-=f.Ga}}delete a.B}E(a)}}
function Xd(a,b){if(zb(a.w,b,a.u,a.H?1:ac)){var c;for(c=0;c<a.B.length;c++)Eb(a.w,b+c,a.B[c]);if(a.H&&256==b){for(c=0;c<Vd.length;c++)Eb(a.w,Vd[c],118);Qc(a.b,function(a){return function(b){if(0<=Vd.indexOf(b)){var c=!1,h=a.b,g=a.I;if(5==b)switch(c=!0,h.U){case 2:Yd(a,String.fromCharCode(h.W));break;case 9:for(var k=Wc(h),l="",p=255;p--;){var q=a.b.$(k++);if(36==q)break;l+=String.fromCharCode(q)}Yd(a,l);break;default:c=!1}c?Ld.call(h):g&&(a.g("\nCP/M vector "+t(b)),G(h,b),g.ma());b=!0}else b=!1;return b}}(a)); function Xd(a,b){if(zb(a.w,b,a.u,a.H?1:ac)){var c;for(c=0;c<a.B.length;c++)Eb(a.w,b+c,a.B[c]);if(a.H&&256==b){for(c=0;c<Vd.length;c++)Eb(a.w,Vd[c],118);Qc(a.b,function(a){return function(b){if(0<=Vd.indexOf(b)){var c=!1,h=a.b,g=a.I;if(5==b)switch(c=!0,h.U){case 2:Yd(a,String.fromCharCode(h.W));break;case 9:for(var k=Wc(h),l="",p=255;p--;){var q=a.b.$(k++);if(36==q)break;l+=String.fromCharCode(q)}Yd(a,l);break;default:c=!1}c?Ld.call(h):g&&(a.g("\nCP/M vector "+t(b)),G(h,b),g.ma());b=!0}else b=!1;return b}}(a));
Sc(a.b,b)}return!0}return!1}function Yd(a,b){b=b.replace(/\r/g,"");a.Fa&&(a.Fa.value+=b,a.Fa.scrollTop=a.Fa.scrollHeight)}Ma(function(){for(var a=B(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Td(d);hb(d,c)}});function Zd(a){w.call(this,"RAM",a,Zd);this.A=a.addr;this.u=a.size;this.B=!1}bb(Zd);m=Zd.prototype;m.Qa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;E(this)};m.Ea=function(a,b){b||this.reset();return!0};m.Ha=function(a){return a?this.save():!0}; Sc(a.b,b)}return!0}return!1}function Yd(a,b){b=b.replace(/\r/g,"");a.Fa&&(a.Fa.value+=b,a.Fa.scrollTop=a.Fa.scrollHeight)}Ma(function(){for(var a=B(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Td(d);hb(d,c)}});function Zd(a){w.call(this,"RAM",a,Zd);this.A=a.addr;this.u=a.size;this.B=!1}bb(Zd);m=Zd.prototype;m.Qa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;E(this)};m.Ea=function(a,b){b||this.reset();return!0};m.Ha=function(a){return a?this.save():!0};
m.reset=function(){!this.B&&this.u&&zb(this.w,this.A,this.u,1)&&(this.B=!0);this.B||u("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ma(function(){for(var a=B(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Zd(d);hb(d,c)}});function $d(a){w.call(this,"Keyboard",a,$d,65536);(a=a.model)&&!ae[a]&&Oa("Unrecognized Keyboard8080 model: "+a);this.w=ae[a]||{};this.reset();E(this)}bb($d); m.reset=function(){!this.B&&this.u&&zb(this.w,this.A,this.u,1)&&(this.B=!0);this.B||u("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ma(function(){for(var a=B(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Zd(d);hb(d,c)}});function $d(a){w.call(this,"Keyboard",a,$d,65536);(a=a.model)&&!ae[a]&&Oa("Unrecognized Keyboard8080 model: "+a);this.w=ae[a]||{};this.reset();E(this)}bb($d);
var be={za:1978.1,C:{},hc:{65:37,68:39,76:32},xb:{},Xa:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},V={za:100,C:{},hc:{},xb:{},Xa:{setup:120},Qc:{Aa:130,INIT:127},La:{Aa:130,dd:1,cd:2,bd:4,ad:8,ed:16,lc:32,kc:63,qd:64,be:128,INIT:0},$c:127};V.C[46]=3;V.C[80]=5;V.C[79]=6;V.C[89]=7;V.C[84]=8;V.C[87]=9;V.C[81]=10;V.C[39]=16;V.C[221]=20;V.C[219]=21;V.C[73]=22;V.C[85]=23;V.C[82]=24;V.C[69]=25;V.C[49]=26;V.C[37]=32;V.C[40]=34;V.C[117]=35;V.C[19]=35;V.C[192]=36;V.C[189]=37;V.C[57]=38;V.C[55]=39; var be={za:1978.1,C:{},hc:{65:37,68:39,76:32},xb:{},Ya:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},V={za:100,C:{},hc:{},xb:{},Ya:{setup:120},Qc:{Aa:130,INIT:127},La:{Aa:130,dd:1,cd:2,bd:4,ad:8,ed:16,lc:32,kc:63,qd:64,be:128,INIT:0},$c:127};V.C[46]=3;V.C[80]=5;V.C[79]=6;V.C[89]=7;V.C[84]=8;V.C[87]=9;V.C[81]=10;V.C[39]=16;V.C[221]=20;V.C[219]=21;V.C[73]=22;V.C[85]=23;V.C[82]=24;V.C[69]=25;V.C[49]=26;V.C[37]=32;V.C[40]=34;V.C[117]=35;V.C[19]=35;V.C[192]=36;V.C[189]=37;V.C[57]=38;V.C[55]=39;
V.C[52]=40;V.C[51]=41;V.C[27]=42;V.C[38]=48;V.C[114]=49;V.C[112]=50;V.C[8]=51;V.C[187]=52;V.C[48]=53;V.C[56]=54;V.C[54]=55;V.C[53]=56;V.C[50]=57;V.C[9]=58;V.C[103]=64;V.C[115]=65;V.C[113]=66;V.C[96]=67;V.C[118]=68;V.C[220]=69;V.C[76]=70;V.C[75]=71;V.C[71]=72;V.C[70]=73;V.C[65]=74;V.C[104]=80;V.C[2013]=81;V.C[98]=82;V.C[97]=83;V.C[222]=85;V.C[186]=86;V.C[74]=87;V.C[72]=88;V.C[68]=89;V.C[83]=90;V.C[110]=96;V.C[116]=97;V.C[101]=98;V.C[100]=99;V.C[13]=100;V.C[190]=101;V.C[188]=102;V.C[78]=103; V.C[52]=40;V.C[51]=41;V.C[27]=42;V.C[38]=48;V.C[114]=49;V.C[112]=50;V.C[8]=51;V.C[187]=52;V.C[48]=53;V.C[56]=54;V.C[54]=55;V.C[53]=56;V.C[50]=57;V.C[9]=58;V.C[103]=64;V.C[115]=65;V.C[113]=66;V.C[96]=67;V.C[118]=68;V.C[220]=69;V.C[76]=70;V.C[75]=71;V.C[71]=72;V.C[70]=73;V.C[65]=74;V.C[104]=80;V.C[2013]=81;V.C[98]=82;V.C[97]=83;V.C[222]=85;V.C[186]=86;V.C[74]=87;V.C[72]=88;V.C[68]=89;V.C[83]=90;V.C[110]=96;V.C[116]=97;V.C[101]=98;V.C[100]=99;V.C[13]=100;V.C[190]=101;V.C[188]=102;V.C[78]=103;
V.C[66]=104;V.C[88]=105;V.C[119]=106;V.C[105]=112;V.C[99]=113;V.C[102]=114;V.C[109]=115;V.C[191]=117;V.C[77]=118;V.C[32]=119;V.C[86]=120;V.C[67]=121;V.C[90]=122;V.C[120]=123;V.C[17]=124;V.C[16]=125;V.C[20]=126;V.xb={l4:V.La.dd,l3:V.La.cd,l2:V.La.bd,l1:V.La.ad,locked:V.La.ed,local:V.La.lc,online:~V.La.lc};var ae={SI1978:be,VT100:V}; V.C[66]=104;V.C[88]=105;V.C[119]=106;V.C[105]=112;V.C[99]=113;V.C[102]=114;V.C[109]=115;V.C[191]=117;V.C[77]=118;V.C[32]=119;V.C[86]=120;V.C[67]=121;V.C[90]=122;V.C[120]=123;V.C[17]=124;V.C[16]=125;V.C[20]=126;V.xb={l4:V.La.dd,l3:V.La.cd,l2:V.La.bd,l1:V.La.ad,locked:V.La.ed,local:V.La.lc,online:~V.La.lc};var ae={SI1978:be,VT100:V};
$d.prototype.la=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.N[e]){if("led"==a&&this.w.xb[b])return this.N[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return ce(d,a,!0)},c.onkeyup=function(a){return ce(d,a,!1)},!0;default:if(this.w.Xa&&void 0!==this.w.Xa[b])return this.N[e]=c,a=function(a,b){return function(){de(a,b,!0)}}(this,this.w.Xa[b]),b=function(a,b){return function(){de(a,b,!1);a.B&&a.B.hb()}}(this,this.w.Xa[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend= $d.prototype.la=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.N[e]){if("led"==a&&this.w.xb[b])return this.N[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return ce(d,a,!0)},c.onkeyup=function(a){return ce(d,a,!1)},!0;default:if(this.w.Ya&&void 0!==this.w.Ya[b])return this.N[e]=c,a=function(a,b){return function(){de(a,b,!0)}}(this,this.w.Ya[b]),b=function(a,b){return function(){de(a,b,!1);a.B&&a.B.hb()}}(this,this.w.Ya[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};$d.prototype.Qa=function(a,b,c,d){this.B=a;this.b=c;this.I=d;this.J=vb(a,"ChipSet");Hb(b,this,this.w.Sb);Tb(b,this,this.w.Tb)};$d.prototype.Ea=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};$d.prototype.Ha=function(a){return a?this.save():!0};V.INIT=[[V.La.INIT,V.Qc.INIT,!1,0,-1]];m=$d.prototype;m.reset=function(){this.u=[];this.w.INIT&&!this.restore(this.w.INIT)&&this.ia("reset error")}; b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};$d.prototype.Qa=function(a,b,c,d){this.B=a;this.b=c;this.I=d;this.J=vb(a,"ChipSet");Hb(b,this,this.w.Sb);Tb(b,this,this.w.Tb)};$d.prototype.Ea=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};$d.prototype.Ha=function(a){return a?this.save():!0};V.INIT=[[V.La.INIT,V.Qc.INIT,!1,0,-1]];m=$d.prototype;m.reset=function(){this.u=[];this.w.INIT&&!this.restore(this.w.INIT)&&this.ia("reset error")};
m.save=function(){var a=new H(this);switch(this.w.za){case V.za:I(a,0,[this.K,this.H,this.F,this.L,-1])}return a.data()};m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.w.za){case be.za:return!0;case V.za:return this.K=b[0],ee(this,this.K&V.La.kc),this.H=b[1],this.F=b[2],this.L=b[3],this.A=b[4],!0}return!1};function ee(a,b){for(var c in a.w.xb){var d=a.N["led-"+c];if(d){var e=a.w.xb[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}} m.save=function(){var a=new H(this);switch(this.w.za){case V.za:I(a,0,[this.K,this.H,this.F,this.L,-1])}return a.data()};m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.w.za){case be.za:return!0;case V.za:return this.K=b[0],ee(this,this.K&V.La.kc),this.H=b[1],this.F=b[2],this.L=b[3],this.A=b[4],!0}return!1};function ee(a,b){for(var c in a.w.xb){var d=a.N["led-"+c];if(d){var e=a.w.xb[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}
function ce(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.w.hc[e]||e,!a.w.C[e]){for(var f in a.w.Xa)if(a.w.Xa[f]===e){e=f;break a}e=null}e&&(d=de(a,e,c),b.preventDefault());return d} function ce(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.w.hc[e]||e,!a.w.C[e]){for(var f in a.w.Ya)if(a.w.Ya[f]===e){e=f;break a}e=null}e&&(d=de(a,e,c),b.preventDefault());return d}
function de(a,b,c){var d;a:{for(d=0;d<a.u.length;d++)if(a.u[d].fc==b)break a;d=-1}if(c)0>d?a.u.push({fc:b,ac:Date.now(),Nb:!1}):(a.u[d].ac=Date.now(),a.u[d].Nb=!1);else if(0<=d){if(!a.u[d].Nb){var e=a.u[d].ac;if(e&&100>Date.now()-e)return a.u[d].Nb=!0,fe(a),!0}a.u.splice(d,1)}if(a.J){d=0;switch(b){case "1p":d=T.Ya.gd;break;case "2p":d=T.Ya.ld;break;case "coin":d=T.Ya.Sc;break;case "left":d=T.Ya.jd;break;case "right":d=T.Ya.kd;break;case "fire":d=T.Ya.hd}d&&(a=a.J,b=d,a.H&=~b,c&&(a.H|=b))}return!0} function de(a,b,c){var d;a:{for(d=0;d<a.u.length;d++)if(a.u[d].fc==b)break a;d=-1}if(c)0>d?a.u.push({fc:b,ac:Date.now(),Nb:!1}):(a.u[d].ac=Date.now(),a.u[d].Nb=!1);else if(0<=d){if(!a.u[d].Nb){var e=a.u[d].ac;if(e&&100>Date.now()-e)return a.u[d].Nb=!0,fe(a),!0}a.u.splice(d,1)}if(a.J){d=0;switch(b){case "1p":d=T.Za.gd;break;case "2p":d=T.Za.ld;break;case "coin":d=T.Za.Sc;break;case "left":d=T.Za.jd;break;case "right":d=T.Za.kd;break;case "fire":d=T.Za.hd}d&&(a=a.J,b=d,a.H&=~b,c&&(a.H|=b))}return!0}
function fe(a){for(var b=0,c=-1;b<a.u.length;){if(a.u[b].Nb){var d=a.u[b].fc,e=100-(Date.now()-a.u[b].ac);if(0<e){if(0>c||c>e)c=e}else{de(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){fe(a)},c)}m.Ed=function(a,b){var c=this.H;0<=this.A&&(this.A<this.u.length?(c=this.u[this.A],this.A++,c=V.C[c.fc],c&128&&(c&=127)):(this.A=-1,c=V.$c),this.H=c,Gd(this.b,1));D(this,a,null,b,"KBDUART.ADDRESS",c);return c}; function fe(a){for(var b=0,c=-1;b<a.u.length;){if(a.u[b].Nb){var d=a.u[b].fc,e=100-(Date.now()-a.u[b].ac);if(0<e){if(0>c||c>e)c=e}else{de(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){fe(a)},c)}m.Ed=function(a,b){var c=this.H;0<=this.A&&(this.A<this.u.length?(c=this.u[this.A],this.A++,c=V.C[c.fc],c&128&&(c&=127)):(this.A=-1,c=V.$c),this.H=c,Gd(this.b,1));D(this,a,null,b,"KBDUART.ADDRESS",c);return c};
m.Td=function(a,b,c){D(this,a,b,c,"KBDUART.STATUS");this.K=b;this.F=!0;this.L=Gc(this.b);ee(this,b&V.La.kc);b&V.La.qd&&(this.A=0,Gd(this.b,1))};V.Sb={130:$d.prototype.Ed};V.Tb={130:$d.prototype.Td};Ma(function(){for(var a=B(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new $d(d);hb(d,c)}}); m.Td=function(a,b,c){D(this,a,b,c,"KBDUART.STATUS");this.K=b;this.F=!0;this.L=Gc(this.b);ee(this,b&V.La.kc);b&V.La.qd&&(this.A=0,Gd(this.b,1))};V.Sb={130:$d.prototype.Ed};V.Tb={130:$d.prototype.Td};Ma(function(){for(var a=B(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new $d(d);hb(d,c)}});
function ge(a,b,c,d,e){var f=this;this.Hc=Aa("Gecko/");var h=["","moz","ms","webkit"];w.call(this,"Video",a,ge,262144);this.aa=a.screenWidth;this.R=a.screenHeight;this.ua=a.bufferAddr;this.Wd=a.bufferRAM;var g=a.bufferFormat;this.fa=g&&he[g.toUpperCase()]||ie;this.da=a.bufferCols;this.ga=a.bufferRows;this.zc=this.na=a.cellWidth||1;this.ja=a.cellHeight||1;this.Na=null;this.Gc=!1;this.ab=a.bufferBits||1;this.Xd=a.bufferLeft||0;if(this.A=a.bufferRotate)this.A=this.A%360,0<this.A&&(this.A-=360),-90!= function ge(a,b,c,d,e){var f=this;this.Hc=Aa("Gecko/");var h=["","moz","ms","webkit"];w.call(this,"Video",a,ge,262144);this.aa=a.screenWidth;this.R=a.screenHeight;this.ua=a.bufferAddr;this.Wd=a.bufferRAM;var g=a.bufferFormat;this.fa=g&&he[g.toUpperCase()]||ie;this.da=a.bufferCols;this.ga=a.bufferRows;this.zc=this.na=a.cellWidth||1;this.ja=a.cellHeight||1;this.Na=null;this.Gc=!1;this.bb=a.bufferBits||1;this.Xd=a.bufferLeft||0;if(this.A=a.bufferRotate)this.A=this.A%360,0<this.A&&(this.A-=360),-90!=
this.A&&(this.ia("unsupported buffer rotation: "+this.A),this.A=0);this.Yb=a.interruptRate;this.Zd=a.refreshRate||60;this.O=b;this.F=c;this.Ba=(this.$d=d)||b||null;this.Ud=this.aa;this.Vd=this.R;this.Ac=this.aa/this.da|0;this.Bc=this.R/this.ga|0;1<this.ja&&(this.ga++,this.ib=0,this.yb=!1);b=a.smoothing;(c=Va.smoothing)&&(b="true"==c);if(null!=b)for(c=0;c<h.length;c++)if(d=(d=h[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.F[d]){this.F[d]=b;break}if(this.J=a.screenRotate)this.J= this.A&&(this.ia("unsupported buffer rotation: "+this.A),this.A=0);this.Yb=a.interruptRate;this.Zd=a.refreshRate||60;this.O=b;this.F=c;this.Ba=(this.$d=d)||b||null;this.Ud=this.aa;this.Vd=this.R;this.Ac=this.aa/this.da|0;this.Bc=this.R/this.ga|0;1<this.ja&&(this.ga++,this.ib=0,this.yb=!1);b=a.smoothing;(c=Va.smoothing)&&(b="true"==c);if(null!=b)for(c=0;c<h.length;c++)if(d=(d=h[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.F[d]){this.F[d]=b;break}if(this.J=a.screenRotate)this.J=
this.J%360,0<this.J&&(this.J-=360),-90!=this.J?(this.ia("unsupported screen rotation: "+this.J),this.J=0):(this.F.translate(0,this.R),this.F.rotate(this.J*Math.PI/180),this.F.scale(this.R/this.aa,this.aa/this.R));if(this.u=e)if(this.u.kb=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.u.kb){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){je(f,document.fullscreenElement||document.msFullscreenElement|| this.J%360,0<this.J&&(this.J-=360),-90!=this.J?(this.ia("unsupported screen rotation: "+this.J),this.J=0):(this.F.translate(0,this.R),this.F.rotate(this.J*Math.PI/180),this.F.scale(this.R/this.aa,this.aa/this.R));if(this.u=e)if(this.u.kb=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.u.kb){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){je(f,document.fullscreenElement||document.msFullscreenElement||
document.mozFullScreenElement||document.webkitFullscreenElement?!0:!1)},!1);break}for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){je(f,null)},!1);break}}if(this.ha=a.fontROM)"json"!=fa(this.ha)&&(this.ha=ha()+"/api/v1/dump?file="+this.ha+"&format=bytes"),sa(this.ha,null,!0,function(a,b,c){ke(f,a,b,c)});this.Ab={}}bb(ge);var ie=0,he={SI1978:1,VT100:2}; document.mozFullScreenElement||document.webkitFullscreenElement?!0:!1)},!1);break}for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){je(f,null)},!1);break}}if(this.ha=a.fontROM)"json"!=fa(this.ha)&&(this.ha=ha()+"/api/v1/dump?file="+this.ha+"&format=bytes"),sa(this.ha,null,!0,function(a,b,c){ke(f,a,b,c)});this.Ab={}}bb(ge);var ie=0,he={SI1978:1,VT100:2};
function Rd(a){a.L=a.da*a.na;a.ca=a.ga*a.ja;var b=a.L,c=a.ca;a.A&&(b=a.ca,c=a.L);a.S=0;if(!a.Wd&&(a.S=(a.L*a.ab>>3)*a.ca,!zb(a.w,a.ua,a.S,3)))return!1;a.S?(a.Ic=a.F.createImageData(b,c),a.Kc=16/a.ab|0,le(a,a.S>>1)):le(a,(a.da+1)*a.ga);a.M=document.createElement("canvas");a.M.width=b;a.M.height=c;a.jb=a.M.getContext("2d");a.pa={};a.Ca=1<<a.ab;a.qa=Array(a.Ca+2);a.qa[0]=[0,0,0,255];a.qa[1]=[255,255,255,255];1==a.fa&&(a.qa[a.Ca+0]=[255,255,0,255],a.qa[a.Ca+1]=[0,255,0,255]);2==a.fa&&(a.Zb=60,a.zb=!1, function Rd(a){a.L=a.da*a.na;a.ca=a.ga*a.ja;var b=a.L,c=a.ca;a.A&&(b=a.ca,c=a.L);a.S=0;if(!a.Wd&&(a.S=(a.L*a.bb>>3)*a.ca,!zb(a.w,a.ua,a.S,3)))return!1;a.S?(a.Ic=a.F.createImageData(b,c),a.Kc=16/a.bb|0,le(a,a.S>>1)):le(a,(a.da+1)*a.ga);a.M=document.createElement("canvas");a.M.width=b;a.M.height=c;a.jb=a.M.getContext("2d");a.pa={};a.Ca=1<<a.bb;a.qa=Array(a.Ca+2);a.qa[0]=[0,0,0,255];a.qa[1]=[255,255,255,255];1==a.fa&&(a.qa[a.Ca+0]=[255,255,0,255],a.qa[a.Ca+1]=[0,255,0,255]);2==a.fa&&(a.Zb=60,a.zb=!1,
a.Ua=Array(a.da));return!0}ge.prototype.Qa=function(a,b,c,d){this.B=a;this.w=b;this.b=c;this.I=d;Rd(this);if(this.K=vb(a,"Keyboard")){for(var e in this.Ab)this.K.la("led",e,this.Ab[e]);this.O&&this.K.la(this.$d?"textarea":"canvas","kbd",this.Ba)}this.ha||E(this)}; a.Va=Array(a.da));return!0}ge.prototype.Qa=function(a,b,c,d){this.B=a;this.w=b;this.b=c;this.I=d;Rd(this);if(this.K=vb(a,"Keyboard")){for(var e in this.Ab)this.K.la("led",e,this.Ab[e]);this.O&&this.K.la(this.$d?"textarea":"canvas","kbd",this.Ba)}this.ha||E(this)};
function ke(a,b,c,d){if(d)a.ia("Unable to load font ROM (error "+d+": "+b+")");else{db(a.Mb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){u("Empty font ROM: "+b);return}if(1==f.length){u(f[0]);return}if(2048==f.length)a.Na=f,Sd(a);else{a.ia("Unrecognized font data length ("+f.length+")");return}}catch(h){a.ia("Font ROM data error: "+h.message);return}(a.F||a.I)&&E(a)}} function ke(a,b,c,d){if(d)a.ia("Unable to load font ROM (error "+d+": "+b+")");else{db(a.Mb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){u("Empty font ROM: "+b);return}if(1==f.length){u(f[0]);return}if(2048==f.length)a.Na=f,Sd(a);else{a.ia("Unrecognized font data length ("+f.length+")");return}}catch(h){a.ia("Font ROM data error: "+h.message);return}(a.F||a.I)&&E(a)}}
function Sd(a){a.Na&&(a.Gc=2==a.fa,a.pa[96]=[me(a,a.na,a.ja),me(a,a.na,a.ja,a.zb)],a.pa[64]=[me(a,2*a.na,a.ja),me(a,2*a.na,a.ja,a.zb)],a.pa[32]=a.pa[0]=[me(a,2*a.na,2*a.ja),me(a,2*a.na,2*a.ja,a.zb)])} function Sd(a){a.Na&&(a.Gc=2==a.fa,a.pa[96]=[me(a,a.na,a.ja),me(a,a.na,a.ja,a.zb)],a.pa[64]=[me(a,2*a.na,a.ja),me(a,2*a.na,a.ja,a.zb)],a.pa[32]=a.pa[0]=[me(a,2*a.na,2*a.ja),me(a,2*a.na,2*a.ja,a.zb)])}
function me(a,b,c,d){var e=8>=a.zc?8:16,f=8<e?15:0,h=a.Na.length/e,g=!1===d,k={na:b,ja:c};k.canvas=document.createElement("canvas");k.canvas.width=16*b;k.canvas.height=h/16*c;k.context=k.canvas.getContext("2d");for(var l=k.context.createImageData(b,c),p=0;p<h;p++){for(var q=0,x=q;q<a.ja;q++)for(var v=p*e+(f+q&e-1),v=d&&8==q?255:a.Na[v],r=0;r<c/a.ja;r++){for(var C=0,y=0,X=y;y<a.na;y++){for(var A=v&128>>(7<y?7:y),C=a.Gc&&!A&&C?C:A,Q=0;Q<b/a.na;Q++)g&&(C=!C),ne(a,l,X,x,C?1:0),X++;C=A}x++}k.context.putImageData(l, function me(a,b,c,d){var e=8>=a.zc?8:16,f=8<e?15:0,h=a.Na.length/e,g=!1===d,k={na:b,ja:c};k.canvas=document.createElement("canvas");k.canvas.width=16*b;k.canvas.height=h/16*c;k.context=k.canvas.getContext("2d");for(var l=k.context.createImageData(b,c),p=0;p<h;p++){for(var q=0,x=q;q<a.ja;q++)for(var v=p*e+(f+q&e-1),v=d&&8==q?255:a.Na[v],r=0;r<c/a.ja;r++){for(var C=0,y=0,X=y;y<a.na;y++){for(var A=v&128>>(7<y?7:y),C=a.Gc&&!A&&C?C:A,Q=0;Q<b/a.na;Q++)g&&(C=!C),ne(a,l,X,x,C?1:0),X++;C=A}x++}k.context.putImageData(l,
@ -128,9 +128,9 @@ ge.prototype.Ea=function(){if(2==this.fa){for(var a={0:[32,"SET-UP A"],2:[64,'TO
c&255);if(g)break}if(h)for(c=0,e=1;e<h.length;e++){for(var g=h[e],k=0;k<g.length;k++)Eb(this.w,b++,g.charCodeAt(k)|c);c^=128}Eb(this.w,b++,127);c=b}oe(this)}return!0};ge.prototype.la=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Ab[b]=c,!0;switch(b){case "fullScreen":return this.N[b]=c,this.u&&this.u.kb?c.onclick=function(){d.kb()}:c.parentNode.removeChild(c),!0}return!1}; c&255);if(g)break}if(h)for(c=0,e=1;e<h.length;e++){for(var g=h[e],k=0;k<g.length;k++)Eb(this.w,b++,g.charCodeAt(k)|c);c^=128}Eb(this.w,b++,127);c=b}oe(this)}return!0};ge.prototype.la=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Ab[b]=c,!0;switch(b){case "fullScreen":return this.N[b]=c,this.u&&this.u.kb?c.onclick=function(){d.kb()}:c.parentNode.removeChild(c),!0}return!1};
ge.prototype.kb=function(){var a=!1;if(this.u){if(this.u.kb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.aa/this.R;b>c&&(a=Math.round(c/b*100)+"%")}this.Hc?(this.O.style.width=a,this.O.style.width=a,this.O.style.display="block",this.O.style.margin="auto"):(this.u.style.width=a,this.u.style.height="auto");this.u.style.backgroundColor="black";this.u.kb();a=!0}this.Ba&&this.Ba.focus()}return a}; ge.prototype.kb=function(){var a=!1;if(this.u){if(this.u.kb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.aa/this.R;b>c&&(a=Math.round(c/b*100)+"%")}this.Hc?(this.O.style.width=a,this.O.style.width=a,this.O.style.display="block",this.O.style.margin="auto"):(this.u.style.width=a,this.u.style.height="auto");this.u.style.backgroundColor="black";this.u.kb();a=!0}this.Ba&&this.Ba.focus()}return a};
function je(a,b){!b&&a.u&&(a.Hc?a.O.style.width=a.O.style.height="":a.u.style.width=a.u.style.height="");jb(a,"notifyFullScreen("+b+")")}function le(a,b){a.Jc=b;a.ya=!1;if(void 0===a.H||a.H.length!=a.Jc)a.H=Array(a.Jc)}function ne(a,b,c,d,e){d=a.A?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.fa&&(208<=c&&236>c?e=a.Ca+0:28<=c&&72>c&&(e=a.Ca+1));a=a.qa[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 je(a,b){!b&&a.u&&(a.Hc?a.O.style.width=a.O.style.height="":a.u.style.width=a.u.style.height="");jb(a,"notifyFullScreen("+b+")")}function le(a,b){a.Jc=b;a.ya=!1;if(void 0===a.H||a.H.length!=a.Jc)a.H=Array(a.Jc)}function ne(a,b,c,d,e){d=a.A?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.fa&&(208<=c&&236>c?e=a.Ca+0:28<=c&&72>c&&(e=a.Ca+1));a=a.qa[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 oe(a,b){for(var c=a.ua,d=-1,e=0,f=60==a.Zb?2:5,h=0,g=0,k=-1;e<a.ga;){var l=0,p=c,q=d,x=a.da;for(96!=q&&(x>>=1);;){var v=Cb(a.w,p++);if(127==(v&127)){var r=Cb(a.w,p++),d=r&96,c=(r&15)<<8|Cb(a.w,p),c=c+(r&16?8192:16384);break}if(l<x)a.Ua[l++]=v;else break}if(f)f--;else{for(;l<a.Ua.length;)a.Ua[l++]=0;if(0<=q)for(p=a.ya&&a.H[h]==x,a.H[h++]=x,x=0;x<l;x++){v=a.Ua[x];if(!p||v!==a.H[h]){a.H[k=h]=v;var r=a,C=a.jb,y=v&127;if(v=r.pa[q][v&128?1:0]){var X=(y&15)*v.na,y=(y>>4)*v.ja,A=void 0,Q=void 0, function oe(a,b){for(var c=a.ua,d=-1,e=0,f=60==a.Zb?2:5,h=0,g=0,k=-1;e<a.ga;){var l=0,p=c,q=d,x=a.da;for(96!=q&&(x>>=1);;){var v=Cb(a.w,p++);if(127==(v&127)){var r=Cb(a.w,p++),d=r&96,c=(r&15)<<8|Cb(a.w,p),c=c+(r&16?8192:16384);break}if(l<x)a.Va[l++]=v;else break}if(f)f--;else{for(;l<a.Va.length;)a.Va[l++]=0;if(0<=q)for(p=a.ya&&a.H[h]==x,a.H[h++]=x,x=0;x<l;x++){v=a.Va[x];if(!p||v!==a.H[h]){a.H[k=h]=v;var r=a,C=a.jb,y=v&127;if(v=r.pa[q][v&128?1:0]){var X=(y&15)*v.na,y=(y>>4)*v.ja,A=void 0,Q=void 0,
aa=void 0,Y=void 0,va=v.na,Fb=v.ja;C?(A=x*r.na,Q=e*r.ja,aa=r.na,Y=r.ja):(A=x*r.Ac,Q=e*r.Bc,aa=r.Ac,Y=r.Bc);v.na>r.na&&(A*=2,aa*=2);v.ja>r.ja&&(0==q&&(y+=r.ja),Fb=r.ja);C?C.drawImage(v.canvas,X,y,va,Fb,A,Q,aa,Y):(A+=0,Q+=0,r.F.drawImage(v.canvas,X,y,va,Fb,A,Q,aa,Y))}g++}h++}e++}}a.ya=!0;!b&&a.yb&&1==g&&(a.H[k]=-1,g=0);a.yb=!1;(g||b)&&a.jb&&a.F.drawImage(a.M,0,a.ib,a.L,a.ca-a.ja,0,0,a.Ud,a.Vd)} aa=void 0,Y=void 0,va=v.na,Fb=v.ja;C?(A=x*r.na,Q=e*r.ja,aa=r.na,Y=r.ja):(A=x*r.Ac,Q=e*r.Bc,aa=r.Ac,Y=r.Bc);v.na>r.na&&(A*=2,aa*=2);v.ja>r.ja&&(0==q&&(y+=r.ja),Fb=r.ja);C?C.drawImage(v.canvas,X,y,va,Fb,A,Q,aa,Y):(A+=0,Q+=0,r.F.drawImage(v.canvas,X,y,va,Fb,A,Q,aa,Y))}g++}h++}e++}}a.ya=!0;!b&&a.yb&&1==g&&(a.H[k]=-1,g=0);a.yb=!1;(g||b)&&a.jb&&a.F.drawImage(a.M,0,a.ib,a.L,a.ca-a.ja,0,0,a.Ud,a.Vd)}
function Qd(a,b){var c=!0,d=!0;if(0<=b){d=!1;a.Yb&&(120==a.Yb?b&1?(Gd(a.b,2),c=!1):Gd(a.b,1):Gd(a.b,4));var e;if(e=c&&a.ya&&a.S){e=a.w;for(var f=a.S,h=!0,g=a.ua>>>e.oa;0<f&&g<e.Y.length;)e.Y[g].Oa&&(e.Y[g].Oa=h=!1,e.Y[g].uc=!0),f-=e.Ga,g++;e=h}e&&(c=!1)}if(c)if(1<a.na)switch(a.fa){case 2:oe(a,d)}else{var f=a.ua,h=f+a.S,k=g=0,l=0,c=a.L,p=0,d=a.ca,q=e=0,x=a.ab,v=(1<<x)-1;a.Xd&&(x=-x,q=16+x);for(;f<h;){var r=Db(a.w,f);if(a.ya&&r===a.H[g])k+=a.Kc;else{a.H[g]=r;var C=q;C&&(r=r>>8|(r&255)<<8);k<c&&(c=k); function Qd(a,b){var c=!0,d=!0;if(0<=b){d=!1;a.Yb&&(120==a.Yb?b&1?(Gd(a.b,2),c=!1):Gd(a.b,1):Gd(a.b,4));var e;if(e=c&&a.ya&&a.S){e=a.w;for(var f=a.S,h=!0,g=a.ua>>>e.oa;0<f&&g<e.Y.length;)e.Y[g].Oa&&(e.Y[g].Oa=h=!1,e.Y[g].uc=!0),f-=e.Ga,g++;e=h}e&&(c=!1)}if(c)if(1<a.na)switch(a.fa){case 2:oe(a,d)}else{var f=a.ua,h=f+a.S,k=g=0,l=0,c=a.L,p=0,d=a.ca,q=e=0,x=a.bb,v=(1<<x)-1;a.Xd&&(x=-x,q=16+x);for(;f<h;){var r=Db(a.w,f);if(a.ya&&r===a.H[g])k+=a.Kc;else{a.H[g]=r;var C=q;C&&(r=r>>8|(r&255)<<8);k<c&&(c=k);
for(var y=a.Kc;y--;){var X=r>>C&v;ne(a,a.Ic,k++,l,X);C+=x}k>p&&(p=k);l<d&&(d=l);l>=e&&(e=l+1)}f+=2;g++;if(k>=a.L&&(k=0,l++,l>a.ca))break}a.ya=!0;c<a.L&&(f=p-c,e-=d,a.A&&(h=c,g=f,c=d,f=e,d=a.L-(h+g),e=g),a.jb.putImageData(a.Ic,0,0,c,d,f,e),a.F.drawImage(a.M,0,0,a.M.width,a.M.height,0,0,a.aa,a.R))}} for(var y=a.Kc;y--;){var X=r>>C&v;ne(a,a.Ic,k++,l,X);C+=x}k>p&&(p=k);l<d&&(d=l);l>=e&&(e=l+1)}f+=2;g++;if(k>=a.L&&(k=0,l++,l>a.ca))break}a.ya=!0;c<a.L&&(f=p-c,e-=d,a.A&&(h=c,g=f,c=d,f=e,d=a.L-(h+g),e=g),a.jb.putImageData(a.Ic,0,0,c,d,f,e),a.F.drawImage(a.M,0,0,a.M.width,a.M.height,0,0,a.aa,a.R))}}
Ma(function(){for(var a=B(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=z(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; 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<=ta().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height= Ma(function(){for(var a=B(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=z(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; 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<=ta().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||Va.aspect);f&&.3<=f&&3.33>=f&&(La("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");Aa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new ge(d,e,h,f,c);hb(d,c)}}); (a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Va.aspect);f&&.3<=f&&3.33>=f&&(La("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");Aa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new ge(d,e,h,f,c);hb(d,c)}});
@ -138,14 +138,14 @@ function pe(a){this.fa=+a.adapter;switch(this.fa){case 0:this.ga=0;this.pa=2;bre
var re=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],se=[!1,0,0,133,142,39,238],qe="buffer";m=pe.prototype; var re=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],se=[!1,0,0,133,142,39,238],qe="buffer";m=pe.prototype;
m.la=function(a,b,c,d){var e=this;switch(b){case qe:return this.N[b]=this.u=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),te(e,b);return!0},c.onkeypress=function(a){a=a||window.event;te(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.N[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.ec(d);e.B&&e.B.hb(); m.la=function(a,b,c,d){var e=this;switch(b){case qe:return this.N[b]=this.u=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),te(e,b);return!0},c.onkeypress=function(a){a=a||window.event;te(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.N[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.ec(d);e.B&&e.B.hb();
return!0},!0}return!1};m.Qa=function(a,b,c,d){this.B=a;this.w=b;this.b=c;this.I=d;var e=this;this.qa=Kc(this.b,function(){e.ec()});this.ua=Kc(this.b,function(){e.Da|=5});this.J=vb(a,"ChipSet");Hb(b,this,ue,this.ga);Tb(b,this,ve,this.ga);E(this)}; return!0},!0}return!1};m.Qa=function(a,b,c,d){this.B=a;this.w=b;this.b=c;this.I=d;var e=this;this.qa=Kc(this.b,function(){e.ec()});this.ua=Kc(this.b,function(){e.Da|=5});this.J=vb(a,"ChipSet");Hb(b,this,ue,this.ga);Tb(b,this,ve,this.ga);E(this)};
m.xc=function(){if(!this.K){var a=nc(this.B,"connection");if(a){var b=a.split("->");if(2==b.length){var c=ma(b[0]);if(c!=this.Za)return;b=ma(b[1]);if(this.K=fb(b)){var d=this.K.exports;if(d){var e=d.connect;e&&e.call(this.K);if(this.M=d.receiveData){this.status(this.Mb+"."+c+" connected to "+b);return}}}}this.status("Unable to establish connection: "+a)}}};m.Ea=function(a,b){if(!b)if(this.xc(),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0}; m.xc=function(){if(!this.K){var a=nc(this.B,"connection");if(a){var b=a.split("->");if(2==b.length){var c=ma(b[0]);if(c!=this.$a)return;b=ma(b[1]);if(this.K=fb(b)){var d=this.K.exports;if(d){var e=d.connect;e&&e.call(this.K);if(this.M=d.receiveData){this.status(this.Mb+"."+c+" connected to "+b);return}}}}this.status("Unable to establish connection: "+a)}}};m.Ea=function(a,b){if(!b)if(this.xc(),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};
m.Ha=function(a){return a?this.save():!0};m.reset=function(){we(this)};m.save=function(){var a=new H(this),b=0,c=[];c[b++]=this.Ma;c[b++]=this.S;c[b++]=this.ca;c[b++]=this.Da;c[b++]=this.L;c[b++]=this.R;c[b]=this.O;I(a,0,c);return a.data()};m.restore=function(a){return we(this,a[0])};function we(a,b){var c=0;void 0===b&&(b=se);a.Ma=b[c++];a.S=b[c++];a.ca=b[c++];a.Da=b[c++];a.L=b[c++];a.R=b[c++];a.O=b[c];return!0} m.Ha=function(a){return a?this.save():!0};m.reset=function(){we(this)};m.save=function(){var a=new H(this),b=0,c=[];c[b++]=this.Ma;c[b++]=this.S;c[b++]=this.ca;c[b++]=this.Da;c[b++]=this.L;c[b++]=this.R;c[b]=this.O;I(a,0,c);return a.data()};m.restore=function(a){return we(this,a[0])};function we(a,b){var c=0;void 0===b&&(b=se);a.Ma=b[c++];a.S=b[c++];a.ca=b[c++];a.Da=b[c++];a.L=b[c++];a.R=b[c++];a.O=b[c];return!0}
function xe(a,b){var c=a.O&b;b&15||(c>>=4);var c=re[c],d=((a.L&12)>>2)+6;a.L&16&&d++;d+=((a.L&192)>>6)+1>>1;return 1E3/Math.round(c/d)}function te(a,b){jb(a,"receiveByte("+da(b)+"), status="+da(a.Da));return a.aa||a.Da&2?!1:(a.S=b,a.Da|=2,Gd(a.b,a.pa),!0)}m.ec=function(a){null!=a&&(this.H="number"!=typeof a?a:this.H+String.fromCharCode(a));this.H&&(te(this,this.H.charCodeAt(0))&&(this.H=this.H.substr(1)),this.H&&this.b&&Lc(this.b,this.qa,xe(this,15)));return!0}; function xe(a,b){var c=a.O&b;b&15||(c>>=4);var c=re[c],d=((a.L&12)>>2)+6;a.L&16&&d++;d+=((a.L&192)>>6)+1>>1;return 1E3/Math.round(c/d)}function te(a,b){jb(a,"receiveByte("+da(b)+"), status="+da(a.Da));return a.aa||a.Da&2?!1:(a.S=b,a.Da|=2,Gd(a.b,a.pa),!0)}m.ec=function(a){null!=a&&(this.H="number"!=typeof a?a:this.H+String.fromCharCode(a));this.H&&(te(this,this.H.charCodeAt(0))&&(this.H=this.H.substr(1)),this.H&&this.b&&Lc(this.b,this.qa,xe(this,15)));return!0};
m.yd=function(a,b){var c=this.S;D(this,a,null,b,"DATA",c);this.Da&=-3;return c};m.xd=function(a,b){var c=this.Da;D(this,a,null,b,"STATUS",c);return c}; m.yd=function(a,b){var c=this.S;D(this,a,null,b,"DATA",c);this.Da&=-3;return c};m.xd=function(a,b){var c=this.Da;D(this,a,null,b,"STATUS",c);return c};
m.Jd=function(a,b,c){D(this,a,b,c,"DATA");this.ca=b;this.Da&=-6;jb(this,"transmitByte("+da(b)+")");if(19==b)this.aa=!0;else if(17==b)this.aa=!1;else if(this.M&&this.M.call(this.K,b),this.u)8==b?(this.u.value=this.u.value.slice(0,-1),0<this.F&&this.F--):(a=(a=na[b])?"<"+a+">":String.fromCharCode(b),c=a.length,9==b?(b=this.ha||8,c=b-this.F%b,this.ha&&(a=la("",c))):13==b&&(this.F=c=0,a="\n"),this.da&&!this.F&&c&&(a=String.fromCharCode(this.da)+a),this.u.value+=a,this.u.scrollTop=this.u.scrollHeight, m.Jd=function(a,b,c){D(this,a,b,c,"DATA");this.ca=b;this.Da&=-6;jb(this,"transmitByte("+da(b)+")");if(19==b)this.aa=!0;else if(17==b)this.aa=!1;else if(this.M&&this.M.call(this.K,b),this.u)8==b?(this.u.value=this.u.value.slice(0,-1),0<this.F&&this.F--):(a=(a=na[b])?"<"+a+">":String.fromCharCode(b),c=a.length,9==b?(b=this.ha||8,c=b-this.F%b,this.ha&&(a=la("",c))):13==b&&(this.F=c=0,a="\n"),this.da&&!this.F&&c&&(a=String.fromCharCode(this.da)+a),this.u.value+=a,this.u.scrollTop=this.u.scrollHeight,
this.F+=c);else if(null!=this.A){if(10==b||1024<=this.A.length)this.g(this.A),this.A="";10!=b&&(this.A+=String.fromCharCode(b))}this.b&&Lc(this.b,this.ua,xe(this,240))};m.Id=function(a,b,c){D(this,a,b,c,"CONTROL");this.Ma?(this.R=b,this.R&64&&(this.Ma=!1)):(this.L=b,this.Ma=!0)};m.Hd=function(a,b,c){D(this,a,b,c,"BAUDRATES");this.O=b};var ue={0:pe.prototype.yd,1:pe.prototype.xd},ve={0:pe.prototype.Jd,1:pe.prototype.Id,2:pe.prototype.Hd}; this.F+=c);else if(null!=this.A){if(10==b||1024<=this.A.length)this.g(this.A),this.A="";10!=b&&(this.A+=String.fromCharCode(b))}this.b&&Lc(this.b,this.ua,xe(this,240))};m.Id=function(a,b,c){D(this,a,b,c,"CONTROL");this.Ma?(this.R=b,this.R&64&&(this.Ma=!1)):(this.L=b,this.Ma=!0)};m.Hd=function(a,b,c){D(this,a,b,c,"BAUDRATES");this.O=b};var ue={0:pe.prototype.yd,1:pe.prototype.xd},ve={0:pe.prototype.Jd,1:pe.prototype.Id,2:pe.prototype.Hd};
Ma(function(){for(var a=B(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new pe(d);hb(d,c)}}); Ma(function(){for(var a=B(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new pe(d);hb(d,c)}});
function ye(a){w.call(this,"Debugger",a,ye);this.style=ze;this.aa=this.ya=this.L=0;this.O=W();this.ab=W();this.F=-1;this.A=[];this.da=!1;this.ca=W();this.H=[];this.fa={};this.u=this.R=this.J=[];Ae(this);this.pa=0;Be(this);this.Ba=[];Ce(this,a.messages);this.Ca=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Cc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Cc(b,a)})}bb(ye); function ye(a){w.call(this,"Debugger",a,ye);this.style=ze;this.aa=this.ya=this.L=0;this.O=W();this.bb=W();this.F=-1;this.A=[];this.da=!1;this.ca=W();this.H=[];this.fa={};this.u=this.R=this.J=[];Ae(this);this.pa=0;Be(this);this.Ba=[];Ce(this,a.messages);this.Ca=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Cc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Cc(b,a)})}bb(ye);
var De={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"}, var De={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},
ze=8080,Ee="NONE ACI ADC ADD ADI ANA ANI CALL CC CM CNC CNZ CP CPE CPO CZ CMA CMC CMP CPI DAA DAD DCR DCX DI EI HLT IN INR INX JMP JC JM JNC JNZ JP JPE JPO JZ LDA LDAX LHLD LXI MOV MVI NOP ORA ORI OUT PCHL POP PUSH RAL RAR RET RC RM RNC RNZ RP RPE RPO RZ RLC RRC RST SBB SBI SHLD SPHL STA STAX STC SUB SUI XCHG XRA XRI XTHL".split(" "),Fe="NONE ADC ADC ADD ADD AND AND CALL CALLC CALLS CALLNC CALLNZ CALLNS CALLP CALLNP CALLZ NOT CMC CMP CMP DAA ADD DEC DEC CLI STI HLT IN INC INC JMP JC JS JNC JNZ JNS JP JNP JZ MOV MOV MOV MOV MOV MOV NOP OR OR OUT JMP POP PUSH RCL RCR RET RETC RETS RETNC RETNZ RETNS RETP RETNP RETZ ROL ROR RST SBB SBB MOV MOV MOV MOV STC SUB SUB XCHG XOR XOR XCHG".split(" "), ze=8080,Ee="NONE ACI ADC ADD ADI ANA ANI CALL CC CM CNC CNZ CP CPE CPO CZ CMA CMC CMP CPI DAA DAD DCR DCX DI EI HLT IN INR INX JMP JC JM JNC JNZ JP JPE JPO JZ LDA LDAX LHLD LXI MOV MVI NOP ORA ORI OUT PCHL POP PUSH RAL RAR RET RC RM RNC RNZ RP RPE RPO RZ RLC RRC RST SBB SBI SHLD SPHL STA STAX STC SUB SUI XCHG XRA XRI XTHL".split(" "),Fe="NONE ADC ADC ADD ADD AND AND CALL CALLC CALLS CALLNC CALLNZ CALLNS CALLP CALLNP CALLZ NOT CMC CMP CMP DAA ADD DEC DEC CLI STI HLT IN INC INC JMP JC JS JNC JNZ JNS JP JNP JZ MOV MOV MOV MOV MOV MOV NOP OR OR OUT JMP POP PUSH RCL RCR RET RETC RETS RETNC RETNZ RETNS RETP RETNP RETZ ROL ROR RST SBB SBB MOV MOV MOV MOV STC SUB SUB XCHG XOR XOR XCHG".split(" "),
Ge="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),He=[[45],[42,2067,32],[71,2131,18193],[29,2067],[28,17],[22,17],[44,17,32],[63],[45,32768],[21,18963,2067],[40,18193,2131],[23,2067],[28,273],[22,273],[44,273,32],[64],[45,32768],[42,2323,32],[71,2387,18193],[29,2323],[28,529],[22,529],[44,529,32],[52],[45,32768],[21,18963,2323],[40,18193,2387],[23,2323],[28,785],[22,785],[44,785,32],[53],[45,32768],[42,2579,32],[68,115,18963],[29,2579],[28,1041],[22,1041],[44,1041,32],[20],[45,32768],[21,18963, Ge="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),He=[[45],[42,2067,32],[71,2131,18193],[29,2067],[28,17],[22,17],[44,17,32],[63],[45,32768],[21,18963,2067],[40,18193,2131],[23,2067],[28,273],[22,273],[44,273,32],[64],[45,32768],[42,2323,32],[71,2387,18193],[29,2323],[28,529],[22,529],[44,529,32],[52],[45,32768],[21,18963,2323],[40,18193,2387],[23,2323],[28,785],[22,785],[44,785,32],[53],[45,32768],[42,2579,32],[68,115,18963],[29,2579],[28,1041],[22,1041],[44,1041,32],[20],[45,32768],[21,18963,
@ -158,41 +158,41 @@ Ge="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),He=[[45],[42,2067,32],[71,
m.Qa=function(a,b,c,d){this.w=b;this.b=c;this.B=a;(a=nc(a,"messages"))&&Ce(this,a);this.Na=He;Od(this,64,function(a){a:{var b=d.w.Y,c=a[0],g=a=0,k=b.length;if(c){a=Ie(Je(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.w.oa;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[g];p.type==c?l++||d.g("..."):(c=p.type,l=Bb[c],p&&d.g(n(p.id)+" %"+n(g<<d.w.oa)+" %%"+n(p.G)+" "+t(p.Ib)+" "+ m.Qa=function(a,b,c,d){this.w=b;this.b=c;this.B=a;(a=nc(a,"messages"))&&Ce(this,a);this.Na=He;Od(this,64,function(a){a:{var b=d.w.Y,c=a[0],g=a=0,k=b.length;if(c){a=Ie(Je(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.w.oa;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[g];p.type==c?l++||d.g("..."):(c=p.type,l=Bb[c],p&&d.g(n(p.id)+" %"+n(g<<d.w.oa)+" %%"+n(p.G)+" "+t(p.Ib)+" "+
t(p.size)+" "+l),c!=$b&&(c=-1),l=0);a+=d.w.Ga;g++}}});E(this)}; t(p.size)+" "+l),c!=$b&&(c=-1),l=0);a+=d.w.Ga;g++}}});E(this)};
m.la=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ha=this.N[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Cc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.F<d.A.length-1&&(b=d.A[++d.F]):40==a.keyCode&&(0<d.F?b=d.A[--d.F]:(b="",d.F=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.N[b]=c,Ca(c,function(){if(d.ha){var a=d.ha.value;d.ha.value= m.la=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ha=this.N[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Cc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.F<d.A.length-1&&(b=d.A[++d.F]):40==a.keyCode&&(0<d.F?b=d.A[--d.F]:(b="",d.F=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.N[b]=c,Ca(c,function(){if(d.ha){var a=d.ha.value;d.ha.value=
"";Cc(d,a,!0);return!0}return!1}),!0;case "step":return this.N[b]=c,Ca(c,function(a){var b=!1;mb(d,!0)||(lb(d,!0),b=d.ub(a?1:0),lb(d,!1));return b}),!0}return!1};m.hb=function(){this.ha&&this.ha.focus()};function Ie(a){a=a&&a.G;null==a&&(a=-1);return a}m.$=function(a,b){var c=255,d=Ie(a);-1!==d&&(c=Cb(this.w,d),b&&Ke(a,b));return c};m.Sa=function(a,b){var c=65535,d=Ie(a);-1!==d&&(c=Db(this.w,d),b&&Ke(a,b));return c};m.ta=function(a,b,c){var d=Ie(a);-1!==d&&(Eb(this.w,d,b),c&&Ke(a,c),Dc(this.b,!0))}; "";Cc(d,a,!0);return!0}return!1}),!0;case "step":return this.N[b]=c,Ca(c,function(a){var b=!1;mb(d,!0)||(lb(d,!0),b=d.ub(a?1:0),lb(d,!1));return b}),!0}return!1};m.hb=function(){this.ha&&this.ha.focus()};function Ie(a){a=a&&a.G;null==a&&(a=-1);return a}m.$=function(a,b){var c=255,d=Ie(a);-1!==d&&(c=Cb(this.w,d),b&&Ke(a,b));return c};m.Ta=function(a,b){var c=65535,d=Ie(a);-1!==d&&(c=Db(this.w,d),b&&Ke(a,b));return c};m.ta=function(a,b,c){var d=Ie(a);-1!==d&&(Eb(this.w,d,b),c&&Ke(a,c),Dc(this.b,!0))};
m.Ub=function(a,b,c){var d=Ie(a);if(-1!==d){var e=this.w,f=d&e.w,h=(d&e.A)>>>e.oa;f!=e.w?e.Y[h].gc(f,b&65535,d):(e.Y[h++].Jb(f,b&255,d),e.Y[h&e.K].Jb(0,b>>8&255,d+1));c&&Ke(a,c);Dc(this.b,!0)}};function W(a){return{G:a,Pa:!1}}function Le(a){return[a.G,a.Pa]}function Me(a){return{G:a[0],Pa:a[1]}} m.Ub=function(a,b,c){var d=Ie(a);if(-1!==d){var e=this.w,f=d&e.w,h=(d&e.A)>>>e.oa;f!=e.w?e.Y[h].gc(f,b&65535,d):(e.Y[h++].Jb(f,b&255,d),e.Y[h&e.K].Jb(0,b>>8&255,d+1));c&&Ke(a,c);Dc(this.b,!0)}};function W(a){return{G:a,Pa:!1}}function Le(a){return[a.G,a.Pa]}function Me(a){return{G:a[0],Pa:a[1]}}
function Je(a,b,c){var d;c=(c?a.O:a.ab).G;if(void 0!==b){d=b=Ne(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.H.length;c++){var f=a.H[c].Ra[d];if(void 0!==f){d=f.o;void 0!==d&&(e=W(d));break}}if(d=e)return d;c=Oe(a,b,void 0)}null!=c&&(d=W(c));return d}function Pe(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.ud=Qe(a,b.Mc=c[2]))}function Ke(a,b){null!=a.G&&(a.G+=b||1)}function Z(a){return n(a,4)} function Je(a,b,c){var d;c=(c?a.O:a.bb).G;if(void 0!==b){d=b=Ne(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.H.length;c++){var f=a.H[c].Ra[d];if(void 0!==f){d=f.o;void 0!==d&&(e=W(d));break}}if(d=e)return d;c=Oe(a,b,void 0)}null!=c&&(d=W(c));return d}function Pe(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.ud=Qe(a,b.Mc=c[2]))}function Ke(a,b){null!=a.G&&(a.G+=b||1)}function Z(a){return n(a,4)}
function Re(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.$(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Ce(a,b){a.I=a;a.ra=a.vd=536870912;a.qa=null;a.ua=[];var c=Qe(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in tb)0<=ra(c,d)&&(a.ra|=tb[d],a.g(d+" messages enabled"))}function Od(a,b,c){for(var d in tb)if(b==tb[d]){a.Ba[d]=c;break}} function Re(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.$(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Ce(a,b){a.I=a;a.ra=a.vd=536870912;a.qa=null;a.ua=[];var c=Qe(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in tb)0<=ra(c,d)&&(a.ra|=tb[d],a.g(d+" messages enabled"))}function Od(a,b,c){for(var d in tb)if(b==tb[d]){a.Ba[d]=c;break}}
function Se(a,b){var c;a=a.toUpperCase();null==b?c=ra(Ge,a):(c=ra(Ge,a.substr(b,2)),0>c&&(c=ra(Ge,a.substr(b,1))));return c}function Te(a,b){var c=0,d=Ue(a,b);if(void 0!==d)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 6:c=2;break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:c=4}return c?n(d,c):"??"} function Se(a,b){var c;a=a.toUpperCase();null==b?c=ra(Ge,a):(c=ra(Ge,a.substr(b,2)),0>c&&(c=ra(Ge,a.substr(b,1))));return c}function Te(a,b){var c=0,d=Ue(a,b);if(void 0!==d)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 6:c=2;break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:c=4}return c?n(d,c):"??"}
function Ue(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.j;break;case 0:c=d.T;break;case 1:c=d.U;break;case 8:c=Uc(d);break;case 2:c=d.V;break;case 3:c=d.W;break;case 9:c=Wc(d);break;case 4:c=d.X;break;case 5:c=d.Z;break;case 10:c=J(d);break;case 6:c=d.$(J(d));break;case 11:c=d.ka;break;case 12:c=d.P;break;case 13:c=Tc(d);break;case 14:c=Tc(d)&255|d.j<<8}}return c} function Ue(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.j;break;case 0:c=d.T;break;case 1:c=d.U;break;case 8:c=Uc(d);break;case 2:c=d.V;break;case 3:c=d.W;break;case 9:c=Wc(d);break;case 4:c=d.X;break;case 5:c=d.Z;break;case 10:c=J(d);break;case 6:c=d.$(J(d));break;case 11:c=d.ka;break;case 12:c=d.P;break;case 13:c=Tc(d);break;case 14:c=Tc(d)&255|d.j<<8}}return c}
function Ve(a,b){b=Ne(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=Se(b,c+1),0<=e&&(b=b.substr(0,c)+Te(a,e)+b.substr(c+1+Ge[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=ca(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=Je(a,e))?(d=e+' "'+Re(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=Je(a,e))?(Ke(d),d=e+' "'+ function Ve(a,b){b=Ne(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=Se(b,c+1),0<=e&&(b=b.substr(0,c)+Te(a,e)+b.substr(c+1+Ge[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=ca(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=Je(a,e))?(d=e+' "'+Re(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=Je(a,e))?(Ke(d),d=e+' "'+
Re(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+Z(W(this.b.P).G));if(this.ra&1073741824)this.ua.push(a);else if(!this.qa||a!=this.qa)if(this.qa=a,this.ra&-2147483648&&(this.ma(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.sb=0;c.u-=c.b;c.b=0;Dc(c)}}; Re(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+Z(W(this.b.P).G));if(this.ra&1073741824)this.ua.push(a);else if(!this.qa||a!=this.qa)if(this.qa=a,this.ra&-2147483648&&(this.ma(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.sb=0;c.u-=c.b;c.b=0;Dc(c)}};
function ib(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.ra&g)!=g||a.message(b.Za+"."+(null!=d?"outPort":"inPort")+"("+t(c)+","+(f?f:"unknown")+(null!=d?","+da(d):"")+")"+(null!=h?": "+da(h):"")+(null!=e?" at "+Z(e):""))} function ib(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.ra&g)!=g||a.message(b.$a+"."+(null!=d?"outPort":"inPort")+"("+t(c)+","+(f?f:"unknown")+(null!=d?","+da(d):"")+")"+(null!=h?": "+da(h):"")+(null!=e?" at "+Z(e):""))}
function Be(a){var b;if(Hd(a)){if(!a.M||!a.M.length){a.M=Array(1E3);for(b=0;b<a.M.length;b++)a.M[b]=W();a.ga=0;a.g("instruction history buffer allocated")}if(!a.K||!a.K.length)for(a.K=Array(256),b=0;b<a.K.length;b++)a.K[b]=[b,0]}else a.M&&a.M.length&&a.g("instruction history buffer freed"),a.ga=0,a.M=[],a.K=[]}m.gb=function(a){if(!We(this))return!1;this.b.gb(a);return!0}; function Be(a){var b;if(Hd(a)){if(!a.M||!a.M.length){a.M=Array(1E3);for(b=0;b<a.M.length;b++)a.M[b]=W();a.ga=0;a.g("instruction history buffer allocated")}if(!a.K||!a.K.length)for(a.K=Array(256),b=0;b<a.K.length;b++)a.K[b]=[b,0]}else a.M&&a.M.length&&a.g("instruction history buffer freed"),a.ga=0,a.M=[],a.K=[]}m.gb=function(a){if(!We(this))return!1;this.b.gb(a);return!0};
m.ub=function(a,b,c){if(!We(this))return!1;this.L=0;a||Hd(this)&&Id(this,this.b.P,0);try{var d=this.b.ub(a);0<d&&(this.L+=d,Ic(this.b,d,!0),Fc(this.b,d),this.aa++)}catch(e){"number"!=typeof e&&(this.L=0,qb(this.b,e.stack||e.message))}!1!==c&&Dc(this.b);this.Ia(b||!1);return 0<this.L};m.ma=function(a){this.b&&this.b.ma(a)};m.Ia=function(a){void 0===a&&(a=!0);this.O=W(this.b.P);a&&1!=this.S?Xe(this):wf(this)}; m.ub=function(a,b,c){if(!We(this))return!1;this.L=0;a||Hd(this)&&Id(this,this.b.P,0);try{var d=this.b.ub(a);0<d&&(this.L+=d,Ic(this.b,d,!0),Fc(this.b,d),this.aa++)}catch(e){"number"!=typeof e&&(this.L=0,qb(this.b,e.stack||e.message))}!1!==c&&Dc(this.b);this.Ia(b||!1);return 0<this.L};m.ma=function(a){this.b&&this.b.ma(a)};m.Ia=function(a){void 0===a&&(a=!0);this.O=W(this.b.P);a&&1!=this.S?Xe(this):wf(this)};
function We(a){var b;if(b=a.b&&nb(a.b))b=a.b,b.D.va?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!mb(a.b)?(a=a.b,a.D.nb?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.Ea=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.Ha=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Be(this);this.aa=this.ya=0;this.qa=null;this.L=0;this.O=W(this.b.P);this.D.xa=!1;xf(this);a||this.Ia()}; function We(a){var b;if(b=a.b&&nb(a.b))b=a.b,b.D.va?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!mb(a.b)?(a=a.b,a.D.nb?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.Ea=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.Ha=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Be(this);this.aa=this.ya=0;this.qa=null;this.L=0;this.O=W(this.b.P);this.D.xa=!1;xf(this);a||this.Ia()};
m.save=function(){var a=new H(this);I(a,0,Le(this.O));I(a,1,Le(this.ca));I(a,2,[this.A,this.da,this.ra]);I(a,3,this.H);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.O=Me(a[b++]),this.ca=Me(a[b++]),this.A=a[b][0],"string"==typeof this.A&&(this.A=[this.A]),this.da=a[b][1],this.ra|=a[b][2]);a[3]&&(this.H=a[3]);return!0};m.start=function(a,b){this.S||this.g("running");this.D.xa=!0;this.yb=a;this.zb=b}; m.save=function(){var a=new H(this);I(a,0,Le(this.O));I(a,1,Le(this.ca));I(a,2,[this.A,this.da,this.ra]);I(a,3,this.H);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.O=Me(a[b++]),this.ca=Me(a[b++]),this.A=a[b][0],"string"==typeof this.A&&(this.A=[this.A]),this.da=a[b][1],this.ra|=a[b][2]);a[3]&&(this.H=a[3]);return!0};m.start=function(a,b){this.S||this.g("running");this.D.xa=!0;this.yb=a;this.zb=b};
m.stop=function(a,b){if(this.D.xa){this.D.xa=!1;this.L=b-this.zb;if(!this.S){var c="stopped";if(this.L){var d=a-this.yb,e=0<d?Math.round(1E3*this.L/d):0,c=c+" (";Hd(this)&&(c+=this.aa+" opcodes, ",this.ya-=this.aa,this.aa=0);c+=this.L+" cycles, "+d+" ms, "+e+" hz)"}else kb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.Ia(!0);this.hb();xf(this,this.b.P)}};function Hd(a){return 1<a.u.length||!!a.pa} m.stop=function(a,b){if(this.D.xa){this.D.xa=!1;this.L=b-this.zb;if(!this.S){var c="stopped";if(this.L){var d=a-this.yb,e=0<d?Math.round(1E3*this.L/d):0,c=c+" (";Hd(this)&&(c+=this.aa+" opcodes, ",this.ya-=this.aa,this.aa=0);c+=this.L+" cycles, "+d+" ms, "+e+" hz)"}else kb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.Ia(!0);this.hb();xf(this,this.b.P)}};function Hd(a){return 1<a.u.length||!!a.pa}
function Id(a,b,c){var d=a.b;if(0<c&&(a.pa&&!--a.pa||ic(a,b,1,a.u)))return!0;0<=c&&a.K.length&&(a.aa++,b=Cb(a.w,b),null!=b&&(a.K[b][1]++,b=a.M[a.ga],b.G=d.P,b.Pa=!1,++a.ga==a.M.length&&(a.ga=0)));return!1}function Jb(a,b,c){a.g("break on input from port "+t(b)+": "+n(c));a.ma(!0)}function Vb(a,b,c){a.g("break on output to port "+t(b)+": "+n(c));a.ma(!0)} function Id(a,b,c){var d=a.b;if(0<c&&(a.pa&&!--a.pa||ic(a,b,1,a.u)))return!0;0<=c&&a.K.length&&(a.aa++,b=Cb(a.w,b),null!=b&&(a.K[b][1]++,b=a.M[a.ga],b.G=d.P,b.Pa=!1,++a.ga==a.M.length&&(a.ga=0)));return!1}function Jb(a,b,c){a.g("break on input from port "+t(b)+": "+n(c));a.ma(!0)}function Vb(a,b,c){a.g("break on output to port "+t(b)+": "+n(c));a.ma(!0)}
function Ae(a){var b,c;a.u=["bp"];if(void 0!==a.R)for(b=1;b<a.R.length;b++){c=a.R[b];var d=a.w;jc(d.Y[Ie(c)>>>d.oa],!1)}a.R=["br"];if(void 0!==a.J)for(b=1;b<a.J.length;b++)c=a.J[b],d=a.w,jc(d.Y[Ie(c)>>>d.oa],!0);a.J=["bw"];a.ib=0}m.$a=function(a,b,c){var d=!0;c||yf(this,a,b,!1,!0);if(a!=this.u){var e=Ie(b);if(-1===e)this.g("invalid address: "+Z(b.G)),d=!1;else{var f=this.w;f.Y[e>>>f.oa].$a(e&f.w,a==this.J)}}d&&(a.push(b),c?b.Pa=!0:(zf(this,a,a.length-1,"set"),Be(this)));return d}; function Ae(a){var b,c;a.u=["bp"];if(void 0!==a.R)for(b=1;b<a.R.length;b++){c=a.R[b];var d=a.w;jc(d.Y[Ie(c)>>>d.oa],!1)}a.R=["br"];if(void 0!==a.J)for(b=1;b<a.J.length;b++)c=a.J[b],d=a.w,jc(d.Y[Ie(c)>>>d.oa],!0);a.J=["bw"];a.ib=0}m.ab=function(a,b,c){var d=!0;c||yf(this,a,b,!1,!0);if(a!=this.u){var e=Ie(b);if(-1===e)this.g("invalid address: "+Z(b.G)),d=!1;else{var f=this.w;f.Y[e>>>f.oa].ab(e&f.w,a==this.J)}}d&&(a.push(b),c?b.Pa=!0:(zf(this,a,a.length-1,"set"),Be(this)));return d};
function yf(a,b,c,d,e){var f=!1;c=Ie(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==Ie(g)&&(!d||g.Pa)){f=!0;g.Pa||e||zf(a,b,h,"cleared");b.splice(h,1);b!=a.u&&(d=a.w,jc(d.Y[c>>>d.oa],b==a.J));g.Pa||Be(a);break}}return f}function Af(a,b){for(var c=1;c<b.length;c++)zf(a,b,c);return b.length-1}function zf(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.G)+(d?" "+d:c.Mc?' "'+c.Mc+'"':""))} function yf(a,b,c,d,e){var f=!1;c=Ie(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==Ie(g)&&(!d||g.Pa)){f=!0;g.Pa||e||zf(a,b,h,"cleared");b.splice(h,1);b!=a.u&&(d=a.w,jc(d.Y[c>>>d.oa],b==a.J));g.Pa||Be(a);break}}return f}function Af(a,b){for(var c=1;c<b.length;c++)zf(a,b,c);return b.length-1}function zf(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.G)+(d?" "+d:c.Mc?' "'+c.Mc+'"':""))}
function xf(a,b){if(void 0!==b)ic(a,b,1,a.u,!0),a.S=0;else for(var c=1;c<a.u.length;c++){var d=a.u[c];if(d.Pa){if(!yf(a,a.u,d,!0))break;c=0}}} function xf(a,b){if(void 0!==b)ic(a,b,1,a.u,!0),a.S=0;else for(var c=1;c<a.u.length;c++){var d=a.u[c];if(d.Pa){if(!yf(a,a.u,d,!0))break;c=0}}}
function ic(a,b,c,d,e){var f=!1;if(!a.ib++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.Pa)for(var k=Ie(g),l=0;l<c;l++)if(b+l==k){var p,f=!0;g.Pa&&(yf(a,d,g,!0),e=!0);if(p=g.ud){for(var f=!1,q=0;q<p.length;q++)if(!Bf(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var x=q+1;x<p.length&&p[x].indexOf("else");x++)q++;if(x==p.length){f=!0;break}}a.b.D.xa||(f=!0)}if(f){e||zf(a,d,h,"hit");break}}}a.ib--;return f} function ic(a,b,c,d,e){var f=!1;if(!a.ib++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.Pa)for(var k=Ie(g),l=0;l<c;l++)if(b+l==k){var p,f=!0;g.Pa&&(yf(a,d,g,!0),e=!0);if(p=g.ud){for(var f=!1,q=0;q<p.length;q++)if(!Bf(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var x=q+1;x<p.length&&p[x].indexOf("else");x++)q++;if(x==p.length){f=!0;break}}a.b.D.xa||(f=!0)}if(f){e||zf(a,d,h,"hit");break}}}a.ib--;return f}
function Cf(a,b,c,d){for(var e=W(b.G),f=a.$(b,1),h=a.Na[f],g="",k=(8086!=a.style?Ee:Fe)[h[0]],l=h.length-1,p=0,q,x=1;x<=l;x++){var v="";q=h[x];if(void 0!==q&&!(q&16384&&a.style==ze)){var r=q&240;if(r){var C=q&15;C?p=C:q|=p;q&61440||(q|=1==x?8192:4096);if(r&32)a:{var v=a,r=q,C=b,y=" ";switch(r&15){case 1:y=n(v.$(C,1),2);break;case 2:y=n(v.$(C,1)<<24>>24,4);break;case 3:y=n(v.Sa(C,2),4);break;default:v="imm("+t(r)+")";break a}8086==v.style&&r&64?y="["+y+"]":r&16||(y=(v.style==ze?"$":"0x")+y);v=y}else r& function Cf(a,b,c,d){for(var e=W(b.G),f=a.$(b,1),h=a.Na[f],g="",k=(8086!=a.style?Ee:Fe)[h[0]],l=h.length-1,p=0,q,x=1;x<=l;x++){var v="";q=h[x];if(void 0!==q&&!(q&16384&&a.style==ze)){var r=q&240;if(r){var C=q&15;C?p=C:q|=p;q&61440||(q|=1==x?8192:4096);if(r&32)a:{var v=a,r=q,C=b,y=" ";switch(r&15){case 1:y=n(v.$(C,1),2);break;case 2:y=n(v.$(C,1)<<24>>24,4);break;case 3:y=n(v.Ta(C,2),4);break;default:v="imm("+t(r)+")";break a}8086==v.style&&r&64?y="["+y+"]":r&16||(y=(v.style==ze?"$":"0x")+y);v=y}else r&
16?(v=(q&3840)>>8,r=Ge[v],8086==a.style&&q&64&&(6==v&&(r="HL"),r="["+r+"]"),v=r):r&128&&(v=(f>>3&7).toString());if(!v||!v.length){g="INVALID";break}0<g.length&&(g+=",");g+=v||"???"}}}f="";h=Z(e.G)+" ";if(-1!==e.G&&-1!==b.G){do if(f+=n(a.$(e,1),2),null==e.G)break;while(e.G!=b.G)}h+=la(f,10);h=h+(q&32768?"*":" ")+la(k,7);g&&(h+=" "+g);c&&(h=la(h,40)+";"+c,h=a.b.D.mb?h+("cycles="+Gc(a.b).toString()+" cs="+n(a.b.i.Bb)):h+(null!=d?"="+d.toString():""));return h} 16?(v=(q&3840)>>8,r=Ge[v],8086==a.style&&q&64&&(6==v&&(r="HL"),r="["+r+"]"),v=r):r&128&&(v=(f>>3&7).toString());if(!v||!v.length){g="INVALID";break}0<g.length&&(g+=",");g+=v||"???"}}}f="";h=Z(e.G)+" ";if(-1!==e.G&&-1!==b.G){do if(f+=n(a.$(e,1),2),null==e.G)break;while(e.G!=b.G)}h+=la(f,10);h=h+(q&32768?"*":" ")+la(k,7);g&&(h+=" "+g);c&&(h=la(h,40)+";"+c,h=a.b.D.mb?h+("cycles="+Gc(a.b).toString()+" cs="+n(a.b.i.Bb)):h+(null!=d?"="+d.toString():""));return h}
function Df(a,b){var c;switch(b){case "IF":c=a.b.sa&512;break;case "SF":c=dd(a.b);break;case "ZF":c=cd(a.b);break;case "AF":c=bd(a.b);break;case "PF":c=ad(a.b);break;case "CF":c=Zc(a.b);break;default:c=0}return b.charAt(0)+(c?"1":"0")+" "}function Ef(a,b){return Ge[b]+"="+Te(a,b)+" "}function Ff(a){return Ef(a,7)+Ef(a,8)+Ef(a,9)+Ef(a,10)+Ef(a,11)+Df(a,"IF")+Df(a,"SF")+Df(a,"ZF")+Df(a,"AF")+Df(a,"PF")+Df(a,"CF")} function Df(a,b){var c;switch(b){case "IF":c=a.b.sa&512;break;case "SF":c=dd(a.b);break;case "ZF":c=cd(a.b);break;case "AF":c=bd(a.b);break;case "PF":c=ad(a.b);break;case "CF":c=Zc(a.b);break;default:c=0}return b.charAt(0)+(c?"1":"0")+" "}function Ef(a,b){return Ge[b]+"="+Te(a,b)+" "}function Ff(a){return Ef(a,7)+Ef(a,8)+Ef(a,9)+Ef(a,10)+Ef(a,11)+Df(a,"IF")+Df(a,"SF")+Df(a,"ZF")+Df(a,"AF")+Df(a,"PF")+Df(a,"CF")}
var Gf={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9}; var Gf={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function Hf(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break; function Hf(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
case "^":d=f^e;break;case "|":d=f|e;break;case "&&":d=f&&e?1:0;break;case "||":d=f||e?1:0;break;default:return!1}a.push(d|0)}return!0} case "^":d=f^e;break;case "|":d=f|e;break;case "&&":d=f&&e?1:0;break;case "||":d=f||e?1:0;break;default:return!1}a.push(d|0)}return!0}
function Oe(a,b,c){var d;if(b){b=Ne(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var p=l[e++],q=p.length,p=ma(p);if(!p){f=!0;break}p=If(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}g.push(p);if(e==l.length)break;var p=l[e++],x=p.length;k.length&&Gf[p]<Gf[k[k.length-1]]&&Hf(g,k,1);k.push(p);b=b.substr(q+x)}Hf(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&Jf(a,null, function Oe(a,b,c){var d;if(b){b=Ne(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var p=l[e++],q=p.length,p=ma(p);if(!p){f=!0;break}p=If(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}g.push(p);if(e==l.length)break;var p=l[e++],x=p.length;k.length&&Gf[p]<Gf[k[k.length-1]]&&Hf(g,k,1);k.push(p);b=b.substr(q+x)}Hf(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&Jf(a,null,
d))}return d}function Ne(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Oe(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?n(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=Je(a,c[1]),b=b.replace("["+c[1]+"]",d?n(a.Sa(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.aa-a.ya}if(null==e)break;c=c.replace(d[0],e.toString())}return c} d))}return d}function Ne(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Oe(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?n(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=Je(a,c[1]),b=b.replace("["+c[1]+"]",d?n(a.Ta(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.aa-a.ya}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
function If(a,b,c,d){var e;void 0!==b?(e=Se(b),0<=e?e=Ue(a,e):(e=a.fa[b],void 0===e&&(e=ca(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e} function If(a,b,c,d){var e;void 0!==b?(e=Se(b),0<=e?e=Ue(a,e):(e=a.fa[b],void 0===e&&(e=ca(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
function Jf(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=d&255,l=8,p="";void 0===l?l=32:32<l&&(l=32);if(null==k||isNaN(k))for(;0<l--;)p="?"+p;else for(;0<l--;)p=(k&1?"1":"0")+p,k>>=1;h=p+"b"+h;d>>=8}d="0x"+n(c)+" "+c+". ("+h+")"}a.g((null!=b?b+": ":"")+d);return e}function Kf(a,b){if(b)return Jf(a,b,a.fa[b]);var c=0;for(b in a.fa)Jf(a,b,a.fa[b]),c++;return 0<c}ye.prototype.Ua=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0}; function Jf(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=d&255,l=8,p="";void 0===l?l=32:32<l&&(l=32);if(null==k||isNaN(k))for(;0<l--;)p="?"+p;else for(;0<l--;)p=(k&1?"1":"0")+p,k>>=1;h=p+"b"+h;d>>=8}d="0x"+n(c)+" "+c+". ("+h+")"}a.g((null!=b?b+": ":"")+d);return e}function Kf(a,b){if(b)return Jf(a,b,a.fa[b]);var c=0;for(b in a.fa)Jf(a,b,a.fa[b]),c++;return 0<c}ye.prototype.Va=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function Lf(a,b,c){var d=[],e=Ie(b)>>>0;for(b=0;b<a.H.length;b++){var f=a.H[b],h=f.G>>>0,g=f.Fd;if(e>=h&&e<h+g){e=oa(f.rc,[e-h],a.Ua);0<=e?Mf(a,b,e,d):c&&(e=~e,Mf(a,b,e-1,d),Mf(a,b,e,d));break}}return d}function Mf(a,b,c,d){var e={},f=a.H[b].rc,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.H[b].Ra[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)} function Lf(a,b,c){var d=[],e=Ie(b)>>>0;for(b=0;b<a.H.length;b++){var f=a.H[b],h=f.G>>>0,g=f.Fd;if(e>=h&&e<h+g){e=oa(f.rc,[e-h],a.Va);0<=e?Mf(a,b,e,d):c&&(e=~e,Mf(a,b,e-1,d),Mf(a,b,e,d));break}}return d}function Mf(a,b,c,d){var e={},f=a.H[b].rc,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.H[b].Ra[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
function Nf(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c,d=0;if(a.K)if("clear"==b){for(c=0;c<a.K.length;c++)a.K[c]=[c,0];a.g("frequency data cleared");d++}else if(void 0!==b)a.g("unknown frequency command: "+b),d++;else{var e=a.K.slice();e.sort(function(a,b){return b[1]-a[1]});var f=8086!=a.style?Ee:Fe;for(c=0;c<e.length;c++){var h=e[c][0],g=e[c][1];g&&(a.g((f[a.Na[h][0]]+" ").substr(0,5)+" ("+da(h)+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}} function Nf(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c,d=0;if(a.K)if("clear"==b){for(c=0;c<a.K.length;c++)a.K[c]=[c,0];a.g("frequency data cleared");d++}else if(void 0!==b)a.g("unknown frequency command: "+b),d++;else{var e=a.K.slice();e.sort(function(a,b){return b[1]-a[1]});var f=8086!=a.style?Ee:Fe;for(c=0;c<e.length;c++){var h=e[c][0],g=e[c][1];g&&(a.g((f[a.Na[h][0]]+" ").substr(0,5)+" ("+da(h)+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}}
function Of(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Kf(a)||a.g("no variables"),!0;if(!c[2])return Kf(a,c[1]);if(!c[3])return delete a.fa[c[1]],!0;var d=Oe(a,c[3]);return void 0!==d?(a.fa[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1} function Of(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Kf(a)||a.g("no variables"),!0;if(!c[2])return Kf(a,c[1]);if(!c[3])return delete a.fa[c[1]],!0;var d=Oe(a,c[3]);return void 0!==d?(a.fa[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
function Pf(a,b,c){var d=null;if(b=Je(a,b,!0)){var e=Lf(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.G-e[1])&&(h=" + "+t(f)),f=e[0]+" ("+Z(e[1])+")"+h,c&&a.g(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.G)&&(h=" - "+t(f)),f=e[4]+" ("+Z(e[5])+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d} function Pf(a,b,c){var d=null;if(b=Je(a,b,!0)){var e=Lf(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.G-e[1])&&(h=" + "+t(f)),f=e[0]+" ("+Z(e[1])+")"+h,c&&a.g(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.G)&&(h=" - "+t(f)),f=e[4]+" ("+Z(e[5])+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
function Qf(a,b){switch(b[1]){case "8080":a.style=ze;break;case "8086":a.style=8086;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.b.i.pb=c;break;case "start":a.b.i.Cb=c;break;case "stop":a.b.i.rb=c;break;default:a.g("unknown cs option");return}void 0!==c&&Bc(a.b);a.g("checksums "+(a.b.D.mb?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Hc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.cb.toFixed(2)+"Mhz")+ function Qf(a,b){switch(b[1]){case "8080":a.style=ze;break;case "8086":a.style=8086;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.b.i.pb=c;break;case "start":a.b.i.Cb=c;break;case "stop":a.b.i.rb=c;break;default:a.g("unknown cs option");return}void 0!==c&&Bc(a.b);a.g("checksums "+(a.b.D.mb?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Hc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.eb.toFixed(2)+"Mhz")+
" ("+a.b.i.Ta+"x)");return;case "?":a.g("debugger options:");a.g("\t8080\t\tselect 8080-style mnemonics");a.g("\t8086\t\tselect 8086-style mnemonics");a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.g("unknown option: "+b[1]);return}}a.g(a.style+"-style mnemonics enabled")} " ("+a.b.i.Sa+"x)");return;case "?":a.g("debugger options:");a.g("\t8080\t\tselect 8080-style mnemonics");a.g("\t8086\t\tselect 8086-style mnemonics");a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.g("unknown option: "+b[1]);return}}a.g(a.style+"-style mnemonics enabled")}
function Xe(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.g("missing value for "+b[1]);return}var h=!1,g=Oe(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.j=g&255;break;case "B":d.T=g&255;break;case "BC":d.T=g>>8&255;case "C":d.U=g&255;break;case "D":d.V= function Xe(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.g("missing value for "+b[1]);return}var h=!1,g=Oe(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.j=g&255;break;case "B":d.T=g&255;break;case "BC":d.T=g>>8&255;case "C":d.U=g&255;break;case "D":d.V=
g&255;break;case "DE":d.V=g>>8&255;case "E":d.W=g&255;break;case "H":d.X=g&255;break;case "HL":d.X=g>>8&255;case "L":d.Z=g&255;break;case "SP":d.ka=g&65535;break;case "PC":G(d,g);a.O=W(d.P);break;case "PS":Rc(d,g);break;case "PSW":Rc(d,g&255|d.sa&-256);d.j=g>>8;break;case "CF":d.ba=g?d.ba|256:d.ba&255;break;case "PF":g?ad(d)||(d.ea^=1):ad(d)&&(d.ea^=1);break;case "AF":d.wa=g?~d.ea&16|d.wa&-17:d.ea&16|d.wa&-17;break;case "ZF":d.ba=g?d.ba&-256:d.ba|255;break;case "SF":g?dd(d)||(d.ea^=192):dd(d)&&(d.ea^= g&255;break;case "DE":d.V=g>>8&255;case "E":d.W=g&255;break;case "H":d.X=g&255;break;case "HL":d.X=g>>8&255;case "L":d.Z=g&255;break;case "SP":d.ka=g&65535;break;case "PC":G(d,g);a.O=W(d.P);break;case "PS":Rc(d,g);break;case "PSW":Rc(d,g&255|d.sa&-256);d.j=g>>8;break;case "CF":d.ba=g?d.ba|256:d.ba&255;break;case "PF":g?ad(d)||(d.ea^=1):ad(d)&&(d.ea^=1);break;case "AF":d.wa=g?~d.ea&16|d.wa&-17:d.ea&16|d.wa&-17;break;case "ZF":d.ba=g?d.ba&-256:d.ba|255;break;case "SF":g?dd(d)||(d.ea^=192):dd(d)&&(d.ea^=
192);break;case "IF":d.sa=g?d.sa|512:d.sa&-513;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}Dc(d);a.g("updated registers:")}a.g(Ff(a));c&&(a.O=W(d.P),wf(a,Z(a.O.G)))}}function Rf(a,b){b=ma(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(Ve(a,c[2])):Oe(a,b,!0)}function Sf(a,b,c){var d="t"!=b;c=If(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ba(c,function(){return lb(a,!0)&&a.ub(e,d,!1)},function(){Dc(a.b);lb(a,!1)})} 192);break;case "IF":d.sa=g?d.sa|512:d.sa&-513;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}Dc(d);a.g("updated registers:")}a.g(Ff(a));c&&(a.O=W(d.P),wf(a,Z(a.O.G)))}}function Rf(a,b){b=ma(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(Ve(a,c[2])):Oe(a,b,!0)}function Sf(a,b,c){var d="t"!=b;c=If(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ba(c,function(){return lb(a,!0)&&a.ub(e,d,!1)},function(){Dc(a.b);lb(a,!1)})}
@ -201,18 +201,18 @@ function Qe(a,b,c,d){if(c)if(b){0>a.F&&a.A.length&&(a.F=0);if(0>a.F||b!=a.A[a.F]
function Bf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.da&&(a.g("ended assemble at "+Z(a.ca.G)),a.O=a.ca,a.da=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.qa=null;if(nb(a)&&0<b.length){a.da&&(b="a "+Z(a.ca.G)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var p=Je(a,f[1],!0);if(p)if(a.ca= function Bf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.da&&(a.g("ended assemble at "+Z(a.ca.G)),a.O=a.ca,a.da=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.qa=null;if(nb(a)&&0<b.length){a.da&&(b="a "+Z(a.ca.G)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var p=Je(a,f[1],!0);if(p)if(a.ca=
p,void 0===f[2])a.g("begin assemble at "+Z(p.G)),a.da=!0,Dc(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var x=0;x<q.length;x++)a.ta(p,q[x],1);a.g(Cf(a,a.ca))}}break;case "b":a:{var v=f[0],r=f[1],C=b;if("?"==r)a.g("breakpoint commands:"),a.g("\tbi [p]\ttoggle break on input port [p]"),a.g("\tbo [p]\ttoggle break on output port [p]"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"), p,void 0===f[2])a.g("begin assemble at "+Z(p.G)),a.da=!0,Dc(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var x=0;x<q.length;x++)a.ta(p,q[x],1);a.g(Cf(a,a.ca))}}break;case "b":a:{var v=f[0],r=f[1],C=b;if("?"==r)a.g("breakpoint commands:"),a.g("\tbi [p]\ttoggle break on input port [p]"),a.g("\tbo [p]\ttoggle break on output port [p]"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),
a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");else{var y=v.charAt(1);if("l"==y){var X=0,X=X+Af(a,a.u),X=X+Af(a,a.R);(X+=Af(a,a.J))||a.g("no breakpoints")}else if("n"==y)a.pa=If(a,r),a.g("break after "+a.pa+" instruction(s)");else if(void 0===r)a.g("missing breakpoint address");else{var A=W();if("*"!=r&&(A=Je(a,r,!0),!A))break a;r=t(A.G);"c"==y?null==A.G?(Ae(a),a.g("all breakpoints cleared")):yf(a,a.u,A)||yf(a,a.R,A)|| a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");else{var y=v.charAt(1);if("l"==y){var X=0,X=X+Af(a,a.u),X=X+Af(a,a.R);(X+=Af(a,a.J))||a.g("no breakpoints")}else if("n"==y)a.pa=If(a,r),a.g("break after "+a.pa+" instruction(s)");else if(void 0===r)a.g("missing breakpoint address");else{var A=W();if("*"!=r&&(A=Je(a,r,!0),!A))break a;r=t(A.G);"c"==y?null==A.G?(Ae(a),a.g("all breakpoints cleared")):yf(a,a.u,A)||yf(a,a.R,A)||
yf(a,a.J,A)||a.g("breakpoint missing: "+Z(A.G)):"i"==y?a.g("breakpoint "+(Gb(a.w,A.G)?"enabled":"cleared")+": port "+r+" (input)"):"o"==y?a.g("breakpoint "+(Sb(a.w,A.G)?"enabled":"cleared")+": port "+r+" (output)"):null!=A.G&&(Pe(a,A,C),"p"==y?a.$a(a.u,A):"r"==y?a.$a(a.R,A):"w"==y?a.$a(a.J,A):a.g("unknown breakpoint command: "+y))}}}break;case "c":a.Fa&&(a.Fa.value="");break;case "d":a:{var Q,aa=f[0],Y=f[1],va=f[2],Fb=f[3];if("?"==Y){var Fa="";for(Q in tb)a.Ba[Q]&&(Fa&&(Fa+=","),Fa+=Q);Fa+=",state,symbols"; yf(a,a.J,A)||a.g("breakpoint missing: "+Z(A.G)):"i"==y?a.g("breakpoint "+(Gb(a.w,A.G)?"enabled":"cleared")+": port "+r+" (input)"):"o"==y?a.g("breakpoint "+(Sb(a.w,A.G)?"enabled":"cleared")+": port "+r+" (output)"):null!=A.G&&(Pe(a,A,C),"p"==y?a.ab(a.u,A):"r"==y?a.ab(a.R,A):"w"==y?a.ab(a.J,A):a.g("unknown breakpoint command: "+y))}}}break;case "c":a.Fa&&(a.Fa.value="");break;case "d":a:{var Q,aa=f[0],Y=f[1],va=f[2],Fb=f[3];if("?"==Y){var Fa="";for(Q in tb)a.Ba[Q]&&(Fa&&(Fa+=","),Fa+=Q);Fa+=",state,symbols";
a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");Fa.length&&a.g("dump extension commands:\n\t"+Fa)}else if("state"==Y){var Ye=Tf(a.B,!0);"console"==va?console.log(Ye):(a.Fa&&(a.Fa.value=""),a.g(Ye))}else if("symbols"==Y)for(var hd=0;hd<a.H.length;hd++){var id=a.H[hd],ob;for(ob in id.Ra)if("."!=ob.charAt(0)){var Ze=id.Ra[ob].o; a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");Fa.length&&a.g("dump extension commands:\n\t"+Fa)}else if("state"==Y){var Ye=Tf(a.B,!0);"console"==va?console.log(Ye):(a.Fa&&(a.Fa.value=""),a.g(Ye))}else if("symbols"==Y)for(var hd=0;hd<a.H.length;hd++){var id=a.H[hd],ob;for(ob in id.Ra)if("."!=ob.charAt(0)){var Ze=id.Ra[ob].o;
if(void 0!==Ze){var $e=id.Ra[ob].l;$e&&(ob=$e);a.g(Z(Ze)+" "+ob)}}}else{if("d"==aa){for(Q in tb)if(f[1]==Q){var af=a.Ba[Q];af?(f.shift(),f.shift(),af(f)):a.g("no dump registered for "+Y);break a}Y||(aa=a.Ab||"db")}else a.Ab=aa;if("dh"==aa){var bf=Y,cf=va,df="",ef=0,ba=a.ga,Ga=a.M;if(Ga.length){var ia=+bf||a.jb,pb=+cf||10;isNaN(ia)?ia=pb:df="more ";ia>Ga.length&&(a.g("note: only "+Ga.length+" available"),ia=Ga.length);ba-=ia;0>ba&&(null==Ga[Ga.length-1].G?(ia=ba+ia,ba=0):ba+=Ga.length);var jd=[];"call"== if(void 0!==Ze){var $e=id.Ra[ob].l;$e&&(ob=$e);a.g(Z(Ze)+" "+ob)}}}else{if("d"==aa){for(Q in tb)if(f[1]==Q){var af=a.Ba[Q];af?(f.shift(),f.shift(),af(f)):a.g("no dump registered for "+Y);break a}Y||(aa=a.Ab||"db")}else a.Ab=aa;if("dh"==aa){var bf=Y,cf=va,df="",ef=0,ba=a.ga,Ga=a.M;if(Ga.length){var ia=+bf||a.jb,pb=+cf||10;isNaN(ia)?ia=pb:df="more ";ia>Ga.length&&(a.g("note: only "+Ga.length+" available"),ia=Ga.length);ba-=ia;0>ba&&(null==Ga[Ga.length-1].G?(ia=ba+ia,ba=0):ba+=Ga.length);var jd=[];"call"==
cf&&(pb=1E5,jd=["CALL"]);for(void 0!==bf&&a.g(ia+" instructions earlier:");0<pb&&ba!=a.ga;){var ff=Ga[ba++];if(null==ff.G)break;var Kb=W(ff.G),lg=ia--,gf=Cf(a,Kb,"history",lg);(!jd.length||0<=gf.indexOf(jd[0]))&&a.g(gf);Kb.Vb&&(ba+=Kb.Vb,pb-=Kb.Vb,ia-=Kb.Vb);ba>=Ga.length&&(ba=0);a.jb=ia;ef++;pb--}}ef||(a.g("no "+df+"history available"),a.jb=void 0)}else{var pc=Je(a,Y);if(pc){var qc=0;va&&("l"==va.charAt(0)&&(va=va.substr(1)||Fb),qc=If(a,va)>>>0,65536<qc&&(qc=65536));for(var Ya="",rc="dd"==aa?4:"dw"== cf&&(pb=1E5,jd=["CALL"]);for(void 0!==bf&&a.g(ia+" instructions earlier:");0<pb&&ba!=a.ga;){var ff=Ga[ba++];if(null==ff.G)break;var Kb=W(ff.G),lg=ia--,gf=Cf(a,Kb,"history",lg);(!jd.length||0<=gf.indexOf(jd[0]))&&a.g(gf);Kb.Vb&&(ba+=Kb.Vb,pb-=Kb.Vb,ia-=Kb.Vb);ba>=Ga.length&&(ba=0);a.jb=ia;ef++;pb--}}ef||(a.g("no "+df+"history available"),a.jb=void 0)}else{var pc=Je(a,Y);if(pc){var qc=0;va&&("l"==va.charAt(0)&&(va=va.substr(1)||Fb),qc=If(a,va)>>>0,65536<qc&&(qc=65536));for(var Ya="",rc="dd"==aa?4:"dw"==
aa?2:1,sc=rc*qc||128,mg=sc+15>>4||1;mg--&&0<sc;){var tc=0,kd=0,Lb,Mb="",ld="",Y=Z(pc.G);for(Lb=16;0<Lb&&0<sc;Lb--){var uc=a.$(pc,1),tc=tc|uc<<(kd++<<3);kd==rc&&(Mb+=n(tc,2*rc),Mb+=1==rc?9==Lb?"-":" ":" ",tc=kd=0);ld+=32<=uc&&128>uc?String.fromCharCode(uc):".";sc--}Ya&&(Ya+="\n");Ya+=Y+" "+Mb+(0==Lb?" "+ld:"")}Ya&&a.g(Ya);a.ab=pc}}}}break;case "e":if("else"==f[0])break;var vc=1,hf=255,jf=a.$,kf=a.ta;"ew"==f[0]&&(vc=2,hf=65535,jf=a.Sa,kf=a.Ub);var lf=vc<<1,mf=f[1];if(null==mf)a.g("edit memory commands:"), aa?2:1,sc=rc*qc||128,mg=sc+15>>4||1;mg--&&0<sc;){var tc=0,kd=0,Lb,Mb="",ld="",Y=Z(pc.G);for(Lb=16;0<Lb&&0<sc;Lb--){var uc=a.$(pc,1),tc=tc|uc<<(kd++<<3);kd==rc&&(Mb+=n(tc,2*rc),Mb+=1==rc?9==Lb?"-":" ":" ",tc=kd=0);ld+=32<=uc&&128>uc?String.fromCharCode(uc):".";sc--}Ya&&(Ya+="\n");Ya+=Y+" "+Mb+(0==Lb?" "+ld:"")}Ya&&a.g(Ya);a.bb=pc}}}}break;case "e":if("else"==f[0])break;var vc=1,hf=255,jf=a.$,kf=a.ta;"ew"==f[0]&&(vc=2,hf=65535,jf=a.Ta,kf=a.Ub);var lf=vc<<1,mf=f[1];if(null==mf)a.g("edit memory commands:"),
a.g("\teb [a] [...] edit bytes at address a"),a.g("\tew [a] [...] edit words at address a");else{var wc=Je(a,mf);if(wc)for(var xc=2;xc<f.length;xc++){var Nb=Oe(a,f[xc]);if(void 0===Nb){a.g("unrecognized value: "+f[xc]);break}Nb&~hf&&a.g("warning: "+n(Nb)+" exceeds "+vc+"-byte value");var ng=jf.call(a,wc);a.g("changing "+Z(wc.G)+" from 0x"+n(ng,lf)+" to 0x"+n(Nb,lf));kf.call(a,wc,Nb,vc)}}break;case "f":Nf(a,f[1]);break;case "g":a:{var nf=f[1],og=b;if(void 0!==nf){var md=Je(a,nf,!0);if(!md)break a; a.g("\teb [a] [...] edit bytes at address a"),a.g("\tew [a] [...] edit words at address a");else{var wc=Je(a,mf);if(wc)for(var xc=2;xc<f.length;xc++){var Nb=Oe(a,f[xc]);if(void 0===Nb){a.g("unrecognized value: "+f[xc]);break}Nb&~hf&&a.g("warning: "+n(Nb)+" exceeds "+vc+"-byte value");var ng=jf.call(a,wc);a.g("changing "+Z(wc.G)+" from 0x"+n(ng,lf)+" to 0x"+n(Nb,lf));kf.call(a,wc,Nb,vc)}}break;case "f":Nf(a,f[1]);break;case "g":a:{var nf=f[1],og=b;if(void 0!==nf){var md=Je(a,nf,!0);if(!md)break a;
Pe(a,md,og);a.$a(a.u,md,!0)}a.gb(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var nd;if(a.D.xa)nd="halting",a.ma();else{if(mb(a,!0))break a;nd="already halted"}c||a.g(nd)}break;case "i":if("if"==f[0]){var od;var Ob=b.substr(2),Ob=ma(Ob);Oe(a,Ob)?(c||a.g("true: "+Ob),od=!0):(c||a.g("false: "+Ob),od=!1);od||(d=!1);break}if("int"==f[0]){var yc;var pg=f[1];if(a.b.sa&512){var pd=Oe(a,pg);null==pd?yc=!1:(a.g("requesting interrupt level "+pd),Gd(a.b,pd),yc=!0)}else a.g("interrupts disabled (use rif=1 to enable)"), Pe(a,md,og);a.ab(a.u,md,!0)}a.gb(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var nd;if(a.D.xa)nd="halting",a.ma();else{if(mb(a,!0))break a;nd="already halted"}c||a.g(nd)}break;case "i":if("if"==f[0]){var od;var Ob=b.substr(2),Ob=ma(Ob);Oe(a,Ob)?(c||a.g("true: "+Ob),od=!0):(c||a.g("false: "+Ob),od=!1);od||(d=!1);break}if("int"==f[0]){var yc;var pg=f[1];if(a.b.sa&512){var pd=Oe(a,pg);null==pd?yc=!1:(a.g("requesting interrupt level "+pd),Gd(a.b,pd),yc=!0)}else a.g("interrupts disabled (use rif=1 to enable)"),
yc=!1;yc||(d=!1);break}var qd=f[1];if(qd&&"?"!=qd){var rd=If(a,qd);if(void 0!==rd){var qg=Ib(a.w,rd);a.g(t(rd)+": "+da(qg))}}else a.g("input commands:"),a.g("\ti [p]\tread port [p]"),a.g("warning: port accesses can affect hardware state");break;case "k":var rg=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var sd=0,of=W(),Pb=W(a.b.ka);for(a.g("stack trace for "+Z(Pb.G));10>sd;){for(var Za=null,sg=256;65536>Pb.G>>>0;){of.G= yc=!1;yc||(d=!1);break}var qd=f[1];if(qd&&"?"!=qd){var rd=If(a,qd);if(void 0!==rd){var qg=Ib(a.w,rd);a.g(t(rd)+": "+da(qg))}}else a.g("input commands:"),a.g("\ti [p]\tread port [p]"),a.g("warning: port accesses can affect hardware state");break;case "k":var rg=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var sd=0,of=W(),Pb=W(a.b.ka);for(a.g("stack trace for "+Z(Pb.G));10>sd;){for(var Za=null,sg=256;65536>Pb.G>>>0;){of.G=
a.Sa(Pb,2);if(null==Pb.G||!sg--)break;for(var tg=a,zc=of,pf=null,Qb=zc.G,qf=Qb,td=1;6>=td&&Qb;td++){if(2<td){zc.G=Qb;var Ac=Cf(tg,zc);if(0<=Ac.indexOf("CALL")){var rf=Ac.indexOf(" ");if(Qb+(Ac.indexOf(" ",rf+1)-rf-1)/2==qf){pf=Ac;break}}}Qb--}zc.G=qf;if(Za=pf)break}if(!Za||null==Za)break;var sf=null;if("ks"==rg){var tf=Za.match(/[0-9A-F]+$/);tf&&(sf=Pf(a,tf[0]))}Za=la(Za,50)+" ;"+(sf||"stack="+Z(Pb.G));a.g(Za);sd++}sd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Pf(a,f[1],!0); a.Ta(Pb,2);if(null==Pb.G||!sg--)break;for(var tg=a,zc=of,pf=null,Qb=zc.G,qf=Qb,td=1;6>=td&&Qb;td++){if(2<td){zc.G=Qb;var Ac=Cf(tg,zc);if(0<=Ac.indexOf("CALL")){var rf=Ac.indexOf(" ");if(Qb+(Ac.indexOf(" ",rf+1)-rf-1)/2==qf){pf=Ac;break}}}Qb--}zc.G=qf;if(Za=pf)break}if(!Za||null==Za)break;var sf=null;if("ks"==rg){var tf=Za.match(/[0-9A-F]+$/);tf&&(sf=Pf(a,tf[0]))}Za=la(Za,50)+" ;"+(sf||"stack="+Z(Pb.G));a.g(Za);sd++}sd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Pf(a,f[1],!0);
break}break;case "m":a:{var Ha,Ia=null,N=f[1];"?"==N&&(N=void 0);if(void 0!==N){var Ra=0;if("all"==N)Ra=1878917119,N=null;else if("on"==N)Ia=!0,N=null;else if("off"==N)Ia=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(Ha in tb)if(N==Ha){Ra=tb[Ha];Ia=!!(a.ra&Ra);break}if(!Ra){a.g("unknown message category: "+N);break a}}if(Ra)if("on"==f[2])a.ra|=Ra,Ia=!0;else if("off"==f[2]&&(a.ra&=~Ra,Ia=!1,1073741824==Ra)){for(var ud=0;ud<a.ua.length;ud++)a.g(a.ua[ud]);a.ua=[]}}var ug=0,Sa="";for(Ha in tb)if(!N|| break}break;case "m":a:{var Ha,Ia=null,N=f[1];"?"==N&&(N=void 0);if(void 0!==N){var Ra=0;if("all"==N)Ra=1878917119,N=null;else if("on"==N)Ia=!0,N=null;else if("off"==N)Ia=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(Ha in tb)if(N==Ha){Ra=tb[Ha];Ia=!!(a.ra&Ra);break}if(!Ra){a.g("unknown message category: "+N);break a}}if(Ra)if("on"==f[2])a.ra|=Ra,Ia=!0;else if("off"==f[2]&&(a.ra&=~Ra,Ia=!1,1073741824==Ra)){for(var ud=0;ud<a.ua.length;ud++)a.g(a.ua[ud]);a.ua=[]}}var ug=0,Sa="";for(Ha in tb)if(!N||
N==Ha){var vg=!!(a.ra&tb[Ha]);if(null===Ia||Ia==vg)Sa&&(Sa+=","),++ug%10||(Sa+="\n\t"),"key"==Ha&&(Ha="keys"),Sa+=Ha}void 0===N&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ia?Ia?"messages on: ":"messages off: ":"message categories:\n\t")+(Sa||"none"));Be(a)}break;case "o":var vd=f[1],wg=f[2];if(vd&&"?"!=vd){var wd=If(a,vd,"port #"),xd=If(a,wg);void 0!==wd&&void 0!==xd&&(Ub(a.w,wd,xd),a.g(t(wd)+": "+da(xd)))}else a.g("output commands:"),a.g("\to [p] [b]\twrite byte [b] to port [p]"), N==Ha){var vg=!!(a.ra&tb[Ha]);if(null===Ia||Ia==vg)Sa&&(Sa+=","),++ug%10||(Sa+="\n\t"),"key"==Ha&&(Ha="keys"),Sa+=Ha}void 0===N&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ia?Ia?"messages on: ":"messages off: ":"message categories:\n\t")+(Sa||"none"));Be(a)}break;case "o":var vd=f[1],wg=f[2];if(vd&&"?"!=vd){var wd=If(a,vd,"port #"),xd=If(a,wg);void 0!==wd&&void 0!==xd&&(Ub(a.w,wd,xd),a.g(t(wd)+": "+da(xd)))}else a.g("output commands:"),a.g("\to [p] [b]\twrite byte [b] to port [p]"),
a.g("warning: port accesses can affect hardware state");break;case "p":if("print"==f[0]){Rf(a,b.substr(5));break}var uf="pr"==f[0]?1:0,xg=1+uf;if(a.S)a.g("step in progress");else{var yd=W(a.b.P);switch(a.$(yd)){case 205:a.S=xg,Ke(yd,3)}a.S?(a.$a(a.u,yd,!0),a.gb()||(a.B&&a.B.hb(),a.S=0)):Sf(a,uf?"tr":"t")}break;case "r":if("reset"==b){a.B&&a.B.reset();break}Xe(a,f);break;case "s":Qf(a,f);break;case "t":Sf(a,f[0],f[1]);break;case "u":wf(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Of(a,b.substr(3))|| a.g("warning: port accesses can affect hardware state");break;case "p":if("print"==f[0]){Rf(a,b.substr(5));break}var uf="pr"==f[0]?1:0,xg=1+uf;if(a.S)a.g("step in progress");else{var yd=W(a.b.P);switch(a.$(yd)){case 205:a.S=xg,Ke(yd,3)}a.S?(a.ab(a.u,yd,!0),a.gb()||(a.B&&a.B.hb(),a.S=0)):Sf(a,uf?"tr":"t")}break;case "r":if("reset"==b){a.B&&a.B.reset();break}Xe(a,f);break;case "s":Qf(a,f);break;case "t":Sf(a,f[0],f[1]);break;case "u":wf(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Of(a,b.substr(3))||
(d=!1);break}a.g("PC8080 version 1.24.1 ("+a.b.Cc+",RELEASE"+(rb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(ta());break;case "?":if(f[1]){Rf(a,b.substr(1));break}var Rb="commands:",zd;for(zd in De)Rb+="\n"+la(zd,9)+De[zd];Hd(a)||(Rb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Rb);break;default:a.g("unknown command: "+b),d=!1}}}catch(vf){a.g("debugger error: "+(vf.stack||vf.message)),d=!1}return d}function Cc(a,b,c){b=Qe(a,b,c);for(var d in b)if(!Bf(a,b[d]))return!1;return!0} (d=!1);break}a.g("PC8080 version 1.24.1 ("+a.b.Cc+",RELEASE"+(rb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(ta());break;case "?":if(f[1]){Rf(a,b.substr(1));break}var Rb="commands:",zd;for(zd in De)Rb+="\n"+la(zd,9)+De[zd];Hd(a)||(Rb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Rb);break;default:a.g("unknown command: "+b),d=!1}}}catch(vf){a.g("debugger error: "+(vf.stack||vf.message)),d=!1}return d}function Cc(a,b,c){b=Qe(a,b,c);for(var d in b)if(!Bf(a,b[d]))return!1;return!0}
Ma(function(){for(var a=B(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new ye(d);hb(d,c)}}); Ma(function(){for(var a=B(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new ye(d);hb(d,c)}});
function Uf(a,b,c){w.call(this,"Computer",a,Uf,67108864);this.D.va=!1;Vf(this,b);this.R=nc(this,"autoPower",a);this.A=0;this.fa=a.busWidth||a.buswidth;this.B=Wf;this.M=null;this.K=this.ca=!1;this.ga=nc(this,"url")||"";(Math.random()+.1).toString(36);this.u=Xf(this);if(this.b=gb("CPU",this.id)){this.I=gb("Debugger",this.id);this.H=[];for(b=null;b=vb(this,"Video",b);)this.H.push(b);this.w=new xb({id:this.Mb+".bus",busWidth:this.fa},this.b,this.I);var d,e=eb(this.id);if((this.F=gb("Panel",this.id))&& function Uf(a,b,c){w.call(this,"Computer",a,Uf,67108864);this.D.va=!1;Vf(this,b);this.R=nc(this,"autoPower",a);this.A=0;this.fa=a.busWidth||a.buswidth;this.B=Wf;this.M=null;this.K=this.ca=!1;this.ga=nc(this,"url")||"";(Math.random()+.1).toString(36);this.u=Xf(this);if(this.b=gb("CPU",this.id)){this.I=gb("Debugger",this.id);this.H=[];for(b=null;b=vb(this,"Video",b);)this.H.push(b);this.w=new xb({id:this.Mb+".bus",busWidth:this.fa},this.b,this.I);var d,e=eb(this.id);if((this.F=gb("Panel",this.id))&&

View file

@ -7,14 +7,14 @@ typeof b){var l="",n;for(n in b)b.hasOwnProperty(n)&&(l&&(l+="&"),l+=n+"="+encod
function p(a){window&&window.alert(a)}function na(a){var b=!1;window&&(b=window.confirm(a));return b}var oa=null;function pa(){if(null==oa){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}oa=a}return oa}function qa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b} function p(a){window&&window.alert(a)}function na(a){var b=!1;window&&(b=window.confirm(a));return b}var oa=null;function pa(){if(null==oa){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}oa=a}return oa}function qa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function ra(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function sa(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)?!0:!1}return!1}var ta={init:[],show:[],exit:[]},ua=!1,va=!1,wa=!0;function xa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function ya(a){ta.init.push(a)} function ra(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function sa(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)?!0:!1}return!1}var ta={init:[],show:[],exit:[]},ua=!1,va=!1,wa=!0;function xa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function ya(a){ta.init.push(a)}
function za(a){if(wa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Aa("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Ba(a){!wa&&a?(wa=!0,ua&&Ca("init"),va&&Ca("show")):wa=a}function Ca(a){ta[a]&&za(ta[a])}xa("onload",function(){ua=!0;za(ta.init)});xa("onpageshow",function(){va=!0;za(ta.show)});xa(sa("Opera")||sa("iOS")?"onunload":"onbeforeunload",function(){za(ta.exit)}); function za(a){if(wa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Aa("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Ba(a){!wa&&a?(wa=!0,ua&&Ca("init"),va&&Ca("show")):wa=a}function Ca(a){ta[a]&&za(ta[a])}xa("onload",function(){ua=!0;za(ta.init)});xa("onpageshow",function(){va=!0;za(ta.show)});xa(sa("Opera")||sa("iOS")?"onunload":"onbeforeunload",function(){za(ta.exit)});
function q(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.wb=b.comment;this.Tc=b;b=this.id.indexOf(".");0>b?this.Ra=this.id:(this.Sa=this.id.substr(0,b),this.Ra=this.id.substr(b+1));this[a]=c;this.j={ga:!1,Ga:!1,nb:!1,V:!1,sa:!1};this.Ya=null;this.j.sa=!1;this.B={};this.N=null;r.push(this)}var Ea=void 0,Fa={}; function q(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.wb=b.comment;this.Tc=b;b=this.id.indexOf(".");0>b?this.Ra=this.id:(this.Sa=this.id.substr(0,b),this.Ra=this.id.substr(b+1));this[a]=c;this.j={ga:!1,Ga:!1,nb:!1,V:!1,ua:!1};this.Ya=null;this.j.ua=!1;this.B={};this.N=null;r.push(this)}var Ea=void 0,Fa={};
if(window){Ea||(Ea=window.location.search.substr(1));for(var Ga,Ha=/\+/g,Ia=/([^&=]+)=?([^&]*)/g;Ga=Ia.exec(Ea);)Fa[decodeURIComponent(Ga[1].replace(Ha," "))]=decodeURIComponent(Ga[2].replace(Ha," "))}function Ja(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b} if(window){Ea||(Ea=window.location.search.substr(1));for(var Ga,Ha=/\+/g,Ia=/([^&=]+)=?([^&]*)/g;Ga=Ia.exec(Ea);)Fa[decodeURIComponent(Ga[1].replace(Ha," "))]=decodeURIComponent(Ga[2].replace(Ha," "))}function Ja(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
function v(a,b){b||(b=q);a.prototype=Ja(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Ka=window.PCjs.Machines||(window.PCjs.Machines={}),r=window.PCjs.Components||(window.PCjs.Components=[])}else Ka={},r=[];function La(a,b,c){Ka[a]&&b&&(Ka[a][b]=c)}function Aa(a,b,c){b||p((c?c+": ":"")+a)} function v(a,b){b||(b=q);a.prototype=Ja(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Ka=window.PCjs.Machines||(window.PCjs.Machines={}),r=window.PCjs.Components||(window.PCjs.Components=[])}else Ka={},r=[];function La(a,b,c){Ka[a]&&b&&(Ka[a][b]=c)}function Aa(a,b,c){b||p((c?c+": ":"")+a)}
function Ma(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 Na(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 Oa(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 Ma(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 Na(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 Oa(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 x(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){p(c.message+" ("+a+")")}return b}function Pa(a,b){for(var c=y(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var l=g.split(" "),n=0;n<l.length;n++)switch(g=l[n],g){case "pc8080-binding":(g=x(h))&&g.binding&&a.S(g.type,g.binding,h,g.value),n=l.length}}}} function x(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){p(c.message+" ("+a+")")}return b}function Pa(a,b){for(var c=y(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var l=g.split(" "),n=0;n<l.length;n++)switch(g=l[n],g){case "pc8080-binding":(g=x(h))&&g.binding&&a.S(g.type,g.binding,h,g.value),n=l.length}}}}
function y(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 y(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}
q.prototype={constructor:q,parent:null,toString:function(){return this.name?this.name:this.id||this.type},S:function(a,b,c){switch(b){case "clear":return this.B[b]||(this.B[b]=c,c.onclick=function(a){return function(){a.B.print&&(a.B.print.value="")}}(this)),!0;case "print":return this.B[b]||(this.oa=this.B[b]=c,c.value="",this.ba=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), q.prototype={constructor:q,parent:null,toString:function(){return this.name?this.name:this.id||this.type},S:function(a,b,c){switch(b){case "clear":return this.B[b]||(this.B[b]=c,c.onclick=function(a){return function(){a.B.print&&(a.B.print.value="")}}(this)),!0;case "print":return this.B[b]||(this.oa=this.B[b]=c,c.value="",this.ba=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.M=function(a){this.ba(a,this.Ra)}),!0;default:return!1}},log:function(){},ba:function(){},status:function(a){this.ba(this.Ra+": "+a)},M:function(a,b,c){Aa(a,b,c||this.type)},da:function(){return this.j.V=!0},ha:function(a,b){b&&(this.j.V=!1);return!0}};function Qa(a,b){if(a.j.nb)return a.j.Ga&&(a.j.Ga=!1),a.j.nb=!1;if(a.j.sa)return a.ba(a.toString()+" error"),!1;a.j.Ga=b;return a.j.Ga}function C(a){if(!a.j.sa&&(a.j.ga=!0,a.j.ga)){var b=a.Ya;a.Ya=null;b&&b()}} this.M=function(a){this.ba(a,this.Ra)}),!0;default:return!1}},log:function(){},ba:function(){},status:function(a){this.ba(this.Ra+": "+a)},M:function(a,b,c){Aa(a,b,c||this.type)},da:function(){return this.j.V=!0},ha:function(a,b){b&&(this.j.V=!1);return!0}};function Qa(a,b){if(a.j.nb)return a.j.Ga&&(a.j.Ga=!1),a.j.nb=!1;if(a.j.ua)return a.ba(a.toString()+" error"),!1;a.j.Ga=b;return a.j.Ga}function C(a){if(!a.j.ua&&(a.j.ga=!0,a.j.ga)){var b=a.Ya;a.Ya=null;b&&b()}}
function Ra(a,b){b&&(a.j.ga?b():a.Ya=b);return a.j.ga} function Ra(a,b){b&&(a.j.ga?b():a.Ya=b);return a.j.ga}
var Sa="undefined"!==typeof ArrayBuffer,Ta=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1, var Sa="undefined"!==typeof ArrayBuffer,Ta=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function Ua(a){q.call(this,"Panel",a,Ua)}v(Ua);k=Ua.prototype;k.S=function(a,b,c,d){return this.m&&this.m.S(a,b,c,d)||this.a&&this.a.S(a,b,c,d)||this.l&&this.l.S(a,b,c,d)?!0:this.parent.S.call(this,a,b,c,d)};k.ma=function(a,b,c,d){this.m=a;this.o=b;this.a=c;this.N=d;this.l=D(a,"Keyboard")};k.da=function(a,b){b||Va();return!0};k.ha=function(){return!0};k.xa=function(){}; 0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function Ua(a){q.call(this,"Panel",a,Ua)}v(Ua);k=Ua.prototype;k.S=function(a,b,c,d){return this.m&&this.m.S(a,b,c,d)||this.a&&this.a.S(a,b,c,d)||this.l&&this.l.S(a,b,c,d)?!0:this.parent.S.call(this,a,b,c,d)};k.ma=function(a,b,c,d){this.m=a;this.o=b;this.a=c;this.N=d;this.l=D(a,"Keyboard")};k.da=function(a,b){b||Va();return!0};k.ha=function(){return!0};k.xa=function(){};
@ -30,27 +30,27 @@ E.prototype={constructor:E,parent:null,save:function(){var a,b;if(Sa)for(a=Array
b,c){this.B||this.aa(a,b,c)},v:function(a){return this.b[a]},A:function(a){return this.b[a]},G:function(a){return this.o.getUint16(a,!0)},I:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.h[a>>1]},J:function(a,b){this.b[a]=b;this.ka=!0},T:function(a,b){this.b[a]=b;this.ka=!0},Z:function(a,b){this.o.setUint16(a,b,!0);this.ka=!0},ea:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.h[a>>1]=b;this.ka=!0}}; b,c){this.B||this.aa(a,b,c)},v:function(a){return this.b[a]},A:function(a){return this.b[a]},G:function(a){return this.o.getUint16(a,!0)},I:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.h[a>>1]},J:function(a,b){this.b[a]=b;this.ka=!0},T:function(a,b){this.b[a]=b;this.ka=!0},Z:function(a,b){this.o.setUint16(a,b,!0);this.ka=!0},ea:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.h[a>>1]=b;this.ka=!0}};
function Xa(a,b,c){a.N=b;a.m=a.f=0;c&&((a.m=c.m)&&rb(a,sb,!1),(a.f=c.f)&&tb(a,sb,!1))}function tb(a,b,c){c&&a.f||(a.Pa=!a.B&&b[2]||a.s,a.ld=!a.B&&b[3]||a.u);if(c||void 0===c)a.$b=b[2]||a.s,a.aa=b[3]||a.u}function rb(a,b,c){c&&a.m||(a.Oa=b[0]||a.i,a.kd=b[1]||a.l);if(c||void 0===c)a.fb=b[0]||a.i,a.Yb=b[1]||a.l}function nb(a,b){b||(b=ub);rb(a,b,void 0);tb(a,b,void 0)}var ub=[],qb=[E.prototype.C,E.prototype.L,E.prototype.U,E.prototype.na],sb=[E.prototype.w,E.prototype.H,E.prototype.O,E.prototype.$]; function Xa(a,b,c){a.N=b;a.m=a.f=0;c&&((a.m=c.m)&&rb(a,sb,!1),(a.f=c.f)&&tb(a,sb,!1))}function tb(a,b,c){c&&a.f||(a.Pa=!a.B&&b[2]||a.s,a.ld=!a.B&&b[3]||a.u);if(c||void 0===c)a.$b=b[2]||a.s,a.aa=b[3]||a.u}function rb(a,b,c){c&&a.m||(a.Oa=b[0]||a.i,a.kd=b[1]||a.l);if(c||void 0===c)a.fb=b[0]||a.i,a.Yb=b[1]||a.l}function nb(a,b){b||(b=ub);rb(a,b,void 0);tb(a,b,void 0)}var ub=[],qb=[E.prototype.C,E.prototype.L,E.prototype.U,E.prototype.na],sb=[E.prototype.w,E.prototype.H,E.prototype.O,E.prototype.$];
if(Sa)var pb=[E.prototype.v,E.prototype.G,E.prototype.J,E.prototype.Z],ob=[E.prototype.A,E.prototype.I,E.prototype.T,E.prototype.ea]; if(Sa)var pb=[E.prototype.v,E.prototype.G,E.prototype.J,E.prototype.Z],ob=[E.prototype.A,E.prototype.I,E.prototype.T,E.prototype.ea];
function vb(a,b){q.call(this,"CPU",a,vb);var c=a.cycles||b,d=a.multiplier||1;this.b={};this.b.wa=c;this.b.bb=0;this.b.va=d;this.b.ob=Math.round(this.b.wa/1E4)/100;this.b.Aa=this.b.ob*this.b.va;this.j.la=!1;this.j.Pb=!1;this.j.Mb=a.autoStart;this.j.Ob=!1;this.j.Wa=!1;this.b.$a=this.b.Ca=0;this.b.ab=a.csStart;this.b.Ha=a.csInterval;this.b.Ia=a.csStop;this.I=[];this.na=this.ub.bind(this);C(this)}v(vb);var wb=["power","reset"];k=vb.prototype; function vb(a,b){q.call(this,"CPU",a,vb);var c=a.cycles||b,d=a.multiplier||1;this.b={};this.b.qa=c;this.b.bb=0;this.b.pa=d;this.b.ob=Math.round(this.b.qa/1E4)/100;this.b.Aa=this.b.ob*this.b.pa;this.j.la=!1;this.j.Pb=!1;this.j.Mb=a.autoStart;this.j.Ob=!1;this.j.Wa=!1;this.b.$a=this.b.Ca=0;this.b.ab=a.csStart;this.b.Ha=a.csInterval;this.b.Ia=a.csStop;this.I=[];this.na=this.ub.bind(this);C(this)}v(vb);var wb=["power","reset"];k=vb.prototype;
k.ma=function(a,b,c,d){this.m=a;this.o=b;this.N=d;for(b=0;b<wb.length;b++)(c=this.B[wb[b]])&&this.m.S(null,wb[b],c);this.U=(b=D(a,"Video"))&&Math.max(b.Vc,b.mb)||60;this.L=D(a,"ChipSet");a=xb(a,"autoStart");null!=a&&(this.j.Mb="true"==a?!0:"false"==a?!1:!!a);C(this)};k.reset=function(){this.b.bb=0};k.save=function(){return null};k.restore=function(){return!1}; k.ma=function(a,b,c,d){this.m=a;this.o=b;this.N=d;for(b=0;b<wb.length;b++)(c=this.B[wb[b]])&&this.m.S(null,wb[b],c);this.U=(b=D(a,"Video"))&&Math.max(b.Vc,b.mb)||60;this.L=D(a,"ChipSet");a=xb(a,"autoStart");null!=a&&(this.j.Mb="true"==a?!0:"false"==a?!1:!!a);C(this)};k.reset=function(){this.b.bb=0};k.save=function(){return null};k.restore=function(){return!1};
k.da=function(a,b){if(!b){if(a&&this.restore){yb(this);if(!this.restore(a))return!1;zb(this)}else this.reset();this.ba("No debugger detected")}Ab(this);return!0};k.ha=function(a){return a?this.save():!0};function Bb(a){(a.j.Mb||void 0===a.B.run)&&a.ub(!0)}k.Sb=function(){return 0};function zb(a){void 0===a.b.ab&&(a.b.ab=0);void 0===a.b.Ha&&(a.b.Ha=-1);void 0===a.b.Ia&&(a.b.Ia=-1);a.j.Wa=0<=a.b.ab&&0<a.b.Ha;a.j.Wa&&(a.b.$a=0,a.b.Ca=a.b.ab-a.O)} k.da=function(a,b){if(!b){if(a&&this.restore){yb(this);if(!this.restore(a))return!1;zb(this)}else this.reset();this.ba("No debugger detected")}Ab(this);return!0};k.ha=function(a){return a?this.save():!0};function Bb(a){(a.j.Mb||void 0===a.B.run)&&a.ub(!0)}k.Sb=function(){return 0};function zb(a){void 0===a.b.ab&&(a.b.ab=0);void 0===a.b.Ha&&(a.b.Ha=-1);void 0===a.b.Ia&&(a.b.Ia=-1);a.j.Wa=0<=a.b.ab&&0<a.b.Ha;a.j.Wa&&(a.b.$a=0,a.b.Ca=a.b.ab-a.O)}
k.S=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.B[b]=c;a=!0;break;case "run":this.B[b]=c;c.onclick=function(){var a;if(a=d.m)if(a=d.m,a.j.V)a=!0;else{var b=null,c,g=Ma(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.j.ga);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.j.V);c++);c==g.length&&(b=a);p("The "+b.type+" component ("+b.id+") is not "+(b.j.ga?"powered yet":"ready yet"+(b.Ya?" (waiting for notification)":""))+".");a=!1}a&&(d.j.la?Cb(d,!0):d.ub(!0))};a=!0; k.S=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.B[b]=c;a=!0;break;case "run":this.B[b]=c;c.onclick=function(){var a;if(a=d.m)if(a=d.m,a.j.V)a=!0;else{var b=null,c,g=Ma(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.j.ga);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.j.V);c++);c==g.length&&(b=a);p("The "+b.type+" component ("+b.id+") is not "+(b.j.ga?"powered yet":"ready yet"+(b.Ya?" (waiting for notification)":""))+".");a=!1}a&&(d.j.la?Cb(d,!0):d.ub(!0))};a=!0;
break;case "speed":this.B[b]=c;a=!0;break;case "setSpeed":this.B[b]=c,c.onclick=function(){Db(d,d.b.va<<1,!0)},c.textContent=this.b.Aa.toFixed(2)+"Mhz",a=!0}return a};function Eb(a,b,c){a.O+=b;c&&(a.G=a.a=0)} break;case "speed":this.B[b]=c;a=!0;break;case "setSpeed":this.B[b]=c,c.onclick=function(){Db(d,d.b.pa<<1,!0)},c.textContent=this.b.Aa.toFixed(2)+"Mhz",a=!0}return a};function Eb(a,b,c){a.O+=b;c&&(a.G=a.a=0)}
function Fb(a,b){var c=30;c<a.U&&(c=a.U);2>c&&(c=2);var d=1;b&&1<a.b.va&&a.b.ta&&(d=a.b.ta/a.b.ob);a.b.Vb=Math.round(1E3/30);a.b.Uc=Math.floor(a.b.wa/c*d);a.b.qb=Math.floor(a.b.wa/30*d);a.b.Xb=Math.floor(a.b.wa/a.U*d);a.b.Wb=Math.floor(a.b.wa/2*d);b||(a.b.La=a.b.qb,a.b.Ka=a.b.Xb,a.b.Ja=a.b.Wb);a.b.rb=0}function Gb(a){return a.O+a.J+a.G-a.a}function yb(a){a.b.ta=0;a.O=a.J=a.G=a.a=0;zb(a);Db(a,1)} function Fb(a,b){var c=30;c<a.U&&(c=a.U);2>c&&(c=2);var d=1;b&&1<a.b.pa&&a.b.va&&(d=a.b.va/a.b.ob);a.b.Vb=Math.round(1E3/30);a.b.Uc=Math.floor(a.b.qa/c*d);a.b.qb=Math.floor(a.b.qa/30*d);a.b.Xb=Math.floor(a.b.qa/a.U*d);a.b.Wb=Math.floor(a.b.qa/2*d);b||(a.b.La=a.b.qb,a.b.Ka=a.b.Xb,a.b.Ja=a.b.Wb);a.b.rb=0}function Gb(a){return a.O+a.J+a.G-a.a}function yb(a){a.b.va=0;a.O=a.J=a.G=a.a=0;zb(a);Db(a,1)}
function Db(a,b,c){if(void 0!==b){.8>a.b.ta/a.b.Aa&&(b=1);a.b.va=b;b=a.b.ob*a.b.va;if(a.b.Aa!=b){a.b.Aa=b;b=a.b.Aa.toFixed(2)+"Mhz";var d=a.B.setSpeed;d&&(d.textContent=b);a.ba("target speed: "+b)}c&&a.m&&Hb(a.m)}Eb(a,a.J);a.J=0;a.b.Ba=ja();a.b.ua=0;Fb(a)}function Jb(a,b){var c=a.I.length;a.I.push([-1,b]);return c}function Kb(a,b,c){var d=-1;0<=b&&b<a.I.length&&(d=a.b.wa*a.b.va/1E3*c,a.I[b][0]=d)} function Db(a,b,c){if(void 0!==b){.8>a.b.va/a.b.Aa&&(b=1);a.b.pa=b;b=a.b.ob*a.b.pa;if(a.b.Aa!=b){a.b.Aa=b;b=a.b.Aa.toFixed(2)+"Mhz";var d=a.B.setSpeed;d&&(d.textContent=b);a.ba("target speed: "+b)}c&&a.m&&Hb(a.m)}Eb(a,a.J);a.J=0;a.b.Ba=ja();a.b.wa=0;Fb(a)}function Jb(a,b){var c=a.I.length;a.I.push([-1,b]);return c}function Kb(a,b,c){var d=-1;0<=b&&b<a.I.length&&(d=a.b.qa*a.b.pa/1E3*c,a.I[b][0]=d)}
k.ub=function(a){if(Qa(this,!0)){if(!this.j.la){Db(this);this.m&&this.m.start(this.b.Ba,Gb(this));this.j.la=!0;this.j.Pb=!0;this.L&&this.L.start();var b=this.B.run;b&&(b.textContent="Halt");this.m&&(this.m.xa(!0),a&&Hb(this.m,!0))}this.b.rb>=this.b.wa&&Fb(this,!0);this.b.Ma=0;this.b.Za=ja();this.b.ua&&(a=this.b.Za-this.b.ua,a>this.b.Vb&&(this.b.Ba+=a,this.b.Ba>this.b.Za&&(this.b.Ba=this.b.Za)));try{do{var c=this.j.Wa?1:this.b.Uc;a=c;for(b=0;b<this.I.length;b++){var d=this.I[b];0>d[0]||a>d[0]&&(a= k.ub=function(a){if(Qa(this,!0)){if(!this.j.la){Db(this);this.m&&this.m.start(this.b.Ba,Gb(this));this.j.la=!0;this.j.Pb=!0;this.L&&this.L.start();var b=this.B.run;b&&(b.textContent="Halt");this.m&&(this.m.xa(!0),a&&Hb(this.m,!0))}this.b.rb>=this.b.qa&&Fb(this,!0);this.b.Ma=0;this.b.Za=ja();this.b.wa&&(a=this.b.Za-this.b.wa,a>this.b.Vb&&(this.b.Ba+=a,this.b.Ba>this.b.Za&&(this.b.Ba=this.b.Za)));try{do{var c=this.j.Wa?1:this.b.Uc;a=c;for(var d=this.I.length-1;0<=d;d--){var e=this.I[d];0>e[0]||a>e[0]&&
d[0])}c=a;this.Zb(c);var e=this.G-this.a;a=e;for(b=0;b<this.I.length;b++){var f=this.I[b];0>f[0]||(f[0]-=a,0>=f[0]&&(f[0]=-1,f[1]()))}this.b.Ma+=e;this.J+=e;Eb(this,0,!0);a=e;this.j.Wa&&(b=!1,this.b.$a=this.b.$a+this.Sb()|0,this.b.Ca-=a,0>=this.b.Ca&&(this.b.Ca+=this.b.Ha,b=!0),0<=this.b.Ia&&this.b.Ia<=Gb(this)&&(this.b.Ha=this.b.Ia=-1,zb(this),Cb(this),b=!0),b&&this.ba(Gb(this)+" cycles: checksum="+m(this.b.$a)));this.b.Ka-=e;0>=this.b.Ka&&(this.b.Ka+=this.b.Xb,this.m&&Lb(this.m,this.b.bb++),this.b.bb> (a=e[0])}c=a;this.Zb(c);var f=this.G-this.a;a=f;for(var h=this.I.length-1;0<=h;h--){var g=this.I[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.b.Ma+=f;this.J+=f;Eb(this,0,!0);a=f;this.j.Wa&&(b=!1,this.b.$a=this.b.$a+this.Sb()|0,this.b.Ca-=a,0>=this.b.Ca&&(this.b.Ca+=this.b.Ha,b=!0),0<=this.b.Ia&&this.b.Ia<=Gb(this)&&(this.b.Ha=this.b.Ia=-1,zb(this),Cb(this),b=!0),b&&this.ba(Gb(this)+" cycles: checksum="+m(this.b.$a)));this.b.Ka-=f;0>=this.b.Ka&&(this.b.Ka+=this.b.Xb,this.m&&Lb(this.m,this.b.bb++),
this.U&&(this.b.bb=0));this.b.Ja-=e;0>=this.b.Ja&&(this.b.Ja+=this.b.Wb,this.m&&this.m.xa());this.b.La-=e;if(0>=this.b.La){this.b.La+=this.b.qb;break}}while(this.j.la)}catch(h){Cb(this);Ab(this);this.m&&this.m.stop(ja(),Gb(this));Qa(this,!1);c=h.stack||h.message;this.j.sa=!0;this.M(c);return}c=setTimeout;d=this.na;this.b.ua=ja();e=this.b.Vb;this.b.Ma&&(e=Math.round(e*this.b.Ma/this.b.qb));e-=this.b.ua-this.b.Za;if(f=this.b.ua-this.b.Ba)this.b.ta=Math.round(this.J/(10*f))/100,864E5<=f&&(this.O=0,Db(this)); this.b.bb>this.U&&(this.b.bb=0));this.b.Ja-=f;0>=this.b.Ja&&(this.b.Ja+=this.b.Wb,this.m&&this.m.xa());this.b.La-=f;if(0>=this.b.La){this.b.La+=this.b.qb;break}}while(this.j.la)}catch(l){Cb(this);Ab(this);this.m&&this.m.stop(ja(),Gb(this));Qa(this,!1);c=l.stack||l.message;this.j.ua=!0;this.M(c);return}c=setTimeout;d=this.na;this.b.wa=ja();e=this.b.Vb;this.b.Ma&&(e=Math.round(e*this.b.Ma/this.b.qb));e-=this.b.wa-this.b.Za;if(f=this.b.wa-this.b.Ba)this.b.va=Math.round(this.J/(10*f))/100,864E5<=f&&(this.O=
if(0>e||this.b.ta<this.b.Aa)e=0;this.b.rb+=this.b.Ma;this.b.ua+=e;c(d,e)}else Ab(this),this.m&&this.m.stop(ja(),Gb(this))};k.Zb=function(){return 0};function Cb(a,b){a.j.Ga&&(a.j.nb=!0);a.G-=a.a;a.a=0;Eb(a,a.J);a.J=0;if(a.j.la){a.j.la=!1;a.L&&a.L.stop();var c=a.B.run;c&&(c.textContent="Run")}a.j.Xa=b}function Ab(a){a.m&&(Lb(a.m,-1),a.m.xa(void 0))}function Mb(a){this.ea=+a.model||8080;vb.call(this,a,1E6);this.Z=Nb;yb(this);this.j.Xa=this.j.Gc=!1;this.aa=0;this.T=[];this.$=0;Ob(this)}v(Mb,vb); 0,Db(this));if(0>e||this.b.va<this.b.Aa)e=0;this.b.rb+=this.b.Ma;this.b.wa+=e;c(d,e)}else Ab(this),this.m&&this.m.stop(ja(),Gb(this))};k.Zb=function(){return 0};function Cb(a,b){a.j.Ga&&(a.j.nb=!0);a.G-=a.a;a.a=0;Eb(a,a.J);a.J=0;if(a.j.la){a.j.la=!1;a.L&&a.L.stop();var c=a.B.run;c&&(c.textContent="Run")}a.j.Xa=b}function Ab(a){a.m&&(Lb(a.m,-1),a.m.xa(void 0))}function Mb(a){this.ea=+a.model||8080;vb.call(this,a,1E6);this.Z=Nb;yb(this);this.j.Xa=this.j.Gc=!1;this.aa=0;this.T=[];this.$=0;Ob(this)}
function Pb(a,b){a.T.push(b)}k=Mb.prototype;k.reset=function(){this.j.la&&Cb(this);Ob(this);yb(this);this.j.sa=!1;this.parent.reset.call(this)};function Ob(a){a.c=0;a.f=0;a.D=0;a.h=0;a.F=0;a.i=0;a.l=0;a.w=0;F(a,a.$);Qb(a,0);a.C=0}function Rb(a,b){a.$=b;F(a,b)}k.Sb=function(){var a=this.c+this.f+this.D+this.h+this.F+this.i+this.l|0;return a=a+this.w+this.u+Sb(this)|0}; v(Mb,vb);function Pb(a,b){a.T.push(b)}k=Mb.prototype;k.reset=function(){this.j.la&&Cb(this);Ob(this);yb(this);this.j.ua=!1;this.parent.reset.call(this)};function Ob(a){a.c=0;a.f=0;a.D=0;a.h=0;a.F=0;a.i=0;a.l=0;a.w=0;F(a,a.$);Qb(a,0);a.C=0}function Rb(a,b){a.$=b;F(a,b)}k.Sb=function(){var a=this.c+this.f+this.D+this.h+this.F+this.i+this.l|0;return a=a+this.w+this.u+Sb(this)|0};
k.save=function(){var a=new G(this);I(a,0,[this.c,this.f,this.D,this.h,this.F,this.i,this.l,this.w,this.u,Sb(this)]);I(a,1,[this.C,this.O,this.b.va]);for(var b=this.o,c=0,d=[],e=0;e<b.i;e++){var f=b.b[e];if(f.ka||f.Nb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,l=0,n=[];g<f.length;){for(var w=f[g],u=g+1;u<f.length&&f[u]===w;)u++;n[l++]=u-g;n[l++]=w;g=u}if(n.length<f.length){f=n;break a}}d[h]=f}}I(a,2,d);return a.data()}; k.save=function(){var a=new G(this);I(a,0,[this.c,this.f,this.D,this.h,this.F,this.i,this.l,this.w,this.u,Sb(this)]);I(a,1,[this.C,this.O,this.b.pa]);for(var b=this.o,c=0,d=[],e=0;e<b.i;e++){var f=b.b[e];if(f.ka||f.Nb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,l=0,n=[];g<f.length;){for(var w=f[g],u=g+1;u<f.length&&f[u]===w;)u++;n[l++]=u-g;n[l++]=w;g=u}if(n.length<f.length){f=n;break a}}d[h]=f}}I(a,2,d);return a.data()};
k.restore=function(a){var b=a[0];this.c=b[0];this.f=b[1];this.D=b[2];this.h=b[3];this.F=b[4];this.i=b[5];this.l=b[6];this.w=b[7]&65535;F(this,b[8]);Qb(this,b[9]);b=a[1];this.C=b[0];this.O=b[1];Db(this,b[3]);a:{b=this.o;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.w){for(var f=0,h=Array(b.w),g=0;g<e.length-1;)for(var l=e[g++],n=e[g++];l--;)h[f++]=n;e=h}f=b.b[d];if(!f||!f.restore(e)){p("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b}; k.restore=function(a){var b=a[0];this.c=b[0];this.f=b[1];this.D=b[2];this.h=b[3];this.F=b[4];this.i=b[5];this.l=b[6];this.w=b[7]&65535;F(this,b[8]);Qb(this,b[9]);b=a[1];this.C=b[0];this.O=b[1];Db(this,b[3]);a:{b=this.o;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.w){for(var f=0,h=Array(b.w),g=0;g<e.length-1;)for(var l=e[g++],n=e[g++];l--;)h[f++]=n;e=h}f=b.b[d];if(!f||!f.restore(e)){p("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
k.S=function(a,b,c){var d=!1;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.B[b]=c;this.aa++;d=!0;break;default:d=this.parent.S.call(this,a,b,c)}return d};function Tb(a){return a.f<<8|a.D}function Ub(a,b){a.f=b>>8&255;a.D=b&255}function Vb(a){return a.h<<8|a.F}function Wb(a,b){a.h=b>>8&255;a.F=b&255}function J(a){return a.i<<8|a.l} k.S=function(a,b,c){var d=!1;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.B[b]=c;this.aa++;d=!0;break;default:d=this.parent.S.call(this,a,b,c)}return d};function Tb(a){return a.f<<8|a.D}function Ub(a,b){a.f=b>>8&255;a.D=b&255}function Vb(a){return a.h<<8|a.F}function Wb(a,b){a.h=b>>8&255;a.F=b&255}function J(a){return a.i<<8|a.l}
function K(a,b){a.i=b>>8&255;a.l=b&255}function F(a,b){a.u=b&65535}function L(a){return a.s&256?1:0}function M(a,b){a.s=a.s&255|b}function Xb(a){return Ta[a.v&255]?4:0}function Sb(a){return a.H&-214|(a.v&128?128:0)|(a.s&255?0:64)|((a.v^a.A)&16?16:0)|Xb(a)|L(a)}function Qb(a,b){a.s=a.v=a.A=0;b&1&&(a.s|=256);b&4||(a.v|=1);b&16&&(a.A|=16);b&64||(a.s|=255);b&128&&(a.v^=192);a.H=a.H&-726|b&512|2}function N(a,b){a.A=a.c^b;return a.v=(a.s=a.c+b)&255} function K(a,b){a.i=b>>8&255;a.l=b&255}function F(a,b){a.u=b&65535}function L(a){return a.s&256?1:0}function M(a,b){a.s=a.s&255|b}function Xb(a){return Ta[a.v&255]?4:0}function Sb(a){return a.H&-214|(a.v&128?128:0)|(a.s&255?0:64)|((a.v^a.A)&16?16:0)|Xb(a)|L(a)}function Qb(a,b){a.s=a.v=a.A=0;b&1&&(a.s|=256);b&4||(a.v|=1);b&16&&(a.A|=16);b&64||(a.s|=255);b&128&&(a.v^=192);a.H=a.H&-726|b&512|2}function N(a,b){a.A=a.c^b;return a.v=(a.s=a.c+b)&255}
function Yb(a,b){a.A=a.c^b;return a.v=(a.s=a.c+b+(a.s&256?1:0))&255}function Zb(a,b){a.s=a.v=a.A=a.c&b;(a.c|b)&8&&(a.A^=16);return a.s}function $b(a,b){a.A=b^255;b=a.v=b+255&255;a.s=a.s&-256|b;return b}function ac(a,b){a.A=b;b=a.v=b+1&255;a.s=a.s&-256|b;return b}function bc(a,b){return a.v=a.s=a.A=a.c|b}function O(a,b){b^=255;a.A=a.c^b;return a.v=(a.s=a.c+b+1^256)&255}function cc(a,b){b^=255;a.A=a.c^b;return a.v=(a.s=a.c+b+(a.s&256?0:1)^256)&255}function dc(a,b){return a.v=a.s=a.A=a.c^b}k.K=function(a){return this.o.K(a)}; function Yb(a,b){a.A=a.c^b;return a.v=(a.s=a.c+b+(a.s&256?1:0))&255}function Zb(a,b){a.s=a.v=a.A=a.c&b;(a.c|b)&8&&(a.A^=16);return a.s}function $b(a,b){a.A=b^255;b=a.v=b+255&255;a.s=a.s&-256|b;return b}function ac(a,b){a.A=b;b=a.v=b+1&255;a.s=a.s&-256|b;return b}function bc(a,b){return a.v=a.s=a.A=a.c|b}function O(a,b){b^=255;a.A=a.c^b;return a.v=(a.s=a.c+b+1^256)&255}function cc(a,b){b^=255;a.A=a.c^b;return a.v=(a.s=a.c+b+(a.s&256?0:1)^256)&255}function dc(a,b){return a.v=a.s=a.A=a.c^b}k.K=function(a){return this.o.K(a)};
k.W=function(a,b){this.o.W(a,b)};function P(a){var b=a.K(a.u);F(a,a.u+1);return b}function Q(a){var b=bb(a.o,a.u);F(a,a.u+2);return b}function S(a){var b=bb(a.o,a.w);a.w=a.w+2&65535;return b}function T(a,b){a.w=a.w-2&65535;db(a.o,a.w,b)}function ec(a){if(a.a&&a.C&255&&a.H&512){for(var b=0;8>b&&!(a.C&1<<b);b++);a.C&=~(0>b?255:1<<b);a.H&=-513;a.C&=-257;a.Z[199|b<<3].call(a)}return a.C&256?(a.G-=a.a,a.a=0,!1):!0}function fc(a,b){a.C|=1<<b;a.H&512&&(a.G-=a.a,a.a=0)} k.W=function(a,b){this.o.W(a,b)};function P(a){var b=a.K(a.u);F(a,a.u+1);return b}function Q(a){var b=bb(a.o,a.u);F(a,a.u+2);return b}function S(a){var b=bb(a.o,a.w);a.w=a.w+2&65535;return b}function T(a,b){a.w=a.w-2&65535;db(a.o,a.w,b)}function ec(a){if(a.a&&a.C&255&&a.H&512){for(var b=0;8>b&&!(a.C&1<<b);b++);a.C&=~(0>b?255:1<<b);a.H&=-513;a.C&=-257;a.Z[199|b<<3].call(a)}return a.C&256?(a.G-=a.a,a.a=0,!1):!0}function fc(a,b){a.C|=1<<b;a.H&512&&(a.G-=a.a,a.a=0)}
function U(a,b,c,d){d=d||2;a.B[b]&&(void 0===c&&(a.j.sa=!0,a.M("Value for "+b+" is invalid"),Cb(a)),c=!a.j.la||a.j.Ob?m(c,d):"--------".substr(0,d),a.B[b].textContent!=c&&(a.B[b].textContent=c))} function U(a,b,c,d){d=d||2;a.B[b]&&(void 0===c&&(a.j.ua=!0,a.M("Value for "+b+" is invalid"),Cb(a)),c=!a.j.la||a.j.Ob?m(c,d):"--------".substr(0,d),a.B[b].textContent!=c&&(a.B[b].textContent=c))}
k.xa=function(a){this.aa&&(a||!this.j.la||this.j.Ob)&&(U(this,"A",this.c),U(this,"B",this.f),U(this,"C",this.D),U(this,"BC",Tb(this),4),U(this,"D",this.h),U(this,"E",this.F),U(this,"DE",Vb(this),4),U(this,"H",this.i),U(this,"L",this.l),U(this,"HL",J(this),4),U(this,"SP",this.w,4),U(this,"PC",this.u,4),a=Sb(this),U(this,"PS",a,4),U(this,"IF",a&512?1:0,1),U(this,"SF",a&128?1:0,1),U(this,"ZF",a&64?1:0,1),U(this,"AF",a&16?1:0,1),U(this,"PF",a&4?1:0,1),U(this,"CF",a&1?1:0,1));if(a=this.B.speed)a.textContent= k.xa=function(a){this.aa&&(a||!this.j.la||this.j.Ob)&&(U(this,"A",this.c),U(this,"B",this.f),U(this,"C",this.D),U(this,"BC",Tb(this),4),U(this,"D",this.h),U(this,"E",this.F),U(this,"DE",Vb(this),4),U(this,"H",this.i),U(this,"L",this.l),U(this,"HL",J(this),4),U(this,"SP",this.w,4),U(this,"PC",this.u,4),a=Sb(this),U(this,"PS",a,4),U(this,"IF",a&512?1:0,1),U(this,"SF",a&128?1:0,1),U(this,"ZF",a&64?1:0,1),U(this,"AF",a&16?1:0,1),U(this,"PF",a&4?1:0,1),U(this,"CF",a&1?1:0,1));if(a=this.B.speed)a.textContent=
this.j.la&&this.b.ta?this.b.ta.toFixed(2)+"Mhz":"Stopped"};k.Zb=function(a){this.j.Xa=!0;this.j.Gc=!1;this.j.Pb=!1;this.G=this.a=a;if(ec(this)){do this.Z[P(this)].call(this);while(0<this.a)}return this.j.Xa?this.G-this.a:void 0===this.j.Xa?0:-1};ya(function(){for(var a=y(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new Mb(d);Pa(d,c)}});function gc(){this.a-=4}function hc(){F(this,Q(this));this.a-=10}function ic(){F(this,S(this));this.a-=10} this.j.la&&this.b.va?this.b.va.toFixed(2)+"Mhz":"Stopped"};k.Zb=function(a){this.j.Xa=!0;this.j.Gc=!1;this.j.Pb=!1;this.G=this.a=a;if(ec(this)){do this.Z[P(this)].call(this);while(0<this.a)}return this.j.Xa?this.G-this.a:void 0===this.j.Xa?0:-1};ya(function(){for(var a=y(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new Mb(d);Pa(d,c)}});function gc(){this.a-=4}function hc(){F(this,Q(this));this.a-=10}function ic(){F(this,S(this));this.a-=10}
function jc(){var a=Q(this);T(this,this.u);F(this,a);this.a-=17} function jc(){var a=Q(this);T(this,this.u);F(this,a);this.a-=17}
var Nb=[gc,function(){Ub(this,Q(this));this.a-=10},function(){this.W(Tb(this),this.c);this.a-=7},function(){Ub(this,Tb(this)+1);this.a-=5},function(){this.f=ac(this,this.f);this.a-=5},function(){this.f=$b(this,this.f);this.a-=5},function(){this.f=P(this);this.a-=7},function(){var a=this.c<<1;this.c=a&255|a>>8;M(this,a&256);this.a-=4},gc,function(){var a;K(this,a=J(this)+Tb(this));M(this,a>>8&256);this.a-=10},function(){this.c=this.K(Tb(this));this.a-=7},function(){Ub(this,Tb(this)-1);this.a-=5},function(){this.D= var Nb=[gc,function(){Ub(this,Q(this));this.a-=10},function(){this.W(Tb(this),this.c);this.a-=7},function(){Ub(this,Tb(this)+1);this.a-=5},function(){this.f=ac(this,this.f);this.a-=5},function(){this.f=$b(this,this.f);this.a-=5},function(){this.f=P(this);this.a-=7},function(){var a=this.c<<1;this.c=a&255|a>>8;M(this,a&256);this.a-=4},gc,function(){var a;K(this,a=J(this)+Tb(this));M(this,a>>8&256);this.a-=10},function(){this.c=this.K(Tb(this));this.a-=7},function(){Ub(this,Tb(this)-1);this.a-=5},function(){this.D=
ac(this,this.D);this.a-=5},function(){this.D=$b(this,this.D);this.a-=5},function(){this.D=P(this);this.a-=7},function(){var a=this.c<<8&256;this.c=(a|this.c)>>1;M(this,a);this.a-=4},gc,function(){Wb(this,Q(this));this.a-=10},function(){this.W(Vb(this),this.c);this.a-=7},function(){Wb(this,Vb(this)+1);this.a-=5},function(){this.h=ac(this,this.h);this.a-=5},function(){this.h=$b(this,this.h);this.a-=5},function(){this.h=P(this);this.a-=7},function(){var a=this.c<<1;this.c=a&255|L(this);M(this,a&256); ac(this,this.D);this.a-=5},function(){this.D=$b(this,this.D);this.a-=5},function(){this.D=P(this);this.a-=7},function(){var a=this.c<<8&256;this.c=(a|this.c)>>1;M(this,a);this.a-=4},gc,function(){Wb(this,Q(this));this.a-=10},function(){this.W(Vb(this),this.c);this.a-=7},function(){Wb(this,Vb(this)+1);this.a-=5},function(){this.h=ac(this,this.h);this.a-=5},function(){this.h=$b(this,this.h);this.a-=5},function(){this.h=P(this);this.a-=7},function(){var a=this.c<<1;this.c=a&255|L(this);M(this,a&256);
@ -76,33 +76,34 @@ function(){var a=S(this);T(this,J(this));K(this,a);this.a-=18},function(){var a=
Q(this);Xb(this)&&(T(this,this.u),F(this,a),this.a-=6);this.a-=11},jc,function(){this.c=dc(this,P(this));this.a-=7},function(){T(this,this.u);F(this,40);this.a-=11},function(){this.v&128||(F(this,S(this)),this.a-=6);this.a-=5},function(){var a=S(this);Qb(this,a&255|this.H&-256);this.c=a>>8;this.a-=10},function(){var a=Q(this);this.v&128||F(this,a);this.a-=10},function(){this.H&=-513;this.a-=4},function(){var a=Q(this);this.v&128||(T(this,this.u),F(this,a),this.a-=6);this.a-=11},function(){T(this, Q(this);Xb(this)&&(T(this,this.u),F(this,a),this.a-=6);this.a-=11},jc,function(){this.c=dc(this,P(this));this.a-=7},function(){T(this,this.u);F(this,40);this.a-=11},function(){this.v&128||(F(this,S(this)),this.a-=6);this.a-=5},function(){var a=S(this);Qb(this,a&255|this.H&-256);this.c=a>>8;this.a-=10},function(){var a=Q(this);this.v&128||F(this,a);this.a-=10},function(){this.H&=-513;this.a-=4},function(){var a=Q(this);this.v&128||(T(this,this.u),F(this,a),this.a-=6);this.a-=11},function(){T(this,
Sb(this)&255|this.c<<8);this.a-=11},function(){this.c=bc(this,P(this));this.a-=7},function(){T(this,this.u);F(this,48);this.a-=11},function(){this.v&128&&(F(this,S(this)),this.a-=6);this.a-=5},function(){this.w=J(this)&65535;this.a-=5},function(){var a=Q(this);this.v&128&&F(this,a);this.a-=10},function(){this.H|=512;this.a-=4;ec(this)},function(){var a=Q(this);this.v&128&&(T(this,this.u),F(this,a),this.a-=6);this.a-=11},jc,function(){O(this,P(this));this.a-=7},function(){T(this,this.u);F(this,56); Sb(this)&255|this.c<<8);this.a-=11},function(){this.c=bc(this,P(this));this.a-=7},function(){T(this,this.u);F(this,48);this.a-=11},function(){this.v&128&&(F(this,S(this)),this.a-=6);this.a-=5},function(){this.w=J(this)&65535;this.a-=5},function(){var a=Q(this);this.v&128&&F(this,a);this.a-=10},function(){this.H|=512;this.a-=4;ec(this)},function(){var a=Q(this);this.v&128&&(T(this,this.u),F(this,a),this.a-=6);this.a-=11},jc,function(){O(this,P(this));this.a-=7},function(){T(this,this.u);F(this,56);
this.a-=11}];function W(a){q.call(this,"ChipSet",a,W);var b=a.model;b&&!kc[b]&&Aa("Unrecognized ChipSet model: "+b);this.c=kc[b]||{};a.sound&&(this.L=null,window&&(this.L=window.AudioContext||window.webkitAudioContext),this.L&&new this.L);C(this)}v(W); this.a-=11}];function W(a){q.call(this,"ChipSet",a,W);var b=a.model;b&&!kc[b]&&Aa("Unrecognized ChipSet model: "+b);this.c=kc[b]||{};a.sound&&(this.L=null,window&&(this.L=window.AudioContext||window.webkitAudioContext),this.L&&new this.L);C(this)}v(W);
var X={X:1978.1,Dc:{Y:0,qd:1,ud:16,Bd:32,Kd:64,Jd:128,Da:14},ra:{Y:1,ec:1,yc:2,uc:4,vc:16,wc:32,xc:64,Da:8},Ec:{Y:2,pd:3,Td:4,rd:8,Fd:16,Gd:32,Hd:64,sd:128,Da:0},Od:{Y:3},Md:{Y:2,Cd:7},Qd:{Y:3,Ud:1,Pd:2,Id:4,zd:8,td:16,md:32},Nd:{Y:4},Rd:{Y:5,vd:1,wd:2,xd:4,yd:8,Vd:16}},Y={X:100,ia:{Y:66,Fb:1,sc:2,tc:4,Ed:8,Dd:16,Db:32,Cb:64,zb:128},dc:{Y:66,INIT:0},pa:{Y:194,od:0,yb:16,zc:32,Eb:48,ic:0,jc:32},Qa:{Y:162,Ld:0,lc:0,hc:0,kc:0,gc:0},ja:{Ad:{Y:98},ya:{bc:0,ac:1,Bc:2,Fc:4,fc:5,Ac:6,Sd:7},Ua:16383}},kc= var X={X:1978.1,Dc:{Y:0,qd:1,ud:16,Bd:32,Kd:64,Jd:128,Da:14},ta:{Y:1,ec:1,yc:2,uc:4,vc:16,wc:32,xc:64,Da:8},Ec:{Y:2,pd:3,Td:4,rd:8,Fd:16,Gd:32,Hd:64,sd:128,Da:0},Od:{Y:3},Md:{Y:2,Cd:7},Qd:{Y:3,Ud:1,Pd:2,Id:4,zd:8,td:16,md:32},Nd:{Y:4},Rd:{Y:5,vd:1,wd:2,xd:4,yd:8,Vd:16}},Y={X:100,ia:{Y:66,Fb:1,sc:2,tc:4,Ed:8,Dd:16,Db:32,Cb:64,zb:128},dc:{Y:66,INIT:0},ra:{Y:194,od:0,yb:16,zc:32,Eb:48,ic:0,jc:32},Qa:{Y:162,Ld:0,lc:0,hc:0,kc:0,gc:0},ja:{Ad:{Y:98},ya:{bc:0,ac:1,Bc:2,Fc:4,fc:5,Ac:6,Sd:7},Ua:16383}},kc=
{SI1978:X,VT100:Y};W.prototype.S=function(){return!1};W.prototype.ma=function(a,b,c,d){this.o=b;this.a=c;this.N=d;this.m=a;this.l=D(a,"Keyboard");this.ea=D(a,"SerialPort");this.video=D(a,"Video");fb(b,this,this.c.cb);gb(b,this,this.c.eb)};W.prototype.da=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};W.prototype.ha=function(a){return a?this.save():!0};X.INIT=[[X.Dc.Da,X.ra.Da,X.Ec.Da,0,0,0,0]]; {SI1978:X,VT100:Y};W.prototype.S=function(){return!1};W.prototype.ma=function(a,b,c,d){this.o=b;this.a=c;this.N=d;this.m=a;this.l=D(a,"Keyboard");this.ea=D(a,"SerialPort");this.video=D(a,"Video");fb(b,this,this.c.cb);gb(b,this,this.c.eb)};W.prototype.da=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};W.prototype.ha=function(a){return a?this.save():!0};X.INIT=[[X.Dc.Da,X.ta.Da,X.Ec.Da,0,0,0,0]];
Y.INIT=[[Y.dc.INIT,Y.ia.sc|Y.ia.tc],[Y.pa.ic,Y.pa.jc],[Y.Qa.lc,Y.Qa.hc,Y.Qa.kc,Y.Qa.gc],[0,0,0,0,[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,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,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], Y.INIT=[[Y.dc.INIT,Y.ia.sc|Y.ia.tc],[Y.ra.ic,Y.ra.jc],[Y.Qa.lc,Y.Qa.hc,Y.Qa.kc,Y.Qa.gc],[0,0,0,0,[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,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,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],
[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]]];k=W.prototype;k.reset=function(){this.c.INIT&&!this.restore(this.c.INIT)&&this.M("reset error")}; [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]]];k=W.prototype;k.reset=function(){this.c.INIT&&!this.restore(this.c.INIT)&&this.M("reset error")};
k.save=function(){var a=new G(this);switch(this.c.X){case X.X:I(a,0,[this.$,this.h,this.aa,this.C,this.I,this.U,this.Z]);break;case Y.X:I(a,0,[this.J,this.v]),I(a,1,[this.s,this.u]),I(a,2,[this.f,this.G,this.T,this.O]),I(a,3,[this.A,this.b,this.w,this.H,this.i])}return a.data()}; k.save=function(){var a=new G(this);switch(this.c.X){case X.X:I(a,0,[this.$,this.h,this.aa,this.C,this.I,this.U,this.Z]);break;case Y.X:I(a,0,[this.J,this.v]),I(a,1,[this.s,this.u]),I(a,2,[this.f,this.G,this.T,this.O]),I(a,3,[this.A,this.b,this.w,this.H,this.i])}return a.data()};
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.c.X){case X.X:return this.$=b[0],this.h=b[1],this.aa=b[2],this.C=b[3],this.I=b[4],this.U=b[5],this.Z=b[6],!0;case Y.X:return this.J=b[0],this.v=b[1],b=a[1],this.s=b[0],this.u=b[1],b=a[2],this.f=b[0],this.G=b[1],this.T=b[2],this.O=b[3],b=a[3],this.A=b[0],this.b=b[1],this.w=b[2],this.H=b[3],this.i=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.Lc=function(){return this.$};k.Mc=function(){return this.h};k.Nc=function(){return this.aa}; k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.c.X){case X.X:return this.$=b[0],this.h=b[1],this.aa=b[2],this.C=b[3],this.I=b[4],this.U=b[5],this.Z=b[6],!0;case Y.X:return this.J=b[0],this.v=b[1],b=a[1],this.s=b[0],this.u=b[1],b=a[2],this.f=b[0],this.G=b[1],this.T=b[2],this.O=b[3],b=a[3],this.A=b[0],this.b=b[1],this.w=b[2],this.H=b[3],this.i=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.Lc=function(){return this.$};k.Mc=function(){return this.h};k.Nc=function(){return this.aa};
k.Kc=function(){return this.C>>8-this.I&255};k.$c=function(a,b){this.I=b};k.bd=function(a,b){this.U=b};k.ad=function(a,b){this.C=b<<8|this.C>>8};k.cd=function(a,b){this.Z=b};k.dd=function(){};function lc(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.Kc=function(){return this.C>>8-this.I&255};k.$c=function(a,b){this.I=b};k.bd=function(a,b){this.U=b};k.ad=function(a,b){this.C=b<<8|this.C>>8};k.cd=function(a,b){this.Z=b};k.dd=function(){};function lc(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.Oc=function(){var a=this.v,a=a&~Y.ia.Cb;if((Gb(this.a)&64)<<1&&(a|=Y.ia.Cb,a!=this.v)){var b,c;b=this.w&1;switch(this.w>>1&7){case Y.ja.ya.ac:this.A=this.A<<1|b;break;case Y.ja.ya.fc:b=lc(this);this.i[b]=Y.ja.Ua;break;case Y.ja.ya.bc:this.b=this.b<<1|b;break;case Y.ja.ya.Fc:b=lc(this);c=this.b&Y.ja.Ua;this.i[b]=c;break;case Y.ja.ya.Ac:b=lc(this);c=this.i[b];null==c&&(c=Y.ja.Ua);this.b=c;break;case Y.ja.ya.Bc:this.b<<=1,this.H=this.b&Y.ja.Ua+1}}a&=~Y.ia.Db;this.H&&(a|=Y.ia.Db);a&=~Y.ia.zb;if(b=this.l)b= k.Oc=function(){var a=this.v,a=a&~Y.ia.Cb;if((Gb(this.a)&64)<<1&&(a|=Y.ia.Cb,a!=this.v)){var b,c;b=this.w&1;switch(this.w>>1&7){case Y.ja.ya.ac:this.A=this.A<<1|b;break;case Y.ja.ya.fc:b=lc(this);this.i[b]=Y.ja.Ua;break;case Y.ja.ya.bc:this.b=this.b<<1|b;break;case Y.ja.ya.Fc:b=lc(this);c=this.b&Y.ja.Ua;this.i[b]=c;break;case Y.ja.ya.Ac:b=lc(this);c=this.i[b];null==c&&(c=Y.ja.Ua);this.b=c;break;case Y.ja.ya.Bc:this.b<<=1,this.H=this.b&Y.ja.Ua+1}}a&=~Y.ia.Db;this.H&&(a|=Y.ia.Db);a&=~Y.ia.zb;if(b=this.l){b=
this.l,b.f&&Gb(b.a)>=b.l+3520&&(b.f=!1),b=!b.f;b&&(a|=Y.ia.zb);a&=~Y.ia.Fb;this.ea&&this.ea.ca&1&&(a|=Y.ia.Fb);return this.v=a};k.ed=function(a,b){this.J=b};k.hd=function(a,b){this.w=b};k.gd=function(a,b){var c=b&3;switch(b>>2&3){case 0:this.f=this.f&-4|c;break;case 1:this.f=this.f&-13|c<<2;if(this.video){var c=this.video,d=this.f;c.hb!==d&&((c.hb=d)?mc(c,-1):c.jb=!0)}break;case 2:switch(c){case 0:this.G=~this.G;break;case 2:case 3:this.T=3-c}break;case 3:this.O=c}}; this.l;if(c=b.f)c=b.a,c=Gb(b.a)>=b.l+c.b.qa*c.b.pa/1E3*1.2731488;c&&(b.f=!1);b=!b.f}b&&(a|=Y.ia.zb);a&=~Y.ia.Fb;this.ea&&this.ea.ca&1&&(a|=Y.ia.Fb);return this.v=a};k.ed=function(a,b){this.J=b};k.hd=function(a,b){this.w=b};
k.fd=function(a,b){if(b&Y.pa.zc)b&=Y.pa.Eb,this.u!=b&&(this.u=b,this.video&&(this.video.sb=this.u==Y.pa.Eb?50:60));else if(b&=Y.pa.yb,this.s!=b&&(this.s=b,this.video)){var c=this.video,d=this.s==Y.pa.yb?132:80;c.H=d;c.R=c.Gb;80<d&&c.R--;nc(c)&&oc(c)}};X.cb={0:W.prototype.Lc,1:W.prototype.Mc,2:W.prototype.Nc,3:W.prototype.Kc};X.eb={2:W.prototype.$c,3:W.prototype.bd,4:W.prototype.ad,5:W.prototype.cd,6:W.prototype.dd};Y.cb={66:W.prototype.Oc}; k.gd=function(a,b){var c=b&3;switch(b>>2&3){case 0:this.f=this.f&-4|c;break;case 1:this.f=this.f&-13|c<<2;if(this.video){var c=this.video,d=this.f;c.hb!==d&&((c.hb=d)?mc(c,-1):c.jb=!0)}break;case 2:switch(c){case 0:this.G=~this.G;break;case 2:case 3:this.T=3-c}break;case 3:this.O=c}};
k.fd=function(a,b){if(b&Y.ra.zc)b&=Y.ra.Eb,this.u!=b&&(this.u=b,this.video&&(this.video.sb=this.u==Y.ra.Eb?50:60));else if(b&=Y.ra.yb,this.s!=b&&(this.s=b,this.video)){var c=this.video,d=this.s==Y.ra.yb?132:80;c.H=d;c.R=c.Gb;80<d&&c.R--;nc(c)&&oc(c)}};X.cb={0:W.prototype.Lc,1:W.prototype.Mc,2:W.prototype.Nc,3:W.prototype.Kc};X.eb={2:W.prototype.$c,3:W.prototype.bd,4:W.prototype.ad,5:W.prototype.cd,6:W.prototype.dd};Y.cb={66:W.prototype.Oc};
Y.eb={66:W.prototype.ed,98:W.prototype.hd,162:W.prototype.gd,194:W.prototype.fd};ya(function(){for(var a=y(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new W(d);Pa(d,c)}}); Y.eb={66:W.prototype.ed,98:W.prototype.hd,162:W.prototype.gd,194:W.prototype.fd};ya(function(){for(var a=y(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new W(d);Pa(d,c)}});
function pc(a){q.call(this,"ROM",a,pc);this.b=null;this.i=a.addr;this.c=a.size;this.l=a.writable;this.m=a.alias;this.f=a.file;this.s=ba(this.f);if(this.f){a=this.f;var b=ca(this.s);"json"!=b&&"hex"!=b&&(a=ea()+"/api/v1/dump?file="+this.f+"&format=bytes&decimal=true");var c=this;ma(a,null,!0,function(a,b,f){qc(c,a,b,f)})}}v(pc);var rc=[0,5];pc.prototype.ma=function(a,b,c,d){this.o=b;this.a=c;this.N=d;sc(this)}; function pc(a){q.call(this,"ROM",a,pc);this.b=null;this.i=a.addr;this.c=a.size;this.l=a.writable;this.m=a.alias;this.f=a.file;this.s=ba(this.f);if(this.f){a=this.f;var b=ca(this.s);"json"!=b&&"hex"!=b&&(a=ea()+"/api/v1/dump?file="+this.f+"&format=bytes&decimal=true");var c=this;ma(a,null,!0,function(a,b,f){qc(c,a,b,f)})}}v(pc);var rc=[0,5];pc.prototype.ma=function(a,b,c,d){this.o=b;this.a=c;this.N=d;sc(this)};
pc.prototype.da=function(){this.h&&(this.N&&this.N.a(this.id,this.i,this.c,this.h),delete this.h);return!0};pc.prototype.ha=function(){return!0}; pc.prototype.da=function(){this.h&&(this.N&&this.N.a(this.id,this.i,this.c,this.h),delete this.h);return!0};pc.prototype.ha=function(){return!0};
function qc(a,b,c,d){if(d)a.M("Unable to load system ROM (error "+d+": "+b+")");else{La(a.Sa,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.b=f;else if(h)for(a.b=Array(4*h.length),d=c=0;c<h.length;c++)a.b[d++]=h[c]&255,a.b[d++]=h[c]>>8&255,a.b[d++]=h[c]>>16&255,a.b[d++]=h[c]>>24&255;else a.b=e;a.h=e.symbols;if(!a.b.length){p("Empty ROM: "+b);return}if(1==a.b.length){p(a.b[0]);return}}catch(g){a.M("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm, function qc(a,b,c,d){if(d)a.M("Unable to load system ROM (error "+d+": "+b+")");else{La(a.Sa,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.b=f;else if(h)for(a.b=Array(4*h.length),d=c=0;c<h.length;c++)a.b[d++]=h[c]&255,a.b[d++]=h[c]>>8&255,a.b[d++]=h[c]>>16&255,a.b[d++]=h[c]>>24&255;else a.b=e;a.h=e.symbols;if(!a.b.length){p("Empty ROM: "+b);return}if(1==a.b.length){p(a.b[0]);return}}catch(g){a.M("ROM data error: "+g.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]=aa(b[e]);sc(a)}} " ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=aa(b[e]);sc(a)}}
function sc(a){if(!Ra(a))if(!a.f)C(a);else if(a.b&&a.o){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size (0x"+m(a.b.length)+") does not match specified size ("+("0x"+m(a.c))+")";a.j.sa=!0;a.M(b)}else if(tc(a,a.i)){b=[];"number"==typeof a.m?b.push(a.m):null!=a.m&&a.m.length&&(b=a.m);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.o,h=d.c,g=[],l=d.i>>>f.c;0<h&&l<f.b.length;)g.push(f.b[l++]),h-=f.o;f=d.o;d=d.c;h=0;for(e>>>=f.c;0<d&&e<f.b.length;){l=g[h++];if(!l)break;f.b[e++]=l;d-=f.o}}delete a.b}C(a)}} function sc(a){if(!Ra(a))if(!a.f)C(a);else if(a.b&&a.o){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size (0x"+m(a.b.length)+") does not match specified size ("+("0x"+m(a.c))+")";a.j.ua=!0;a.M(b)}else if(tc(a,a.i)){b=[];"number"==typeof a.m?b.push(a.m):null!=a.m&&a.m.length&&(b=a.m);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.o,h=d.c,g=[],l=d.i>>>f.c;0<h&&l<f.b.length;)g.push(f.b[l++]),h-=f.o;f=d.o;d=d.c;h=0;for(e>>>=f.c;0<d&&e<f.b.length;){l=g[h++];if(!l)break;f.b[e++]=l;d-=f.o}}delete a.b}C(a)}}
function tc(a,b){if(Ya(a.o,b,a.c,a.l?1:mb)){var c;for(c=0;c<a.b.length;c++)cb(a.o,b+c,a.b[c]);if(a.l&&256==b){for(c=0;c<rc.length;c++)cb(a.o,rc[c],118);Pb(a.a,function(a){return function(b){if(0<=rc.indexOf(b)){var c=!1,h=a.a,g=a.N;if(5==b)switch(c=!0,h.D){case 2:uc(a,String.fromCharCode(h.F));break;case 9:for(var l=Vb(h),n="",w=255;w--;){var u=a.a.K(l++);if(36==u)break;n+=String.fromCharCode(u)}uc(a,n);break;default:c=!1}c?ic.call(h):g&&(a.ba("\nCP/M vector 0x"+m(b,4)),F(h,b),Cb(g));b=!0}else b= function tc(a,b){if(Ya(a.o,b,a.c,a.l?1:mb)){var c;for(c=0;c<a.b.length;c++)cb(a.o,b+c,a.b[c]);if(a.l&&256==b){for(c=0;c<rc.length;c++)cb(a.o,rc[c],118);Pb(a.a,function(a){return function(b){if(0<=rc.indexOf(b)){var c=!1,h=a.a,g=a.N;if(5==b)switch(c=!0,h.D){case 2:uc(a,String.fromCharCode(h.F));break;case 9:for(var l=Vb(h),n="",w=255;w--;){var u=a.a.K(l++);if(36==u)break;n+=String.fromCharCode(u)}uc(a,n);break;default:c=!1}c?ic.call(h):g&&(a.ba("\nCP/M vector 0x"+m(b,4)),F(h,b),Cb(g));b=!0}else b=
!1;return b}}(a));Rb(a.a,b)}return!0}return!1}function uc(a,b){b=b.replace(/\r/g,"");a.oa&&(a.oa.value+=b,a.oa.scrollTop=a.oa.scrollHeight)}ya(function(){for(var a=y(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new pc(d);Pa(d,c)}});function vc(a){q.call(this,"RAM",a,vc);this.m=a.addr;this.c=a.size;this.b=!1}v(vc);k=vc.prototype;k.ma=function(a,b,c,d){this.o=b;this.a=c;this.N=d;C(this)};k.da=function(a,b){b||this.reset();return!0};k.ha=function(a){return a?this.save():!0}; !1;return b}}(a));Rb(a.a,b)}return!0}return!1}function uc(a,b){b=b.replace(/\r/g,"");a.oa&&(a.oa.value+=b,a.oa.scrollTop=a.oa.scrollHeight)}ya(function(){for(var a=y(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new pc(d);Pa(d,c)}});function vc(a){q.call(this,"RAM",a,vc);this.m=a.addr;this.c=a.size;this.b=!1}v(vc);k=vc.prototype;k.ma=function(a,b,c,d){this.o=b;this.a=c;this.N=d;C(this)};k.da=function(a,b){b||this.reset();return!0};k.ha=function(a){return a?this.save():!0};
k.reset=function(){!this.b&&this.c&&Ya(this.o,this.m,this.c,1)&&(this.b=!0);this.b||p("No RAM allocated")};k.save=function(){return null};k.restore=function(){return!0};ya(function(){for(var a=y(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new vc(d);Pa(d,c)}});function wc(a){q.call(this,"Keyboard",a,wc);(a=a.model)&&!xc[a]&&Aa("Unrecognized Keyboard8080 model: "+a);this.b=xc[a]||{};this.reset();C(this)}v(wc); k.reset=function(){!this.b&&this.c&&Ya(this.o,this.m,this.c,1)&&(this.b=!0);this.b||p("No RAM allocated")};k.save=function(){return null};k.restore=function(){return!0};ya(function(){for(var a=y(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new vc(d);Pa(d,c)}});function wc(a){q.call(this,"Keyboard",a,wc);(a=a.model)&&!xc[a]&&Aa("Unrecognized Keyboard8080 model: "+a);this.b=xc[a]||{};this.reset();C(this)}v(wc);
var yc={X:1978.1,g:{},xb:{65:37,68:39,76:32},Ea:{},qa:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},Z={X:100,g:{},xb:{},Ea:{},qa:{setup:120},cc:{Y:130,INIT:127},fa:{Y:130,qc:1,pc:2,oc:4,nc:8,rc:16,Bb:32,Ab:63,Cc:64,nd:128,INIT:0},mc:127};Z.g[46]=3;Z.g[80]=5;Z.g[79]=6;Z.g[89]=7;Z.g[84]=8;Z.g[87]=9;Z.g[81]=10;Z.g[39]=16;Z.g[221]=20;Z.g[219]=21;Z.g[73]=22;Z.g[85]=23;Z.g[82]=24;Z.g[69]=25;Z.g[49]=26;Z.g[37]=32;Z.g[40]=34;Z.g[117]=35;Z.g[19]=35;Z.g[192]=36;Z.g[189]=37;Z.g[57]=38;Z.g[55]=39; var yc={X:1978.1,g:{},xb:{65:37,68:39,76:32},Ea:{},sa:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},Z={X:100,g:{},xb:{},Ea:{},sa:{setup:120},cc:{Y:130,INIT:127},fa:{Y:130,qc:1,pc:2,oc:4,nc:8,rc:16,Bb:32,Ab:63,Cc:64,nd:128,INIT:0},mc:127};Z.g[46]=3;Z.g[80]=5;Z.g[79]=6;Z.g[89]=7;Z.g[84]=8;Z.g[87]=9;Z.g[81]=10;Z.g[39]=16;Z.g[221]=20;Z.g[219]=21;Z.g[73]=22;Z.g[85]=23;Z.g[82]=24;Z.g[69]=25;Z.g[49]=26;Z.g[37]=32;Z.g[40]=34;Z.g[117]=35;Z.g[19]=35;Z.g[192]=36;Z.g[189]=37;Z.g[57]=38;Z.g[55]=39;
Z.g[52]=40;Z.g[51]=41;Z.g[27]=42;Z.g[38]=48;Z.g[114]=49;Z.g[112]=50;Z.g[8]=51;Z.g[187]=52;Z.g[48]=53;Z.g[56]=54;Z.g[54]=55;Z.g[53]=56;Z.g[50]=57;Z.g[9]=58;Z.g[103]=64;Z.g[115]=65;Z.g[113]=66;Z.g[96]=67;Z.g[118]=68;Z.g[220]=69;Z.g[76]=70;Z.g[75]=71;Z.g[71]=72;Z.g[70]=73;Z.g[65]=74;Z.g[104]=80;Z.g[2013]=81;Z.g[98]=82;Z.g[97]=83;Z.g[222]=85;Z.g[186]=86;Z.g[74]=87;Z.g[72]=88;Z.g[68]=89;Z.g[83]=90;Z.g[110]=96;Z.g[116]=97;Z.g[101]=98;Z.g[100]=99;Z.g[13]=100;Z.g[190]=101;Z.g[188]=102;Z.g[78]=103; Z.g[52]=40;Z.g[51]=41;Z.g[27]=42;Z.g[38]=48;Z.g[114]=49;Z.g[112]=50;Z.g[8]=51;Z.g[187]=52;Z.g[48]=53;Z.g[56]=54;Z.g[54]=55;Z.g[53]=56;Z.g[50]=57;Z.g[9]=58;Z.g[103]=64;Z.g[115]=65;Z.g[113]=66;Z.g[96]=67;Z.g[118]=68;Z.g[220]=69;Z.g[76]=70;Z.g[75]=71;Z.g[71]=72;Z.g[70]=73;Z.g[65]=74;Z.g[104]=80;Z.g[2013]=81;Z.g[98]=82;Z.g[97]=83;Z.g[222]=85;Z.g[186]=86;Z.g[74]=87;Z.g[72]=88;Z.g[68]=89;Z.g[83]=90;Z.g[110]=96;Z.g[116]=97;Z.g[101]=98;Z.g[100]=99;Z.g[13]=100;Z.g[190]=101;Z.g[188]=102;Z.g[78]=103;
Z.g[66]=104;Z.g[88]=105;Z.g[119]=106;Z.g[105]=112;Z.g[99]=113;Z.g[102]=114;Z.g[109]=115;Z.g[191]=117;Z.g[77]=118;Z.g[32]=119;Z.g[86]=120;Z.g[67]=121;Z.g[90]=122;Z.g[120]=123;Z.g[17]=124;Z.g[16]=125;Z.g[20]=126;Z.Ea={l4:Z.fa.qc,l3:Z.fa.pc,l2:Z.fa.oc,l1:Z.fa.nc,locked:Z.fa.rc,local:Z.fa.Bb,online:~Z.fa.Bb};var xc={SI1978:yc,VT100:Z}; Z.g[66]=104;Z.g[88]=105;Z.g[119]=106;Z.g[105]=112;Z.g[99]=113;Z.g[102]=114;Z.g[109]=115;Z.g[191]=117;Z.g[77]=118;Z.g[32]=119;Z.g[86]=120;Z.g[67]=121;Z.g[90]=122;Z.g[120]=123;Z.g[17]=124;Z.g[16]=125;Z.g[20]=126;Z.Ea={l4:Z.fa.qc,l3:Z.fa.pc,l2:Z.fa.oc,l1:Z.fa.nc,locked:Z.fa.rc,local:Z.fa.Bb,online:~Z.fa.Bb};var xc={SI1978:yc,VT100:Z};
wc.prototype.S=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.B[e]){if("led"==a&&this.b.Ea[b])return this.B[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return zc(d,a,!0)},c.onkeyup=function(a){return zc(d,a,!1)},!0;default:if(this.b.qa&&void 0!==this.b.qa[b])return this.B[e]=c,a=function(a,b){return function(){Ac(a,b,!0)}}(this,this.b.qa[b]),b=function(a,b){return function(){Ac(a,b,!1);a.m&&Hb(a.m)}}(this,this.b.qa[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend= wc.prototype.S=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.B[e]){if("led"==a&&this.b.Ea[b])return this.B[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return zc(d,a,!0)},c.onkeyup=function(a){return zc(d,a,!1)},!0;default:if(this.b.sa&&void 0!==this.b.sa[b])return this.B[e]=c,a=function(a,b){return function(){Ac(a,b,!0)}}(this,this.b.sa[b]),b=function(a,b){return function(){Ac(a,b,!1);a.m&&Hb(a.m)}}(this,this.b.sa[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};wc.prototype.ma=function(a,b,c,d){this.m=a;this.a=c;this.N=d;this.L=D(a,"ChipSet");fb(b,this,this.b.cb);gb(b,this,this.b.eb)};wc.prototype.da=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};wc.prototype.ha=function(a){return a?this.save():!0};Z.INIT=[[Z.fa.INIT,Z.cc.INIT,!1,0,-1]];k=wc.prototype;k.reset=function(){this.c=[];this.b.INIT&&!this.restore(this.b.INIT)&&this.M("reset error")}; b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};wc.prototype.ma=function(a,b,c,d){this.m=a;this.a=c;this.N=d;this.L=D(a,"ChipSet");fb(b,this,this.b.cb);gb(b,this,this.b.eb)};wc.prototype.da=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};wc.prototype.ha=function(a){return a?this.save():!0};Z.INIT=[[Z.fa.INIT,Z.cc.INIT,!1,0,-1]];k=wc.prototype;k.reset=function(){this.c=[];this.b.INIT&&!this.restore(this.b.INIT)&&this.M("reset error")};
k.save=function(){var a=new G(this);switch(this.b.X){case Z.X:I(a,0,[this.i,this.h,this.f,this.l,-1])}return a.data()};k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.X){case yc.X:return!0;case Z.X:return this.i=b[0],Cc(this,this.i&Z.fa.Ab),this.h=b[1],this.f=b[2],this.l=b[3],this.o=b[4],!0}return!1};function Cc(a,b){for(var c in a.b.Ea){var d=a.B["led-"+c];if(d){var e=a.b.Ea[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}} k.save=function(){var a=new G(this);switch(this.b.X){case Z.X:I(a,0,[this.i,this.h,this.f,this.l,-1])}return a.data()};k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.X){case yc.X:return!0;case Z.X:return this.i=b[0],Cc(this,this.i&Z.fa.Ab),this.h=b[1],this.f=b[2],this.l=b[3],this.o=b[4],!0}return!1};function Cc(a,b){for(var c in a.b.Ea){var d=a.B["led-"+c];if(d){var e=a.b.Ea[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}
function zc(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.b.xb[e]||e,!a.b.g[e]){for(var f in a.b.qa)if(a.b.qa[f]===e){e=f;break a}e=null}e&&(d=Ac(a,e,c),b.preventDefault());return d} function zc(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.b.xb[e]||e,!a.b.g[e]){for(var f in a.b.sa)if(a.b.sa[f]===e){e=f;break a}e=null}e&&(d=Ac(a,e,c),b.preventDefault());return d}
function Ac(a,b,c){var d;a:{for(d=0;d<a.c.length;d++)if(a.c[d].vb==b)break a;d=-1}if(c)0>d?a.c.push({vb:b,pb:Date.now(),Va:!1}):(a.c[d].pb=Date.now(),a.c[d].Va=!1);else if(0<=d){if(!a.c[d].Va){var e=a.c[d].pb;if(e&&100>Date.now()-e)return a.c[d].Va=!0,Dc(a),!0}a.c.splice(d,1)}if(a.L){d=0;switch(b){case "1p":d=X.ra.uc;break;case "2p":d=X.ra.yc;break;case "coin":d=X.ra.ec;break;case "left":d=X.ra.wc;break;case "right":d=X.ra.xc;break;case "fire":d=X.ra.vc}d&&(a=a.L,b=d,a.h&=~b,c&&(a.h|=b))}return!0} function Ac(a,b,c){var d;a:{for(d=0;d<a.c.length;d++)if(a.c[d].vb==b)break a;d=-1}if(c)0>d?a.c.push({vb:b,pb:Date.now(),Va:!1}):(a.c[d].pb=Date.now(),a.c[d].Va=!1);else if(0<=d){if(!a.c[d].Va){var e=a.c[d].pb;if(e&&100>Date.now()-e)return a.c[d].Va=!0,Dc(a),!0}a.c.splice(d,1)}if(a.L){d=0;switch(b){case "1p":d=X.ta.uc;break;case "2p":d=X.ta.yc;break;case "coin":d=X.ta.ec;break;case "left":d=X.ta.wc;break;case "right":d=X.ta.xc;break;case "fire":d=X.ta.vc}d&&(a=a.L,b=d,a.h&=~b,c&&(a.h|=b))}return!0}
function Dc(a){for(var b=0,c=-1;b<a.c.length;){if(a.c[b].Va){var d=a.c[b].vb,e=100-(Date.now()-a.c[b].pb);if(0<e){if(0>c||c>e)c=e}else{Ac(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){Dc(a)},c)}k.Pc=function(){var a=this.h;0<=this.o&&(this.o<this.c.length?(a=this.c[this.o],this.o++,a=Z.g[a.vb],a&128&&(a&=127)):(this.o=-1,a=Z.mc),this.h=a,fc(this.a,1));return a};k.jd=function(a,b){this.i=b;this.f=!0;this.l=Gb(this.a);Cc(this,b&Z.fa.Ab);b&Z.fa.Cc&&(this.o=0,fc(this.a,1))};Z.cb={130:wc.prototype.Pc}; function Dc(a){for(var b=0,c=-1;b<a.c.length;){if(a.c[b].Va){var d=a.c[b].vb,e=100-(Date.now()-a.c[b].pb);if(0<e){if(0>c||c>e)c=e}else{Ac(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){Dc(a)},c)}k.Pc=function(){var a=this.h;0<=this.o&&(this.o<this.c.length?(a=this.c[this.o],this.o++,a=Z.g[a.vb],a&128&&(a&=127)):(this.o=-1,a=Z.mc),this.h=a,fc(this.a,1));return a};k.jd=function(a,b){this.i=b;this.f=!0;this.l=Gb(this.a);Cc(this,b&Z.fa.Ab);b&Z.fa.Cc&&(this.o=0,fc(this.a,1))};Z.cb={130:wc.prototype.Pc};
Z.eb={130:wc.prototype.jd};ya(function(){for(var a=y(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new wc(d);Pa(d,c)}}); Z.eb={130:wc.prototype.jd};ya(function(){for(var a=y(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new wc(d);Pa(d,c)}});
function Ec(a,b,c,d,e){var f=this;this.Lb=sa("Gecko/");var h=["","moz","ms","webkit"];q.call(this,"Video",a,Ec);this.C=a.screenWidth;this.w=a.screenHeight;this.U=a.bufferAddr;this.Rc=a.bufferRAM;var g=a.bufferFormat;this.I=g&&Fc[g.toUpperCase()]||Gc;this.H=a.bufferCols;this.L=a.bufferRows;this.Gb=this.R=a.cellWidth||1;this.P=a.cellHeight||1;this.ea=null;this.Jb=!1;this.Ta=a.bufferBits||1;this.Sc=a.bufferLeft||0;if(this.c=a.bufferRotate)this.c=this.c%360,0<this.c&&(this.c-=360),-90!=this.c&&(this.M("unsupported buffer rotation: "+ function Ec(a,b,c,d,e){var f=this;this.Lb=sa("Gecko/");var h=["","moz","ms","webkit"];q.call(this,"Video",a,Ec);this.C=a.screenWidth;this.w=a.screenHeight;this.U=a.bufferAddr;this.Rc=a.bufferRAM;var g=a.bufferFormat;this.I=g&&Fc[g.toUpperCase()]||Gc;this.H=a.bufferCols;this.L=a.bufferRows;this.Gb=this.R=a.cellWidth||1;this.P=a.cellHeight||1;this.ea=null;this.Jb=!1;this.Ta=a.bufferBits||1;this.Sc=a.bufferLeft||0;if(this.c=a.bufferRotate)this.c=this.c%360,0<this.c&&(this.c-=360),-90!=this.c&&(this.M("unsupported buffer rotation: "+