Fixed lost 8080 interrupts, and added new CPU-driven setTimer() functionality
This commit is contained in:
parent
12dad7291c
commit
99023617fd
6 changed files with 562 additions and 447 deletions
|
|
@ -122,6 +122,11 @@ function CPU(parmsCPU, nCyclesDefault)
|
|||
this.aCounts.nCyclesChecksumInterval = parmsCPU["csInterval"];
|
||||
this.aCounts.nCyclesChecksumStop = parmsCPU["csStop"];
|
||||
|
||||
/*
|
||||
* Array of countdown timers managed by addTimer() and setTimer().
|
||||
*/
|
||||
this.aTimers = [];
|
||||
|
||||
this.onRunTimeout = this.runCPU.bind(this); // function onRunTimeout() { cpu.runCPU(); };
|
||||
|
||||
this.setReady();
|
||||
|
|
@ -536,6 +541,9 @@ CPU.prototype.setBinding = function(sHTMLType, sBinding, control, sValue)
|
|||
* in anticipation of the timer requiring an update sooner than the normal nCyclesPerYield
|
||||
* period in runCPU() would normally provide.
|
||||
*
|
||||
* NOTE: In this context, "timer" refers to a timer chip (eg, an Intel 8253) being emulated by
|
||||
* by the ChipSet component, not the timers managed by the CPU (eg, addTimer(), setTimer(), etc).
|
||||
*
|
||||
* @this {CPU}
|
||||
* @param {number} nCycles is the target number of cycles to drop the current burst to
|
||||
* @return {boolean}
|
||||
|
|
@ -754,14 +762,14 @@ CPU.prototype.getSpeedTarget = function()
|
|||
*
|
||||
* NOTE: This used to return the target speed, in mhz, but no callers appear to care at this point.
|
||||
*
|
||||
* @desc Whenever the speed is changed, the running cycle count and corresponding start time must be reset,
|
||||
* so that the next effective speed calculation obtains sensible results. In fact, when runCPU() initially calls
|
||||
* setSpeed() with no parameters, that's all this function does (it doesn't change the current speed setting).
|
||||
*
|
||||
* @this {CPU}
|
||||
* @param {number} [nMultiplier] is the new proposed multiplier (reverts to 1 if the target was too high)
|
||||
* @param {boolean} [fUpdateFocus] is true to update Computer focus
|
||||
* @return {boolean} true if successful, false if not
|
||||
*
|
||||
* @desc Whenever the speed is changed, the running cycle count and corresponding start time must be reset,
|
||||
* so that the next effective speed calculation obtains sensible results. In fact, when runCPU() initially calls
|
||||
* setSpeed() with no parameters, that's all this function does (it doesn't change the current speed setting).
|
||||
*/
|
||||
CPU.prototype.setSpeed = function(nMultiplier, fUpdateFocus)
|
||||
{
|
||||
|
|
@ -939,6 +947,104 @@ CPU.prototype.calcRemainingTime = function()
|
|||
return msRemainsThisRun;
|
||||
};
|
||||
|
||||
/**
|
||||
* addTimer(callBack)
|
||||
*
|
||||
* Components that want to have timers that periodically fire after some number of milliseconds call
|
||||
* addTimer() to create the timer, and then setTimer() every time they want to arm it. There is currently
|
||||
* no removeTimer() because these are generally used for the entire lifetime of a component.
|
||||
*
|
||||
* Internally, each timer entry is a preallocated Array with two entries: a cycle countdown in element [0]
|
||||
* and a callback function in element [1]. A timer is initially dormant; dormant timers have a countdown
|
||||
* value of -1 (although any negative number will suffice) and active timers have a non-negative value.
|
||||
*
|
||||
* Why not use JavaScript's setTimeout() instead? Good question. For a good answer, see setTimer() below.
|
||||
*
|
||||
* @this {CPU}
|
||||
* @param {function()} callBack
|
||||
* @return {number} timer index
|
||||
*/
|
||||
CPU.prototype.addTimer = function(callBack)
|
||||
{
|
||||
var iTimer = this.aTimers.length;
|
||||
this.aTimers.push([-1, callBack]);
|
||||
return iTimer;
|
||||
};
|
||||
|
||||
/**
|
||||
* setTimer(iTimer, ms)
|
||||
*
|
||||
* Using the timer index from a previous addTimer() call, this sets that timer to fire after the
|
||||
* specified number of milliseconds.
|
||||
*
|
||||
* 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
|
||||
* runCPU() yields, which is far too granular for some components (eg, when the SerialPort tries to simulate
|
||||
* receiver interrupts at 9600 baud).
|
||||
*
|
||||
* Ideally, the only function that would use setTimeout() is runCPU(), while the rest of the components would
|
||||
* use setTimer(); however, due to legacy code (ie, code that predates these functions) and/or laziness,
|
||||
* that's currently not the case. TODO: Fix.
|
||||
*
|
||||
* @this {CPU}
|
||||
* @param {number} iTimer
|
||||
* @param {number} ms (converted into a cycle countdown internally)
|
||||
* @return {number} (number of cycles used to arm timer, or -1 if error)
|
||||
*/
|
||||
CPU.prototype.setTimer = function(iTimer, ms)
|
||||
{
|
||||
var nCycles = -1;
|
||||
if (iTimer >= 0 && iTimer < this.aTimers.length) {
|
||||
nCycles = (this.aCounts.nCyclesPerSecond * this.aCounts.nCyclesMultiplier) / 1000 * ms;
|
||||
this.aTimers[iTimer][0] = nCycles;
|
||||
}
|
||||
return nCycles;
|
||||
};
|
||||
|
||||
/**
|
||||
* getTimerBurst(nCycles)
|
||||
*
|
||||
* Used by runCPU() to either accept or shorten the current burst if any timers need to fire soon.
|
||||
*
|
||||
* @this {CPU}
|
||||
* @param {number} nCycles (number of cycles about to execute)
|
||||
* @return {number} (either nCycles or less if a timer needs to fire)
|
||||
*/
|
||||
CPU.prototype.getTimerBurst = function(nCycles)
|
||||
{
|
||||
for (var i = 0; i < this.aTimers.length; i++) {
|
||||
var timer = this.aTimers[i];
|
||||
if (timer[0] < 0) continue;
|
||||
if (nCycles > timer[0]) {
|
||||
nCycles = timer[0];
|
||||
}
|
||||
}
|
||||
return nCycles;
|
||||
};
|
||||
|
||||
/**
|
||||
* updateTimers(nCycles)
|
||||
*
|
||||
* Used by runCPU() to reduce all active timer countdown values by the number of cycles just executed;
|
||||
* this is the function that actually "fires" any timer(s) whose countdown has reached (or dropped below)
|
||||
* zero, invoking their callback function.
|
||||
*
|
||||
* @this {CPU}
|
||||
* @param {number} nCycles (number of cycles actually executed)
|
||||
*/
|
||||
CPU.prototype.updateTimers = function(nCycles)
|
||||
{
|
||||
for (var i = 0; i < this.aTimers.length; i++) {
|
||||
var timer = this.aTimers[i];
|
||||
if (timer[0] < 0) continue;
|
||||
timer[0] -= nCycles;
|
||||
if (timer[0] <= 0) {
|
||||
timer[0] = -1; // zero is technically an "active" value, so ensure the timer is dormant now
|
||||
timer[1](); // safe to invoke the callback function now
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* runCPU(fUpdateFocus)
|
||||
*
|
||||
|
|
@ -962,22 +1068,37 @@ CPU.prototype.runCPU = function(fUpdateFocus)
|
|||
this.calcStartTime();
|
||||
try {
|
||||
do {
|
||||
var nCyclesPerBurst = (this.flags.fChecksum? 1 : this.aCounts.nCyclesPerBurst);
|
||||
|
||||
/*
|
||||
* 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).
|
||||
*/
|
||||
var nCyclesPerBurst = (this.flags.fChecksum? 1 : this.aCounts.nCyclesPerBurst);
|
||||
|
||||
/*
|
||||
* Adjust nCyclesPerBurst if there are any CPU timers that need to fire within the current burst.
|
||||
*/
|
||||
nCyclesPerBurst = this.getTimerBurst(nCyclesPerBurst);
|
||||
|
||||
/*
|
||||
* Execute the burst.
|
||||
*/
|
||||
this.stepCPU(nCyclesPerBurst);
|
||||
|
||||
/*
|
||||
* nBurstCycles, less any remaining nStepCycles, is how many cycles stepCPU() ACTUALLY ran (nCycles).
|
||||
* We add that to nCyclesThisRun, as well as nRunCycles, which is the cycle count since the CPU first
|
||||
* started running.
|
||||
* nCycles is how many cycles stepCPU() actually ran (nBurstCycles less any remaining nStepCycles).
|
||||
*/
|
||||
var nCycles = this.nBurstCycles - this.nStepCycles;
|
||||
this.nRunCycles += nCycles;
|
||||
|
||||
/*
|
||||
* Update any/all timers, firing those whose cycle countdowns have reached (or dropped below) zero.
|
||||
*/
|
||||
this.updateTimers(nCycles);
|
||||
|
||||
/*
|
||||
* Add nCycles to nCyclesThisRun, as well as nRunCycles (the cycle count since the CPU first started).
|
||||
*/
|
||||
this.aCounts.nCyclesThisRun += nCycles;
|
||||
this.nRunCycles += nCycles;
|
||||
this.addCycles(0, true);
|
||||
this.updateChecksum(nCycles);
|
||||
|
||||
|
|
|
|||
|
|
@ -60,17 +60,17 @@ var CPUDef = {
|
|||
* Processor Status flag definitions (stored in regPS)
|
||||
*/
|
||||
PS: {
|
||||
CF: 0x0001, // bit 0: Carry flag
|
||||
CF: 0x0001, // bit 0: Carry Flag
|
||||
BIT1: 0x0002, // bit 1: reserved, always set
|
||||
PF: 0x0004, // bit 2: Parity flag
|
||||
PF: 0x0004, // bit 2: Parity Flag
|
||||
BIT3: 0x0008, // bit 3: reserved, always clear
|
||||
AF: 0x0010, // bit 4: Auxiliary Carry flag
|
||||
AF: 0x0010, // bit 4: Auxiliary Carry Flag
|
||||
BIT5: 0x0020, // bit 5: reserved, always clear
|
||||
ZF: 0x0040, // bit 6: Zero flag
|
||||
SF: 0x0080, // bit 7: Sign flag
|
||||
ZF: 0x0040, // bit 6: Zero Flag
|
||||
SF: 0x0080, // bit 7: Sign Flag
|
||||
ALL: 0x00D5, // all "arithmetic" flags (CF, PF, AF, ZF, SF)
|
||||
MASK: 0x00FF, //
|
||||
IF: 0x0200 // bit 9: Interrupt flag (set if interrupts enabled; for internal use only)
|
||||
IF: 0x0200 // bit 9: Interrupt Flag (set if interrupts enabled; Intel calls this the INTE bit)
|
||||
},
|
||||
PARITY: [ // 256-byte array with a 1 wherever the number of set bits of the array index is EVEN
|
||||
1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
|
||||
|
|
@ -94,10 +94,9 @@ var CPUDef = {
|
|||
* Interrupt-related flags (stored in intFlags)
|
||||
*/
|
||||
INTFLAG: {
|
||||
NONE: 0x00,
|
||||
INTL: 0x07, // last interrupt level requested
|
||||
INTR: 0x08, // set if interrupt has been requested
|
||||
HALT: 0x10 // halt requested; see opHLT()
|
||||
NONE: 0x0000,
|
||||
INTR: 0x00ff, // mask for 8 bits, representing interrupt levels 0-7
|
||||
HALT: 0x0100 // halt requested; see opHLT()
|
||||
},
|
||||
/*
|
||||
* Opcode definitions
|
||||
|
|
|
|||
|
|
@ -938,47 +938,50 @@ CPUState.prototype.pushWord = function(w)
|
|||
CPUState.prototype.checkINTR = function()
|
||||
{
|
||||
if ((this.intFlags & CPUDef.INTFLAG.INTR) && this.getIF()) {
|
||||
var bRST = CPUDef.OPCODE.RST0 | ((this.intFlags & CPUDef.INTFLAG.INTL) << 3);
|
||||
this.intFlags &= ~CPUDef.INTFLAG.HALT;
|
||||
this.clearINTR();
|
||||
for (var nLevel = 0; nLevel < 8; nLevel++) {
|
||||
if (this.intFlags & (1 << nLevel)) break;
|
||||
}
|
||||
this.clearINTR(nLevel);
|
||||
this.clearIF();
|
||||
this.aOps[bRST].call(this);
|
||||
this.intFlags &= ~CPUDef.INTFLAG.HALT;
|
||||
this.aOps[CPUDef.OPCODE.RST0 | (nLevel << 3)].call(this);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* clearINTR()
|
||||
* clearINTR(nLevel)
|
||||
*
|
||||
* Clear the corresponding interrupt level.
|
||||
*
|
||||
* nLevel can either be a valid interrupt level (0-7), or -1 to clear all pending interrupts
|
||||
* (eg, in the event of a system-wide reset).
|
||||
*
|
||||
* @this {CPUState}
|
||||
* @param {number} nLevel (0-7, or -1 for all)
|
||||
*/
|
||||
CPUState.prototype.clearINTR = function()
|
||||
CPUState.prototype.clearINTR = function(nLevel)
|
||||
{
|
||||
this.intFlags &= ~(CPUDef.INTFLAG.INTL | CPUDef.INTFLAG.INTR);
|
||||
var bitsClear = nLevel < 0? 0xff : (1 << nLevel);
|
||||
this.intFlags &= ~bitsClear;
|
||||
};
|
||||
|
||||
/**
|
||||
* requestINTR(nLevel)
|
||||
*
|
||||
* This is called by any component that wants to request a h/w interrupt.
|
||||
* Request the corresponding interrupt level.
|
||||
*
|
||||
* NOTE: We allow INTR to be set regardless of the current state of interrupt flag (IF), on the theory
|
||||
* that if/when the CPU briefly turns interrupts off, it shouldn't lose the last h/w interrupt requested.
|
||||
* So instead of ignoring INTR here, checkINTR() ignores INTR as long as the interrupt flag (IF) is clear.
|
||||
*
|
||||
* The downside is that, as long as the CPU has interrupts disabled, an active INTR state will slow stepCPU()
|
||||
* down slightly. We could avoid that by introducing a two-stage interrupt tracking system, where a separate
|
||||
* variable keeps track of the last interrupt requested whenever the interrupt flag (IF) is clear, and when
|
||||
* setIF() finally occurs, that interrupt is propagated to intFlags. But for now, we're going to assume that
|
||||
* scenario is rare.
|
||||
* Each interrupt level (0-7) has its own intFlags bit (0-7). If one or more of those bits are set,
|
||||
* and the Interrupt Flag (IF) is also set, indicating that interrupts are enabled, then checkINTR()
|
||||
* chooses one of those bits, clears it, clears IF, and executes the corresponding RST opcode.
|
||||
*
|
||||
* @this {CPUState}
|
||||
* @param {number} nLevel (0-7)
|
||||
*/
|
||||
CPUState.prototype.requestINTR = function(nLevel)
|
||||
{
|
||||
this.intFlags = (this.intFlags & ~CPUDef.INTFLAG.INTL) | nLevel | CPUDef.INTFLAG.INTR;
|
||||
this.intFlags |= (1 << nLevel);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -115,15 +115,6 @@ function SerialPort(parmsSerial) {
|
|||
Component.bindExternalControl(this, sBinding, SerialPort.sIOBuffer);
|
||||
}
|
||||
|
||||
/*
|
||||
* Define a setTimeout() function that receiveData() can use when there's more data to receive.
|
||||
*/
|
||||
this.fnCheckDataReceived = function(serial) {
|
||||
return function() {
|
||||
serial.receiveData();
|
||||
}
|
||||
}(this);
|
||||
|
||||
/*
|
||||
* No connection until initBus() invokes initConnection().
|
||||
*/
|
||||
|
|
@ -368,10 +359,20 @@ SerialPort.prototype.initBus = function(cmp, bus, cpu, dbg)
|
|||
this.bus = bus;
|
||||
this.cpu = cpu;
|
||||
this.dbg = dbg;
|
||||
|
||||
var serial = this;
|
||||
this.timerReceiveData = this.cpu.addTimer(function() {
|
||||
serial.printMessage("timerReceiveData()");
|
||||
serial.receiveData()
|
||||
});
|
||||
|
||||
this.chipset = /** @type {ChipSet} */ (cmp.getMachineComponent("ChipSet"));
|
||||
|
||||
bus.addPortInputTable(this, SerialPort.aPortInput, this.portBase);
|
||||
bus.addPortOutputTable(this, SerialPort.aPortOutput, this.portBase);
|
||||
|
||||
this.initConnection();
|
||||
|
||||
this.setReady();
|
||||
};
|
||||
|
||||
|
|
@ -555,9 +556,11 @@ SerialPort.prototype.getBaudTimeout = function(maskRate)
|
|||
*/
|
||||
SerialPort.prototype.receiveByte = function(b)
|
||||
{
|
||||
this.printMessage("receiveByte(" + str.toHexByte(b) + "): " + str.toHexByte(this.bStatus));
|
||||
if (!(this.bStatus & SerialPort.UART8251.STATUS.RECV_FULL)) {
|
||||
this.bDataIn = b;
|
||||
this.bStatus |= SerialPort.UART8251.STATUS.RECV_FULL;
|
||||
this.printMessage("receiveByte(" + str.toHexByte(b) + "): " + str.toHexByte(this.bStatus) + " (requesting interrupt)");
|
||||
this.cpu.requestINTR(this.nIRQ);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -575,21 +578,8 @@ SerialPort.prototype.receiveData = function()
|
|||
if (this.receiveByte(this.sDataReceived.charCodeAt(0))) {
|
||||
this.sDataReceived = this.sDataReceived.substr(1);
|
||||
}
|
||||
/*
|
||||
* TODO: If data has become undeliverable for some reason (eg, the Debugger has paused execution),
|
||||
* we should stop setting timeouts, and add one or more notification mechanisms to kickstart it again.
|
||||
*/
|
||||
if (this.sDataReceived) {
|
||||
/*
|
||||
* TODO: setTimeout() is a less-than-ideal solution, because it's too slow; timeouts won't fire until
|
||||
* the end of a CPU burst. So instead of calculating a number of milliseconds, we should calculate a
|
||||
* number of CPU cycles, and create a CPU notification mechanism that calls us back after that many cycles
|
||||
* have elapsed (and which will automatically shorten the current CPU burst as needed).
|
||||
*
|
||||
* This will also solve the other issue noted above, because if the CPU has been halted, it won't be
|
||||
* generating any notifications either.
|
||||
*/
|
||||
setTimeout(this.fnCheckDataReceived, this.getBaudTimeout(SerialPort.UART8251.BAUDRATES.RECV_RATE));
|
||||
if (this.sDataReceived && this.cpu) {
|
||||
this.cpu.setTimer(this.timerReceiveData, this.getBaudTimeout(SerialPort.UART8251.BAUDRATES.RECV_RATE));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,247 +1,249 @@
|
|||
(function(){var m;function ca(a,b){var c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c}
|
||||
function n(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function t(a){return"0x"+n(a,4)}function da(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0<d&&(c=c.substr(0,d));b&&(d=c.lastIndexOf("."),0<d&&(c=c.substring(0,d)));return c}function ea(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
|
||||
function fa(a,b){return-1!==a.indexOf(b,a.length-b.length)}var ha={"&":"&","<":"<",">":">",'"':""","'":"'"};function ia(a){return a.replace(/[&<>"']/g,function(a){return ha[a]})}function ja(a,b){return(a+" ").slice(0,b)}function ka(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
|
||||
function la(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var h=d+e>>1,g;g=c(b,a[h]);0<g?d=h+1:(e=h,f=!g)}return f?d:~d}var ma=Date.now||function(){return+new Date};function na(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
|
||||
function oa(a,b){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;c<d;c++)if(c in a&&a[c]===b)return c;return-1}
|
||||
function pa(a,b,c,d){var e=0,f=null,h=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),d&&d(a,f,e))});if(b&&"object"==
|
||||
typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");g.open("POST",a,!!c);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(k)}else g.open("GET",a,!!c),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();c||(f=g.responseText,200!=g.status&&(e=g.status||-1),d&&d(a,f,e),h=[f,e]);return h}function qa(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
||||
function ra(){return window?window.navigator.userAgent:""}function u(a){window&&window.alert(a)}function sa(a){var b=!1;window&&(b=window.confirm(a));return b}var ta=null;function ua(){if(null==ta){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}ta=a}return ta}
|
||||
function wa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function xa(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function ya(a){if(window){var b=ra();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 za(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function Aa(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 Ba={init:[],show:[],exit:[]},Ca=!1,Da=!0;function Ia(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ja(a){Ba.init.push(a)}
|
||||
function Ka(a){if(Da)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){La("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Ma(a){!Da&&a?(Da=!0,Ca&&Na("init")):Da=a}function Na(a){Ba[a]&&Ka(Ba[a])}Ia("onload",function(){Ca=!0;Ka(Ba.init)});Ia("onpageshow",function(){Ka(Ba.show)});Ia(ya("Opera")||ya("iOS")?"onunload":"onbeforeunload",function(){Ka(Ba.exit)});
|
||||
function x(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.yc=b.comment;this.Ic=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Yb=this.id.substr(0,b),this.Xa=this.id.substr(b+1)):this.Xa=this.id;this[a]=c;this.D={Ma:!1,kb:!1,Wb:!1,ua:!1,mb:!1};this.Ob=null;this.D.mb=!1;this.M={};this.I=null;this.sa=d||0;Oa.push(this)}var Pa=void 0,Sa={};
|
||||
if(window){Pa||(Pa=window.location.search.substr(1));for(var Ta,Ua=/\+/g,Va=/([^&=]+)=?([^&]*)/g;Ta=Va.exec(Pa);)Sa[decodeURIComponent(Ta[1].replace(Ua," "))]=decodeURIComponent(Ta[2].replace(Ua," "))}function Wa(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 Xa(a,b){b||(b=x);a.prototype=Wa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var Oa=[],$a={};function ab(a,b,c){$a[a]&&b&&($a[a][b]=c)}function La(a,b,c){b||u((c?c+": ":"")+a)}function bb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Oa.length;b++){var d=Oa[b];a&&d.id.indexOf(a)||c.push(d)}return c}function cb(a){if(void 0!==a){var b;for(b=0;b<Oa.length;b++)if(Oa[b].id===a)return Oa[b]}return null}
|
||||
function db(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<Oa.length;d++)if(c)c==Oa[d]&&(c=null);else if(!(a!=Oa[d].type||b&&Oa[d].id.indexOf(b)))return Oa[d]}return null}function y(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}function eb(a,b){var c,d=fb;b&&(void 0===c&&(c="Panel"),(c=db(c,a.id))&&(c=c.M[b])&&a.ma(null,d,c))}
|
||||
function gb(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=y(h))&&g.binding&&a.ma(g.type,g.binding,h,g.value),l=k.length}}}}
|
||||
(function(){var m;function aa(a,b){var c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c}
|
||||
function n(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function da(a){return"0x"+n(a,2)}function t(a){return"0x"+n(a,4)}function ea(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0<d&&(c=c.substr(0,d));b&&(d=c.lastIndexOf("."),0<d&&(c=c.substring(0,d)));return c}
|
||||
function fa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function ga(a,b){return-1!==a.indexOf(b,a.length-b.length)}var ia={"&":"&","<":"<",">":">",'"':""","'":"'"};function ja(a){return a.replace(/[&<>"']/g,function(a){return ia[a]})}function ka(a,b){return(a+" ").slice(0,b)}function la(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
|
||||
function ma(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var h=d+e>>1,g;g=c(b,a[h]);0<g?d=h+1:(e=h,f=!g)}return f?d:~d}var na=Date.now||function(){return+new Date};function oa(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
|
||||
function pa(a,b){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;c<d;c++)if(c in a&&a[c]===b)return c;return-1}
|
||||
function qa(a,b,c,d){var e=0,f=null,h=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),d&&d(a,f,e))});if(b&&"object"==
|
||||
typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");g.open("POST",a,!!c);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(k)}else g.open("GET",a,!!c),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();c||(f=g.responseText,200!=g.status&&(e=g.status||-1),d&&d(a,f,e),h=[f,e]);return h}function ra(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
||||
function sa(){return window?window.navigator.userAgent:""}function u(a){window&&window.alert(a)}function ta(a){var b=!1;window&&(b=window.confirm(a));return b}var ua=null;function va(){if(null==ua){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}ua=a}return ua}
|
||||
function xa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function ya(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function za(a){if(window){var b=sa();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 Aa(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function Ba(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 Ca={init:[],show:[],exit:[]},Da=!1,Ea=!0;function Ja(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ka(a){Ca.init.push(a)}
|
||||
function La(a){if(Ea)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Ma("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Na(a){!Ea&&a?(Ea=!0,Da&&Oa("init")):Ea=a}function Oa(a){Ca[a]&&La(Ca[a])}Ja("onload",function(){Da=!0;La(Ca.init)});Ja("onpageshow",function(){La(Ca.show)});Ja(za("Opera")||za("iOS")?"onunload":"onbeforeunload",function(){La(Ca.exit)});
|
||||
function x(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.yc=b.comment;this.Ic=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Yb=this.id.substr(0,b),this.Ya=this.id.substr(b+1)):this.Ya=this.id;this[a]=c;this.D={Ma:!1,lb:!1,Wb:!1,ua:!1,nb:!1};this.Ob=null;this.D.nb=!1;this.N={};this.I=null;this.sa=d||0;Pa.push(this)}var Qa=void 0,Ta={};
|
||||
if(window){Qa||(Qa=window.location.search.substr(1));for(var Ua,Va=/\+/g,Wa=/([^&=]+)=?([^&]*)/g;Ua=Wa.exec(Qa);)Ta[decodeURIComponent(Ua[1].replace(Va," "))]=decodeURIComponent(Ua[2].replace(Va," "))}function Xa(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 Ya(a,b){b||(b=x);a.prototype=Xa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var Pa=[],ab={};function bb(a,b,c){ab[a]&&b&&(ab[a][b]=c)}function Ma(a,b,c){b||u((c?c+": ":"")+a)}function cb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Pa.length;b++){var d=Pa[b];a&&d.id.indexOf(a)||c.push(d)}return c}function db(a){if(void 0!==a){var b;for(b=0;b<Pa.length;b++)if(Pa[b].id===a)return Pa[b]}return null}
|
||||
function eb(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<Pa.length;d++)if(c)c==Pa[d]&&(c=null);else if(!(a!=Pa[d].type||b&&Pa[d].id.indexOf(b)))return Pa[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 fb(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.ma(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}
|
||||
x.prototype={constructor:x,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ma:function(a,b,c){switch(b){case "clear":return this.M[b]||(this.M[b]=c,c.onclick=function(a){return function(){a.M.print&&(a.M.print.value="")}}(this)),!0;case "print":return this.M[b]||(this.Fa=this.M[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.ja=function(a){this.g(a,this.Xa)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.Xa+": "+a)},ja:function(a,b,c){La(a,b,c||this.type)},Ea:function(){return this.D.ua=!0},Ha:function(a,b){b&&(this.D.ua=!1);return!0}};function D(a,b,c,d,e,f,h){a.I&&(!0===h?h=0:null==h&&(h=a.sa),hb(a.I,a,b,c,d,e,f,h))}function ib(a,b){a.I&&jb(a,0)&&a.I.message(b,void 0)}function jb(a,b){if(a.I){a===a.I?b|=0:b=b||a.sa;var c=a.I.sa&b;return!!b&&c===b||!!(c&a.I.wd)}return!1}
|
||||
function kb(a,b){if(a.D.Wb)return a.D.kb&&(a.D.kb=!1),a.D.Wb=!1;if(a.D.mb)return a.g(a.toString()+" error"),!1;a.D.kb=b;return a.D.kb}function lb(a,b){a.D.kb&&(b?a.D.Wb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.D.kb}function E(a){if(!a.D.mb&&(a.D.Ma=!0,a.D.Ma)){var b=a.Ob;a.Ob=null;b&&b()}}function mb(a,b){b&&(a.D.Ma?b():a.Ob=b);return a.D.Ma}function nb(a,b){a.D.mb=!0;a.ja(b)}
|
||||
var qb="undefined"!==typeof ArrayBuffer,rb=[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 sb(a){x.call(this,"Panel",a,sb)}Xa(sb);m=sb.prototype;m.ma=function(a,b,c,d){return this.A&&this.A.ma(a,b,c,d)||this.b&&this.b.ma(a,b,c,d)||this.L&&this.L.ma(a,b,c,d)||this.I&&this.I.ma(a,b,c,d)?!0:this.parent.ma.call(this,a,b,c,d)};m.Qa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.I=d;this.L=tb(a,"Keyboard")};m.Ea=function(a,b){b||ub();return!0};m.Ha=function(){return!0};m.Ia=function(){};
|
||||
function ub(){for(var a=!1,b=B(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=y(d),f=cb(e.id);f||(a=!0,f=new sb(e));gb(f,d);a&&E(f)}}Ja(ub);
|
||||
function vb(a,b,c){x.call(this,"Bus",a,vb);this.b=b;this.I=c;this.H=a.busWidth||16;this.N=Math.pow(2,this.H);this.B=this.N-1|0;this.pa=16>=this.H?10:20>=this.H?12:24>=this.H?14:15;this.Ga=1<<this.pa;this.O=this.Ga>>2;this.w=this.Ga-1;this.K=this.N/this.Ga|0;this.L=this.K-1;this.A=[];this.u=[];this.J=this.F=!1;this.P=[];this.X=[];a=new F;wb(a,this.I);this.Y=Array(this.K);for(b=0;b<this.K;b++)this.Y[b]=a;E(this)}Xa(vb);m=vb.prototype;m.reset=function(){};m.Ea=function(a,b){b||this.reset();return!0};
|
||||
function xb(a,b,c,d){for(var e=b,f=c,h=e>>>a.pa;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 yb(1,e,f)}e=new F(e,l,a.Ga,d);wb(e,a.I,g);a.Y[h++]=e;e=k+a.Ga;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+zb[d]+" at "+t(b)),!0):yb(2,b,c)}m.aa=function(a){return this.Y[(a&this.B)>>>this.pa].tb(a&this.w,a)};
|
||||
function Ab(a,b){return a.Y[(b&a.B)>>>a.pa].Hb(b&a.w,b)}m.Sa=function(a){var b=a&this.w,c=(a&this.B)>>>this.pa;return b!=this.w?this.Y[c].Lc(b,a):this.Y[c++].tb(b,a)|this.Y[c&this.L].tb(0,a+1)<<8};function Bb(a,b){var c=b&a.w,d=(b&a.B)>>>a.pa;return c!=a.w?a.Y[d].fc(c,b):a.Y[d++].Hb(c,b)|a.Y[d&a.L].Hb(0,b+1)<<8}m.ta=function(a,b){this.Y[(a&this.B)>>>this.pa].vb(a&this.w,b&255,a)};function Cb(a,b,c){a.Y[(b&a.B)>>>a.pa].Jb(b&a.w,c&255,b)}
|
||||
m.Ub=function(a,b){var c=a&this.w,d=(a&this.B)>>>this.pa;c!=this.w?this.Y[d].Oc(c,b&65535,a):(this.Y[d++].vb(c,b&255,a),this.Y[d&this.L].vb(0,b>>8&255,a+1))};function Db(a,b){if(void 0===b)return a.J=!a.J,a.J;void 0===a.A[b]&&(a.A[b]=[null,!1]);a.A[b][1]=!a.A[b][1];return a.A[b][1]}function Eb(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.A[k]?u("Input port "+t(k)+" already registered"):f.A[k]=[g,!1]}}
|
||||
function Fb(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.A[b],g=a.P[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.J!=h[1]&&Gb(a.I,b,l)):a.I&&(hb(a.I,a,b,null,c),a.J&&Gb(a.I,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Ib(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.u[b]&&(a.u[b]=[null,!1]);a.u[b][1]=!a.u[b][1];return a.u[b][1]}
|
||||
function Jb(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 Kb(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.u[b],g=a.X[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.F!=h[1]&&Tb(a.I,b,k)}else a.I&&(hb(a.I,a,b,k,d),a.F&&Tb(a.I,b,k));f+=g<<3;b+=g;e-=g}}
|
||||
function yb(a,b,c){u("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Ub;if(qb){var Vb=new ArrayBuffer(2);(new DataView(Vb)).setUint16(0,256,!0);Ub=256===(new Uint16Array(Vb))[0]}else Ub=!1;var Wb=Ub;
|
||||
function F(a,b,c,d){this.id=Xb+=2;this.b=null;this.G=a;this.Ib=b;this.size=c||0;this.type=d||Yb;this.A=d==Zb;wb(this);this.Oa=this.vc=!1;if(c)if(qb)this.J=new ArrayBuffer(c),this.F=new DataView(this.J,0,c),this.w=new Uint8Array(this.J,0,c),this.L=new Uint16Array(this.J,0,c>>1),this.b=new Int32Array(this.J,0,c>>2),$b(this,Wb?ac:bc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;$b(this,cc)}else $b(this)}var Yb=0,Zb=2,zb=["NONE","RAM","ROM","VID","H/W"],Xb=0;
|
||||
F.prototype={constructor:F,parent:null,save:function(){var a,b;if(qb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.F.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(qb)for(b=0;b<a.length;b++)this.F.setInt32(b<<2,a[b],!0);else this.b=a;return this.Oa=!0}return!1},Za:function(a,b){b?0===this.u++&&dc(this,ec,!1):0===this.M++&&fc(this,ec,!1)},K:function(){this.I&&jb(this.I,129)&&this.I.message("attempt to read invalid block %"+n(this.G),!0);
|
||||
return 255},B:function(a,b){this.I&&jb(this.I,129)&&this.I.message("attempt to write "+t(b)+" to invalid block %"+n(this.G),!0)},N: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)},ca:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ha: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},ya:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.Oa=!0},Da: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},P:function(a,b){if(this.I&&null!=this.G){var c=this.I;gc(c,this.G+a,1,c.P)&&c.na(!0)}return this.Hb(a,b)},ea:function(a,b){if(this.I&&null!=this.G){var c=this.I;gc(c,this.G+a,2,c.P)&&c.na(!0)}return this.fc(a,b)},qa:function(a,b,c){if(this.I&&null!=this.G){var d=this.I;gc(d,this.G+a,1,d.F)&&d.na(!0)}this.A?this.B(a,b,c):this.Jb(a,b,c)},Xa:function(a,
|
||||
b,c){if(this.I&&null!=this.G){var d=this.I;gc(d,this.G+a,2,d.F)&&d.na(!0)}this.A?this.B(a,b,c):this.hc(a,b,c)},O:function(a){return this.w[a]},X:function(a){return this.w[a]},da:function(a){return this.F.getUint16(a,!0)},ga:function(a){return a&1?this.w[a]|this.w[a+1]<<8:this.L[a>>1]},ia:function(a,b){this.w[a]=b;this.Oa=!0},ra:function(a,b){this.w[a]=b;this.Oa=!0},za:function(a,b){this.F.setUint16(a,b,!0);this.Oa=!0},Ca:function(a,b){a&1?(this.w[a]=b,this.w[a+1]=b>>8):this.L[a>>1]=b;this.Oa=!0}};
|
||||
function wb(a,b,c){a.I=b;a.M=a.u=0;c&&((a.M=c.M)&&fc(a,ec,!1),(a.u=c.u)&&dc(a,ec,!1))}function hc(a,b){b?0===--a.u&&(a.vb=a.A?a.B:a.Jb,a.Oc=a.A?a.H:a.hc):0===--a.M&&(a.tb=a.Hb,a.Lc=a.fc)}function dc(a,b,c){c&&a.u||(a.vb=!a.A&&b[2]||a.B,a.Oc=!a.A&&b[3]||a.H);if(c||void 0===c)a.Jb=b[2]||a.B,a.hc=b[3]||a.H}function fc(a,b,c){c&&a.M||(a.tb=b[0]||a.K,a.Lc=b[1]||a.N);if(c||void 0===c)a.Hb=b[0]||a.K,a.fc=b[1]||a.N}function $b(a,b){b||(b=ic);fc(a,b,void 0);dc(a,b,void 0)}
|
||||
var ic=[],cc=[F.prototype.ca,F.prototype.ha,F.prototype.ya,F.prototype.Da],ec=[F.prototype.P,F.prototype.ea,F.prototype.qa,F.prototype.Xa];if(qb)var bc=[F.prototype.O,F.prototype.da,F.prototype.ia,F.prototype.za],ac=[F.prototype.X,F.prototype.ga,F.prototype.ra,F.prototype.Ca];
|
||||
function jc(a,b){x.call(this,"CPU",a,jc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.sb=c;this.i.Qb=0;this.i.eb=d;this.i.bc=Math.round(this.i.sb/1E4)/100;this.i.bb=this.i.bc*this.i.eb;this.D.xa=!1;this.D.Xb=!1;this.D.uc=a.autoStart;this.D.wc=!1;this.D.lb=!1;this.i.Bb=this.i.pb=0;this.i.Cb=a.csStart;this.i.ob=a.csInterval;this.i.qb=a.csStop;this.X=this.fb.bind(this);E(this)}Xa(jc);var kc=["power","reset"];m=jc.prototype;
|
||||
m.Qa=function(a,b,c,d){this.A=a;this.w=b;this.I=d;for(b=0;b<kc.length;b++)(c=this.M[kc[b]])&&this.A.ma(null,kc[b],c);this.K=(b=tb(a,"Video"))&&Math.max(b.Zd,b.Zb)||60;this.J=tb(a,"ChipSet");a=lc(a,"autoStart");null!=a&&(this.D.uc="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){this.i.Qb=0};m.save=function(){return null};m.restore=function(){return!1};
|
||||
m.Ea=function(a,b){if(!b){if(a&&this.restore){mc(this);if(!this.restore(a))return!1;nc(this)}else this.reset();if(this.I){var c=this.I;c.g("Type ? for help with PC8080 Debugger commands");c.Ia();if(c.Da){var d=c.Da;c.Da=null;oc(c,d)}}else this.g("No debugger detected")}Bc(this);return!0};m.Ha=function(a){return a?this.save():!0};function Cc(a){(a.D.uc||!a.I&&void 0===a.M.run)&&a.fb(!0)}m.xc=function(){return 0};
|
||||
function nc(a){void 0===a.i.Cb&&(a.i.Cb=0);void 0===a.i.ob&&(a.i.ob=-1);void 0===a.i.qb&&(a.i.qb=-1);a.D.lb=0<=a.i.Cb&&0<a.i.ob;a.D.lb&&(a.i.Bb=0,a.i.pb=a.i.Cb-a.H)}function Dc(a,b){if(a.D.lb){var c=!1;a.i.Bb=a.i.Bb+a.xc()|0;a.i.pb-=b;0>=a.i.pb&&(a.i.pb+=a.i.ob,c=!0);0<=a.i.qb&&a.i.qb<=Ec(a)&&(a.i.ob=a.i.qb=-1,nc(a),a.na(),c=!0);c&&a.g(Ec(a)+" cycles: checksum="+n(a.i.Bb))}}
|
||||
m.ma=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.M[b]=c;a=!0;break;case "run":this.M[b]=c;c.onclick=function(){var a;if(a=d.A)if(a=d.A,a.D.ua)a=!0;else{var b=null,c,g=bb(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.ua);c++);c==g.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.D.Ma?"powered yet":"ready yet"+(b.Ob?" (waiting for notification)":""))+".");a=!1}a&&(d.D.xa?d.na(!0):d.fb(!0))};a=
|
||||
!0;break;case "speed":this.M[b]=c;a=!0;break;case "setSpeed":this.M[b]=c,c.onclick=function(){Fc(d,d.i.eb<<1,!0)},c.textContent=this.i.bb.toFixed(2)+"Mhz",a=!0}return a};function Gc(a,b,c){a.H+=b;c&&(a.B=a.b=0)}
|
||||
function Hc(a,b){var c=30;c<a.K&&(c=a.K);2>c&&(c=2);var d=1;b&&1<a.i.eb&&a.i.ab&&(d=a.i.ab/a.i.bc);a.i.Cc=Math.round(1E3/30);a.i.Hd=Math.floor(a.i.sb/c*d);a.i.dc=Math.floor(a.i.sb/30*d);a.i.Ec=Math.floor(a.i.sb/a.K*d);a.i.Dc=Math.floor(a.i.sb/2*d);b||(a.i.rb=a.i.dc,a.i.Eb=a.i.Ec,a.i.Db=a.i.Dc);a.i.ec=0}function Ec(a){return a.H+a.F+a.B-a.b}function mc(a){a.i.ab=0;a.H=a.F=a.B=a.b=0;nc(a);Fc(a,1)}
|
||||
function Fc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.ab/a.i.bb?b=1:d=!0;a.i.eb=b;b=a.i.bc*a.i.eb;if(a.i.bb!=b){a.i.bb=b;b=a.i.bb.toFixed(2)+"Mhz";var e=a.M.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.A&&a.A.gb()}Gc(a,a.F);a.F=0;a.i.nb=ma();a.i.cb=0;Hc(a);return d}
|
||||
m.fb=function(a){if(kb(this,!0)){if(!this.D.xa){Fc(this);this.A&&this.A.start(this.i.nb,Ec(this));this.D.xa=!0;this.D.Xb=!0;this.J&&this.J.start();var b=this.M.run;b&&(b.textContent="Halt");this.A&&(this.A.Ia(!0),a&&this.A.gb(!0))}this.i.ec>=this.i.sb&&Hc(this,!0);this.i.Fb=0;this.i.Pb=ma();this.i.cb&&(a=this.i.Pb-this.i.cb,a>this.i.Cc&&(this.i.nb+=a,this.i.nb>this.i.Pb&&(this.i.nb=this.i.Pb)));try{do{this.ub(this.D.lb?1:this.i.Hd);var c=this.B-this.b;this.F+=c;this.i.Fb+=c;Gc(this,0,!0);Dc(this,
|
||||
c);this.i.Eb-=c;0>=this.i.Eb&&(this.i.Eb+=this.i.Ec,this.A&&Ic(this.A,this.i.Qb++),this.i.Qb>this.K&&(this.i.Qb=0));this.i.Db-=c;0>=this.i.Db&&(this.i.Db+=this.i.Dc,this.A&&this.A.Ia());this.i.rb-=c;if(0>=this.i.rb){this.i.rb+=this.i.dc;break}}while(this.D.xa)}catch(e){this.na();Bc(this);this.A&&this.A.stop(ma(),Ec(this));kb(this,!1);nb(this,e.stack||e.message);return}c=setTimeout;a=this.X;this.i.cb=ma();b=this.i.Cc;this.i.Fb&&(b=Math.round(b*this.i.Fb/this.i.dc));var b=b-(this.i.cb-this.i.Pb),d=
|
||||
this.i.cb-this.i.nb;d&&(this.i.ab=Math.round(this.F/(10*d))/100,864E5<=d&&(this.H=0,Fc(this)));if(0>b||this.i.ab<this.i.bb)b=0;this.i.ec+=this.i.Fb;this.i.cb+=b;c(a,b)}else Bc(this),this.A&&this.A.stop(ma(),Ec(this))};m.ub=function(){return 0};m.na=function(a){lb(this,!0);this.B-=this.b;this.b=0;Gc(this,this.F);this.F=0;if(this.D.xa){this.D.xa=!1;this.J&&this.J.stop();var b=this.M.run;b&&(b.textContent="Run")}this.D.Nb=a};function Bc(a,b){a.A&&(Ic(a.A,-1),a.A.Ia(b))}
|
||||
function Jc(a){this.Bc=+a.model||8080;jc.call(this,a,1E6);this.N=Kc;mc(this);this.D.Nb=this.D.xd=!1;this.P=0;this.L=[];this.O=0;Lc(this)}Xa(Jc,jc);function Mc(a,b){a.L.push(b)}m=Jc.prototype;m.reset=function(){this.D.xa&&this.na();Lc(this);mc(this);this.D.mb=!1;this.parent.reset.call(this)};function Lc(a){a.j=0;a.S=0;a.T=0;a.U=0;a.V=0;a.W=0;a.Z=0;a.la=0;G(a,a.O);Nc(a,0);a.u=0}function Oc(a,b){a.O=b;G(a,b)}
|
||||
m.xc=function(){var a=this.j+this.S+this.T+this.U+this.V+this.W+this.Z|0;return a=a+this.la+this.R+Pc(this)|0};
|
||||
m.save=function(){var a=new H(this);I(a,0,[this.j,this.S,this.T,this.U,this.V,this.W,this.Z,this.la,this.R,Pc(this)]);I(a,1,[this.u,this.H,this.i.eb]);for(var b=this.w,c=0,d=[],e=0;e<b.K;e++){var f=b.Y[e];if(f.Oa||f.vc){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.S=b[1];this.T=b[2];this.U=b[3];this.V=b[4];this.W=b[5];this.Z=b[6];this.la=b[7]&65535;G(this,b[8]);Nc(this,b[9]);b=a[1];this.u=b[0];this.H=b[1];Fc(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.ma=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.M[b]=c;this.P++;d=!0;break;default:d=this.parent.ma.call(this,a,b,c)}return d};function Qc(a){return a.S<<8|a.T}function Rc(a,b){a.S=b>>8&255;a.T=b&255}function Sc(a){return a.U<<8|a.V}function Tc(a,b){a.U=b>>8&255;a.V=b&255}function J(a){return a.W<<8|a.Z}
|
||||
function Uc(a,b){a.W=b>>8&255;a.Z=b&255}function G(a,b){a.R=b&65535}function Vc(a){return a.ba&256?1:0}function Wc(a,b){a.ba=a.ba&255|b}function Xc(a){return rb[a.fa&255]?4:0}function Yc(a){return(a.fa^a.wa)&16?16:0}function Zc(a){return a.ba&255?0:64}function $c(a){return a.fa&128?128:0}function Pc(a){return a.va&-214|$c(a)|Zc(a)|Yc(a)|Xc(a)|Vc(a)}function Nc(a,b){a.ba=a.fa=a.wa=0;b&1&&(a.ba|=256);b&4||(a.fa|=1);b&16&&(a.wa|=16);b&64||(a.ba|=255);b&128&&(a.fa^=192);a.va=a.va&-726|b&512|2}
|
||||
function ad(a,b){a.wa=a.j^b;return a.fa=(a.ba=a.j+b)&255}function bd(a,b){a.wa=a.j^b;return a.fa=(a.ba=a.j+b+(a.ba&256?1:0))&255}function cd(a,b){a.ba=a.fa=a.wa=a.j&b;(a.j|b)&8&&(a.wa^=16);return a.ba}function dd(a,b){a.wa=b^255;b=a.fa=b+255&255;a.ba=a.ba&-256|b;return b}function ed(a,b){a.wa=b;b=a.fa=b+1&255;a.ba=a.ba&-256|b;return b}function fd(a,b){return a.fa=a.ba=a.wa=a.j|b}function K(a,b){b^=255;a.wa=a.j^b;return a.fa=(a.ba=a.j+b+1^256)&255}
|
||||
function zd(a,b){b^=255;a.wa=a.j^b;return a.fa=(a.ba=a.j+b+(a.ba&256?0:1)^256)&255}function Ad(a,b){return a.fa=a.ba=a.wa=a.j^b}m.aa=function(a){return this.w.aa(a)};m.ta=function(a,b){this.w.ta(a,b)};function L(a){var b=a.aa(a.R);G(a,a.R+1);return b}function M(a){var b=a.w.Sa(a.R);G(a,a.R+2);return b}function O(a){var b=a.w.Sa(a.la);a.la=a.la+2&65535;return b}function P(a,b){a.la=a.la-2&65535;a.w.Ub(a.la,b)}function Bd(a,b){a.u=a.u&-8|b|8}
|
||||
function R(a,b,c,d){d=d||2;a.M[b]&&(void 0===c&&(nb(a,"Value for "+b+" is invalid"),a.na()),c=!a.D.xa||a.D.wc?n(c,d):"--------".substr(0,d),a.M[b].textContent!=c&&(a.M[b].textContent=c))}
|
||||
m.Ia=function(a){this.P&&(a||!this.D.xa||this.D.wc)&&(R(this,"A",this.j),R(this,"B",this.S),R(this,"C",this.T),R(this,"BC",Qc(this),4),R(this,"D",this.U),R(this,"E",this.V),R(this,"DE",Sc(this),4),R(this,"H",this.W),R(this,"L",this.Z),R(this,"HL",J(this),4),R(this,"SP",this.la,4),R(this,"PC",this.R,4),a=Pc(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.M.speed)a.textContent=
|
||||
this.D.xa&&this.i.ab?this.i.ab.toFixed(2)+"Mhz":"Stopped"};m.ub=function(a){this.D.Nb=!0;var b=this.D.xd=this.I&&Cd(this.I),c=a?this.D.Xb?0:1:-1;this.D.Xb=!1;this.B=this.b=a;do{if(this.u){if(a&&this.u&8&&this.va&512){var d=199|(this.u&7)<<3;this.u&=-17;this.u&=-16;this.va&=-513;this.N[d].call(this)}if(this.u&16){this.b=0;break}}if(b){if(Dd(this.I,this.R,c)){this.na();break}c=1}this.N[L(this)].call(this)}while(0<this.b);return this.D.Nb?this.B-this.b:void 0===this.D.Nb?0:-1};
|
||||
Ja(function(){for(var a=B(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Jc(d);gb(d,c)}});function Ed(){this.b-=4}function Fd(){G(this,M(this));this.b-=10}function Gd(){G(this,O(this));this.b-=10}function Hd(){var a=M(this);P(this,this.R);G(this,a);this.b-=17}
|
||||
var Kc=[Ed,function(){Rc(this,M(this));this.b-=10},function(){this.ta(Qc(this),this.j);this.b-=7},function(){Rc(this,Qc(this)+1);this.b-=5},function(){this.S=ed(this,this.S);this.b-=5},function(){this.S=dd(this,this.S);this.b-=5},function(){this.S=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|a>>8;Wc(this,a&256);this.b-=4},Ed,function(){var a;Uc(this,a=J(this)+Qc(this));Wc(this,a>>8&256);this.b-=10},function(){this.j=this.aa(Qc(this));this.b-=7},function(){Rc(this,Qc(this)-1);this.b-=
|
||||
5},function(){this.T=ed(this,this.T);this.b-=5},function(){this.T=dd(this,this.T);this.b-=5},function(){this.T=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(a|this.j)>>1;Wc(this,a);this.b-=4},Ed,function(){Tc(this,M(this));this.b-=10},function(){this.ta(Sc(this),this.j);this.b-=7},function(){Tc(this,Sc(this)+1);this.b-=5},function(){this.U=ed(this,this.U);this.b-=5},function(){this.U=dd(this,this.U);this.b-=5},function(){this.U=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|
|
||||
Vc(this);Wc(this,a&256);this.b-=4},Ed,function(){var a;Uc(this,a=J(this)+Sc(this));Wc(this,a>>8&256);this.b-=10},function(){this.j=this.aa(Sc(this));this.b-=7},function(){Tc(this,Sc(this)-1);this.b-=5},function(){this.V=ed(this,this.V);this.b-=5},function(){this.V=dd(this,this.V);this.b-=5},function(){this.V=L(this);this.b-=7},function(){var a=this.j<<8;this.j=(Vc(this)<<8|this.j)>>1;Wc(this,a&256);this.b-=4},Ed,function(){Uc(this,M(this));this.b-=10},function(){var a=M(this);this.w.Ub(a,J(this));
|
||||
this.b-=16},function(){Uc(this,J(this)+1);this.b-=5},function(){this.W=ed(this,this.W);this.b-=5},function(){this.W=dd(this,this.W);this.b-=5},function(){this.W=L(this);this.b-=7},function(){var a=0,b=Vc(this);if(Yc(this)||9<(this.j&15))a|=6;if(b||154<=this.j)a|=96,b=1;this.j=ad(this,a);Wc(this,b?256:0);this.b-=4},Ed,function(){var a;Uc(this,a=J(this)+J(this));Wc(this,a>>8&256);this.b-=10},function(){var a;a=M(this);a=this.w.Sa(a);Uc(this,a);this.b-=16},function(){Uc(this,J(this)-1);this.b-=5},function(){this.Z=
|
||||
ed(this,this.Z);this.b-=5},function(){this.Z=dd(this,this.Z);this.b-=5},function(){this.Z=L(this);this.b-=7},function(){this.j=~this.j&255;this.b-=4},Ed,function(){this.la=M(this)&65535;this.b-=10},function(){this.ta(M(this),this.j);this.b-=13},function(){this.la=this.la+1&65535;this.b-=5},function(){var a=J(this);this.ta(a,ed(this,this.aa(a)));this.b-=10},function(){var a=J(this);this.ta(a,dd(this,this.aa(a)));this.b-=10},function(){this.ta(J(this),L(this));this.b-=10},function(){this.ba|=256;this.b-=
|
||||
4},Ed,function(){var a;Uc(this,a=J(this)+this.la);Wc(this,a>>8&256);this.b-=10},function(){this.j=this.aa(M(this));this.b-=13},function(){this.la=this.la-1&65535;this.b-=5},function(){this.j=ed(this,this.j);this.b-=5},function(){this.j=dd(this,this.j);this.b-=5},function(){this.j=L(this);this.b-=7},function(){Wc(this,Vc(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.S=this.T;this.b-=5},function(){this.S=this.U;this.b-=5},function(){this.S=this.V;this.b-=5},function(){this.S=this.W;
|
||||
this.b-=5},function(){this.S=this.Z;this.b-=5},function(){this.S=this.aa(J(this));this.b-=7},function(){this.S=this.j;this.b-=5},function(){this.T=this.S;this.b-=5},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.Z;this.b-=5},function(){this.T=this.aa(J(this));this.b-=7},function(){this.T=this.j;this.b-=5},function(){this.U=this.S;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.Z;this.b-=5},function(){this.U=this.aa(J(this));this.b-=7},function(){this.U=this.j;this.b-=5},function(){this.V=this.S;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=this.W;this.b-=5},function(){this.V=this.Z;this.b-=5},function(){this.V=this.aa(J(this));this.b-=7},function(){this.V=this.j;this.b-=5},function(){this.W=this.S;
|
||||
this.b-=5},function(){this.W=this.T;this.b-=5},function(){this.W=this.U;this.b-=5},function(){this.W=this.V;this.b-=5},function(){this.b-=5},function(){this.W=this.Z;this.b-=5},function(){this.W=this.aa(J(this));this.b-=7},function(){this.W=this.j;this.b-=5},function(){this.Z=this.S;this.b-=5},function(){this.Z=this.T;this.b-=5},function(){this.Z=this.U;this.b-=5},function(){this.Z=this.V;this.b-=5},function(){this.Z=this.W;this.b-=5},function(){this.b-=5},function(){this.Z=this.aa(J(this));this.b-=
|
||||
7},function(){this.Z=this.j;this.b-=5},function(){this.ta(J(this),this.S);this.b-=7},function(){this.ta(J(this),this.T);this.b-=7},function(){this.ta(J(this),this.U);this.b-=7},function(){this.ta(J(this),this.V);this.b-=7},function(){this.ta(J(this),this.W);this.b-=7},function(){this.ta(J(this),this.Z);this.b-=7},function(){var a=this.R-1;if(this.L.length)for(var b=0;b<this.L.length;b++)if(this.L[b](a))return;this.u|=16;this.b-=7;this.I&&jb(this,-2147483648)?(G(this,a),this.I.na()):this.va&512||(this.I&&
|
||||
G(this,a),this.na())},function(){this.ta(J(this),this.j);this.b-=7},function(){this.j=this.S;this.b-=5},function(){this.j=this.T;this.b-=5},function(){this.j=this.U;this.b-=5},function(){this.j=this.V;this.b-=5},function(){this.j=this.W;this.b-=5},function(){this.j=this.Z;this.b-=5},function(){this.j=this.aa(J(this));this.b-=7},function(){this.b-=5},function(){this.j=ad(this,this.S);this.b-=4},function(){this.j=ad(this,this.T);this.b-=4},function(){this.j=ad(this,this.U);this.b-=4},function(){this.j=
|
||||
ad(this,this.V);this.b-=4},function(){this.j=ad(this,this.W);this.b-=4},function(){this.j=ad(this,this.Z);this.b-=4},function(){this.j=ad(this,this.aa(J(this)));this.b-=7},function(){this.j=ad(this,this.j);this.b-=4},function(){this.j=bd(this,this.S);this.b-=4},function(){this.j=bd(this,this.T);this.b-=4},function(){this.j=bd(this,this.U);this.b-=4},function(){this.j=bd(this,this.V);this.b-=4},function(){this.j=bd(this,this.W);this.b-=4},function(){this.j=bd(this,this.Z);this.b-=4},function(){this.j=
|
||||
bd(this,this.aa(J(this)));this.b-=7},function(){this.j=bd(this,this.j);this.b-=4},function(){this.j=K(this,this.S);this.b-=4},function(){this.j=K(this,this.T);this.b-=4},function(){this.j=K(this,this.U);this.b-=4},function(){this.j=K(this,this.V);this.b-=4},function(){this.j=K(this,this.W);this.b-=4},function(){this.j=K(this,this.Z);this.b-=4},function(){this.j=K(this,this.aa(J(this)));this.b-=7},function(){this.j=K(this,this.j);this.b-=4},function(){this.j=zd(this,this.S);this.b-=4},function(){this.j=
|
||||
zd(this,this.T);this.b-=4},function(){this.j=zd(this,this.U);this.b-=4},function(){this.j=zd(this,this.V);this.b-=4},function(){this.j=zd(this,this.W);this.b-=4},function(){this.j=zd(this,this.Z);this.b-=4},function(){this.j=zd(this,this.aa(J(this)));this.b-=7},function(){this.j=zd(this,this.j);this.b-=4},function(){this.j=cd(this,this.S);this.b-=4},function(){this.j=cd(this,this.T);this.b-=4},function(){this.j=cd(this,this.U);this.b-=4},function(){this.j=cd(this,this.V);this.b-=4},function(){this.j=
|
||||
cd(this,this.W);this.b-=4},function(){this.j=cd(this,this.Z);this.b-=4},function(){this.j=cd(this,this.aa(J(this)));this.b-=7},function(){this.j=cd(this,this.j);this.b-=4},function(){this.j=Ad(this,this.S);this.b-=4},function(){this.j=Ad(this,this.T);this.b-=4},function(){this.j=Ad(this,this.U);this.b-=4},function(){this.j=Ad(this,this.V);this.b-=4},function(){this.j=Ad(this,this.W);this.b-=4},function(){this.j=Ad(this,this.Z);this.b-=4},function(){this.j=Ad(this,this.aa(J(this)));this.b-=7},function(){this.j=
|
||||
Ad(this,this.j);this.b-=4},function(){this.j=fd(this,this.S);this.b-=4},function(){this.j=fd(this,this.T);this.b-=4},function(){this.j=fd(this,this.U);this.b-=4},function(){this.j=fd(this,this.V);this.b-=4},function(){this.j=fd(this,this.W);this.b-=4},function(){this.j=fd(this,this.Z);this.b-=4},function(){this.j=fd(this,this.aa(J(this)));this.b-=7},function(){this.j=fd(this,this.j);this.b-=4},function(){K(this,this.S);this.b-=4},function(){K(this,this.T);this.b-=4},function(){K(this,this.U);this.b-=
|
||||
4},function(){K(this,this.V);this.b-=4},function(){K(this,this.W);this.b-=4},function(){K(this,this.Z);this.b-=4},function(){K(this,this.aa(J(this)));this.b-=7},function(){K(this,this.j);this.b-=4},function(){Zc(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){Rc(this,O(this));this.b-=10},function(){var a=M(this);Zc(this)||G(this,a);this.b-=10},Fd,function(){var a=M(this);Zc(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,Qc(this));this.b-=11},function(){this.j=ad(this,
|
||||
L(this));this.b-=7},function(){P(this,this.R);G(this,0);this.b-=11},function(){Zc(this)&&(G(this,O(this)),this.b-=6);this.b-=5},Gd,function(){var a=M(this);Zc(this)&&G(this,a);this.b-=10},Fd,function(){var a=M(this);Zc(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Hd,function(){this.j=bd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,8);this.b-=11},function(){Vc(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){Tc(this,O(this));this.b-=10},function(){var a=M(this);Vc(this)||
|
||||
G(this,a);this.b-=10},function(){var a=L(this);Kb(this.w,a,this.j,this.R+-2&65535);this.b-=10},function(){var a=M(this);Vc(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,Sc(this));this.b-=11},function(){this.j=K(this,L(this));this.b-=7},function(){P(this,this.R);G(this,16);this.b-=11},function(){Vc(this)&&(G(this,O(this)),this.b-=6);this.b-=5},Gd,function(){var a=M(this);Vc(this)&&G(this,a);this.b-=10},function(){var a=L(this);this.j=Fb(this.w,a,this.R+-2&65535)&255;this.b-=
|
||||
10},function(){var a=M(this);Vc(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Hd,function(){this.j=zd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,24);this.b-=11},function(){Xc(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){Uc(this,O(this));this.b-=10},function(){var a=M(this);Xc(this)||G(this,a);this.b-=10},function(){var a=O(this);P(this,J(this));Uc(this,a);this.b-=18},function(){var a=M(this);Xc(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,
|
||||
J(this));this.b-=11},function(){this.j=cd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,32);this.b-=11},function(){Xc(this)&&(G(this,O(this)),this.b-=6);this.b-=5},function(){G(this,J(this));this.b-=5},function(){var a=M(this);Xc(this)&&G(this,a);this.b-=10},function(){var a=J(this);Uc(this,Sc(this));Tc(this,a);this.b-=5},function(){var a=M(this);Xc(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Hd,function(){this.j=Ad(this,L(this));this.b-=7},function(){P(this,this.R);G(this,
|
||||
40);this.b-=11},function(){$c(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){var a=O(this);Nc(this,a&255|this.va&-256);this.j=a>>8;this.b-=10},function(){var a=M(this);$c(this)||G(this,a);this.b-=10},function(){this.va&=-513;this.b-=4},function(){var a=M(this);$c(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,Pc(this)&255|this.j<<8);this.b-=11},function(){this.j=fd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,48);this.b-=11},function(){$c(this)&&(G(this,
|
||||
O(this)),this.b-=6);this.b-=5},function(){this.la=J(this)&65535;this.b-=5},function(){var a=M(this);$c(this)&&G(this,a);this.b-=10},function(){this.va|=512;this.b-=4},function(){var a=M(this);$c(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Hd,function(){K(this,L(this));this.b-=7},function(){P(this,this.R);G(this,56);this.b-=11}];
|
||||
function S(a){x.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!Id[b]&&La("Unrecognized ChipSet model: "+b);this.B=Id[b]||{};a.sound&&(this.ha=null,window&&(this.ha=window.AudioContext||window.webkitAudioContext),this.ha&&new this.ha);E(this)}Xa(S);
|
||||
var T={Aa:1978.1,sd:{Ba:0,ee:1,ie:16,pe:32,ye:64,xe:128,wb:14},Wa:{Ba:1,Tc:1,md:2,hd:4,jd:16,kd:32,ld:64,wb:8},td:{Ba:2,de:3,Ge:4,fe:8,te:16,ue:32,ve:64,ge:128,wb:0},Ce:{Ba:3},Ae:{Ba:2,qe:7},Ee:{Ba:3,He:1,De:2,we:4,ne:8,he:16,ae:32},Be:{Ba:4},Fe:{Ba:5,je:1,ke:2,le:4,me:8,Ie:16}},U={Aa:100,Ja:{Ba:66,rc:1,nc:2,gd:4,se:8,re:16,pc:32,oc:64,kc:128},Sc:{Ba:66,INIT:0},Ua:{Ba:194,ce:0,jc:16,nd:32,qc:48,Xc:0,Yc:32},Kb:{Ba:162,ze:0,$c:0,Wc:0,Zc:0,Vc:0},Ka:{oe:{Ba:98},Ta:{Qc:0,Pc:1,pd:2,ud:4,Uc:5,od:6,qd:7},
|
||||
Lb:16383}},Id={SI1978:T,VT100:U};S.prototype.ma=function(){return!1};S.prototype.Qa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;this.A=a;this.L=tb(a,"Keyboard");this.Na=tb(a,"SerialPort");this.video=tb(a,"Video");Eb(b,this,this.B.Rb);Jb(b,this,this.B.Sb)};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.sd.wb,T.Wa.wb,T.td.wb,0,0,0,0]];
|
||||
U.INIT=[[U.Sc.INIT,U.Ja.nc|U.Ja.gd],[U.Ua.Xc,U.Ua.Yc],[U.Kb.$c,U.Kb.Wc,U.Kb.Zc,U.Kb.Vc],[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,11856,11824,11840,11808,11776,12E3,12E3,11857,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.B.INIT&&!this.restore(this.B.INIT)&&this.ja("reset error")};m.save=function(){var a=new H(this);switch(this.B.Aa){case T.Aa:I(a,0,[this.Ca,this.F,this.Da,this.ca,this.ga,this.ya,this.za]);break;case U.Aa:I(a,0,[this.ia,this.H]),I(a,1,[this.N,this.O]),I(a,2,[this.J,this.da,this.ra,this.qa]),I(a,3,[this.X,this.u,this.P,this.ea,this.K])}return a.data()};
|
||||
m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.B.Aa){case T.Aa:return this.Ca=b[0],this.F=b[1],this.Da=b[2],this.ca=b[3],this.ga=b[4],this.ya=b[5],this.za=b[6],!0;case U.Aa:return this.ia=b[0],this.H=b[1],b=a[1],this.N=b[0],this.O=b[1],b=a[2],this.J=b[0],this.da=b[1],this.ra=b[2],this.qa=b[3],b=a[3],this.X=b[0],this.u=b[1],this.P=b[2],this.ea=b[3],this.K=b[4],!0}return!1};m.start=function(){};m.stop=function(){};m.Bd=function(a,b){var c=this.Ca;D(this,a,null,b,"STATUS0",c,!0);return c};
|
||||
m.Cd=function(a,b){var c=this.F;D(this,a,null,b,"STATUS1",c,!0);return c};m.Dd=function(a,b){var c=this.Da;D(this,a,null,b,"STATUS2",c,!0);return c};m.Ad=function(a,b){var c=this.ca>>8-this.ga&255;D(this,a,null,b,"SHIFT.RESULT",c,!0);return c};m.Ld=function(a,b,c){D(this,a,b,c,"SHIFT.COUNT",null,!0);this.ga=b};m.Nd=function(a,b,c){D(this,a,b,c,"SOUND1",null,!0);this.ya=b};m.Md=function(a,b,c){D(this,a,b,c,"SHIFT.DATA",null,!0);this.ca=b<<8|this.ca>>8};
|
||||
m.Od=function(a,b,c){D(this,a,b,c,"SOUND2",null,!0);this.za=b};m.Pd=function(a,b,c){D(this,a,b,c,"WATCHDOG",null,!0)};function Jd(a){var b=0,c=0,d=~a.X;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.Ed=function(a,b){var c=this.H,c=c&~U.Ja.oc;if((Ec(this.b)&64)<<1&&(c|=U.Ja.oc,c!=this.H)){var d,e;d=this.P&1;e=this.P>>1&7;switch(e){case U.Ka.Ta.qd:break;case U.Ka.Ta.Pc:this.X=this.X<<1|d;break;case U.Ka.Ta.Uc:d=Jd(this);this.K[d]=U.Ka.Lb;ib(this,"doNVRCommand(): erase data at addr "+t(d));break;case U.Ka.Ta.Qc:this.u=this.u<<1|d;break;case U.Ka.Ta.ud:d=Jd(this);e=this.u&U.Ka.Lb;this.K[d]=e;ib(this,"doNVRCommand(): write data "+t(e)+" to addr "+t(d));break;case U.Ka.Ta.od:d=Jd(this);e=this.K[d];
|
||||
null==e&&(e=U.Ka.Lb);this.u=e;ib(this,"doNVRCommand(): read data "+t(e)+" from addr "+t(d));break;case U.Ka.Ta.pd:this.u<<=1;this.ea=this.u&U.Ka.Lb+1;break;default:ib(this,"doNVRCommand(): unrecognized command 0x"+n(e,2))}}c&=~U.Ja.pc;this.ea&&(c|=U.Ja.pc);c&=~U.Ja.kc;this.L&&this.L.$b()&&(c|=U.Ja.kc);c&=~U.Ja.rc;this.Na&&this.Na.$b()&&(c|=U.Ja.rc);this.H=c;D(this,a,null,b,"FLAGS",c);return c};m.Qd=function(a,b,c){D(this,a,b,c,"BRIGHTNESS");this.ia=b};
|
||||
m.Td=function(a,b,c){D(this,a,b,c,"NVR.LATCH");this.P=b};m.Sd=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,ib(b,"updateScrollOffset("+a+")"),b.hb!==a&&((b.hb=a)?Kd(b,-1):b.yb=!0));break;case 2:switch(a){case 0:this.da=~this.da;break;case 2:case 3:this.ra=3-a}break;case 3:this.qa=a}};
|
||||
m.Rd=function(a,b,c){D(this,a,b,c,"DC011");b&U.Ua.nd?(b&=U.Ua.qc,this.O!=b&&(this.O=b,this.video&&(a=this.video,b=this.O==U.Ua.qc?50:60,ib(a,"updateRate("+b+")"),a.ac=b))):(b&=U.Ua.jc,this.N!=b&&(this.N=b,this.video&&(a=this.N==U.Ua.jc?132:80,b=this.video,ib(b,"updateDimensions("+a+","+(80<a&&this.H&U.Ja.nc?14:24)+")"),b.ea=a,b.oa=b.zc,80<a&&b.oa--,Ld(b)&&Md(b))))};T.Rb={0:S.prototype.Bd,1:S.prototype.Cd,2:S.prototype.Dd,3:S.prototype.Ad};
|
||||
T.Sb={2:S.prototype.Ld,3:S.prototype.Nd,4:S.prototype.Md,5:S.prototype.Od,6:S.prototype.Pd};U.Rb={66:S.prototype.Ed};U.Sb={66:S.prototype.Qd,98:S.prototype.Td,162:S.prototype.Sd,194:S.prototype.Rd};Ja(function(){for(var a=B(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new S(d);gb(d,c)}});
|
||||
function Nd(a){x.call(this,"ROM",a,Nd);this.A=null;this.F=a.addr;this.u=a.size;this.H=a.writable;this.B=a.alias;this.J=a.file;this.L=da(this.J);if(this.J){a=this.J;var b=ea(this.L);"json"!=b&&"hex"!=b&&(a=qa()+"/api/v1/dump?file="+this.J+"&format=bytes&decimal=true");var c=this;pa(a,null,!0,function(a,b,f){Od(c,a,b,f)})}}Xa(Nd);var Pd=[0,5];Nd.prototype.Qa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;Qd(this)};
|
||||
Nd.prototype.Ea=function(){if(this.Ra){if(this.I){var a=this.I,b=this.id,c=this.F,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=la(p,k,a.Ya);0>q&&p.splice(-(q+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.H.push({Je:b,G:c,Gd:d,Ra:e,sc:f})}delete this.Ra}return!0};Nd.prototype.Ha=function(){return!0};
|
||||
function Od(a,b,c,d){if(d)a.ja("Unable to load system ROM (error "+d+": "+b+")");else{ab(a.Yb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.A=f;else if(h)for(a.A=Array(4*h.length),d=c=0;c<h.length;c++)a.A[d++]=h[c]&255,a.A[d++]=h[c]>>8&255,a.A[d++]=h[c]>>16&255,a.A[d++]=h[c]>>24&255;else a.A=e;a.Ra=e.symbols;if(!a.A.length){u("Empty ROM: "+b);return}if(1==a.A.length){u(a.A[0]);return}}catch(g){a.ja("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.A=Array(b.length),e=0;e<b.length;e++)a.A[e]=ca(b[e],16);Qd(a)}}
|
||||
function Qd(a){if(!mb(a))if(!a.J)E(a);else if(a.A&&a.w){a.u||(a.u=a.A.length);if(a.A.length!=a.u)nb(a,"ROM size (0x"+n(a.A.length)+") does not match specified size ("+("0x"+n(a.u))+")");else if(Rd(a,a.F)){var b=[];"number"==typeof a.B?b.push(a.B):null!=a.B&&a.B.length&&(b=a.B);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.w,h=d.u,g=[],k=d.F>>>f.pa;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.pa;0<d&&e<f.Y.length;){k=g[h++];if(!k)break;f.Y[e++]=k;d-=f.Ga}}delete a.A}E(a)}}
|
||||
function Rd(a,b){if(xb(a.w,b,a.u,a.H?1:Zb)){var c;for(c=0;c<a.A.length;c++)Cb(a.w,b+c,a.A[c]);if(a.H&&256==b){for(c=0;c<Pd.length;c++)Cb(a.w,Pd[c],118);Mc(a.b,function(a){return function(b){if(0<=Pd.indexOf(b)){var c=!1,h=a.b,g=a.I;if(5==b)switch(c=!0,h.T){case 2:Sd(a,String.fromCharCode(h.V));break;case 9:for(var k=Sc(h),l="",p=255;p--;){var q=a.b.aa(k++);if(36==q)break;l+=String.fromCharCode(q)}Sd(a,l);break;default:c=!1}c?Gd.call(h):g&&(a.g("\nCP/M vector "+t(b)),G(h,b),g.na());b=!0}else b=!1;
|
||||
return b}}(a));Oc(a.b,b)}return!0}return!1}function Sd(a,b){b=b.replace(/\r/g,"");a.Fa&&(a.Fa.value+=b,a.Fa.scrollTop=a.Fa.scrollHeight)}Ja(function(){for(var a=B(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Nd(d);gb(d,c)}});function Td(a){x.call(this,"RAM",a,Td);this.B=a.addr;this.u=a.size;this.A=!1}Xa(Td);m=Td.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.A&&this.u&&xb(this.w,this.B,this.u,1)&&(this.A=!0);this.A||u("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ja(function(){for(var a=B(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Td(d);gb(d,c)}});function Ud(a){x.call(this,"Keyboard",a,Ud,65536);(a=a.model)&&!Vd[a]&&La("Unrecognized Keyboard model: "+a);this.w=Vd[a]||{};this.reset();E(this)}Xa(Ud);
|
||||
var Wd={Aa:1978.1,C:{},ic:{65:37,68:39,76:32},xb:{},Va:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},V={Aa:100,C:{},ic:{},xb:{},Va:{setup:120},Rc:{Ba:130,INIT:127},La:{Ba:130,ed:1,dd:2,cd:4,bd:8,fd:16,mc:32,lc:63,rd:64,be:128,INIT:0},ad: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;
|
||||
x.prototype={constructor:x,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ma: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.ja=function(a){this.g(a,this.Ya)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.Ya+": "+a)},ja:function(a,b,c){Ma(a,b,c||this.type)},Ea:function(){return this.D.ua=!0},Ha:function(a,b){b&&(this.D.ua=!1);return!0}};function D(a,b,c,d,e,f,h){a.I&&(!0===h?h=0:null==h&&(h=a.sa),gb(a.I,a,b,c,d,e,f,h))}function E(a,b){a.I&&hb(a,0)&&a.I.message(b,void 0)}function hb(a,b){if(a.I){a===a.I?b|=0:b=b||a.sa;var c=a.I.sa&b;return!!b&&c===b||!!(c&a.I.wd)}return!1}
|
||||
function ib(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 jb(a,b){a.D.lb&&(b?a.D.Wb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.D.lb}function F(a){if(!a.D.nb&&(a.D.Ma=!0,a.D.Ma)){var b=a.Ob;a.Ob=null;b&&b()}}function kb(a,b){b&&(a.D.Ma?b():a.Ob=b);return a.D.Ma}function lb(a,b){a.D.nb=!0;a.ja(b)}
|
||||
var mb="undefined"!==typeof ArrayBuffer,nb=[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 ob(a){x.call(this,"Panel",a,ob)}Ya(ob);m=ob.prototype;m.ma=function(a,b,c,d){return this.A&&this.A.ma(a,b,c,d)||this.b&&this.b.ma(a,b,c,d)||this.K&&this.K.ma(a,b,c,d)||this.I&&this.I.ma(a,b,c,d)?!0:this.parent.ma.call(this,a,b,c,d)};m.Qa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.I=d;this.K=rb(a,"Keyboard")};m.Ea=function(a,b){b||sb();return!0};m.Ha=function(){return!0};m.Ia=function(){};
|
||||
function sb(){for(var a=!1,b=B(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f=db(e.id);f||(a=!0,f=new ob(e));fb(f,d);a&&F(f)}}Ka(sb);
|
||||
function tb(a,b,c){x.call(this,"Bus",a,tb);this.b=b;this.I=c;this.H=a.busWidth||16;this.M=Math.pow(2,this.H);this.B=this.M-1|0;this.pa=16>=this.H?10:20>=this.H?12:24>=this.H?14:15;this.Ga=1<<this.pa;this.O=this.Ga>>2;this.w=this.Ga-1;this.L=this.M/this.Ga|0;this.K=this.L-1;this.A=[];this.u=[];this.F=this.J=!1;this.P=[];this.S=[];a=new G;ub(a,this.I);this.Y=Array(this.L);for(b=0;b<this.L;b++)this.Y[b]=a;F(this)}Ya(tb);m=tb.prototype;m.reset=function(){};m.Ea=function(a,b){b||this.reset();return!0};
|
||||
function vb(a,b,c,d){for(var e=b,f=c,h=e>>>a.pa;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 wb(1,e,f)}e=new G(e,l,a.Ga,d);ub(e,a.I,g);a.Y[h++]=e;e=k+a.Ga;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+xb[d]+" at "+t(b)),!0):wb(2,b,c)}m.aa=function(a){return this.Y[(a&this.B)>>>this.pa].tb(a&this.w,a)};
|
||||
function yb(a,b){return a.Y[(b&a.B)>>>a.pa].Hb(b&a.w,b)}m.Sa=function(a){var b=a&this.w,c=(a&this.B)>>>this.pa;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 zb(a,b){var c=b&a.w,d=(b&a.B)>>>a.pa;return c!=a.w?a.Y[d].fc(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.B)>>>this.pa].vb(a&this.w,b&255,a)};function Ab(a,b,c){a.Y[(b&a.B)>>>a.pa].Jb(b&a.w,c&255,b)}
|
||||
m.Ub=function(a,b){var c=a&this.w,d=(a&this.B)>>>this.pa;c!=this.w?this.Y[d].Oc(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 Bb(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.A[b]&&(a.A[b]=[null,!1]);a.A[b][1]=!a.A[b][1];return a.A[b][1]}function Cb(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.A[k]?u("Input port "+t(k)+" already registered"):f.A[k]=[g,!1]}}
|
||||
function Db(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.A[b],g=a.P[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]&&Eb(a.I,b,l)):a.I&&(gb(a.I,a,b,null,c),a.F&&Eb(a.I,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Fb(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 Gb(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 Hb(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]&&Jb(a.I,b,k)}else a.I&&(gb(a.I,a,b,k,d),a.J&&Jb(a.I,b,k));f+=g<<3;b+=g;e-=g}}
|
||||
function wb(a,b,c){u("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Kb;if(mb){var Lb=new ArrayBuffer(2);(new DataView(Lb)).setUint16(0,256,!0);Kb=256===(new Uint16Array(Lb))[0]}else Kb=!1;var Ub=Kb;
|
||||
function G(a,b,c,d){this.id=Vb+=2;this.b=null;this.G=a;this.Ib=b;this.size=c||0;this.type=d||Wb;this.A=d==Xb;ub(this);this.Oa=this.vc=!1;if(c)if(mb)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),Yb(this,Ub?Zb:$b);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Yb(this,ac)}else Yb(this)}var Wb=0,Xb=2,xb=["NONE","RAM","ROM","VID","H/W"],Vb=0;
|
||||
G.prototype={constructor:G,parent:null,save:function(){var a,b;if(mb)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(mb)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++&&bc(this,cc,!1):0===this.N++&&dc(this,cc,!1)},L:function(){this.I&&hb(this.I,129)&&this.I.message("attempt to read invalid block %"+n(this.G),!0);
|
||||
return 255},B:function(a,b){this.I&&hb(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)},ba:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ha: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},ya:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.Oa=!0},Da: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},P:function(a,b){if(this.I&&null!=this.G){var c=this.I;ec(c,this.G+a,1,c.P)&&c.na(!0)}return this.Hb(a,b)},ea:function(a,b){if(this.I&&null!=this.G){var c=this.I;ec(c,this.G+a,2,c.P)&&c.na(!0)}return this.fc(a,b)},qa:function(a,b,c){if(this.I&&null!=this.G){var d=this.I;ec(d,this.G+a,1,d.J)&&d.na(!0)}this.A?this.B(a,b,c):this.Jb(a,b,c)},Ya:function(a,
|
||||
b,c){if(this.I&&null!=this.G){var d=this.I;ec(d,this.G+a,2,d.J)&&d.na(!0)}this.A?this.B(a,b,c):this.hc(a,b,c)},O:function(a){return this.w[a]},S:function(a){return this.w[a]},da:function(a){return this.J.getUint16(a,!0)},ga:function(a){return a&1?this.w[a]|this.w[a+1]<<8:this.K[a>>1]},ia:function(a,b){this.w[a]=b;this.Oa=!0},ra:function(a,b){this.w[a]=b;this.Oa=!0},za:function(a,b){this.J.setUint16(a,b,!0);this.Oa=!0},Ca:function(a,b){a&1?(this.w[a]=b,this.w[a+1]=b>>8):this.K[a>>1]=b;this.Oa=!0}};
|
||||
function ub(a,b,c){a.I=b;a.N=a.u=0;c&&((a.N=c.N)&&dc(a,cc,!1),(a.u=c.u)&&bc(a,cc,!1))}function fc(a,b){b?0===--a.u&&(a.vb=a.A?a.B:a.Jb,a.Oc=a.A?a.H:a.hc):0===--a.N&&(a.tb=a.Hb,a.Lc=a.fc)}function bc(a,b,c){c&&a.u||(a.vb=!a.A&&b[2]||a.B,a.Oc=!a.A&&b[3]||a.H);if(c||void 0===c)a.Jb=b[2]||a.B,a.hc=b[3]||a.H}function dc(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.fc=b[1]||a.M}function Yb(a,b){b||(b=gc);dc(a,b,void 0);bc(a,b,void 0)}
|
||||
var gc=[],ac=[G.prototype.ba,G.prototype.ha,G.prototype.ya,G.prototype.Da],cc=[G.prototype.P,G.prototype.ea,G.prototype.qa,G.prototype.Ya];if(mb)var $b=[G.prototype.O,G.prototype.da,G.prototype.ia,G.prototype.za],Zb=[G.prototype.S,G.prototype.ga,G.prototype.ra,G.prototype.Ca];
|
||||
function hc(a,b){x.call(this,"CPU",a,hc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.fb=c;this.i.Qb=0;this.i.Ta=d;this.i.bc=Math.round(this.i.fb/1E4)/100;this.i.cb=this.i.bc*this.i.Ta;this.D.xa=!1;this.D.Xb=!1;this.D.uc=a.autoStart;this.D.wc=!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.ba=this.gb.bind(this);F(this)}Ya(hc);var ic=["power","reset"];m=hc.prototype;
|
||||
m.Qa=function(a,b,c,d){this.A=a;this.w=b;this.I=d;for(b=0;b<ic.length;b++)(c=this.N[ic[b]])&&this.A.ma(null,ic[b],c);this.M=(b=rb(a,"Video"))&&Math.max(b.Zd,b.Zb)||60;this.J=rb(a,"ChipSet");a=jc(a,"autoStart");null!=a&&(this.D.uc="true"==a?!0:"false"==a?!1:!!a);F(this)};m.reset=function(){this.i.Qb=0};m.save=function(){return null};m.restore=function(){return!1};
|
||||
m.Ea=function(a,b){if(!b){if(a&&this.restore){kc(this);if(!this.restore(a))return!1;lc(this)}else this.reset();if(this.I){var c=this.I;c.g("Type ? for help with PC8080 Debugger commands");c.Ia();if(c.Da){var d=c.Da;c.Da=null;mc(c,d)}}else this.g("No debugger detected")}nc(this);return!0};m.Ha=function(a){return a?this.save():!0};function oc(a){(a.D.uc||!a.I&&void 0===a.N.run)&&a.gb(!0)}m.xc=function(){return 0};
|
||||
function lc(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 pc(a,b){if(a.D.mb){var c=!1;a.i.Bb=a.i.Bb+a.xc()|0;a.i.qb-=b;0>=a.i.qb&&(a.i.qb+=a.i.pb,c=!0);0<=a.i.rb&&a.i.rb<=Cc(a)&&(a.i.pb=a.i.rb=-1,lc(a),a.na(),c=!0);c&&a.g(Cc(a)+" cycles: checksum="+n(a.i.Bb))}}
|
||||
m.ma=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.A)if(a=d.A,a.D.ua)a=!0;else{var b=null,c,g=cb(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.ua);c++);c==g.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.D.Ma?"powered yet":"ready yet"+(b.Ob?" (waiting for notification)":""))+".");a=!1}a&&(d.D.xa?d.na(!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(){Dc(d,d.i.Ta<<1,!0)},c.textContent=this.i.cb.toFixed(2)+"Mhz",a=!0}return a};function Ec(a,b,c){a.K+=b;c&&(a.B=a.b=0)}
|
||||
function Fc(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.bc);a.i.Cc=Math.round(1E3/30);a.i.Hd=Math.floor(a.i.fb/c*d);a.i.dc=Math.floor(a.i.fb/30*d);a.i.Ec=Math.floor(a.i.fb/a.M*d);a.i.Dc=Math.floor(a.i.fb/2*d);b||(a.i.sb=a.i.dc,a.i.Eb=a.i.Ec,a.i.Db=a.i.Dc);a.i.ec=0}function Cc(a){return a.K+a.H+a.B-a.b}function kc(a){a.i.bb=0;a.K=a.H=a.B=a.b=0;lc(a);Dc(a,1)}
|
||||
function Dc(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.bc*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.A&&a.A.hb()}Ec(a,a.H);a.H=0;a.i.ob=na();a.i.eb=0;Fc(a);return d}function Gc(a,b){var c=a.F.length;a.F.push([-1,b]);return c}
|
||||
m.gb=function(a){if(ib(this,!0)){if(!this.D.xa){Dc(this);this.A&&this.A.start(this.i.ob,Cc(this));this.D.xa=!0;this.D.Xb=!0;this.J&&this.J.start();var b=this.N.run;b&&(b.textContent="Halt");this.A&&(this.A.Ia(!0),a&&this.A.hb(!0))}this.i.ec>=this.i.fb&&Fc(this,!0);this.i.Fb=0;this.i.Pb=na();this.i.eb&&(a=this.i.Pb-this.i.eb,a>this.i.Cc&&(this.i.ob+=a,this.i.ob>this.i.Pb&&(this.i.ob=this.i.Pb)));try{do{var c=this.D.mb?1:this.i.Hd;a=c;for(b=0;b<this.F.length;b++){var d=this.F[b];0>d[0]||a>d[0]&&(a=
|
||||
d[0])}c=a;this.ub(c);var e=this.B-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;Ec(this,0,!0);pc(this,e);this.i.Eb-=e;0>=this.i.Eb&&(this.i.Eb+=this.i.Ec,this.A&&Hc(this.A,this.i.Qb++),this.i.Qb>this.M&&(this.i.Qb=0));this.i.Db-=e;0>=this.i.Db&&(this.i.Db+=this.i.Dc,this.A&&this.A.Ia());this.i.sb-=e;if(0>=this.i.sb){this.i.sb+=this.i.dc;break}}while(this.D.xa)}catch(h){this.na();nc(this);this.A&&this.A.stop(na(),Cc(this));
|
||||
ib(this,!1);lb(this,h.stack||h.message);return}c=setTimeout;d=this.ba;this.i.eb=na();e=this.i.Cc;this.i.Fb&&(e=Math.round(e*this.i.Fb/this.i.dc));e-=this.i.eb-this.i.Pb;if(f=this.i.eb-this.i.ob)this.i.bb=Math.round(this.H/(10*f))/100,864E5<=f&&(this.K=0,Dc(this));if(0>e||this.i.bb<this.i.cb)e=0;this.i.ec+=this.i.Fb;this.i.eb+=e;c(d,e)}else nc(this),this.A&&this.A.stop(na(),Cc(this))};m.ub=function(){return 0};
|
||||
m.na=function(a){jb(this,!0);this.B-=this.b;this.b=0;Ec(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.Nb=a};function nc(a,b){a.A&&(Hc(a.A,-1),a.A.Ia(b))}function Ic(a){this.Bc=+a.model||8080;hc.call(this,a,1E6);this.O=Jc;kc(this);this.D.Nb=this.D.xd=!1;this.S=0;this.L=[];this.P=0;Kc(this)}Ya(Ic,hc);function Lc(a,b){a.L.push(b)}m=Ic.prototype;m.reset=function(){this.D.xa&&this.na();Kc(this);kc(this);this.D.nb=!1;this.parent.reset.call(this)};
|
||||
function Kc(a){a.j=0;a.T=0;a.U=0;a.V=0;a.W=0;a.X=0;a.Z=0;a.la=0;H(a,a.P);Mc(a,0);a.u=0}function Nc(a,b){a.P=b;H(a,b)}m.xc=function(){var a=this.j+this.T+this.U+this.V+this.W+this.X+this.Z|0;return a=a+this.la+this.R+Oc(this)|0};
|
||||
m.save=function(){var a=new Pc(this);I(a,0,[this.j,this.T,this.U,this.V,this.W,this.X,this.Z,this.la,this.R,Oc(this)]);I(a,1,[this.u,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.vc){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.la=b[7]&65535;H(this,b[8]);Mc(this,b[9]);b=a[1];this.u=b[0];this.K=b[1];Dc(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.ma=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.ma.call(this,a,b,c)}return d};function Qc(a){return a.T<<8|a.U}function Rc(a,b){a.T=b>>8&255;a.U=b&255}function Sc(a){return a.V<<8|a.W}function Tc(a,b){a.V=b>>8&255;a.W=b&255}function J(a){return a.X<<8|a.Z}
|
||||
function Uc(a,b){a.X=b>>8&255;a.Z=b&255}function H(a,b){a.R=b&65535}function Vc(a){return a.ca&256?1:0}function Wc(a,b){a.ca=a.ca&255|b}function Xc(a){return nb[a.fa&255]?4:0}function Yc(a){return(a.fa^a.wa)&16?16:0}function Zc(a){return a.ca&255?0:64}function $c(a){return a.fa&128?128:0}function Oc(a){return a.va&-214|$c(a)|Zc(a)|Yc(a)|Xc(a)|Vc(a)}function Mc(a,b){a.ca=a.fa=a.wa=0;b&1&&(a.ca|=256);b&4||(a.fa|=1);b&16&&(a.wa|=16);b&64||(a.ca|=255);b&128&&(a.fa^=192);a.va=a.va&-726|b&512|2}
|
||||
function ad(a,b){a.wa=a.j^b;return a.fa=(a.ca=a.j+b)&255}function bd(a,b){a.wa=a.j^b;return a.fa=(a.ca=a.j+b+(a.ca&256?1:0))&255}function cd(a,b){a.ca=a.fa=a.wa=a.j&b;(a.j|b)&8&&(a.wa^=16);return a.ca}function dd(a,b){a.wa=b^255;b=a.fa=b+255&255;a.ca=a.ca&-256|b;return b}function ed(a,b){a.wa=b;b=a.fa=b+1&255;a.ca=a.ca&-256|b;return b}function fd(a,b){return a.fa=a.ca=a.wa=a.j|b}function K(a,b){b^=255;a.wa=a.j^b;return a.fa=(a.ca=a.j+b+1^256)&255}
|
||||
function gd(a,b){b^=255;a.wa=a.j^b;return a.fa=(a.ca=a.j+b+(a.ca&256?0:1)^256)&255}function Ad(a,b){return a.fa=a.ca=a.wa=a.j^b}m.aa=function(a){return this.w.aa(a)};m.ta=function(a,b){this.w.ta(a,b)};function L(a){var b=a.aa(a.R);H(a,a.R+1);return b}function M(a){var b=a.w.Sa(a.R);H(a,a.R+2);return b}function O(a){var b=a.w.Sa(a.la);a.la=a.la+2&65535;return b}function P(a,b){a.la=a.la-2&65535;a.w.Ub(a.la,b)}function Bd(a,b){a.u|=1<<b}
|
||||
function R(a,b,c,d){d=d||2;a.N[b]&&(void 0===c&&(lb(a,"Value for "+b+" is invalid"),a.na()),c=!a.D.xa||a.D.wc?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.wc)&&(R(this,"A",this.j),R(this,"B",this.T),R(this,"C",this.U),R(this,"BC",Qc(this),4),R(this,"D",this.V),R(this,"E",this.W),R(this,"DE",Sc(this),4),R(this,"H",this.X),R(this,"L",this.Z),R(this,"HL",J(this),4),R(this,"SP",this.la,4),R(this,"PC",this.R,4),a=Oc(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.Nb=!0;var b=this.D.xd=this.I&&Cd(this.I),c=a?this.D.Xb?0:1:-1;this.D.Xb=!1;this.B=this.b=a;do{if(this.u){if(a&&this.u&255&&this.va&512){for(var d=0;8>d&&!(this.u&1<<d);d++);this.u&=~(0>d?255:1<<d);this.va&=-513;this.u&=-257;this.O[199|d<<3].call(this)}if(this.u&256){this.b=0;break}}if(b){if(Dd(this.I,this.R,c)){this.na();break}c=1}this.O[L(this)].call(this)}while(0<this.b);return this.D.Nb?this.B-this.b:void 0===this.D.Nb?0:-1};
|
||||
Ka(function(){for(var a=B(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Ic(d);fb(d,c)}});function Ed(){this.b-=4}function Fd(){H(this,M(this));this.b-=10}function Gd(){H(this,O(this));this.b-=10}function Hd(){var a=M(this);P(this,this.R);H(this,a);this.b-=17}
|
||||
var Jc=[Ed,function(){Rc(this,M(this));this.b-=10},function(){this.ta(Qc(this),this.j);this.b-=7},function(){Rc(this,Qc(this)+1);this.b-=5},function(){this.T=ed(this,this.T);this.b-=5},function(){this.T=dd(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;Wc(this,a&256);this.b-=4},Ed,function(){var a;Uc(this,a=J(this)+Qc(this));Wc(this,a>>8&256);this.b-=10},function(){this.j=this.aa(Qc(this));this.b-=7},function(){Rc(this,Qc(this)-1);this.b-=
|
||||
5},function(){this.U=ed(this,this.U);this.b-=5},function(){this.U=dd(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;Wc(this,a);this.b-=4},Ed,function(){Tc(this,M(this));this.b-=10},function(){this.ta(Sc(this),this.j);this.b-=7},function(){Tc(this,Sc(this)+1);this.b-=5},function(){this.V=ed(this,this.V);this.b-=5},function(){this.V=dd(this,this.V);this.b-=5},function(){this.V=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|
|
||||
Vc(this);Wc(this,a&256);this.b-=4},Ed,function(){var a;Uc(this,a=J(this)+Sc(this));Wc(this,a>>8&256);this.b-=10},function(){this.j=this.aa(Sc(this));this.b-=7},function(){Tc(this,Sc(this)-1);this.b-=5},function(){this.W=ed(this,this.W);this.b-=5},function(){this.W=dd(this,this.W);this.b-=5},function(){this.W=L(this);this.b-=7},function(){var a=this.j<<8;this.j=(Vc(this)<<8|this.j)>>1;Wc(this,a&256);this.b-=4},Ed,function(){Uc(this,M(this));this.b-=10},function(){var a=M(this);this.w.Ub(a,J(this));
|
||||
this.b-=16},function(){Uc(this,J(this)+1);this.b-=5},function(){this.X=ed(this,this.X);this.b-=5},function(){this.X=dd(this,this.X);this.b-=5},function(){this.X=L(this);this.b-=7},function(){var a=0,b=Vc(this);if(Yc(this)||9<(this.j&15))a|=6;if(b||154<=this.j)a|=96,b=1;this.j=ad(this,a);Wc(this,b?256:0);this.b-=4},Ed,function(){var a;Uc(this,a=J(this)+J(this));Wc(this,a>>8&256);this.b-=10},function(){var a;a=M(this);a=this.w.Sa(a);Uc(this,a);this.b-=16},function(){Uc(this,J(this)-1);this.b-=5},function(){this.Z=
|
||||
ed(this,this.Z);this.b-=5},function(){this.Z=dd(this,this.Z);this.b-=5},function(){this.Z=L(this);this.b-=7},function(){this.j=~this.j&255;this.b-=4},Ed,function(){this.la=M(this)&65535;this.b-=10},function(){this.ta(M(this),this.j);this.b-=13},function(){this.la=this.la+1&65535;this.b-=5},function(){var a=J(this);this.ta(a,ed(this,this.aa(a)));this.b-=10},function(){var a=J(this);this.ta(a,dd(this,this.aa(a)));this.b-=10},function(){this.ta(J(this),L(this));this.b-=10},function(){this.ca|=256;this.b-=
|
||||
4},Ed,function(){var a;Uc(this,a=J(this)+this.la);Wc(this,a>>8&256);this.b-=10},function(){this.j=this.aa(M(this));this.b-=13},function(){this.la=this.la-1&65535;this.b-=5},function(){this.j=ed(this,this.j);this.b-=5},function(){this.j=dd(this,this.j);this.b-=5},function(){this.j=L(this);this.b-=7},function(){Wc(this,Vc(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.aa(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.aa(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=this.W;this.b-=5},function(){this.V=this.X;this.b-=5},function(){this.V=this.Z;this.b-=5},function(){this.V=this.aa(J(this));this.b-=7},function(){this.V=this.j;this.b-=5},function(){this.W=this.T;this.b-=5},function(){this.W=this.U;this.b-=5},function(){this.W=this.V;this.b-=5},function(){this.b-=5},function(){this.W=this.X;this.b-=5},function(){this.W=this.Z;this.b-=5},function(){this.W=this.aa(J(this));this.b-=7},function(){this.W=this.j;this.b-=5},function(){this.X=this.T;
|
||||
this.b-=5},function(){this.X=this.U;this.b-=5},function(){this.X=this.V;this.b-=5},function(){this.X=this.W;this.b-=5},function(){this.b-=5},function(){this.X=this.Z;this.b-=5},function(){this.X=this.aa(J(this));this.b-=7},function(){this.X=this.j;this.b-=5},function(){this.Z=this.T;this.b-=5},function(){this.Z=this.U;this.b-=5},function(){this.Z=this.V;this.b-=5},function(){this.Z=this.W;this.b-=5},function(){this.Z=this.X;this.b-=5},function(){this.b-=5},function(){this.Z=this.aa(J(this));this.b-=
|
||||
7},function(){this.Z=this.j;this.b-=5},function(){this.ta(J(this),this.T);this.b-=7},function(){this.ta(J(this),this.U);this.b-=7},function(){this.ta(J(this),this.V);this.b-=7},function(){this.ta(J(this),this.W);this.b-=7},function(){this.ta(J(this),this.X);this.b-=7},function(){this.ta(J(this),this.Z);this.b-=7},function(){var a=this.R-1;if(this.L.length)for(var b=0;b<this.L.length;b++)if(this.L[b](a))return;this.u|=256;this.b-=7;this.I&&hb(this,-2147483648)?(H(this,a),this.I.na()):this.va&512||
|
||||
(this.I&&H(this,a),this.na())},function(){this.ta(J(this),this.j);this.b-=7},function(){this.j=this.T;this.b-=5},function(){this.j=this.U;this.b-=5},function(){this.j=this.V;this.b-=5},function(){this.j=this.W;this.b-=5},function(){this.j=this.X;this.b-=5},function(){this.j=this.Z;this.b-=5},function(){this.j=this.aa(J(this));this.b-=7},function(){this.b-=5},function(){this.j=ad(this,this.T);this.b-=4},function(){this.j=ad(this,this.U);this.b-=4},function(){this.j=ad(this,this.V);this.b-=4},function(){this.j=
|
||||
ad(this,this.W);this.b-=4},function(){this.j=ad(this,this.X);this.b-=4},function(){this.j=ad(this,this.Z);this.b-=4},function(){this.j=ad(this,this.aa(J(this)));this.b-=7},function(){this.j=ad(this,this.j);this.b-=4},function(){this.j=bd(this,this.T);this.b-=4},function(){this.j=bd(this,this.U);this.b-=4},function(){this.j=bd(this,this.V);this.b-=4},function(){this.j=bd(this,this.W);this.b-=4},function(){this.j=bd(this,this.X);this.b-=4},function(){this.j=bd(this,this.Z);this.b-=4},function(){this.j=
|
||||
bd(this,this.aa(J(this)));this.b-=7},function(){this.j=bd(this,this.j);this.b-=4},function(){this.j=K(this,this.T);this.b-=4},function(){this.j=K(this,this.U);this.b-=4},function(){this.j=K(this,this.V);this.b-=4},function(){this.j=K(this,this.W);this.b-=4},function(){this.j=K(this,this.X);this.b-=4},function(){this.j=K(this,this.Z);this.b-=4},function(){this.j=K(this,this.aa(J(this)));this.b-=7},function(){this.j=K(this,this.j);this.b-=4},function(){this.j=gd(this,this.T);this.b-=4},function(){this.j=
|
||||
gd(this,this.U);this.b-=4},function(){this.j=gd(this,this.V);this.b-=4},function(){this.j=gd(this,this.W);this.b-=4},function(){this.j=gd(this,this.X);this.b-=4},function(){this.j=gd(this,this.Z);this.b-=4},function(){this.j=gd(this,this.aa(J(this)));this.b-=7},function(){this.j=gd(this,this.j);this.b-=4},function(){this.j=cd(this,this.T);this.b-=4},function(){this.j=cd(this,this.U);this.b-=4},function(){this.j=cd(this,this.V);this.b-=4},function(){this.j=cd(this,this.W);this.b-=4},function(){this.j=
|
||||
cd(this,this.X);this.b-=4},function(){this.j=cd(this,this.Z);this.b-=4},function(){this.j=cd(this,this.aa(J(this)));this.b-=7},function(){this.j=cd(this,this.j);this.b-=4},function(){this.j=Ad(this,this.T);this.b-=4},function(){this.j=Ad(this,this.U);this.b-=4},function(){this.j=Ad(this,this.V);this.b-=4},function(){this.j=Ad(this,this.W);this.b-=4},function(){this.j=Ad(this,this.X);this.b-=4},function(){this.j=Ad(this,this.Z);this.b-=4},function(){this.j=Ad(this,this.aa(J(this)));this.b-=7},function(){this.j=
|
||||
Ad(this,this.j);this.b-=4},function(){this.j=fd(this,this.T);this.b-=4},function(){this.j=fd(this,this.U);this.b-=4},function(){this.j=fd(this,this.V);this.b-=4},function(){this.j=fd(this,this.W);this.b-=4},function(){this.j=fd(this,this.X);this.b-=4},function(){this.j=fd(this,this.Z);this.b-=4},function(){this.j=fd(this,this.aa(J(this)));this.b-=7},function(){this.j=fd(this,this.j);this.b-=4},function(){K(this,this.T);this.b-=4},function(){K(this,this.U);this.b-=4},function(){K(this,this.V);this.b-=
|
||||
4},function(){K(this,this.W);this.b-=4},function(){K(this,this.X);this.b-=4},function(){K(this,this.Z);this.b-=4},function(){K(this,this.aa(J(this)));this.b-=7},function(){K(this,this.j);this.b-=4},function(){Zc(this)||(H(this,O(this)),this.b-=6);this.b-=5},function(){Rc(this,O(this));this.b-=10},function(){var a=M(this);Zc(this)||H(this,a);this.b-=10},Fd,function(){var a=M(this);Zc(this)||(P(this,this.R),H(this,a),this.b-=6);this.b-=11},function(){P(this,Qc(this));this.b-=11},function(){this.j=ad(this,
|
||||
L(this));this.b-=7},function(){P(this,this.R);H(this,0);this.b-=11},function(){Zc(this)&&(H(this,O(this)),this.b-=6);this.b-=5},Gd,function(){var a=M(this);Zc(this)&&H(this,a);this.b-=10},Fd,function(){var a=M(this);Zc(this)&&(P(this,this.R),H(this,a),this.b-=6);this.b-=11},Hd,function(){this.j=bd(this,L(this));this.b-=7},function(){P(this,this.R);H(this,8);this.b-=11},function(){Vc(this)||(H(this,O(this)),this.b-=6);this.b-=5},function(){Tc(this,O(this));this.b-=10},function(){var a=M(this);Vc(this)||
|
||||
H(this,a);this.b-=10},function(){var a=L(this);Hb(this.w,a,this.j,this.R+-2&65535);this.b-=10},function(){var a=M(this);Vc(this)||(P(this,this.R),H(this,a),this.b-=6);this.b-=11},function(){P(this,Sc(this));this.b-=11},function(){this.j=K(this,L(this));this.b-=7},function(){P(this,this.R);H(this,16);this.b-=11},function(){Vc(this)&&(H(this,O(this)),this.b-=6);this.b-=5},Gd,function(){var a=M(this);Vc(this)&&H(this,a);this.b-=10},function(){var a=L(this);this.j=Db(this.w,a,this.R+-2&65535)&255;this.b-=
|
||||
10},function(){var a=M(this);Vc(this)&&(P(this,this.R),H(this,a),this.b-=6);this.b-=11},Hd,function(){this.j=gd(this,L(this));this.b-=7},function(){P(this,this.R);H(this,24);this.b-=11},function(){Xc(this)||(H(this,O(this)),this.b-=6);this.b-=5},function(){Uc(this,O(this));this.b-=10},function(){var a=M(this);Xc(this)||H(this,a);this.b-=10},function(){var a=O(this);P(this,J(this));Uc(this,a);this.b-=18},function(){var a=M(this);Xc(this)||(P(this,this.R),H(this,a),this.b-=6);this.b-=11},function(){P(this,
|
||||
J(this));this.b-=11},function(){this.j=cd(this,L(this));this.b-=7},function(){P(this,this.R);H(this,32);this.b-=11},function(){Xc(this)&&(H(this,O(this)),this.b-=6);this.b-=5},function(){H(this,J(this));this.b-=5},function(){var a=M(this);Xc(this)&&H(this,a);this.b-=10},function(){var a=J(this);Uc(this,Sc(this));Tc(this,a);this.b-=5},function(){var a=M(this);Xc(this)&&(P(this,this.R),H(this,a),this.b-=6);this.b-=11},Hd,function(){this.j=Ad(this,L(this));this.b-=7},function(){P(this,this.R);H(this,
|
||||
40);this.b-=11},function(){$c(this)||(H(this,O(this)),this.b-=6);this.b-=5},function(){var a=O(this);Mc(this,a&255|this.va&-256);this.j=a>>8;this.b-=10},function(){var a=M(this);$c(this)||H(this,a);this.b-=10},function(){this.va&=-513;this.b-=4},function(){var a=M(this);$c(this)||(P(this,this.R),H(this,a),this.b-=6);this.b-=11},function(){P(this,Oc(this)&255|this.j<<8);this.b-=11},function(){this.j=fd(this,L(this));this.b-=7},function(){P(this,this.R);H(this,48);this.b-=11},function(){$c(this)&&(H(this,
|
||||
O(this)),this.b-=6);this.b-=5},function(){this.la=J(this)&65535;this.b-=5},function(){var a=M(this);$c(this)&&H(this,a);this.b-=10},function(){this.va|=512;this.b-=4},function(){var a=M(this);$c(this)&&(P(this,this.R),H(this,a),this.b-=6);this.b-=11},Hd,function(){K(this,L(this));this.b-=7},function(){P(this,this.R);H(this,56);this.b-=11}];
|
||||
function S(a){x.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!Id[b]&&Ma("Unrecognized ChipSet model: "+b);this.B=Id[b]||{};a.sound&&(this.ha=null,window&&(this.ha=window.AudioContext||window.webkitAudioContext),this.ha&&new this.ha);F(this)}Ya(S);
|
||||
var T={Aa:1978.1,sd:{Ba:0,ee:1,ie:16,pe:32,ye:64,xe:128,wb:14},Xa:{Ba:1,Tc:1,md:2,hd:4,jd:16,kd:32,ld:64,wb:8},td:{Ba:2,de:3,Ge:4,fe:8,te:16,ue:32,ve:64,ge:128,wb:0},Ce:{Ba:3},Ae:{Ba:2,qe:7},Ee:{Ba:3,He:1,De:2,we:4,ne:8,he:16,ae:32},Be:{Ba:4},Fe:{Ba:5,je:1,ke:2,le:4,me:8,Ie:16}},U={Aa:100,Ja:{Ba:66,rc:1,nc:2,gd:4,se:8,re:16,pc:32,oc:64,kc:128},Sc:{Ba:66,INIT:0},Va:{Ba:194,ce:0,jc:16,nd:32,qc:48,Xc:0,Yc:32},Kb:{Ba:162,ze:0,$c:0,Wc:0,Zc:0,Vc:0},Ka:{oe:{Ba:98},Ua:{Qc:0,Pc:1,pd:2,ud:4,Uc:5,od:6,qd:7},
|
||||
Lb:16383}},Id={SI1978:T,VT100:U};S.prototype.ma=function(){return!1};S.prototype.Qa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;this.A=a;this.K=rb(a,"Keyboard");this.Na=rb(a,"SerialPort");this.video=rb(a,"Video");Cb(b,this,this.B.Rb);Gb(b,this,this.B.Sb)};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.sd.wb,T.Xa.wb,T.td.wb,0,0,0,0]];
|
||||
U.INIT=[[U.Sc.INIT,U.Ja.nc|U.Ja.gd],[U.Va.Xc,U.Va.Yc],[U.Kb.$c,U.Kb.Wc,U.Kb.Zc,U.Kb.Vc],[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,11856,11824,11840,11808,11776,12E3,12E3,11857,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.B.INIT&&!this.restore(this.B.INIT)&&this.ja("reset error")};m.save=function(){var a=new Pc(this);switch(this.B.Aa){case T.Aa:I(a,0,[this.Ca,this.J,this.Da,this.ba,this.ga,this.ya,this.za]);break;case U.Aa:I(a,0,[this.ia,this.H]),I(a,1,[this.M,this.O]),I(a,2,[this.F,this.da,this.ra,this.qa]),I(a,3,[this.S,this.u,this.P,this.ea,this.L])}return a.data()};
|
||||
m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.B.Aa){case T.Aa:return this.Ca=b[0],this.J=b[1],this.Da=b[2],this.ba=b[3],this.ga=b[4],this.ya=b[5],this.za=b[6],!0;case U.Aa:return this.ia=b[0],this.H=b[1],b=a[1],this.M=b[0],this.O=b[1],b=a[2],this.F=b[0],this.da=b[1],this.ra=b[2],this.qa=b[3],b=a[3],this.S=b[0],this.u=b[1],this.P=b[2],this.ea=b[3],this.L=b[4],!0}return!1};m.start=function(){};m.stop=function(){};m.Bd=function(a,b){var c=this.Ca;D(this,a,null,b,"STATUS0",c,!0);return c};
|
||||
m.Cd=function(a,b){var c=this.J;D(this,a,null,b,"STATUS1",c,!0);return c};m.Dd=function(a,b){var c=this.Da;D(this,a,null,b,"STATUS2",c,!0);return c};m.Ad=function(a,b){var c=this.ba>>8-this.ga&255;D(this,a,null,b,"SHIFT.RESULT",c,!0);return c};m.Ld=function(a,b,c){D(this,a,b,c,"SHIFT.COUNT",null,!0);this.ga=b};m.Nd=function(a,b,c){D(this,a,b,c,"SOUND1",null,!0);this.ya=b};m.Md=function(a,b,c){D(this,a,b,c,"SHIFT.DATA",null,!0);this.ba=b<<8|this.ba>>8};
|
||||
m.Od=function(a,b,c){D(this,a,b,c,"SOUND2",null,!0);this.za=b};m.Pd=function(a,b,c){D(this,a,b,c,"WATCHDOG",null,!0)};function Jd(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.Ed=function(a,b){var c=this.H,c=c&~U.Ja.oc;if((Cc(this.b)&64)<<1&&(c|=U.Ja.oc,c!=this.H)){var d,e;d=this.P&1;e=this.P>>1&7;switch(e){case U.Ka.Ua.qd:break;case U.Ka.Ua.Pc:this.S=this.S<<1|d;break;case U.Ka.Ua.Uc:d=Jd(this);this.L[d]=U.Ka.Lb;E(this,"doNVRCommand(): erase data at addr "+t(d));break;case U.Ka.Ua.Qc:this.u=this.u<<1|d;break;case U.Ka.Ua.ud:d=Jd(this);e=this.u&U.Ka.Lb;this.L[d]=e;E(this,"doNVRCommand(): write data "+t(e)+" to addr "+t(d));break;case U.Ka.Ua.od:d=Jd(this);e=this.L[d];
|
||||
null==e&&(e=U.Ka.Lb);this.u=e;E(this,"doNVRCommand(): read data "+t(e)+" from addr "+t(d));break;case U.Ka.Ua.pd:this.u<<=1;this.ea=this.u&U.Ka.Lb+1;break;default:E(this,"doNVRCommand(): unrecognized command "+da(e))}}c&=~U.Ja.pc;this.ea&&(c|=U.Ja.pc);c&=~U.Ja.kc;this.K&&this.K.$b()&&(c|=U.Ja.kc);c&=~U.Ja.rc;this.Na&&this.Na.$b()&&(c|=U.Ja.rc);this.H=c;D(this,a,null,b,"FLAGS",c);return c};m.Qd=function(a,b,c){D(this,a,b,c,"BRIGHTNESS");this.ia=b};
|
||||
m.Td=function(a,b,c){D(this,a,b,c,"NVR.LATCH");this.P=b};m.Sd=function(a,b,c){D(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.F=this.F&-4|a;break;case 1:this.F=this.F&-13|a<<2;this.video&&(b=this.video,a=this.F,E(b,"updateScrollOffset("+a+")"),b.ib!==a&&((b.ib=a)?Kd(b,-1):b.yb=!0));break;case 2:switch(a){case 0:this.da=~this.da;break;case 2:case 3:this.ra=3-a}break;case 3:this.qa=a}};
|
||||
m.Rd=function(a,b,c){D(this,a,b,c,"DC011");b&U.Va.nd?(b&=U.Va.qc,this.O!=b&&(this.O=b,this.video&&(a=this.video,b=this.O==U.Va.qc?50:60,E(a,"updateRate("+b+")"),a.ac=b))):(b&=U.Va.jc,this.M!=b&&(this.M=b,this.video&&(a=this.M==U.Va.jc?132:80,b=this.video,E(b,"updateDimensions("+a+","+(80<a&&this.H&U.Ja.nc?14:24)+")"),b.ea=a,b.oa=b.zc,80<a&&b.oa--,Ld(b)&&Md(b))))};T.Rb={0:S.prototype.Bd,1:S.prototype.Cd,2:S.prototype.Dd,3:S.prototype.Ad};
|
||||
T.Sb={2:S.prototype.Ld,3:S.prototype.Nd,4:S.prototype.Md,5:S.prototype.Od,6:S.prototype.Pd};U.Rb={66:S.prototype.Ed};U.Sb={66:S.prototype.Qd,98:S.prototype.Td,162:S.prototype.Sd,194:S.prototype.Rd};Ka(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);fb(d,c)}});
|
||||
function Nd(a){x.call(this,"ROM",a,Nd);this.A=null;this.J=a.addr;this.u=a.size;this.H=a.writable;this.B=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=ra()+"/api/v1/dump?file="+this.F+"&format=bytes&decimal=true");var c=this;qa(a,null,!0,function(a,b,f){Od(c,a,b,f)})}}Ya(Nd);var Pd=[0,5];Nd.prototype.Qa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;Qd(this)};
|
||||
Nd.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=ma(p,k,a.Za);0>q&&p.splice(-(q+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.H.push({Je:b,G:c,Gd:d,Ra:e,sc:f})}delete this.Ra}return!0};Nd.prototype.Ha=function(){return!0};
|
||||
function Od(a,b,c,d){if(d)a.ja("Unable to load system ROM (error "+d+": "+b+")");else{bb(a.Yb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.A=f;else if(h)for(a.A=Array(4*h.length),d=c=0;c<h.length;c++)a.A[d++]=h[c]&255,a.A[d++]=h[c]>>8&255,a.A[d++]=h[c]>>16&255,a.A[d++]=h[c]>>24&255;else a.A=e;a.Ra=e.symbols;if(!a.A.length){u("Empty ROM: "+b);return}if(1==a.A.length){u(a.A[0]);return}}catch(g){a.ja("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.A=Array(b.length),e=0;e<b.length;e++)a.A[e]=aa(b[e],16);Qd(a)}}
|
||||
function Qd(a){if(!kb(a))if(!a.F)F(a);else if(a.A&&a.w){a.u||(a.u=a.A.length);if(a.A.length!=a.u)lb(a,"ROM size (0x"+n(a.A.length)+") does not match specified size ("+("0x"+n(a.u))+")");else if(Rd(a,a.J)){var b=[];"number"==typeof a.B?b.push(a.B):null!=a.B&&a.B.length&&(b=a.B);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.pa;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.pa;0<d&&e<f.Y.length;){k=g[h++];if(!k)break;f.Y[e++]=k;d-=f.Ga}}delete a.A}F(a)}}
|
||||
function Rd(a,b){if(vb(a.w,b,a.u,a.H?1:Xb)){var c;for(c=0;c<a.A.length;c++)Ab(a.w,b+c,a.A[c]);if(a.H&&256==b){for(c=0;c<Pd.length;c++)Ab(a.w,Pd[c],118);Lc(a.b,function(a){return function(b){if(0<=Pd.indexOf(b)){var c=!1,h=a.b,g=a.I;if(5==b)switch(c=!0,h.U){case 2:Sd(a,String.fromCharCode(h.W));break;case 9:for(var k=Sc(h),l="",p=255;p--;){var q=a.b.aa(k++);if(36==q)break;l+=String.fromCharCode(q)}Sd(a,l);break;default:c=!1}c?Gd.call(h):g&&(a.g("\nCP/M vector "+t(b)),H(h,b),g.na());b=!0}else b=!1;
|
||||
return b}}(a));Nc(a.b,b)}return!0}return!1}function Sd(a,b){b=b.replace(/\r/g,"");a.Fa&&(a.Fa.value+=b,a.Fa.scrollTop=a.Fa.scrollHeight)}Ka(function(){for(var a=B(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Nd(d);fb(d,c)}});function Td(a){x.call(this,"RAM",a,Td);this.B=a.addr;this.u=a.size;this.A=!1}Ya(Td);m=Td.prototype;m.Qa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;F(this)};m.Ea=function(a,b){b||this.reset();return!0};m.Ha=function(a){return a?this.save():!0};
|
||||
m.reset=function(){!this.A&&this.u&&vb(this.w,this.B,this.u,1)&&(this.A=!0);this.A||u("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ka(function(){for(var a=B(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Td(d);fb(d,c)}});function Ud(a){x.call(this,"Keyboard",a,Ud,65536);(a=a.model)&&!Vd[a]&&Ma("Unrecognized Keyboard model: "+a);this.w=Vd[a]||{};this.reset();F(this)}Ya(Ud);
|
||||
var Wd={Aa:1978.1,C:{},ic:{65:37,68:39,76:32},xb:{},Wa:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},V={Aa:100,C:{},ic:{},xb:{},Wa:{setup:120},Rc:{Ba:130,INIT:127},La:{Ba:130,ed:1,dd:2,cd:4,bd:8,fd:16,mc:32,lc:63,rd:64,be:128,INIT:0},ad: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[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.ed,l3:V.La.dd,l2:V.La.cd,l1:V.La.bd,locked:V.La.fd,local:V.La.mc,online:~V.La.mc};var Vd={SI1978:Wd,VT100:V};
|
||||
Ud.prototype.ma=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.M[e]){if("led"==a&&this.w.xb[b])return this.M[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return Xd(d,a,!0)},c.onkeyup=function(a){return Xd(d,a,!1)},!0;default:if(this.w.Va&&void 0!==this.w.Va[b])return this.M[e]=c,a=function(a,b){return function(){Yd(a,b,!0)}}(this,this.w.Va[b]),b=function(a,b){return function(){Yd(a,b,!1);a.A&&a.A.gb()}}(this,this.w.Va[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
|
||||
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};Ud.prototype.Qa=function(a,b,c,d){this.A=a;this.b=c;this.I=d;this.J=tb(a,"ChipSet");Eb(b,this,this.w.Rb);Jb(b,this,this.w.Sb)};Ud.prototype.Ea=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};Ud.prototype.Ha=function(a){return a?this.save():!0};V.INIT=[[V.La.INIT,V.Rc.INIT,-1]];m=Ud.prototype;m.reset=function(){this.u=[];this.w.INIT&&!this.restore(this.w.INIT)&&this.ja("reset error")};
|
||||
m.save=function(){var a=new H(this);switch(this.w.Aa){case V.Aa:I(a,0,[this.H,this.F,-1])}return a.data()};m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.w.Aa){case Wd.Aa:return!0;case V.Aa:return this.H=b[0],Zd(this,this.H&V.La.lc),this.F=b[1],this.B=b[2],!0}return!1};function Zd(a,b){for(var c in a.w.xb){var d=a.M["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 Xd(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.w.ic[e]||e,!a.w.C[e]){for(var f in a.w.Va)if(a.w.Va[f]===e){e=f;break a}e=null}e&&(d=Yd(a,e,c),b.preventDefault());return d}
|
||||
function Yd(a,b,c){var d;a:{for(d=0;d<a.u.length;d++)if(a.u[d].gc==b)break a;d=-1}if(c)0>d?a.u.push({gc:b,cc:Date.now(),Mb:!1}):(a.u[d].cc=Date.now(),a.u[d].Mb=!1);else if(0<=d){if(!a.u[d].Mb){var e=a.u[d].cc;if(e&&100>Date.now()-e)return a.u[d].Mb=!0,$d(a),!0}a.u.splice(d,1)}if(a.J){d=0;switch(b){case "1p":d=T.Wa.hd;break;case "2p":d=T.Wa.md;break;case "coin":d=T.Wa.Tc;break;case "left":d=T.Wa.kd;break;case "right":d=T.Wa.ld;break;case "fire":d=T.Wa.jd}d&&(a=a.J,b=d,a.F&=~b,c&&(a.F|=b))}return!0}
|
||||
Ud.prototype.ma=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 Xd(d,a,!0)},c.onkeyup=function(a){return Xd(d,a,!1)},!0;default:if(this.w.Wa&&void 0!==this.w.Wa[b])return this.N[e]=c,a=function(a,b){return function(){Yd(a,b,!0)}}(this,this.w.Wa[b]),b=function(a,b){return function(){Yd(a,b,!1);a.A&&a.A.hb()}}(this,this.w.Wa[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
|
||||
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};Ud.prototype.Qa=function(a,b,c,d){this.A=a;this.b=c;this.I=d;this.J=rb(a,"ChipSet");Cb(b,this,this.w.Rb);Gb(b,this,this.w.Sb)};Ud.prototype.Ea=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};Ud.prototype.Ha=function(a){return a?this.save():!0};V.INIT=[[V.La.INIT,V.Rc.INIT,-1]];m=Ud.prototype;m.reset=function(){this.u=[];this.w.INIT&&!this.restore(this.w.INIT)&&this.ja("reset error")};
|
||||
m.save=function(){var a=new Pc(this);switch(this.w.Aa){case V.Aa:I(a,0,[this.H,this.F,-1])}return a.data()};m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.w.Aa){case Wd.Aa:return!0;case V.Aa:return this.H=b[0],Zd(this,this.H&V.La.lc),this.F=b[1],this.B=b[2],!0}return!1};function Zd(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 Xd(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.w.ic[e]||e,!a.w.C[e]){for(var f in a.w.Wa)if(a.w.Wa[f]===e){e=f;break a}e=null}e&&(d=Yd(a,e,c),b.preventDefault());return d}
|
||||
function Yd(a,b,c){var d;a:{for(d=0;d<a.u.length;d++)if(a.u[d].gc==b)break a;d=-1}if(c)0>d?a.u.push({gc:b,cc:Date.now(),Mb:!1}):(a.u[d].cc=Date.now(),a.u[d].Mb=!1);else if(0<=d){if(!a.u[d].Mb){var e=a.u[d].cc;if(e&&100>Date.now()-e)return a.u[d].Mb=!0,$d(a),!0}a.u.splice(d,1)}if(a.J){d=0;switch(b){case "1p":d=T.Xa.hd;break;case "2p":d=T.Xa.md;break;case "coin":d=T.Xa.Tc;break;case "left":d=T.Xa.kd;break;case "right":d=T.Xa.ld;break;case "fire":d=T.Xa.jd}d&&(a=a.J,b=d,a.J&=~b,c&&(a.J|=b))}return!0}
|
||||
function $d(a){for(var b=0,c=-1;b<a.u.length;){if(a.u[b].Mb){var d=a.u[b].gc,e=100-(Date.now()-a.u[b].cc);if(0<e){if(0>c||c>e)c=e}else{Yd(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){$d(a)},c)}m.$b=function(){return!0};m.Fd=function(a,b){var c=this.F;0<=this.B&&(this.B<this.u.length?(c=this.u[this.B],this.B++,c=V.C[c.gc],c&128&&(c&=127)):(this.B=-1,c=V.ad),this.F=c,Bd(this.b,1));D(this,a,null,b,"KBDUART.ADDRESS",c);return c};
|
||||
m.Ud=function(a,b,c){D(this,a,b,c,"KBDUART.STATUS");this.H=b;Zd(this,b&V.La.lc);b&V.La.rd&&(this.B=0,Bd(this.b,1))};V.Rb={130:Ud.prototype.Fd};V.Sb={130:Ud.prototype.Ud};Ja(function(){for(var a=B(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Ud(d);gb(d,c)}});
|
||||
function ae(a,b,c,d,e){var f=this;this.Hc=ya("Gecko/");var h=["","moz","ms","webkit"];x.call(this,"Video",a,ae,262144);this.ca=a.screenWidth;this.P=a.screenHeight;this.ya=a.bufferAddr;this.Xd=a.bufferRAM;var g=a.bufferFormat;this.ga=g&&be[g.toUpperCase()]||ce;this.ea=a.bufferCols;this.ha=a.bufferRows;this.zc=this.oa=a.cellWidth||1;this.ka=a.cellHeight||1;this.Na=null;this.Gc=!1;this.$a=a.bufferBits||1;this.Yd=a.bufferLeft||0;if(this.B=a.bufferRotate)this.B=this.B%360,0<this.B&&(this.B-=360),-90!=
|
||||
this.B&&(this.ja("unsupported buffer rotation: "+this.B),this.B=0);this.Zb=a.interruptRate;this.Zd=a.refreshRate||60;this.O=b;this.J=c;this.Ca=(this.$d=d)||b||null;this.Vd=this.ca;this.Wd=this.P;this.Ac=this.ca/this.ea|0;this.Fc=this.P/this.ha|0;1<this.ka&&(this.ha++,this.hb=0,this.yb=!1);b=a.smoothing;(c=Sa.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.J[d]){this.J[d]=b;break}if(this.F=a.screenRotate)this.F=
|
||||
this.F%360,0<this.F&&(this.F-=360),-90!=this.F?(this.ja("unsupported screen rotation: "+this.F),this.F=0):(this.J.translate(0,this.P),this.J.rotate(this.F*Math.PI/180),this.J.scale(this.P/this.ca,this.ca/this.P));if(this.u=e)if(this.u.jb=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.u.jb){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){de(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(){de(f,null)},!1);break}}if(this.ia=a.fontROM)"json"!=ea(this.ia)&&(this.ia=qa()+"/api/v1/dump?file="+this.ia+"&format=bytes"),pa(this.ia,null,!0,function(a,b,c){ee(f,a,b,c)});this.Ab={}}Xa(ae);var ce=0,be={SI1978:1,VT100:2};
|
||||
function Ld(a){a.K=a.ea*a.oa;a.da=a.ha*a.ka;var b=a.K,c=a.da;a.B&&(b=a.da,c=a.K);a.X=0;if(!a.Xd&&(a.X=(a.K*a.$a>>3)*a.da,!xb(a.w,a.ya,a.X,3)))return!1;a.X?(a.Jc=a.J.createImageData(b,c),a.Nc=16/a.$a|0,fe(a,a.X>>1)):fe(a,(a.ea+1)*a.ha);a.N=document.createElement("canvas");a.N.width=b;a.N.height=c;a.ib=a.N.getContext("2d");a.qa={};a.Da=1<<a.$a;a.ra=Array(a.Da+2);a.ra[0]=[0,0,0,255];a.ra[1]=[255,255,255,255];1==a.ga&&(a.ra[a.Da+0]=[255,255,0,255],a.ra[a.Da+1]=[0,255,0,255]);2==a.ga&&(a.ac=60,a.zb=!1,
|
||||
a.Ya=Array(a.ea));return!0}ae.prototype.Qa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.I=d;Ld(this);if(this.L=tb(a,"Keyboard")){for(var e in this.Ab)this.L.ma("led",e,this.Ab[e]);this.O&&this.L.ma(this.$d?"textarea":"canvas","kbd",this.Ca)}this.ia||E(this)};
|
||||
function ee(a,b,c,d){if(d)a.ja("Unable to load font ROM (error "+d+": "+b+")");else{ab(a.Yb,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,Md(a);else{a.ja("Unrecognized font data length ("+f.length+")");return}}catch(h){a.ja("Font ROM data error: "+h.message);return}(a.J||a.I)&&E(a)}}
|
||||
m.Ud=function(a,b,c){D(this,a,b,c,"KBDUART.STATUS");this.H=b;Zd(this,b&V.La.lc);b&V.La.rd&&(this.B=0,Bd(this.b,1))};V.Rb={130:Ud.prototype.Fd};V.Sb={130:Ud.prototype.Ud};Ka(function(){for(var a=B(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Ud(d);fb(d,c)}});
|
||||
function ae(a,b,c,d,e){var f=this;this.Hc=za("Gecko/");var h=["","moz","ms","webkit"];x.call(this,"Video",a,ae,262144);this.ba=a.screenWidth;this.P=a.screenHeight;this.ya=a.bufferAddr;this.Xd=a.bufferRAM;var g=a.bufferFormat;this.ga=g&&be[g.toUpperCase()]||ce;this.ea=a.bufferCols;this.ha=a.bufferRows;this.zc=this.oa=a.cellWidth||1;this.ka=a.cellHeight||1;this.Na=null;this.Gc=!1;this.ab=a.bufferBits||1;this.Yd=a.bufferLeft||0;if(this.B=a.bufferRotate)this.B=this.B%360,0<this.B&&(this.B-=360),-90!=
|
||||
this.B&&(this.ja("unsupported buffer rotation: "+this.B),this.B=0);this.Zb=a.interruptRate;this.Zd=a.refreshRate||60;this.O=b;this.F=c;this.Ca=(this.$d=d)||b||null;this.Vd=this.ba;this.Wd=this.P;this.Ac=this.ba/this.ea|0;this.Fc=this.P/this.ha|0;1<this.ka&&(this.ha++,this.ib=0,this.yb=!1);b=a.smoothing;(c=Ta.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.ja("unsupported screen rotation: "+this.J),this.J=0):(this.F.translate(0,this.P),this.F.rotate(this.J*Math.PI/180),this.F.scale(this.P/this.ba,this.ba/this.P));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(){de(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(){de(f,null)},!1);break}}if(this.ia=a.fontROM)"json"!=fa(this.ia)&&(this.ia=ra()+"/api/v1/dump?file="+this.ia+"&format=bytes"),qa(this.ia,null,!0,function(a,b,c){ee(f,a,b,c)});this.Ab={}}Ya(ae);var ce=0,be={SI1978:1,VT100:2};
|
||||
function Ld(a){a.L=a.ea*a.oa;a.da=a.ha*a.ka;var b=a.L,c=a.da;a.B&&(b=a.da,c=a.L);a.S=0;if(!a.Xd&&(a.S=(a.L*a.ab>>3)*a.da,!vb(a.w,a.ya,a.S,3)))return!1;a.S?(a.Jc=a.F.createImageData(b,c),a.Nc=16/a.ab|0,fe(a,a.S>>1)):fe(a,(a.ea+1)*a.ha);a.M=document.createElement("canvas");a.M.width=b;a.M.height=c;a.jb=a.M.getContext("2d");a.qa={};a.Da=1<<a.ab;a.ra=Array(a.Da+2);a.ra[0]=[0,0,0,255];a.ra[1]=[255,255,255,255];1==a.ga&&(a.ra[a.Da+0]=[255,255,0,255],a.ra[a.Da+1]=[0,255,0,255]);2==a.ga&&(a.ac=60,a.zb=!1,
|
||||
a.Za=Array(a.ea));return!0}ae.prototype.Qa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.I=d;Ld(this);if(this.K=rb(a,"Keyboard")){for(var e in this.Ab)this.K.ma("led",e,this.Ab[e]);this.O&&this.K.ma(this.$d?"textarea":"canvas","kbd",this.Ca)}this.ia||F(this)};
|
||||
function ee(a,b,c,d){if(d)a.ja("Unable to load font ROM (error "+d+": "+b+")");else{bb(a.Yb,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,Md(a);else{a.ja("Unrecognized font data length ("+f.length+")");return}}catch(h){a.ja("Font ROM data error: "+h.message);return}(a.F||a.I)&&F(a)}}
|
||||
function Md(a){a.Na&&(a.Gc=2==a.ga,a.qa[96]=[ge(a,a.oa,a.ka),ge(a,a.oa,a.ka,a.zb)],a.qa[64]=[ge(a,2*a.oa,a.ka),ge(a,2*a.oa,a.ka,a.zb)],a.qa[32]=a.qa[0]=[ge(a,2*a.oa,2*a.ka),ge(a,2*a.oa,2*a.ka,a.zb)])}
|
||||
function ge(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={oa:b,ka: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,v=q;q<a.ka;q++)for(var w=p*e+(f+q&e-1),w=d&&8==q?255:a.Na[w],r=0;r<c/a.ka;r++){for(var C=0,z=0,X=z;z<a.oa;z++){for(var A=w&128>>(7<z?7:z),C=a.Gc&&!A&&C?C:A,Q=0;Q<b/a.oa;Q++)g&&(C=!C),he(a,l,X,v,C?1:0),X++;C=A}v++}k.context.putImageData(l,
|
||||
function ge(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={oa:b,ka: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,v=q;q<a.ka;q++)for(var w=p*e+(f+q&e-1),w=d&&8==q?255:a.Na[w],r=0;r<c/a.ka;r++){for(var C=0,y=0,X=y;y<a.oa;y++){for(var A=w&128>>(7<y?7:y),C=a.Gc&&!A&&C?C:A,Q=0;Q<b/a.oa;Q++)g&&(C=!C),he(a,l,X,v,C?1:0),X++;C=A}v++}k.context.putImageData(l,
|
||||
(p&15)*b,(p>>4)*c)}return k}
|
||||
ae.prototype.Ea=function(){if(2==this.ga){for(var a={0:[32,"SET-UP A"],2:[64,'TO EXIT PRESS "SET-UP"'],22:[96," T T T T T T T T T"],23:[96,"1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890"],24:[]},b=this.ya,c=-1,d=-1,e,f=-(60==this.ac?2:5);f<this.ha;f++){var h=a[f];if(0<=c){var g=!1,c=b+2;h?h.length?d=h[0]:(c=b-1,g=!0):32==d&&(h=a[f-1],d=0);e=d&96|c>>8&15|16;Cb(this.w,b++,e);Cb(this.w,b++,
|
||||
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++)Cb(this.w,b++,g.charCodeAt(k)|c);c^=128}Cb(this.w,b++,127);c=b}ie(this)}return!0};ae.prototype.ma=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Ab[b]=c,!0;switch(b){case "fullScreen":return this.M[b]=c,this.u&&this.u.jb?c.onclick=function(){d.jb()}:c.parentNode.removeChild(c),!0}return!1};
|
||||
ae.prototype.jb=function(){var a=!1;if(this.u){if(this.u.jb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.ca/this.P;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.jb();a=!0}this.Ca&&this.Ca.focus()}return a};
|
||||
function de(a,b){!b&&a.u&&(a.Hc?a.O.style.width=a.O.style.height="":a.u.style.width=a.u.style.height="");ib(a,"notifyFullScreen("+b+")")}function fe(a,b){a.Kc=b;a.za=!1;if(void 0===a.H||a.H.length!=a.Kc)a.H=Array(a.Kc)}function he(a,b,c,d,e){d=a.B?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.ga&&(208<=c&&236>c?e=a.Da+0:28<=c&&72>c&&(e=a.Da+1));a=a.ra[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 ie(a,b){for(var c=a.ya,d=-1,e=0,f=60==a.ac?2:5,h=0,g=0,k=-1;e<a.ha;){var l=0,p=c,q=d,v=a.ea;for(96!=q&&(v>>=1);;){var w=Ab(a.w,p++);if(127==(w&127)){var r=Ab(a.w,p++),d=r&96,c=(r&15)<<8|Ab(a.w,p),c=c+(r&16?8192:16384);break}if(l<v)a.Ya[l++]=w;else break}if(f)f--;else{for(;l<a.Ya.length;)a.Ya[l++]=0;if(0<=q)for(p=a.za&&a.H[h]==v,a.H[h++]=v,v=0;v<l;v++){w=a.Ya[v];if(!p||w!==a.H[h]){a.H[k=h]=w;var r=a,C=a.ib,z=w&127;if(w=r.qa[q][w&128?1:0]){var X=(z&15)*w.oa,z=(z>>4)*w.ka,A=void 0,Q=void 0,
|
||||
aa=void 0,Y=void 0,va=w.oa,Hb=w.ka;C?(A=v*r.oa,Q=e*r.ka,aa=r.oa,Y=r.ka):(A=v*r.Ac,Q=e*r.Fc,aa=r.Ac,Y=r.Fc);w.oa>r.oa&&(A*=2,aa*=2);w.ka>r.ka&&(0==q&&(z+=r.ka),Hb=r.ka);C?C.drawImage(w.canvas,X,z,va,Hb,A,Q,aa,Y):(A+=0,Q+=0,r.J.drawImage(w.canvas,X,z,va,Hb,A,Q,aa,Y))}g++}h++}e++}}a.za=!0;!b&&a.yb&&1==g&&(a.H[k]=-1,g=0);a.yb=!1;(g||b)&&a.ib&&a.J.drawImage(a.N,0,a.hb,a.K,a.da-a.ka,0,0,a.Vd,a.Wd)}
|
||||
function Kd(a,b){var c=!0,d=!0;if(0<=b){d=!1;a.Zb&&(120==a.Zb?b&1?(Bd(a.b,2),c=!1):Bd(a.b,1):Bd(a.b,4));var e;if(e=c&&a.za&&a.X){e=a.w;for(var f=a.X,h=!0,g=a.ya>>>e.pa;0<f&&g<e.Y.length;)e.Y[g].Oa&&(e.Y[g].Oa=h=!1,e.Y[g].vc=!0),f-=e.Ga,g++;e=h}e&&(c=!1)}if(c)if(1<a.oa)switch(a.ga){case 2:ie(a,d)}else{var f=a.ya,h=f+a.X,k=g=0,l=0,c=a.K,p=0,d=a.da,q=e=0,v=a.$a,w=(1<<v)-1;a.Yd&&(v=-v,q=16+v);for(;f<h;){var r=Bb(a.w,f);if(a.za&&r===a.H[g])k+=a.Nc;else{a.H[g]=r;var C=q;C&&(r=r>>8|(r&255)<<8);k<c&&(c=k);
|
||||
for(var z=a.Nc;z--;){var X=r>>C&w;he(a,a.Jc,k++,l,X);C+=v}k>p&&(p=k);l<d&&(d=l);l>=e&&(e=l+1)}f+=2;g++;if(k>=a.K&&(k=0,l++,l>a.da))break}a.za=!0;c<a.K&&(f=p-c,e-=d,a.B&&(h=c,g=f,c=d,f=e,d=a.K-(h+g),e=g),a.ib.putImageData(a.Jc,0,0,c,d,f,e),a.J.drawImage(a.N,0,0,a.N.width,a.N.height,0,0,a.ca,a.P))}}
|
||||
Ja(function(){for(var a=B(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=y(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=ra().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||Sa.aspect);f&&.3<=f&&3.33>=f&&(Ia("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");ya("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new ae(d,e,h,f,c);gb(d,c)}});
|
||||
function je(a){this.ga=+a.adapter;switch(this.ga){case 0:this.ha=0;this.ra=2;break;default:u("Unrecognized serial adapter #"+this.ga);return}this.B=this.F=null;this.ia=a.tabSize;this.ea=a.charBOL;this.H=0;x.call(this,"SerialPort",a,je,8388608);a=a.binding;"console"==a?this.F="":eb(this,a);this.qa=function(a){return function(){ke(a)}}(this);this.N=this.ca=null;this.exports={receiveByte:this.Tb}}Xa(je);
|
||||
var le=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],me=[!1,0,0,133,142,39,238],fb="buffer";m=je.prototype;
|
||||
m.ma=function(a,b,c,d){var e=this;switch(b){case fb:return this.M[b]=this.B=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),e.Tb(b);return!0},c.onkeypress=function(a){a=a||window.event;e.Tb(a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.M[b]=c,d=d.replace(/\\n/g,"\n").replace(/\\r/g,"\r"),c.onclick=function(){e.K=d;ke(e);e.A&&
|
||||
e.A.gb();return!0},!0}return!1};m.Qa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.I=d;this.J=tb(a,"ChipSet");Eb(b,this,ne,this.ha);Jb(b,this,oe,this.ha);if(a=lc(this.A,"connection"))if(b=a.split("="),2==b.length&&(a=ka(b[0]),b=ka(b[1]),a==this.Xa&&(this.N=cb(b))))if(a=this.N.exports)this.ca=a.receiveByte;E(this)};m.Ea=function(a,b){if(!b)if(!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(){pe(this)};
|
||||
m.save=function(){var a=new H(this),b=0,c=[];c[b++]=this.Ma;c[b++]=this.X;c[b++]=this.da;c[b++]=this.u;c[b++]=this.L;c[b++]=this.P;c[b]=this.O;I(a,0,c);return a.data()};m.restore=function(a){return pe(this,a[0])};function pe(a,b){var c=0;void 0===b&&(b=me);a.Ma=b[c++];a.X=b[c++];a.da=b[c++];a.u=b[c++];a.L=b[c++];a.P=b[c++];a.O=b[c];return!0}m.Tb=function(a){return this.u&2?!1:(this.X=a,this.u|=2,Bd(this.b,this.ra),!0)};
|
||||
function ke(a){if(a.K&&(a.Tb(a.K.charCodeAt(0))&&(a.K=a.K.substr(1)),a.K)){var b=le[a.O&15],c=((a.L&12)>>2)+6;a.L&16&&c++;c+=((a.L&192)>>6)+1>>1;setTimeout(a.qa,1E3/Math.round(b/c))}}m.$b=function(){return!!(this.u&1)};m.zd=function(a,b){var c=this.X;D(this,a,null,b,"DATA",c);this.u&=-3;return c};m.yd=function(a,b){var c=this.u;D(this,a,null,b,"STATUS",c);return c};
|
||||
m.Kd=function(a,b,c){D(this,a,b,c,"DATA");this.da=b;this.u&=-6;a=!1;this.ca&&this.ca.call(this.N,b)&&(a=!0);if(this.B)13==b?this.H=0:8==b?(this.B.value=this.B.value.slice(0,-1),0<this.H&&this.H--):(a=String.fromCharCode(b),c=32<=b?1:0,9==b&&(b=this.ia||8,c=b-this.H%b,this.ia&&(a=ja("",c))),this.ea&&!this.H&&c&&(a=String.fromCharCode(this.ea)+a),this.B.value+=a,this.B.scrollTop=this.B.scrollHeight,this.H+=c),a=!0;else if(null!=this.F){if(10==b||1024<=this.F.length)this.g(this.F),this.F="";10!=b&&(this.F+=
|
||||
String.fromCharCode(b));a=!0}a&&(this.u|=5)};m.Jd=function(a,b,c){D(this,a,b,c,"CONTROL");this.Ma?(this.P=b,this.P&64&&(this.Ma=!1)):(this.L=b,this.Ma=!0)};m.Id=function(a,b,c){D(this,a,b,c,"BAUDRATES");this.O=b};var ne={0:je.prototype.zd,1:je.prototype.yd},oe={0:je.prototype.Kd,1:je.prototype.Jd,2:je.prototype.Id};Ja(function(){for(var a=B(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new je(d);gb(d,c)}});
|
||||
function qe(a){x.call(this,"Debugger",a,qe);this.style=re;this.ca=this.za=this.K=0;this.O=W();this.$a=W();this.J=-1;this.B=[];this.ea=!1;this.da=W();this.H=[];this.ga={};this.u=this.P=this.F=[];se(this);this.qa=0;te(this);this.Ca=[];ue(this,a.messages);this.Da=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return oc(b,a)}):void 0===global.$&&(global.$=function(a){return oc(b,a)})}Xa(qe);
|
||||
var ve={"?":"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"},
|
||||
re=8080,we="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(" "),xe="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(" "),
|
||||
ye="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),ze=[[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,
|
||||
ae.prototype.Ea=function(){if(2==this.ga){for(var a={0:[32,"SET-UP A"],2:[64,'TO EXIT PRESS "SET-UP"'],22:[96," T T T T T T T T T"],23:[96,"1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890"],24:[]},b=this.ya,c=-1,d=-1,e,f=-(60==this.ac?2:5);f<this.ha;f++){var h=a[f];if(0<=c){var g=!1,c=b+2;h?h.length?d=h[0]:(c=b-1,g=!0):32==d&&(h=a[f-1],d=0);e=d&96|c>>8&15|16;Ab(this.w,b++,e);Ab(this.w,b++,
|
||||
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++)Ab(this.w,b++,g.charCodeAt(k)|c);c^=128}Ab(this.w,b++,127);c=b}ie(this)}return!0};ae.prototype.ma=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};
|
||||
ae.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.ba/this.P;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.Ca&&this.Ca.focus()}return a};
|
||||
function de(a,b){!b&&a.u&&(a.Hc?a.O.style.width=a.O.style.height="":a.u.style.width=a.u.style.height="");E(a,"notifyFullScreen("+b+")")}function fe(a,b){a.Kc=b;a.za=!1;if(void 0===a.H||a.H.length!=a.Kc)a.H=Array(a.Kc)}function he(a,b,c,d,e){d=a.B?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.ga&&(208<=c&&236>c?e=a.Da+0:28<=c&&72>c&&(e=a.Da+1));a=a.ra[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 ie(a,b){for(var c=a.ya,d=-1,e=0,f=60==a.ac?2:5,h=0,g=0,k=-1;e<a.ha;){var l=0,p=c,q=d,v=a.ea;for(96!=q&&(v>>=1);;){var w=yb(a.w,p++);if(127==(w&127)){var r=yb(a.w,p++),d=r&96,c=(r&15)<<8|yb(a.w,p),c=c+(r&16?8192:16384);break}if(l<v)a.Za[l++]=w;else break}if(f)f--;else{for(;l<a.Za.length;)a.Za[l++]=0;if(0<=q)for(p=a.za&&a.H[h]==v,a.H[h++]=v,v=0;v<l;v++){w=a.Za[v];if(!p||w!==a.H[h]){a.H[k=h]=w;var r=a,C=a.jb,y=w&127;if(w=r.qa[q][w&128?1:0]){var X=(y&15)*w.oa,y=(y>>4)*w.ka,A=void 0,Q=void 0,
|
||||
ba=void 0,Y=void 0,wa=w.oa,Ib=w.ka;C?(A=v*r.oa,Q=e*r.ka,ba=r.oa,Y=r.ka):(A=v*r.Ac,Q=e*r.Fc,ba=r.Ac,Y=r.Fc);w.oa>r.oa&&(A*=2,ba*=2);w.ka>r.ka&&(0==q&&(y+=r.ka),Ib=r.ka);C?C.drawImage(w.canvas,X,y,wa,Ib,A,Q,ba,Y):(A+=0,Q+=0,r.F.drawImage(w.canvas,X,y,wa,Ib,A,Q,ba,Y))}g++}h++}e++}}a.za=!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.da-a.ka,0,0,a.Vd,a.Wd)}
|
||||
function Kd(a,b){var c=!0,d=!0;if(0<=b){d=!1;a.Zb&&(120==a.Zb?b&1?(Bd(a.b,2),c=!1):Bd(a.b,1):Bd(a.b,4));var e;if(e=c&&a.za&&a.S){e=a.w;for(var f=a.S,h=!0,g=a.ya>>>e.pa;0<f&&g<e.Y.length;)e.Y[g].Oa&&(e.Y[g].Oa=h=!1,e.Y[g].vc=!0),f-=e.Ga,g++;e=h}e&&(c=!1)}if(c)if(1<a.oa)switch(a.ga){case 2:ie(a,d)}else{var f=a.ya,h=f+a.S,k=g=0,l=0,c=a.L,p=0,d=a.da,q=e=0,v=a.ab,w=(1<<v)-1;a.Yd&&(v=-v,q=16+v);for(;f<h;){var r=zb(a.w,f);if(a.za&&r===a.H[g])k+=a.Nc;else{a.H[g]=r;var C=q;C&&(r=r>>8|(r&255)<<8);k<c&&(c=k);
|
||||
for(var y=a.Nc;y--;){var X=r>>C&w;he(a,a.Jc,k++,l,X);C+=v}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.da))break}a.za=!0;c<a.L&&(f=p-c,e-=d,a.B&&(h=c,g=f,c=d,f=e,d=a.L-(h+g),e=g),a.jb.putImageData(a.Jc,0,0,c,d,f,e),a.F.drawImage(a.M,0,0,a.M.width,a.M.height,0,0,a.ba,a.P))}}
|
||||
Ka(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 <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=sa().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||Ta.aspect);f&&.3<=f&&3.33>=f&&(Ja("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");za("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new ae(d,e,h,f,c);fb(d,c)}});
|
||||
function je(a){this.ga=+a.adapter;switch(this.ga){case 0:this.ha=0;this.qa=2;break;default:u("Unrecognized serial adapter #"+this.ga);return}this.B=this.F=null;this.ia=a.tabSize;this.ea=a.charBOL;this.H=0;x.call(this,"SerialPort",a,je,8388608);var b=a.binding;if("console"==b)this.F="";else{var c;a=ke;b&&(void 0===c&&(c="Panel"),(c=eb(c,this.id))&&(b=c.N[b])&&this.ma(null,a,b))}this.M=this.ba=null;this.exports={receiveByte:this.Tb}}Ya(je);
|
||||
var le=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],me=[!1,0,0,133,142,39,238],ke="buffer";m=je.prototype;
|
||||
m.ma=function(a,b,c,d){var e=this;switch(b){case ke:return this.N[b]=this.B=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),e.Tb(b);return!0},c.onkeypress=function(a){a=a||window.event;e.Tb(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(/\\n/g,"\n").replace(/\\r/g,"\r"),c.onclick=function(){e.L=d;ne(e);e.A&&
|
||||
e.A.hb();return!0},!0}return!1};m.Qa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.I=d;var e=this;this.ra=Gc(this.b,function(){E(e,"timerReceiveData()");ne(e)});this.J=rb(a,"ChipSet");Cb(b,this,oe,this.ha);Gb(b,this,pe,this.ha);qe(this);F(this)};function qe(a){var b=jc(a.A,"connection");if(b){var c=b.split("=");2==c.length&&(b=la(c[0]),c=la(c[1]),b==a.Ya&&(a.M=db(c),a.M&&(b=a.M.exports)))&&(a.ba=b.receiveByte)}}
|
||||
m.Ea=function(a,b){if(!b)if(!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(){re(this)};m.save=function(){var a=new Pc(this),b=0,c=[];c[b++]=this.Ma;c[b++]=this.S;c[b++]=this.da;c[b++]=this.u;c[b++]=this.K;c[b++]=this.P;c[b]=this.O;I(a,0,c);return a.data()};m.restore=function(a){return re(this,a[0])};
|
||||
function re(a,b){var c=0;void 0===b&&(b=me);a.Ma=b[c++];a.S=b[c++];a.da=b[c++];a.u=b[c++];a.K=b[c++];a.P=b[c++];a.O=b[c];return!0}m.Tb=function(a){E(this,"receiveByte("+da(a)+"): "+da(this.u));return this.u&2?!1:(this.S=a,this.u|=2,E(this,"receiveByte("+da(a)+"): "+da(this.u)+" (requesting interrupt)"),Bd(this.b,this.qa),!0)};
|
||||
function ne(a){if(a.L&&(a.Tb(a.L.charCodeAt(0))&&(a.L=a.L.substr(1)),a.L&&a.b)){var b;b=le[a.O&15];var c=((a.K&12)>>2)+6;a.K&16&&c++;c+=((a.K&192)>>6)+1>>1;b=1E3/Math.round(b/c);c=a.b;a=a.ra;var d=-1;0<=a&&a<c.F.length&&(d=c.i.fb*c.i.Ta/1E3*b,c.F[a][0]=d)}}m.$b=function(){return!!(this.u&1)};m.zd=function(a,b){var c=this.S;D(this,a,null,b,"DATA",c);this.u&=-3;return c};m.yd=function(a,b){var c=this.u;D(this,a,null,b,"STATUS",c);return c};
|
||||
m.Kd=function(a,b,c){D(this,a,b,c,"DATA");this.da=b;this.u&=-6;a=!1;this.ba&&this.ba.call(this.M,b)&&(a=!0);if(this.B)13==b?this.H=0:8==b?(this.B.value=this.B.value.slice(0,-1),0<this.H&&this.H--):(a=String.fromCharCode(b),c=32<=b?1:0,9==b&&(b=this.ia||8,c=b-this.H%b,this.ia&&(a=ka("",c))),this.ea&&!this.H&&c&&(a=String.fromCharCode(this.ea)+a),this.B.value+=a,this.B.scrollTop=this.B.scrollHeight,this.H+=c),a=!0;else if(null!=this.F){if(10==b||1024<=this.F.length)this.g(this.F),this.F="";10!=b&&(this.F+=
|
||||
String.fromCharCode(b));a=!0}a&&(this.u|=5)};m.Jd=function(a,b,c){D(this,a,b,c,"CONTROL");this.Ma?(this.P=b,this.P&64&&(this.Ma=!1)):(this.K=b,this.Ma=!0)};m.Id=function(a,b,c){D(this,a,b,c,"BAUDRATES");this.O=b};var oe={0:je.prototype.zd,1:je.prototype.yd},pe={0:je.prototype.Kd,1:je.prototype.Jd,2:je.prototype.Id};Ka(function(){for(var a=B(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new je(d);fb(d,c)}});
|
||||
function se(a){x.call(this,"Debugger",a,se);this.style=te;this.ba=this.za=this.L=0;this.O=W();this.ab=W();this.F=-1;this.B=[];this.ea=!1;this.da=W();this.H=[];this.ga={};this.u=this.P=this.J=[];ue(this);this.qa=0;ve(this);this.Ca=[];we(this,a.messages);this.Da=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return mc(b,a)}):void 0===global.$&&(global.$=function(a){return mc(b,a)})}Ya(se);
|
||||
var xe={"?":"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"},
|
||||
te=8080,ye="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(" "),ze="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(" "),
|
||||
Ae="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),Be=[[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,
|
||||
2579],[41,18963,115],[23,2579],[28,1297],[22,1297],[44,1297,32],[16,18193],[45,32768],[42,2835,32],[70,115,18193],[29,2835],[28,1617],[22,1617],[44,1617,32],[72],[45,32768],[21,18963,2835],[39,18193,115],[23,2835],[28,1809],[22,1809],[44,1809,32],[17],[43,17,17],[43,17,273],[43,17,529],[43,17,785],[43,17,1041],[43,17,1297],[43,17,1617],[43,17,1809],[43,273,17],[43,273,273],[43,273,529],[43,273,785],[43,273,1041],[43,273,1297],[43,273,1617],[43,273,1809],[43,529,17],[43,529,273],[43,529,529],[43,529,
|
||||
785],[43,529,1041],[43,529,1297],[43,529,1617],[43,529,1809],[43,785,17],[43,785,273],[43,785,529],[43,785,785],[43,785,1041],[43,785,1297],[43,785,1617],[43,785,1809],[43,1041,17],[43,1041,273],[43,1041,529],[43,1041,785],[43,1041,1041],[43,1041,1297],[43,1041,1617],[43,1041,1809],[43,1297,17],[43,1297,273],[43,1297,529],[43,1297,785],[43,1297,1041],[43,1297,1297],[43,1297,1617],[43,1297,1809],[43,1617,17],[43,1617,273],[43,1617,529],[43,1617,785],[43,1617,1041],[43,1617,1297],[26],[43,1617,1809],
|
||||
[43,1809,17],[43,1809,273],[43,1809,529],[43,1809,785],[43,1809,1041],[43,1809,1297],[43,1809,1617],[43,1809,1809],[3,18193,17],[3,18193,273],[3,18193,529],[3,18193,785],[3,18193,1041],[3,18193,1297],[3,18193,1617],[3,18193,1809],[2,18193,17],[2,18193,273],[2,18193,529],[2,18193,785],[2,18193,1041],[2,18193,1297],[2,18193,1617],[2,18193,1809],[73,18193,17],[73,18193,273],[73,18193,529],[73,18193,785],[73,18193,1041],[73,18193,1297],[73,18193,1617],[73,18193,1809],[66,18193,17],[66,18193,273],[66,
|
||||
18193,529],[66,18193,785],[66,18193,1041],[66,18193,1297],[66,18193,1617],[66,18193,1809],[5,18193,17],[5,18193,273],[5,18193,529],[5,18193,785],[5,18193,1041],[5,18193,1297],[5,18193,1617],[5,18193,1809],[76,18193,17],[76,18193,273],[76,18193,529],[76,18193,785],[76,18193,1041],[76,18193,1297],[76,18193,1617],[76,18193,1809],[46,18193,17],[46,18193,273],[46,18193,529],[46,18193,785],[46,18193,1041],[46,18193,1297],[46,18193,1617],[46,18193,1809],[18,18193,17],[18,18193,273],[18,18193,529],[18,18193,
|
||||
785],[18,18193,1041],[18,18193,1297],[18,18193,1617],[18,18193,1809],[58],[50,2067],[34,51],[30,51],[11,51],[51,2067],[4,18193,33],[65,128],[62],[54],[38,51],[30,32819],[15,51],[7,51],[1,18193,33],[65,128],[57],[50,2323],[33,51],[48,33,18193],[10,51],[51,2323],[74,18193,33],[65,128],[55],[54,32768],[31,51],[27,18193,33],[8,51],[7,32819],[67,18193,33],[65,128],[61],[50,2579],[37,51],[78,19283,18963],[14,51],[51,2579],[6,18193,33],[65,128],[60],[49,2579],[36,51],[75,18963,18707],[13,51],[7,32819],[77,
|
||||
18193,33],[65,128],[59],[50,3603],[35,51],[24],[12,51],[51,3603],[47,18193,33],[65,128],[56],[69,19219,18963],[32,51],[25],[9,51],[7,32819],[19,18193,33],[65,128]],Ae={cpu:1,bus:64,mem:128,port:256,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};m=qe.prototype;
|
||||
m.Qa=function(a,b,c,d){this.w=b;this.b=c;this.A=a;(a=lc(a,"messages"))&&ue(this,a);this.Na=ze;Be(this,function(a){a:{var b=d.w.Y,c=a[0],g=a=0,k=b.length;if(c){a=Ce(De(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.w.pa;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=zb[c],p&&d.g(n(p.id)+" %"+n(g<<d.w.pa)+" %%"+n(p.G)+" "+t(p.Ib)+" "+
|
||||
t(p.size)+" "+l),c!=Yb&&(c=-1),l=0);a+=d.w.Ga;g++}}});E(this)};
|
||||
m.ma=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ia=this.M[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",oc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.J<d.B.length-1&&(b=d.B[++d.J]):40==a.keyCode&&(0<d.J?b=d.B[--d.J]:(b="",d.J=-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.M[b]=c,Aa(c,function(){if(d.ia){var a=d.ia.value;d.ia.value=
|
||||
"";oc(d,a,!0);return!0}return!1}),!0;case "step":return this.M[b]=c,Aa(c,function(a){var b=!1;lb(d,!0)||(kb(d,!0),b=d.ub(a?1:0),kb(d,!1));return b}),!0}return!1};m.gb=function(){this.ia&&this.ia.focus()};function Ce(a){a=a&&a.G;null==a&&(a=-1);return a}m.aa=function(a,b){var c=255,d=Ce(a);-1!==d&&(c=Ab(this.w,d),b&&Ee(a,b));return c};m.Sa=function(a,b){var c=65535,d=Ce(a);-1!==d&&(c=Bb(this.w,d),b&&Ee(a,b));return c};m.ta=function(a,b,c){var d=Ce(a);-1!==d&&(Cb(this.w,d,b),c&&Ee(a,c),Bc(this.b,!0))};
|
||||
m.Ub=function(a,b,c){var d=Ce(a);if(-1!==d){var e=this.w,f=d&e.w,h=(d&e.B)>>>e.pa;f!=e.w?e.Y[h].hc(f,b&65535,d):(e.Y[h++].Jb(f,b&255,d),e.Y[h&e.L].Jb(0,b>>8&255,d+1));c&&Ee(a,c);Bc(this.b,!0)}};function W(a){return{G:a,Pa:!1}}function Fe(a){return[a.G,a.Pa]}function Ge(a){return{G:a[0],Pa:a[1]}}
|
||||
function De(a,b,c){var d;c=(c?a.O:a.$a).G;if(void 0!==b){d=b=He(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=Ie(a,b,void 0)}null!=c&&(d=W(c));return d}function Je(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.vd=Ke(a,b.Mc=c[2]))}function Ee(a,b){null!=a.G&&(a.G+=b||1)}function Z(a){return n(a,4)}
|
||||
function Le(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.aa(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function ue(a,b){a.I=a;a.sa=a.wd=536870912;a.ra=null;a.ya=[];var c=Ke(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in Ae)0<=oa(c,d)&&(a.sa|=Ae[d],a.g(d+" messages enabled"))}function Be(a,b){for(var c in Ae)if(64==Ae[c]){a.Ca[c]=b;break}}
|
||||
function Me(a,b){var c;a=a.toUpperCase();null==b?c=oa(ye,a):(c=oa(ye,a.substr(b,2)),0>c&&(c=oa(ye,a.substr(b,1))));return c}function Ne(a,b){var c=0,d=Oe(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 Oe(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.j;break;case 0:c=d.S;break;case 1:c=d.T;break;case 8:c=Qc(d);break;case 2:c=d.U;break;case 3:c=d.V;break;case 9:c=Sc(d);break;case 4:c=d.W;break;case 5:c=d.Z;break;case 10:c=J(d);break;case 6:c=d.aa(J(d));break;case 11:c=d.la;break;case 12:c=d.R;break;case 13:c=Pc(d);break;case 14:c=Pc(d)&255|d.j<<8}}return c}
|
||||
function Pe(a,b){b=He(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=Me(b,c+1),0<=e&&(b=b.substr(0,c)+Ne(a,e)+b.substr(c+1+ye[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=De(a,e))?(d=e+' "'+Le(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=De(a,e))?(Ee(d),d=e+' "'+
|
||||
Le(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.R).G));if(this.sa&1073741824)this.ya.push(a);else if(!this.ra||a!=this.ra)if(this.ra=a,this.sa&-2147483648&&(this.na(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.rb=0;c.B-=c.b;c.b=0;Bc(c)}};
|
||||
function hb(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.sa&g)!=g||a.message(b.Xa+"."+(null!=d?"outPort":"inPort")+"("+t(c)+","+(f?f:"unknown")+(null!=d?",0x"+n(d,2):"")+")"+(null!=h?": 0x"+n(h,2):"")+(null!=e?" at "+Z(e):""))}
|
||||
function te(a){var b;if(Cd(a)){if(!a.N||!a.N.length){a.N=Array(1E3);for(b=0;b<a.N.length;b++)a.N[b]=W();a.ha=0;a.g("instruction history buffer allocated")}if(!a.L||!a.L.length)for(a.L=Array(256),b=0;b<a.L.length;b++)a.L[b]=[b,0]}else a.N&&a.N.length&&a.g("instruction history buffer freed"),a.ha=0,a.N=[],a.L=[]}m.fb=function(a){if(!Qe(this))return!1;this.b.fb(a);return!0};
|
||||
m.ub=function(a,b,c){if(!Qe(this))return!1;this.K=0;a||Cd(this)&&Dd(this,this.b.R,0);try{var d=this.b.ub(a);0<d&&(this.K+=d,Gc(this.b,d,!0),Dc(this.b,d),this.ca++)}catch(e){"number"!=typeof e&&(this.K=0,nb(this.b,e.stack||e.message))}!1!==c&&Bc(this.b);this.Ia(b||!1);return 0<this.K};m.na=function(a){this.b&&this.b.na(a)};m.Ia=function(a){void 0===a&&(a=!0);this.O=W(this.b.R);a&&1!=this.X?Re(this):Se(this)};
|
||||
function Qe(a){var b;if(b=a.b&&mb(a.b))b=a.b,b.D.ua?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!lb(a.b)?(a=a.b,a.D.mb?(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){te(this);this.ca=this.za=0;this.ra=null;this.K=0;this.O=W(this.b.R);this.D.xa=!1;rf(this);a||this.Ia()};
|
||||
m.save=function(){var a=new H(this);I(a,0,Fe(this.O));I(a,1,Fe(this.da));I(a,2,[this.B,this.ea,this.sa]);I(a,3,this.H);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.O=Ge(a[b++]),this.da=Ge(a[b++]),this.B=a[b][0],"string"==typeof this.B&&(this.B=[this.B]),this.ea=a[b][1],this.sa|=a[b][2]);a[3]&&(this.H=a[3]);return!0};m.start=function(a,b){this.X||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.K=b-this.zb;if(!this.X){var c="stopped";if(this.K){var d=a-this.yb,e=0<d?Math.round(1E3*this.K/d):0,c=c+" (";Cd(this)&&(c+=this.ca+" opcodes, ",this.za-=this.ca,this.ca=0);c+=this.K+" cycles, "+d+" ms, "+e+" hz)"}else jb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.Ia(!0);this.gb();rf(this,this.b.R)}};function Cd(a){return 1<a.u.length||!!a.qa}
|
||||
function Dd(a,b,c){var d=a.b;if(0<c&&(a.qa&&!--a.qa||gc(a,b,1,a.u)))return!0;0<=c&&a.L.length&&(a.ca++,b=Ab(a.w,b),null!=b&&(a.L[b][1]++,b=a.N[a.ha],b.G=d.R,b.Pa=!1,++a.ha==a.N.length&&(a.ha=0)));return!1}function Gb(a,b,c){a.g("break on input from port "+t(b)+": "+n(c));a.na(!0)}function Tb(a,b,c){a.g("break on output to port "+t(b)+": "+n(c));a.na(!0)}
|
||||
function se(a){var b,c;a.u=["bp"];if(void 0!==a.P)for(b=1;b<a.P.length;b++){c=a.P[b];var d=a.w;hc(d.Y[Ce(c)>>>d.pa],!1)}a.P=["br"];if(void 0!==a.F)for(b=1;b<a.F.length;b++)c=a.F[b],d=a.w,hc(d.Y[Ce(c)>>>d.pa],!0);a.F=["bw"];a.hb=0}m.Za=function(a,b,c){var d=!0;c||sf(this,a,b,!1,!0);if(a!=this.u){var e=Ce(b);if(-1===e)this.g("invalid address: "+Z(b.G)),d=!1;else{var f=this.w;f.Y[e>>>f.pa].Za(e&f.w,a==this.F)}}d&&(a.push(b),c?b.Pa=!0:(tf(this,a,a.length-1,"set"),te(this)));return d};
|
||||
function sf(a,b,c,d,e){var f=!1;c=Ce(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==Ce(g)&&(!d||g.Pa)){f=!0;g.Pa||e||tf(a,b,h,"cleared");b.splice(h,1);b!=a.u&&(d=a.w,hc(d.Y[c>>>d.pa],b==a.F));g.Pa||te(a);break}}return f}function uf(a,b){for(var c=1;c<b.length;c++)tf(a,b,c);return b.length-1}function tf(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.G)+(d?" "+d:c.Mc?' "'+c.Mc+'"':""))}
|
||||
function rf(a,b){if(void 0!==b)gc(a,b,1,a.u,!0),a.X=0;else for(var c=1;c<a.u.length;c++){var d=a.u[c];if(d.Pa){if(!sf(a,a.u,d,!0))break;c=0}}}
|
||||
function gc(a,b,c,d,e){var f=!1;if(!a.hb++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.Pa)for(var k=Ce(g),l=0;l<c;l++)if(b+l==k){var p,f=!0;g.Pa&&(sf(a,d,g,!0),e=!0);if(p=g.vd){for(var f=!1,q=0;q<p.length;q++)if(!vf(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var v=q+1;v<p.length&&p[v].indexOf("else");v++)q++;if(v==p.length){f=!0;break}}a.b.D.xa||(f=!0)}if(f){e||tf(a,d,h,"hit");break}}}a.hb--;return f}
|
||||
function wf(a,b,c,d){for(var e=W(b.G),f=a.aa(b,1),h=a.Na[f],g="",k=(8086!=a.style?we:xe)[h[0]],l=h.length-1,p=0,q,v=1;v<=l;v++){var w="";q=h[v];if(void 0!==q&&!(q&16384&&a.style==re)){var r=q&240;if(r){var C=q&15;C?p=C:q|=p;q&61440||(q|=1==v?8192:4096);if(r&32)a:{var w=a,r=q,C=b,z=" ";switch(r&15){case 1:z=n(w.aa(C,1),2);break;case 2:z=n(w.aa(C,1)<<24>>24,4);break;case 3:z=n(w.Sa(C,2),4);break;default:w="imm("+t(r)+")";break a}8086==w.style&&r&64?z="["+z+"]":r&16||(z=(w.style==re?"$":"0x")+z);w=z}else r&
|
||||
16?(w=(q&3840)>>8,r=ye[w],8086==a.style&&q&64&&(6==w&&(r="HL"),r="["+r+"]"),w=r):r&128&&(w=(f>>3&7).toString());if(!w||!w.length){g="INVALID";break}0<g.length&&(g+=",");g+=w||"???"}}}f="";h=Z(e.G)+" ";if(-1!==e.G&&-1!==b.G){do if(f+=n(a.aa(e,1),2),null==e.G)break;while(e.G!=b.G)}h+=ja(f,10);h=h+(q&32768?"*":" ")+ja(k,7);g&&(h+=" "+g);c&&(h=ja(h,40)+";"+c,h=a.b.D.lb?h+("cycles="+Ec(a.b).toString()+" cs="+n(a.b.i.Bb)):h+(null!=d?"="+d.toString():""));return h}
|
||||
function xf(a,b){var c;switch(b){case "IF":c=a.b.va&512;break;case "SF":c=$c(a.b);break;case "ZF":c=Zc(a.b);break;case "AF":c=Yc(a.b);break;case "PF":c=Xc(a.b);break;case "CF":c=Vc(a.b);break;default:c=0}return b.charAt(0)+(c?"1":"0")+" "}function yf(a,b){return ye[b]+"="+Ne(a,b)+" "}function zf(a){return yf(a,7)+yf(a,8)+yf(a,9)+yf(a,10)+yf(a,11)+xf(a,"IF")+xf(a,"SF")+xf(a,"ZF")+xf(a,"AF")+xf(a,"PF")+xf(a,"CF")}
|
||||
var Af={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function Bf(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;
|
||||
18193,33],[65,128],[59],[50,3603],[35,51],[24],[12,51],[51,3603],[47,18193,33],[65,128],[56],[69,19219,18963],[32,51],[25],[9,51],[7,32819],[19,18193,33],[65,128]],Ce={cpu:1,bus:64,mem:128,port:256,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};m=se.prototype;
|
||||
m.Qa=function(a,b,c,d){this.w=b;this.b=c;this.A=a;(a=jc(a,"messages"))&&we(this,a);this.Na=Be;De(this,function(a){a:{var b=d.w.Y,c=a[0],g=a=0,k=b.length;if(c){a=Ee(Fe(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.w.pa;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=xb[c],p&&d.g(n(p.id)+" %"+n(g<<d.w.pa)+" %%"+n(p.G)+" "+t(p.Ib)+" "+
|
||||
t(p.size)+" "+l),c!=Wb&&(c=-1),l=0);a+=d.w.Ga;g++}}});F(this)};
|
||||
m.ma=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ia=this.N[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",mc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.F<d.B.length-1&&(b=d.B[++d.F]):40==a.keyCode&&(0<d.F?b=d.B[--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,Ba(c,function(){if(d.ia){var a=d.ia.value;d.ia.value=
|
||||
"";mc(d,a,!0);return!0}return!1}),!0;case "step":return this.N[b]=c,Ba(c,function(a){var b=!1;jb(d,!0)||(ib(d,!0),b=d.ub(a?1:0),ib(d,!1));return b}),!0}return!1};m.hb=function(){this.ia&&this.ia.focus()};function Ee(a){a=a&&a.G;null==a&&(a=-1);return a}m.aa=function(a,b){var c=255,d=Ee(a);-1!==d&&(c=yb(this.w,d),b&&Ge(a,b));return c};m.Sa=function(a,b){var c=65535,d=Ee(a);-1!==d&&(c=zb(this.w,d),b&&Ge(a,b));return c};m.ta=function(a,b,c){var d=Ee(a);-1!==d&&(Ab(this.w,d,b),c&&Ge(a,c),nc(this.b,!0))};
|
||||
m.Ub=function(a,b,c){var d=Ee(a);if(-1!==d){var e=this.w,f=d&e.w,h=(d&e.B)>>>e.pa;f!=e.w?e.Y[h].hc(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&&Ge(a,c);nc(this.b,!0)}};function W(a){return{G:a,Pa:!1}}function He(a){return[a.G,a.Pa]}function Ie(a){return{G:a[0],Pa:a[1]}}
|
||||
function Fe(a,b,c){var d;c=(c?a.O:a.ab).G;if(void 0!==b){d=b=Je(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=Ke(a,b,void 0)}null!=c&&(d=W(c));return d}function Le(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.vd=Me(a,b.Mc=c[2]))}function Ge(a,b){null!=a.G&&(a.G+=b||1)}function Z(a){return n(a,4)}
|
||||
function Ne(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.aa(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function we(a,b){a.I=a;a.sa=a.wd=536870912;a.ra=null;a.ya=[];var c=Me(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in Ce)0<=pa(c,d)&&(a.sa|=Ce[d],a.g(d+" messages enabled"))}function De(a,b){for(var c in Ce)if(64==Ce[c]){a.Ca[c]=b;break}}
|
||||
function Oe(a,b){var c;a=a.toUpperCase();null==b?c=pa(Ae,a):(c=pa(Ae,a.substr(b,2)),0>c&&(c=pa(Ae,a.substr(b,1))));return c}function Pe(a,b){var c=0,d=Qe(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 Qe(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=Qc(d);break;case 2:c=d.V;break;case 3:c=d.W;break;case 9:c=Sc(d);break;case 4:c=d.X;break;case 5:c=d.Z;break;case 10:c=J(d);break;case 6:c=d.aa(J(d));break;case 11:c=d.la;break;case 12:c=d.R;break;case 13:c=Oc(d);break;case 14:c=Oc(d)&255|d.j<<8}}return c}
|
||||
function Re(a,b){b=Je(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=Oe(b,c+1),0<=e&&(b=b.substr(0,c)+Pe(a,e)+b.substr(c+1+Ae[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=aa(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=Fe(a,e))?(d=e+' "'+Ne(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=Fe(a,e))?(Ge(d),d=e+' "'+
|
||||
Ne(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.R).G));if(this.sa&1073741824)this.ya.push(a);else if(!this.ra||a!=this.ra)if(this.ra=a,this.sa&-2147483648&&(this.na(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.sb=0;c.B-=c.b;c.b=0;nc(c)}};
|
||||
function gb(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.sa&g)!=g||a.message(b.Ya+"."+(null!=d?"outPort":"inPort")+"("+t(c)+","+(f?f:"unknown")+(null!=d?","+da(d):"")+")"+(null!=h?": "+da(h):"")+(null!=e?" at "+Z(e):""))}
|
||||
function ve(a){var b;if(Cd(a)){if(!a.M||!a.M.length){a.M=Array(1E3);for(b=0;b<a.M.length;b++)a.M[b]=W();a.ha=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.ha=0,a.M=[],a.K=[]}m.gb=function(a){if(!Se(this))return!1;this.b.gb(a);return!0};
|
||||
m.ub=function(a,b,c){if(!Se(this))return!1;this.L=0;a||Cd(this)&&Dd(this,this.b.R,0);try{var d=this.b.ub(a);0<d&&(this.L+=d,Ec(this.b,d,!0),pc(this.b,d),this.ba++)}catch(e){"number"!=typeof e&&(this.L=0,lb(this.b,e.stack||e.message))}!1!==c&&nc(this.b);this.Ia(b||!1);return 0<this.L};m.na=function(a){this.b&&this.b.na(a)};m.Ia=function(a){void 0===a&&(a=!0);this.O=W(this.b.R);a&&1!=this.S?Te(this):sf(this)};
|
||||
function Se(a){var b;if(b=a.b&&kb(a.b))b=a.b,b.D.ua?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!jb(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){ve(this);this.ba=this.za=0;this.ra=null;this.L=0;this.O=W(this.b.R);this.D.xa=!1;tf(this);a||this.Ia()};
|
||||
m.save=function(){var a=new Pc(this);I(a,0,He(this.O));I(a,1,He(this.da));I(a,2,[this.B,this.ea,this.sa]);I(a,3,this.H);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.O=Ie(a[b++]),this.da=Ie(a[b++]),this.B=a[b][0],"string"==typeof this.B&&(this.B=[this.B]),this.ea=a[b][1],this.sa|=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+" (";Cd(this)&&(c+=this.ba+" opcodes, ",this.za-=this.ba,this.ba=0);c+=this.L+" cycles, "+d+" ms, "+e+" hz)"}else hb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.Ia(!0);this.hb();tf(this,this.b.R)}};function Cd(a){return 1<a.u.length||!!a.qa}
|
||||
function Dd(a,b,c){var d=a.b;if(0<c&&(a.qa&&!--a.qa||ec(a,b,1,a.u)))return!0;0<=c&&a.K.length&&(a.ba++,b=yb(a.w,b),null!=b&&(a.K[b][1]++,b=a.M[a.ha],b.G=d.R,b.Pa=!1,++a.ha==a.M.length&&(a.ha=0)));return!1}function Eb(a,b,c){a.g("break on input from port "+t(b)+": "+n(c));a.na(!0)}function Jb(a,b,c){a.g("break on output to port "+t(b)+": "+n(c));a.na(!0)}
|
||||
function ue(a){var b,c;a.u=["bp"];if(void 0!==a.P)for(b=1;b<a.P.length;b++){c=a.P[b];var d=a.w;fc(d.Y[Ee(c)>>>d.pa],!1)}a.P=["br"];if(void 0!==a.J)for(b=1;b<a.J.length;b++)c=a.J[b],d=a.w,fc(d.Y[Ee(c)>>>d.pa],!0);a.J=["bw"];a.ib=0}m.$a=function(a,b,c){var d=!0;c||uf(this,a,b,!1,!0);if(a!=this.u){var e=Ee(b);if(-1===e)this.g("invalid address: "+Z(b.G)),d=!1;else{var f=this.w;f.Y[e>>>f.pa].$a(e&f.w,a==this.J)}}d&&(a.push(b),c?b.Pa=!0:(vf(this,a,a.length-1,"set"),ve(this)));return d};
|
||||
function uf(a,b,c,d,e){var f=!1;c=Ee(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==Ee(g)&&(!d||g.Pa)){f=!0;g.Pa||e||vf(a,b,h,"cleared");b.splice(h,1);b!=a.u&&(d=a.w,fc(d.Y[c>>>d.pa],b==a.J));g.Pa||ve(a);break}}return f}function wf(a,b){for(var c=1;c<b.length;c++)vf(a,b,c);return b.length-1}function vf(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.G)+(d?" "+d:c.Mc?' "'+c.Mc+'"':""))}
|
||||
function tf(a,b){if(void 0!==b)ec(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(!uf(a,a.u,d,!0))break;c=0}}}
|
||||
function ec(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=Ee(g),l=0;l<c;l++)if(b+l==k){var p,f=!0;g.Pa&&(uf(a,d,g,!0),e=!0);if(p=g.vd){for(var f=!1,q=0;q<p.length;q++)if(!xf(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var v=q+1;v<p.length&&p[v].indexOf("else");v++)q++;if(v==p.length){f=!0;break}}a.b.D.xa||(f=!0)}if(f){e||vf(a,d,h,"hit");break}}}a.ib--;return f}
|
||||
function yf(a,b,c,d){for(var e=W(b.G),f=a.aa(b,1),h=a.Na[f],g="",k=(8086!=a.style?ye:ze)[h[0]],l=h.length-1,p=0,q,v=1;v<=l;v++){var w="";q=h[v];if(void 0!==q&&!(q&16384&&a.style==te)){var r=q&240;if(r){var C=q&15;C?p=C:q|=p;q&61440||(q|=1==v?8192:4096);if(r&32)a:{var w=a,r=q,C=b,y=" ";switch(r&15){case 1:y=n(w.aa(C,1),2);break;case 2:y=n(w.aa(C,1)<<24>>24,4);break;case 3:y=n(w.Sa(C,2),4);break;default:w="imm("+t(r)+")";break a}8086==w.style&&r&64?y="["+y+"]":r&16||(y=(w.style==te?"$":"0x")+y);w=y}else r&
|
||||
16?(w=(q&3840)>>8,r=Ae[w],8086==a.style&&q&64&&(6==w&&(r="HL"),r="["+r+"]"),w=r):r&128&&(w=(f>>3&7).toString());if(!w||!w.length){g="INVALID";break}0<g.length&&(g+=",");g+=w||"???"}}}f="";h=Z(e.G)+" ";if(-1!==e.G&&-1!==b.G){do if(f+=n(a.aa(e,1),2),null==e.G)break;while(e.G!=b.G)}h+=ka(f,10);h=h+(q&32768?"*":" ")+ka(k,7);g&&(h+=" "+g);c&&(h=ka(h,40)+";"+c,h=a.b.D.mb?h+("cycles="+Cc(a.b).toString()+" cs="+n(a.b.i.Bb)):h+(null!=d?"="+d.toString():""));return h}
|
||||
function zf(a,b){var c;switch(b){case "IF":c=a.b.va&512;break;case "SF":c=$c(a.b);break;case "ZF":c=Zc(a.b);break;case "AF":c=Yc(a.b);break;case "PF":c=Xc(a.b);break;case "CF":c=Vc(a.b);break;default:c=0}return b.charAt(0)+(c?"1":"0")+" "}function Af(a,b){return Ae[b]+"="+Pe(a,b)+" "}function Bf(a){return Af(a,7)+Af(a,8)+Af(a,9)+Af(a,10)+Af(a,11)+zf(a,"IF")+zf(a,"SF")+zf(a,"ZF")+zf(a,"AF")+zf(a,"PF")+zf(a,"CF")}
|
||||
var Cf={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function Df(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}
|
||||
function Ie(a,b,c){var d;if(b){b=He(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=ka(p);if(!p){f=!0;break}p=Cf(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++],v=p.length;k.length&&Af[p]<Af[k[k.length-1]]&&Bf(g,k,1);k.push(p);b=b.substr(q+v)}Bf(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&Df(a,null,
|
||||
d))}return d}function He(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Ie(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?n(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=De(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.ca-a.za}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
||||
function Cf(a,b,c,d){var e;void 0!==b?(e=Me(b),0<=e?e=Oe(a,e):(e=a.ga[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 Df(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 Ef(a,b){if(b)return Df(a,b,a.ga[b]);var c=0;for(b in a.ga)Df(a,b,a.ga[b]),c++;return 0<c}qe.prototype.Ya=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Ff(a,b,c){var d=[],e=Ce(b)>>>0;for(b=0;b<a.H.length;b++){var f=a.H[b],h=f.G>>>0,g=f.Gd;if(e>=h&&e<h+g){e=la(f.sc,[e-h],a.Ya);0<=e?Gf(a,b,e,d):c&&(e=~e,Gf(a,b,e-1,d),Gf(a,b,e,d));break}}return d}function Gf(a,b,c,d){var e={},f=a.H[b].sc,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 Hf(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c,d=0;if(a.L)if("clear"==b){for(c=0;c<a.L.length;c++)a.L[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.L.slice();e.sort(function(a,b){return b[1]-a[1]});var f=8086!=a.style?we:xe;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)+" ("+("0x"+n(h,2))+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}}
|
||||
function If(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ef(a)||a.g("no variables"),!0;if(!c[2])return Ef(a,c[1]);if(!c[3])return delete a.ga[c[1]],!0;var d=Ie(a,c[3]);return void 0!==d?(a.ga[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
|
||||
function Jf(a,b,c){var d=null;if(b=De(a,b,!0)){var e=Ff(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 Kf(a,b){switch(b[1]){case "8080":a.style=re;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.ob=c;break;case "start":a.b.i.Cb=c;break;case "stop":a.b.i.qb=c;break;default:a.g("unknown cs option");return}void 0!==c&&nc(a.b);a.g("checksums "+(a.b.D.lb?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Fc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.bb.toFixed(2)+"Mhz")+
|
||||
" ("+a.b.i.eb+"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 Re(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=Ie(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.j=g&255;break;case "B":d.S=g&255;break;case "BC":d.S=g>>8&255;case "C":d.T=g&255;break;case "D":d.U=
|
||||
g&255;break;case "DE":d.U=g>>8&255;case "E":d.V=g&255;break;case "H":d.W=g&255;break;case "HL":d.W=g>>8&255;case "L":d.Z=g&255;break;case "SP":d.la=g&65535;break;case "PC":G(d,g);a.O=W(d.R);break;case "PS":Nc(d,g);break;case "PSW":Nc(d,g&255|d.va&-256);d.j=g>>8;break;case "CF":d.ba=g?d.ba|256:d.ba&255;break;case "PF":g?Xc(d)||(d.fa^=1):Xc(d)&&(d.fa^=1);break;case "AF":d.wa=g?~d.fa&16|d.wa&-17:d.fa&16|d.wa&-17;break;case "ZF":d.ba=g?d.ba&-256:d.ba|255;break;case "SF":g?$c(d)||(d.fa^=192):$c(d)&&(d.fa^=
|
||||
192);break;case "IF":d.va=g?d.va|512:d.va&-513;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}Bc(d);a.g("updated registers:")}a.g(zf(a));c&&(a.O=W(d.R),Se(a,Z(a.O.G)))}}function Lf(a,b){b=ka(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(Pe(a,c[2])):Ie(a,b,!0)}function Mf(a,b,c){var d="t"!=b;c=Cf(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);za(c,function(){return kb(a,!0)&&a.ub(e,d,!1)},function(){Bc(a.b);kb(a,!1)})}
|
||||
function Se(a,b,c,d){if(b=De(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=De(a,c,!0);if(!d||d.G<b.G)return;e=d.G-b.G;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=lb(a,!1)||a.X?a.K:null;var h=null!=f?"cycles":null,g=Ff(a,b),k=b.G;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.g(l)}g[3]&&(h=g[3],f=null);f=wf(a,b,h,f);a.g(f);a.O=b;e-=b.G-k;c++}}}
|
||||
function Ke(a,b,c,d){if(c)if(b){0>a.J&&a.B.length&&(a.J=0);if(0>a.J||b!=a.B[a.J])a.B.splice(0,0,b),a.J=0;a.J--}else a.ea?b="end":b=a.B[a.J+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(ka(b.substring(c,f))),c=f+1}}return a}
|
||||
function vf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.ea&&(a.g("ended assemble at "+Z(a.da.G)),a.O=a.da,a.ea=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ra=null;if(mb(a)&&0<b.length){a.ea&&(b="a "+Z(a.da.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=De(a,f[1],!0);if(p)if(a.da=
|
||||
p,void 0===f[2])a.g("begin assemble at "+Z(p.G)),a.ea=!0,Bc(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var v=0;v<q.length;v++)a.ta(p,q[v],1);a.g(wf(a,a.da))}}break;case "b":a:{var w=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 z=w.charAt(1);if("l"==z){var X=0,X=X+uf(a,a.u),X=X+uf(a,a.P);(X+=uf(a,a.F))||a.g("no breakpoints")}else if("n"==z)a.qa=Cf(a,r),a.g("break after "+a.qa+" instruction(s)");else if(void 0===r)a.g("missing breakpoint address");else{var A=W();if("*"!=r&&(A=De(a,r,!0),!A))break a;r=t(A.G);"c"==z?null==A.G?(se(a),a.g("all breakpoints cleared")):sf(a,a.u,A)||sf(a,a.P,A)||
|
||||
sf(a,a.F,A)||a.g("breakpoint missing: "+Z(A.G)):"i"==z?a.g("breakpoint "+(Db(a.w,A.G)?"enabled":"cleared")+": port "+r+" (input)"):"o"==z?a.g("breakpoint "+(Ib(a.w,A.G)?"enabled":"cleared")+": port "+r+" (output)"):null!=A.G&&(Je(a,A,C),"p"==z?a.Za(a.u,A):"r"==z?a.Za(a.P,A):"w"==z?a.Za(a.F,A):a.g("unknown breakpoint command: "+z))}}}break;case "c":a.Fa&&(a.Fa.value="");break;case "d":a:{var Q,aa=f[0],Y=f[1],va=f[2],Hb=f[3];if("?"==Y){var Ea="";for(Q in Ae)a.Ca[Q]&&(Ea&&(Ea+=","),Ea+=Q);Ea+=",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");Ea.length&&a.g("dump extension commands:\n\t"+Ea)}else if("state"==Y){var Te=Nf(a.A,!0);"console"==va?console.log(Te):(a.Fa&&(a.Fa.value=""),a.g(Te))}else if("symbols"==Y)for(var gd=0;gd<a.H.length;gd++){var hd=a.H[gd],ob;for(ob in hd.Ra)if("."!=ob.charAt(0)){var Ue=hd.Ra[ob].o;
|
||||
if(void 0!==Ue){var Ve=hd.Ra[ob].l;Ve&&(ob=Ve);a.g(Z(Ue)+" "+ob)}}}else{if("d"==aa){for(Q in Ae)if(f[1]==Q){var We=a.Ca[Q];We?(f.shift(),f.shift(),We(f)):a.g("no dump registered for "+Y);break a}Y||(aa=a.Ab||"db")}else a.Ab=aa;if("dh"==aa){var Xe=Y,Ye=va,Ze="",$e=0,ba=a.ha,Fa=a.N;if(Fa.length){var ga=+Xe||a.ib,pb=+Ye||10;isNaN(ga)?ga=pb:Ze="more ";ga>Fa.length&&(a.g("note: only "+Fa.length+" available"),ga=Fa.length);ba-=ga;0>ba&&(null==Fa[Fa.length-1].G?(ga=ba+ga,ba=0):ba+=Fa.length);var id=[];"call"==
|
||||
Ye&&(pb=1E5,id=["CALL"]);for(void 0!==Xe&&a.g(ga+" instructions earlier:");0<pb&&ba!=a.ha;){var af=Fa[ba++];if(null==af.G)break;var Lb=W(af.G),gg=ga--,bf=wf(a,Lb,"history",gg);(!id.length||0<=bf.indexOf(id[0]))&&a.g(bf);Lb.Vb&&(ba+=Lb.Vb,pb-=Lb.Vb,ga-=Lb.Vb);ba>=Fa.length&&(ba=0);a.ib=ga;$e++;pb--}}$e||(a.g("no "+Ze+"history available"),a.ib=void 0)}else{var pc=De(a,Y);if(pc){var qc=0;va&&("l"==va.charAt(0)&&(va=va.substr(1)||Hb),qc=Cf(a,va)>>>0,65536<qc&&(qc=65536));for(var Ya="",rc="dd"==aa?4:"dw"==
|
||||
aa?2:1,sc=rc*qc||128,hg=sc+15>>4||1;hg--&&0<sc;){var tc=0,jd=0,Mb,Nb="",kd="",Y=Z(pc.G);for(Mb=16;0<Mb&&0<sc;Mb--){var uc=a.aa(pc,1),tc=tc|uc<<(jd++<<3);jd==rc&&(Nb+=n(tc,2*rc),Nb+=1==rc?9==Mb?"-":" ":" ",tc=jd=0);kd+=32<=uc&&128>uc?String.fromCharCode(uc):".";sc--}Ya&&(Ya+="\n");Ya+=Y+" "+Nb+(0==Mb?" "+kd:"")}Ya&&a.g(Ya);a.$a=pc}}}}break;case "e":if("else"==f[0])break;var vc=1,cf=255,df=a.aa,ef=a.ta;"ew"==f[0]&&(vc=2,cf=65535,df=a.Sa,ef=a.Ub);var ff=vc<<1,gf=f[1];if(null==gf)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=De(a,gf);if(wc)for(var xc=2;xc<f.length;xc++){var Ob=Ie(a,f[xc]);if(void 0===Ob){a.g("unrecognized value: "+f[xc]);break}Ob&~cf&&a.g("warning: "+n(Ob)+" exceeds "+vc+"-byte value");var ig=df.call(a,wc);a.g("changing "+Z(wc.G)+" from 0x"+n(ig,ff)+" to 0x"+n(Ob,ff));ef.call(a,wc,Ob,vc)}}break;case "f":Hf(a,f[1]);break;case "g":a:{var hf=f[1],jg=b;if(void 0!==hf){var ld=De(a,hf,!0);if(!ld)break a;
|
||||
Je(a,ld,jg);a.Za(a.u,ld,!0)}a.fb(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var md;if(a.D.xa)md="halting",a.na();else{if(lb(a,!0))break a;md="already halted"}c||a.g(md)}break;case "i":if("if"==f[0]){var nd;var Pb=b.substr(2),Pb=ka(Pb);Ie(a,Pb)?(c||a.g("true: "+Pb),nd=!0):(c||a.g("false: "+Pb),nd=!1);nd||(d=!1);break}if("int"==f[0]){var yc;var kg=f[1];if(a.b.va&512){var od=Ie(a,kg);null==od?yc=!1:(a.g("requesting interrupt level "+od),Bd(a.b,od),yc=!0)}else a.g("interrupts disabled (use rif=1 to enable)"),
|
||||
yc=!1;yc||(d=!1);break}var pd=f[1];if(pd&&"?"!=pd){var qd=Cf(a,pd);if(void 0!==qd){var lg=Fb(a.w,qd);a.g(t(qd)+": "+("0x"+n(lg,2)))}}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 mg=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var rd=0,jf=W(),Qb=W(a.b.la);for(a.g("stack trace for "+Z(Qb.G));10>rd;){for(var Za=null,ng=256;65536>Qb.G>>>0;){jf.G=
|
||||
a.Sa(Qb,2);if(null==Qb.G||!ng--)break;for(var og=a,zc=jf,kf=null,Rb=zc.G,lf=Rb,sd=1;6>=sd&&Rb;sd++){if(2<sd){zc.G=Rb;var Ac=wf(og,zc);if(0<=Ac.indexOf("CALL")){var mf=Ac.indexOf(" ");if(Rb+(Ac.indexOf(" ",mf+1)-mf-1)/2==lf){kf=Ac;break}}}Rb--}zc.G=lf;if(Za=kf)break}if(!Za||null==Za)break;var nf=null;if("ks"==mg){var of=Za.match(/[0-9A-F]+$/);of&&(nf=Jf(a,of[0]))}Za=ja(Za,50)+" ;"+(nf||"stack="+Z(Qb.G));a.g(Za);rd++}rd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Jf(a,f[1],!0);
|
||||
break}break;case "m":a:{var Ga,Ha=null,N=f[1];"?"==N&&(N=void 0);if(void 0!==N){var Qa=0;if("all"==N)Qa=1878917119,N=null;else if("on"==N)Ha=!0,N=null;else if("off"==N)Ha=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(Ga in Ae)if(N==Ga){Qa=Ae[Ga];Ha=!!(a.sa&Qa);break}if(!Qa){a.g("unknown message category: "+N);break a}}if(Qa)if("on"==f[2])a.sa|=Qa,Ha=!0;else if("off"==f[2]&&(a.sa&=~Qa,Ha=!1,1073741824==Qa)){for(var td=0;td<a.ya.length;td++)a.g(a.ya[td]);a.ya=[]}}var pg=0,Ra="";for(Ga in Ae)if(!N||
|
||||
N==Ga){var qg=!!(a.sa&Ae[Ga]);if(null===Ha||Ha==qg)Ra&&(Ra+=","),++pg%10||(Ra+="\n\t"),"key"==Ga&&(Ga="keys"),Ra+=Ga}void 0===N&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ha?Ha?"messages on: ":"messages off: ":"message categories:\n\t")+(Ra||"none"));te(a)}break;case "o":var ud=f[1],rg=f[2];if(ud&&"?"!=ud){var vd=Cf(a,ud,"port #"),wd=Cf(a,rg);void 0!==vd&&void 0!==wd&&(Kb(a.w,vd,wd),a.g(t(vd)+": "+("0x"+n(wd,2))))}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]){Lf(a,b.substr(5));break}var pf="pr"==f[0]?1:0,sg=1+pf;if(a.X)a.g("step in progress");else{var xd=W(a.b.R);switch(a.aa(xd)){case 205:a.X=sg,Ee(xd,3)}a.X?(a.Za(a.u,xd,!0),a.fb()||(a.A&&a.A.gb(),a.X=0)):Mf(a,pf?"tr":"t")}break;case "r":if("reset"==b){a.A&&a.A.reset();break}Re(a,f);break;case "s":Kf(a,f);break;case "t":Mf(a,f[0],f[1]);break;case "u":Se(a,f[1],f[2],8);break;case "v":if("var"==f[0]){If(a,b.substr(3))||
|
||||
(d=!1);break}a.g("PC8080 version 1.23.3 ("+a.b.Bc+",RELEASE"+(qb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(ra());break;case "?":if(f[1]){Lf(a,b.substr(1));break}var Sb="commands:",yd;for(yd in ve)Sb+="\n"+ja(yd,9)+ve[yd];Cd(a)||(Sb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Sb);break;default:a.g("unknown command: "+b),d=!1}}}catch(qf){a.g("debugger error: "+(qf.stack||qf.message)),d=!1}return d}function oc(a,b,c){b=Ke(a,b,c);for(var d in b)if(!vf(a,b[d]))return!1;return!0}
|
||||
Ja(function(){for(var a=B(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new qe(d);gb(d,c)}});function H(a,b,c){this.id=a.id;this.key=Of(a,b,c);this.I=a.I;Pf(this,a.Ic)}function Of(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
H.prototype={constructor:H,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){Pf(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};
|
||||
function Pf(a,b){a[a.id]={};b&&I(a,"parms",b);a.b=!1}function Qf(a){var b=!0;if(ua()){var c=JSON.stringify(a[a.id]);xa(a.key,c)||(u("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Rf(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){u(c.message||c),b=!1}return b}function Sf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:ua()&&(b=wa(a.key))?(a[a.id]=b,a.b=!0):!1}function Tf(a,b){return a[a.id][b]||null}function I(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function Uf(a,b,c){x.call(this,"Computer",a,Uf,67108864);this.D.ua=!1;Vf(this,b);this.X=lc(this,"autoPower",a);this.B=0;this.ga=a.busWidth||a.buswidth;this.A=Wf;this.O=null;this.L=this.ea=!1;this.ha=lc(this,"url")||"";(Math.random()+.1).toString(36);this.u=Xf(this);if(this.b=db("CPU",this.id)){this.I=db("Debugger",this.id);this.H=[];for(b=null;b=tb(this,"Video",b);)this.H.push(b);this.w=new vb({id:this.Yb+".bus",busWidth:this.ga},this.b,this.I);var d,e=bb(this.id);if((this.J=db("Panel",this.id))&&
|
||||
this.J.Fa)for(b=0;b<e.length;b++)d=e[b],d.ja=this.J.ja,d.g=this.J.g,d.Fa=this.J.Fa;this.g("PC8080 v1.23.3\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Qa&&d.Qa(this,this.w,this.b,this.I);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.N=d:this.A=parseInt(d,10));var f;if(a=lc(this,"state")||(f=!0,a.state))b=this.ca=a,f||(this.L=!0,this.A=Wf),this.A&&(this.P=new H(this,"1.23.3"),Sf(this.P)?
|
||||
b=null:delete this.P);!b&&this.A&&(b=Yf(this))&&(this.L=!0);if(b){var h=this;pa(b,null,!0,function(a,b,c){c?(h.N=null,h.L=!1,h.ja("Unable to load machine state from server (error "+c+(b?": "+ka(b):"")+")")):(h.O=b,h.ea=!0);E(h)})}else E(this);this.M.power||(this.X=!0);!c&&this.X&&Zf(this,this.Gb)}else u("Unable to find CPU component")}Xa(Uf);var Wf=0;function Vf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){u(d.message+" ("+c+")")}}a.K=b}
|
||||
function lc(a,b,c){var d=b.toLowerCase(),d=Sa[b]||Sa[d];void 0===d&&a.K&&(d=a.K[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Zf(a,b,c){for(var d=bb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!mb(f)){mb(f,function(){Zf(a,b,c)});return}}b.call(a,c)}
|
||||
function $f(a,b){var c=new H(a,"1.23.3","validate");if(Sf(c)&&Rf(c)){var d=Tf(c,"timestamp"),e=b?Tf(b,"timestamp"):"unknown";d!=e&&(a.ja("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=Uf.prototype;
|
||||
m.Gb=function(a){void 0===a&&(a=this.A||(this.O?1:Wf));if(!this.B){this.B++;var b=!1,c=!1;this.da=!1;var d=this.P||new H(this,"1.23.3");if(-1==a)b=!0;else if(a>Wf){if(Sf(d,this.O)){this.F=new H(this,"1.23.3","failsafe");Sf(this.F)&&(ag(this,d),a=2,Pf(this.F));I(this.F,"timestamp",na());Qf(this.F);var e=this.A&&!this.L;if(1==a||sa("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=Rf(d)){var f=Tf(d,"code"),h=Tf(d,"data");f&&("ok"==f?Sf(d,h):("error"==f&&
|
||||
"no machine state"!=h?(this.ja("Error: "+h),"unable to verify user"==h&&(xa("user",""),this.u=null)):this.g(f+": "+h),Pf(d),Sf(d)?(c=Rf(d),e=!0):c=!1))}e&&$f(this,c?d:null)}else 2==a&&d.clear()}else $f(this);delete this.O;delete this.P}e=bb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=bg(this,h,d,b,c));b=[d,a,c];-1!=a?Zf(this,this.tc,b):this.tc(b)}};
|
||||
function bg(a,b,c,d,e){if(!b.D.ua){b.D.ua=!0;if(b.Ea){var f=null;e&&((f=Tf(c,b.id))||(f=Tf(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Ea(f,d)&&f&&(u("Unable to restore state for "+b.type),a.ca&&!a.ea?(c.clear(),a.A=Wf,window&&window.location.reload()):a.da=!0,b.Ea(null),e=!1)}if(!d&&b.yc)for(a=b.yc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
m.tc=function(a){var b=a[0],c=0>a[1];a=a[2];this.ia=!0;this.D.ua=!0;var d=this.M.power;d&&(d.textContent="Shutdown");this.b&&(bg(this,this.b,b,c,a),Cc(this.b));this.da&&(ag(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.B=0};
|
||||
function ag(a,b){if(sa("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.u||"",d=b.toString(),e={app:"PC8080",ver:"1.23.3"};e.url=a.ha;e.user=c;e.type="bug";e.data=d;pa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
||||
function Nf(a,b,c){var d,e="none";if(a.B)return null;a.B--;var f=new H(a,"1.23.3"),h=new H(a,"1.23.3","validate"),g=na();I(h,"timestamp",g);I(f,"timestamp",g);I(f,"version","1.23.3");I(f,"url",window?window.location.href:null);I(f,"browser",ra());a.b&&a.b.Ha&&(c&&a.b.na(),d=a.b.Ha(b,c),"object"===typeof d&&I(f,a.b.id,d),c&&(a.b.D.ua=!1,!1===d&&(e=null)));for(var g=bb(a.id),k=0;k<g.length;k++){var l=g[k];l.D.ua&&(l.Ha&&(d=l.Ha(b,c),"object"===typeof d&&I(f,l.id,d)),c&&(l.D.ua=!1,!1===d&&(e=null)))}e&&
|
||||
(c?(g=d=!1,b?(a.u&&cg(a,a.u,f.toString()),Qf(h)&&Qf(f)||(e=null,d=g=!0)):a.A&&(d=!0,g=3==a.A),d&&f.clear(g)):e=f.toString());c&&(a.D.ua=!1,b=a.M.power)&&(b.textContent="Power");a.B=0;return e}m.reset=function(){this.w&&this.w.reset&&(ib(this,"Resetting "+this.w.type),this.w.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.w&&c.reset&&(ib(this,"Resetting "+c.type),c.reset())}};
|
||||
m.start=function(a,b){for(var c=bb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var c=bb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||
m.ma=function(a,b,c){var d=this;switch(b){case "power":return this.M[b]=c,c.onclick=function(){d.B||(d.D.ua?Nf(d,!1,!0):Zf(d,d.Gb))},!0;case "reset":return this.M[b]=c,c.onclick=function(){if(d.D.ua&&!d.B)if(d.A&&!d.N){var a=sa("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Nf(d,a,!0);!a&&d.ca?window&&window.location.reload():d.Gb(Wf)}else d.reset(),d.b&&Cc(d.b)},!0;case "save":if(fa(qa(),"pcjs.org")){c.parentNode.removeChild(c);
|
||||
break}this.M[b]=c;c.onclick=function(){var a=Xf(d,!0);if(a){var b=!!(d.A&&!d.N||d.ca),c=Nf(d,b);b?cg(d,a,c):d.ja("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function Xf(a,b){var c=a.u;c||(c=wa("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=dg(a,c))||a.ja("The user ID is invalid."))):b&&a.ja("Browser local storage is not available"));return c}
|
||||
function dg(a,b){a.u=null;var c=pa(qa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(xa("user",c.data),a.u=c.data)}catch(e){u(e.message+" ("+d+")")}return a.u}function Yf(a){var b=null;a.u&&(b=qa()+"/api/v1/user?req=load&user="+a.u+"&state="+Of(a,"1.23.3"));return b}
|
||||
function cg(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Of(a,"1.23.3");d.data=c;b=pa(qa()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ja("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ja(c),xa("user",""),a.u=null)}}
|
||||
function tb(a,b,c){a=bb(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}m.gb=function(a){if(this.H.length){var b=0,c=0;a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.H[0];d.Ca&&d.Ca.focus();a&&window&&window.scrollTo(b,c)}};m.Ia=function(a){this.b&&this.b.Ia(a);this.J&&this.J.Ia(a)};function Ic(a,b){for(var c=0;c<a.H.length;c++)Kd(a.H[c],b)}
|
||||
Ja(function(){for(var a=B(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=y(c),c=B(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=y(f),h=new Uf(h,d,!0);gb(h,f);h.X&&Zf(h,h.Gb)}});Ba.show.push(function(){for(var a=B(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=db("Computer",c.id))&&c.ia&&!c.D.ua&&c.Gb(-1)}});
|
||||
Ba.exit.push(function(){for(var a=B(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=db("Computer",c.id))&&c.D.ua&&Nf(c,!(!c.A||c.N),!0)}});var eg=0;function fg(a,b,c,d,e,f){e("Loading "+a+"...");pa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):tg(g,a,b,c,d,e,f)})}
|
||||
function tg(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){ab(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
|
||||
g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(q){g=null,a=q.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?ug(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function ug(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");pa(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);ug(a,b,c)}})}else c(a,null)}
|
||||
function vg(a,b,c,d){function e(a){if(void 0===g){var b=h&&B(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ia(a))}function f(a){e("Error: "+a);k&&(--eg||Ma(!0));k=!1}var h,g,k=!0;eg++;$a[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=l:q.appendChild(document.createTextNode(l));p.appendChild(q)}c||
|
||||
(c="/versions/pc8080/1.23.3/components.xsl");l=function(d,g){g?fg(c,null,null,!1,e,function(d,k){if(k)if(ab(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--eg||Ma(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--eg||Ma(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?fg(b,a,d,!0,e,l):tg(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(v){f(v.message)}return k}window.embedPC8080=function(a,b,c,d){Ma(!1);return vg(a,b,c,d)};window.enableEvents=Ma;window.sendEvent=Na;
|
||||
function wg(a,b,c,d){if(!c&&b){d.push(b);a=$a[d[0]];b=null;for(var e in a)if(fa(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?pa(b,null,!0,function(a,b){xg(b,d)}):xg(null,d)}else u("Error ("+c+") requesting "+a)}
|
||||
function xg(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=$a[f],k={},l;for(l in g){var p=g[l],q=ea(l);if("xml"==q){for(q=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=q.exec(g[l]);){var v=d[2];v&&(g[v]||(p=p.replace(d[0],"")))}d=l=da(l)}else"xsl"==q&&(e=l=da(l));k[l]=p}a&&(k[l="css"]=a);b[2]&&(k[l="parms"]=b[2]);b[3]&&(k[l="state"]=b[3]);d&&e?(l=JSON.stringify(k),h+=".js",c=c[1]+"var resources="+l+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
|
||||
"©"),l=h,g=null,k="data:application/javascript,",k=ya("Firefox")?k+encodeURIComponent(c):k+encodeURI(c),l&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=k,g.download=l,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+l+"."):(window.open(k),c="Check your browser for a new window/tab containing the requested data"+(l?" ("+l+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n',
|
||||
function Ke(a,b,c){var d;if(b){b=Je(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=la(p);if(!p){f=!0;break}p=Ef(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++],v=p.length;k.length&&Cf[p]<Cf[k[k.length-1]]&&Df(g,k,1);k.push(p);b=b.substr(q+v)}Df(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&Ff(a,null,
|
||||
d))}return d}function Je(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Ke(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?n(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=Fe(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.ba-a.za}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
||||
function Ef(a,b,c,d){var e;void 0!==b?(e=Oe(b),0<=e?e=Qe(a,e):(e=a.ga[b],void 0===e&&(e=aa(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
|
||||
function Ff(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 Gf(a,b){if(b)return Ff(a,b,a.ga[b]);var c=0;for(b in a.ga)Ff(a,b,a.ga[b]),c++;return 0<c}se.prototype.Za=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Hf(a,b,c){var d=[],e=Ee(b)>>>0;for(b=0;b<a.H.length;b++){var f=a.H[b],h=f.G>>>0,g=f.Gd;if(e>=h&&e<h+g){e=ma(f.sc,[e-h],a.Za);0<=e?If(a,b,e,d):c&&(e=~e,If(a,b,e-1,d),If(a,b,e,d));break}}return d}function If(a,b,c,d){var e={},f=a.H[b].sc,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 Jf(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?ye:ze;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 Kf(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Gf(a)||a.g("no variables"),!0;if(!c[2])return Gf(a,c[1]);if(!c[3])return delete a.ga[c[1]],!0;var d=Ke(a,c[3]);return void 0!==d?(a.ga[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
|
||||
function Lf(a,b,c){var d=null;if(b=Fe(a,b,!0)){var e=Hf(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 Mf(a,b){switch(b[1]){case "8080":a.style=te;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&&lc(a.b);a.g("checksums "+(a.b.D.mb?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Dc(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")+
|
||||
" ("+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")}
|
||||
function Te(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=Ke(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.la=g&65535;break;case "PC":H(d,g);a.O=W(d.R);break;case "PS":Mc(d,g);break;case "PSW":Mc(d,g&255|d.va&-256);d.j=g>>8;break;case "CF":d.ca=g?d.ca|256:d.ca&255;break;case "PF":g?Xc(d)||(d.fa^=1):Xc(d)&&(d.fa^=1);break;case "AF":d.wa=g?~d.fa&16|d.wa&-17:d.fa&16|d.wa&-17;break;case "ZF":d.ca=g?d.ca&-256:d.ca|255;break;case "SF":g?$c(d)||(d.fa^=192):$c(d)&&(d.fa^=
|
||||
192);break;case "IF":d.va=g?d.va|512:d.va&-513;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}nc(d);a.g("updated registers:")}a.g(Bf(a));c&&(a.O=W(d.R),sf(a,Z(a.O.G)))}}function Nf(a,b){b=la(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(Re(a,c[2])):Ke(a,b,!0)}function Of(a,b,c){var d="t"!=b;c=Ef(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Aa(c,function(){return ib(a,!0)&&a.ub(e,d,!1)},function(){nc(a.b);ib(a,!1)})}
|
||||
function sf(a,b,c,d){if(b=Fe(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=Fe(a,c,!0);if(!d||d.G<b.G)return;e=d.G-b.G;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=jb(a,!1)||a.S?a.L:null;var h=null!=f?"cycles":null,g=Hf(a,b),k=b.G;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.g(l)}g[3]&&(h=g[3],f=null);f=yf(a,b,h,f);a.g(f);a.O=b;e-=b.G-k;c++}}}
|
||||
function Me(a,b,c,d){if(c)if(b){0>a.F&&a.B.length&&(a.F=0);if(0>a.F||b!=a.B[a.F])a.B.splice(0,0,b),a.F=0;a.F--}else a.ea?b="end":b=a.B[a.F+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(la(b.substring(c,f))),c=f+1}}return a}
|
||||
function xf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.ea&&(a.g("ended assemble at "+Z(a.da.G)),a.O=a.da,a.ea=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ra=null;if(kb(a)&&0<b.length){a.ea&&(b="a "+Z(a.da.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=Fe(a,f[1],!0);if(p)if(a.da=
|
||||
p,void 0===f[2])a.g("begin assemble at "+Z(p.G)),a.ea=!0,nc(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var v=0;v<q.length;v++)a.ta(p,q[v],1);a.g(yf(a,a.da))}}break;case "b":a:{var w=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=w.charAt(1);if("l"==y){var X=0,X=X+wf(a,a.u),X=X+wf(a,a.P);(X+=wf(a,a.J))||a.g("no breakpoints")}else if("n"==y)a.qa=Ef(a,r),a.g("break after "+a.qa+" instruction(s)");else if(void 0===r)a.g("missing breakpoint address");else{var A=W();if("*"!=r&&(A=Fe(a,r,!0),!A))break a;r=t(A.G);"c"==y?null==A.G?(ue(a),a.g("all breakpoints cleared")):uf(a,a.u,A)||uf(a,a.P,A)||
|
||||
uf(a,a.J,A)||a.g("breakpoint missing: "+Z(A.G)):"i"==y?a.g("breakpoint "+(Bb(a.w,A.G)?"enabled":"cleared")+": port "+r+" (input)"):"o"==y?a.g("breakpoint "+(Fb(a.w,A.G)?"enabled":"cleared")+": port "+r+" (output)"):null!=A.G&&(Le(a,A,C),"p"==y?a.$a(a.u,A):"r"==y?a.$a(a.P,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,ba=f[0],Y=f[1],wa=f[2],Ib=f[3];if("?"==Y){var Fa="";for(Q in Ce)a.Ca[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 Ue=Pf(a.A,!0);"console"==wa?console.log(Ue):(a.Fa&&(a.Fa.value=""),a.g(Ue))}else if("symbols"==Y)for(var hd=0;hd<a.H.length;hd++){var id=a.H[hd],pb;for(pb in id.Ra)if("."!=pb.charAt(0)){var Ve=id.Ra[pb].o;
|
||||
if(void 0!==Ve){var We=id.Ra[pb].l;We&&(pb=We);a.g(Z(Ve)+" "+pb)}}}else{if("d"==ba){for(Q in Ce)if(f[1]==Q){var Xe=a.Ca[Q];Xe?(f.shift(),f.shift(),Xe(f)):a.g("no dump registered for "+Y);break a}Y||(ba=a.Ab||"db")}else a.Ab=ba;if("dh"==ba){var Ye=Y,Ze=wa,$e="",af=0,ca=a.ha,Ga=a.M;if(Ga.length){var ha=+Ye||a.jb,qb=+Ze||10;isNaN(ha)?ha=qb:$e="more ";ha>Ga.length&&(a.g("note: only "+Ga.length+" available"),ha=Ga.length);ca-=ha;0>ca&&(null==Ga[Ga.length-1].G?(ha=ca+ha,ca=0):ca+=Ga.length);var jd=[];"call"==
|
||||
Ze&&(qb=1E5,jd=["CALL"]);for(void 0!==Ye&&a.g(ha+" instructions earlier:");0<qb&&ca!=a.ha;){var bf=Ga[ca++];if(null==bf.G)break;var Mb=W(bf.G),ig=ha--,cf=yf(a,Mb,"history",ig);(!jd.length||0<=cf.indexOf(jd[0]))&&a.g(cf);Mb.Vb&&(ca+=Mb.Vb,qb-=Mb.Vb,ha-=Mb.Vb);ca>=Ga.length&&(ca=0);a.jb=ha;af++;qb--}}af||(a.g("no "+$e+"history available"),a.jb=void 0)}else{var qc=Fe(a,Y);if(qc){var rc=0;wa&&("l"==wa.charAt(0)&&(wa=wa.substr(1)||Ib),rc=Ef(a,wa)>>>0,65536<rc&&(rc=65536));for(var Za="",sc="dd"==ba?4:"dw"==
|
||||
ba?2:1,tc=sc*rc||128,jg=tc+15>>4||1;jg--&&0<tc;){var uc=0,kd=0,Nb,Ob="",ld="",Y=Z(qc.G);for(Nb=16;0<Nb&&0<tc;Nb--){var vc=a.aa(qc,1),uc=uc|vc<<(kd++<<3);kd==sc&&(Ob+=n(uc,2*sc),Ob+=1==sc?9==Nb?"-":" ":" ",uc=kd=0);ld+=32<=vc&&128>vc?String.fromCharCode(vc):".";tc--}Za&&(Za+="\n");Za+=Y+" "+Ob+(0==Nb?" "+ld:"")}Za&&a.g(Za);a.ab=qc}}}}break;case "e":if("else"==f[0])break;var wc=1,df=255,ef=a.aa,ff=a.ta;"ew"==f[0]&&(wc=2,df=65535,ef=a.Sa,ff=a.Ub);var gf=wc<<1,hf=f[1];if(null==hf)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 xc=Fe(a,hf);if(xc)for(var yc=2;yc<f.length;yc++){var Pb=Ke(a,f[yc]);if(void 0===Pb){a.g("unrecognized value: "+f[yc]);break}Pb&~df&&a.g("warning: "+n(Pb)+" exceeds "+wc+"-byte value");var kg=ef.call(a,xc);a.g("changing "+Z(xc.G)+" from 0x"+n(kg,gf)+" to 0x"+n(Pb,gf));ff.call(a,xc,Pb,wc)}}break;case "f":Jf(a,f[1]);break;case "g":a:{var jf=f[1],lg=b;if(void 0!==jf){var md=Fe(a,jf,!0);if(!md)break a;
|
||||
Le(a,md,lg);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.na();else{if(jb(a,!0))break a;nd="already halted"}c||a.g(nd)}break;case "i":if("if"==f[0]){var od;var Qb=b.substr(2),Qb=la(Qb);Ke(a,Qb)?(c||a.g("true: "+Qb),od=!0):(c||a.g("false: "+Qb),od=!1);od||(d=!1);break}if("int"==f[0]){var zc;var mg=f[1];if(a.b.va&512){var pd=Ke(a,mg);null==pd?zc=!1:(a.g("requesting interrupt level "+pd),Bd(a.b,pd),zc=!0)}else a.g("interrupts disabled (use rif=1 to enable)"),
|
||||
zc=!1;zc||(d=!1);break}var qd=f[1];if(qd&&"?"!=qd){var rd=Ef(a,qd);if(void 0!==rd){var ng=Db(a.w,rd);a.g(t(rd)+": "+da(ng))}}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 og=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,kf=W(),Rb=W(a.b.la);for(a.g("stack trace for "+Z(Rb.G));10>sd;){for(var $a=null,pg=256;65536>Rb.G>>>0;){kf.G=
|
||||
a.Sa(Rb,2);if(null==Rb.G||!pg--)break;for(var qg=a,Ac=kf,lf=null,Sb=Ac.G,mf=Sb,td=1;6>=td&&Sb;td++){if(2<td){Ac.G=Sb;var Bc=yf(qg,Ac);if(0<=Bc.indexOf("CALL")){var nf=Bc.indexOf(" ");if(Sb+(Bc.indexOf(" ",nf+1)-nf-1)/2==mf){lf=Bc;break}}}Sb--}Ac.G=mf;if($a=lf)break}if(!$a||null==$a)break;var of=null;if("ks"==og){var pf=$a.match(/[0-9A-F]+$/);pf&&(of=Lf(a,pf[0]))}$a=ka($a,50)+" ;"+(of||"stack="+Z(Rb.G));a.g($a);sd++}sd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Lf(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 Ce)if(N==Ha){Ra=Ce[Ha];Ia=!!(a.sa&Ra);break}if(!Ra){a.g("unknown message category: "+N);break a}}if(Ra)if("on"==f[2])a.sa|=Ra,Ia=!0;else if("off"==f[2]&&(a.sa&=~Ra,Ia=!1,1073741824==Ra)){for(var ud=0;ud<a.ya.length;ud++)a.g(a.ya[ud]);a.ya=[]}}var rg=0,Sa="";for(Ha in Ce)if(!N||
|
||||
N==Ha){var sg=!!(a.sa&Ce[Ha]);if(null===Ia||Ia==sg)Sa&&(Sa+=","),++rg%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"));ve(a)}break;case "o":var vd=f[1],tg=f[2];if(vd&&"?"!=vd){var wd=Ef(a,vd,"port #"),xd=Ef(a,tg);void 0!==wd&&void 0!==xd&&(Hb(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]){Nf(a,b.substr(5));break}var qf="pr"==f[0]?1:0,ug=1+qf;if(a.S)a.g("step in progress");else{var yd=W(a.b.R);switch(a.aa(yd)){case 205:a.S=ug,Ge(yd,3)}a.S?(a.$a(a.u,yd,!0),a.gb()||(a.A&&a.A.hb(),a.S=0)):Of(a,qf?"tr":"t")}break;case "r":if("reset"==b){a.A&&a.A.reset();break}Te(a,f);break;case "s":Mf(a,f);break;case "t":Of(a,f[0],f[1]);break;case "u":sf(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Kf(a,b.substr(3))||
|
||||
(d=!1);break}a.g("PC8080 version 1.23.3 ("+a.b.Bc+",RELEASE"+(mb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(sa());break;case "?":if(f[1]){Nf(a,b.substr(1));break}var Tb="commands:",zd;for(zd in xe)Tb+="\n"+ka(zd,9)+xe[zd];Cd(a)||(Tb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Tb);break;default:a.g("unknown command: "+b),d=!1}}}catch(rf){a.g("debugger error: "+(rf.stack||rf.message)),d=!1}return d}function mc(a,b,c){b=Me(a,b,c);for(var d in b)if(!xf(a,b[d]))return!1;return!0}
|
||||
Ka(function(){for(var a=B(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new se(d);fb(d,c)}});function Pc(a,b,c){this.id=a.id;this.key=Qf(a,b,c);this.I=a.I;Rf(this,a.Ic)}function Qf(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
Pc.prototype={constructor:Pc,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){Rf(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};
|
||||
function Rf(a,b){a[a.id]={};b&&I(a,"parms",b);a.b=!1}function Sf(a){var b=!0;if(va()){var c=JSON.stringify(a[a.id]);ya(a.key,c)||(u("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Tf(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){u(c.message||c),b=!1}return b}function Uf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:va()&&(b=xa(a.key))?(a[a.id]=b,a.b=!0):!1}function Vf(a,b){return a[a.id][b]||null}function I(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function Wf(a,b,c){x.call(this,"Computer",a,Wf,67108864);this.D.ua=!1;Xf(this,b);this.S=jc(this,"autoPower",a);this.B=0;this.ga=a.busWidth||a.buswidth;this.A=Yf;this.O=null;this.K=this.ea=!1;this.ha=jc(this,"url")||"";(Math.random()+.1).toString(36);this.u=Zf(this);if(this.b=eb("CPU",this.id)){this.I=eb("Debugger",this.id);this.H=[];for(b=null;b=rb(this,"Video",b);)this.H.push(b);this.w=new tb({id:this.Yb+".bus",busWidth:this.ga},this.b,this.I);var d,e=cb(this.id);if((this.F=eb("Panel",this.id))&&
|
||||
this.F.Fa)for(b=0;b<e.length;b++)d=e[b],d.ja=this.F.ja,d.g=this.F.g,d.Fa=this.F.Fa;this.g("PC8080 v1.23.3\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Qa&&d.Qa(this,this.w,this.b,this.I);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.M=d:this.A=parseInt(d,10));var f;if(a=jc(this,"state")||(f=!0,a.state))b=this.ba=a,f||(this.K=!0,this.A=Yf),this.A&&(this.P=new Pc(this,"1.23.3"),Uf(this.P)?
|
||||
b=null:delete this.P);!b&&this.A&&(b=$f(this))&&(this.K=!0);if(b){var h=this;qa(b,null,!0,function(a,b,c){c?(h.M=null,h.K=!1,h.ja("Unable to load machine state from server (error "+c+(b?": "+la(b):"")+")")):(h.O=b,h.ea=!0);F(h)})}else F(this);this.N.power||(this.S=!0);!c&&this.S&&ag(this,this.Gb)}else u("Unable to find CPU component")}Ya(Wf);var Yf=0;function Xf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){u(d.message+" ("+c+")")}}a.L=b}
|
||||
function jc(a,b,c){var d=b.toLowerCase(),d=Ta[b]||Ta[d];void 0===d&&a.L&&(d=a.L[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function ag(a,b,c){for(var d=cb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!kb(f)){kb(f,function(){ag(a,b,c)});return}}b.call(a,c)}
|
||||
function bg(a,b){var c=new Pc(a,"1.23.3","validate");if(Uf(c)&&Tf(c)){var d=Vf(c,"timestamp"),e=b?Vf(b,"timestamp"):"unknown";d!=e&&(a.ja("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=Wf.prototype;
|
||||
m.Gb=function(a){void 0===a&&(a=this.A||(this.O?1:Yf));if(!this.B){this.B++;var b=!1,c=!1;this.da=!1;var d=this.P||new Pc(this,"1.23.3");if(-1==a)b=!0;else if(a>Yf){if(Uf(d,this.O)){this.J=new Pc(this,"1.23.3","failsafe");Uf(this.J)&&(cg(this,d),a=2,Rf(this.J));I(this.J,"timestamp",oa());Sf(this.J);var e=this.A&&!this.K;if(1==a||ta("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=Tf(d)){var f=Vf(d,"code"),h=Vf(d,"data");f&&("ok"==f?Uf(d,h):("error"==
|
||||
f&&"no machine state"!=h?(this.ja("Error: "+h),"unable to verify user"==h&&(ya("user",""),this.u=null)):this.g(f+": "+h),Rf(d),Uf(d)?(c=Tf(d),e=!0):c=!1))}e&&bg(this,c?d:null)}else 2==a&&d.clear()}else bg(this);delete this.O;delete this.P}e=cb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=dg(this,h,d,b,c));b=[d,a,c];-1!=a?ag(this,this.tc,b):this.tc(b)}};
|
||||
function dg(a,b,c,d,e){if(!b.D.ua){b.D.ua=!0;if(b.Ea){var f=null;e&&((f=Vf(c,b.id))||(f=Vf(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Ea(f,d)&&f&&(u("Unable to restore state for "+b.type),a.ba&&!a.ea?(c.clear(),a.A=Yf,window&&window.location.reload()):a.da=!0,b.Ea(null),e=!1)}if(!d&&b.yc)for(a=b.yc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
m.tc=function(a){var b=a[0],c=0>a[1];a=a[2];this.ia=!0;this.D.ua=!0;var d=this.N.power;d&&(d.textContent="Shutdown");this.b&&(dg(this,this.b,b,c,a),oc(this.b));this.da&&(cg(this,b),b.clear());!c&&this.J&&(this.J.clear(),delete this.J);this.B=0};
|
||||
function cg(a,b){if(ta("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.u||"",d=b.toString(),e={app:"PC8080",ver:"1.23.3"};e.url=a.ha;e.user=c;e.type="bug";e.data=d;qa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
||||
function Pf(a,b,c){var d,e="none";if(a.B)return null;a.B--;var f=new Pc(a,"1.23.3"),h=new Pc(a,"1.23.3","validate"),g=oa();I(h,"timestamp",g);I(f,"timestamp",g);I(f,"version","1.23.3");I(f,"url",window?window.location.href:null);I(f,"browser",sa());a.b&&a.b.Ha&&(c&&a.b.na(),d=a.b.Ha(b,c),"object"===typeof d&&I(f,a.b.id,d),c&&(a.b.D.ua=!1,!1===d&&(e=null)));for(var g=cb(a.id),k=0;k<g.length;k++){var l=g[k];l.D.ua&&(l.Ha&&(d=l.Ha(b,c),"object"===typeof d&&I(f,l.id,d)),c&&(l.D.ua=!1,!1===d&&(e=null)))}e&&
|
||||
(c?(g=d=!1,b?(a.u&&eg(a,a.u,f.toString()),Sf(h)&&Sf(f)||(e=null,d=g=!0)):a.A&&(d=!0,g=3==a.A),d&&f.clear(g)):e=f.toString());c&&(a.D.ua=!1,b=a.N.power)&&(b.textContent="Power");a.B=0;return e}m.reset=function(){this.w&&this.w.reset&&(E(this,"Resetting "+this.w.type),this.w.reset());for(var a=cb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.w&&c.reset&&(E(this,"Resetting "+c.type),c.reset())}};
|
||||
m.start=function(a,b){for(var c=cb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var c=cb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||
m.ma=function(a,b,c){var d=this;switch(b){case "power":return this.N[b]=c,c.onclick=function(){d.B||(d.D.ua?Pf(d,!1,!0):ag(d,d.Gb))},!0;case "reset":return this.N[b]=c,c.onclick=function(){if(d.D.ua&&!d.B)if(d.A&&!d.M){var a=ta("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Pf(d,a,!0);!a&&d.ba?window&&window.location.reload():d.Gb(Yf)}else d.reset(),d.b&&oc(d.b)},!0;case "save":if(ga(ra(),"pcjs.org")){c.parentNode.removeChild(c);
|
||||
break}this.N[b]=c;c.onclick=function(){var a=Zf(d,!0);if(a){var b=!!(d.A&&!d.M||d.ba),c=Pf(d,b);b?eg(d,a,c):d.ja("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function Zf(a,b){var c=a.u;c||(c=xa("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=fg(a,c))||a.ja("The user ID is invalid."))):b&&a.ja("Browser local storage is not available"));return c}
|
||||
function fg(a,b){a.u=null;var c=qa(ra()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(ya("user",c.data),a.u=c.data)}catch(e){u(e.message+" ("+d+")")}return a.u}function $f(a){var b=null;a.u&&(b=ra()+"/api/v1/user?req=load&user="+a.u+"&state="+Qf(a,"1.23.3"));return b}
|
||||
function eg(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Qf(a,"1.23.3");d.data=c;b=qa(ra()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ja("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ja(c),ya("user",""),a.u=null)}}
|
||||
function rb(a,b,c){a=cb(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}m.hb=function(a){if(this.H.length){var b=0,c=0;a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.H[0];d.Ca&&d.Ca.focus();a&&window&&window.scrollTo(b,c)}};m.Ia=function(a){this.b&&this.b.Ia(a);this.F&&this.F.Ia(a)};function Hc(a,b){for(var c=0;c<a.H.length;c++)Kd(a.H[c],b)}
|
||||
Ka(function(){for(var a=B(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=z(c),c=B(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=z(f),h=new Wf(h,d,!0);fb(h,f);h.S&&ag(h,h.Gb)}});Ca.show.push(function(){for(var a=B(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=eb("Computer",c.id))&&c.ia&&!c.D.ua&&c.Gb(-1)}});
|
||||
Ca.exit.push(function(){for(var a=B(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=eb("Computer",c.id))&&c.D.ua&&Pf(c,!(!c.A||c.M),!0)}});var gg=0;function hg(a,b,c,d,e,f){e("Loading "+a+"...");qa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):vg(g,a,b,c,d,e,f)})}
|
||||
function vg(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){bb(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
|
||||
g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(q){g=null,a=q.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?wg(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function wg(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");qa(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);wg(a,b,c)}})}else c(a,null)}
|
||||
function xg(a,b,c,d){function e(a){if(void 0===g){var b=h&&B(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ja(a))}function f(a){e("Error: "+a);k&&(--gg||Na(!0));k=!1}var h,g,k=!0;gg++;ab[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=l:q.appendChild(document.createTextNode(l));p.appendChild(q)}c||
|
||||
(c="/versions/pc8080/1.23.3/components.xsl");l=function(d,g){g?hg(c,null,null,!1,e,function(d,k){if(k)if(bb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--gg||Na(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--gg||Na(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?hg(b,a,d,!0,e,l):vg(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(v){f(v.message)}return k}window.embedPC8080=function(a,b,c,d){Na(!1);return xg(a,b,c,d)};window.enableEvents=Na;window.sendEvent=Oa;
|
||||
function yg(a,b,c,d){if(!c&&b){d.push(b);a=ab[d[0]];b=null;for(var e in a)if(ga(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?qa(b,null,!0,function(a,b){zg(b,d)}):zg(null,d)}else u("Error ("+c+") requesting "+a)}
|
||||
function zg(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=ab[f],k={},l;for(l in g){var p=g[l],q=fa(l);if("xml"==q){for(q=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=q.exec(g[l]);){var v=d[2];v&&(g[v]||(p=p.replace(d[0],"")))}d=l=ea(l)}else"xsl"==q&&(e=l=ea(l));k[l]=p}a&&(k[l="css"]=a);b[2]&&(k[l="parms"]=b[2]);b[3]&&(k[l="state"]=b[3]);d&&e?(l=JSON.stringify(k),h+=".js",c=c[1]+"var resources="+l+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
|
||||
"©"),l=h,g=null,k="data:application/javascript,",k=za("Firefox")?k+encodeURIComponent(c):k+encodeURI(c),l&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=k,g.download=l,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+l+"."):(window.open(k),c="Check your browser for a new window/tab containing the requested data"+(l?" ("+l+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n',
|
||||
c+='<div id="'+f+'"></div>\n',c+="...\n",c+='<script type="text/javascript" src="'+h+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",u(c)):u("Missing XML/XSL resources")}
|
||||
window.savePC=function(a,b,c){var d=db("Computer",a),e=db("Debugger",a);if(d){var f=Nf(d,!0),h=d.K?JSON.stringify(d.K):null;b||(b="/versions/pcjs/1.23.3/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Ic:h}))return!0;pa(b,null,!0,function(c,d,e){wg(c,d,e,[a,da(b,!0),h,f])});return!0}u("Unable to identify machine '"+a+"'");return!1};})();
|
||||
window.savePC=function(a,b,c){var d=eb("Computer",a),e=eb("Debugger",a);if(d){var f=Pf(d,!0),h=d.L?JSON.stringify(d.L):null;b||(b="/versions/pcjs/1.23.3/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Ic:h}))return!0;qa(b,null,!0,function(c,d,e){yg(c,d,e,[a,ea(b,!0),h,f])});return!0}u("Unable to identify machine '"+a+"'");return!1};})();
|
||||
|
|
|
|||
|
|
@ -7,163 +7,163 @@ typeof b){var k="",m;for(m in b)b.hasOwnProperty(m)&&(k&&(k+="&"),k+=m+"="+encod
|
|||
function q(a){window&&window.alert(a)}function ka(a){var b=!1;window&&(b=window.confirm(a));return b}var ma=null;function na(){if(null==ma){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}ma=a}return ma}function oa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function pa(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function qa(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 ra={init:[],show:[],exit:[]},sa=!1,ta=!0;function ua(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function va(a){ra.init.push(a)}
|
||||
function wa(a){if(ta)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){xa("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function ya(a){!ta&&a?(ta=!0,sa&&za("init")):ta=a}function za(a){ra[a]&&wa(ra[a])}ua("onload",function(){sa=!0;wa(ra.init)});ua("onpageshow",function(){wa(ra.show)});ua(qa("Opera")||qa("iOS")?"onunload":"onbeforeunload",function(){wa(ra.exit)});
|
||||
function r(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.wb=b.comment;this.Xb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.kb=this.id.substr(0,b),this.Qa=this.id.substr(b+1)):this.Qa=this.id;this[a]=c;this.j={fa:!1,Fa:!1,nb:!1,U:!1,qa:!1};this.Wa=null;this.j.qa=!1;this.B={};this.N=null;w.push(this)}var Aa=void 0,Ba={};
|
||||
function r(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.wb=b.comment;this.Xb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.kb=this.id.substr(0,b),this.Qa=this.id.substr(b+1)):this.Qa=this.id;this[a]=c;this.j={fa:!1,Fa:!1,nb:!1,U:!1,ra:!1};this.Wa=null;this.j.ra=!1;this.B={};this.N=null;w.push(this)}var Aa=void 0,Ba={};
|
||||
if(window){Aa||(Aa=window.location.search.substr(1));for(var Ca,Ea=/\+/g,Fa=/([^&=]+)=?([^&]*)/g;Ca=Fa.exec(Aa);)Ba[decodeURIComponent(Ca[1].replace(Ea," "))]=decodeURIComponent(Ca[2].replace(Ea," "))}function Ga(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 y(a,b){b||(b=r);a.prototype=Ga(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var w=[],Ha={};function Ia(a,b,c){Ha[a]&&b&&(Ha[a][b]=c)}function xa(a,b,c){b||q((c?c+": ":"")+a)}function Ja(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<w.length;b++){var d=w[b];a&&d.id.indexOf(a)||c.push(d)}return c}function Ka(a){if(void 0!==a){var b;for(b=0;b<w.length;b++)if(w[b].id===a)return w[b]}return null}
|
||||
function La(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<w.length;d++)if(c)c==w[d]&&(c=null);else if(!(a!=w[d].type||b&&w[d].id.indexOf(b)))return w[d]}return null}function z(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){q(c.message+" ("+a+")")}return b}function Ma(a,b){var c,d=Na;b&&(void 0===c&&(c="Panel"),(c=La(c,a.id))&&(c=c.B[b])&&a.R(null,d,c))}
|
||||
function Oa(a,b){for(var c=A(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(" "),m=0;m<k.length;m++)switch(g=k[m],g){case "pc8080-binding":(g=z(h))&&g.binding&&a.R(g.type,g.binding,h,g.value),m=k.length}}}}
|
||||
function La(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<w.length;d++)if(c)c==w[d]&&(c=null);else if(!(a!=w[d].type||b&&w[d].id.indexOf(b)))return w[d]}return null}function z(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){q(c.message+" ("+a+")")}return b}
|
||||
function Ma(a,b){for(var c=A(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(" "),m=0;m<k.length;m++)switch(g=k[m],g){case "pc8080-binding":(g=z(h))&&g.binding&&a.S(g.type,g.binding,h,g.value),m=k.length}}}}
|
||||
function A(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}
|
||||
r.prototype={constructor:r,parent:null,toString:function(){return this.name?this.name:this.id||this.type},R: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.ma=this.B[b]=c,c.value="",this.aa=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.M=function(a){this.aa(a,this.Qa)}),!0;default:return!1}},log:function(){},aa:function(){},status:function(a){this.aa(this.Qa+": "+a)},M:function(a,b,c){xa(a,b,c||this.type)},ca:function(){return this.j.U=!0},ga:function(a,b){b&&(this.j.U=!1);return!0}};function Pa(a,b){if(a.j.nb)return a.j.Fa&&(a.j.Fa=!1),a.j.nb=!1;if(a.j.qa)return a.aa(a.toString()+" error"),!1;a.j.Fa=b;return a.j.Fa}function D(a){if(!a.j.qa&&(a.j.fa=!0,a.j.fa)){var b=a.Wa;a.Wa=null;b&&b()}}
|
||||
function Qa(a,b){b&&(a.j.fa?b():a.Wa=b);return a.j.fa}
|
||||
var Ra="undefined"!==typeof ArrayBuffer,Sa=[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 Ta(a){r.call(this,"Panel",a,Ta)}y(Ta);l=Ta.prototype;l.R=function(a,b,c,d){return this.l&&this.l.R(a,b,c,d)||this.a&&this.a.R(a,b,c,d)||this.o&&this.o.R(a,b,c,d)?!0:this.parent.R.call(this,a,b,c,d)};l.la=function(a,b,c,d){this.l=a;this.m=b;this.a=c;this.N=d;this.o=E(a,"Keyboard")};l.ca=function(a,b){b||Ua();return!0};l.ga=function(){return!0};l.ta=function(){};
|
||||
function Ua(){for(var a=!1,b=A(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f=Ka(e.id);f||(a=!0,f=new Ta(e));Oa(f,d);a&&D(f)}}va(Ua);
|
||||
function Va(a,b,c){r.call(this,"Bus",a,Va);this.a=b;this.N=c;this.h=a.busWidth||16;this.v=Math.pow(2,this.h);this.f=this.v-1|0;this.c=16>=this.h?10:20>=this.h?12:24>=this.h?14:15;this.m=1<<this.c;this.w=this.m>>2;this.l=this.m-1;this.i=this.v/this.m|0;this.u=this.i-1;this.o=[];this.s=[];this.A=[];this.C=[];a=new F;Wa(a,this.N);this.b=Array(this.i);for(b=0;b<this.i;b++)this.b[b]=a;D(this)}y(Va);Va.prototype.reset=function(){};Va.prototype.ca=function(a,b){b||this.reset();return!0};
|
||||
function Xa(a,b,c,d){for(var e=b,f=c,h=e>>>a.c;0<f&&h<a.b.length;){var g=a.b[h],k=h*a.m,m=a.m-(e-k);m>f&&(m=f);if(g&&g.size){if(g.type==d){if(e+f<=g.Ea)return g.fb+=g.Ea-e,g.Ea=e,!0;if(e>=g.Ea+g.fb){m=g.size-(e-k);m>f&&(m=f);g.fb=e-g.Ea+m;e=k+a.m;f-=m;h++;continue}}return Ya(1,e,f)}e=new F(e,m,a.m,d);Wa(e,a.N,g);a.b[h++]=e;e=k+a.m;f-=m}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Za[d]+" at "+("0x"+n(b,4))),!0):Ya(2,b,c)}
|
||||
Va.prototype.L=function(a){return this.b[(a&this.f)>>>this.c].Na(a&this.l,a)};function $a(a,b){return a.b[(b&a.f)>>>a.c].cb(b&a.l,b)}function ab(a,b){var c=b&a.l,d=(b&a.f)>>>a.c;return c!=a.l?a.b[d].jd(c,b):a.b[d++].Na(c,b)|a.b[d&a.u].Na(0,b+1)<<8}Va.prototype.V=function(a,b){this.b[(a&this.f)>>>this.c].Oa(a&this.l,b&255,a)};function bb(a,b,c){a.b[(b&a.f)>>>a.c].$b(b&a.l,c&255,b)}
|
||||
function cb(a,b,c){var d=b&a.l,e=(b&a.f)>>>a.c;d!=a.l?a.b[e].kd(d,c&65535,b):(a.b[e++].Oa(d,c&255,b),a.b[e&a.u].Oa(0,c>>8&255,b+1))}function db(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.o[k]?q("Input port 0x"+n(k,4)+" already registered"):f.o[k]=[g,!1]}}
|
||||
function eb(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.s[k]?q("Output port 0x"+n(k,4)+" already registered"):f.s[k]=[g,!1]}}function Ya(a,b,c){q("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var fb;if(Ra){var hb=new ArrayBuffer(2);(new DataView(hb)).setUint16(0,256,!0);fb=256===(new Uint16Array(hb))[0]}else fb=!1;var ib=fb;
|
||||
function F(a,b,c,d){this.id=jb+=2;this.a=null;this.Ea=a;this.fb=b;this.size=c||0;this.type=d||kb;this.B=d==lb;Wa(this);this.ja=this.Nb=!1;if(c)if(Ra)this.c=new ArrayBuffer(c),this.m=new DataView(this.c,0,c),this.b=new Uint8Array(this.c,0,c),this.h=new Uint16Array(this.c,0,c>>1),this.a=new Int32Array(this.c,0,c>>2),mb(this,ib?nb:ob);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;mb(this,pb)}else mb(this)}var kb=0,lb=2,Za=["NONE","RAM","ROM","VID","H/W"],jb=0;
|
||||
F.prototype={constructor:F,parent:null,save:function(){var a,b;if(Ra)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.m.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(Ra)for(b=0;b<a.length;b++)this.m.setInt32(b<<2,a[b],!0);else this.a=a;return this.ja=!0}return!1},i:function(){return 255},s:function(){},o:function(a,b){return this.Na(a++,b++)|this.Na(a,b)<<8},u:function(a,b,c){this.Oa(a++,b&255,c++);this.Oa(a,b>>8,c)},C:function(a){return this.a[a>>
|
||||
2]>>>((a&3)<<3)&255},I:function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8},Y:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.ja=!0},va:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.a[c]=this.a[c]&~(65535<<d)|b<<d:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.ja=!0},w:function(a,b){return this.cb(a,b)},J:function(a,b){return this.Yb(a,b)},S:function(a,b,c){this.B||this.$b(a,b,c)},$:function(a,
|
||||
b,c){this.B||this.ba(a,b,c)},v:function(a){return this.b[a]},A:function(a){return this.b[a]},G:function(a){return this.m.getUint16(a,!0)},H:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.h[a>>1]},K:function(a,b){this.b[a]=b;this.ja=!0},T:function(a,b){this.b[a]=b;this.ja=!0},Z:function(a,b){this.m.setUint16(a,b,!0);this.ja=!0},da:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.h[a>>1]=b;this.ja=!0}};
|
||||
function Wa(a,b,c){a.N=b;a.l=a.f=0;c&&((a.l=c.l)&&qb(a,rb,!1),(a.f=c.f)&&sb(a,rb,!1))}function sb(a,b,c){c&&a.f||(a.Oa=!a.B&&b[2]||a.s,a.kd=!a.B&&b[3]||a.u);if(c||void 0===c)a.$b=b[2]||a.s,a.ba=b[3]||a.u}function qb(a,b,c){c&&a.l||(a.Na=b[0]||a.i,a.jd=b[1]||a.o);if(c||void 0===c)a.cb=b[0]||a.i,a.Yb=b[1]||a.o}function mb(a,b){b||(b=tb);qb(a,b,void 0);sb(a,b,void 0)}var tb=[],pb=[F.prototype.C,F.prototype.I,F.prototype.Y,F.prototype.va],rb=[F.prototype.w,F.prototype.J,F.prototype.S,F.prototype.$];
|
||||
if(Ra)var ob=[F.prototype.v,F.prototype.G,F.prototype.K,F.prototype.Z],nb=[F.prototype.A,F.prototype.H,F.prototype.T,F.prototype.da];
|
||||
function ub(a,b){r.call(this,"CPU",a,ub);var c=a.cycles||b,d=a.multiplier||1;this.c={};this.c.Ba=c;this.c.$a=0;this.c.Aa=d;this.c.pb=Math.round(this.c.Ba/1E4)/100;this.c.xa=this.c.pb*this.c.Aa;this.j.ka=!1;this.j.Pb=!1;this.j.Mb=a.autoStart;this.j.Ob=!1;this.j.Ua=!1;this.c.Ya=this.c.za=0;this.c.Za=a.csStart;this.c.Ga=a.csInterval;this.c.Ha=a.csStop;this.da=this.ub.bind(this);D(this)}y(ub);var vb=["power","reset"];l=ub.prototype;
|
||||
l.la=function(a,b,c,d){this.l=a;this.m=b;this.N=d;for(b=0;b<vb.length;b++)(c=this.B[vb[b]])&&this.l.R(null,vb[b],c);this.T=(b=E(a,"Video"))&&Math.max(b.Tc,b.mb)||60;this.J=E(a,"ChipSet");a=wb(a,"autoStart");null!=a&&(this.j.Mb="true"==a?!0:"false"==a?!1:!!a);D(this)};l.reset=function(){this.c.$a=0};l.save=function(){return null};l.restore=function(){return!1};
|
||||
l.ca=function(a,b){if(!b){if(a&&this.restore){xb(this);if(!this.restore(a))return!1;yb(this)}else this.reset();this.aa("No debugger detected")}zb(this);return!0};l.ga=function(a){return a?this.save():!0};function Ab(a){(a.j.Mb||void 0===a.B.run)&&a.ub(!0)}l.Sb=function(){return 0};function yb(a){void 0===a.c.Za&&(a.c.Za=0);void 0===a.c.Ga&&(a.c.Ga=-1);void 0===a.c.Ha&&(a.c.Ha=-1);a.j.Ua=0<=a.c.Za&&0<a.c.Ga;a.j.Ua&&(a.c.Ya=0,a.c.za=a.c.Za-a.K)}
|
||||
l.R=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.l)if(a=d.l,a.j.U)a=!0;else{var b=null,c,g=Ja(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.j.fa);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.j.U);c++);c==g.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.j.fa?"powered yet":"ready yet"+(b.Wa?" (waiting for notification)":""))+".");a=!1}a&&(d.j.ka?Bb(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(){Cb(d,d.c.Aa<<1,!0)},c.textContent=this.c.xa.toFixed(2)+"Mhz",a=!0}return a};function Db(a,b,c){a.K+=b;c&&(a.I=a.a=0)}
|
||||
function Eb(a,b){var c=30;c<a.T&&(c=a.T);2>c&&(c=2);var d=1;b&&1<a.c.Aa&&a.c.ra&&(d=a.c.ra/a.c.pb);a.c.Ub=Math.round(1E3/30);a.c.Uc=Math.floor(a.c.Ba/c*d);a.c.rb=Math.floor(a.c.Ba/30*d);a.c.Wb=Math.floor(a.c.Ba/a.T*d);a.c.Vb=Math.floor(a.c.Ba/2*d);b||(a.c.Ka=a.c.rb,a.c.Ja=a.c.Wb,a.c.Ia=a.c.Vb);a.c.sb=0}function Fb(a){return a.K+a.H+a.I-a.a}function xb(a){a.c.ra=0;a.K=a.H=a.I=a.a=0;yb(a);Cb(a,1)}
|
||||
function Cb(a,b,c){if(void 0!==b){.8>a.c.ra/a.c.xa&&(b=1);a.c.Aa=b;b=a.c.pb*a.c.Aa;if(a.c.xa!=b){a.c.xa=b;b=a.c.xa.toFixed(2)+"Mhz";var d=a.B.setSpeed;d&&(d.textContent=b);a.aa("target speed: "+b)}c&&a.l&&Gb(a.l)}Db(a,a.H);a.H=0;a.c.ya=ha();a.c.sa=0;Eb(a)}
|
||||
l.ub=function(a){if(Pa(this,!0)){if(!this.j.ka){Cb(this);this.l&&this.l.start(this.c.ya,Fb(this));this.j.ka=!0;this.j.Pb=!0;this.J&&this.J.start();var b=this.B.run;b&&(b.textContent="Halt");this.l&&(this.l.ta(!0),a&&Gb(this.l,!0))}this.c.sb>=this.c.Ba&&Eb(this,!0);this.c.La=0;this.c.Xa=ha();this.c.sa&&(a=this.c.Xa-this.c.sa,a>this.c.Ub&&(this.c.ya+=a,this.c.ya>this.c.Xa&&(this.c.ya=this.c.Xa)));try{do{this.Zb(this.j.Ua?1:this.c.Uc);var c=this.I-this.a;this.H+=c;this.c.La+=c;Db(this,0,!0);a=c;this.j.Ua&&
|
||||
(b=!1,this.c.Ya=this.c.Ya+this.Sb()|0,this.c.za-=a,0>=this.c.za&&(this.c.za+=this.c.Ga,b=!0),0<=this.c.Ha&&this.c.Ha<=Fb(this)&&(this.c.Ga=this.c.Ha=-1,yb(this),Bb(this),b=!0),b&&this.aa(Fb(this)+" cycles: checksum="+n(this.c.Ya)));this.c.Ja-=c;0>=this.c.Ja&&(this.c.Ja+=this.c.Wb,this.l&&Hb(this.l,this.c.$a++),this.c.$a>this.T&&(this.c.$a=0));this.c.Ia-=c;0>=this.c.Ia&&(this.c.Ia+=this.c.Vb,this.l&&this.l.ta());this.c.Ka-=c;if(0>=this.c.Ka){this.c.Ka+=this.c.rb;break}}while(this.j.ka)}catch(e){Bb(this);
|
||||
zb(this);this.l&&this.l.stop(ha(),Fb(this));Pa(this,!1);c=e.stack||e.message;this.j.qa=!0;this.M(c);return}c=setTimeout;a=this.da;this.c.sa=ha();b=this.c.Ub;this.c.La&&(b=Math.round(b*this.c.La/this.c.rb));var b=b-(this.c.sa-this.c.Xa),d=this.c.sa-this.c.ya;d&&(this.c.ra=Math.round(this.H/(10*d))/100,864E5<=d&&(this.K=0,Cb(this)));if(0>b||this.c.ra<this.c.xa)b=0;this.c.sb+=this.c.La;this.c.sa+=b;c(a,b)}else zb(this),this.l&&this.l.stop(ha(),Fb(this))};l.Zb=function(){return 0};
|
||||
function Bb(a,b){a.j.Fa&&(a.j.nb=!0);a.I-=a.a;a.a=0;Db(a,a.H);a.H=0;if(a.j.ka){a.j.ka=!1;a.J&&a.J.stop();var c=a.B.run;c&&(c.textContent="Run")}a.j.Va=b}function zb(a){a.l&&(Hb(a.l,-1),a.l.ta(void 0))}function Ib(a){this.ba=+a.model||8080;ub.call(this,a,1E6);this.Y=Kb;xb(this);this.j.Va=this.j.Gc=!1;this.$=0;this.S=[];this.Z=0;Lb(this)}y(Ib,ub);function Mb(a,b){a.S.push(b)}l=Ib.prototype;l.reset=function(){this.j.ka&&Bb(this);Lb(this);xb(this);this.j.qa=!1;this.parent.reset.call(this)};
|
||||
function Lb(a){a.b=0;a.f=0;a.D=0;a.h=0;a.F=0;a.i=0;a.o=0;a.w=0;G(a,a.Z);Nb(a,0);a.C=0}function Ob(a,b){a.Z=b;G(a,b)}l.Sb=function(){var a=this.b+this.f+this.D+this.h+this.F+this.i+this.o|0;return a=a+this.w+this.u+Pb(this)|0};
|
||||
l.save=function(){var a=new I(this);J(a,0,[this.b,this.f,this.D,this.h,this.F,this.i,this.o,this.w,this.u,Pb(this)]);J(a,1,[this.C,this.K,this.c.Aa]);for(var b=this.m,c=0,d=[],e=0;e<b.i;e++){var f=b.b[e];if(f.ja||f.Nb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,m=[];g<f.length;){for(var v=f[g],u=g+1;u<f.length&&f[u]===v;)u++;m[k++]=u-g;m[k++]=v;g=u}if(m.length<f.length){f=m;break a}}d[h]=f}}J(a,2,d);return a.data()};
|
||||
l.restore=function(a){var b=a[0];this.b=b[0];this.f=b[1];this.D=b[2];this.h=b[3];this.F=b[4];this.i=b[5];this.o=b[6];this.w=b[7]&65535;G(this,b[8]);Nb(this,b[9]);b=a[1];this.C=b[0];this.K=b[1];Cb(this,b[3]);a:{b=this.m;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 k=e[g++],m=e[g++];k--;)h[f++]=m;e=h}f=b.b[d];if(!f||!f.restore(e)){q("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
l.R=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.$++;d=!0;break;default:d=this.parent.R.call(this,a,b,c)}return d};function Qb(a){return a.f<<8|a.D}function Rb(a,b){a.f=b>>8&255;a.D=b&255}function Sb(a){return a.h<<8|a.F}function Tb(a,b){a.h=b>>8&255;a.F=b&255}function K(a){return a.i<<8|a.o}
|
||||
function L(a,b){a.i=b>>8&255;a.o=b&255}function G(a,b){a.u=b&65535}function M(a){return a.s&256?1:0}function N(a,b){a.s=a.s&255|b}function Ub(a){return Sa[a.v&255]?4:0}function Pb(a){return a.G&-214|(a.v&128?128:0)|(a.s&255?0:64)|((a.v^a.A)&16?16:0)|Ub(a)|M(a)}function Nb(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.G=a.G&-726|b&512|2}function Vb(a,b){a.A=a.b^b;return a.v=(a.s=a.b+b)&255}
|
||||
function Wb(a,b){a.A=a.b^b;return a.v=(a.s=a.b+b+(a.s&256?1:0))&255}function Xb(a,b){a.s=a.v=a.A=a.b&b;(a.b|b)&8&&(a.A^=16);return a.s}function Yb(a,b){a.A=b^255;b=a.v=b+255&255;a.s=a.s&-256|b;return b}function Zb(a,b){a.A=b;b=a.v=b+1&255;a.s=a.s&-256|b;return b}function $b(a,b){return a.v=a.s=a.A=a.b|b}function O(a,b){b^=255;a.A=a.b^b;return a.v=(a.s=a.b+b+1^256)&255}function ac(a,b){b^=255;a.A=a.b^b;return a.v=(a.s=a.b+b+(a.s&256?0:1)^256)&255}function bc(a,b){return a.v=a.s=a.A=a.b^b}l.L=function(a){return this.m.L(a)};
|
||||
l.V=function(a,b){this.m.V(a,b)};function P(a){var b=a.L(a.u);G(a,a.u+1);return b}function R(a){var b=ab(a.m,a.u);G(a,a.u+2);return b}function S(a){var b=ab(a.m,a.w);a.w=a.w+2&65535;return b}function T(a,b){a.w=a.w-2&65535;cb(a.m,a.w,b)}function cc(a,b){a.C=a.C&-8|b|8}function U(a,b,c,d){d=d||2;a.B[b]&&(void 0===c&&(a.j.qa=!0,a.M("Value for "+b+" is invalid"),Bb(a)),c=!a.j.ka||a.j.Ob?n(c,d):"--------".substr(0,d),a.B[b].textContent!=c&&(a.B[b].textContent=c))}
|
||||
l.ta=function(a){this.$&&(a||!this.j.ka||this.j.Ob)&&(U(this,"A",this.b),U(this,"B",this.f),U(this,"C",this.D),U(this,"BC",Qb(this),4),U(this,"D",this.h),U(this,"E",this.F),U(this,"DE",Sb(this),4),U(this,"H",this.i),U(this,"L",this.o),U(this,"HL",K(this),4),U(this,"SP",this.w,4),U(this,"PC",this.u,4),a=Pb(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.ka&&this.c.ra?this.c.ra.toFixed(2)+"Mhz":"Stopped"};l.Zb=function(a){this.j.Va=!0;this.j.Gc=!1;this.j.Pb=!1;this.I=this.a=a;do{if(this.C){if(a&&this.C&8&&this.G&512){var b=199|(this.C&7)<<3;this.C&=-17;this.C&=-16;this.G&=-513;this.Y[b].call(this)}if(this.C&16){this.a=0;break}}this.Y[P(this)].call(this)}while(0<this.a);return this.j.Va?this.I-this.a:void 0===this.j.Va?0:-1};va(function(){for(var a=A(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Ib(d);Oa(d,c)}});
|
||||
function dc(){this.a-=4}function ec(){G(this,R(this));this.a-=10}function fc(){G(this,S(this));this.a-=10}function gc(){var a=R(this);T(this,this.u);G(this,a);this.a-=17}
|
||||
var Kb=[dc,function(){Rb(this,R(this));this.a-=10},function(){this.V(Qb(this),this.b);this.a-=7},function(){Rb(this,Qb(this)+1);this.a-=5},function(){this.f=Zb(this,this.f);this.a-=5},function(){this.f=Yb(this,this.f);this.a-=5},function(){this.f=P(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|a>>8;N(this,a&256);this.a-=4},dc,function(){var a;L(this,a=K(this)+Qb(this));N(this,a>>8&256);this.a-=10},function(){this.b=this.L(Qb(this));this.a-=7},function(){Rb(this,Qb(this)-1);this.a-=5},function(){this.D=
|
||||
Zb(this,this.D);this.a-=5},function(){this.D=Yb(this,this.D);this.a-=5},function(){this.D=P(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(a|this.b)>>1;N(this,a);this.a-=4},dc,function(){Tb(this,R(this));this.a-=10},function(){this.V(Sb(this),this.b);this.a-=7},function(){Tb(this,Sb(this)+1);this.a-=5},function(){this.h=Zb(this,this.h);this.a-=5},function(){this.h=Yb(this,this.h);this.a-=5},function(){this.h=P(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|M(this);N(this,a&256);
|
||||
this.a-=4},dc,function(){var a;L(this,a=K(this)+Sb(this));N(this,a>>8&256);this.a-=10},function(){this.b=this.L(Sb(this));this.a-=7},function(){Tb(this,Sb(this)-1);this.a-=5},function(){this.F=Zb(this,this.F);this.a-=5},function(){this.F=Yb(this,this.F);this.a-=5},function(){this.F=P(this);this.a-=7},function(){var a=this.b<<8;this.b=(M(this)<<8|this.b)>>1;N(this,a&256);this.a-=4},dc,function(){L(this,R(this));this.a-=10},function(){var a=R(this);cb(this.m,a,K(this));this.a-=16},function(){L(this,
|
||||
K(this)+1);this.a-=5},function(){this.i=Zb(this,this.i);this.a-=5},function(){this.i=Yb(this,this.i);this.a-=5},function(){this.i=P(this);this.a-=7},function(){var a=0,b=M(this);if((this.v^this.A)&16||9<(this.b&15))a|=6;if(b||154<=this.b)a|=96,b=1;this.b=Vb(this,a);N(this,b?256:0);this.a-=4},dc,function(){var a;L(this,a=K(this)+K(this));N(this,a>>8&256);this.a-=10},function(){var a;a=R(this);a=ab(this.m,a);L(this,a);this.a-=16},function(){L(this,K(this)-1);this.a-=5},function(){this.o=Zb(this,this.o);
|
||||
this.a-=5},function(){this.o=Yb(this,this.o);this.a-=5},function(){this.o=P(this);this.a-=7},function(){this.b=~this.b&255;this.a-=4},dc,function(){this.w=R(this)&65535;this.a-=10},function(){this.V(R(this),this.b);this.a-=13},function(){this.w=this.w+1&65535;this.a-=5},function(){var a=K(this);this.V(a,Zb(this,this.L(a)));this.a-=10},function(){var a=K(this);this.V(a,Yb(this,this.L(a)));this.a-=10},function(){this.V(K(this),P(this));this.a-=10},function(){this.s|=256;this.a-=4},dc,function(){var a;
|
||||
L(this,a=K(this)+this.w);N(this,a>>8&256);this.a-=10},function(){this.b=this.L(R(this));this.a-=13},function(){this.w=this.w-1&65535;this.a-=5},function(){this.b=Zb(this,this.b);this.a-=5},function(){this.b=Yb(this,this.b);this.a-=5},function(){this.b=P(this);this.a-=7},function(){N(this,M(this)?0:256);this.a-=4},function(){this.a-=5},function(){this.f=this.D;this.a-=5},function(){this.f=this.h;this.a-=5},function(){this.f=this.F;this.a-=5},function(){this.f=this.i;this.a-=5},function(){this.f=this.o;
|
||||
this.a-=5},function(){this.f=this.L(K(this));this.a-=7},function(){this.f=this.b;this.a-=5},function(){this.D=this.f;this.a-=5},function(){this.a-=5},function(){this.D=this.h;this.a-=5},function(){this.D=this.F;this.a-=5},function(){this.D=this.i;this.a-=5},function(){this.D=this.o;this.a-=5},function(){this.D=this.L(K(this));this.a-=7},function(){this.D=this.b;this.a-=5},function(){this.h=this.f;this.a-=5},function(){this.h=this.D;this.a-=5},function(){this.a-=5},function(){this.h=this.F;this.a-=
|
||||
5},function(){this.h=this.i;this.a-=5},function(){this.h=this.o;this.a-=5},function(){this.h=this.L(K(this));this.a-=7},function(){this.h=this.b;this.a-=5},function(){this.F=this.f;this.a-=5},function(){this.F=this.D;this.a-=5},function(){this.F=this.h;this.a-=5},function(){this.a-=5},function(){this.F=this.i;this.a-=5},function(){this.F=this.o;this.a-=5},function(){this.F=this.L(K(this));this.a-=7},function(){this.F=this.b;this.a-=5},function(){this.i=this.f;this.a-=5},function(){this.i=this.D;this.a-=
|
||||
5},function(){this.i=this.h;this.a-=5},function(){this.i=this.F;this.a-=5},function(){this.a-=5},function(){this.i=this.o;this.a-=5},function(){this.i=this.L(K(this));this.a-=7},function(){this.i=this.b;this.a-=5},function(){this.o=this.f;this.a-=5},function(){this.o=this.D;this.a-=5},function(){this.o=this.h;this.a-=5},function(){this.o=this.F;this.a-=5},function(){this.o=this.i;this.a-=5},function(){this.a-=5},function(){this.o=this.L(K(this));this.a-=7},function(){this.o=this.b;this.a-=5},function(){this.V(K(this),
|
||||
this.f);this.a-=7},function(){this.V(K(this),this.D);this.a-=7},function(){this.V(K(this),this.h);this.a-=7},function(){this.V(K(this),this.F);this.a-=7},function(){this.V(K(this),this.i);this.a-=7},function(){this.V(K(this),this.o);this.a-=7},function(){var a=this.u-1;if(this.S.length)for(var b=0;b<this.S.length;b++)if(this.S[b](a))return;this.C|=16;this.a-=7;this.G&512||Bb(this)},function(){this.V(K(this),this.b);this.a-=7},function(){this.b=this.f;this.a-=5},function(){this.b=this.D;this.a-=5},
|
||||
function(){this.b=this.h;this.a-=5},function(){this.b=this.F;this.a-=5},function(){this.b=this.i;this.a-=5},function(){this.b=this.o;this.a-=5},function(){this.b=this.L(K(this));this.a-=7},function(){this.a-=5},function(){this.b=Vb(this,this.f);this.a-=4},function(){this.b=Vb(this,this.D);this.a-=4},function(){this.b=Vb(this,this.h);this.a-=4},function(){this.b=Vb(this,this.F);this.a-=4},function(){this.b=Vb(this,this.i);this.a-=4},function(){this.b=Vb(this,this.o);this.a-=4},function(){this.b=Vb(this,
|
||||
this.L(K(this)));this.a-=7},function(){this.b=Vb(this,this.b);this.a-=4},function(){this.b=Wb(this,this.f);this.a-=4},function(){this.b=Wb(this,this.D);this.a-=4},function(){this.b=Wb(this,this.h);this.a-=4},function(){this.b=Wb(this,this.F);this.a-=4},function(){this.b=Wb(this,this.i);this.a-=4},function(){this.b=Wb(this,this.o);this.a-=4},function(){this.b=Wb(this,this.L(K(this)));this.a-=7},function(){this.b=Wb(this,this.b);this.a-=4},function(){this.b=O(this,this.f);this.a-=4},function(){this.b=
|
||||
O(this,this.D);this.a-=4},function(){this.b=O(this,this.h);this.a-=4},function(){this.b=O(this,this.F);this.a-=4},function(){this.b=O(this,this.i);this.a-=4},function(){this.b=O(this,this.o);this.a-=4},function(){this.b=O(this,this.L(K(this)));this.a-=7},function(){this.b=O(this,this.b);this.a-=4},function(){this.b=ac(this,this.f);this.a-=4},function(){this.b=ac(this,this.D);this.a-=4},function(){this.b=ac(this,this.h);this.a-=4},function(){this.b=ac(this,this.F);this.a-=4},function(){this.b=ac(this,
|
||||
this.i);this.a-=4},function(){this.b=ac(this,this.o);this.a-=4},function(){this.b=ac(this,this.L(K(this)));this.a-=7},function(){this.b=ac(this,this.b);this.a-=4},function(){this.b=Xb(this,this.f);this.a-=4},function(){this.b=Xb(this,this.D);this.a-=4},function(){this.b=Xb(this,this.h);this.a-=4},function(){this.b=Xb(this,this.F);this.a-=4},function(){this.b=Xb(this,this.i);this.a-=4},function(){this.b=Xb(this,this.o);this.a-=4},function(){this.b=Xb(this,this.L(K(this)));this.a-=7},function(){this.b=
|
||||
Xb(this,this.b);this.a-=4},function(){this.b=bc(this,this.f);this.a-=4},function(){this.b=bc(this,this.D);this.a-=4},function(){this.b=bc(this,this.h);this.a-=4},function(){this.b=bc(this,this.F);this.a-=4},function(){this.b=bc(this,this.i);this.a-=4},function(){this.b=bc(this,this.o);this.a-=4},function(){this.b=bc(this,this.L(K(this)));this.a-=7},function(){this.b=bc(this,this.b);this.a-=4},function(){this.b=$b(this,this.f);this.a-=4},function(){this.b=$b(this,this.D);this.a-=4},function(){this.b=
|
||||
$b(this,this.h);this.a-=4},function(){this.b=$b(this,this.F);this.a-=4},function(){this.b=$b(this,this.i);this.a-=4},function(){this.b=$b(this,this.o);this.a-=4},function(){this.b=$b(this,this.L(K(this)));this.a-=7},function(){this.b=$b(this,this.b);this.a-=4},function(){O(this,this.f);this.a-=4},function(){O(this,this.D);this.a-=4},function(){O(this,this.h);this.a-=4},function(){O(this,this.F);this.a-=4},function(){O(this,this.i);this.a-=4},function(){O(this,this.o);this.a-=4},function(){O(this,
|
||||
this.L(K(this)));this.a-=7},function(){O(this,this.b);this.a-=4},function(){this.s&255&&(G(this,S(this)),this.a-=6);this.a-=5},function(){Rb(this,S(this));this.a-=10},function(){var a=R(this);this.s&255&&G(this,a);this.a-=10},ec,function(){var a=R(this);this.s&255&&(T(this,this.u),G(this,a),this.a-=6);this.a-=11},function(){T(this,Qb(this));this.a-=11},function(){this.b=Vb(this,P(this));this.a-=7},function(){T(this,this.u);G(this,0);this.a-=11},function(){this.s&255||(G(this,S(this)),this.a-=6);this.a-=
|
||||
5},fc,function(){var a=R(this);this.s&255||G(this,a);this.a-=10},ec,function(){var a=R(this);this.s&255||(T(this,this.u),G(this,a),this.a-=6);this.a-=11},gc,function(){this.b=Wb(this,P(this));this.a-=7},function(){T(this,this.u);G(this,8);this.a-=11},function(){M(this)||(G(this,S(this)),this.a-=6);this.a-=5},function(){Tb(this,S(this));this.a-=10},function(){var a=R(this);M(this)||G(this,a);this.a-=10},function(){for(var a=P(this),b=this.m,c=this.b,d=this.u+-2&65535,e=1,f=0;0<e;){var h=b.s[a],g=b.C[a]||
|
||||
1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h&&h[0])h[0](a,k,d);f+=g<<3;a+=g;e-=g}this.a-=10},function(){var a=R(this);M(this)||(T(this,this.u),G(this,a),this.a-=6);this.a-=11},function(){T(this,Sb(this));this.a-=11},function(){this.b=O(this,P(this));this.a-=7},function(){T(this,this.u);G(this,16);this.a-=11},function(){M(this)&&(G(this,S(this)),this.a-=6);this.a-=5},fc,function(){var a=R(this);M(this)&&G(this,a);this.a-=10},function(){for(var a=P(this),b=this.m,c=this.u+-2&65535,d=1,e=0,
|
||||
f=0;0<d;){var h=b.o[a],g=b.A[a]||1,k=1==g?255:2==g?65535:-1,m=k;void 0!==h&&h[0]&&(m=h[0](a,c),void 0===m?m=k:m&=k);e|=m<<f;f+=g<<3;a+=g;d-=g}this.b=e&255;this.a-=10},function(){var a=R(this);M(this)&&(T(this,this.u),G(this,a),this.a-=6);this.a-=11},gc,function(){this.b=ac(this,P(this));this.a-=7},function(){T(this,this.u);G(this,24);this.a-=11},function(){Ub(this)||(G(this,S(this)),this.a-=6);this.a-=5},function(){L(this,S(this));this.a-=10},function(){var a=R(this);Ub(this)||G(this,a);this.a-=10},
|
||||
function(){var a=S(this);T(this,K(this));L(this,a);this.a-=18},function(){var a=R(this);Ub(this)||(T(this,this.u),G(this,a),this.a-=6);this.a-=11},function(){T(this,K(this));this.a-=11},function(){this.b=Xb(this,P(this));this.a-=7},function(){T(this,this.u);G(this,32);this.a-=11},function(){Ub(this)&&(G(this,S(this)),this.a-=6);this.a-=5},function(){G(this,K(this));this.a-=5},function(){var a=R(this);Ub(this)&&G(this,a);this.a-=10},function(){var a=K(this);L(this,Sb(this));Tb(this,a);this.a-=5},function(){var a=
|
||||
R(this);Ub(this)&&(T(this,this.u),G(this,a),this.a-=6);this.a-=11},gc,function(){this.b=bc(this,P(this));this.a-=7},function(){T(this,this.u);G(this,40);this.a-=11},function(){this.v&128||(G(this,S(this)),this.a-=6);this.a-=5},function(){var a=S(this);Nb(this,a&255|this.G&-256);this.b=a>>8;this.a-=10},function(){var a=R(this);this.v&128||G(this,a);this.a-=10},function(){this.G&=-513;this.a-=4},function(){var a=R(this);this.v&128||(T(this,this.u),G(this,a),this.a-=6);this.a-=11},function(){T(this,
|
||||
Pb(this)&255|this.b<<8);this.a-=11},function(){this.b=$b(this,P(this));this.a-=7},function(){T(this,this.u);G(this,48);this.a-=11},function(){this.v&128&&(G(this,S(this)),this.a-=6);this.a-=5},function(){this.w=K(this)&65535;this.a-=5},function(){var a=R(this);this.v&128&&G(this,a);this.a-=10},function(){this.G|=512;this.a-=4},function(){var a=R(this);this.v&128&&(T(this,this.u),G(this,a),this.a-=6);this.a-=11},gc,function(){O(this,P(this));this.a-=7},function(){T(this,this.u);G(this,56);this.a-=
|
||||
11}];function W(a){r.call(this,"ChipSet",a,W);var b=a.model;b&&!hc[b]&&xa("Unrecognized ChipSet model: "+b);this.c=hc[b]||{};a.sound&&(this.I=null,window&&(this.I=window.AudioContext||window.webkitAudioContext),this.I&&new this.I);D(this)}y(W);
|
||||
var X={W:1978.1,Dc:{X:0,pd:1,td:16,Ad:32,Jd:64,Id:128,Ca:14},pa:{X:1,ec:1,yc:2,uc:4,vc:16,wc:32,xc:64,Ca:8},Ec:{X:2,od:3,Sd:4,qd:8,Ed:16,Fd:32,Gd:64,rd:128,Ca:0},Nd:{X:3},Ld:{X:2,Bd:7},Pd:{X:3,Td:1,Od:2,Hd:4,yd:8,sd:16,ld:32},Md:{X:4},Qd:{X:5,ud:1,vd:2,wd:4,xd:8,Ud:16}},Y={W:100,ha:{X:66,Fb:1,sc:2,tc:4,Dd:8,Cd:16,Db:32,Cb:64,zb:128},dc:{X:66,INIT:0},na:{X:194,nd:0,yb:16,zc:32,Eb:48,ic:0,jc:32},Pa:{X:162,Kd:0,lc:0,hc:0,kc:0,gc:0},ia:{zd:{X:98},ua:{bc:0,ac:1,Bc:2,Fc:4,fc:5,Ac:6,Rd:7},Sa:16383}},hc=
|
||||
{SI1978:X,VT100:Y};W.prototype.R=function(){return!1};W.prototype.la=function(a,b,c,d){this.m=b;this.a=c;this.N=d;this.l=a;this.o=E(a,"Keyboard");this.da=E(a,"SerialPort");this.video=E(a,"Video");db(b,this,this.c.ab);eb(b,this,this.c.bb)};W.prototype.ca=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};W.prototype.ga=function(a){return a?this.save():!0};X.INIT=[[X.Dc.Ca,X.pa.Ca,X.Ec.Ca,0,0,0,0]];
|
||||
Y.INIT=[[Y.dc.INIT,Y.ha.sc|Y.ha.tc],[Y.na.ic,Y.na.jc],[Y.Pa.lc,Y.Pa.hc,Y.Pa.kc,Y.Pa.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,11856,11824,11840,11808,11776,12E3,12E3,11857,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]]];
|
||||
l=W.prototype;l.reset=function(){this.c.INIT&&!this.restore(this.c.INIT)&&this.M("reset error")};l.save=function(){var a=new I(this);switch(this.c.W){case X.W:J(a,0,[this.$,this.h,this.ba,this.C,this.H,this.Y,this.Z]);break;case Y.W:J(a,0,[this.K,this.v]),J(a,1,[this.s,this.u]),J(a,2,[this.f,this.G,this.T,this.S]),J(a,3,[this.A,this.b,this.w,this.J,this.i])}return a.data()};
|
||||
l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.c.W){case X.W:return this.$=b[0],this.h=b[1],this.ba=b[2],this.C=b[3],this.H=b[4],this.Y=b[5],this.Z=b[6],!0;case Y.W:return this.K=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.S=b[3],b=a[3],this.A=b[0],this.b=b[1],this.w=b[2],this.J=b[3],this.i=b[4],!0}return!1};l.start=function(){};l.stop=function(){};l.Lc=function(){return this.$};l.Mc=function(){return this.h};l.Nc=function(){return this.ba};
|
||||
l.Kc=function(){return this.C>>8-this.H&255};l.Zc=function(a,b){this.H=b};l.ad=function(a,b){this.Y=b};l.$c=function(a,b){this.C=b<<8|this.C>>8};l.bd=function(a,b){this.Z=b};l.cd=function(){};function ic(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}
|
||||
l.Oc=function(){var a=this.v,a=a&~Y.ha.Cb;if((Fb(this.a)&64)<<1&&(a|=Y.ha.Cb,a!=this.v)){var b,c;b=this.w&1;switch(this.w>>1&7){case Y.ia.ua.ac:this.A=this.A<<1|b;break;case Y.ia.ua.fc:b=ic(this);this.i[b]=Y.ia.Sa;break;case Y.ia.ua.bc:this.b=this.b<<1|b;break;case Y.ia.ua.Fc:b=ic(this);c=this.b&Y.ia.Sa;this.i[b]=c;break;case Y.ia.ua.Ac:b=ic(this);c=this.i[b];null==c&&(c=Y.ia.Sa);this.b=c;break;case Y.ia.ua.Bc:this.b<<=1,this.J=this.b&Y.ia.Sa+1}}a&=~Y.ha.Db;this.J&&(a|=Y.ha.Db);a&=~Y.ha.zb;this.o&&
|
||||
this.o.ob()&&(a|=Y.ha.zb);a&=~Y.ha.Fb;this.da&&this.da.ob()&&(a|=Y.ha.Fb);return this.v=a};l.dd=function(a,b){this.K=b};l.gd=function(a,b){this.w=b};l.fd=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.gb!==d&&((c.gb=d)?jc(c,-1):c.ib=!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.S=c}};
|
||||
l.ed=function(a,b){if(b&Y.na.zc)b&=Y.na.Eb,this.u!=b&&(this.u=b,this.video&&(this.video.tb=this.u==Y.na.Eb?50:60));else if(b&=Y.na.yb,this.s!=b&&(this.s=b,this.video)){var c=this.video,d=this.s==Y.na.yb?132:80;c.J=d;c.P=c.Gb;80<d&&c.P--;kc(c)&&lc(c)}};X.ab={0:W.prototype.Lc,1:W.prototype.Mc,2:W.prototype.Nc,3:W.prototype.Kc};X.bb={2:W.prototype.Zc,3:W.prototype.ad,4:W.prototype.$c,5:W.prototype.bd,6:W.prototype.cd};Y.ab={66:W.prototype.Oc};
|
||||
Y.bb={66:W.prototype.dd,98:W.prototype.gd,162:W.prototype.fd,194:W.prototype.ed};va(function(){for(var a=A(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new W(d);Oa(d,c)}});
|
||||
function mc(a){r.call(this,"ROM",a,mc);this.b=null;this.i=a.addr;this.c=a.size;this.o=a.writable;this.l=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=ja()+"/api/v1/dump?file="+this.f+"&format=bytes&decimal=true");var c=this;p(a,null,!0,function(a,b,f){nc(c,a,b,f)})}}y(mc);var oc=[0,5];mc.prototype.la=function(a,b,c,d){this.m=b;this.a=c;this.N=d;pc(this)};
|
||||
mc.prototype.ca=function(){this.h&&(this.N&&this.N.a(this.id,this.i,this.c,this.h),delete this.h);return!0};mc.prototype.ga=function(){return!0};
|
||||
function nc(a,b,c,d){if(d)a.M("Unable to load system ROM (error "+d+": "+b+")");else{Ia(a.kb,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){q("Empty ROM: "+b);return}if(1==a.b.length){q(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]);pc(a)}}
|
||||
function pc(a){if(!Qa(a))if(!a.f)D(a);else if(a.b&&a.m){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size (0x"+n(a.b.length)+") does not match specified size ("+("0x"+n(a.c))+")";a.j.qa=!0;a.M(b)}else if(qc(a,a.i)){b=[];"number"==typeof a.l?b.push(a.l):null!=a.l&&a.l.length&&(b=a.l);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.m,h=d.c,g=[],k=d.i>>>f.c;0<h&&k<f.b.length;)g.push(f.b[k++]),h-=f.m;f=d.m;d=d.c;h=0;for(e>>>=f.c;0<d&&e<f.b.length;){k=g[h++];if(!k)break;f.b[e++]=k;d-=f.m}}delete a.b}D(a)}}
|
||||
function qc(a,b){if(Xa(a.m,b,a.c,a.o?1:lb)){var c;for(c=0;c<a.b.length;c++)bb(a.m,b+c,a.b[c]);if(a.o&&256==b){for(c=0;c<oc.length;c++)bb(a.m,oc[c],118);Mb(a.a,function(a){return function(b){if(0<=oc.indexOf(b)){var c=!1,h=a.a,g=a.N;if(5==b)switch(c=!0,h.D){case 2:rc(a,String.fromCharCode(h.F));break;case 9:for(var k=Sb(h),m="",v=255;v--;){var u=a.a.L(k++);if(36==u)break;m+=String.fromCharCode(u)}rc(a,m);break;default:c=!1}c?fc.call(h):g&&(a.aa("\nCP/M vector 0x"+n(b,4)),G(h,b),Bb(g));b=!0}else b=
|
||||
!1;return b}}(a));Ob(a.a,b)}return!0}return!1}function rc(a,b){b=b.replace(/\r/g,"");a.ma&&(a.ma.value+=b,a.ma.scrollTop=a.ma.scrollHeight)}va(function(){for(var a=A(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new mc(d);Oa(d,c)}});function sc(a){r.call(this,"RAM",a,sc);this.l=a.addr;this.c=a.size;this.b=!1}y(sc);l=sc.prototype;l.la=function(a,b,c,d){this.m=b;this.a=c;this.N=d;D(this)};l.ca=function(a,b){b||this.reset();return!0};l.ga=function(a){return a?this.save():!0};
|
||||
l.reset=function(){!this.b&&this.c&&Xa(this.m,this.l,this.c,1)&&(this.b=!0);this.b||q("No RAM allocated")};l.save=function(){return null};l.restore=function(){return!0};va(function(){for(var a=A(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new sc(d);Oa(d,c)}});function tc(a){r.call(this,"Keyboard",a,tc);(a=a.model)&&!uc[a]&&xa("Unrecognized Keyboard model: "+a);this.b=uc[a]||{};this.reset();D(this)}y(tc);
|
||||
var vc={W:1978.1,g:{},xb:{65:37,68:39,76:32},Da:{},oa:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},Z={W:100,g:{},xb:{},Da:{},oa:{setup:120},cc:{X:130,INIT:127},ea:{X:130,qc:1,pc:2,oc:4,nc:8,rc:16,Bb:32,Ab:63,Cc:64,md: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;
|
||||
r.prototype={constructor:r,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.na=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.Qa)}),!0;default:return!1}},log:function(){},ba:function(){},status:function(a){this.ba(this.Qa+": "+a)},M:function(a,b,c){xa(a,b,c||this.type)},ca:function(){return this.j.U=!0},ga:function(a,b){b&&(this.j.U=!1);return!0}};function Na(a,b){if(a.j.nb)return a.j.Fa&&(a.j.Fa=!1),a.j.nb=!1;if(a.j.ra)return a.ba(a.toString()+" error"),!1;a.j.Fa=b;return a.j.Fa}function D(a){if(!a.j.ra&&(a.j.fa=!0,a.j.fa)){var b=a.Wa;a.Wa=null;b&&b()}}
|
||||
function Oa(a,b){b&&(a.j.fa?b():a.Wa=b);return a.j.fa}
|
||||
var Pa="undefined"!==typeof ArrayBuffer,Qa=[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 Ra(a){r.call(this,"Panel",a,Ra)}y(Ra);l=Ra.prototype;l.S=function(a,b,c,d){return this.l&&this.l.S(a,b,c,d)||this.a&&this.a.S(a,b,c,d)||this.o&&this.o.S(a,b,c,d)?!0:this.parent.S.call(this,a,b,c,d)};l.la=function(a,b,c,d){this.l=a;this.m=b;this.a=c;this.N=d;this.o=E(a,"Keyboard")};l.ca=function(a,b){b||Sa();return!0};l.ga=function(){return!0};l.wa=function(){};
|
||||
function Sa(){for(var a=!1,b=A(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f=Ka(e.id);f||(a=!0,f=new Ra(e));Ma(f,d);a&&D(f)}}va(Sa);
|
||||
function Ta(a,b,c){r.call(this,"Bus",a,Ta);this.a=b;this.N=c;this.h=a.busWidth||16;this.v=Math.pow(2,this.h);this.f=this.v-1|0;this.c=16>=this.h?10:20>=this.h?12:24>=this.h?14:15;this.m=1<<this.c;this.w=this.m>>2;this.l=this.m-1;this.i=this.v/this.m|0;this.u=this.i-1;this.o=[];this.s=[];this.A=[];this.C=[];a=new F;Ua(a,this.N);this.b=Array(this.i);for(b=0;b<this.i;b++)this.b[b]=a;D(this)}y(Ta);Ta.prototype.reset=function(){};Ta.prototype.ca=function(a,b){b||this.reset();return!0};
|
||||
function Va(a,b,c,d){for(var e=b,f=c,h=e>>>a.c;0<f&&h<a.b.length;){var g=a.b[h],k=h*a.m,m=a.m-(e-k);m>f&&(m=f);if(g&&g.size){if(g.type==d){if(e+f<=g.Ea)return g.fb+=g.Ea-e,g.Ea=e,!0;if(e>=g.Ea+g.fb){m=g.size-(e-k);m>f&&(m=f);g.fb=e-g.Ea+m;e=k+a.m;f-=m;h++;continue}}return Wa(1,e,f)}e=new F(e,m,a.m,d);Ua(e,a.N,g);a.b[h++]=e;e=k+a.m;f-=m}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Xa[d]+" at "+("0x"+n(b,4))),!0):Wa(2,b,c)}
|
||||
Ta.prototype.K=function(a){return this.b[(a&this.f)>>>this.c].Na(a&this.l,a)};function Ya(a,b){return a.b[(b&a.f)>>>a.c].cb(b&a.l,b)}function Za(a,b){var c=b&a.l,d=(b&a.f)>>>a.c;return c!=a.l?a.b[d].jd(c,b):a.b[d++].Na(c,b)|a.b[d&a.u].Na(0,b+1)<<8}Ta.prototype.W=function(a,b){this.b[(a&this.f)>>>this.c].Oa(a&this.l,b&255,a)};function $a(a,b,c){a.b[(b&a.f)>>>a.c].$b(b&a.l,c&255,b)}
|
||||
function ab(a,b,c){var d=b&a.l,e=(b&a.f)>>>a.c;d!=a.l?a.b[e].kd(d,c&65535,b):(a.b[e++].Oa(d,c&255,b),a.b[e&a.u].Oa(0,c>>8&255,b+1))}function bb(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.o[k]?q("Input port 0x"+n(k,4)+" already registered"):f.o[k]=[g,!1]}}
|
||||
function cb(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.s[k]?q("Output port 0x"+n(k,4)+" already registered"):f.s[k]=[g,!1]}}function Wa(a,b,c){q("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var db;if(Pa){var eb=new ArrayBuffer(2);(new DataView(eb)).setUint16(0,256,!0);db=256===(new Uint16Array(eb))[0]}else db=!1;var fb=db;
|
||||
function F(a,b,c,d){this.id=hb+=2;this.a=null;this.Ea=a;this.fb=b;this.size=c||0;this.type=d||ib;this.B=d==jb;Ua(this);this.ja=this.Nb=!1;if(c)if(Pa)this.c=new ArrayBuffer(c),this.m=new DataView(this.c,0,c),this.b=new Uint8Array(this.c,0,c),this.h=new Uint16Array(this.c,0,c>>1),this.a=new Int32Array(this.c,0,c>>2),kb(this,fb?lb:mb);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;kb(this,nb)}else kb(this)}var ib=0,jb=2,Xa=["NONE","RAM","ROM","VID","H/W"],hb=0;
|
||||
F.prototype={constructor:F,parent:null,save:function(){var a,b;if(Pa)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.m.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(Pa)for(b=0;b<a.length;b++)this.m.setInt32(b<<2,a[b],!0);else this.a=a;return this.ja=!0}return!1},i:function(){return 255},s:function(){},o:function(a,b){return this.Na(a++,b++)|this.Na(a,b)<<8},u:function(a,b,c){this.Oa(a++,b&255,c++);this.Oa(a,b>>8,c)},C:function(a){return this.a[a>>
|
||||
2]>>>((a&3)<<3)&255},I:function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8},V:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.ja=!0},ma:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.a[c]=this.a[c]&~(65535<<d)|b<<d:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.ja=!0},w:function(a,b){return this.cb(a,b)},H:function(a,b){return this.Yb(a,b)},O:function(a,b,c){this.B||this.$b(a,b,c)},$:function(a,
|
||||
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.m.getUint16(a,!0)},L: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.ja=!0},T:function(a,b){this.b[a]=b;this.ja=!0},Z:function(a,b){this.m.setUint16(a,b,!0);this.ja=!0},da:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.h[a>>1]=b;this.ja=!0}};
|
||||
function Ua(a,b,c){a.N=b;a.l=a.f=0;c&&((a.l=c.l)&&ob(a,pb,!1),(a.f=c.f)&&qb(a,pb,!1))}function qb(a,b,c){c&&a.f||(a.Oa=!a.B&&b[2]||a.s,a.kd=!a.B&&b[3]||a.u);if(c||void 0===c)a.$b=b[2]||a.s,a.aa=b[3]||a.u}function ob(a,b,c){c&&a.l||(a.Na=b[0]||a.i,a.jd=b[1]||a.o);if(c||void 0===c)a.cb=b[0]||a.i,a.Yb=b[1]||a.o}function kb(a,b){b||(b=rb);ob(a,b,void 0);qb(a,b,void 0)}var rb=[],nb=[F.prototype.C,F.prototype.I,F.prototype.V,F.prototype.ma],pb=[F.prototype.w,F.prototype.H,F.prototype.O,F.prototype.$];
|
||||
if(Pa)var mb=[F.prototype.v,F.prototype.G,F.prototype.J,F.prototype.Z],lb=[F.prototype.A,F.prototype.L,F.prototype.T,F.prototype.da];
|
||||
function sb(a,b){r.call(this,"CPU",a,sb);var c=a.cycles||b,d=a.multiplier||1;this.b={};this.b.va=c;this.b.$a=0;this.b.ua=d;this.b.pb=Math.round(this.b.va/1E4)/100;this.b.za=this.b.pb*this.b.ua;this.j.ka=!1;this.j.Pb=!1;this.j.Mb=a.autoStart;this.j.Ob=!1;this.j.Ua=!1;this.b.Ya=this.b.Ba=0;this.b.Za=a.csStart;this.b.Ga=a.csInterval;this.b.Ha=a.csStop;this.H=[];this.ma=this.ub.bind(this);D(this)}y(sb);var tb=["power","reset"];l=sb.prototype;
|
||||
l.la=function(a,b,c,d){this.l=a;this.m=b;this.N=d;for(b=0;b<tb.length;b++)(c=this.B[tb[b]])&&this.l.S(null,tb[b],c);this.V=(b=E(a,"Video"))&&Math.max(b.Tc,b.mb)||60;this.L=E(a,"ChipSet");a=ub(a,"autoStart");null!=a&&(this.j.Mb="true"==a?!0:"false"==a?!1:!!a);D(this)};l.reset=function(){this.b.$a=0};l.save=function(){return null};l.restore=function(){return!1};
|
||||
l.ca=function(a,b){if(!b){if(a&&this.restore){vb(this);if(!this.restore(a))return!1;wb(this)}else this.reset();this.ba("No debugger detected")}xb(this);return!0};l.ga=function(a){return a?this.save():!0};function yb(a){(a.j.Mb||void 0===a.B.run)&&a.ub(!0)}l.Sb=function(){return 0};function wb(a){void 0===a.b.Za&&(a.b.Za=0);void 0===a.b.Ga&&(a.b.Ga=-1);void 0===a.b.Ha&&(a.b.Ha=-1);a.j.Ua=0<=a.b.Za&&0<a.b.Ga;a.j.Ua&&(a.b.Ya=0,a.b.Ba=a.b.Za-a.O)}
|
||||
l.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.l)if(a=d.l,a.j.U)a=!0;else{var b=null,c,g=Ja(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.j.fa);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.j.U);c++);c==g.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.j.fa?"powered yet":"ready yet"+(b.Wa?" (waiting for notification)":""))+".");a=!1}a&&(d.j.ka?zb(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(){Ab(d,d.b.ua<<1,!0)},c.textContent=this.b.za.toFixed(2)+"Mhz",a=!0}return a};function Bb(a,b,c){a.O+=b;c&&(a.J=a.a=0)}
|
||||
function Cb(a,b){var c=30;c<a.V&&(c=a.V);2>c&&(c=2);var d=1;b&&1<a.b.ua&&a.b.sa&&(d=a.b.sa/a.b.pb);a.b.Ub=Math.round(1E3/30);a.b.Uc=Math.floor(a.b.va/c*d);a.b.rb=Math.floor(a.b.va/30*d);a.b.Wb=Math.floor(a.b.va/a.V*d);a.b.Vb=Math.floor(a.b.va/2*d);b||(a.b.Ka=a.b.rb,a.b.Ja=a.b.Wb,a.b.Ia=a.b.Vb);a.b.sb=0}function Db(a){return a.O+a.I+a.J-a.a}function vb(a){a.b.sa=0;a.O=a.I=a.J=a.a=0;wb(a);Ab(a,1)}
|
||||
function Ab(a,b,c){if(void 0!==b){.8>a.b.sa/a.b.za&&(b=1);a.b.ua=b;b=a.b.pb*a.b.ua;if(a.b.za!=b){a.b.za=b;b=a.b.za.toFixed(2)+"Mhz";var d=a.B.setSpeed;d&&(d.textContent=b);a.ba("target speed: "+b)}c&&a.l&&Eb(a.l)}Bb(a,a.I);a.I=0;a.b.Aa=ha();a.b.ta=0;Cb(a)}function Fb(a,b){var c=a.H.length;a.H.push([-1,b]);return c}
|
||||
l.ub=function(a){if(Na(this,!0)){if(!this.j.ka){Ab(this);this.l&&this.l.start(this.b.Aa,Db(this));this.j.ka=!0;this.j.Pb=!0;this.L&&this.L.start();var b=this.B.run;b&&(b.textContent="Halt");this.l&&(this.l.wa(!0),a&&Eb(this.l,!0))}this.b.sb>=this.b.va&&Cb(this,!0);this.b.La=0;this.b.Xa=ha();this.b.ta&&(a=this.b.Xa-this.b.ta,a>this.b.Ub&&(this.b.Aa+=a,this.b.Aa>this.b.Xa&&(this.b.Aa=this.b.Xa)));try{do{var c=this.j.Ua?1:this.b.Uc;a=c;for(b=0;b<this.H.length;b++){var d=this.H[b];0>d[0]||a>d[0]&&(a=
|
||||
d[0])}c=a;this.Zb(c);var e=this.J-this.a;a=e;for(b=0;b<this.H.length;b++){var f=this.H[b];0>f[0]||(f[0]-=a,0>=f[0]&&(f[0]=-1,f[1]()))}this.b.La+=e;this.I+=e;Bb(this,0,!0);a=e;this.j.Ua&&(b=!1,this.b.Ya=this.b.Ya+this.Sb()|0,this.b.Ba-=a,0>=this.b.Ba&&(this.b.Ba+=this.b.Ga,b=!0),0<=this.b.Ha&&this.b.Ha<=Db(this)&&(this.b.Ga=this.b.Ha=-1,wb(this),zb(this),b=!0),b&&this.ba(Db(this)+" cycles: checksum="+n(this.b.Ya)));this.b.Ja-=e;0>=this.b.Ja&&(this.b.Ja+=this.b.Wb,this.l&&Gb(this.l,this.b.$a++),this.b.$a>
|
||||
this.V&&(this.b.$a=0));this.b.Ia-=e;0>=this.b.Ia&&(this.b.Ia+=this.b.Vb,this.l&&this.l.wa());this.b.Ka-=e;if(0>=this.b.Ka){this.b.Ka+=this.b.rb;break}}while(this.j.ka)}catch(h){zb(this);xb(this);this.l&&this.l.stop(ha(),Db(this));Na(this,!1);c=h.stack||h.message;this.j.ra=!0;this.M(c);return}c=setTimeout;d=this.ma;this.b.ta=ha();e=this.b.Ub;this.b.La&&(e=Math.round(e*this.b.La/this.b.rb));e-=this.b.ta-this.b.Xa;if(f=this.b.ta-this.b.Aa)this.b.sa=Math.round(this.I/(10*f))/100,864E5<=f&&(this.O=0,Ab(this));
|
||||
if(0>e||this.b.sa<this.b.za)e=0;this.b.sb+=this.b.La;this.b.ta+=e;c(d,e)}else xb(this),this.l&&this.l.stop(ha(),Db(this))};l.Zb=function(){return 0};function zb(a,b){a.j.Fa&&(a.j.nb=!0);a.J-=a.a;a.a=0;Bb(a,a.I);a.I=0;if(a.j.ka){a.j.ka=!1;a.L&&a.L.stop();var c=a.B.run;c&&(c.textContent="Run")}a.j.Va=b}function xb(a){a.l&&(Gb(a.l,-1),a.l.wa(void 0))}function Hb(a){this.da=+a.model||8080;sb.call(this,a,1E6);this.Z=Ib;vb(this);this.j.Va=this.j.Gc=!1;this.aa=0;this.T=[];this.$=0;Kb(this)}y(Hb,sb);
|
||||
function Lb(a,b){a.T.push(b)}l=Hb.prototype;l.reset=function(){this.j.ka&&zb(this);Kb(this);vb(this);this.j.ra=!1;this.parent.reset.call(this)};function Kb(a){a.c=0;a.f=0;a.D=0;a.h=0;a.F=0;a.i=0;a.o=0;a.w=0;G(a,a.$);Mb(a,0);a.C=0}function Nb(a,b){a.$=b;G(a,b)}l.Sb=function(){var a=this.c+this.f+this.D+this.h+this.F+this.i+this.o|0;return a=a+this.w+this.u+Ob(this)|0};
|
||||
l.save=function(){var a=new I(this);J(a,0,[this.c,this.f,this.D,this.h,this.F,this.i,this.o,this.w,this.u,Ob(this)]);J(a,1,[this.C,this.O,this.b.ua]);for(var b=this.m,c=0,d=[],e=0;e<b.i;e++){var f=b.b[e];if(f.ja||f.Nb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,m=[];g<f.length;){for(var v=f[g],u=g+1;u<f.length&&f[u]===v;)u++;m[k++]=u-g;m[k++]=v;g=u}if(m.length<f.length){f=m;break a}}d[h]=f}}J(a,2,d);return a.data()};
|
||||
l.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.o=b[6];this.w=b[7]&65535;G(this,b[8]);Mb(this,b[9]);b=a[1];this.C=b[0];this.O=b[1];Ab(this,b[3]);a:{b=this.m;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 k=e[g++],m=e[g++];k--;)h[f++]=m;e=h}f=b.b[d];if(!f||!f.restore(e)){q("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
l.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 Pb(a){return a.f<<8|a.D}function Qb(a,b){a.f=b>>8&255;a.D=b&255}function Rb(a){return a.h<<8|a.F}function Sb(a,b){a.h=b>>8&255;a.F=b&255}function K(a){return a.i<<8|a.o}
|
||||
function L(a,b){a.i=b>>8&255;a.o=b&255}function G(a,b){a.u=b&65535}function M(a){return a.s&256?1:0}function N(a,b){a.s=a.s&255|b}function Tb(a){return Qa[a.v&255]?4:0}function Ob(a){return a.G&-214|(a.v&128?128:0)|(a.s&255?0:64)|((a.v^a.A)&16?16:0)|Tb(a)|M(a)}function Mb(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.G=a.G&-726|b&512|2}function Ub(a,b){a.A=a.c^b;return a.v=(a.s=a.c+b)&255}
|
||||
function Vb(a,b){a.A=a.c^b;return a.v=(a.s=a.c+b+(a.s&256?1:0))&255}function Wb(a,b){a.s=a.v=a.A=a.c&b;(a.c|b)&8&&(a.A^=16);return a.s}function Xb(a,b){a.A=b^255;b=a.v=b+255&255;a.s=a.s&-256|b;return b}function Yb(a,b){a.A=b;b=a.v=b+1&255;a.s=a.s&-256|b;return b}function Zb(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 $b(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 ac(a,b){return a.v=a.s=a.A=a.c^b}l.K=function(a){return this.m.K(a)};
|
||||
l.W=function(a,b){this.m.W(a,b)};function P(a){var b=a.K(a.u);G(a,a.u+1);return b}function R(a){var b=Za(a.m,a.u);G(a,a.u+2);return b}function S(a){var b=Za(a.m,a.w);a.w=a.w+2&65535;return b}function T(a,b){a.w=a.w-2&65535;ab(a.m,a.w,b)}function bc(a,b){a.C|=1<<b}function U(a,b,c,d){d=d||2;a.B[b]&&(void 0===c&&(a.j.ra=!0,a.M("Value for "+b+" is invalid"),zb(a)),c=!a.j.ka||a.j.Ob?n(c,d):"--------".substr(0,d),a.B[b].textContent!=c&&(a.B[b].textContent=c))}
|
||||
l.wa=function(a){this.aa&&(a||!this.j.ka||this.j.Ob)&&(U(this,"A",this.c),U(this,"B",this.f),U(this,"C",this.D),U(this,"BC",Pb(this),4),U(this,"D",this.h),U(this,"E",this.F),U(this,"DE",Rb(this),4),U(this,"H",this.i),U(this,"L",this.o),U(this,"HL",K(this),4),U(this,"SP",this.w,4),U(this,"PC",this.u,4),a=Ob(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.ka&&this.b.sa?this.b.sa.toFixed(2)+"Mhz":"Stopped"};l.Zb=function(a){this.j.Va=!0;this.j.Gc=!1;this.j.Pb=!1;this.J=this.a=a;do{if(this.C){if(a&&this.C&255&&this.G&512){for(var b=0;8>b&&!(this.C&1<<b);b++);this.C&=~(0>b?255:1<<b);this.G&=-513;this.C&=-257;this.Z[199|b<<3].call(this)}if(this.C&256){this.a=0;break}}this.Z[P(this)].call(this)}while(0<this.a);return this.j.Va?this.J-this.a:void 0===this.j.Va?0:-1};
|
||||
va(function(){for(var a=A(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Hb(d);Ma(d,c)}});function cc(){this.a-=4}function dc(){G(this,R(this));this.a-=10}function ec(){G(this,S(this));this.a-=10}function fc(){var a=R(this);T(this,this.u);G(this,a);this.a-=17}
|
||||
var Ib=[cc,function(){Qb(this,R(this));this.a-=10},function(){this.W(Pb(this),this.c);this.a-=7},function(){Qb(this,Pb(this)+1);this.a-=5},function(){this.f=Yb(this,this.f);this.a-=5},function(){this.f=Xb(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;N(this,a&256);this.a-=4},cc,function(){var a;L(this,a=K(this)+Pb(this));N(this,a>>8&256);this.a-=10},function(){this.c=this.K(Pb(this));this.a-=7},function(){Qb(this,Pb(this)-1);this.a-=5},function(){this.D=
|
||||
Yb(this,this.D);this.a-=5},function(){this.D=Xb(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;N(this,a);this.a-=4},cc,function(){Sb(this,R(this));this.a-=10},function(){this.W(Rb(this),this.c);this.a-=7},function(){Sb(this,Rb(this)+1);this.a-=5},function(){this.h=Yb(this,this.h);this.a-=5},function(){this.h=Xb(this,this.h);this.a-=5},function(){this.h=P(this);this.a-=7},function(){var a=this.c<<1;this.c=a&255|M(this);N(this,a&256);
|
||||
this.a-=4},cc,function(){var a;L(this,a=K(this)+Rb(this));N(this,a>>8&256);this.a-=10},function(){this.c=this.K(Rb(this));this.a-=7},function(){Sb(this,Rb(this)-1);this.a-=5},function(){this.F=Yb(this,this.F);this.a-=5},function(){this.F=Xb(this,this.F);this.a-=5},function(){this.F=P(this);this.a-=7},function(){var a=this.c<<8;this.c=(M(this)<<8|this.c)>>1;N(this,a&256);this.a-=4},cc,function(){L(this,R(this));this.a-=10},function(){var a=R(this);ab(this.m,a,K(this));this.a-=16},function(){L(this,
|
||||
K(this)+1);this.a-=5},function(){this.i=Yb(this,this.i);this.a-=5},function(){this.i=Xb(this,this.i);this.a-=5},function(){this.i=P(this);this.a-=7},function(){var a=0,b=M(this);if((this.v^this.A)&16||9<(this.c&15))a|=6;if(b||154<=this.c)a|=96,b=1;this.c=Ub(this,a);N(this,b?256:0);this.a-=4},cc,function(){var a;L(this,a=K(this)+K(this));N(this,a>>8&256);this.a-=10},function(){var a;a=R(this);a=Za(this.m,a);L(this,a);this.a-=16},function(){L(this,K(this)-1);this.a-=5},function(){this.o=Yb(this,this.o);
|
||||
this.a-=5},function(){this.o=Xb(this,this.o);this.a-=5},function(){this.o=P(this);this.a-=7},function(){this.c=~this.c&255;this.a-=4},cc,function(){this.w=R(this)&65535;this.a-=10},function(){this.W(R(this),this.c);this.a-=13},function(){this.w=this.w+1&65535;this.a-=5},function(){var a=K(this);this.W(a,Yb(this,this.K(a)));this.a-=10},function(){var a=K(this);this.W(a,Xb(this,this.K(a)));this.a-=10},function(){this.W(K(this),P(this));this.a-=10},function(){this.s|=256;this.a-=4},cc,function(){var a;
|
||||
L(this,a=K(this)+this.w);N(this,a>>8&256);this.a-=10},function(){this.c=this.K(R(this));this.a-=13},function(){this.w=this.w-1&65535;this.a-=5},function(){this.c=Yb(this,this.c);this.a-=5},function(){this.c=Xb(this,this.c);this.a-=5},function(){this.c=P(this);this.a-=7},function(){N(this,M(this)?0:256);this.a-=4},function(){this.a-=5},function(){this.f=this.D;this.a-=5},function(){this.f=this.h;this.a-=5},function(){this.f=this.F;this.a-=5},function(){this.f=this.i;this.a-=5},function(){this.f=this.o;
|
||||
this.a-=5},function(){this.f=this.K(K(this));this.a-=7},function(){this.f=this.c;this.a-=5},function(){this.D=this.f;this.a-=5},function(){this.a-=5},function(){this.D=this.h;this.a-=5},function(){this.D=this.F;this.a-=5},function(){this.D=this.i;this.a-=5},function(){this.D=this.o;this.a-=5},function(){this.D=this.K(K(this));this.a-=7},function(){this.D=this.c;this.a-=5},function(){this.h=this.f;this.a-=5},function(){this.h=this.D;this.a-=5},function(){this.a-=5},function(){this.h=this.F;this.a-=
|
||||
5},function(){this.h=this.i;this.a-=5},function(){this.h=this.o;this.a-=5},function(){this.h=this.K(K(this));this.a-=7},function(){this.h=this.c;this.a-=5},function(){this.F=this.f;this.a-=5},function(){this.F=this.D;this.a-=5},function(){this.F=this.h;this.a-=5},function(){this.a-=5},function(){this.F=this.i;this.a-=5},function(){this.F=this.o;this.a-=5},function(){this.F=this.K(K(this));this.a-=7},function(){this.F=this.c;this.a-=5},function(){this.i=this.f;this.a-=5},function(){this.i=this.D;this.a-=
|
||||
5},function(){this.i=this.h;this.a-=5},function(){this.i=this.F;this.a-=5},function(){this.a-=5},function(){this.i=this.o;this.a-=5},function(){this.i=this.K(K(this));this.a-=7},function(){this.i=this.c;this.a-=5},function(){this.o=this.f;this.a-=5},function(){this.o=this.D;this.a-=5},function(){this.o=this.h;this.a-=5},function(){this.o=this.F;this.a-=5},function(){this.o=this.i;this.a-=5},function(){this.a-=5},function(){this.o=this.K(K(this));this.a-=7},function(){this.o=this.c;this.a-=5},function(){this.W(K(this),
|
||||
this.f);this.a-=7},function(){this.W(K(this),this.D);this.a-=7},function(){this.W(K(this),this.h);this.a-=7},function(){this.W(K(this),this.F);this.a-=7},function(){this.W(K(this),this.i);this.a-=7},function(){this.W(K(this),this.o);this.a-=7},function(){var a=this.u-1;if(this.T.length)for(var b=0;b<this.T.length;b++)if(this.T[b](a))return;this.C|=256;this.a-=7;this.G&512||zb(this)},function(){this.W(K(this),this.c);this.a-=7},function(){this.c=this.f;this.a-=5},function(){this.c=this.D;this.a-=5},
|
||||
function(){this.c=this.h;this.a-=5},function(){this.c=this.F;this.a-=5},function(){this.c=this.i;this.a-=5},function(){this.c=this.o;this.a-=5},function(){this.c=this.K(K(this));this.a-=7},function(){this.a-=5},function(){this.c=Ub(this,this.f);this.a-=4},function(){this.c=Ub(this,this.D);this.a-=4},function(){this.c=Ub(this,this.h);this.a-=4},function(){this.c=Ub(this,this.F);this.a-=4},function(){this.c=Ub(this,this.i);this.a-=4},function(){this.c=Ub(this,this.o);this.a-=4},function(){this.c=Ub(this,
|
||||
this.K(K(this)));this.a-=7},function(){this.c=Ub(this,this.c);this.a-=4},function(){this.c=Vb(this,this.f);this.a-=4},function(){this.c=Vb(this,this.D);this.a-=4},function(){this.c=Vb(this,this.h);this.a-=4},function(){this.c=Vb(this,this.F);this.a-=4},function(){this.c=Vb(this,this.i);this.a-=4},function(){this.c=Vb(this,this.o);this.a-=4},function(){this.c=Vb(this,this.K(K(this)));this.a-=7},function(){this.c=Vb(this,this.c);this.a-=4},function(){this.c=O(this,this.f);this.a-=4},function(){this.c=
|
||||
O(this,this.D);this.a-=4},function(){this.c=O(this,this.h);this.a-=4},function(){this.c=O(this,this.F);this.a-=4},function(){this.c=O(this,this.i);this.a-=4},function(){this.c=O(this,this.o);this.a-=4},function(){this.c=O(this,this.K(K(this)));this.a-=7},function(){this.c=O(this,this.c);this.a-=4},function(){this.c=$b(this,this.f);this.a-=4},function(){this.c=$b(this,this.D);this.a-=4},function(){this.c=$b(this,this.h);this.a-=4},function(){this.c=$b(this,this.F);this.a-=4},function(){this.c=$b(this,
|
||||
this.i);this.a-=4},function(){this.c=$b(this,this.o);this.a-=4},function(){this.c=$b(this,this.K(K(this)));this.a-=7},function(){this.c=$b(this,this.c);this.a-=4},function(){this.c=Wb(this,this.f);this.a-=4},function(){this.c=Wb(this,this.D);this.a-=4},function(){this.c=Wb(this,this.h);this.a-=4},function(){this.c=Wb(this,this.F);this.a-=4},function(){this.c=Wb(this,this.i);this.a-=4},function(){this.c=Wb(this,this.o);this.a-=4},function(){this.c=Wb(this,this.K(K(this)));this.a-=7},function(){this.c=
|
||||
Wb(this,this.c);this.a-=4},function(){this.c=ac(this,this.f);this.a-=4},function(){this.c=ac(this,this.D);this.a-=4},function(){this.c=ac(this,this.h);this.a-=4},function(){this.c=ac(this,this.F);this.a-=4},function(){this.c=ac(this,this.i);this.a-=4},function(){this.c=ac(this,this.o);this.a-=4},function(){this.c=ac(this,this.K(K(this)));this.a-=7},function(){this.c=ac(this,this.c);this.a-=4},function(){this.c=Zb(this,this.f);this.a-=4},function(){this.c=Zb(this,this.D);this.a-=4},function(){this.c=
|
||||
Zb(this,this.h);this.a-=4},function(){this.c=Zb(this,this.F);this.a-=4},function(){this.c=Zb(this,this.i);this.a-=4},function(){this.c=Zb(this,this.o);this.a-=4},function(){this.c=Zb(this,this.K(K(this)));this.a-=7},function(){this.c=Zb(this,this.c);this.a-=4},function(){O(this,this.f);this.a-=4},function(){O(this,this.D);this.a-=4},function(){O(this,this.h);this.a-=4},function(){O(this,this.F);this.a-=4},function(){O(this,this.i);this.a-=4},function(){O(this,this.o);this.a-=4},function(){O(this,
|
||||
this.K(K(this)));this.a-=7},function(){O(this,this.c);this.a-=4},function(){this.s&255&&(G(this,S(this)),this.a-=6);this.a-=5},function(){Qb(this,S(this));this.a-=10},function(){var a=R(this);this.s&255&&G(this,a);this.a-=10},dc,function(){var a=R(this);this.s&255&&(T(this,this.u),G(this,a),this.a-=6);this.a-=11},function(){T(this,Pb(this));this.a-=11},function(){this.c=Ub(this,P(this));this.a-=7},function(){T(this,this.u);G(this,0);this.a-=11},function(){this.s&255||(G(this,S(this)),this.a-=6);this.a-=
|
||||
5},ec,function(){var a=R(this);this.s&255||G(this,a);this.a-=10},dc,function(){var a=R(this);this.s&255||(T(this,this.u),G(this,a),this.a-=6);this.a-=11},fc,function(){this.c=Vb(this,P(this));this.a-=7},function(){T(this,this.u);G(this,8);this.a-=11},function(){M(this)||(G(this,S(this)),this.a-=6);this.a-=5},function(){Sb(this,S(this));this.a-=10},function(){var a=R(this);M(this)||G(this,a);this.a-=10},function(){for(var a=P(this),b=this.m,c=this.c,d=this.u+-2&65535,e=1,f=0;0<e;){var h=b.s[a],g=b.C[a]||
|
||||
1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h&&h[0])h[0](a,k,d);f+=g<<3;a+=g;e-=g}this.a-=10},function(){var a=R(this);M(this)||(T(this,this.u),G(this,a),this.a-=6);this.a-=11},function(){T(this,Rb(this));this.a-=11},function(){this.c=O(this,P(this));this.a-=7},function(){T(this,this.u);G(this,16);this.a-=11},function(){M(this)&&(G(this,S(this)),this.a-=6);this.a-=5},ec,function(){var a=R(this);M(this)&&G(this,a);this.a-=10},function(){for(var a=P(this),b=this.m,c=this.u+-2&65535,d=1,e=0,
|
||||
f=0;0<d;){var h=b.o[a],g=b.A[a]||1,k=1==g?255:2==g?65535:-1,m=k;void 0!==h&&h[0]&&(m=h[0](a,c),void 0===m?m=k:m&=k);e|=m<<f;f+=g<<3;a+=g;d-=g}this.c=e&255;this.a-=10},function(){var a=R(this);M(this)&&(T(this,this.u),G(this,a),this.a-=6);this.a-=11},fc,function(){this.c=$b(this,P(this));this.a-=7},function(){T(this,this.u);G(this,24);this.a-=11},function(){Tb(this)||(G(this,S(this)),this.a-=6);this.a-=5},function(){L(this,S(this));this.a-=10},function(){var a=R(this);Tb(this)||G(this,a);this.a-=10},
|
||||
function(){var a=S(this);T(this,K(this));L(this,a);this.a-=18},function(){var a=R(this);Tb(this)||(T(this,this.u),G(this,a),this.a-=6);this.a-=11},function(){T(this,K(this));this.a-=11},function(){this.c=Wb(this,P(this));this.a-=7},function(){T(this,this.u);G(this,32);this.a-=11},function(){Tb(this)&&(G(this,S(this)),this.a-=6);this.a-=5},function(){G(this,K(this));this.a-=5},function(){var a=R(this);Tb(this)&&G(this,a);this.a-=10},function(){var a=K(this);L(this,Rb(this));Sb(this,a);this.a-=5},function(){var a=
|
||||
R(this);Tb(this)&&(T(this,this.u),G(this,a),this.a-=6);this.a-=11},fc,function(){this.c=ac(this,P(this));this.a-=7},function(){T(this,this.u);G(this,40);this.a-=11},function(){this.v&128||(G(this,S(this)),this.a-=6);this.a-=5},function(){var a=S(this);Mb(this,a&255|this.G&-256);this.c=a>>8;this.a-=10},function(){var a=R(this);this.v&128||G(this,a);this.a-=10},function(){this.G&=-513;this.a-=4},function(){var a=R(this);this.v&128||(T(this,this.u),G(this,a),this.a-=6);this.a-=11},function(){T(this,
|
||||
Ob(this)&255|this.c<<8);this.a-=11},function(){this.c=Zb(this,P(this));this.a-=7},function(){T(this,this.u);G(this,48);this.a-=11},function(){this.v&128&&(G(this,S(this)),this.a-=6);this.a-=5},function(){this.w=K(this)&65535;this.a-=5},function(){var a=R(this);this.v&128&&G(this,a);this.a-=10},function(){this.G|=512;this.a-=4},function(){var a=R(this);this.v&128&&(T(this,this.u),G(this,a),this.a-=6);this.a-=11},fc,function(){O(this,P(this));this.a-=7},function(){T(this,this.u);G(this,56);this.a-=
|
||||
11}];function W(a){r.call(this,"ChipSet",a,W);var b=a.model;b&&!gc[b]&&xa("Unrecognized ChipSet model: "+b);this.c=gc[b]||{};a.sound&&(this.I=null,window&&(this.I=window.AudioContext||window.webkitAudioContext),this.I&&new this.I);D(this)}y(W);
|
||||
var X={X:1978.1,Dc:{Y:0,pd:1,td:16,Ad:32,Jd:64,Id:128,Ca:14},qa:{Y:1,ec:1,yc:2,uc:4,vc:16,wc:32,xc:64,Ca:8},Ec:{Y:2,od:3,Sd:4,qd:8,Ed:16,Fd:32,Gd:64,rd:128,Ca:0},Nd:{Y:3},Ld:{Y:2,Bd:7},Pd:{Y:3,Td:1,Od:2,Hd:4,yd:8,sd:16,ld:32},Md:{Y:4},Qd:{Y:5,ud:1,vd:2,wd:4,xd:8,Ud:16}},Y={X:100,ha:{Y:66,Fb:1,sc:2,tc:4,Dd:8,Cd:16,Db:32,Cb:64,zb:128},dc:{Y:66,INIT:0},oa:{Y:194,nd:0,yb:16,zc:32,Eb:48,ic:0,jc:32},Pa:{Y:162,Kd:0,lc:0,hc:0,kc:0,gc:0},ia:{zd:{Y:98},xa:{bc:0,ac:1,Bc:2,Fc:4,fc:5,Ac:6,Rd:7},Sa:16383}},gc=
|
||||
{SI1978:X,VT100:Y};W.prototype.S=function(){return!1};W.prototype.la=function(a,b,c,d){this.m=b;this.a=c;this.N=d;this.l=a;this.o=E(a,"Keyboard");this.da=E(a,"SerialPort");this.video=E(a,"Video");bb(b,this,this.c.ab);cb(b,this,this.c.bb)};W.prototype.ca=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};W.prototype.ga=function(a){return a?this.save():!0};X.INIT=[[X.Dc.Ca,X.qa.Ca,X.Ec.Ca,0,0,0,0]];
|
||||
Y.INIT=[[Y.dc.INIT,Y.ha.sc|Y.ha.tc],[Y.oa.ic,Y.oa.jc],[Y.Pa.lc,Y.Pa.hc,Y.Pa.kc,Y.Pa.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,11856,11824,11840,11808,11776,12E3,12E3,11857,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]]];
|
||||
l=W.prototype;l.reset=function(){this.c.INIT&&!this.restore(this.c.INIT)&&this.M("reset error")};l.save=function(){var a=new I(this);switch(this.c.X){case X.X:J(a,0,[this.$,this.h,this.aa,this.C,this.L,this.V,this.Z]);break;case Y.X:J(a,0,[this.J,this.v]),J(a,1,[this.s,this.u]),J(a,2,[this.f,this.G,this.T,this.O]),J(a,3,[this.A,this.b,this.w,this.H,this.i])}return a.data()};
|
||||
l.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.L=b[4],this.V=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};l.start=function(){};l.stop=function(){};l.Lc=function(){return this.$};l.Mc=function(){return this.h};l.Nc=function(){return this.aa};
|
||||
l.Kc=function(){return this.C>>8-this.L&255};l.Zc=function(a,b){this.L=b};l.ad=function(a,b){this.V=b};l.$c=function(a,b){this.C=b<<8|this.C>>8};l.bd=function(a,b){this.Z=b};l.cd=function(){};function hc(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}
|
||||
l.Oc=function(){var a=this.v,a=a&~Y.ha.Cb;if((Db(this.a)&64)<<1&&(a|=Y.ha.Cb,a!=this.v)){var b,c;b=this.w&1;switch(this.w>>1&7){case Y.ia.xa.ac:this.A=this.A<<1|b;break;case Y.ia.xa.fc:b=hc(this);this.i[b]=Y.ia.Sa;break;case Y.ia.xa.bc:this.b=this.b<<1|b;break;case Y.ia.xa.Fc:b=hc(this);c=this.b&Y.ia.Sa;this.i[b]=c;break;case Y.ia.xa.Ac:b=hc(this);c=this.i[b];null==c&&(c=Y.ia.Sa);this.b=c;break;case Y.ia.xa.Bc:this.b<<=1,this.H=this.b&Y.ia.Sa+1}}a&=~Y.ha.Db;this.H&&(a|=Y.ha.Db);a&=~Y.ha.zb;this.o&&
|
||||
this.o.ob()&&(a|=Y.ha.zb);a&=~Y.ha.Fb;this.da&&this.da.ob()&&(a|=Y.ha.Fb);return this.v=a};l.dd=function(a,b){this.J=b};l.gd=function(a,b){this.w=b};l.fd=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.gb!==d&&((c.gb=d)?ic(c,-1):c.ib=!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}};
|
||||
l.ed=function(a,b){if(b&Y.oa.zc)b&=Y.oa.Eb,this.u!=b&&(this.u=b,this.video&&(this.video.tb=this.u==Y.oa.Eb?50:60));else if(b&=Y.oa.yb,this.s!=b&&(this.s=b,this.video)){var c=this.video,d=this.s==Y.oa.yb?132:80;c.H=d;c.R=c.Gb;80<d&&c.R--;jc(c)&&kc(c)}};X.ab={0:W.prototype.Lc,1:W.prototype.Mc,2:W.prototype.Nc,3:W.prototype.Kc};X.bb={2:W.prototype.Zc,3:W.prototype.ad,4:W.prototype.$c,5:W.prototype.bd,6:W.prototype.cd};Y.ab={66:W.prototype.Oc};
|
||||
Y.bb={66:W.prototype.dd,98:W.prototype.gd,162:W.prototype.fd,194:W.prototype.ed};va(function(){for(var a=A(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new W(d);Ma(d,c)}});
|
||||
function lc(a){r.call(this,"ROM",a,lc);this.b=null;this.i=a.addr;this.c=a.size;this.o=a.writable;this.l=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=ja()+"/api/v1/dump?file="+this.f+"&format=bytes&decimal=true");var c=this;p(a,null,!0,function(a,b,f){mc(c,a,b,f)})}}y(lc);var nc=[0,5];lc.prototype.la=function(a,b,c,d){this.m=b;this.a=c;this.N=d;oc(this)};
|
||||
lc.prototype.ca=function(){this.h&&(this.N&&this.N.a(this.id,this.i,this.c,this.h),delete this.h);return!0};lc.prototype.ga=function(){return!0};
|
||||
function mc(a,b,c,d){if(d)a.M("Unable to load system ROM (error "+d+": "+b+")");else{Ia(a.kb,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){q("Empty ROM: "+b);return}if(1==a.b.length){q(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]);oc(a)}}
|
||||
function oc(a){if(!Oa(a))if(!a.f)D(a);else if(a.b&&a.m){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size (0x"+n(a.b.length)+") does not match specified size ("+("0x"+n(a.c))+")";a.j.ra=!0;a.M(b)}else if(pc(a,a.i)){b=[];"number"==typeof a.l?b.push(a.l):null!=a.l&&a.l.length&&(b=a.l);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.m,h=d.c,g=[],k=d.i>>>f.c;0<h&&k<f.b.length;)g.push(f.b[k++]),h-=f.m;f=d.m;d=d.c;h=0;for(e>>>=f.c;0<d&&e<f.b.length;){k=g[h++];if(!k)break;f.b[e++]=k;d-=f.m}}delete a.b}D(a)}}
|
||||
function pc(a,b){if(Va(a.m,b,a.c,a.o?1:jb)){var c;for(c=0;c<a.b.length;c++)$a(a.m,b+c,a.b[c]);if(a.o&&256==b){for(c=0;c<nc.length;c++)$a(a.m,nc[c],118);Lb(a.a,function(a){return function(b){if(0<=nc.indexOf(b)){var c=!1,h=a.a,g=a.N;if(5==b)switch(c=!0,h.D){case 2:qc(a,String.fromCharCode(h.F));break;case 9:for(var k=Rb(h),m="",v=255;v--;){var u=a.a.K(k++);if(36==u)break;m+=String.fromCharCode(u)}qc(a,m);break;default:c=!1}c?ec.call(h):g&&(a.ba("\nCP/M vector 0x"+n(b,4)),G(h,b),zb(g));b=!0}else b=
|
||||
!1;return b}}(a));Nb(a.a,b)}return!0}return!1}function qc(a,b){b=b.replace(/\r/g,"");a.na&&(a.na.value+=b,a.na.scrollTop=a.na.scrollHeight)}va(function(){for(var a=A(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new lc(d);Ma(d,c)}});function rc(a){r.call(this,"RAM",a,rc);this.l=a.addr;this.c=a.size;this.b=!1}y(rc);l=rc.prototype;l.la=function(a,b,c,d){this.m=b;this.a=c;this.N=d;D(this)};l.ca=function(a,b){b||this.reset();return!0};l.ga=function(a){return a?this.save():!0};
|
||||
l.reset=function(){!this.b&&this.c&&Va(this.m,this.l,this.c,1)&&(this.b=!0);this.b||q("No RAM allocated")};l.save=function(){return null};l.restore=function(){return!0};va(function(){for(var a=A(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new rc(d);Ma(d,c)}});function sc(a){r.call(this,"Keyboard",a,sc);(a=a.model)&&!tc[a]&&xa("Unrecognized Keyboard model: "+a);this.b=tc[a]||{};this.reset();D(this)}y(sc);
|
||||
var uc={X:1978.1,g:{},xb:{65:37,68:39,76:32},Da:{},pa:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},Z={X:100,g:{},xb:{},Da:{},pa:{setup:120},cc:{Y:130,INIT:127},ea:{Y:130,qc:1,pc:2,oc:4,nc:8,rc:16,Bb:32,Ab:63,Cc:64,md: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[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.Da={l4:Z.ea.qc,l3:Z.ea.pc,l2:Z.ea.oc,l1:Z.ea.nc,locked:Z.ea.rc,local:Z.ea.Bb,online:~Z.ea.Bb};var uc={SI1978:vc,VT100:Z};
|
||||
tc.prototype.R=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.B[e]){if("led"==a&&this.b.Da[b])return this.B[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return wc(d,a,!0)},c.onkeyup=function(a){return wc(d,a,!1)},!0;default:if(this.b.oa&&void 0!==this.b.oa[b])return this.B[e]=c,a=function(a,b){return function(){xc(a,b,!0)}}(this,this.b.oa[b]),b=function(a,b){return function(){xc(a,b,!1);a.l&&Gb(a.l)}}(this,this.b.oa[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
|
||||
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};tc.prototype.la=function(a,b,c,d){this.l=a;this.a=c;this.N=d;this.J=E(a,"ChipSet");db(b,this,this.b.ab);eb(b,this,this.b.bb)};tc.prototype.ca=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};tc.prototype.ga=function(a){return a?this.save():!0};Z.INIT=[[Z.ea.INIT,Z.cc.INIT,-1]];l=tc.prototype;l.reset=function(){this.c=[];this.b.INIT&&!this.restore(this.b.INIT)&&this.M("reset error")};
|
||||
l.save=function(){var a=new I(this);switch(this.b.W){case Z.W:J(a,0,[this.h,this.f,-1])}return a.data()};l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.W){case vc.W:return!0;case Z.W:return this.h=b[0],yc(this,this.h&Z.ea.Ab),this.f=b[1],this.m=b[2],!0}return!1};function yc(a,b){for(var c in a.b.Da){var d=a.B["led-"+c];if(d){var e=a.b.Da[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}
|
||||
function wc(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.oa)if(a.b.oa[f]===e){e=f;break a}e=null}e&&(d=xc(a,e,c),b.preventDefault());return d}
|
||||
function xc(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,qb:Date.now(),Ta:!1}):(a.c[d].qb=Date.now(),a.c[d].Ta=!1);else if(0<=d){if(!a.c[d].Ta){var e=a.c[d].qb;if(e&&100>Date.now()-e)return a.c[d].Ta=!0,Ac(a),!0}a.c.splice(d,1)}if(a.J){d=0;switch(b){case "1p":d=X.pa.uc;break;case "2p":d=X.pa.yc;break;case "coin":d=X.pa.ec;break;case "left":d=X.pa.wc;break;case "right":d=X.pa.xc;break;case "fire":d=X.pa.vc}d&&(a=a.J,b=d,a.h&=~b,c&&(a.h|=b))}return!0}
|
||||
function Ac(a){for(var b=0,c=-1;b<a.c.length;){if(a.c[b].Ta){var d=a.c[b].vb,e=100-(Date.now()-a.c[b].qb);if(0<e){if(0>c||c>e)c=e}else{xc(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){Ac(a)},c)}l.ob=function(){return!0};l.Pc=function(){var a=this.f;0<=this.m&&(this.m<this.c.length?(a=this.c[this.m],this.m++,a=Z.g[a.vb],a&128&&(a&=127)):(this.m=-1,a=Z.mc),this.f=a,cc(this.a,1));return a};l.hd=function(a,b){this.h=b;yc(this,b&Z.ea.Ab);b&Z.ea.Cc&&(this.m=0,cc(this.a,1))};Z.ab={130:tc.prototype.Pc};
|
||||
Z.bb={130:tc.prototype.hd};va(function(){for(var a=A(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new tc(d);Oa(d,c)}});
|
||||
function Bc(a,b,c,d,e){var f=this;this.Lb=qa("Gecko/");var h=["","moz","ms","webkit"];r.call(this,"Video",a,Bc);this.C=a.screenWidth;this.w=a.screenHeight;this.Y=a.bufferAddr;this.Rc=a.bufferRAM;var g=a.bufferFormat;this.H=g&&Cc[g.toUpperCase()]||Dc;this.J=a.bufferCols;this.I=a.bufferRows;this.Gb=this.P=a.cellWidth||1;this.O=a.cellHeight||1;this.da=null;this.Jb=!1;this.Ra=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: "+
|
||||
this.c),this.c=0);this.mb=a.interruptRate;this.Tc=a.refreshRate||60;this.v=b;this.f=c;this.$=(this.Vc=d)||b||null;this.Hc=this.C;this.Qc=this.w;this.Hb=this.C/this.J|0;this.Ib=this.w/this.I|0;1<this.O&&(this.I++,this.gb=0,this.ib=!1);b=a.smoothing;(c=Ba.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.h=a.screenRotate)this.h=this.h%360,0<this.h&&(this.h-=360),-90!=this.h?(this.M("unsupported screen rotation: "+
|
||||
this.h),this.h=0):(this.f.translate(0,this.w),this.f.rotate(this.h*Math.PI/180),this.f.scale(this.w/this.C,this.C/this.w));if(this.b=e)if(this.b.wa=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.wa){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){Ec(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(){Ec(f,null)},!1);break}}if(this.K=a.fontROM)"json"!=ca(this.K)&&(this.K=ja()+"/api/v1/dump?file="+this.K+"&format=bytes"),p(this.K,null,!0,function(a,b,c){Fc(f,a,b,c)});this.lb={}}y(Bc);var Dc=0,Cc={SI1978:1,VT100:2};
|
||||
function kc(a){a.s=a.J*a.P;a.G=a.I*a.O;var b=a.s,c=a.G;a.c&&(b=a.G,c=a.s);a.A=0;if(!a.Rc&&(a.A=(a.s*a.Ra>>3)*a.G,!Xa(a.m,a.Y,a.A,3)))return!1;a.A?(a.Qb=a.f.createImageData(b,c),a.Tb=16/a.Ra|0,Gc(a,a.A>>1)):Gc(a,(a.J+1)*a.I);a.u=document.createElement("canvas");a.u.width=b;a.u.height=c;a.hb=a.u.getContext("2d");a.S={};a.ba=1<<a.Ra;a.T=Array(a.ba+2);a.T[0]=[0,0,0,255];a.T[1]=[255,255,255,255];1==a.H&&(a.T[a.ba+0]=[255,255,0,255],a.T[a.ba+1]=[0,255,0,255]);2==a.H&&(a.tb=60,a.jb=!1,a.va=Array(a.J));return!0}
|
||||
Bc.prototype.la=function(a,b,c,d){this.l=a;this.m=b;this.a=c;this.N=d;kc(this);if(this.o=E(a,"Keyboard")){for(var e in this.lb)this.o.R("led",e,this.lb[e]);this.v&&this.o.R(this.Vc?"textarea":"canvas","kbd",this.$)}this.K||D(this)};
|
||||
function Fc(a,b,c,d){if(d)a.M("Unable to load font ROM (error "+d+": "+b+")");else{Ia(a.kb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){q("Empty font ROM: "+b);return}if(1==f.length){q(f[0]);return}if(2048==f.length)a.da=f,lc(a);else{a.M("Unrecognized font data length ("+f.length+")");return}}catch(h){a.M("Font ROM data error: "+h.message);return}(a.f||a.N)&&D(a)}}
|
||||
function lc(a){a.da&&(a.Jb=2==a.H,a.S[96]=[Hc(a,a.P,a.O),Hc(a,a.P,a.O,a.jb)],a.S[64]=[Hc(a,2*a.P,a.O),Hc(a,2*a.P,a.O,a.jb)],a.S[32]=a.S[0]=[Hc(a,2*a.P,2*a.O),Hc(a,2*a.P,2*a.O,a.jb)])}
|
||||
function Hc(a,b,c,d){var e=8>=a.Gb?8:16,f=8<e?15:0,h=a.da.length/e,g=!1===d,k={P:b,O: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 m=k.context.createImageData(b,c),v=0;v<h;v++){for(var u=0,x=u;u<a.O;u++)for(var B=v*e+(f+u&e-1),B=d&&8==u?255:a.da[B],t=0;t<c/a.O;t++){for(var C=0,H=0,V=H;H<a.P;H++){for(var Q=B&128>>(7<H?7:H),C=a.Jb&&!Q&&C?C:Q,la=0;la<b/a.P;la++)g&&(C=!C),Ic(a,m,V,x,C?1:0),V++;C=Q}x++}k.context.putImageData(m,
|
||||
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.Da={l4:Z.ea.qc,l3:Z.ea.pc,l2:Z.ea.oc,l1:Z.ea.nc,locked:Z.ea.rc,local:Z.ea.Bb,online:~Z.ea.Bb};var tc={SI1978:uc,VT100:Z};
|
||||
sc.prototype.S=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.B[e]){if("led"==a&&this.b.Da[b])return this.B[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return vc(d,a,!0)},c.onkeyup=function(a){return vc(d,a,!1)},!0;default:if(this.b.pa&&void 0!==this.b.pa[b])return this.B[e]=c,a=function(a,b){return function(){wc(a,b,!0)}}(this,this.b.pa[b]),b=function(a,b){return function(){wc(a,b,!1);a.l&&Eb(a.l)}}(this,this.b.pa[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
|
||||
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};sc.prototype.la=function(a,b,c,d){this.l=a;this.a=c;this.N=d;this.L=E(a,"ChipSet");bb(b,this,this.b.ab);cb(b,this,this.b.bb)};sc.prototype.ca=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};sc.prototype.ga=function(a){return a?this.save():!0};Z.INIT=[[Z.ea.INIT,Z.cc.INIT,-1]];l=sc.prototype;l.reset=function(){this.c=[];this.b.INIT&&!this.restore(this.b.INIT)&&this.M("reset error")};
|
||||
l.save=function(){var a=new I(this);switch(this.b.X){case Z.X:J(a,0,[this.h,this.f,-1])}return a.data()};l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.X){case uc.X:return!0;case Z.X:return this.h=b[0],xc(this,this.h&Z.ea.Ab),this.f=b[1],this.m=b[2],!0}return!1};function xc(a,b){for(var c in a.b.Da){var d=a.B["led-"+c];if(d){var e=a.b.Da[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}
|
||||
function vc(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.pa)if(a.b.pa[f]===e){e=f;break a}e=null}e&&(d=wc(a,e,c),b.preventDefault());return d}
|
||||
function wc(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,qb:Date.now(),Ta:!1}):(a.c[d].qb=Date.now(),a.c[d].Ta=!1);else if(0<=d){if(!a.c[d].Ta){var e=a.c[d].qb;if(e&&100>Date.now()-e)return a.c[d].Ta=!0,zc(a),!0}a.c.splice(d,1)}if(a.L){d=0;switch(b){case "1p":d=X.qa.uc;break;case "2p":d=X.qa.yc;break;case "coin":d=X.qa.ec;break;case "left":d=X.qa.wc;break;case "right":d=X.qa.xc;break;case "fire":d=X.qa.vc}d&&(a=a.L,b=d,a.h&=~b,c&&(a.h|=b))}return!0}
|
||||
function zc(a){for(var b=0,c=-1;b<a.c.length;){if(a.c[b].Ta){var d=a.c[b].vb,e=100-(Date.now()-a.c[b].qb);if(0<e){if(0>c||c>e)c=e}else{wc(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){zc(a)},c)}l.ob=function(){return!0};l.Pc=function(){var a=this.f;0<=this.m&&(this.m<this.c.length?(a=this.c[this.m],this.m++,a=Z.g[a.vb],a&128&&(a&=127)):(this.m=-1,a=Z.mc),this.f=a,bc(this.a,1));return a};l.hd=function(a,b){this.h=b;xc(this,b&Z.ea.Ab);b&Z.ea.Cc&&(this.m=0,bc(this.a,1))};Z.ab={130:sc.prototype.Pc};
|
||||
Z.bb={130:sc.prototype.hd};va(function(){for(var a=A(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new sc(d);Ma(d,c)}});
|
||||
function Ac(a,b,c,d,e){var f=this;this.Lb=qa("Gecko/");var h=["","moz","ms","webkit"];r.call(this,"Video",a,Ac);this.C=a.screenWidth;this.w=a.screenHeight;this.V=a.bufferAddr;this.Rc=a.bufferRAM;var g=a.bufferFormat;this.L=g&&Bc[g.toUpperCase()]||Cc;this.H=a.bufferCols;this.I=a.bufferRows;this.Gb=this.R=a.cellWidth||1;this.P=a.cellHeight||1;this.da=null;this.Jb=!1;this.Ra=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: "+
|
||||
this.c),this.c=0);this.mb=a.interruptRate;this.Tc=a.refreshRate||60;this.v=b;this.f=c;this.$=(this.Vc=d)||b||null;this.Hc=this.C;this.Qc=this.w;this.Hb=this.C/this.H|0;this.Ib=this.w/this.I|0;1<this.P&&(this.I++,this.gb=0,this.ib=!1);b=a.smoothing;(c=Ba.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.h=a.screenRotate)this.h=this.h%360,0<this.h&&(this.h-=360),-90!=this.h?(this.M("unsupported screen rotation: "+
|
||||
this.h),this.h=0):(this.f.translate(0,this.w),this.f.rotate(this.h*Math.PI/180),this.f.scale(this.w/this.C,this.C/this.w));if(this.b=e)if(this.b.ya=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.ya){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){Dc(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(){Dc(f,null)},!1);break}}if(this.J=a.fontROM)"json"!=ca(this.J)&&(this.J=ja()+"/api/v1/dump?file="+this.J+"&format=bytes"),p(this.J,null,!0,function(a,b,c){Ec(f,a,b,c)});this.lb={}}y(Ac);var Cc=0,Bc={SI1978:1,VT100:2};
|
||||
function jc(a){a.s=a.H*a.R;a.G=a.I*a.P;var b=a.s,c=a.G;a.c&&(b=a.G,c=a.s);a.A=0;if(!a.Rc&&(a.A=(a.s*a.Ra>>3)*a.G,!Va(a.m,a.V,a.A,3)))return!1;a.A?(a.Qb=a.f.createImageData(b,c),a.Tb=16/a.Ra|0,Fc(a,a.A>>1)):Fc(a,(a.H+1)*a.I);a.u=document.createElement("canvas");a.u.width=b;a.u.height=c;a.hb=a.u.getContext("2d");a.O={};a.aa=1<<a.Ra;a.T=Array(a.aa+2);a.T[0]=[0,0,0,255];a.T[1]=[255,255,255,255];1==a.L&&(a.T[a.aa+0]=[255,255,0,255],a.T[a.aa+1]=[0,255,0,255]);2==a.L&&(a.tb=60,a.jb=!1,a.ma=Array(a.H));return!0}
|
||||
Ac.prototype.la=function(a,b,c,d){this.l=a;this.m=b;this.a=c;this.N=d;jc(this);if(this.o=E(a,"Keyboard")){for(var e in this.lb)this.o.S("led",e,this.lb[e]);this.v&&this.o.S(this.Vc?"textarea":"canvas","kbd",this.$)}this.J||D(this)};
|
||||
function Ec(a,b,c,d){if(d)a.M("Unable to load font ROM (error "+d+": "+b+")");else{Ia(a.kb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){q("Empty font ROM: "+b);return}if(1==f.length){q(f[0]);return}if(2048==f.length)a.da=f,kc(a);else{a.M("Unrecognized font data length ("+f.length+")");return}}catch(h){a.M("Font ROM data error: "+h.message);return}(a.f||a.N)&&D(a)}}
|
||||
function kc(a){a.da&&(a.Jb=2==a.L,a.O[96]=[Gc(a,a.R,a.P),Gc(a,a.R,a.P,a.jb)],a.O[64]=[Gc(a,2*a.R,a.P),Gc(a,2*a.R,a.P,a.jb)],a.O[32]=a.O[0]=[Gc(a,2*a.R,2*a.P),Gc(a,2*a.R,2*a.P,a.jb)])}
|
||||
function Gc(a,b,c,d){var e=8>=a.Gb?8:16,f=8<e?15:0,h=a.da.length/e,g=!1===d,k={R:b,P: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 m=k.context.createImageData(b,c),v=0;v<h;v++){for(var u=0,x=u;u<a.P;u++)for(var B=v*e+(f+u&e-1),B=d&&8==u?255:a.da[B],t=0;t<c/a.P;t++){for(var C=0,H=0,V=H;H<a.R;H++){for(var Q=B&128>>(7<H?7:H),C=a.Jb&&!Q&&C?C:Q,la=0;la<b/a.R;la++)g&&(C=!C),Hc(a,m,V,x,C?1:0),V++;C=Q}x++}k.context.putImageData(m,
|
||||
(v&15)*b,(v>>4)*c)}return k}
|
||||
Bc.prototype.ca=function(){if(2==this.H){for(var a={0:[32,"SET-UP A"],2:[64,'TO EXIT PRESS "SET-UP"'],22:[96," T T T T T T T T T"],23:[96,"1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890"],24:[]},b=this.Y,c=-1,d=-1,e,f=-(60==this.tb?2:5);f<this.I;f++){var h=a[f];if(0<=c){var g=!1,c=b+2;h?h.length?d=h[0]:(c=b-1,g=!0):32==d&&(h=a[f-1],d=0);e=d&96|c>>8&15|16;bb(this.m,b++,e);bb(this.m,b++,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++)bb(this.m,b++,g.charCodeAt(k)|c);c^=128}bb(this.m,b++,127);c=b}Jc(this)}return!0};Bc.prototype.R=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.lb[b]=c,!0;switch(b){case "fullScreen":return this.B[b]=c,this.b&&this.b.wa?c.onclick=function(){d.wa()}:c.parentNode.removeChild(c),!0}return!1};
|
||||
Bc.prototype.wa=function(){var a=!1;if(this.b){if(this.b.wa){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.C/this.w;b>c&&(a=Math.round(c/b*100)+"%")}this.Lb?(this.v.style.width=a,this.v.style.width=a,this.v.style.display="block",this.v.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.wa();a=!0}this.$&&this.$.focus()}return a};
|
||||
function Ec(a,b){!b&&a.b&&(a.Lb?a.v.style.width=a.v.style.height="":a.b.style.width=a.b.style.height="")}function Gc(a,b){a.Rb=b;a.Z=!1;if(void 0===a.i||a.i.length!=a.Rb)a.i=Array(a.Rb)}function Ic(a,b,c,d,e){d=a.c?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.H&&(208<=c&&236>c?e=a.ba+0:28<=c&&72>c&&(e=a.ba+1));a=a.T[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 Jc(a,b){for(var c=a.Y,d=-1,e=0,f=60==a.tb?2:5,h=0,g=0,k=-1;e<a.I;){var m=0,v=c,u=d,x=a.J;for(96!=u&&(x>>=1);;){var B=$a(a.m,v++);if(127==(B&127)){var t=$a(a.m,v++),d=t&96,c=(t&15)<<8|$a(a.m,v),c=c+(t&16?8192:16384);break}if(m<x)a.va[m++]=B;else break}if(f)f--;else{for(;m<a.va.length;)a.va[m++]=0;if(0<=u)for(v=a.Z&&a.i[h]==x,a.i[h++]=x,x=0;x<m;x++){B=a.va[x];if(!v||B!==a.i[h]){a.i[k=h]=B;var t=a,C=a.hb,H=B&127;if(B=t.S[u][B&128?1:0]){var V=(H&15)*B.P,H=(H>>4)*B.O,Q=void 0,la=void 0,Da=void 0,
|
||||
gb=void 0,zc=B.P,Jb=B.O;C?(Q=x*t.P,la=e*t.O,Da=t.P,gb=t.O):(Q=x*t.Hb,la=e*t.Ib,Da=t.Hb,gb=t.Ib);B.P>t.P&&(Q*=2,Da*=2);B.O>t.O&&(0==u&&(H+=t.O),Jb=t.O);C?C.drawImage(B.canvas,V,H,zc,Jb,Q,la,Da,gb):(Q+=0,la+=0,t.f.drawImage(B.canvas,V,H,zc,Jb,Q,la,Da,gb))}g++}h++}e++}}a.Z=!0;!b&&a.ib&&1==g&&(a.i[k]=-1,g=0);a.ib=!1;(g||b)&&a.hb&&a.f.drawImage(a.u,0,a.gb,a.s,a.G-a.O,0,0,a.Hc,a.Qc)}
|
||||
function jc(a,b){var c=!0,d=!0;if(0<=b){d=!1;a.mb&&(120==a.mb?b&1?(cc(a.a,2),c=!1):cc(a.a,1):cc(a.a,4));var e;if(e=c&&a.Z&&a.A){e=a.m;for(var f=a.A,h=!0,g=a.Y>>>e.c;0<f&&g<e.b.length;)e.b[g].ja&&(e.b[g].ja=h=!1,e.b[g].Nb=!0),f-=e.m,g++;e=h}e&&(c=!1)}if(c)if(1<a.P)switch(a.H){case 2:Jc(a,d)}else{var f=a.Y,h=f+a.A,k=g=0,m=0,c=a.s,v=0,d=a.G,u=e=0,x=a.Ra,B=(1<<x)-1;a.Sc&&(x=-x,u=16+x);for(;f<h;){var t;t=a.m;var C=f,H=C&t.l,V=(C&t.f)>>>t.c;t=H!=t.l?t.b[V].Yb(H,C):t.b[V++].cb(H,C)|t.b[V&t.u].cb(0,C+1)<<
|
||||
8;if(a.Z&&t===a.i[g])k+=a.Tb;else{a.i[g]=t;(C=u)&&(t=t>>8|(t&255)<<8);k<c&&(c=k);for(H=a.Tb;H--;)V=t>>C&B,Ic(a,a.Qb,k++,m,V),C+=x;k>v&&(v=k);m<d&&(d=m);m>=e&&(e=m+1)}f+=2;g++;if(k>=a.s&&(k=0,m++,m>a.G))break}a.Z=!0;c<a.s&&(f=v-c,e-=d,a.c&&(h=c,g=f,c=d,f=e,d=a.s-(h+g),e=g),a.hb.putImageData(a.Qb,0,0,c,d,f,e),a.f.drawImage(a.u,0,0,a.u.width,a.u.height,0,0,a.C,a.w))}}
|
||||
Ac.prototype.ca=function(){if(2==this.L){for(var a={0:[32,"SET-UP A"],2:[64,'TO EXIT PRESS "SET-UP"'],22:[96," T T T T T T T T T"],23:[96,"1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890"],24:[]},b=this.V,c=-1,d=-1,e,f=-(60==this.tb?2:5);f<this.I;f++){var h=a[f];if(0<=c){var g=!1,c=b+2;h?h.length?d=h[0]:(c=b-1,g=!0):32==d&&(h=a[f-1],d=0);e=d&96|c>>8&15|16;$a(this.m,b++,e);$a(this.m,b++,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++)$a(this.m,b++,g.charCodeAt(k)|c);c^=128}$a(this.m,b++,127);c=b}Ic(this)}return!0};Ac.prototype.S=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.lb[b]=c,!0;switch(b){case "fullScreen":return this.B[b]=c,this.b&&this.b.ya?c.onclick=function(){d.ya()}:c.parentNode.removeChild(c),!0}return!1};
|
||||
Ac.prototype.ya=function(){var a=!1;if(this.b){if(this.b.ya){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.C/this.w;b>c&&(a=Math.round(c/b*100)+"%")}this.Lb?(this.v.style.width=a,this.v.style.width=a,this.v.style.display="block",this.v.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.ya();a=!0}this.$&&this.$.focus()}return a};
|
||||
function Dc(a,b){!b&&a.b&&(a.Lb?a.v.style.width=a.v.style.height="":a.b.style.width=a.b.style.height="")}function Fc(a,b){a.Rb=b;a.Z=!1;if(void 0===a.i||a.i.length!=a.Rb)a.i=Array(a.Rb)}function Hc(a,b,c,d,e){d=a.c?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.L&&(208<=c&&236>c?e=a.aa+0:28<=c&&72>c&&(e=a.aa+1));a=a.T[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 Ic(a,b){for(var c=a.V,d=-1,e=0,f=60==a.tb?2:5,h=0,g=0,k=-1;e<a.I;){var m=0,v=c,u=d,x=a.H;for(96!=u&&(x>>=1);;){var B=Ya(a.m,v++);if(127==(B&127)){var t=Ya(a.m,v++),d=t&96,c=(t&15)<<8|Ya(a.m,v),c=c+(t&16?8192:16384);break}if(m<x)a.ma[m++]=B;else break}if(f)f--;else{for(;m<a.ma.length;)a.ma[m++]=0;if(0<=u)for(v=a.Z&&a.i[h]==x,a.i[h++]=x,x=0;x<m;x++){B=a.ma[x];if(!v||B!==a.i[h]){a.i[k=h]=B;var t=a,C=a.hb,H=B&127;if(B=t.O[u][B&128?1:0]){var V=(H&15)*B.R,H=(H>>4)*B.P,Q=void 0,la=void 0,Da=void 0,
|
||||
gb=void 0,yc=B.R,Jb=B.P;C?(Q=x*t.R,la=e*t.P,Da=t.R,gb=t.P):(Q=x*t.Hb,la=e*t.Ib,Da=t.Hb,gb=t.Ib);B.R>t.R&&(Q*=2,Da*=2);B.P>t.P&&(0==u&&(H+=t.P),Jb=t.P);C?C.drawImage(B.canvas,V,H,yc,Jb,Q,la,Da,gb):(Q+=0,la+=0,t.f.drawImage(B.canvas,V,H,yc,Jb,Q,la,Da,gb))}g++}h++}e++}}a.Z=!0;!b&&a.ib&&1==g&&(a.i[k]=-1,g=0);a.ib=!1;(g||b)&&a.hb&&a.f.drawImage(a.u,0,a.gb,a.s,a.G-a.P,0,0,a.Hc,a.Qc)}
|
||||
function ic(a,b){var c=!0,d=!0;if(0<=b){d=!1;a.mb&&(120==a.mb?b&1?(bc(a.a,2),c=!1):bc(a.a,1):bc(a.a,4));var e;if(e=c&&a.Z&&a.A){e=a.m;for(var f=a.A,h=!0,g=a.V>>>e.c;0<f&&g<e.b.length;)e.b[g].ja&&(e.b[g].ja=h=!1,e.b[g].Nb=!0),f-=e.m,g++;e=h}e&&(c=!1)}if(c)if(1<a.R)switch(a.L){case 2:Ic(a,d)}else{var f=a.V,h=f+a.A,k=g=0,m=0,c=a.s,v=0,d=a.G,u=e=0,x=a.Ra,B=(1<<x)-1;a.Sc&&(x=-x,u=16+x);for(;f<h;){var t;t=a.m;var C=f,H=C&t.l,V=(C&t.f)>>>t.c;t=H!=t.l?t.b[V].Yb(H,C):t.b[V++].cb(H,C)|t.b[V&t.u].cb(0,C+1)<<
|
||||
8;if(a.Z&&t===a.i[g])k+=a.Tb;else{a.i[g]=t;(C=u)&&(t=t>>8|(t&255)<<8);k<c&&(c=k);for(H=a.Tb;H--;)V=t>>C&B,Hc(a,a.Qb,k++,m,V),C+=x;k>v&&(v=k);m<d&&(d=m);m>=e&&(e=m+1)}f+=2;g++;if(k>=a.s&&(k=0,m++,m>a.G))break}a.Z=!0;c<a.s&&(f=v-c,e-=d,a.c&&(h=c,g=f,c=d,f=e,d=a.s-(h+g),e=g),a.hb.putImageData(a.Qb,0,0,c,d,f,e),a.f.drawImage(a.u,0,0,a.u.width,a.u.height,0,0,a.C,a.w))}}
|
||||
va(function(){for(var a=A(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 <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=(window?window.navigator.userAgent:"").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||Ba.aspect);f&&.3<=f&&3.33>=f&&(ua("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");qa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new Bc(d,e,h,f,c);Oa(d,c)}});
|
||||
function Kc(a){this.H=+a.adapter;switch(this.H){case 0:this.I=0;this.T=2;break;default:q("Unrecognized serial adapter #"+this.H);return}this.c=this.f=null;this.K=a.tabSize;this.G=a.charBOL;this.h=0;r.call(this,"SerialPort",a,Kc);a=a.binding;"console"==a?this.f="":Ma(this,a);this.S=function(a){return function(){Lc(a)}}(this);this.s=this.A=null;this.exports={receiveByte:this.eb}}y(Kc);var Mc=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Nc=[!1,0,0,133,142,39,238],Na="buffer";
|
||||
l=Kc.prototype;
|
||||
l.R=function(a,b,c,d){var e=this;switch(b){case Na:return this.B[b]=this.c=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),e.eb(b);return!0},c.onkeypress=function(a){a=a||window.event;e.eb(a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.B[b]=c,d=d.replace(/\\n/g,"\n").replace(/\\r/g,"\r"),c.onclick=function(){e.o=d;Lc(e);e.l&&
|
||||
Gb(e.l);return!0},!0}return!1};l.la=function(a,b,c,d){this.l=a;this.m=b;this.a=c;this.N=d;this.J=E(a,"ChipSet");db(b,this,Oc,this.I);eb(b,this,Pc,this.I);if(a=wb(this.l,"connection"))if(b=a.split("="),2==b.length&&(a=ga(b[0]),b=ga(b[1]),a==this.Qa&&(this.s=Ka(b))))if(a=this.s.exports)this.A=a.receiveByte;D(this)};l.ca=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.ga=function(a){return a?this.save():!0};l.reset=function(){Qc(this)};
|
||||
l.save=function(){var a=new I(this),b=0,c=[];c[b++]=this.fa;c[b++]=this.w;c[b++]=this.C;c[b++]=this.b;c[b++]=this.i;c[b++]=this.v;c[b]=this.u;J(a,0,c);return a.data()};l.restore=function(a){return Qc(this,a[0])};function Qc(a,b){var c=0;void 0===b&&(b=Nc);a.fa=b[c++];a.w=b[c++];a.C=b[c++];a.b=b[c++];a.i=b[c++];a.v=b[c++];a.u=b[c];return!0}l.eb=function(a){return this.b&2?!1:(this.w=a,this.b|=2,cc(this.a,this.T),!0)};
|
||||
function Lc(a){if(a.o&&(a.eb(a.o.charCodeAt(0))&&(a.o=a.o.substr(1)),a.o)){var b=Mc[a.u&15],c=((a.i&12)>>2)+6;a.i&16&&c++;c+=((a.i&192)>>6)+1>>1;setTimeout(a.S,1E3/Math.round(b/c))}}l.ob=function(){return!!(this.b&1)};l.Jc=function(){var a=this.w;this.b&=-3;return a};l.Ic=function(){return this.b};
|
||||
l.Yc=function(a,b){this.C=b;this.b&=-6;var c=!1;this.A&&this.A.call(this.s,b)&&(c=!0);if(this.c){if(13==b)this.h=0;else if(8==b)this.c.value=this.c.value.slice(0,-1),0<this.h&&this.h--;else{var c=String.fromCharCode(b),d=32<=b?1:0;9==b&&(d=this.K||8,d=d-this.h%d,this.K&&(c=" ".slice(0,d)));this.G&&!this.h&&d&&(c=String.fromCharCode(this.G)+c);this.c.value+=c;this.c.scrollTop=this.c.scrollHeight;this.h+=d}c=!0}else if(null!=this.f){if(10==b||1024<=this.f.length)this.aa(this.f),
|
||||
this.f="";10!=b&&(this.f+=String.fromCharCode(b));c=!0}c&&(this.b|=5)};l.Xc=function(a,b){this.fa?(this.v=b,this.v&64&&(this.fa=!1)):(this.i=b,this.fa=!0)};l.Wc=function(a,b){this.u=b};var Oc={0:Kc.prototype.Jc,1:Kc.prototype.Ic},Pc={0:Kc.prototype.Yc,1:Kc.prototype.Xc,2:Kc.prototype.Wc};va(function(){for(var a=A(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Kc(d);Oa(d,c)}});function I(a,b,c){this.id=a.id;this.key=Rc(a,b,c);this.N=a.N;Sc(this,a.Xb)}
|
||||
function Rc(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
I.prototype={constructor:I,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){Sc(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};
|
||||
function Sc(a,b){a[a.id]={};b&&J(a,"parms",b);a.a=!1}function Tc(a){var b=!0;if(na()){var c=JSON.stringify(a[a.id]);pa(a.key,c)||(q("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Uc(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){q(c.message||c),b=!1}return b}function Vc(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:na()&&(b=oa(a.key))?(a[a.id]=b,a.a=!0):!1}function Wc(a,b){return a[a.id][b]||null}function J(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function Xc(a,b,c){r.call(this,"Computer",a,Xc);this.j.U=!1;Yc(this,b);this.A=wb(this,"autoPower",a);this.l=0;this.H=a.busWidth||a.buswidth;this.b=Zc;this.v=null;this.o=this.J=!1;this.I=wb(this,"url")||"";(Math.random()+.1).toString(36);this.c=$c(this);if(this.a=La("CPU",this.id)){this.N=La("Debugger",this.id);this.i=[];for(b=null;b=E(this,"Video",b);)this.i.push(b);this.m=new Va({id:this.kb+".bus",busWidth:this.H},this.a,this.N);var d,e=Ja(this.id);if((this.f=La("Panel",this.id))&&this.f.ma)for(b=
|
||||
0;b<e.length;b++)d=e[b],d.M=this.f.M,d.aa=this.f.aa,d.ma=this.f.ma;this.aa("PC8080 v1.23.3\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.la&&d.la(this,this.m,this.a,this.N);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.u=d:this.b=parseInt(d,10));var f;if(a=wb(this,"state")||(f=!0,a.state))b=this.C=a,f||(this.o=!0,this.b=Zc),this.b&&(this.w=new I(this,"1.23.3"),Vc(this.w)?b=null:delete this.w);
|
||||
!b&&this.b&&(b=ad(this))&&(this.o=!0);if(b){var h=this;p(b,null,!0,function(a,b,c){c?(h.u=null,h.o=!1,h.M("Unable to load machine state from server (error "+c+(b?": "+ga(b):"")+")")):(h.v=b,h.J=!0);D(h)})}else D(this);this.B.power||(this.A=!0);!c&&this.A&&bd(this,this.Ma)}else q("Unable to find CPU component")}y(Xc);var Zc=0;function Yc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){q(d.message+" ("+c+")")}}a.s=b}
|
||||
function wb(a,b,c){var d=b.toLowerCase(),d=Ba[b]||Ba[d];void 0===d&&a.s&&(d=a.s[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function bd(a,b,c){for(var d=Ja(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Qa(f)){Qa(f,function(){bd(a,b,c)});return}}b.call(a,c)}
|
||||
function cd(a,b){var c=new I(a,"1.23.3","validate");if(Vc(c)&&Uc(c)){var d=Wc(c,"timestamp"),e=b?Wc(b,"timestamp"):"unknown";d!=e&&(a.M("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=Xc.prototype;
|
||||
l.Ma=function(a){void 0===a&&(a=this.b||(this.v?1:Zc));if(!this.l){this.l++;var b=!1,c=!1;this.G=!1;var d=this.w||new I(this,"1.23.3");if(-1==a)b=!0;else if(a>Zc){if(Vc(d,this.v)){this.h=new I(this,"1.23.3","failsafe");Vc(this.h)&&(dd(this,d),a=2,Sc(this.h));J(this.h,"timestamp",ia());Tc(this.h);var e=this.b&&!this.o;if(1==a||ka("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=Uc(d)){var f=Wc(d,"code"),h=Wc(d,"data");f&&("ok"==f?Vc(d,h):("error"==f&&
|
||||
"no machine state"!=h?(this.M("Error: "+h),"unable to verify user"==h&&(pa("user",""),this.c=null)):this.aa(f+": "+h),Sc(d),Vc(d)?(c=Uc(d),e=!0):c=!1))}e&&cd(this,c?d:null)}else 2==a&&d.clear()}else cd(this);delete this.v;delete this.w}e=Ja(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.a&&(c=ed(this,h,d,b,c));b=[d,a,c];-1!=a?bd(this,this.Kb,b):this.Kb(b)}};
|
||||
function ed(a,b,c,d,e){if(!b.j.U){b.j.U=!0;if(b.ca){var f=null;e&&((f=Wc(c,b.id))||(f=Wc(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ca(f,d)&&f&&(q("Unable to restore state for "+b.type),a.C&&!a.J?(c.clear(),a.b=Zc,window&&window.location.reload()):a.G=!0,b.ca(null),e=!1)}if(!d&&b.wb)for(a=b.wb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
l.Kb=function(a){var b=a[0],c=0>a[1];a=a[2];this.K=!0;this.j.U=!0;var d=this.B.power;d&&(d.textContent="Shutdown");this.a&&(ed(this,this.a,b,c,a),Ab(this.a));this.G&&(dd(this,b),b.clear());!c&&this.h&&(this.h.clear(),delete this.h);this.l=0};
|
||||
function dd(a,b){if(ka("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.c||"",d=b.toString(),e={app:"PC8080",ver:"1.23.3"};e.url=a.I;e.user=c;e.type="bug";e.data=d;p("http://www.pcjs.org/api/v1/report",e,!0)}}
|
||||
function fd(a,b,c){var d,e="none";if(a.l)return null;a.l--;var f=new I(a,"1.23.3"),h=new I(a,"1.23.3","validate"),g=ia();J(h,"timestamp",g);J(f,"timestamp",g);J(f,"version","1.23.3");J(f,"url",window?window.location.href:null);J(f,"browser",window?window.navigator.userAgent:"");a.a&&a.a.ga&&(c&&Bb(a.a),d=a.a.ga(b,c),"object"===typeof d&&J(f,a.a.id,d),c&&(a.a.j.U=!1,!1===d&&(e=null)));for(var g=Ja(a.id),k=0;k<g.length;k++){var m=g[k];m.j.U&&(m.ga&&(d=m.ga(b,c),"object"===typeof d&&J(f,m.id,d)),c&&
|
||||
(m.j.U=!1,!1===d&&(e=null)))}e&&(c?(g=d=!1,b?(a.c&&gd(a,a.c,f.toString()),Tc(h)&&Tc(f)||(e=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&f.clear(g)):e=f.toString());c&&(a.j.U=!1,b=a.B.power)&&(b.textContent="Power");a.l=0;return e}l.reset=function(){this.m&&this.m.reset&&this.m.reset();for(var a=Ja(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.m&&c.reset&&c.reset()}};l.start=function(a,b){for(var c=Ja(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
|
||||
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||Ba.aspect);f&&.3<=f&&3.33>=f&&(ua("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");qa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new Ac(d,e,h,f,c);Ma(d,c)}});
|
||||
function Jc(a){this.H=+a.adapter;switch(this.H){case 0:this.I=0;this.O=2;break;default:q("Unrecognized serial adapter #"+this.H);return}this.c=this.f=null;this.J=a.tabSize;this.G=a.charBOL;this.h=0;r.call(this,"SerialPort",a,Jc);var b=a.binding;if("console"==b)this.f="";else{var c;a=Kc;b&&(void 0===c&&(c="Panel"),(c=La(c,this.id))&&(b=c.B[b])&&this.S(null,a,b))}this.s=this.A=null;this.exports={receiveByte:this.eb}}y(Jc);
|
||||
var Lc=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Mc=[!1,0,0,133,142,39,238],Kc="buffer";l=Jc.prototype;
|
||||
l.S=function(a,b,c,d){var e=this;switch(b){case Kc:return this.B[b]=this.c=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),e.eb(b);return!0},c.onkeypress=function(a){a=a||window.event;e.eb(a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.B[b]=c,d=d.replace(/\\n/g,"\n").replace(/\\r/g,"\r"),c.onclick=function(){e.o=d;Nc(e);e.l&&
|
||||
Eb(e.l);return!0},!0}return!1};l.la=function(a,b,c,d){this.l=a;this.m=b;this.a=c;this.N=d;var e=this;this.T=Fb(this.a,function(){Nc(e)});this.L=E(a,"ChipSet");bb(b,this,Oc,this.I);cb(b,this,Pc,this.I);Qc(this);D(this)};function Qc(a){var b=ub(a.l,"connection");if(b){var c=b.split("=");2==c.length&&(b=ga(c[0]),c=ga(c[1]),b==a.Qa&&(a.s=Ka(c),a.s&&(b=a.s.exports)))&&(a.A=b.receiveByte)}}l.ca=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};
|
||||
l.ga=function(a){return a?this.save():!0};l.reset=function(){Rc(this)};l.save=function(){var a=new I(this),b=0,c=[];c[b++]=this.fa;c[b++]=this.w;c[b++]=this.C;c[b++]=this.b;c[b++]=this.i;c[b++]=this.v;c[b]=this.u;J(a,0,c);return a.data()};l.restore=function(a){return Rc(this,a[0])};function Rc(a,b){var c=0;void 0===b&&(b=Mc);a.fa=b[c++];a.w=b[c++];a.C=b[c++];a.b=b[c++];a.i=b[c++];a.v=b[c++];a.u=b[c];return!0}l.eb=function(a){return this.b&2?!1:(this.w=a,this.b|=2,bc(this.a,this.O),!0)};
|
||||
function Nc(a){if(a.o&&(a.eb(a.o.charCodeAt(0))&&(a.o=a.o.substr(1)),a.o&&a.a)){var b;b=Lc[a.u&15];var c=((a.i&12)>>2)+6;a.i&16&&c++;c+=((a.i&192)>>6)+1>>1;b=1E3/Math.round(b/c);c=a.a;a=a.T;var d=-1;0<=a&&a<c.H.length&&(d=c.b.va*c.b.ua/1E3*b,c.H[a][0]=d)}}l.ob=function(){return!!(this.b&1)};l.Jc=function(){var a=this.w;this.b&=-3;return a};l.Ic=function(){return this.b};
|
||||
l.Yc=function(a,b){this.C=b;this.b&=-6;var c=!1;this.A&&this.A.call(this.s,b)&&(c=!0);if(this.c){if(13==b)this.h=0;else if(8==b)this.c.value=this.c.value.slice(0,-1),0<this.h&&this.h--;else{var c=String.fromCharCode(b),d=32<=b?1:0;9==b&&(d=this.J||8,d=d-this.h%d,this.J&&(c=" ".slice(0,d)));this.G&&!this.h&&d&&(c=String.fromCharCode(this.G)+c);this.c.value+=c;this.c.scrollTop=this.c.scrollHeight;this.h+=d}c=!0}else if(null!=this.f){if(10==b||1024<=this.f.length)this.ba(this.f),
|
||||
this.f="";10!=b&&(this.f+=String.fromCharCode(b));c=!0}c&&(this.b|=5)};l.Xc=function(a,b){this.fa?(this.v=b,this.v&64&&(this.fa=!1)):(this.i=b,this.fa=!0)};l.Wc=function(a,b){this.u=b};var Oc={0:Jc.prototype.Jc,1:Jc.prototype.Ic},Pc={0:Jc.prototype.Yc,1:Jc.prototype.Xc,2:Jc.prototype.Wc};va(function(){for(var a=A(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Jc(d);Ma(d,c)}});function I(a,b,c){this.id=a.id;this.key=Sc(a,b,c);this.N=a.N;Tc(this,a.Xb)}
|
||||
function Sc(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
I.prototype={constructor:I,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){Tc(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};
|
||||
function Tc(a,b){a[a.id]={};b&&J(a,"parms",b);a.a=!1}function Uc(a){var b=!0;if(na()){var c=JSON.stringify(a[a.id]);pa(a.key,c)||(q("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Vc(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){q(c.message||c),b=!1}return b}function Wc(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:na()&&(b=oa(a.key))?(a[a.id]=b,a.a=!0):!1}function Xc(a,b){return a[a.id][b]||null}function J(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function Yc(a,b,c){r.call(this,"Computer",a,Yc);this.j.U=!1;Zc(this,b);this.A=ub(this,"autoPower",a);this.l=0;this.L=a.busWidth||a.buswidth;this.b=$c;this.v=null;this.o=this.H=!1;this.I=ub(this,"url")||"";(Math.random()+.1).toString(36);this.c=ad(this);if(this.a=La("CPU",this.id)){this.N=La("Debugger",this.id);this.i=[];for(b=null;b=E(this,"Video",b);)this.i.push(b);this.m=new Ta({id:this.kb+".bus",busWidth:this.L},this.a,this.N);var d,e=Ja(this.id);if((this.f=La("Panel",this.id))&&this.f.na)for(b=
|
||||
0;b<e.length;b++)d=e[b],d.M=this.f.M,d.ba=this.f.ba,d.na=this.f.na;this.ba("PC8080 v1.23.3\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.la&&d.la(this,this.m,this.a,this.N);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.u=d:this.b=parseInt(d,10));var f;if(a=ub(this,"state")||(f=!0,a.state))b=this.C=a,f||(this.o=!0,this.b=$c),this.b&&(this.w=new I(this,"1.23.3"),Wc(this.w)?b=null:delete this.w);
|
||||
!b&&this.b&&(b=bd(this))&&(this.o=!0);if(b){var h=this;p(b,null,!0,function(a,b,c){c?(h.u=null,h.o=!1,h.M("Unable to load machine state from server (error "+c+(b?": "+ga(b):"")+")")):(h.v=b,h.H=!0);D(h)})}else D(this);this.B.power||(this.A=!0);!c&&this.A&&cd(this,this.Ma)}else q("Unable to find CPU component")}y(Yc);var $c=0;function Zc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){q(d.message+" ("+c+")")}}a.s=b}
|
||||
function ub(a,b,c){var d=b.toLowerCase(),d=Ba[b]||Ba[d];void 0===d&&a.s&&(d=a.s[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function cd(a,b,c){for(var d=Ja(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Oa(f)){Oa(f,function(){cd(a,b,c)});return}}b.call(a,c)}
|
||||
function dd(a,b){var c=new I(a,"1.23.3","validate");if(Wc(c)&&Vc(c)){var d=Xc(c,"timestamp"),e=b?Xc(b,"timestamp"):"unknown";d!=e&&(a.M("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=Yc.prototype;
|
||||
l.Ma=function(a){void 0===a&&(a=this.b||(this.v?1:$c));if(!this.l){this.l++;var b=!1,c=!1;this.G=!1;var d=this.w||new I(this,"1.23.3");if(-1==a)b=!0;else if(a>$c){if(Wc(d,this.v)){this.h=new I(this,"1.23.3","failsafe");Wc(this.h)&&(ed(this,d),a=2,Tc(this.h));J(this.h,"timestamp",ia());Uc(this.h);var e=this.b&&!this.o;if(1==a||ka("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=Vc(d)){var f=Xc(d,"code"),h=Xc(d,"data");f&&("ok"==f?Wc(d,h):("error"==f&&
|
||||
"no machine state"!=h?(this.M("Error: "+h),"unable to verify user"==h&&(pa("user",""),this.c=null)):this.ba(f+": "+h),Tc(d),Wc(d)?(c=Vc(d),e=!0):c=!1))}e&&dd(this,c?d:null)}else 2==a&&d.clear()}else dd(this);delete this.v;delete this.w}e=Ja(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.a&&(c=fd(this,h,d,b,c));b=[d,a,c];-1!=a?cd(this,this.Kb,b):this.Kb(b)}};
|
||||
function fd(a,b,c,d,e){if(!b.j.U){b.j.U=!0;if(b.ca){var f=null;e&&((f=Xc(c,b.id))||(f=Xc(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ca(f,d)&&f&&(q("Unable to restore state for "+b.type),a.C&&!a.H?(c.clear(),a.b=$c,window&&window.location.reload()):a.G=!0,b.ca(null),e=!1)}if(!d&&b.wb)for(a=b.wb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
l.Kb=function(a){var b=a[0],c=0>a[1];a=a[2];this.J=!0;this.j.U=!0;var d=this.B.power;d&&(d.textContent="Shutdown");this.a&&(fd(this,this.a,b,c,a),yb(this.a));this.G&&(ed(this,b),b.clear());!c&&this.h&&(this.h.clear(),delete this.h);this.l=0};
|
||||
function ed(a,b){if(ka("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.c||"",d=b.toString(),e={app:"PC8080",ver:"1.23.3"};e.url=a.I;e.user=c;e.type="bug";e.data=d;p("http://www.pcjs.org/api/v1/report",e,!0)}}
|
||||
function gd(a,b,c){var d,e="none";if(a.l)return null;a.l--;var f=new I(a,"1.23.3"),h=new I(a,"1.23.3","validate"),g=ia();J(h,"timestamp",g);J(f,"timestamp",g);J(f,"version","1.23.3");J(f,"url",window?window.location.href:null);J(f,"browser",window?window.navigator.userAgent:"");a.a&&a.a.ga&&(c&&zb(a.a),d=a.a.ga(b,c),"object"===typeof d&&J(f,a.a.id,d),c&&(a.a.j.U=!1,!1===d&&(e=null)));for(var g=Ja(a.id),k=0;k<g.length;k++){var m=g[k];m.j.U&&(m.ga&&(d=m.ga(b,c),"object"===typeof d&&J(f,m.id,d)),c&&
|
||||
(m.j.U=!1,!1===d&&(e=null)))}e&&(c?(g=d=!1,b?(a.c&&hd(a,a.c,f.toString()),Uc(h)&&Uc(f)||(e=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&f.clear(g)):e=f.toString());c&&(a.j.U=!1,b=a.B.power)&&(b.textContent="Power");a.l=0;return e}l.reset=function(){this.m&&this.m.reset&&this.m.reset();for(var a=Ja(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.m&&c.reset&&c.reset()}};l.start=function(a,b){for(var c=Ja(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
|
||||
l.stop=function(a,b){for(var c=Ja(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||
l.R=function(a,b,c){var d=this;switch(b){case "power":return this.B[b]=c,c.onclick=function(){d.l||(d.j.U?fd(d,!1,!0):bd(d,d.Ma))},!0;case "reset":return this.B[b]=c,c.onclick=function(){if(d.j.U&&!d.l)if(d.b&&!d.u){var a=ka("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");fd(d,a,!0);!a&&d.C?window&&window.location.reload():d.Ma(Zc)}else d.reset(),d.a&&Ab(d.a)},!0;case "save":if(da(ja(),"pcjs.org")){c.parentNode.removeChild(c);break}this.B[b]=
|
||||
c;c.onclick=function(){var a=$c(d,!0);if(a){var b=!!(d.b&&!d.u||d.C),c=fd(d,b);b?gd(d,a,c):d.M("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function $c(a,b){var c=a.c;c||(c=oa("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=hd(a,c))||a.M("The user ID is invalid."))):b&&a.M("Browser local storage is not available"));return c}
|
||||
function hd(a,b){a.c=null;var c=p(ja()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(pa("user",c.data),a.c=c.data)}catch(e){q(e.message+" ("+d+")")}return a.c}function ad(a){var b=null;a.c&&(b=ja()+"/api/v1/user?req=load&user="+a.c+"&state="+Rc(a,"1.23.3"));return b}
|
||||
function gd(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Rc(a,"1.23.3");d.data=c;b=p(ja()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.M("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.M(c),pa("user",""),a.c=null)}}
|
||||
function E(a,b,c){a=Ja(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}function Gb(a,b){if(a.i.length){var c=0,d=0;b&&window&&(c=window.scrollX,d=window.scrollY);var e=a.i[0];e.$&&e.$.focus();b&&window&&window.scrollTo(c,d)}}l.ta=function(a){this.a&&this.a.ta(a);this.f&&this.f.ta(a)};function Hb(a,b){for(var c=0;c<a.i.length;c++)jc(a.i[c],b)}
|
||||
va(function(){for(var a=A(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=z(c),c=A(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=z(f),h=new Xc(h,d,!0);Oa(h,f);h.A&&bd(h,h.Ma)}});ra.show.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=La("Computer",c.id))&&c.K&&!c.j.U&&c.Ma(-1)}});
|
||||
ra.exit.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=La("Computer",c.id))&&c.j.U&&fd(c,!(!c.b||c.u),!0)}});var id=0;function jd(a,b,c,d,e,f){e("Loading "+a+"...");p(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):kd(g,a,b,c,d,e,f)})}
|
||||
function kd(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){Ia(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
|
||||
g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){g=null,a=u.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?ld(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function ld(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");p(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],m,v=/( [a-z]+=)(['"])(.*?)\2/g;m=v.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);ld(a,b,c)}})}else c(a,null)}
|
||||
function md(a,b,c,d){function e(a){if(void 0===g){var b=h&&A(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=fa(a))}function f(a){e("Error: "+a);k&&(--id||ya(!0));k=!1}var h,g,k=!0;id++;Ha[a]={};try{if(h=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var v=document.head||document.getElementsByTagName("head")[0],u=document.createElement("style");u.type="text/css";u.styleSheet?u.styleSheet.cssText=m:u.appendChild(document.createTextNode(m));v.appendChild(u)}c||
|
||||
(c="/versions/pc8080/1.23.3/components.xsl");m=function(d,g){g?jd(c,null,null,!1,e,function(d,k){if(k)if(Ia(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=g.transformNode(k);m?(h.outerHTML=m,--id||ya(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(k),(m=m.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(m,h),--id||ya(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?jd(b,a,d,!0,e,m):kd(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(x){f(x.message)}return k}window.embedPC8080=function(a,b,c,d){ya(!1);return md(a,b,c,d)};window.enableEvents=ya;window.sendEvent=za;
|
||||
function nd(a,b,c,d){if(!c&&b){d.push(b);a=Ha[d[0]];b=null;for(var e in a)if(da(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?p(b,null,!0,function(a,b){od(b,d)}):od(null,d)}else q("Error ("+c+") requesting "+a)}
|
||||
function od(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Ha[f],k={},m;for(m in g){var v=g[m],u=ca(m);if("xml"==u){for(u=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=u.exec(g[m]);){var x=d[2];x&&(g[x]||(v=v.replace(d[0],"")))}d=m=ba(m)}else"xsl"==u&&(e=m=ba(m));k[m]=v}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(m=JSON.stringify(k),h+=".js",c=c[1]+"var resources="+m+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
|
||||
l.S=function(a,b,c){var d=this;switch(b){case "power":return this.B[b]=c,c.onclick=function(){d.l||(d.j.U?gd(d,!1,!0):cd(d,d.Ma))},!0;case "reset":return this.B[b]=c,c.onclick=function(){if(d.j.U&&!d.l)if(d.b&&!d.u){var a=ka("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");gd(d,a,!0);!a&&d.C?window&&window.location.reload():d.Ma($c)}else d.reset(),d.a&&yb(d.a)},!0;case "save":if(da(ja(),"pcjs.org")){c.parentNode.removeChild(c);break}this.B[b]=
|
||||
c;c.onclick=function(){var a=ad(d,!0);if(a){var b=!!(d.b&&!d.u||d.C),c=gd(d,b);b?hd(d,a,c):d.M("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function ad(a,b){var c=a.c;c||(c=oa("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=id(a,c))||a.M("The user ID is invalid."))):b&&a.M("Browser local storage is not available"));return c}
|
||||
function id(a,b){a.c=null;var c=p(ja()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(pa("user",c.data),a.c=c.data)}catch(e){q(e.message+" ("+d+")")}return a.c}function bd(a){var b=null;a.c&&(b=ja()+"/api/v1/user?req=load&user="+a.c+"&state="+Sc(a,"1.23.3"));return b}
|
||||
function hd(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Sc(a,"1.23.3");d.data=c;b=p(ja()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.M("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.M(c),pa("user",""),a.c=null)}}
|
||||
function E(a,b,c){a=Ja(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}function Eb(a,b){if(a.i.length){var c=0,d=0;b&&window&&(c=window.scrollX,d=window.scrollY);var e=a.i[0];e.$&&e.$.focus();b&&window&&window.scrollTo(c,d)}}l.wa=function(a){this.a&&this.a.wa(a);this.f&&this.f.wa(a)};function Gb(a,b){for(var c=0;c<a.i.length;c++)ic(a.i[c],b)}
|
||||
va(function(){for(var a=A(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=z(c),c=A(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=z(f),h=new Yc(h,d,!0);Ma(h,f);h.A&&cd(h,h.Ma)}});ra.show.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=La("Computer",c.id))&&c.J&&!c.j.U&&c.Ma(-1)}});
|
||||
ra.exit.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=La("Computer",c.id))&&c.j.U&&gd(c,!(!c.b||c.u),!0)}});var jd=0;function kd(a,b,c,d,e,f){e("Loading "+a+"...");p(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):ld(g,a,b,c,d,e,f)})}
|
||||
function ld(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){Ia(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
|
||||
g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){g=null,a=u.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?md(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function md(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");p(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],m,v=/( [a-z]+=)(['"])(.*?)\2/g;m=v.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);md(a,b,c)}})}else c(a,null)}
|
||||
function nd(a,b,c,d){function e(a){if(void 0===g){var b=h&&A(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=fa(a))}function f(a){e("Error: "+a);k&&(--jd||ya(!0));k=!1}var h,g,k=!0;jd++;Ha[a]={};try{if(h=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var v=document.head||document.getElementsByTagName("head")[0],u=document.createElement("style");u.type="text/css";u.styleSheet?u.styleSheet.cssText=m:u.appendChild(document.createTextNode(m));v.appendChild(u)}c||
|
||||
(c="/versions/pc8080/1.23.3/components.xsl");m=function(d,g){g?kd(c,null,null,!1,e,function(d,k){if(k)if(Ia(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=g.transformNode(k);m?(h.outerHTML=m,--jd||ya(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(k),(m=m.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(m,h),--jd||ya(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?kd(b,a,d,!0,e,m):ld(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(x){f(x.message)}return k}window.embedPC8080=function(a,b,c,d){ya(!1);return nd(a,b,c,d)};window.enableEvents=ya;window.sendEvent=za;
|
||||
function od(a,b,c,d){if(!c&&b){d.push(b);a=Ha[d[0]];b=null;for(var e in a)if(da(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?p(b,null,!0,function(a,b){pd(b,d)}):pd(null,d)}else q("Error ("+c+") requesting "+a)}
|
||||
function pd(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Ha[f],k={},m;for(m in g){var v=g[m],u=ca(m);if("xml"==u){for(u=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=u.exec(g[m]);){var x=d[2];x&&(g[x]||(v=v.replace(d[0],"")))}d=m=ba(m)}else"xsl"==u&&(e=m=ba(m));k[m]=v}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(m=JSON.stringify(k),h+=".js",c=c[1]+"var resources="+m+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
|
||||
"©"),m=h,g=null,k="data:application/javascript,",k=qa("Firefox")?k+encodeURIComponent(c):k+encodeURI(c),m&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=k,g.download=m,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+m+"."):(window.open(k),c="Check your browser for a new window/tab containing the requested data"+(m?" ("+m+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n',
|
||||
c+='<div id="'+f+'"></div>\n',c+="...\n",c+='<script type="text/javascript" src="'+h+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",q(c)):q("Missing XML/XSL resources")}
|
||||
window.savePC=function(a,b,c){var d=La("Computer",a),e=La("Debugger",a);if(d){var f=fd(d,!0),h=d.s?JSON.stringify(d.s):null;b||(b="/versions/pcjs/1.23.3/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Xb:h}))return!0;p(b,null,!0,function(c,d,e){nd(c,d,e,[a,ba(b,!0),h,f])});return!0}q("Unable to identify machine '"+a+"'");return!1};})();
|
||||
window.savePC=function(a,b,c){var d=La("Computer",a),e=La("Debugger",a);if(d){var f=gd(d,!0),h=d.s?JSON.stringify(d.s):null;b||(b="/versions/pcjs/1.23.3/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Xb:h}))return!0;p(b,null,!0,function(c,d,e){od(c,d,e,[a,ba(b,!0),h,f])});return!0}q("Unable to identify machine '"+a+"'");return!1};})();
|
||||
|
|
|
|||
Loading…
Reference in a new issue