First batch of pdp11.js code adapted but totally untested
This commit is contained in:
parent
475b08fa91
commit
100779e30a
22 changed files with 2697 additions and 1273 deletions
|
|
@ -708,7 +708,7 @@ function fr(a,b){var c=0,d=gr(a,b);if(void 0!==d)switch(b){case 0:case 1:case 2:
|
|||
function gr(a,b){var c;if(0<=b){var d=a.F;switch(b){case 0:c=d.G&255;break;case 1:c=d.I&255;break;case 2:c=d.M&255;break;case 3:c=d.H&255;break;case 4:c=d.G>>8&255;break;case 5:c=d.I>>8&255;break;case 6:c=d.M>>8&255;break;case 7:c=d.H>>8&255;break;case 8:c=d.G&65535;break;case 9:c=d.I&65535;break;case 10:c=d.M&65535;break;case 11:c=d.H&65535;break;case 12:c=I(d)&65535;break;case 13:c=d.P&65535;break;case 14:c=d.K&65535;break;case 15:c=d.J&65535;break;case 22:c=K(d)&65535;break;case 23:c=zd(d);break;
|
||||
case 16:c=d.Xa.Z;break;case 17:c=d.va.Z;break;case 18:c=d.ta.Z;break;case 19:c=d.vb.Z;break;default:if(80286==a.F.ja)32==b&&(c=d.Za);else if(80386<=a.F.ja)switch(b){case 24:c=d.G;break;case 25:c=d.I;break;case 26:c=d.M;break;case 27:c=d.H;break;case 28:c=I(d);break;case 29:c=d.P;break;case 30:c=d.K;break;case 31:c=d.J;break;case 32:c=d.Za;break;case 33:c=d.li;break;case 34:c=d.ue;break;case 35:c=d.Qd;break;case 20:c=d.Nb.Z;break;case 21:c=d.Ob.Z;break;case 56:c=K(d)}}}return c}
|
||||
function hr(a,b){b=$q(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=er(b,c+1),0<=e&&(b=b.substr(0,c)+fr(a,e)+b.substr(c+1+vq[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=Zq(a,e))?(d=e+' "'+Jq(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=Zq(a,e))?(Uq(a,d),d=e+
|
||||
' "'+Jq(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m=iq.prototype;m.message=function(a,b){b&&(a+=" at "+Sq(jq(this,K(this.F),this.F.va.Z))+" (%"+r(this.F.Ha)+")");if(!this.Pa||a!=this.Pa)if(this.Pa=a,this.wc&-2147483648&&(this.Wb(),a+=" (cpu halted)"),this.O(a),this.F){var c=this.F;c.Y.nf=0;c.fb-=c.A;c.A=0;Wc(c)}};
|
||||
' "'+Jq(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m=iq.prototype;m.message=function(a,b){b&&(a+=" at "+Sq(jq(this,K(this.F),this.F.va.Z))+" (%"+r(this.F.Ha)+")");if(!this.Pa||a!=this.Pa)if(this.Pa=a,this.wc&-2147483648&&(this.Wb(),a+=" (cpu halted)"),this.O(a),this.F){var c=this.F;c.fb-=c.A;c.A=0;c.Y.nf=0;Wc(c)}};
|
||||
function nk(a,b,c,d){var e,f;if(!d&&(d=A(a,1)&&0>pq.indexOf(b),!d)){var g=oq[b];g&&(d=A(a,g)?!0:524288==g&&A(a,g=1048576))}d&&(e=a.F.G>>8&255,f=a.F.M&255,33==b&&11==e||524288==g&&128<=f||1048576==g&&128>f)&&(d=!1);d&&((g=(g=Ab[b])&&g[e]||"")&&(g=" "+hr(a,g)),a.message("INT "+t(b)+": AH="+t(e)+" at "+Iq(c-2-a.F.va.Aa,a.F.va.Z)+g));return d}
|
||||
function qb(a,b,c,d,e,f,g,h){h|=256;if(null==e||(a.wc&h)==h)h=null,null!=e&&(h=a.F.va.Z,e-=a.F.va.Aa),a.message(b.zd+"."+(null!=d?"outPort":"inPort")+"("+u(c)+","+(f?f:"unknown")+(null!=d?","+t(d):"")+")"+(null!=g?": "+t(g):"")+(null!=e?" at "+Iq(e,h):""))}m.jh=function(){this.O("Type ? for help with PCx86 Debugger commands");this.qd();if(this.gb){var a=this.gb;this.gb=null;nq(this,a)}};
|
||||
function lq(a,b){var c;if(Wf(a)){if(!a.ia||!a.ia.length){a.ia=Array(1E3);for(c=0;c<a.ia.length;c++)a.ia[c]=jq(a);a.Fa=0;b||a.O("instruction history buffer allocated")}if(!a.W||!a.W.length)for(a.W=Array(256),c=0;c<a.W.length;c++)a.W[c]=[c,0]}else a.ia&&a.ia.length&&!b&&a.O("instruction history buffer freed"),a.Fa=0,a.ia=[],a.W=[]}m.Le=function(a){if(!ir(this))return!1;this.F.Le(a);return!0};
|
||||
|
|
|
|||
|
|
@ -1035,6 +1035,17 @@ CPU8080.prototype.updateTimers = function(nCycles)
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* endBurst()
|
||||
*
|
||||
* @this {CPU8080}
|
||||
*/
|
||||
CPU8080.prototype.endBurst = function()
|
||||
{
|
||||
this.nBurstCycles -= this.nStepCycles;
|
||||
this.nStepCycles = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* runCPU(fUpdateFocus)
|
||||
*
|
||||
|
|
@ -1170,8 +1181,7 @@ CPU8080.prototype.stepCPU = function(nMinCycles)
|
|||
CPU8080.prototype.stopCPU = function(fComplete)
|
||||
{
|
||||
this.isBusy(true);
|
||||
this.nBurstCycles -= this.nStepCycles;
|
||||
this.nStepCycles = 0;
|
||||
this.endBurst();
|
||||
this.addCycles(this.nRunCycles);
|
||||
this.nRunCycles = 0;
|
||||
if (this.flags.fRunning) {
|
||||
|
|
@ -1212,9 +1222,8 @@ CPU8080.prototype.updateCPU = function(fForce)
|
|||
*/
|
||||
CPU8080.prototype.yieldCPU = function()
|
||||
{
|
||||
this.endBurst(); // this will break us out of stepCPU()
|
||||
this.nCyclesNextYield = 0; // this will break us out of runCPU(), once we break out of stepCPU()
|
||||
this.nBurstCycles -= this.nStepCycles;
|
||||
this.nStepCycles = 0; // this will break us out of stepCPU()
|
||||
// if (DEBUG) this.nSnapCycles = this.nBurstCycles;
|
||||
/*
|
||||
* The Debugger calls yieldCPU() after every message() to ensure browser responsiveness, but it looks
|
||||
|
|
|
|||
|
|
@ -961,8 +961,7 @@ CPUState8080.prototype.checkINTR = function()
|
|||
* current burst AND that it should not execute any more instructions until checkINTR() indicates
|
||||
* that a hardware interrupt has been requested.
|
||||
*/
|
||||
this.nBurstCycles -= this.nStepCycles;
|
||||
this.nStepCycles = 0;
|
||||
this.endBurst();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
|
@ -994,8 +993,7 @@ CPUState8080.prototype.clearINTR = function(nLevel)
|
|||
CPUState8080.prototype.requestHALT = function()
|
||||
{
|
||||
this.intFlags |= CPUDef8080.INTFLAG.HALT;
|
||||
this.nBurstCycles -= this.nStepCycles;
|
||||
this.nStepCycles = 0;
|
||||
this.endBurst();
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1015,8 +1013,7 @@ CPUState8080.prototype.requestINTR = function(nLevel)
|
|||
{
|
||||
this.intFlags |= (1 << nLevel);
|
||||
if (this.getIF()) {
|
||||
this.nBurstCycles -= this.nStepCycles;
|
||||
this.nStepCycles = 0;
|
||||
this.endBurst();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -1088,9 +1085,6 @@ CPUState8080.prototype.updateStatus = function(fForce)
|
|||
* they're all one continuous stream of instructions that can be stepped or run at will. Moreover,
|
||||
* stepping vs. running should never change the behavior of the simulation.
|
||||
*
|
||||
* As a result, the Debugger's complete independence means you can run other 8086/8088 debuggers
|
||||
* (eg, DEBUG) inside the simulation without interference; you can even "debug" them with the Debugger.
|
||||
*
|
||||
* @this {CPUState8080}
|
||||
* @param {number} nMinCycles (0 implies a single-step, and therefore breakpoints should be ignored)
|
||||
* @return {number} of cycles executed; 0 indicates a pre-execution condition (ie, an execution breakpoint
|
||||
|
|
|
|||
|
|
@ -939,6 +939,17 @@ CPU.prototype.calcRemainingTime = function()
|
|||
return msRemainsThisRun;
|
||||
};
|
||||
|
||||
/**
|
||||
* endBurst()
|
||||
*
|
||||
* @this {CPU}
|
||||
*/
|
||||
CPU.prototype.endBurst = function()
|
||||
{
|
||||
this.nBurstCycles -= this.nStepCycles;
|
||||
this.nStepCycles = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* runCPU(fUpdateFocus)
|
||||
*
|
||||
|
|
@ -1089,8 +1100,7 @@ CPU.prototype.stepCPU = function(nMinCycles)
|
|||
CPU.prototype.stopCPU = function(fComplete)
|
||||
{
|
||||
this.isBusy(true);
|
||||
this.nBurstCycles -= this.nStepCycles;
|
||||
this.nStepCycles = 0;
|
||||
this.endBurst();
|
||||
this.addCycles(this.nRunCycles);
|
||||
this.nRunCycles = 0;
|
||||
if (this.flags.fRunning) {
|
||||
|
|
@ -1131,9 +1141,8 @@ CPU.prototype.updateCPU = function(fForce)
|
|||
*/
|
||||
CPU.prototype.yieldCPU = function()
|
||||
{
|
||||
this.endBurst(); // this will break us out of stepCPU()
|
||||
this.aCounts.nCyclesNextYield = 0; // this will break us out of runCPU(), once we break out of stepCPU()
|
||||
this.nBurstCycles -= this.nStepCycles;
|
||||
this.nStepCycles = 0; // this will break us out of stepCPU()
|
||||
// if (DEBUG) this.nSnapCycles = this.nBurstCycles;
|
||||
/*
|
||||
* The Debugger calls yieldCPU() after every message() to ensure browser responsiveness, but it looks
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ PDP11 is currently comprised of the following non-shared components, as listed i
|
|||
[package.json](../../package.json) (see the *pdp11Files* property):
|
||||
|
||||
* [defines.js](/modules/pdp11/lib/defines.js)
|
||||
* [cpudef.js](/modules/pdp11/lib/cpudef.js)
|
||||
* [messages.js](/modules/pdp11/lib/messages.js)
|
||||
* [panel.js](/modules/pdp11/lib/panel.js)
|
||||
* [bus.js](/modules/pdp11/lib/bus.js)
|
||||
|
|
|
|||
64
modules/pdp11/bin/oct2hex.js
Normal file
64
modules/pdp11/bin/oct2hex.js
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
/**
|
||||
* @fileoverview Converts octal constants to hex.
|
||||
* @author <a href="mailto:Jeff@pcjs.org">Jeff Parsons</a>
|
||||
* @version 1.0
|
||||
* Created 2016-Sep-04
|
||||
*
|
||||
* Copyright © 2012-2016 Jeff Parsons <Jeff@pcjs.org>
|
||||
*
|
||||
* This file is part of PCjs, a computer emulation software project at <http://pcjs.org/>.
|
||||
*
|
||||
* PCjs is free software: you can redistribute it and/or modify it under the terms of the
|
||||
* GNU General Public License as published by the Free Software Foundation, either version 3
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* PCjs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
|
||||
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with PCjs. If not,
|
||||
* see <http://www.gnu.org/licenses/gpl.html>.
|
||||
*
|
||||
* You are required to include the above copyright notice in every source code file of every
|
||||
* copy or modified version of this work, and to display that copyright notice on every screen
|
||||
* that loads or runs any version of this software (see COPYRIGHT in /modules/shared/lib/defines.js).
|
||||
*
|
||||
* Some PCjs files also attempt to load external resource files, such as character-image files,
|
||||
* ROM files, and disk image files. Those external resource files are not considered part of PCjs
|
||||
* for purposes of the GNU General Public License, and the author does not claim any copyright
|
||||
* as to their contents.
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
var fs = require("fs");
|
||||
|
||||
try {
|
||||
var sText = fs.readFileSync(process.argv[2], "utf-8");
|
||||
var asLines = sText.split('\n');
|
||||
for (var iLine = 0; iLine < asLines.length; iLine++) {
|
||||
var sLine = asLines[iLine];
|
||||
var match, re = /([^0-9a-z_-])(0[0-7]+)([^0-9a-z_])/gi;
|
||||
var iComment = sLine.indexOf("//");
|
||||
while (match = re.exec(sLine)) {
|
||||
if (iComment >= 0 && match.index > iComment) break;
|
||||
var n = parseInt(match[2], 8);
|
||||
if (n < 0) {
|
||||
console.log("found negative octal value (" + match[2] + "), skipping");
|
||||
continue;
|
||||
}
|
||||
var sReplace = match[1] + "0x" + n.toString(16).toUpperCase() + match[3] + " /*" + match[2] + "*/";
|
||||
sLine = sLine.substr(0, match.index) + sReplace + sLine.substr(match.index + match[0].length);
|
||||
re.lastIndex = match.index + sReplace.length;
|
||||
asLines[iLine] = sLine;
|
||||
}
|
||||
}
|
||||
sText = "";
|
||||
for (var iLine = 0; iLine < asLines.length; iLine++) {
|
||||
if (sText) sText += '\n';
|
||||
sText += asLines[iLine];
|
||||
}
|
||||
console.log(sText);
|
||||
} catch (err) {
|
||||
console.log("error: " + err.message);
|
||||
}
|
||||
|
|
@ -739,6 +739,40 @@ BusPDP11.prototype.restoreMemory = function(a)
|
|||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* reset_iopage()
|
||||
*
|
||||
* TODO: Implement
|
||||
*
|
||||
* @this {BusPDP11}
|
||||
*/
|
||||
BusPDP11.prototype.reset_iopage = function()
|
||||
{
|
||||
// display.misc = (display.misc & ~0x77) | 0x14; // kernel 16 bit
|
||||
// tty.rcsr = 0;
|
||||
// tty.xcsr = 0x80; /*0200*/
|
||||
// kw11.csr = 0;
|
||||
// rk11.rkcs = 0x80; /*0200*/
|
||||
// rl11.csr = 0x80;
|
||||
// rp11_init();
|
||||
};
|
||||
|
||||
/**
|
||||
* access_iopage(physicalAddress, data, byteFlag)
|
||||
*
|
||||
* TODO: Implement
|
||||
*
|
||||
* @this {BusPDP11}
|
||||
* @param {number} physicalAddress
|
||||
* @param {number} data
|
||||
* @param {number} byteFlag
|
||||
* @return {number}
|
||||
*/
|
||||
BusPDP11.prototype.access_iopage = function(physicalAddress, data, byteFlag)
|
||||
{
|
||||
return -1;
|
||||
};
|
||||
|
||||
/**
|
||||
* reportError(op, addr, size, fQuiet)
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1037,6 +1037,17 @@ CPUPDP11.prototype.updateTimers = function(nCycles)
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* endBurst()
|
||||
*
|
||||
* @this {CPUPDP11}
|
||||
*/
|
||||
CPUPDP11.prototype.endBurst = function()
|
||||
{
|
||||
this.nBurstCycles -= this.nStepCycles;
|
||||
this.nStepCycles = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* runCPU(fUpdateFocus)
|
||||
*
|
||||
|
|
@ -1172,8 +1183,7 @@ CPUPDP11.prototype.stepCPU = function(nMinCycles)
|
|||
CPUPDP11.prototype.stopCPU = function(fComplete)
|
||||
{
|
||||
this.isBusy(true);
|
||||
this.nBurstCycles -= this.nStepCycles;
|
||||
this.nStepCycles = 0;
|
||||
this.endBurst();
|
||||
this.addCycles(this.nRunCycles);
|
||||
this.nRunCycles = 0;
|
||||
if (this.flags.fRunning) {
|
||||
|
|
@ -1213,9 +1223,8 @@ CPUPDP11.prototype.updateCPU = function(fForce)
|
|||
*/
|
||||
CPUPDP11.prototype.yieldCPU = function()
|
||||
{
|
||||
this.endBurst(); // this will break us out of stepCPU()
|
||||
this.nCyclesNextYield = 0; // this will break us out of runCPU(), once we break out of stepCPU()
|
||||
this.nBurstCycles -= this.nStepCycles;
|
||||
this.nStepCycles = 0; // this will break us out of stepCPU()
|
||||
// if (DEBUG) this.nSnapCycles = this.nBurstCycles;
|
||||
/*
|
||||
* The Debugger calls yieldCPU() after every message() to ensure browser responsiveness, but it looks
|
||||
|
|
|
|||
|
|
@ -1,115 +0,0 @@
|
|||
/**
|
||||
* @fileoverview Defines PDP11 CPU constants.
|
||||
* @author <a href="mailto:Jeff@pcjs.org">Jeff Parsons</a>
|
||||
* @version 1.0
|
||||
* Created 2016-Sep-03
|
||||
*
|
||||
* This file is part of PCjs, a computer emulation software project at <http://pcjs.org/>.
|
||||
*
|
||||
* It has been adapted from the JavaScript PDP 11/70 Emulator v1.3 written by Paul Nankervis
|
||||
* (paulnank@hotmail.com) as of August 2016 from http://skn.noip.me/pdp11/pdp11.html. This code
|
||||
* may be used freely provided the original author name is acknowledged in any modified source code.
|
||||
*
|
||||
* PCjs is free software: you can redistribute it and/or modify it under the terms of the
|
||||
* GNU General Public License as published by the Free Software Foundation, either version 3
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* PCjs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
|
||||
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with PCjs. If not,
|
||||
* see <http://www.gnu.org/licenses/gpl.html>.
|
||||
*
|
||||
* You are required to include the above copyright notice in every source code file of every
|
||||
* copy or modified version of this work, and to display that copyright notice on every screen
|
||||
* that loads or runs any version of this software (see COPYRIGHT in /modules/shared/lib/defines.js).
|
||||
*
|
||||
* Some PCjs files also attempt to load external resource files, such as character-image files,
|
||||
* ROM files, and disk image files. Those external resource files are not considered part of PCjs
|
||||
* for purposes of the GNU General Public License, and the author does not claim any copyright
|
||||
* as to their contents.
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
var CPUDefPDP11 = {
|
||||
/*
|
||||
* CPU model numbers (supported)
|
||||
*/
|
||||
MODEL_1145: 1145,
|
||||
MODEL_1170: 1170,
|
||||
|
||||
/*
|
||||
* This constant is used to mark points in the code where the physical address being returned
|
||||
* is invalid and should not be used.
|
||||
*
|
||||
* In a 32-bit CPU, -1 (ie, 0xffffffff) could actually be a valid address, so consider changing
|
||||
* ADDR_INVALID to NaN or null (which is also why all ADDR_INVALID tests should use strict equality
|
||||
* operators).
|
||||
*
|
||||
* The main reason I'm NOT using NaN or null now is my concern that, by mixing non-numbers
|
||||
* (specifically, values outside the range of signed 32-bit integers), performance may suffer.
|
||||
*
|
||||
* WARNING: Like many of the properties defined here, ADDR_INVALID is a common constant, which the
|
||||
* Closure Compiler will happily inline (with or without @const annotations; in fact, I've yet to
|
||||
* see a @const annotation EVER improve automatic inlining). However, if you don't make ABSOLUTELY
|
||||
* certain that this file is included BEFORE the first reference to any of these properties, that
|
||||
* automatic inlining will no longer occur.
|
||||
*/
|
||||
ADDR_INVALID: -1,
|
||||
|
||||
/*
|
||||
* Processor Status flag definitions (stored in regPS)
|
||||
*/
|
||||
PS: {
|
||||
CF: 0x0001, // bit 0: Carry Flag
|
||||
BIT1: 0x0002, // bit 1: reserved, always set
|
||||
PF: 0x0004, // bit 2: Parity Flag
|
||||
BIT3: 0x0008, // bit 3: reserved, always clear
|
||||
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
|
||||
ALL: 0x00D5, // all "arithmetic" flags (CF, PF, AF, ZF, SF)
|
||||
MASK: 0x00FF, //
|
||||
IF: 0x0200 // bit 9: Interrupt Flag (set if interrupts enabled; Intel calls this the INTE bit)
|
||||
},
|
||||
/*
|
||||
* Interrupt-related flags (stored in intFlags)
|
||||
*/
|
||||
INTFLAG: {
|
||||
NONE: 0x0000,
|
||||
INTR: 0x00ff, // mask for 8 bits, representing interrupt levels 0-7
|
||||
HALT: 0x0100 // halt requested; see opHLT()
|
||||
},
|
||||
/*
|
||||
* Opcode definitions
|
||||
*/
|
||||
OPCODE: {
|
||||
HLT: 0x76, // Halt
|
||||
ACI: 0xCE, // Add with Carry Immediate (affects PS.ALL)
|
||||
CALL: 0xCD, // Call
|
||||
RST0: 0xC7
|
||||
// to be continued....
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
* These are the internal PS bits (outside of PS.MASK) that getPS() and setPS() can get and set,
|
||||
* but which cannot be seen with any of the documented instructions.
|
||||
*/
|
||||
CPUDefPDP11.PS.INTERNAL = (CPUDefPDP11.PS.IF);
|
||||
|
||||
/*
|
||||
* PS "arithmetic" flags are NOT stored in regPS; they are maintained across separate result registers,
|
||||
* hence the RESULT designation.
|
||||
*/
|
||||
CPUDefPDP11.PS.RESULT = (CPUDefPDP11.PS.CF | CPUDefPDP11.PS.PF | CPUDefPDP11.PS.AF | CPUDefPDP11.PS.ZF | CPUDefPDP11.PS.SF);
|
||||
|
||||
/*
|
||||
* These are the "always set" PS bits for the PDP11.
|
||||
*/
|
||||
CPUDefPDP11.PS.SET = (CPUDefPDP11.PS.BIT1);
|
||||
|
||||
if (NODE) module.exports = CPUDefPDP11;
|
||||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
if (NODE) {
|
||||
var str = require("../../shared/lib/strlib");
|
||||
var CPUDefPDP11 = require("./CPUDef");
|
||||
var PDP11 = require("./defines");
|
||||
var MessagesPDP11 = require("./messages");
|
||||
}
|
||||
|
||||
|
|
@ -44,7 +44,7 @@ if (NODE) {
|
|||
*
|
||||
* @this {CPUStatePDP11}
|
||||
*/
|
||||
CPUDefPDP11.opNOP = function()
|
||||
PDP11.opNOP = function()
|
||||
{
|
||||
this.nStepCycles -= 4;
|
||||
};
|
||||
|
|
@ -56,69 +56,69 @@ CPUDefPDP11.opNOP = function()
|
|||
* but I suspect that would vary quite a bit across JavaScript engines; for now, I'm putting my
|
||||
* money on array lookup.
|
||||
*/
|
||||
CPUDefPDP11.aOpsPDP1170 = [
|
||||
/* 0x00-0x03 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x04-0x07 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x08-0x0B */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x0C-0x0F */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x10-0x13 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x14-0x17 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x18-0x1B */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x1C-0x1F */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x20-0x23 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x24-0x27 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x28-0x2B */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x2C-0x2F */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x30-0x33 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x34-0x37 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x38-0x3B */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x3C-0x3F */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x40-0x43 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x44-0x47 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x48-0x4B */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x4C-0x4F */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x50-0x53 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x54-0x57 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x58-0x5B */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x5C-0x5F */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x60-0x63 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x64-0x67 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x68-0x6B */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x6C-0x6F */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x70-0x73 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x74-0x77 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x78-0x7B */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x7C-0x7F */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x80-0x83 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x84-0x87 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x88-0x8B */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x8C-0x8F */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x90-0x93 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x94-0x97 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x98-0x9B */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0x9C-0x9F */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xA0-0xA3 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xA4-0xA7 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xA8-0xAB */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xAC-0xAF */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xB0-0xB3 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xB4-0xB7 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xB8-0xBB */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xBC-0xBF */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xC0-0xC3 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xC4-0xC7 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xC8-0xCB */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xCC-0xCF */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xD0-0xD3 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xD4-0xD7 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xD8-0xDB */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xDC-0xDF */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xE0-0xE3 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xE4-0xE7 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xE8-0xEB */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xEC-0xEF */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xF0-0xF3 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xF4-0xF7 */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xF8-0xFB */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP,
|
||||
/* 0xFC-0xFF */ CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP, CPUDefPDP11.opNOP
|
||||
PDP11.aOpsPDP1170 = [
|
||||
/* 0x00-0x03 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x04-0x07 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x08-0x0B */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x0C-0x0F */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x10-0x13 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x14-0x17 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x18-0x1B */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x1C-0x1F */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x20-0x23 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x24-0x27 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x28-0x2B */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x2C-0x2F */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x30-0x33 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x34-0x37 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x38-0x3B */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x3C-0x3F */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x40-0x43 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x44-0x47 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x48-0x4B */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x4C-0x4F */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x50-0x53 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x54-0x57 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x58-0x5B */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x5C-0x5F */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x60-0x63 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x64-0x67 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x68-0x6B */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x6C-0x6F */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x70-0x73 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x74-0x77 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x78-0x7B */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x7C-0x7F */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x80-0x83 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x84-0x87 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x88-0x8B */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x8C-0x8F */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x90-0x93 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x94-0x97 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x98-0x9B */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0x9C-0x9F */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xA0-0xA3 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xA4-0xA7 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xA8-0xAB */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xAC-0xAF */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xB0-0xB3 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xB4-0xB7 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xB8-0xBB */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xBC-0xBF */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xC0-0xC3 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xC4-0xC7 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xC8-0xCB */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xCC-0xCF */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xD0-0xD3 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xD4-0xD7 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xD8-0xDB */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xDC-0xDF */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xE0-0xE3 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xE4-0xE7 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xE8-0xEB */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xEC-0xEF */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xF0-0xF3 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xF4-0xF7 */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xF8-0xFB */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP,
|
||||
/* 0xFC-0xFF */ PDP11.opNOP, PDP11.opNOP, PDP11.opNOP, PDP11.opNOP
|
||||
];
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -41,7 +41,6 @@ if (DEBUGGER) {
|
|||
var Component = require("../../shared/lib/component");
|
||||
var State = require("../../shared/lib/state");
|
||||
var PDP11 = require("./defines");
|
||||
var CPUDefPDP11 = require("./cpudef");
|
||||
var CPUPDP11 = require("./cpu");
|
||||
var KeyboardPDP11 = require("./keyboard");
|
||||
var MessagesPDP11 = require("./messages");
|
||||
|
|
@ -485,13 +484,13 @@ if (DEBUGGER) {
|
|||
* @param {DbgAddrPDP11|null|undefined} dbgAddr
|
||||
* @param {boolean} [fWrite]
|
||||
* @param {number} [nb] number of bytes to check (1 or 2); default is 1
|
||||
* @return {number} is the corresponding linear address, or CPUDefPDP11.ADDR_INVALID
|
||||
* @return {number} is the corresponding linear address, or PDP11.ADDR_INVALID
|
||||
*/
|
||||
DebuggerPDP11.prototype.getAddr = function(dbgAddr, fWrite, nb)
|
||||
{
|
||||
var addr = dbgAddr && dbgAddr.addr;
|
||||
if (addr == null) {
|
||||
addr = CPUDefPDP11.ADDR_INVALID;
|
||||
addr = PDP11.ADDR_INVALID;
|
||||
}
|
||||
return addr;
|
||||
};
|
||||
|
|
@ -510,7 +509,7 @@ if (DEBUGGER) {
|
|||
{
|
||||
var b = 0xff;
|
||||
var addr = this.getAddr(dbgAddr, false, 1);
|
||||
if (addr !== CPUDefPDP11.ADDR_INVALID) {
|
||||
if (addr !== PDP11.ADDR_INVALID) {
|
||||
b = this.bus.getByteDirect(addr);
|
||||
if (inc) this.incAddr(dbgAddr, inc);
|
||||
}
|
||||
|
|
@ -542,7 +541,7 @@ if (DEBUGGER) {
|
|||
{
|
||||
var w = 0xffff;
|
||||
var addr = this.getAddr(dbgAddr, false, 2);
|
||||
if (addr !== CPUDefPDP11.ADDR_INVALID) {
|
||||
if (addr !== PDP11.ADDR_INVALID) {
|
||||
w = this.bus.getShortDirect(addr);
|
||||
if (inc) this.incAddr(dbgAddr, inc);
|
||||
}
|
||||
|
|
@ -560,7 +559,7 @@ if (DEBUGGER) {
|
|||
DebuggerPDP11.prototype.setByte = function(dbgAddr, b, inc)
|
||||
{
|
||||
var addr = this.getAddr(dbgAddr, true, 1);
|
||||
if (addr !== CPUDefPDP11.ADDR_INVALID) {
|
||||
if (addr !== PDP11.ADDR_INVALID) {
|
||||
this.bus.setByteDirect(addr, b);
|
||||
if (inc) this.incAddr(dbgAddr, inc);
|
||||
this.cpu.updateCPU(true); // we set fForce to true in case video memory was the target
|
||||
|
|
@ -578,7 +577,7 @@ if (DEBUGGER) {
|
|||
DebuggerPDP11.prototype.setShort = function(dbgAddr, w, inc)
|
||||
{
|
||||
var addr = this.getAddr(dbgAddr, true, 2);
|
||||
if (addr !== CPUDefPDP11.ADDR_INVALID) {
|
||||
if (addr !== PDP11.ADDR_INVALID) {
|
||||
this.bus.setShortDirect(addr, w);
|
||||
if (inc) this.incAddr(dbgAddr, inc);
|
||||
this.cpu.updateCPU(true); // we set fForce to true in case video memory was the target
|
||||
|
|
@ -648,10 +647,10 @@ if (DEBUGGER) {
|
|||
* parseAddr(sAddr, fCode, fNoChecks, fPrint)
|
||||
*
|
||||
* Address evaluation and validation (eg, range checks) are no longer performed at this stage. That's
|
||||
* done later, by getAddr(), which returns CPUDefPDP11.ADDR_INVALID for invalid segments, out-of-range offsets,
|
||||
* done later, by getAddr(), which returns PDP11.ADDR_INVALID for invalid segments, out-of-range offsets,
|
||||
* etc. The Debugger's low-level get/set memory functions verify all getAddr() results, but even if an
|
||||
* invalid address is passed through to the Bus memory interfaces, the address will simply be masked with
|
||||
* BusPDP11.nBusLimit; in the case of CPUDefPDP11.ADDR_INVALID, that will generally refer to the top of the physical
|
||||
* BusPDP11.nBusLimit; in the case of PDP11.ADDR_INVALID, that will generally refer to the top of the physical
|
||||
* address space.
|
||||
*
|
||||
* @this {DebuggerPDP11}
|
||||
|
|
@ -770,7 +769,7 @@ if (DEBUGGER) {
|
|||
|
||||
if (sAddr) {
|
||||
addr = this.getAddr(this.parseAddr(sAddr));
|
||||
if (addr === CPUDefPDP11.ADDR_INVALID) {
|
||||
if (addr === PDP11.ADDR_INVALID) {
|
||||
this.println("invalid address: " + sAddr);
|
||||
return;
|
||||
}
|
||||
|
|
@ -1709,7 +1708,7 @@ if (DEBUGGER) {
|
|||
|
||||
if (aBreak != this.aBreakExec) {
|
||||
var addr = this.getAddr(dbgAddr);
|
||||
if (addr === CPUDefPDP11.ADDR_INVALID) {
|
||||
if (addr === PDP11.ADDR_INVALID) {
|
||||
this.println("invalid address: " + this.toHexAddr(dbgAddr));
|
||||
fSuccess = false;
|
||||
} else {
|
||||
|
|
@ -2002,7 +2001,7 @@ if (DEBUGGER) {
|
|||
|
||||
var sBytes = "";
|
||||
var sLine = this.toHexAddr(dbgAddrIns) + ' ';
|
||||
if (dbgAddrIns.addr !== CPUDefPDP11.ADDR_INVALID && dbgAddr.addr !== CPUDefPDP11.ADDR_INVALID) {
|
||||
if (dbgAddrIns.addr !== PDP11.ADDR_INVALID && dbgAddr.addr !== PDP11.ADDR_INVALID) {
|
||||
do {
|
||||
sBytes += str.toHex(this.getByte(dbgAddrIns, 1), 2);
|
||||
if (dbgAddrIns.addr == null) break;
|
||||
|
|
@ -2103,9 +2102,6 @@ if (DEBUGGER) {
|
|||
{
|
||||
var b;
|
||||
switch (sFlag) {
|
||||
case "IF":
|
||||
b = this.cpu.getIF();
|
||||
break;
|
||||
case "SF":
|
||||
b = this.cpu.getSF();
|
||||
break;
|
||||
|
|
@ -3236,26 +3232,6 @@ if (DEBUGGER) {
|
|||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* doInt(sLevel)
|
||||
*
|
||||
* @this {DebuggerPDP11}
|
||||
* @param {string} sLevel
|
||||
* @return {boolean} true if success, false if error
|
||||
*/
|
||||
DebuggerPDP11.prototype.doInt = function(sLevel)
|
||||
{
|
||||
if (!this.cpu.getIF()) {
|
||||
this.println("interrupts disabled (use rif=1 to enable)");
|
||||
return false;
|
||||
}
|
||||
var nLevel = this.parseExpression(sLevel);
|
||||
if (nLevel == null) return false;
|
||||
this.println("requesting interrupt level " + nLevel);
|
||||
this.cpu.requestINTR(nLevel);
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* doVar(sCmd)
|
||||
*
|
||||
|
|
@ -3528,49 +3504,10 @@ if (DEBUGGER) {
|
|||
fValid = true;
|
||||
var sRegMatch = sReg.toUpperCase();
|
||||
switch (sRegMatch) {
|
||||
case "A":
|
||||
cpu.regA = w & 0xff;
|
||||
break;
|
||||
case "B":
|
||||
cpu.regB = w & 0xff;
|
||||
break;
|
||||
case "BC":
|
||||
cpu.regB = ((w >> 8) & 0xff);
|
||||
/* falls through */
|
||||
case "C":
|
||||
cpu.regC = w & 0xff;
|
||||
break;
|
||||
case "D":
|
||||
cpu.regD = w & 0xff;
|
||||
break;
|
||||
case "DE":
|
||||
cpu.regD = ((w >> 8) & 0xff);
|
||||
/* falls through */
|
||||
case "E":
|
||||
cpu.regE = w & 0xff;
|
||||
break;
|
||||
case "H":
|
||||
cpu.regH = w & 0xff;
|
||||
break;
|
||||
case "HL":
|
||||
cpu.regH = ((w >> 8) & 0xff);
|
||||
/* falls through */
|
||||
case "L":
|
||||
cpu.regL = w & 0xff;
|
||||
break;
|
||||
case "SP":
|
||||
cpu.setSP(w);
|
||||
break;
|
||||
case "PC":
|
||||
cpu.setPC(w);
|
||||
this.dbgAddrNextCode = this.newAddr(cpu.getPC());
|
||||
break;
|
||||
case "PS":
|
||||
cpu.setPS(w);
|
||||
break;
|
||||
case "PSW":
|
||||
cpu.setPSW(w);
|
||||
break;
|
||||
case "CF":
|
||||
if (w) cpu.setCF(); else cpu.clearCF();
|
||||
break;
|
||||
|
|
@ -3580,9 +3517,6 @@ if (DEBUGGER) {
|
|||
case "SF":
|
||||
if (w) cpu.setSF(); else cpu.clearSF();
|
||||
break;
|
||||
case "IF":
|
||||
if (w) cpu.setIF(); else cpu.clearIF();
|
||||
break;
|
||||
default:
|
||||
this.println("unknown register: " + sReg);
|
||||
return;
|
||||
|
|
@ -3668,8 +3602,9 @@ if (DEBUGGER) {
|
|||
var dbgAddr = this.newAddr(this.cpu.getPC());
|
||||
var bOpcode = this.getByte(dbgAddr);
|
||||
|
||||
/*
|
||||
switch (bOpcode) {
|
||||
case CPUDefPDP11.OPCODE.CALL:
|
||||
case PDP11.OPCODE.CALL:
|
||||
if (fCallStep) {
|
||||
this.nStep = nStep;
|
||||
this.incAddr(dbgAddr, 3);
|
||||
|
|
@ -3678,6 +3613,7 @@ if (DEBUGGER) {
|
|||
default:
|
||||
break;
|
||||
}
|
||||
*/
|
||||
|
||||
if (this.nStep) {
|
||||
this.setTempBreakpoint(dbgAddr);
|
||||
|
|
@ -4091,13 +4027,6 @@ if (DEBUGGER) {
|
|||
if (!this.doIf(sCmd.substr(2), fQuiet)) {
|
||||
result = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (asArgs[0] == "int") {
|
||||
if (!this.doInt(asArgs[1])) {
|
||||
result = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'k':
|
||||
|
|
|
|||
|
|
@ -93,9 +93,83 @@ var PDP11 = {
|
|||
PRIVATE: PRIVATE, // shared
|
||||
TYPEDARRAYS: TYPEDARRAYS,
|
||||
SITEHOST: SITEHOST, // shared
|
||||
XMLVERSION: XMLVERSION // shared
|
||||
XMLVERSION: XMLVERSION, // shared
|
||||
|
||||
/*
|
||||
* CPU model numbers (supported)
|
||||
*/
|
||||
MODEL_1145: 1145,
|
||||
MODEL_1170: 1170,
|
||||
|
||||
/*
|
||||
* This constant is used to mark points in the code where the physical address being returned
|
||||
* is invalid and should not be used.
|
||||
*
|
||||
* In a 32-bit CPU, -1 (ie, 0xffffffff) could actually be a valid address, so consider changing
|
||||
* ADDR_INVALID to NaN or null (which is also why all ADDR_INVALID tests should use strict equality
|
||||
* operators).
|
||||
*
|
||||
* The main reason I'm NOT using NaN or null now is my concern that, by mixing non-numbers
|
||||
* (specifically, values outside the range of signed 32-bit integers), performance may suffer.
|
||||
*
|
||||
* WARNING: Like many of the properties defined here, ADDR_INVALID is a common constant, which the
|
||||
* Closure Compiler will happily inline (with or without @const annotations; in fact, I've yet to
|
||||
* see a @const annotation EVER improve automatic inlining). However, if you don't make ABSOLUTELY
|
||||
* certain that this file is included BEFORE the first reference to any of these properties, that
|
||||
* automatic inlining will no longer occur.
|
||||
*/
|
||||
ADDR_INVALID: -1,
|
||||
|
||||
/*
|
||||
* Processor Status flag definitions (stored in regPS)
|
||||
*/
|
||||
PS: {
|
||||
CF: 0x0001, // bit 0: Carry Flag
|
||||
OF: 0x0002, // bit 1: Overflow Flag
|
||||
ZF: 0x0004, // bit 2: Zero Flag
|
||||
SF: 0x0008, // bit 3: Sign Flag
|
||||
TF: 0x0010, // bit 4: Trap Flag
|
||||
PRI: 0x00E0, // bits 5-7: Priority
|
||||
UNUSED: 0x0700, // bits 8-10: unused
|
||||
REGSET: 0x0800, // bit 11: Register Set
|
||||
PMODE: 0x3000, // bits 12-13: Previous Mode
|
||||
CMODE: 0xC000 // bits 14-15: Current Mode
|
||||
},
|
||||
/*
|
||||
* Interrupt-related flags (stored in intFlags)
|
||||
*/
|
||||
INTFLAG: {
|
||||
NONE: 0x0000,
|
||||
INTR: 0x00ff, // mask for 8 bits, representing interrupt levels 0-7
|
||||
HALT: 0x0100 // halt requested; see opHLT()
|
||||
},
|
||||
/*
|
||||
* Opcode definitions
|
||||
*/
|
||||
OPCODE: {
|
||||
// to be continued....
|
||||
},
|
||||
|
||||
IOBASE_VIRT: 0x00E000, /*000160000*/
|
||||
IOBASE_18BIT: 0x03E000, /*000760000*/
|
||||
IOBASE_UNIBUS: 0x3C0000, /*017000000*/
|
||||
IOBASE_22BIT: 0x3FE000, /*017760000*/
|
||||
MAX_MEMORY: 0x3C0000 - 16384, // Maximum memory address (need less memory for BSD 2.9 boot)
|
||||
MAX_ADDRESS: 0x400000, /*020000000*/ // Register addresses are above 22 bit addressing
|
||||
|
||||
BYTE_MODE: 1,
|
||||
READ_MODE: 2,
|
||||
WRITE_MODE: 4,
|
||||
MODIFY_WORD: 2 | 4, // READ_MODE | WRITE_MODE
|
||||
MODIFY_BYTE: 1 | 2 | 4 // READ_MODE | WRITE_MODE | BYTE_MODE
|
||||
};
|
||||
|
||||
/*
|
||||
* PS "arithmetic" flags are NOT stored in the PS register; they are maintained across separate result registers,
|
||||
* hence the RESULT designation.
|
||||
*/
|
||||
PDP11.PS.RESULT = (PDP11.PS.CF | PDP11.PS.ZF | PDP11.PS.SF);
|
||||
|
||||
if (NODE) {
|
||||
global.APPCLASS = APPCLASS;
|
||||
global.APPNAME = APPNAME;
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
if (NODE) {
|
||||
var str = require("../../shared/lib/strlib");
|
||||
var Component = require("../../shared/lib/component");
|
||||
var CPUDefPDP11 = require("./cpudef");
|
||||
var PDP11 = require("./defines");
|
||||
var MessagesPDP11 = require("./messages");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@ if (NODE) {
|
|||
var Component = require("../../shared/lib/component");
|
||||
var PDP11 = require("./defines");
|
||||
var BusPDP11 = require("./bus");
|
||||
var CPUDefPDP11 = require("./cpudef");
|
||||
var MemoryPDP11 = require("./memory");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,6 @@ if (NODE) {
|
|||
var DumpAPI = require("../../shared/lib/dumpapi");
|
||||
var Component = require("../../shared/lib/component");
|
||||
var PDP11 = require("./defines");
|
||||
var CPUDefPDP11 = require("./cpudef");
|
||||
var MemoryPDP11 = require("./memory");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -170,7 +170,6 @@
|
|||
"./modules/shared/lib/weblib.js",
|
||||
"./modules/shared/lib/component.js",
|
||||
"./modules/pdp11/lib/defines.js",
|
||||
"./modules/pdp11/lib/cpudef.js",
|
||||
"./modules/pdp11/lib/messages.js",
|
||||
"./modules/pdp11/lib/panel.js",
|
||||
"./modules/pdp11/lib/bus.js",
|
||||
|
|
|
|||
|
|
@ -21,225 +21,225 @@ function lb(a,b){if(a.C.Kb)return a.C.gb&&(a.C.gb=!1),a.C.Kb=!1;if(a.C.ib)return
|
|||
var rb="undefined"!==typeof ArrayBuffer,sb=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
|
||||
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1],tb={cpu:1,bus:64,mem:128,port:256,nvr:16384,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function ub(a){w.call(this,"Panel",a,ub)}bb(ub);m=ub.prototype;
|
||||
m.na=function(a,b,c,d){return this.B&&this.B.na(a,b,c,d)||this.b&&this.b.na(a,b,c,d)||this.K&&this.K.na(a,b,c,d)||this.H&&this.H.na(a,b,c,d)?!0:this.parent.na.call(this,a,b,c,d)};m.Pa=function(a,b,c,d){this.B=a;this.u=b;this.b=c;this.H=d;this.K=vb(a,"Keyboard")};m.Da=function(a,b){b||wb();return!0};m.Ha=function(){return!0};m.Ia=function(){};function wb(){for(var a=!1,b=C(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f=fb(e.id);f||(a=!0,f=new ub(e));hb(f,d);a&&E(f)}}Ma(wb);
|
||||
function xb(a,b,c){w.call(this,"Bus",a,xb);this.b=b;this.H=c;this.G=a.busWidth||16;this.L=Math.pow(2,this.G);this.w=this.L-1|0;this.qa=16>=this.G?10:20>=this.G?12:24>=this.G?14:15;this.Ga=1<<this.qa;this.M=this.Ga>>2;this.u=this.Ga-1;this.J=this.L/this.Ga|0;this.K=this.J-1;this.B=[];this.j=[];this.D=this.I=!1;this.O=[];this.P=[];a=new F;yb(a,this.H);this.X=Array(this.J);for(b=0;b<this.J;b++)this.X[b]=a;E(this)}bb(xb);m=xb.prototype;m.reset=function(){};m.Da=function(a,b){b||this.reset();return!0};
|
||||
function xb(a,b,c){w.call(this,"Bus",a,xb);this.b=b;this.H=c;this.G=a.busWidth||16;this.L=Math.pow(2,this.G);this.w=this.L-1|0;this.qa=16>=this.G?10:20>=this.G?12:24>=this.G?14:15;this.Ga=1<<this.qa;this.M=this.Ga>>2;this.u=this.Ga-1;this.J=this.L/this.Ga|0;this.K=this.J-1;this.B=[];this.j=[];this.I=this.D=!1;this.O=[];this.P=[];a=new F;yb(a,this.H);this.X=Array(this.J);for(b=0;b<this.J;b++)this.X[b]=a;E(this)}bb(xb);m=xb.prototype;m.reset=function(){};m.Da=function(a,b){b||this.reset();return!0};
|
||||
function zb(a,b,c,d){for(var e=b,f=c,h=e>>>a.qa;0<f&&h<a.X.length;){var g=a.X[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.F)return g.yb+=g.F-e,g.F=e,!0;if(e>=g.F+g.yb){l=g.size-(e-k);l>f&&(l=f);g.yb=e-g.F+l;e=k+a.Ga;f-=l;h++;continue}}return Ab(1,e,f)}e=new F(e,l,a.Ga,d);yb(e,a.H,g);a.X[h++]=e;e=k+a.Ga;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Bb[d]+" at "+t(b)),!0):Ab(2,b,c)}m.$=function(a){return this.X[(a&this.w)>>>this.qa].lb(a&this.u,a)};
|
||||
function Cb(a,b){return a.X[(b&a.w)>>>a.qa].wb(b&a.u,b)}m.Sa=function(a){var b=a&this.u,c=(a&this.w)>>>this.qa;return b!=this.u?this.X[c].tc(b,a):this.X[c++].lb(b,a)|this.X[c&this.K].lb(0,a+1)<<8};function Db(a,b){var c=b&a.u,d=(b&a.w)>>>a.qa;return c!=a.u?a.X[d].Ob(c,b):a.X[d++].wb(c,b)|a.X[d&a.K].wb(0,b+1)<<8}m.ua=function(a,b){this.X[(a&this.w)>>>this.qa].nb(a&this.u,b&255,a)};function Fb(a,b,c){a.X[(b&a.w)>>>a.qa].zb(b&a.u,c&255,b)}
|
||||
m.Ib=function(a,b){var c=a&this.u,d=(a&this.w)>>>this.qa;c!=this.u?this.X[d].yc(c,b&65535,a):(this.X[d++].nb(c,b&255,a),this.X[d&this.K].nb(0,b>>8&255,a+1))};function Gb(a,b){if(void 0===b)return a.D=!a.D,a.D;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function Hb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.B[k]?v("Input port "+t(k)+" already registered"):f.B[k]=[g,!1]}}
|
||||
function Ib(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.B[b],g=a.O[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.H&&a.D!=h[1]&&Rb(a.H,b,l)):a.H&&(ib(a.H,a,b,null,c),a.D&&Rb(a.H,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Sb(a,b){if(void 0===b)return a.I=!a.I,a.I;void 0===a.j[b]&&(a.j[b]=[null,!1]);a.j[b][1]=!a.j[b][1];return a.j[b][1]}
|
||||
function Tb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.j[k]?v("Output port "+t(k)+" already registered"):f.j[k]=[g,!1]}}function Ub(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.j[b],g=a.P[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.H&&a.I!=h[1]&&Vb(a.H,b,k)}else a.H&&(ib(a.H,a,b,k,d),a.I&&Vb(a.H,b,k));f+=g<<3;b+=g;e-=g}}
|
||||
function Cb(a,b){return a.X[(b&a.w)>>>a.qa].wb(b&a.u,b)}m.Sa=function(a){var b=a&this.u,c=(a&this.w)>>>this.qa;return b!=this.u?this.X[c].tc(b,a):this.X[c++].lb(b,a)|this.X[c&this.K].lb(0,a+1)<<8};function Db(a,b){var c=b&a.u,d=(b&a.w)>>>a.qa;return c!=a.u?a.X[d].Ob(c,b):a.X[d++].wb(c,b)|a.X[d&a.K].wb(0,b+1)<<8}m.ua=function(a,b){this.X[(a&this.w)>>>this.qa].nb(a&this.u,b&255,a)};function Eb(a,b,c){a.X[(b&a.w)>>>a.qa].zb(b&a.u,c&255,b)}
|
||||
m.Ib=function(a,b){var c=a&this.u,d=(a&this.w)>>>this.qa;c!=this.u?this.X[d].yc(c,b&65535,a):(this.X[d++].nb(c,b&255,a),this.X[d&this.K].nb(0,b>>8&255,a+1))};function Gb(a,b){if(void 0===b)return a.I=!a.I,a.I;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function Hb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.B[k]?v("Input port "+t(k)+" already registered"):f.B[k]=[g,!1]}}
|
||||
function Ib(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.B[b],g=a.O[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.H&&a.I!=h[1]&&Jb(a.H,b,l)):a.H&&(ib(a.H,a,b,null,c),a.I&&Jb(a.H,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Sb(a,b){if(void 0===b)return a.D=!a.D,a.D;void 0===a.j[b]&&(a.j[b]=[null,!1]);a.j[b][1]=!a.j[b][1];return a.j[b][1]}
|
||||
function Tb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.j[k]?v("Output port "+t(k)+" already registered"):f.j[k]=[g,!1]}}function Ub(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.j[b],g=a.P[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.H&&a.D!=h[1]&&Vb(a.H,b,k)}else a.H&&(ib(a.H,a,b,k,d),a.D&&Vb(a.H,b,k));f+=g<<3;b+=g;e-=g}}
|
||||
function Ab(a,b,c){v("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Wb;if(rb){var Xb=new ArrayBuffer(2);(new DataView(Xb)).setUint16(0,256,!0);Wb=256===(new Uint16Array(Xb))[0]}else Wb=!1;var Yb=Wb;
|
||||
function F(a,b,c,d){this.id=Zb+=2;this.b=null;this.F=a;this.yb=b;this.size=c||0;this.type=d||$b;this.N=d==ac;yb(this);this.Na=this.ec=!1;if(c)if(rb)this.D=new ArrayBuffer(c),this.I=new DataView(this.D,0,c),this.u=new Uint8Array(this.D,0,c),this.K=new Uint16Array(this.D,0,c>>1),this.b=new Int32Array(this.D,0,c>>2),bc(this,Yb?cc:dc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;bc(this,ec)}else bc(this)}var $b=0,ac=2,Bb=["NONE","RAM","ROM","VID","H/W"],Zb=0;
|
||||
F.prototype={constructor:F,parent:null,save:function(){var a,b;if(rb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.I.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(rb)for(b=0;b<a.length;b++)this.I.setInt32(b<<2,a[b],!0);else this.b=a;return this.Na=!0}return!1},Za:function(a,b){b?0===this.j++&&fc(this,gc,!1):0===this.B++&&hc(this,gc,!1)},J:function(){this.H&&kb(this.H,129)&&this.H.message("attempt to read invalid block %"+n(this.F),!0);
|
||||
function F(a,b,c,d){this.id=Zb+=2;this.b=null;this.F=a;this.yb=b;this.size=c||0;this.type=d||$b;this.N=d==ac;yb(this);this.Na=this.ec=!1;if(c)if(rb)this.I=new ArrayBuffer(c),this.D=new DataView(this.I,0,c),this.u=new Uint8Array(this.I,0,c),this.K=new Uint16Array(this.I,0,c>>1),this.b=new Int32Array(this.I,0,c>>2),bc(this,Yb?cc:dc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;bc(this,ec)}else bc(this)}var $b=0,ac=2,Bb=["NONE","RAM","ROM","VID","H/W"],Zb=0;
|
||||
F.prototype={constructor:F,parent:null,save:function(){var a,b;if(rb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.D.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(rb)for(b=0;b<a.length;b++)this.D.setInt32(b<<2,a[b],!0);else this.b=a;return this.Na=!0}return!1},Za:function(a,b){b?0===this.j++&&fc(this,gc,!1):0===this.B++&&hc(this,gc,!1)},J:function(){this.H&&kb(this.H,129)&&this.H.message("attempt to read invalid block %"+n(this.F),!0);
|
||||
return 255},w:function(a,b){this.H&&kb(this.H,129)&&this.H.message("attempt to write "+t(b)+" to invalid block %"+n(this.F),!0)},L:function(a,b){return this.lb(a++,b++)|this.lb(a,b)<<8},G:function(a,b,c){this.nb(a++,b&255,c++);this.nb(a,b>>8,c)},Z:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ea: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},ia:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.Na=!0},ya: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.Na=!0},O:function(a,b){if(this.H&&null!=this.F){var c=this.H;ic(c,this.F+a,1,c.O)&&c.oa(!0)}return this.wb(a,b)},ba:function(a,b){if(this.H&&null!=this.F){var c=this.H;ic(c,this.F+a,2,c.O)&&c.oa(!0)}return this.Ob(a,b)},ha:function(a,b,c){if(this.H&&null!=this.F){var d=this.H;ic(d,this.F+a,1,d.I)&&d.oa(!0)}this.N?this.w(a,b,c):this.zb(a,b,c)},ra:function(a,
|
||||
b,c){if(this.H&&null!=this.F){var d=this.H;ic(d,this.F+a,2,d.I)&&d.oa(!0)}this.N?this.w(a,b,c):this.Rb(a,b,c)},M:function(a){return this.u[a]},P:function(a){return this.u[a]},aa:function(a){return this.I.getUint16(a,!0)},da:function(a){return a&1?this.u[a]|this.u[a+1]<<8:this.K[a>>1]},ga:function(a,b){this.u[a]=b;this.Na=!0},Ya:function(a,b){this.u[a]=b;this.Na=!0},ka:function(a,b){this.I.setUint16(a,b,!0);this.Na=!0},va:function(a,b){a&1?(this.u[a]=b,this.u[a+1]=b>>8):this.K[a>>1]=b;this.Na=!0}};
|
||||
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.Na=!0},O:function(a,b){if(this.H&&null!=this.F){var c=this.H;ic(c,this.F+a,1,c.O)&&c.oa(!0)}return this.wb(a,b)},ba:function(a,b){if(this.H&&null!=this.F){var c=this.H;ic(c,this.F+a,2,c.O)&&c.oa(!0)}return this.Ob(a,b)},ha:function(a,b,c){if(this.H&&null!=this.F){var d=this.H;ic(d,this.F+a,1,d.D)&&d.oa(!0)}this.N?this.w(a,b,c):this.zb(a,b,c)},ra:function(a,
|
||||
b,c){if(this.H&&null!=this.F){var d=this.H;ic(d,this.F+a,2,d.D)&&d.oa(!0)}this.N?this.w(a,b,c):this.Rb(a,b,c)},M:function(a){return this.u[a]},P:function(a){return this.u[a]},aa:function(a){return this.D.getUint16(a,!0)},da:function(a){return a&1?this.u[a]|this.u[a+1]<<8:this.K[a>>1]},ga:function(a,b){this.u[a]=b;this.Na=!0},Ya:function(a,b){this.u[a]=b;this.Na=!0},ka:function(a,b){this.D.setUint16(a,b,!0);this.Na=!0},va:function(a,b){a&1?(this.u[a]=b,this.u[a+1]=b>>8):this.K[a>>1]=b;this.Na=!0}};
|
||||
function yb(a,b,c){a.H=b;a.B=a.j=0;c&&((a.B=c.B)&&hc(a,gc,!1),(a.j=c.j)&&fc(a,gc,!1))}function jc(a,b){b?0===--a.j&&(a.nb=a.N?a.w:a.zb,a.yc=a.N?a.G:a.Rb):0===--a.B&&(a.lb=a.wb,a.tc=a.Ob)}function fc(a,b,c){c&&a.j||(a.nb=!a.N&&b[2]||a.w,a.yc=!a.N&&b[3]||a.G);if(c||void 0===c)a.zb=b[2]||a.w,a.Rb=b[3]||a.G}function hc(a,b,c){c&&a.B||(a.lb=b[0]||a.J,a.tc=b[1]||a.L);if(c||void 0===c)a.wb=b[0]||a.J,a.Ob=b[1]||a.L}function bc(a,b){b||(b=kc);hc(a,b,void 0);fc(a,b,void 0)}
|
||||
var kc=[],ec=[F.prototype.Z,F.prototype.ea,F.prototype.ia,F.prototype.ya],gc=[F.prototype.O,F.prototype.ba,F.prototype.ha,F.prototype.ra];if(rb)var dc=[F.prototype.M,F.prototype.aa,F.prototype.ga,F.prototype.ka],cc=[F.prototype.P,F.prototype.da,F.prototype.Ya,F.prototype.va];
|
||||
function lc(a,b){w.call(this,"CPU",a,lc,1);var c=a.multiplier||1;this.Z=a.cycles||b;this.Ra=c;this.ga=Math.round(this.Z/1E4)/100;this.bb=this.ga*this.Ra;this.C.za=!1;this.C.Lb=!1;this.C.dc=a.autoStart;this.C.fc=!1;this.C.hb=!1;this.tb=this.O=0;this.ub=a.csStart;this.jb=a.csInterval;this.kb=a.csStop;this.D=[];this.Ea=this.cb.bind(this);E(this)}bb(lc);var mc=["power","reset"];m=lc.prototype;
|
||||
function lc(a,b){w.call(this,"CPU",a,lc,1);var c=a.multiplier||1;this.Z=a.cycles||b;this.Ra=c;this.ga=Math.round(this.Z/1E4)/100;this.bb=this.ga*this.Ra;this.C.za=!1;this.C.Lb=!1;this.C.dc=a.autoStart;this.C.fc=!1;this.C.hb=!1;this.tb=this.O=0;this.ub=a.csStart;this.jb=a.csInterval;this.kb=a.csStop;this.w=[];this.Ea=this.cb.bind(this);E(this)}bb(lc);var mc=["power","reset"];m=lc.prototype;
|
||||
m.Pa=function(a,b,c,d){this.B=a;this.u=b;this.H=d;for(b=0;b<mc.length;b++)(c=this.N[mc[b]])&&this.B.na(null,mc[b],c);this.I=vb(a,"ChipSet");a=nc(a,"autoStart");null!=a&&(this.C.dc="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
|
||||
m.Da=function(a,b){if(!b){if(a&&this.restore){oc(this);if(!this.restore(a))return!1;Bc(this)}else this.reset();if(this.H){var c=this.H;c.g("Type ? for help with PC8080 Debugger commands");c.Ia();if(c.ya){var d=c.ya;c.ya=null;Cc(c,d)}}else this.g("No debugger detected")}Dc(this);return!0};m.Ha=function(a){return a?this.save():!0};function Ec(a){(a.C.dc||!a.H&&void 0===a.N.run)&&a.cb(!0)}m.gc=function(){return 0};
|
||||
function Bc(a){void 0===a.ub&&(a.ub=0);void 0===a.jb&&(a.jb=-1);void 0===a.kb&&(a.kb=-1);a.C.hb=0<=a.ub&&0<a.jb;a.C.hb&&(a.tb=0,a.O=a.ub-a.M)}function Fc(a,b){if(a.C.hb){var c=!1;a.tb=a.tb+a.gc()|0;a.O-=b;0>=a.O&&(a.O+=a.jb,c=!0);0<=a.kb&&a.kb<=Gc(a)&&(a.jb=a.kb=-1,Bc(a),a.oa(),c=!0);c&&a.g(Gc(a)+" cycles: checksum="+n(a.tb))}}
|
||||
m.Da=function(a,b){if(!b){if(a&&this.restore){oc(this);if(!this.restore(a))return!1;pc(this)}else this.reset();if(this.H){var c=this.H;c.g("Type ? for help with PC8080 Debugger commands");c.Ia();if(c.ya){var d=c.ya;c.ya=null;Cc(c,d)}}else this.g("No debugger detected")}Dc(this);return!0};m.Ha=function(a){return a?this.save():!0};function Ec(a){(a.C.dc||!a.H&&void 0===a.N.run)&&a.cb(!0)}m.gc=function(){return 0};
|
||||
function pc(a){void 0===a.ub&&(a.ub=0);void 0===a.jb&&(a.jb=-1);void 0===a.kb&&(a.kb=-1);a.C.hb=0<=a.ub&&0<a.jb;a.C.hb&&(a.tb=0,a.O=a.ub-a.M)}function Fc(a,b){if(a.C.hb){var c=!1;a.tb=a.tb+a.gc()|0;a.O-=b;0>=a.O&&(a.O+=a.jb,c=!0);0<=a.kb&&a.kb<=Gc(a)&&(a.jb=a.kb=-1,pc(a),a.oa(),c=!0);c&&a.g(Gc(a)+" cycles: checksum="+n(a.tb))}}
|
||||
m.na=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.N[b]=c;a=!0;break;case "run":this.N[b]=c;c.onclick=function(){var a;if(a=d.B)if(a=d.B,a.C.wa)a=!0;else{var b=null,c,g=eb(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.C.Ma);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.C.wa);c++);c==g.length&&(b=a);v("The "+b.type+" component ("+b.id+") is not "+(b.C.Ma?"powered yet":"ready yet"+(b.Fb?" (waiting for notification)":""))+".");a=!1}a&&(d.C.za?d.oa():d.cb())};a=!0;break;
|
||||
case "speed":this.N[b]=c;a=!0;break;case "setSpeed":this.N[b]=c,c.onclick=function(){Hc(d,d.Ra<<1,!0)},c.textContent=this.bb.toFixed(2)+"Mhz",a=!0}return a};function Ic(a,b,c){a.M+=b;c&&(a.j=a.b=0)}function Jc(a,b){var c=1;b&&1<a.Ra&&a.J&&(c=a.J/a.ga);a.va=Math.round(1E3/30);a.ea=Math.floor(a.Z/30*c);b||(a.P=a.ea);a.ha=0}function Gc(a){return a.M+a.K+a.j-a.b}function oc(a){a.J=0;a.ya=0;a.M=a.K=a.j=a.b=0;Bc(a);Hc(a,1)}
|
||||
function Hc(a,b,c){var d=!1;if(void 0!==b){.8>a.J/a.bb?b=1:d=!0;a.Ra=b;b=a.ga*a.Ra;if(a.bb!=b){a.bb=b;b=a.bb.toFixed(2)+"Mhz";var e=a.N.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.B&&a.B.xb()}Ic(a,a.K);a.K=0;a.G=pa();a.L=0;Jc(a);return d}function Kc(a,b){var c=a.D.length;a.D.push([-1,b]);return c}function Lc(a,b,c){var d=-1;0<=b&&b<a.D.length&&(d=a.Z*a.Ra/1E3*c,a.D[b][0]=d)}
|
||||
m.cb=function(a){if(lb(this,!0)){if(!this.C.za){Hc(this);this.B&&this.B.start(this.G,Gc(this));this.C.za=!0;this.C.Lb=!0;this.I&&this.I.start();var b=this.N.run;b&&(b.textContent="Halt");this.B&&(this.B.Ia(!0),a&&this.B.xb(!0))}this.ha>=this.Z&&Jc(this,!0);this.aa=0;this.da=pa();this.L&&(a=this.da-this.L,a>this.va&&(this.G+=a,this.G>this.da&&(this.G=this.da)));try{do{for(var c=this.C.hb?1:this.ea,d=this.D.length-1;0<=d;d--){var e=this.D[d];0>e[0]||c>e[0]&&(c=e[0])}this.mb(c);var f=this.j-this.b;a=
|
||||
f;for(var h=this.D.length-1;0<=h;h--){var g=this.D[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.aa+=f;this.K+=f;Ic(this,0,!0);Fc(this,f);this.P-=f;if(0>=this.P){this.P+=this.ea;15<=++this.ya&&(this.B&&this.B.Ia(),this.ya=0);break}}while(this.C.za)}catch(k){this.oa();Dc(this);this.B&&this.B.stop(pa(),Gc(this));lb(this,!1);qb(this,k.stack||k.message);return}c=setTimeout;d=this.Ea;this.L=pa();e=this.va;this.aa&&(e=Math.round(e*this.aa/this.ea));e=e-(this.L-this.da);if(f=this.L-this.G)this.J=Math.round(this.K/
|
||||
(10*f))/100,864E5<=f&&(this.M=0,Hc(this));if(0>e||this.J<this.bb)-1E3>e&&(this.G-=e),e=0;this.ha+=this.aa;this.L+=e;c(d,e)}else Dc(this),this.B&&this.B.stop(pa(),Gc(this))};m.mb=function(){return 0};m.oa=function(a){mb(this,!0);this.j-=this.b;this.b=0;Ic(this,this.K);this.K=0;if(this.C.za){this.C.za=!1;this.I&&this.I.stop();var b=this.N.run;b&&(b.textContent="Run")}this.C.Eb=a};function Dc(a,b){if(a.B){for(var c=a.B,d=0;d<c.G.length;d++)Mc(c.G[d],b);a.B.Ia(b)}}
|
||||
function Nc(a){this.nc=+a.model||8080;lc.call(this,a,1E6);this.ia=Oc;oc(this);this.C.Eb=this.C.hd=!1;this.ra=0;this.ba=[];this.ka=0;Pc(this)}bb(Nc,lc);function Qc(a,b){a.ba.push(b)}m=Nc.prototype;m.reset=function(){this.C.za&&this.oa();Pc(this);oc(this);this.C.ib=!1;this.parent.reset.call(this)};function Pc(a){a.i=0;a.S=0;a.T=0;a.U=0;a.V=0;a.W=0;a.Y=0;a.ma=0;G(a,a.ka);Rc(a,0);a.w=0}function Sc(a,b){a.ka=b;G(a,b)}
|
||||
m.gc=function(){var a=this.i+this.S+this.T+this.U+this.V+this.W+this.Y|0;return a=a+this.ma+this.R+Tc(this)|0};
|
||||
m.save=function(){var a=new H(this);I(a,0,[this.i,this.S,this.T,this.U,this.V,this.W,this.Y,this.ma,this.R,Tc(this)]);I(a,1,[this.w,this.M,this.Ra]);for(var b=this.u,c=0,d=[],e=0;e<b.J;e++){var f=b.X[e];if(f.Na||f.ec){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.i=b[0];this.S=b[1];this.T=b[2];this.U=b[3];this.V=b[4];this.W=b[5];this.Y=b[6];this.ma=b[7]&65535;G(this,b[8]);Rc(this,b[9]);b=a[1];this.w=b[0];this.M=b[1];Hc(this,b[3]);a:{b=this.u;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.M){for(var f=0,h=Array(b.M),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.X[d];if(!f||!f.restore(e)){v("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
m.na=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.ra++;d=!0;break;default:d=this.parent.na.call(this,a,b,c)}return d};function Uc(a){return a.S<<8|a.T}function Vc(a,b){a.S=b>>8&255;a.T=b&255}function Wc(a){return a.U<<8|a.V}function Xc(a,b){a.U=b>>8&255;a.V=b&255}function J(a){return a.W<<8|a.Y}
|
||||
function Yc(a,b){a.W=b>>8&255;a.Y=b&255}function G(a,b){a.R=b&65535}function Zc(a){return a.ca&256?1:0}function $c(a,b){a.ca=a.ca&255|b}function ad(a){return sb[a.fa&255]?4:0}function bd(a){return(a.fa^a.xa)&16?16:0}function cd(a){return a.ca&255?0:64}function dd(a){return a.fa&128?128:0}function Tc(a){return a.ta&-214|dd(a)|cd(a)|bd(a)|ad(a)|Zc(a)}function Rc(a,b){a.ca=a.fa=a.xa=0;b&1&&(a.ca|=256);b&4||(a.fa|=1);b&16&&(a.xa|=16);b&64||(a.ca|=255);b&128&&(a.fa^=192);a.ta=a.ta&-726|b&512|2}
|
||||
function ed(a,b){a.xa=a.i^b;return a.fa=(a.ca=a.i+b)&255}function fd(a,b){a.xa=a.i^b;return a.fa=(a.ca=a.i+b+(a.ca&256?1:0))&255}function gd(a,b){a.ca=a.fa=a.xa=a.i&b;(a.i|b)&8&&(a.xa^=16);return a.ca}function hd(a,b){a.xa=b^255;b=a.fa=b+255&255;a.ca=a.ca&-256|b;return b}function id(a,b){a.xa=b;b=a.fa=b+1&255;a.ca=a.ca&-256|b;return b}function jd(a,b){return a.fa=a.ca=a.xa=a.i|b}function K(a,b){b^=255;a.xa=a.i^b;return a.fa=(a.ca=a.i+b+1^256)&255}
|
||||
function Dd(a,b){b^=255;a.xa=a.i^b;return a.fa=(a.ca=a.i+b+(a.ca&256?0:1)^256)&255}function Ed(a,b){return a.fa=a.ca=a.xa=a.i^b}m.$=function(a){return this.u.$(a)};m.ua=function(a,b){this.u.ua(a,b)};function L(a){var b=a.$(a.R);G(a,a.R+1);return b}function M(a){var b=a.u.Sa(a.R);G(a,a.R+2);return b}function O(a){var b=a.u.Sa(a.ma);a.ma=a.ma+2&65535;return b}function P(a,b){a.ma=a.ma-2&65535;a.u.Ib(a.ma,b)}
|
||||
function Fd(a){if(a.b&&a.w&255&&a.ta&512){for(var b=0;8>b&&!(a.w&1<<b);b++);a.w&=~(0>b?255:1<<b);a.ta&=-513;a.w&=-257;a.ia[199|b<<3].call(a)}return a.w&256?(a.j-=a.b,a.b=0,!1):!0}function Gd(a,b){a.w|=1<<b;a.ta&512&&(a.j-=a.b,a.b=0)}function R(a,b,c,d){d=d||2;a.N[b]&&(void 0===c&&(qb(a,"Value for "+b+" is invalid"),a.oa()),c=!a.C.za||a.C.fc?n(c,d):"--------".substr(0,d),a.N[b].textContent!=c&&(a.N[b].textContent=c))}
|
||||
m.Ia=function(a){this.ra&&(a||!this.C.za||this.C.fc)&&(R(this,"A",this.i),R(this,"B",this.S),R(this,"C",this.T),R(this,"BC",Uc(this),4),R(this,"D",this.U),R(this,"E",this.V),R(this,"DE",Wc(this),4),R(this,"H",this.W),R(this,"L",this.Y),R(this,"HL",J(this),4),R(this,"SP",this.ma,4),R(this,"PC",this.R,4),a=Tc(this),R(this,"PS",a,4),R(this,"IF",a&512?1:0,1),R(this,"SF",a&128?1:0,1),R(this,"ZF",a&64?1:0,1),R(this,"AF",a&16?1:0,1),R(this,"PF",a&4?1:0,1),R(this,"CF",a&1?1:0,1));if(a=this.N.speed)a.textContent=
|
||||
this.C.za&&this.J?this.J.toFixed(2)+"Mhz":"Stopped"};m.mb=function(a){this.C.Eb=!0;var b=this.C.hd=this.H&&Hd(this.H),c=a?this.C.Lb?0:1:-1;this.C.Lb=!1;this.j=this.b=a;if(Fd(this)){do{if(b){if(Id(this.H,this.R,c)){this.oa();break}c=1}this.ia[L(this)].call(this)}while(0<this.b)}return this.C.Eb?this.j-this.b:void 0===this.C.Eb?0:-1};Ma(function(){for(var a=C(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Nc(d);hb(d,c)}});function Jd(){this.b-=4}
|
||||
function Kd(){G(this,M(this));this.b-=10}function Ld(){G(this,O(this));this.b-=10}function Md(){var a=M(this);P(this,this.R);G(this,a);this.b-=17}
|
||||
var Oc=[Jd,function(){Vc(this,M(this));this.b-=10},function(){this.ua(Uc(this),this.i);this.b-=7},function(){Vc(this,Uc(this)+1);this.b-=5},function(){this.S=id(this,this.S);this.b-=5},function(){this.S=hd(this,this.S);this.b-=5},function(){this.S=L(this);this.b-=7},function(){var a=this.i<<1;this.i=a&255|a>>8;$c(this,a&256);this.b-=4},Jd,function(){var a;Yc(this,a=J(this)+Uc(this));$c(this,a>>8&256);this.b-=10},function(){this.i=this.$(Uc(this));this.b-=7},function(){Vc(this,Uc(this)-1);this.b-=
|
||||
5},function(){this.T=id(this,this.T);this.b-=5},function(){this.T=hd(this,this.T);this.b-=5},function(){this.T=L(this);this.b-=7},function(){var a=this.i<<8&256;this.i=(a|this.i)>>1;$c(this,a);this.b-=4},Jd,function(){Xc(this,M(this));this.b-=10},function(){this.ua(Wc(this),this.i);this.b-=7},function(){Xc(this,Wc(this)+1);this.b-=5},function(){this.U=id(this,this.U);this.b-=5},function(){this.U=hd(this,this.U);this.b-=5},function(){this.U=L(this);this.b-=7},function(){var a=this.i<<1;this.i=a&255|
|
||||
Zc(this);$c(this,a&256);this.b-=4},Jd,function(){var a;Yc(this,a=J(this)+Wc(this));$c(this,a>>8&256);this.b-=10},function(){this.i=this.$(Wc(this));this.b-=7},function(){Xc(this,Wc(this)-1);this.b-=5},function(){this.V=id(this,this.V);this.b-=5},function(){this.V=hd(this,this.V);this.b-=5},function(){this.V=L(this);this.b-=7},function(){var a=this.i<<8;this.i=(Zc(this)<<8|this.i)>>1;$c(this,a&256);this.b-=4},Jd,function(){Yc(this,M(this));this.b-=10},function(){var a=M(this);this.u.Ib(a,J(this));
|
||||
this.b-=16},function(){Yc(this,J(this)+1);this.b-=5},function(){this.W=id(this,this.W);this.b-=5},function(){this.W=hd(this,this.W);this.b-=5},function(){this.W=L(this);this.b-=7},function(){var a=0,b=Zc(this);if(bd(this)||9<(this.i&15))a|=6;if(b||154<=this.i)a|=96,b=1;this.i=ed(this,a);$c(this,b?256:0);this.b-=4},Jd,function(){var a;Yc(this,a=J(this)+J(this));$c(this,a>>8&256);this.b-=10},function(){var a;a=M(this);a=this.u.Sa(a);Yc(this,a);this.b-=16},function(){Yc(this,J(this)-1);this.b-=5},function(){this.Y=
|
||||
id(this,this.Y);this.b-=5},function(){this.Y=hd(this,this.Y);this.b-=5},function(){this.Y=L(this);this.b-=7},function(){this.i=~this.i&255;this.b-=4},Jd,function(){this.ma=M(this)&65535;this.b-=10},function(){this.ua(M(this),this.i);this.b-=13},function(){this.ma=this.ma+1&65535;this.b-=5},function(){var a=J(this);this.ua(a,id(this,this.$(a)));this.b-=10},function(){var a=J(this);this.ua(a,hd(this,this.$(a)));this.b-=10},function(){this.ua(J(this),L(this));this.b-=10},function(){this.ca|=256;this.b-=
|
||||
4},Jd,function(){var a;Yc(this,a=J(this)+this.ma);$c(this,a>>8&256);this.b-=10},function(){this.i=this.$(M(this));this.b-=13},function(){this.ma=this.ma-1&65535;this.b-=5},function(){this.i=id(this,this.i);this.b-=5},function(){this.i=hd(this,this.i);this.b-=5},function(){this.i=L(this);this.b-=7},function(){$c(this,Zc(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-=
|
||||
case "speed":this.N[b]=c;a=!0;break;case "setSpeed":this.N[b]=c,c.onclick=function(){Hc(d,d.Ra<<1,!0)},c.textContent=this.bb.toFixed(2)+"Mhz",a=!0}return a};function Ic(a,b,c){a.M+=b;c&&(a.L=a.b=0)}function Jc(a,b){var c=1;b&&1<a.Ra&&a.K&&(c=a.K/a.ga);a.va=Math.round(1E3/30);a.ea=Math.floor(a.Z/30*c);b||(a.P=a.ea);a.ha=0}function Gc(a){return a.M+a.G+a.L-a.b}function oc(a){a.K=0;a.ya=0;a.M=a.G=a.L=a.b=0;pc(a);Hc(a,1)}
|
||||
function Hc(a,b,c){var d=!1;if(void 0!==b){.8>a.K/a.bb?b=1:d=!0;a.Ra=b;b=a.ga*a.Ra;if(a.bb!=b){a.bb=b;b=a.bb.toFixed(2)+"Mhz";var e=a.N.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.B&&a.B.xb()}Ic(a,a.G);a.G=0;a.D=pa();a.J=0;Jc(a);return d}function Kc(a,b){var c=a.w.length;a.w.push([-1,b]);return c}function Lc(a,b,c){var d=-1;0<=b&&b<a.w.length&&(d=a.Z*a.Ra/1E3*c,a.w[b][0]=d)}function Mc(a){a.L-=a.b;a.b=0}
|
||||
m.cb=function(a){if(lb(this,!0)){if(!this.C.za){Hc(this);this.B&&this.B.start(this.D,Gc(this));this.C.za=!0;this.C.Lb=!0;this.I&&this.I.start();var b=this.N.run;b&&(b.textContent="Halt");this.B&&(this.B.Ia(!0),a&&this.B.xb(!0))}this.ha>=this.Z&&Jc(this,!0);this.aa=0;this.da=pa();this.J&&(a=this.da-this.J,a>this.va&&(this.D+=a,this.D>this.da&&(this.D=this.da)));try{do{for(var c=this.C.hb?1:this.ea,d=this.w.length-1;0<=d;d--){var e=this.w[d];0>e[0]||c>e[0]&&(c=e[0])}this.mb(c);var f=this.L-this.b;a=
|
||||
f;for(var h=this.w.length-1;0<=h;h--){var g=this.w[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.aa+=f;this.G+=f;Ic(this,0,!0);Fc(this,f);this.P-=f;if(0>=this.P){this.P+=this.ea;15<=++this.ya&&(this.B&&this.B.Ia(),this.ya=0);break}}while(this.C.za)}catch(k){this.oa();Dc(this);this.B&&this.B.stop(pa(),Gc(this));lb(this,!1);qb(this,k.stack||k.message);return}c=setTimeout;d=this.Ea;this.J=pa();e=this.va;this.aa&&(e=Math.round(e*this.aa/this.ea));e=e-(this.J-this.da);if(f=this.J-this.D)this.K=Math.round(this.G/
|
||||
(10*f))/100,864E5<=f&&(this.M=0,Hc(this));if(0>e||this.K<this.bb)-1E3>e&&(this.D-=e),e=0;this.ha+=this.aa;this.J+=e;c(d,e)}else Dc(this),this.B&&this.B.stop(pa(),Gc(this))};m.mb=function(){return 0};m.oa=function(a){mb(this,!0);Mc(this);Ic(this,this.G);this.G=0;if(this.C.za){this.C.za=!1;this.I&&this.I.stop();var b=this.N.run;b&&(b.textContent="Run")}this.C.Eb=a};function Dc(a,b){if(a.B){for(var c=a.B,d=0;d<c.G.length;d++)Nc(c.G[d],b);a.B.Ia(b)}}
|
||||
function Oc(a){this.nc=+a.model||8080;lc.call(this,a,1E6);this.ia=Pc;oc(this);this.C.Eb=this.C.hd=!1;this.ra=0;this.ba=[];this.ka=0;Qc(this)}bb(Oc,lc);function Rc(a,b){a.ba.push(b)}m=Oc.prototype;m.reset=function(){this.C.za&&this.oa();Qc(this);oc(this);this.C.ib=!1;this.parent.reset.call(this)};function Qc(a){a.i=0;a.S=0;a.T=0;a.U=0;a.V=0;a.W=0;a.Y=0;a.ma=0;G(a,a.ka);Sc(a,0);a.j=0}function Tc(a,b){a.ka=b;G(a,b)}
|
||||
m.gc=function(){var a=this.i+this.S+this.T+this.U+this.V+this.W+this.Y|0;return a=a+this.ma+this.R+Uc(this)|0};
|
||||
m.save=function(){var a=new H(this);I(a,0,[this.i,this.S,this.T,this.U,this.V,this.W,this.Y,this.ma,this.R,Uc(this)]);I(a,1,[this.j,this.M,this.Ra]);for(var b=this.u,c=0,d=[],e=0;e<b.J;e++){var f=b.X[e];if(f.Na||f.ec){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.i=b[0];this.S=b[1];this.T=b[2];this.U=b[3];this.V=b[4];this.W=b[5];this.Y=b[6];this.ma=b[7]&65535;G(this,b[8]);Sc(this,b[9]);b=a[1];this.j=b[0];this.M=b[1];Hc(this,b[3]);a:{b=this.u;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.M){for(var f=0,h=Array(b.M),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.X[d];if(!f||!f.restore(e)){v("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
m.na=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.ra++;d=!0;break;default:d=this.parent.na.call(this,a,b,c)}return d};function Vc(a){return a.S<<8|a.T}function Wc(a,b){a.S=b>>8&255;a.T=b&255}function Xc(a){return a.U<<8|a.V}function Yc(a,b){a.U=b>>8&255;a.V=b&255}function J(a){return a.W<<8|a.Y}
|
||||
function Zc(a,b){a.W=b>>8&255;a.Y=b&255}function G(a,b){a.R=b&65535}function $c(a){return a.ca&256?1:0}function ad(a,b){a.ca=a.ca&255|b}function bd(a){return sb[a.fa&255]?4:0}function cd(a){return(a.fa^a.xa)&16?16:0}function dd(a){return a.ca&255?0:64}function ed(a){return a.fa&128?128:0}function Uc(a){return a.ta&-214|ed(a)|dd(a)|cd(a)|bd(a)|$c(a)}function Sc(a,b){a.ca=a.fa=a.xa=0;b&1&&(a.ca|=256);b&4||(a.fa|=1);b&16&&(a.xa|=16);b&64||(a.ca|=255);b&128&&(a.fa^=192);a.ta=a.ta&-726|b&512|2}
|
||||
function fd(a,b){a.xa=a.i^b;return a.fa=(a.ca=a.i+b)&255}function gd(a,b){a.xa=a.i^b;return a.fa=(a.ca=a.i+b+(a.ca&256?1:0))&255}function hd(a,b){a.ca=a.fa=a.xa=a.i&b;(a.i|b)&8&&(a.xa^=16);return a.ca}function id(a,b){a.xa=b^255;b=a.fa=b+255&255;a.ca=a.ca&-256|b;return b}function jd(a,b){a.xa=b;b=a.fa=b+1&255;a.ca=a.ca&-256|b;return b}function kd(a,b){return a.fa=a.ca=a.xa=a.i|b}function K(a,b){b^=255;a.xa=a.i^b;return a.fa=(a.ca=a.i+b+1^256)&255}
|
||||
function Ed(a,b){b^=255;a.xa=a.i^b;return a.fa=(a.ca=a.i+b+(a.ca&256?0:1)^256)&255}function Fd(a,b){return a.fa=a.ca=a.xa=a.i^b}m.$=function(a){return this.u.$(a)};m.ua=function(a,b){this.u.ua(a,b)};function L(a){var b=a.$(a.R);G(a,a.R+1);return b}function M(a){var b=a.u.Sa(a.R);G(a,a.R+2);return b}function O(a){var b=a.u.Sa(a.ma);a.ma=a.ma+2&65535;return b}function P(a,b){a.ma=a.ma-2&65535;a.u.Ib(a.ma,b)}
|
||||
function Gd(a){if(a.b&&a.j&255&&a.ta&512){for(var b=0;8>b&&!(a.j&1<<b);b++);a.j&=~(0>b?255:1<<b);a.ta&=-513;a.j&=-257;a.ia[199|b<<3].call(a)}return a.j&256?(Mc(a),!1):!0}function Hd(a,b){a.j|=1<<b;a.ta&512&&Mc(a)}function R(a,b,c,d){d=d||2;a.N[b]&&(void 0===c&&(qb(a,"Value for "+b+" is invalid"),a.oa()),c=!a.C.za||a.C.fc?n(c,d):"--------".substr(0,d),a.N[b].textContent!=c&&(a.N[b].textContent=c))}
|
||||
m.Ia=function(a){this.ra&&(a||!this.C.za||this.C.fc)&&(R(this,"A",this.i),R(this,"B",this.S),R(this,"C",this.T),R(this,"BC",Vc(this),4),R(this,"D",this.U),R(this,"E",this.V),R(this,"DE",Xc(this),4),R(this,"H",this.W),R(this,"L",this.Y),R(this,"HL",J(this),4),R(this,"SP",this.ma,4),R(this,"PC",this.R,4),a=Uc(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.C.za&&this.K?this.K.toFixed(2)+"Mhz":"Stopped"};m.mb=function(a){this.C.Eb=!0;var b=this.C.hd=this.H&&Id(this.H),c=a?this.C.Lb?0:1:-1;this.C.Lb=!1;this.L=this.b=a;if(Gd(this)){do{if(b){if(Jd(this.H,this.R,c)){this.oa();break}c=1}this.ia[L(this)].call(this)}while(0<this.b)}return this.C.Eb?this.L-this.b:void 0===this.C.Eb?0:-1};Ma(function(){for(var a=C(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Oc(d);hb(d,c)}});function Kd(){this.b-=4}
|
||||
function Ld(){G(this,M(this));this.b-=10}function Md(){G(this,O(this));this.b-=10}function Nd(){var a=M(this);P(this,this.R);G(this,a);this.b-=17}
|
||||
var Pc=[Kd,function(){Wc(this,M(this));this.b-=10},function(){this.ua(Vc(this),this.i);this.b-=7},function(){Wc(this,Vc(this)+1);this.b-=5},function(){this.S=jd(this,this.S);this.b-=5},function(){this.S=id(this,this.S);this.b-=5},function(){this.S=L(this);this.b-=7},function(){var a=this.i<<1;this.i=a&255|a>>8;ad(this,a&256);this.b-=4},Kd,function(){var a;Zc(this,a=J(this)+Vc(this));ad(this,a>>8&256);this.b-=10},function(){this.i=this.$(Vc(this));this.b-=7},function(){Wc(this,Vc(this)-1);this.b-=
|
||||
5},function(){this.T=jd(this,this.T);this.b-=5},function(){this.T=id(this,this.T);this.b-=5},function(){this.T=L(this);this.b-=7},function(){var a=this.i<<8&256;this.i=(a|this.i)>>1;ad(this,a);this.b-=4},Kd,function(){Yc(this,M(this));this.b-=10},function(){this.ua(Xc(this),this.i);this.b-=7},function(){Yc(this,Xc(this)+1);this.b-=5},function(){this.U=jd(this,this.U);this.b-=5},function(){this.U=id(this,this.U);this.b-=5},function(){this.U=L(this);this.b-=7},function(){var a=this.i<<1;this.i=a&255|
|
||||
$c(this);ad(this,a&256);this.b-=4},Kd,function(){var a;Zc(this,a=J(this)+Xc(this));ad(this,a>>8&256);this.b-=10},function(){this.i=this.$(Xc(this));this.b-=7},function(){Yc(this,Xc(this)-1);this.b-=5},function(){this.V=jd(this,this.V);this.b-=5},function(){this.V=id(this,this.V);this.b-=5},function(){this.V=L(this);this.b-=7},function(){var a=this.i<<8;this.i=($c(this)<<8|this.i)>>1;ad(this,a&256);this.b-=4},Kd,function(){Zc(this,M(this));this.b-=10},function(){var a=M(this);this.u.Ib(a,J(this));
|
||||
this.b-=16},function(){Zc(this,J(this)+1);this.b-=5},function(){this.W=jd(this,this.W);this.b-=5},function(){this.W=id(this,this.W);this.b-=5},function(){this.W=L(this);this.b-=7},function(){var a=0,b=$c(this);if(cd(this)||9<(this.i&15))a|=6;if(b||154<=this.i)a|=96,b=1;this.i=fd(this,a);ad(this,b?256:0);this.b-=4},Kd,function(){var a;Zc(this,a=J(this)+J(this));ad(this,a>>8&256);this.b-=10},function(){var a;a=M(this);a=this.u.Sa(a);Zc(this,a);this.b-=16},function(){Zc(this,J(this)-1);this.b-=5},function(){this.Y=
|
||||
jd(this,this.Y);this.b-=5},function(){this.Y=id(this,this.Y);this.b-=5},function(){this.Y=L(this);this.b-=7},function(){this.i=~this.i&255;this.b-=4},Kd,function(){this.ma=M(this)&65535;this.b-=10},function(){this.ua(M(this),this.i);this.b-=13},function(){this.ma=this.ma+1&65535;this.b-=5},function(){var a=J(this);this.ua(a,jd(this,this.$(a)));this.b-=10},function(){var a=J(this);this.ua(a,id(this,this.$(a)));this.b-=10},function(){this.ua(J(this),L(this));this.b-=10},function(){this.ca|=256;this.b-=
|
||||
4},Kd,function(){var a;Zc(this,a=J(this)+this.ma);ad(this,a>>8&256);this.b-=10},function(){this.i=this.$(M(this));this.b-=13},function(){this.ma=this.ma-1&65535;this.b-=5},function(){this.i=jd(this,this.i);this.b-=5},function(){this.i=id(this,this.i);this.b-=5},function(){this.i=L(this);this.b-=7},function(){ad(this,$c(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.Y;this.b-=5},function(){this.S=this.$(J(this));this.b-=7},function(){this.S=this.i;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.Y;this.b-=5},function(){this.T=this.$(J(this));this.b-=7},function(){this.T=this.i;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.Y;this.b-=5},function(){this.U=this.$(J(this));this.b-=7},function(){this.U=this.i;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.Y;this.b-=5},function(){this.V=this.$(J(this));this.b-=7},function(){this.V=this.i;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.Y;this.b-=5},function(){this.W=this.$(J(this));this.b-=7},function(){this.W=this.i;this.b-=5},function(){this.Y=this.S;this.b-=5},function(){this.Y=this.T;this.b-=5},function(){this.Y=this.U;this.b-=5},function(){this.Y=this.V;this.b-=5},function(){this.Y=this.W;this.b-=5},function(){this.b-=5},function(){this.Y=this.$(J(this));this.b-=7},function(){this.Y=this.i;
|
||||
this.b-=5},function(){this.ua(J(this),this.S);this.b-=7},function(){this.ua(J(this),this.T);this.b-=7},function(){this.ua(J(this),this.U);this.b-=7},function(){this.ua(J(this),this.V);this.b-=7},function(){this.ua(J(this),this.W);this.b-=7},function(){this.ua(J(this),this.Y);this.b-=7},function(){var a=this.R-1;if(this.ba.length)for(var b=0;b<this.ba.length;b++)if(this.ba[b](a))return;this.b-=7;this.w|=256;this.j-=this.b;this.b=0;this.H&&kb(this,-2147483648)?(G(this,a),this.H.oa()):this.ta&512||(this.H&&
|
||||
G(this,a),this.oa())},function(){this.ua(J(this),this.i);this.b-=7},function(){this.i=this.S;this.b-=5},function(){this.i=this.T;this.b-=5},function(){this.i=this.U;this.b-=5},function(){this.i=this.V;this.b-=5},function(){this.i=this.W;this.b-=5},function(){this.i=this.Y;this.b-=5},function(){this.i=this.$(J(this));this.b-=7},function(){this.b-=5},function(){this.i=ed(this,this.S);this.b-=4},function(){this.i=ed(this,this.T);this.b-=4},function(){this.i=ed(this,this.U);this.b-=4},function(){this.i=
|
||||
ed(this,this.V);this.b-=4},function(){this.i=ed(this,this.W);this.b-=4},function(){this.i=ed(this,this.Y);this.b-=4},function(){this.i=ed(this,this.$(J(this)));this.b-=7},function(){this.i=ed(this,this.i);this.b-=4},function(){this.i=fd(this,this.S);this.b-=4},function(){this.i=fd(this,this.T);this.b-=4},function(){this.i=fd(this,this.U);this.b-=4},function(){this.i=fd(this,this.V);this.b-=4},function(){this.i=fd(this,this.W);this.b-=4},function(){this.i=fd(this,this.Y);this.b-=4},function(){this.i=
|
||||
fd(this,this.$(J(this)));this.b-=7},function(){this.i=fd(this,this.i);this.b-=4},function(){this.i=K(this,this.S);this.b-=4},function(){this.i=K(this,this.T);this.b-=4},function(){this.i=K(this,this.U);this.b-=4},function(){this.i=K(this,this.V);this.b-=4},function(){this.i=K(this,this.W);this.b-=4},function(){this.i=K(this,this.Y);this.b-=4},function(){this.i=K(this,this.$(J(this)));this.b-=7},function(){this.i=K(this,this.i);this.b-=4},function(){this.i=Dd(this,this.S);this.b-=4},function(){this.i=
|
||||
Dd(this,this.T);this.b-=4},function(){this.i=Dd(this,this.U);this.b-=4},function(){this.i=Dd(this,this.V);this.b-=4},function(){this.i=Dd(this,this.W);this.b-=4},function(){this.i=Dd(this,this.Y);this.b-=4},function(){this.i=Dd(this,this.$(J(this)));this.b-=7},function(){this.i=Dd(this,this.i);this.b-=4},function(){this.i=gd(this,this.S);this.b-=4},function(){this.i=gd(this,this.T);this.b-=4},function(){this.i=gd(this,this.U);this.b-=4},function(){this.i=gd(this,this.V);this.b-=4},function(){this.i=
|
||||
gd(this,this.W);this.b-=4},function(){this.i=gd(this,this.Y);this.b-=4},function(){this.i=gd(this,this.$(J(this)));this.b-=7},function(){this.i=gd(this,this.i);this.b-=4},function(){this.i=Ed(this,this.S);this.b-=4},function(){this.i=Ed(this,this.T);this.b-=4},function(){this.i=Ed(this,this.U);this.b-=4},function(){this.i=Ed(this,this.V);this.b-=4},function(){this.i=Ed(this,this.W);this.b-=4},function(){this.i=Ed(this,this.Y);this.b-=4},function(){this.i=Ed(this,this.$(J(this)));this.b-=7},function(){this.i=
|
||||
Ed(this,this.i);this.b-=4},function(){this.i=jd(this,this.S);this.b-=4},function(){this.i=jd(this,this.T);this.b-=4},function(){this.i=jd(this,this.U);this.b-=4},function(){this.i=jd(this,this.V);this.b-=4},function(){this.i=jd(this,this.W);this.b-=4},function(){this.i=jd(this,this.Y);this.b-=4},function(){this.i=jd(this,this.$(J(this)));this.b-=7},function(){this.i=jd(this,this.i);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.Y);this.b-=4},function(){K(this,this.$(J(this)));this.b-=7},function(){K(this,this.i);this.b-=4},function(){cd(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){Vc(this,O(this));this.b-=10},function(){var a=M(this);cd(this)||G(this,a);this.b-=10},Kd,function(){var a=M(this);cd(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,Uc(this));this.b-=11},function(){this.i=ed(this,
|
||||
L(this));this.b-=7},function(){P(this,this.R);G(this,0);this.b-=11},function(){cd(this)&&(G(this,O(this)),this.b-=6);this.b-=5},Ld,function(){var a=M(this);cd(this)&&G(this,a);this.b-=10},Kd,function(){var a=M(this);cd(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Md,function(){this.i=fd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,8);this.b-=11},function(){Zc(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){Xc(this,O(this));this.b-=10},function(){var a=M(this);Zc(this)||
|
||||
G(this,a);this.b-=10},function(){var a=L(this);Ub(this.u,a,this.i,this.R+-2&65535);this.b-=10},function(){var a=M(this);Zc(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,Wc(this));this.b-=11},function(){this.i=K(this,L(this));this.b-=7},function(){P(this,this.R);G(this,16);this.b-=11},function(){Zc(this)&&(G(this,O(this)),this.b-=6);this.b-=5},Ld,function(){var a=M(this);Zc(this)&&G(this,a);this.b-=10},function(){var a=L(this);this.i=Ib(this.u,a,this.R+-2&65535)&255;this.b-=
|
||||
10},function(){var a=M(this);Zc(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Md,function(){this.i=Dd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,24);this.b-=11},function(){ad(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){Yc(this,O(this));this.b-=10},function(){var a=M(this);ad(this)||G(this,a);this.b-=10},function(){var a=O(this);P(this,J(this));Yc(this,a);this.b-=18},function(){var a=M(this);ad(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,
|
||||
J(this));this.b-=11},function(){this.i=gd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,32);this.b-=11},function(){ad(this)&&(G(this,O(this)),this.b-=6);this.b-=5},function(){G(this,J(this));this.b-=5},function(){var a=M(this);ad(this)&&G(this,a);this.b-=10},function(){var a=J(this);Yc(this,Wc(this));Xc(this,a);this.b-=5},function(){var a=M(this);ad(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Md,function(){this.i=Ed(this,L(this));this.b-=7},function(){P(this,this.R);G(this,
|
||||
40);this.b-=11},function(){dd(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){var a=O(this);Rc(this,a&255|this.ta&-256);this.i=a>>8;this.b-=10},function(){var a=M(this);dd(this)||G(this,a);this.b-=10},function(){this.ta&=-513;this.b-=4},function(){var a=M(this);dd(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,Tc(this)&255|this.i<<8);this.b-=11},function(){this.i=jd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,48);this.b-=11},function(){dd(this)&&(G(this,
|
||||
O(this)),this.b-=6);this.b-=5},function(){this.ma=J(this)&65535;this.b-=5},function(){var a=M(this);dd(this)&&G(this,a);this.b-=10},function(){this.ta|=512;this.b-=4;Fd(this)},function(){var a=M(this);dd(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Md,function(){K(this,L(this));this.b-=7},function(){P(this,this.R);G(this,56);this.b-=11}];
|
||||
function S(a){w.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!Nd[b]&&Oa("Unrecognized ChipSet model: "+b);this.w=Nd[b]||{};a.sound&&(this.ea=null,window&&(this.ea=window.AudioContext||window.webkitAudioContext),this.ea&&new this.ea);E(this)}bb(S);
|
||||
this.b-=5},function(){this.ua(J(this),this.S);this.b-=7},function(){this.ua(J(this),this.T);this.b-=7},function(){this.ua(J(this),this.U);this.b-=7},function(){this.ua(J(this),this.V);this.b-=7},function(){this.ua(J(this),this.W);this.b-=7},function(){this.ua(J(this),this.Y);this.b-=7},function(){var a=this.R-1;if(this.ba.length)for(var b=0;b<this.ba.length;b++)if(this.ba[b](a))return;this.b-=7;this.j|=256;Mc(this);this.H&&kb(this,-2147483648)?(G(this,a),this.H.oa()):this.ta&512||(this.H&&G(this,
|
||||
a),this.oa())},function(){this.ua(J(this),this.i);this.b-=7},function(){this.i=this.S;this.b-=5},function(){this.i=this.T;this.b-=5},function(){this.i=this.U;this.b-=5},function(){this.i=this.V;this.b-=5},function(){this.i=this.W;this.b-=5},function(){this.i=this.Y;this.b-=5},function(){this.i=this.$(J(this));this.b-=7},function(){this.b-=5},function(){this.i=fd(this,this.S);this.b-=4},function(){this.i=fd(this,this.T);this.b-=4},function(){this.i=fd(this,this.U);this.b-=4},function(){this.i=fd(this,
|
||||
this.V);this.b-=4},function(){this.i=fd(this,this.W);this.b-=4},function(){this.i=fd(this,this.Y);this.b-=4},function(){this.i=fd(this,this.$(J(this)));this.b-=7},function(){this.i=fd(this,this.i);this.b-=4},function(){this.i=gd(this,this.S);this.b-=4},function(){this.i=gd(this,this.T);this.b-=4},function(){this.i=gd(this,this.U);this.b-=4},function(){this.i=gd(this,this.V);this.b-=4},function(){this.i=gd(this,this.W);this.b-=4},function(){this.i=gd(this,this.Y);this.b-=4},function(){this.i=gd(this,
|
||||
this.$(J(this)));this.b-=7},function(){this.i=gd(this,this.i);this.b-=4},function(){this.i=K(this,this.S);this.b-=4},function(){this.i=K(this,this.T);this.b-=4},function(){this.i=K(this,this.U);this.b-=4},function(){this.i=K(this,this.V);this.b-=4},function(){this.i=K(this,this.W);this.b-=4},function(){this.i=K(this,this.Y);this.b-=4},function(){this.i=K(this,this.$(J(this)));this.b-=7},function(){this.i=K(this,this.i);this.b-=4},function(){this.i=Ed(this,this.S);this.b-=4},function(){this.i=Ed(this,
|
||||
this.T);this.b-=4},function(){this.i=Ed(this,this.U);this.b-=4},function(){this.i=Ed(this,this.V);this.b-=4},function(){this.i=Ed(this,this.W);this.b-=4},function(){this.i=Ed(this,this.Y);this.b-=4},function(){this.i=Ed(this,this.$(J(this)));this.b-=7},function(){this.i=Ed(this,this.i);this.b-=4},function(){this.i=hd(this,this.S);this.b-=4},function(){this.i=hd(this,this.T);this.b-=4},function(){this.i=hd(this,this.U);this.b-=4},function(){this.i=hd(this,this.V);this.b-=4},function(){this.i=hd(this,
|
||||
this.W);this.b-=4},function(){this.i=hd(this,this.Y);this.b-=4},function(){this.i=hd(this,this.$(J(this)));this.b-=7},function(){this.i=hd(this,this.i);this.b-=4},function(){this.i=Fd(this,this.S);this.b-=4},function(){this.i=Fd(this,this.T);this.b-=4},function(){this.i=Fd(this,this.U);this.b-=4},function(){this.i=Fd(this,this.V);this.b-=4},function(){this.i=Fd(this,this.W);this.b-=4},function(){this.i=Fd(this,this.Y);this.b-=4},function(){this.i=Fd(this,this.$(J(this)));this.b-=7},function(){this.i=
|
||||
Fd(this,this.i);this.b-=4},function(){this.i=kd(this,this.S);this.b-=4},function(){this.i=kd(this,this.T);this.b-=4},function(){this.i=kd(this,this.U);this.b-=4},function(){this.i=kd(this,this.V);this.b-=4},function(){this.i=kd(this,this.W);this.b-=4},function(){this.i=kd(this,this.Y);this.b-=4},function(){this.i=kd(this,this.$(J(this)));this.b-=7},function(){this.i=kd(this,this.i);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.Y);this.b-=4},function(){K(this,this.$(J(this)));this.b-=7},function(){K(this,this.i);this.b-=4},function(){dd(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){Wc(this,O(this));this.b-=10},function(){var a=M(this);dd(this)||G(this,a);this.b-=10},Ld,function(){var a=M(this);dd(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,Vc(this));this.b-=11},function(){this.i=fd(this,
|
||||
L(this));this.b-=7},function(){P(this,this.R);G(this,0);this.b-=11},function(){dd(this)&&(G(this,O(this)),this.b-=6);this.b-=5},Md,function(){var a=M(this);dd(this)&&G(this,a);this.b-=10},Ld,function(){var a=M(this);dd(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Nd,function(){this.i=gd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,8);this.b-=11},function(){$c(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){Yc(this,O(this));this.b-=10},function(){var a=M(this);$c(this)||
|
||||
G(this,a);this.b-=10},function(){var a=L(this);Ub(this.u,a,this.i,this.R+-2&65535);this.b-=10},function(){var a=M(this);$c(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,Xc(this));this.b-=11},function(){this.i=K(this,L(this));this.b-=7},function(){P(this,this.R);G(this,16);this.b-=11},function(){$c(this)&&(G(this,O(this)),this.b-=6);this.b-=5},Md,function(){var a=M(this);$c(this)&&G(this,a);this.b-=10},function(){var a=L(this);this.i=Ib(this.u,a,this.R+-2&65535)&255;this.b-=
|
||||
10},function(){var a=M(this);$c(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Nd,function(){this.i=Ed(this,L(this));this.b-=7},function(){P(this,this.R);G(this,24);this.b-=11},function(){bd(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){Zc(this,O(this));this.b-=10},function(){var a=M(this);bd(this)||G(this,a);this.b-=10},function(){var a=O(this);P(this,J(this));Zc(this,a);this.b-=18},function(){var a=M(this);bd(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,
|
||||
J(this));this.b-=11},function(){this.i=hd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,32);this.b-=11},function(){bd(this)&&(G(this,O(this)),this.b-=6);this.b-=5},function(){G(this,J(this));this.b-=5},function(){var a=M(this);bd(this)&&G(this,a);this.b-=10},function(){var a=J(this);Zc(this,Xc(this));Yc(this,a);this.b-=5},function(){var a=M(this);bd(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Nd,function(){this.i=Fd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,
|
||||
40);this.b-=11},function(){ed(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){var a=O(this);Sc(this,a&255|this.ta&-256);this.i=a>>8;this.b-=10},function(){var a=M(this);ed(this)||G(this,a);this.b-=10},function(){this.ta&=-513;this.b-=4},function(){var a=M(this);ed(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,Uc(this)&255|this.i<<8);this.b-=11},function(){this.i=kd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,48);this.b-=11},function(){ed(this)&&(G(this,
|
||||
O(this)),this.b-=6);this.b-=5},function(){this.ma=J(this)&65535;this.b-=5},function(){var a=M(this);ed(this)&&G(this,a);this.b-=10},function(){this.ta|=512;this.b-=4;Gd(this)},function(){var a=M(this);ed(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Nd,function(){K(this,L(this));this.b-=7},function(){P(this,this.R);G(this,56);this.b-=11}];
|
||||
function S(a){w.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!Od[b]&&Oa("Unrecognized ChipSet model: "+b);this.w=Od[b]||{};a.sound&&(this.ea=null,window&&(this.ea=window.AudioContext||window.webkitAudioContext),this.ea&&new this.ea);E(this)}bb(S);
|
||||
var T={Aa:1978.1,cd:{Ba:0,Od:1,Sd:16,Zd:32,he:64,ge:128,ob:14},Xa:{Ba:1,Ec:1,Xc:2,Tc:4,Uc:16,Vc:32,Wc:64,ob:8},dd:{Ba:2,Nd:3,pe:4,Pd:8,ce:16,de:32,ee:64,Qd:128,ob:0},le:{Ba:3},je:{Ba:2,$d:7},ne:{Ba:3,qe:1,me:2,fe:4,Xd:8,Rd:16,Kd:32},ke:{Ba:4},oe:{Ba:5,Td:1,Ud:2,Vd:4,Wd:8,re:16}},U={Aa:100,Ja:{Ba:66,ac:1,Xb:2,Sc:4,be:8,ae:16,Zb:32,Yb:64,Ub:128},Dc:{Ba:66,INIT:0},Va:{Ba:194,Md:0,Tb:16,Yc:32,$b:48,Ic:0,Jc:32},Ab:{Ba:162,ie:0,Lc:0,Hc:0,Kc:0,Gc:0},Ka:{Yd:{Ba:98},Ua:{Ac:0,zc:1,$c:2,ed:4,Fc:5,Zc:6,ad:7},
|
||||
Bb:16383}},Nd={SI1978:T,VT100:U};S.prototype.na=function(){return!1};S.prototype.Pa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;this.B=a;this.K=vb(a,"Keyboard");this.Ea=vb(a,"SerialPort");this.video=vb(a,"Video");Hb(b,this,this.w.Gb);Tb(b,this,this.w.Hb);if(d){var e=this;Od(d,16384,function(){for(var a="",b=0;b<e.D.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=t(e.D[b]);e.H.g(a)})}};S.prototype.Da=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};
|
||||
Bb:16383}},Od={SI1978:T,VT100:U};S.prototype.na=function(){return!1};S.prototype.Pa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;this.B=a;this.K=vb(a,"Keyboard");this.Ea=vb(a,"SerialPort");this.video=vb(a,"Video");Hb(b,this,this.w.Gb);Tb(b,this,this.w.Hb);if(d){var e=this;Pd(d,16384,function(){for(var a="",b=0;b<e.I.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=t(e.I[b]);e.H.g(a)})}};S.prototype.Da=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.cd.ob,T.Xa.ob,T.dd.ob,0,0,0,0]];
|
||||
U.INIT=[[U.Dc.INIT,U.Ja.Xb|U.Ja.Sc],[U.Va.Ic,U.Va.Jc],[U.Ab.Lc,U.Ab.Hc,U.Ab.Kc,U.Ab.Gc],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];m=S.prototype;m.reset=function(){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 T.Aa:I(a,0,[this.va,this.G,this.ya,this.Z,this.da,this.ka,this.ra]);break;case U.Aa:I(a,0,[this.ga,this.J]),I(a,1,[this.L,this.M]),I(a,2,[this.I,this.aa,this.ia,this.ha]),I(a,3,[this.P,this.j,this.O,this.ba,this.D])}return a.data()};
|
||||
m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.w.Aa){case T.Aa:return this.va=b[0],this.G=b[1],this.ya=b[2],this.Z=b[3],this.da=b[4],this.ka=b[5],this.ra=b[6],!0;case U.Aa:return this.ga=b[0],this.J=b[1],b=a[1],this.L=b[0],this.M=b[1],b=a[2],this.I=b[0],this.aa=b[1],this.ia=b[2],this.ha=b[3],b=a[3],this.P=b[0],this.j=b[1],this.O=b[2],this.ba=b[3],this.D=b[4],!0}return!1};m.start=function(){};m.stop=function(){};m.md=function(a,b){var c=this.va;D(this,a,null,b,"STATUS0",c,!0);return c};
|
||||
m.save=function(){var a=new H(this);switch(this.w.Aa){case T.Aa:I(a,0,[this.va,this.G,this.ya,this.Z,this.da,this.ka,this.ra]);break;case U.Aa:I(a,0,[this.ga,this.J]),I(a,1,[this.L,this.M]),I(a,2,[this.D,this.aa,this.ia,this.ha]),I(a,3,[this.P,this.j,this.O,this.ba,this.I])}return a.data()};
|
||||
m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.w.Aa){case T.Aa:return this.va=b[0],this.G=b[1],this.ya=b[2],this.Z=b[3],this.da=b[4],this.ka=b[5],this.ra=b[6],!0;case U.Aa:return this.ga=b[0],this.J=b[1],b=a[1],this.L=b[0],this.M=b[1],b=a[2],this.D=b[0],this.aa=b[1],this.ia=b[2],this.ha=b[3],b=a[3],this.P=b[0],this.j=b[1],this.O=b[2],this.ba=b[3],this.I=b[4],!0}return!1};m.start=function(){};m.stop=function(){};m.md=function(a,b){var c=this.va;D(this,a,null,b,"STATUS0",c,!0);return c};
|
||||
m.nd=function(a,b){var c=this.G;D(this,a,null,b,"STATUS1",c,!0);return c};m.od=function(a,b){var c=this.ya;D(this,a,null,b,"STATUS2",c,!0);return c};m.ld=function(a,b){var c=this.Z>>8-this.da&255;D(this,a,null,b,"SHIFT.RESULT",c,!0);return c};m.vd=function(a,b,c){D(this,a,b,c,"SHIFT.COUNT",null,!0);this.da=b};m.xd=function(a,b,c){D(this,a,b,c,"SOUND1",null,!0);this.ka=b};m.wd=function(a,b,c){D(this,a,b,c,"SHIFT.DATA",null,!0);this.Z=b<<8|this.Z>>8};
|
||||
m.yd=function(a,b,c){D(this,a,b,c,"SOUND2",null,!0);this.ra=b};m.zd=function(a,b,c){D(this,a,b,c,"WATCHDOG",null,!0)};function Pd(a){var b=0,c=0,d=~a.P;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.pd=function(a,b){var c=this.J,c=c&~U.Ja.Yb;if((Gc(this.b)&64)<<1&&(c|=U.Ja.Yb,c!=this.J)){var d,e;d=this.O&1;e=this.O>>1&7;switch(e){case U.Ka.Ua.ad:break;case U.Ka.Ua.zc:this.P=this.P<<1|d;break;case U.Ka.Ua.Fc:d=Pd(this);this.D[d]=U.Ka.Bb;jb(this,"doNVRCommand(): erase data at addr "+t(d));break;case U.Ka.Ua.Ac:this.j=this.j<<1|d;break;case U.Ka.Ua.ed:d=Pd(this);e=this.j&U.Ka.Bb;this.D[d]=e;jb(this,"doNVRCommand(): write data "+t(e)+" to addr "+t(d));break;case U.Ka.Ua.Zc:d=Pd(this);e=this.D[d];
|
||||
m.yd=function(a,b,c){D(this,a,b,c,"SOUND2",null,!0);this.ra=b};m.zd=function(a,b,c){D(this,a,b,c,"WATCHDOG",null,!0)};function Qd(a){var b=0,c=0,d=~a.P;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.pd=function(a,b){var c=this.J,c=c&~U.Ja.Yb;if((Gc(this.b)&64)<<1&&(c|=U.Ja.Yb,c!=this.J)){var d,e;d=this.O&1;e=this.O>>1&7;switch(e){case U.Ka.Ua.ad:break;case U.Ka.Ua.zc:this.P=this.P<<1|d;break;case U.Ka.Ua.Fc:d=Qd(this);this.I[d]=U.Ka.Bb;jb(this,"doNVRCommand(): erase data at addr "+t(d));break;case U.Ka.Ua.Ac:this.j=this.j<<1|d;break;case U.Ka.Ua.ed:d=Qd(this);e=this.j&U.Ka.Bb;this.I[d]=e;jb(this,"doNVRCommand(): write data "+t(e)+" to addr "+t(d));break;case U.Ka.Ua.Zc:d=Qd(this);e=this.I[d];
|
||||
null==e&&(e=U.Ka.Bb);this.j=e;jb(this,"doNVRCommand(): read data "+t(e)+" from addr "+t(d));break;case U.Ka.Ua.$c:this.j<<=1;this.ba=this.j&U.Ka.Bb+1;break;default:jb(this,"doNVRCommand(): unrecognized command "+da(e))}}c&=~U.Ja.Zb;this.ba&&(c|=U.Ja.Zb);c&=~U.Ja.Ub;if(d=this.K){d=this.K;if(e=d.D)e=d.b,e=Gc(d.b)>=d.J+e.Z*e.Ra/1E3*1.2731488;e&&(d.D=!1);d=!d.D}d&&(c|=U.Ja.Ub);c&=~U.Ja.ac;this.Ea&&this.Ea.Ca&1&&(c|=U.Ja.ac);this.J=c;D(this,a,null,b,"FLAGS",c);return c};
|
||||
m.Ad=function(a,b,c){D(this,a,b,c,"BRIGHTNESS");this.ga=b};m.Dd=function(a,b,c){D(this,a,b,c,"NVR.LATCH");this.O=b};m.Cd=function(a,b,c){D(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.I=this.I&-4|a;break;case 1:this.I=this.I&-13|a<<2;this.video&&(b=this.video,a=this.I,jb(b,"updateScrollOffset("+a+")"),b.eb!==a&&((b.eb=a)?Mc(b,!0):b.rb=!0));break;case 2:switch(a){case 0:this.aa=~this.aa;break;case 2:case 3:this.ia=3-a}break;case 3:this.ha=a}};
|
||||
m.Bd=function(a,b,c){D(this,a,b,c,"DC011");b&U.Va.Yc?(b&=U.Va.$b,this.M!=b&&(this.M=b,this.video&&(a=this.video,b=this.M==U.Va.$b?50:60,jb(a,"updateRate("+b+")"),a.vc=b))):(b&=U.Va.Tb,this.L!=b&&(this.L=b,this.video&&(a=this.L==U.Va.Tb?132:80,b=this.video,jb(b,"updateDimensions("+a+","+(80<a&&this.J&U.Ja.Xb?14:24)+")"),b.ba=a,b.pa=b.jc,80<a&&b.pa--,Qd(b)&&Rd(b))))};T.Gb={0:S.prototype.md,1:S.prototype.nd,2:S.prototype.od,3:S.prototype.ld};
|
||||
m.Ad=function(a,b,c){D(this,a,b,c,"BRIGHTNESS");this.ga=b};m.Dd=function(a,b,c){D(this,a,b,c,"NVR.LATCH");this.O=b};m.Cd=function(a,b,c){D(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.D=this.D&-4|a;break;case 1:this.D=this.D&-13|a<<2;this.video&&(b=this.video,a=this.D,jb(b,"updateScrollOffset("+a+")"),b.eb!==a&&((b.eb=a)?Nc(b,!0):b.rb=!0));break;case 2:switch(a){case 0:this.aa=~this.aa;break;case 2:case 3:this.ia=3-a}break;case 3:this.ha=a}};
|
||||
m.Bd=function(a,b,c){D(this,a,b,c,"DC011");b&U.Va.Yc?(b&=U.Va.$b,this.M!=b&&(this.M=b,this.video&&(a=this.video,b=this.M==U.Va.$b?50:60,jb(a,"updateRate("+b+")"),a.vc=b))):(b&=U.Va.Tb,this.L!=b&&(this.L=b,this.video&&(a=this.L==U.Va.Tb?132:80,b=this.video,jb(b,"updateDimensions("+a+","+(80<a&&this.J&U.Ja.Xb?14:24)+")"),b.ba=a,b.pa=b.jc,80<a&&b.pa--,Rd(b)&&Sd(b))))};T.Gb={0:S.prototype.md,1:S.prototype.nd,2:S.prototype.od,3:S.prototype.ld};
|
||||
T.Hb={2:S.prototype.vd,3:S.prototype.xd,4:S.prototype.wd,5:S.prototype.yd,6:S.prototype.zd};U.Gb={66:S.prototype.pd};U.Hb={66:S.prototype.Ad,98:S.prototype.Dd,162:S.prototype.Cd,194:S.prototype.Bd};Ma(function(){for(var a=C(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new S(d);hb(d,c)}});
|
||||
function Sd(a){w.call(this,"ROM",a,Sd);this.B=null;this.I=a.addr;this.j=a.size;this.G=a.writable;this.w=a.alias;this.D=a.file;this.K=ea(this.D);if(this.D){a=this.D;var b=fa(this.K);"json"!=b&&"hex"!=b&&(a=ha()+"/api/v1/dump?file="+this.D+"&format=bytes&decimal=true");var c=this;sa(a,null,!0,function(a,b,f){Td(c,a,b,f)})}}bb(Sd);var Ud=[0,5];Sd.prototype.Pa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;Vd(this)};
|
||||
Sd.prototype.Da=function(){if(this.Qa){if(this.H){var a=this.H,b=this.id,c=this.I,d=this.j,e=this.Qa,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var p=f,k=[k>>>0,h],q=oa(p,k,a.Ta);0>q&&p.splice(-(q+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.G.push({se:b,F:c,rd:d,Qa:e,bc:f})}delete this.Qa}return!0};Sd.prototype.Ha=function(){return!0};
|
||||
function Td(a,b,c,d){if(d)a.ja("Unable to load system ROM (error "+d+": "+b+")");else{db(a.Cb,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.Qa=e.symbols;if(!a.B.length){v("Empty ROM: "+b);return}if(1==a.B.length){v(a.B[0]);return}}catch(g){a.ja("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.B=Array(b.length),e=0;e<b.length;e++)a.B[e]=ca(b[e],16);Vd(a)}}
|
||||
function Vd(a){if(!pb(a))if(!a.D)E(a);else if(a.B&&a.u){a.j||(a.j=a.B.length);if(a.B.length!=a.j)qb(a,"ROM size (0x"+n(a.B.length)+") does not match specified size ("+("0x"+n(a.j))+")");else if(Wd(a,a.I)){var b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.u,h=d.j,g=[],k=d.I>>>f.qa;0<h&&k<f.X.length;)g.push(f.X[k++]),h-=f.Ga;f=d.u;d=d.j;h=0;for(e>>>=f.qa;0<d&&e<f.X.length;){k=g[h++];if(!k)break;f.X[e++]=k;d-=f.Ga}}delete a.B}E(a)}}
|
||||
function Wd(a,b){if(zb(a.u,b,a.j,a.G?1:ac)){var c;for(c=0;c<a.B.length;c++)Fb(a.u,b+c,a.B[c]);if(a.G&&256==b){for(c=0;c<Ud.length;c++)Fb(a.u,Ud[c],118);Qc(a.b,function(a){return function(b){if(0<=Ud.indexOf(b)){var c=!1,h=a.b,g=a.H;if(5==b)switch(c=!0,h.T){case 2:Xd(a,String.fromCharCode(h.V));break;case 9:for(var k=Wc(h),l="",p=255;p--;){var q=a.b.$(k++);if(36==q)break;l+=String.fromCharCode(q)}Xd(a,l);break;default:c=!1}c?Ld.call(h):g&&(a.g("\nCP/M vector "+t(b)),G(h,b),g.oa());b=!0}else b=!1;return b}}(a));
|
||||
Sc(a.b,b)}return!0}return!1}function Xd(a,b){b=b.replace(/\r/g,"");a.Fa&&(a.Fa.value+=b,a.Fa.scrollTop=a.Fa.scrollHeight)}Ma(function(){for(var a=C(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Sd(d);hb(d,c)}});function Yd(a){w.call(this,"RAM",a,Yd);this.w=a.addr;this.j=a.size;this.B=!1}bb(Yd);m=Yd.prototype;m.Pa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;E(this)};m.Da=function(a,b){b||this.reset();return!0};m.Ha=function(a){return a?this.save():!0};
|
||||
m.reset=function(){!this.B&&this.j&&zb(this.u,this.w,this.j,1)&&(this.B=!0);this.B||v("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ma(function(){for(var a=C(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Yd(d);hb(d,c)}});function Zd(a){w.call(this,"Keyboard",a,Zd,65536);(a=a.model)&&!$d[a]&&Oa("Unrecognized Keyboard8080 model: "+a);this.u=$d[a]||{};this.reset();E(this)}bb(Zd);
|
||||
var ae={Aa:1978.1,A:{},Sb:{65:37,68:39,76:32},pb:{},Wa:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},V={Aa:100,A:{},Sb:{},pb:{},Wa:{setup:120},Bc:{Ba:130,INIT:127},La:{Ba:130,Qc:1,Pc:2,Oc:4,Nc:8,Rc:16,Wb:32,Vb:63,bd:64,Ld:128,INIT:0},Mc:127};V.A[46]=3;V.A[80]=5;V.A[79]=6;V.A[89]=7;V.A[84]=8;V.A[87]=9;V.A[81]=10;V.A[39]=16;V.A[221]=20;V.A[219]=21;V.A[73]=22;V.A[85]=23;V.A[82]=24;V.A[69]=25;V.A[49]=26;V.A[37]=32;V.A[40]=34;V.A[117]=35;V.A[19]=35;V.A[192]=36;V.A[189]=37;V.A[57]=38;V.A[55]=39;
|
||||
function Td(a){w.call(this,"ROM",a,Td);this.B=null;this.D=a.addr;this.j=a.size;this.G=a.writable;this.w=a.alias;this.I=a.file;this.K=ea(this.I);if(this.I){a=this.I;var b=fa(this.K);"json"!=b&&"hex"!=b&&(a=ha()+"/api/v1/dump?file="+this.I+"&format=bytes&decimal=true");var c=this;sa(a,null,!0,function(a,b,f){Ud(c,a,b,f)})}}bb(Td);var Vd=[0,5];Td.prototype.Pa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;Wd(this)};
|
||||
Td.prototype.Da=function(){if(this.Qa){if(this.H){var a=this.H,b=this.id,c=this.D,d=this.j,e=this.Qa,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var p=f,k=[k>>>0,h],q=oa(p,k,a.Ta);0>q&&p.splice(-(q+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.G.push({se:b,F:c,rd:d,Qa:e,bc:f})}delete this.Qa}return!0};Td.prototype.Ha=function(){return!0};
|
||||
function Ud(a,b,c,d){if(d)a.ja("Unable to load system ROM (error "+d+": "+b+")");else{db(a.Cb,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.Qa=e.symbols;if(!a.B.length){v("Empty ROM: "+b);return}if(1==a.B.length){v(a.B[0]);return}}catch(g){a.ja("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.B=Array(b.length),e=0;e<b.length;e++)a.B[e]=ca(b[e],16);Wd(a)}}
|
||||
function Wd(a){if(!pb(a))if(!a.I)E(a);else if(a.B&&a.u){a.j||(a.j=a.B.length);if(a.B.length!=a.j)qb(a,"ROM size (0x"+n(a.B.length)+") does not match specified size ("+("0x"+n(a.j))+")");else if(Xd(a,a.D)){var b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.u,h=d.j,g=[],k=d.D>>>f.qa;0<h&&k<f.X.length;)g.push(f.X[k++]),h-=f.Ga;f=d.u;d=d.j;h=0;for(e>>>=f.qa;0<d&&e<f.X.length;){k=g[h++];if(!k)break;f.X[e++]=k;d-=f.Ga}}delete a.B}E(a)}}
|
||||
function Xd(a,b){if(zb(a.u,b,a.j,a.G?1:ac)){var c;for(c=0;c<a.B.length;c++)Eb(a.u,b+c,a.B[c]);if(a.G&&256==b){for(c=0;c<Vd.length;c++)Eb(a.u,Vd[c],118);Rc(a.b,function(a){return function(b){if(0<=Vd.indexOf(b)){var c=!1,h=a.b,g=a.H;if(5==b)switch(c=!0,h.T){case 2:Yd(a,String.fromCharCode(h.V));break;case 9:for(var k=Xc(h),l="",p=255;p--;){var q=a.b.$(k++);if(36==q)break;l+=String.fromCharCode(q)}Yd(a,l);break;default:c=!1}c?Md.call(h):g&&(a.g("\nCP/M vector "+t(b)),G(h,b),g.oa());b=!0}else b=!1;return b}}(a));
|
||||
Tc(a.b,b)}return!0}return!1}function Yd(a,b){b=b.replace(/\r/g,"");a.Fa&&(a.Fa.value+=b,a.Fa.scrollTop=a.Fa.scrollHeight)}Ma(function(){for(var a=C(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Td(d);hb(d,c)}});function Zd(a){w.call(this,"RAM",a,Zd);this.w=a.addr;this.j=a.size;this.B=!1}bb(Zd);m=Zd.prototype;m.Pa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;E(this)};m.Da=function(a,b){b||this.reset();return!0};m.Ha=function(a){return a?this.save():!0};
|
||||
m.reset=function(){!this.B&&this.j&&zb(this.u,this.w,this.j,1)&&(this.B=!0);this.B||v("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ma(function(){for(var a=C(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Zd(d);hb(d,c)}});function $d(a){w.call(this,"Keyboard",a,$d,65536);(a=a.model)&&!ae[a]&&Oa("Unrecognized Keyboard8080 model: "+a);this.u=ae[a]||{};this.reset();E(this)}bb($d);
|
||||
var be={Aa:1978.1,A:{},Sb:{65:37,68:39,76:32},pb:{},Wa:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},V={Aa:100,A:{},Sb:{},pb:{},Wa:{setup:120},Bc:{Ba:130,INIT:127},La:{Ba:130,Qc:1,Pc:2,Oc:4,Nc:8,Rc:16,Wb:32,Vb:63,bd:64,Ld:128,INIT:0},Mc:127};V.A[46]=3;V.A[80]=5;V.A[79]=6;V.A[89]=7;V.A[84]=8;V.A[87]=9;V.A[81]=10;V.A[39]=16;V.A[221]=20;V.A[219]=21;V.A[73]=22;V.A[85]=23;V.A[82]=24;V.A[69]=25;V.A[49]=26;V.A[37]=32;V.A[40]=34;V.A[117]=35;V.A[19]=35;V.A[192]=36;V.A[189]=37;V.A[57]=38;V.A[55]=39;
|
||||
V.A[52]=40;V.A[51]=41;V.A[27]=42;V.A[38]=48;V.A[114]=49;V.A[112]=50;V.A[8]=51;V.A[187]=52;V.A[48]=53;V.A[56]=54;V.A[54]=55;V.A[53]=56;V.A[50]=57;V.A[9]=58;V.A[103]=64;V.A[115]=65;V.A[113]=66;V.A[96]=67;V.A[118]=68;V.A[220]=69;V.A[76]=70;V.A[75]=71;V.A[71]=72;V.A[70]=73;V.A[65]=74;V.A[104]=80;V.A[2013]=81;V.A[98]=82;V.A[97]=83;V.A[222]=85;V.A[186]=86;V.A[74]=87;V.A[72]=88;V.A[68]=89;V.A[83]=90;V.A[110]=96;V.A[116]=97;V.A[101]=98;V.A[100]=99;V.A[13]=100;V.A[190]=101;V.A[188]=102;V.A[78]=103;
|
||||
V.A[66]=104;V.A[88]=105;V.A[119]=106;V.A[105]=112;V.A[99]=113;V.A[102]=114;V.A[109]=115;V.A[191]=117;V.A[77]=118;V.A[32]=119;V.A[86]=120;V.A[67]=121;V.A[90]=122;V.A[120]=123;V.A[17]=124;V.A[16]=125;V.A[20]=126;V.pb={l4:V.La.Qc,l3:V.La.Pc,l2:V.La.Oc,l1:V.La.Nc,locked:V.La.Rc,local:V.La.Wb,online:~V.La.Wb};var $d={SI1978:ae,VT100:V};
|
||||
Zd.prototype.na=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.N[e]){if("led"==a&&this.u.pb[b])return this.N[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return be(d,a,!0)},c.onkeyup=function(a){return be(d,a,!1)},!0;default:if(this.u.Wa&&void 0!==this.u.Wa[b])return this.N[e]=c,a=function(a,b){return function(c){c.preventDefault();ce(a,b,!0)}}(this,this.u.Wa[b]),b=function(a,b){return function(){ce(a,b,!1)}}(this,this.u.Wa[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
|
||||
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};Zd.prototype.Pa=function(a,b,c,d){this.B=a;this.b=c;this.H=d;this.I=vb(a,"ChipSet");Hb(b,this,this.u.Gb);Tb(b,this,this.u.Hb)};Zd.prototype.Da=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};Zd.prototype.Ha=function(a){return a?this.save():!0};V.INIT=[[V.La.INIT,V.Bc.INIT,!1,0,-1]];m=Zd.prototype;m.reset=function(){this.j=[];this.u.INIT&&!this.restore(this.u.INIT)&&this.ja("reset error")};
|
||||
m.save=function(){var a=new H(this);switch(this.u.Aa){case V.Aa:I(a,0,[this.K,this.G,this.D,this.J,-1])}return a.data()};m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.u.Aa){case ae.Aa:return!0;case V.Aa:return this.K=b[0],de(this,this.K&V.La.Vb),this.G=b[1],this.D=b[2],this.J=b[3],this.w=b[4],!0}return!1};function de(a,b){for(var c in a.u.pb){var d=a.N["led-"+c];if(d){var e=a.u.pb[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}
|
||||
function be(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.u.Sb[e]||e,!a.u.A[e]){for(var f in a.u.Wa)if(a.u.Wa[f]===e){e=f;break a}e=null}e&&(d=ce(a,e,c),b.preventDefault());return d}
|
||||
function ce(a,b,c){var d;a:{for(d=0;d<a.j.length;d++)if(a.j[d].Qb==b)break a;d=-1}if(c)0>d?a.j.push({Qb:b,Nb:Date.now(),Db:!1}):(a.j[d].Nb=Date.now(),a.j[d].Db=!1);else if(0<=d){if(!a.j[d].Db){var e=a.j[d].Nb;if(e&&100>Date.now()-e)return a.j[d].Db=!0,ee(a),!0}a.j.splice(d,1)}if(a.I){d=0;switch(b){case "1p":d=T.Xa.Tc;break;case "2p":d=T.Xa.Xc;break;case "coin":d=T.Xa.Ec;break;case "left":d=T.Xa.Vc;break;case "right":d=T.Xa.Wc;break;case "fire":d=T.Xa.Uc}d&&(a=a.I,b=d,a.G&=~b,c&&(a.G|=b))}return!0}
|
||||
function ee(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].Db){var d=a.j[b].Qb,e=100-(Date.now()-a.j[b].Nb);if(0<e){if(0>c||c>e)c=e}else{ce(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){ee(a)},c)}m.qd=function(a,b){var c=this.G;0<=this.w&&(this.w<this.j.length?(c=this.j[this.w],this.w++,c=V.A[c.Qb],c&128&&(c&=127)):(this.w=-1,c=V.Mc),this.G=c,Gd(this.b,1));D(this,a,null,b,"KBDUART.ADDRESS",c);return c};
|
||||
m.Ed=function(a,b,c){D(this,a,b,c,"KBDUART.STATUS");this.K=b;this.D=!0;this.J=Gc(this.b);de(this,b&V.La.Vb);b&V.La.bd&&(this.w=0,Gd(this.b,1))};V.Gb={130:Zd.prototype.qd};V.Hb={130:Zd.prototype.Ed};Ma(function(){for(var a=C(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Zd(d);hb(d,c)}});
|
||||
function fe(a,b,c,d,e){var f=this;this.oc=Aa("Gecko/");var h=["","moz","ms","webkit"];w.call(this,"Video",a,fe,262144);this.Z=a.screenWidth;this.O=a.screenHeight;this.Ta=a.bufferAddr;this.Hd=a.bufferRAM;var g=a.bufferFormat;this.ra=g&&ge[g.toUpperCase()]||he;this.ba=a.bufferCols;this.va=a.bufferRows;this.jc=this.pa=a.cellWidth||1;this.la=a.cellHeight||1;this.ya=null;this.mc=!1;this.$a=a.bufferBits||1;this.Id=a.bufferLeft||0;if(this.w=a.bufferRotate)this.w=this.w%360,0<this.w&&(this.w-=360),-90!=this.w&&
|
||||
(this.ja("unsupported buffer rotation: "+this.w),this.w=0);this.ab=a.interruptRate;this.wc=a.refreshRate||60;this.M=b;this.D=c;this.ia=(this.Cc=d)||b||null;this.Fd=this.Z;this.Gd=this.O;this.kc=this.Z/this.ba|0;this.lc=this.O/this.va|0;1<this.la&&(this.va++,this.eb=0,this.rb=!1);b=a.smoothing;(c=Va.smoothing)&&(b="true"==c);if(null!=b)for(c=0;c<h.length;c++)if(d=(d=h[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.D[d]){this.D[d]=b;break}if(this.I=a.screenRotate)this.I=this.I%
|
||||
360,0<this.I&&(this.I-=360),-90!=this.I?(this.ja("unsupported screen rotation: "+this.I),this.I=0):(this.D.translate(0,this.O),this.D.rotate(this.I*Math.PI/180),this.D.scale(this.O/this.Z,this.Z/this.O));if(this.j=e)if(this.j.fb=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.j.fb){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){ie(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(){ie(f,null)},!1);break}}if(this.da=a.fontROM)"json"!=fa(this.da)&&(this.da=ha()+"/api/v1/dump?file="+this.da+"&format=bytes"),sa(this.da,null,!0,function(a,b,c){je(f,a,b,c)});this.Mb={}}bb(fe);var he=0,ge={SI1978:1,VT100:2};
|
||||
function Qd(a){a.J=a.ba*a.pa;a.aa=a.va*a.la;var b=a.J,c=a.aa;a.w&&(b=a.aa,c=a.J);a.P=0;if(!a.Hd&&(a.P=(a.J*a.$a>>3)*a.aa,!zb(a.u,a.Ta,a.P,3)))return!1;a.P?(a.pc=a.D.createImageData(b,c),a.rc=16/a.$a|0,ke(a,a.P>>1)):ke(a,(a.ba+1)*a.va);a.L=document.createElement("canvas");a.L.width=b;a.L.height=c;a.qb=a.L.getContext("2d");a.ea={};a.ka=1<<a.$a;a.ga=Array(a.ka+2);a.ga[0]=[0,0,0,255];a.ga[1]=[255,255,255,255];1==a.ra&&(a.ga[a.ka+0]=[255,255,0,255],a.ga[a.ka+1]=[0,255,0,255]);2==a.ra&&(a.vc=60,a.sb=!1,
|
||||
a.Ea=Array(a.ba));return!0}fe.prototype.Pa=function(a,b,c,d){this.B=a;this.u=b;this.b=c;this.H=d;Qd(this);if(this.K=vb(a,"Keyboard")){for(var e in this.Mb)this.K.na("led",e,this.Mb[e]);this.M&&this.K.na(this.Cc?"textarea":"canvas","kbd",this.ia)}var f=this;this.xc=Kc(this.b,function(){Mc(f)});Lc(this.b,this.xc,1E3/Math.max(this.wc,this.ab));this.sc=0;this.da||E(this)};
|
||||
function je(a,b,c,d){if(d)a.ja("Unable to load font ROM (error "+d+": "+b+")");else{db(a.Cb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){v("Empty font ROM: "+b);return}if(1==f.length){v(f[0]);return}if(2048==f.length)a.ya=f,Rd(a);else{a.ja("Unrecognized font data length ("+f.length+")");return}}catch(h){a.ja("Font ROM data error: "+h.message);return}(a.D||a.H)&&E(a)}}
|
||||
function Rd(a){a.ya&&(a.mc=2==a.ra,a.ea[96]=[le(a,a.pa,a.la),le(a,a.pa,a.la,a.sb)],a.ea[64]=[le(a,2*a.pa,a.la),le(a,2*a.pa,a.la,a.sb)],a.ea[32]=a.ea[0]=[le(a,2*a.pa,2*a.la),le(a,2*a.pa,2*a.la,a.sb)])}
|
||||
function le(a,b,c,d){var e=8>=a.jc?8:16,f=8<e?15:0,h=a.ya.length/e,g=!1===d,k={pa:b,la:c};k.canvas=document.createElement("canvas");k.canvas.width=16*b;k.canvas.height=h/16*c;k.context=k.canvas.getContext("2d");for(var l=k.context.createImageData(b,c),p=0;p<h;p++){for(var q=0,x=q;q<a.la;q++)for(var u=p*e+(f+q&e-1),u=d&&8==q?255:a.ya[u],r=0;r<c/a.la;r++){for(var B=0,y=0,X=y;y<a.pa;y++){for(var A=u&128>>(7<y?7:y),B=a.mc&&!A&&B?B:A,Q=0;Q<b/a.pa;Q++)g&&(B=!B),me(a,l,X,x,B?1:0),X++;B=A}x++}k.context.putImageData(l,
|
||||
(p&15)*b,(p>>4)*c)}return k}fe.prototype.Da=function(){return!0};fe.prototype.na=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Mb[b]=c,!0;switch(b){case "fullScreen":return this.N[b]=c,this.j&&this.j.fb?c.onclick=function(){d.fb()}:c.parentNode.removeChild(c),!0}return!1};
|
||||
fe.prototype.fb=function(){var a=!1;if(this.j){if(this.j.fb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.Z/this.O;b>c&&(a=Math.round(c/b*100)+"%")}this.oc?(this.M.style.width=a,this.M.style.width=a,this.M.style.display="block",this.M.style.margin="auto"):(this.j.style.width=a,this.j.style.height="auto");this.j.style.backgroundColor="black";this.j.fb();a=!0}this.ia&&this.ia.focus()}return a};
|
||||
function ie(a,b){!b&&a.j&&(a.oc?a.M.style.width=a.M.style.height="":a.j.style.width=a.j.style.height="");jb(a,"notifyFullScreen("+b+")")}function ke(a,b){a.qc=b;a.ha=!1;if(void 0===a.G||a.G.length!=a.qc)a.G=Array(a.qc)}function me(a,b,c,d,e){d=a.w?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.ra&&(208<=c&&236>c?e=a.ka+0:28<=c&&72>c&&(e=a.ka+1));a=a.ga[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 Mc(a,b){var c=!0;if(!b){a.ab&&(120==a.ab?a.sc&1?(Gd(a.b,2),c=!1):Gd(a.b,1):Gd(a.b,4));if(c&&a.ha&&a.P){for(var d=a.u,e=a.P,f=!0,h=a.Ta>>>d.qa;0<e&&h<d.X.length;)d.X[h].Na&&(d.X[h].Na=f=!1,d.X[h].ec=!0),e-=d.Ga,h++;f&&(c=!1)}Lc(a.b,a.xc,1E3/Math.max(a.wc,a.ab));a.sc++}if(c)if(1<a.pa)switch(a.ra){case 2:for(var c=a.Ta,d=-1,e=0,f=60==a.vc?2:5,g=h=0,k=-1;e<a.va;){var l=0,p=c,q=d,x=a.ba;for(96!=q&&(x>>=1);;){var u=Cb(a.u,p++);if(127==(u&127)){var r=Cb(a.u,p++),d=r&96,c=(r&15)<<8|Cb(a.u,p),c=c+
|
||||
(r&16?8192:16384);break}if(l<x)a.Ea[l++]=u;else break}if(f)f--;else{for(;l<a.Ea.length;)a.Ea[l++]=0;if(0<=q)for(p=a.ha&&a.G[h]==x,a.G[h++]=x,x=0;x<l;x++){u=a.Ea[x];if(!p||u!==a.G[h]){a.G[k=h]=u;var r=a,B=a.qb,y=u&127;if(u=r.ea[q][u&128?1:0]){var X=(y&15)*u.pa,y=(y>>4)*u.la,A=void 0,Q=void 0,aa=void 0,Y=void 0,ua=u.pa,Eb=u.la;B?(A=x*r.pa,Q=e*r.la,aa=r.pa,Y=r.la):(A=x*r.kc,Q=e*r.lc,aa=r.kc,Y=r.lc);u.pa>r.pa&&(A*=2,aa*=2);u.la>r.la&&(0==q&&(y+=r.la),Eb=r.la);B?B.drawImage(u.canvas,X,y,ua,Eb,A,Q,aa,Y):
|
||||
(A+=0,Q+=0,r.D.drawImage(u.canvas,X,y,ua,Eb,A,Q,aa,Y))}g++}h++}e++}}a.ha=!0;!b&&a.rb&&1==g&&(a.G[k]=-1,g=0);a.rb=!1;(g||b)&&a.qb&&a.D.drawImage(a.L,0,a.eb,a.J,a.aa-a.la,0,0,a.Fd,a.Gd)}else{f=a.Ta;h=f+a.P;l=k=g=0;c=a.J;q=0;d=a.aa;p=e=0;x=a.$a;r=(1<<x)-1;a.Id&&(x=-x,p=16+x);for(;f<h;){B=Db(a.u,f);if(a.ha&&B===a.G[g])k+=a.rc;else{a.G[g]=B;(u=p)&&(B=B>>8|(B&255)<<8);k<c&&(c=k);for(X=a.rc;X--;)y=B>>u&r,me(a,a.pc,k++,l,y),u+=x;k>q&&(q=k);l<d&&(d=l);l>=e&&(e=l+1)}f+=2;g++;if(k>=a.J&&(k=0,l++,l>a.aa))break}a.ha=
|
||||
!0;c<a.J&&(f=q-c,e-=d,a.w&&(h=c,g=f,c=d,f=e,d=a.J-(h+g),e=g),a.qb.putImageData(a.pc,0,0,c,d,f,e),a.D.drawImage(a.L,0,0,a.L.width,a.L.height,0,0,a.Z,a.O))}}
|
||||
V.A[66]=104;V.A[88]=105;V.A[119]=106;V.A[105]=112;V.A[99]=113;V.A[102]=114;V.A[109]=115;V.A[191]=117;V.A[77]=118;V.A[32]=119;V.A[86]=120;V.A[67]=121;V.A[90]=122;V.A[120]=123;V.A[17]=124;V.A[16]=125;V.A[20]=126;V.pb={l4:V.La.Qc,l3:V.La.Pc,l2:V.La.Oc,l1:V.La.Nc,locked:V.La.Rc,local:V.La.Wb,online:~V.La.Wb};var ae={SI1978:be,VT100:V};
|
||||
$d.prototype.na=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.N[e]){if("led"==a&&this.u.pb[b])return this.N[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return ce(d,a,!0)},c.onkeyup=function(a){return ce(d,a,!1)},!0;default:if(this.u.Wa&&void 0!==this.u.Wa[b])return this.N[e]=c,a=function(a,b){return function(c){c.preventDefault();de(a,b,!0)}}(this,this.u.Wa[b]),b=function(a,b){return function(){de(a,b,!1)}}(this,this.u.Wa[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
|
||||
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};$d.prototype.Pa=function(a,b,c,d){this.B=a;this.b=c;this.H=d;this.I=vb(a,"ChipSet");Hb(b,this,this.u.Gb);Tb(b,this,this.u.Hb)};$d.prototype.Da=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};$d.prototype.Ha=function(a){return a?this.save():!0};V.INIT=[[V.La.INIT,V.Bc.INIT,!1,0,-1]];m=$d.prototype;m.reset=function(){this.j=[];this.u.INIT&&!this.restore(this.u.INIT)&&this.ja("reset error")};
|
||||
m.save=function(){var a=new H(this);switch(this.u.Aa){case V.Aa:I(a,0,[this.K,this.G,this.D,this.J,-1])}return a.data()};m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.u.Aa){case be.Aa:return!0;case V.Aa:return this.K=b[0],ee(this,this.K&V.La.Vb),this.G=b[1],this.D=b[2],this.J=b[3],this.w=b[4],!0}return!1};function ee(a,b){for(var c in a.u.pb){var d=a.N["led-"+c];if(d){var e=a.u.pb[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}
|
||||
function ce(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.u.Sb[e]||e,!a.u.A[e]){for(var f in a.u.Wa)if(a.u.Wa[f]===e){e=f;break a}e=null}e&&(d=de(a,e,c),b.preventDefault());return d}
|
||||
function de(a,b,c){var d;a:{for(d=0;d<a.j.length;d++)if(a.j[d].Qb==b)break a;d=-1}if(c)0>d?a.j.push({Qb:b,Nb:Date.now(),Db:!1}):(a.j[d].Nb=Date.now(),a.j[d].Db=!1);else if(0<=d){if(!a.j[d].Db){var e=a.j[d].Nb;if(e&&100>Date.now()-e)return a.j[d].Db=!0,fe(a),!0}a.j.splice(d,1)}if(a.I){d=0;switch(b){case "1p":d=T.Xa.Tc;break;case "2p":d=T.Xa.Xc;break;case "coin":d=T.Xa.Ec;break;case "left":d=T.Xa.Vc;break;case "right":d=T.Xa.Wc;break;case "fire":d=T.Xa.Uc}d&&(a=a.I,b=d,a.G&=~b,c&&(a.G|=b))}return!0}
|
||||
function fe(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].Db){var d=a.j[b].Qb,e=100-(Date.now()-a.j[b].Nb);if(0<e){if(0>c||c>e)c=e}else{de(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){fe(a)},c)}m.qd=function(a,b){var c=this.G;0<=this.w&&(this.w<this.j.length?(c=this.j[this.w],this.w++,c=V.A[c.Qb],c&128&&(c&=127)):(this.w=-1,c=V.Mc),this.G=c,Hd(this.b,1));D(this,a,null,b,"KBDUART.ADDRESS",c);return c};
|
||||
m.Ed=function(a,b,c){D(this,a,b,c,"KBDUART.STATUS");this.K=b;this.D=!0;this.J=Gc(this.b);ee(this,b&V.La.Vb);b&V.La.bd&&(this.w=0,Hd(this.b,1))};V.Gb={130:$d.prototype.qd};V.Hb={130:$d.prototype.Ed};Ma(function(){for(var a=C(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new $d(d);hb(d,c)}});
|
||||
function ge(a,b,c,d,e){var f=this;this.oc=Aa("Gecko/");var h=["","moz","ms","webkit"];w.call(this,"Video",a,ge,262144);this.Z=a.screenWidth;this.O=a.screenHeight;this.Ta=a.bufferAddr;this.Hd=a.bufferRAM;var g=a.bufferFormat;this.ra=g&&he[g.toUpperCase()]||ie;this.ba=a.bufferCols;this.va=a.bufferRows;this.jc=this.pa=a.cellWidth||1;this.la=a.cellHeight||1;this.ya=null;this.mc=!1;this.$a=a.bufferBits||1;this.Id=a.bufferLeft||0;if(this.w=a.bufferRotate)this.w=this.w%360,0<this.w&&(this.w-=360),-90!=this.w&&
|
||||
(this.ja("unsupported buffer rotation: "+this.w),this.w=0);this.ab=a.interruptRate;this.wc=a.refreshRate||60;this.M=b;this.I=c;this.ia=(this.Cc=d)||b||null;this.Fd=this.Z;this.Gd=this.O;this.kc=this.Z/this.ba|0;this.lc=this.O/this.va|0;1<this.la&&(this.va++,this.eb=0,this.rb=!1);b=a.smoothing;(c=Va.smoothing)&&(b="true"==c);if(null!=b)for(c=0;c<h.length;c++)if(d=(d=h[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.I[d]){this.I[d]=b;break}if(this.D=a.screenRotate)this.D=this.D%
|
||||
360,0<this.D&&(this.D-=360),-90!=this.D?(this.ja("unsupported screen rotation: "+this.D),this.D=0):(this.I.translate(0,this.O),this.I.rotate(this.D*Math.PI/180),this.I.scale(this.O/this.Z,this.Z/this.O));if(this.j=e)if(this.j.fb=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.j.fb){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){je(f,document.fullscreenElement||document.msFullscreenElement||
|
||||
document.mozFullScreenElement||document.webkitFullscreenElement?!0:!1)},!1);break}for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){je(f,null)},!1);break}}if(this.da=a.fontROM)"json"!=fa(this.da)&&(this.da=ha()+"/api/v1/dump?file="+this.da+"&format=bytes"),sa(this.da,null,!0,function(a,b,c){ke(f,a,b,c)});this.Mb={}}bb(ge);var ie=0,he={SI1978:1,VT100:2};
|
||||
function Rd(a){a.J=a.ba*a.pa;a.aa=a.va*a.la;var b=a.J,c=a.aa;a.w&&(b=a.aa,c=a.J);a.P=0;if(!a.Hd&&(a.P=(a.J*a.$a>>3)*a.aa,!zb(a.u,a.Ta,a.P,3)))return!1;a.P?(a.pc=a.I.createImageData(b,c),a.rc=16/a.$a|0,le(a,a.P>>1)):le(a,(a.ba+1)*a.va);a.L=document.createElement("canvas");a.L.width=b;a.L.height=c;a.qb=a.L.getContext("2d");a.ea={};a.ka=1<<a.$a;a.ga=Array(a.ka+2);a.ga[0]=[0,0,0,255];a.ga[1]=[255,255,255,255];1==a.ra&&(a.ga[a.ka+0]=[255,255,0,255],a.ga[a.ka+1]=[0,255,0,255]);2==a.ra&&(a.vc=60,a.sb=!1,
|
||||
a.Ea=Array(a.ba));return!0}ge.prototype.Pa=function(a,b,c,d){this.B=a;this.u=b;this.b=c;this.H=d;Rd(this);if(this.K=vb(a,"Keyboard")){for(var e in this.Mb)this.K.na("led",e,this.Mb[e]);this.M&&this.K.na(this.Cc?"textarea":"canvas","kbd",this.ia)}var f=this;this.xc=Kc(this.b,function(){Nc(f)});Lc(this.b,this.xc,1E3/Math.max(this.wc,this.ab));this.sc=0;this.da||E(this)};
|
||||
function ke(a,b,c,d){if(d)a.ja("Unable to load font ROM (error "+d+": "+b+")");else{db(a.Cb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){v("Empty font ROM: "+b);return}if(1==f.length){v(f[0]);return}if(2048==f.length)a.ya=f,Sd(a);else{a.ja("Unrecognized font data length ("+f.length+")");return}}catch(h){a.ja("Font ROM data error: "+h.message);return}(a.I||a.H)&&E(a)}}
|
||||
function Sd(a){a.ya&&(a.mc=2==a.ra,a.ea[96]=[me(a,a.pa,a.la),me(a,a.pa,a.la,a.sb)],a.ea[64]=[me(a,2*a.pa,a.la),me(a,2*a.pa,a.la,a.sb)],a.ea[32]=a.ea[0]=[me(a,2*a.pa,2*a.la),me(a,2*a.pa,2*a.la,a.sb)])}
|
||||
function me(a,b,c,d){var e=8>=a.jc?8:16,f=8<e?15:0,h=a.ya.length/e,g=!1===d,k={pa:b,la:c};k.canvas=document.createElement("canvas");k.canvas.width=16*b;k.canvas.height=h/16*c;k.context=k.canvas.getContext("2d");for(var l=k.context.createImageData(b,c),p=0;p<h;p++){for(var q=0,x=q;q<a.la;q++)for(var u=p*e+(f+q&e-1),u=d&&8==q?255:a.ya[u],r=0;r<c/a.la;r++){for(var B=0,y=0,X=y;y<a.pa;y++){for(var A=u&128>>(7<y?7:y),B=a.mc&&!A&&B?B:A,Q=0;Q<b/a.pa;Q++)g&&(B=!B),ne(a,l,X,x,B?1:0),X++;B=A}x++}k.context.putImageData(l,
|
||||
(p&15)*b,(p>>4)*c)}return k}ge.prototype.Da=function(){return!0};ge.prototype.na=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Mb[b]=c,!0;switch(b){case "fullScreen":return this.N[b]=c,this.j&&this.j.fb?c.onclick=function(){d.fb()}:c.parentNode.removeChild(c),!0}return!1};
|
||||
ge.prototype.fb=function(){var a=!1;if(this.j){if(this.j.fb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.Z/this.O;b>c&&(a=Math.round(c/b*100)+"%")}this.oc?(this.M.style.width=a,this.M.style.width=a,this.M.style.display="block",this.M.style.margin="auto"):(this.j.style.width=a,this.j.style.height="auto");this.j.style.backgroundColor="black";this.j.fb();a=!0}this.ia&&this.ia.focus()}return a};
|
||||
function je(a,b){!b&&a.j&&(a.oc?a.M.style.width=a.M.style.height="":a.j.style.width=a.j.style.height="");jb(a,"notifyFullScreen("+b+")")}function le(a,b){a.qc=b;a.ha=!1;if(void 0===a.G||a.G.length!=a.qc)a.G=Array(a.qc)}function ne(a,b,c,d,e){d=a.w?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.ra&&(208<=c&&236>c?e=a.ka+0:28<=c&&72>c&&(e=a.ka+1));a=a.ga[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 Nc(a,b){var c=!0;if(!b){a.ab&&(120==a.ab?a.sc&1?(Hd(a.b,2),c=!1):Hd(a.b,1):Hd(a.b,4));if(c&&a.ha&&a.P){for(var d=a.u,e=a.P,f=!0,h=a.Ta>>>d.qa;0<e&&h<d.X.length;)d.X[h].Na&&(d.X[h].Na=f=!1,d.X[h].ec=!0),e-=d.Ga,h++;f&&(c=!1)}Lc(a.b,a.xc,1E3/Math.max(a.wc,a.ab));a.sc++}if(c)if(1<a.pa)switch(a.ra){case 2:for(var c=a.Ta,d=-1,e=0,f=60==a.vc?2:5,g=h=0,k=-1;e<a.va;){var l=0,p=c,q=d,x=a.ba;for(96!=q&&(x>>=1);;){var u=Cb(a.u,p++);if(127==(u&127)){var r=Cb(a.u,p++),d=r&96,c=(r&15)<<8|Cb(a.u,p),c=c+
|
||||
(r&16?8192:16384);break}if(l<x)a.Ea[l++]=u;else break}if(f)f--;else{for(;l<a.Ea.length;)a.Ea[l++]=0;if(0<=q)for(p=a.ha&&a.G[h]==x,a.G[h++]=x,x=0;x<l;x++){u=a.Ea[x];if(!p||u!==a.G[h]){a.G[k=h]=u;var r=a,B=a.qb,y=u&127;if(u=r.ea[q][u&128?1:0]){var X=(y&15)*u.pa,y=(y>>4)*u.la,A=void 0,Q=void 0,aa=void 0,Y=void 0,ua=u.pa,Fb=u.la;B?(A=x*r.pa,Q=e*r.la,aa=r.pa,Y=r.la):(A=x*r.kc,Q=e*r.lc,aa=r.kc,Y=r.lc);u.pa>r.pa&&(A*=2,aa*=2);u.la>r.la&&(0==q&&(y+=r.la),Fb=r.la);B?B.drawImage(u.canvas,X,y,ua,Fb,A,Q,aa,Y):
|
||||
(A+=0,Q+=0,r.I.drawImage(u.canvas,X,y,ua,Fb,A,Q,aa,Y))}g++}h++}e++}}a.ha=!0;!b&&a.rb&&1==g&&(a.G[k]=-1,g=0);a.rb=!1;(g||b)&&a.qb&&a.I.drawImage(a.L,0,a.eb,a.J,a.aa-a.la,0,0,a.Fd,a.Gd)}else{f=a.Ta;h=f+a.P;l=k=g=0;c=a.J;q=0;d=a.aa;p=e=0;x=a.$a;r=(1<<x)-1;a.Id&&(x=-x,p=16+x);for(;f<h;){B=Db(a.u,f);if(a.ha&&B===a.G[g])k+=a.rc;else{a.G[g]=B;(u=p)&&(B=B>>8|(B&255)<<8);k<c&&(c=k);for(X=a.rc;X--;)y=B>>u&r,ne(a,a.pc,k++,l,y),u+=x;k>q&&(q=k);l<d&&(d=l);l>=e&&(e=l+1)}f+=2;g++;if(k>=a.J&&(k=0,l++,l>a.aa))break}a.ha=
|
||||
!0;c<a.J&&(f=q-c,e-=d,a.w&&(h=c,g=f,c=d,f=e,d=a.J-(h+g),e=g),a.qb.putImageData(a.pc,0,0,c,d,f,e),a.I.drawImage(a.L,0,0,a.L.width,a.L.height,0,0,a.Z,a.O))}}
|
||||
Ma(function(){for(var a=C(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<=ta().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=
|
||||
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Va.aspect);f&&.3<=f&&3.33>=f&&(La("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Aa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new fe(d,e,h,f,c);hb(d,c)}});
|
||||
function ne(a){this.da=+a.adapter;switch(this.da){case 0:this.ea=0;this.ha=2;break;default:v("Unrecognized serial adapter #"+this.da);return}this.j=this.w=null;this.ga=a.tabSize;this.ba=a.charBOL;this.D=0;this.Z=!1;w.call(this,"SerialPort",a,ne,8388608);var b=a.binding;if("console"==b)this.w="";else{var c;a=oe;b&&(void 0===c&&(c="Panel"),(c=gb(c,this.id))&&(b=c.N[b])&&this.na(null,a,b))}this.G="";this.K=this.L=null;this.exports={connect:this.ic,receiveData:this.Pb}}bb(ne);
|
||||
var pe=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],qe=[!1,0,0,133,142,39,238],oe="buffer";m=ne.prototype;
|
||||
m.na=function(a,b,c,d){var e=this;switch(b){case oe:return this.N[b]=this.j=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),re(e,b);return!0},c.onkeypress=function(a){a=a||window.event;re(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.N[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.Pb(d);return!0},
|
||||
!0}return!1};m.Pa=function(a,b,c,d){this.B=a;this.u=b;this.b=c;this.H=d;var e=this;this.ia=Kc(this.b,function(){e.Pb()});this.ka=Kc(this.b,function(){e.Ca|=5});this.I=vb(a,"ChipSet");Hb(b,this,se,this.ea);Tb(b,this,te,this.ea);E(this)};
|
||||
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Va.aspect);f&&.3<=f&&3.33>=f&&(La("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Aa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new ge(d,e,h,f,c);hb(d,c)}});
|
||||
function oe(a){this.da=+a.adapter;switch(this.da){case 0:this.ea=0;this.ha=2;break;default:v("Unrecognized serial adapter #"+this.da);return}this.j=this.w=null;this.ga=a.tabSize;this.ba=a.charBOL;this.D=0;this.Z=!1;w.call(this,"SerialPort",a,oe,8388608);var b=a.binding;if("console"==b)this.w="";else{var c;a=pe;b&&(void 0===c&&(c="Panel"),(c=gb(c,this.id))&&(b=c.N[b])&&this.na(null,a,b))}this.G="";this.K=this.L=null;this.exports={connect:this.ic,receiveData:this.Pb}}bb(oe);
|
||||
var qe=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],re=[!1,0,0,133,142,39,238],pe="buffer";m=oe.prototype;
|
||||
m.na=function(a,b,c,d){var e=this;switch(b){case pe:return this.N[b]=this.j=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),se(e,b);return!0},c.onkeypress=function(a){a=a||window.event;se(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.N[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.Pb(d);return!0},
|
||||
!0}return!1};m.Pa=function(a,b,c,d){this.B=a;this.u=b;this.b=c;this.H=d;var e=this;this.ia=Kc(this.b,function(){e.Pb()});this.ka=Kc(this.b,function(){e.Ca|=5});this.I=vb(a,"ChipSet");Hb(b,this,te,this.ea);Tb(b,this,ue,this.ea);E(this)};
|
||||
m.ic=function(){if(!this.K){var a=nc(this.B,"connection");if(a){var b=a.split("->");if(2==b.length){var c=ma(b[0]);if(c!=this.Ya)return;b=ma(b[1]);if(this.K=fb(b)){var d=this.K.exports;if(d){var e=d.connect;e&&e.call(this.K);if(this.L=d.receiveData){this.status(this.Cb+"."+c+" connected to "+b);return}}}}this.status("Unable to establish connection: "+a)}}};m.Da=function(a,b){if(!b)if(this.ic(),!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(){ue(this)};m.save=function(){var a=new H(this),b=0,c=[];c[b++]=this.Ma;c[b++]=this.P;c[b++]=this.aa;c[b++]=this.Ca;c[b++]=this.J;c[b++]=this.O;c[b]=this.M;I(a,0,c);return a.data()};m.restore=function(a){return ue(this,a[0])};function ue(a,b){var c=0;void 0===b&&(b=qe);a.Ma=b[c++];a.P=b[c++];a.aa=b[c++];a.Ca=b[c++];a.J=b[c++];a.O=b[c++];a.M=b[c];return!0}
|
||||
function ve(a,b){var c=a.M&b;b&15||(c>>=4);var c=pe[c],d=((a.J&12)>>2)+6;a.J&16&&d++;d+=((a.J&192)>>6)+1>>1;return 1E3/Math.round(c/d)}function re(a,b){jb(a,"receiveByte("+da(b)+"), status="+da(a.Ca));return a.Z||a.Ca&2?!1:(a.P=b,a.Ca|=2,Gd(a.b,a.ha),!0)}m.Pb=function(a){null!=a&&(this.G="number"!=typeof a?a:this.G+String.fromCharCode(a));this.G&&(re(this,this.G.charCodeAt(0))&&(this.G=this.G.substr(1)),this.G&&this.b&&Lc(this.b,this.ia,ve(this,15)));return!0};
|
||||
m.Ha=function(a){return a?this.save():!0};m.reset=function(){ve(this)};m.save=function(){var a=new H(this),b=0,c=[];c[b++]=this.Ma;c[b++]=this.P;c[b++]=this.aa;c[b++]=this.Ca;c[b++]=this.J;c[b++]=this.O;c[b]=this.M;I(a,0,c);return a.data()};m.restore=function(a){return ve(this,a[0])};function ve(a,b){var c=0;void 0===b&&(b=re);a.Ma=b[c++];a.P=b[c++];a.aa=b[c++];a.Ca=b[c++];a.J=b[c++];a.O=b[c++];a.M=b[c];return!0}
|
||||
function we(a,b){var c=a.M&b;b&15||(c>>=4);var c=qe[c],d=((a.J&12)>>2)+6;a.J&16&&d++;d+=((a.J&192)>>6)+1>>1;return 1E3/Math.round(c/d)}function se(a,b){jb(a,"receiveByte("+da(b)+"), status="+da(a.Ca));return a.Z||a.Ca&2?!1:(a.P=b,a.Ca|=2,Hd(a.b,a.ha),!0)}m.Pb=function(a){null!=a&&(this.G="number"!=typeof a?a:this.G+String.fromCharCode(a));this.G&&(se(this,this.G.charCodeAt(0))&&(this.G=this.G.substr(1)),this.G&&this.b&&Lc(this.b,this.ia,we(this,15)));return!0};
|
||||
m.kd=function(a,b){var c=this.P;D(this,a,null,b,"DATA",c);this.Ca&=-3;return c};m.jd=function(a,b){var c=this.Ca;D(this,a,null,b,"STATUS",c);return c};
|
||||
m.ud=function(a,b,c){D(this,a,b,c,"DATA");this.aa=b;this.Ca&=-6;jb(this,"transmitByte("+da(b)+")");if(19==b)this.Z=!0;else if(17==b)this.Z=!1;else if(this.L&&this.L.call(this.K,b),this.j)8==b?(this.j.value=this.j.value.slice(0,-1),0<this.D&&this.D--):(a=(a=na[b])?"<"+a+">":String.fromCharCode(b),c=a.length,9==b?(b=this.ga||8,c=b-this.D%b,this.ga&&(a=la("",c))):13==b&&(this.D=c=0,a="\n"),this.ba&&!this.D&&c&&(a=String.fromCharCode(this.ba)+a),this.j.value+=a,this.j.scrollTop=this.j.scrollHeight,this.D+=
|
||||
c);else if(null!=this.w){if(10==b||1024<=this.w.length)this.g(this.w),this.w="";10!=b&&(this.w+=String.fromCharCode(b))}this.b&&Lc(this.b,this.ka,ve(this,240))};m.td=function(a,b,c){D(this,a,b,c,"CONTROL");this.Ma?(this.O=b,this.O&64&&(this.Ma=!1)):(this.J=b,this.Ma=!0)};m.sd=function(a,b,c){D(this,a,b,c,"BAUDRATES");this.M=b};var se={0:ne.prototype.kd,1:ne.prototype.jd},te={0:ne.prototype.ud,1:ne.prototype.td,2:ne.prototype.sd};
|
||||
Ma(function(){for(var a=C(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new ne(d);hb(d,c)}});
|
||||
function we(a){w.call(this,"Debugger",a,we);this.style=xe;this.Z=this.ra=this.J=0;this.M=W();this.$a=W();this.D=-1;this.w=[];this.ba=!1;this.aa=W();this.G=[];this.da={};this.j=this.O=this.I=[];ye(this);this.ha=0;ze(this);this.va=[];Ae(this,a.messages);this.ya=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Cc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Cc(b,a)})}bb(we);
|
||||
var Be={"?":"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"},
|
||||
xe=8080,Ce="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(" "),De="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(" "),
|
||||
Ee="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),Fe=[[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,
|
||||
c);else if(null!=this.w){if(10==b||1024<=this.w.length)this.g(this.w),this.w="";10!=b&&(this.w+=String.fromCharCode(b))}this.b&&Lc(this.b,this.ka,we(this,240))};m.td=function(a,b,c){D(this,a,b,c,"CONTROL");this.Ma?(this.O=b,this.O&64&&(this.Ma=!1)):(this.J=b,this.Ma=!0)};m.sd=function(a,b,c){D(this,a,b,c,"BAUDRATES");this.M=b};var te={0:oe.prototype.kd,1:oe.prototype.jd},ue={0:oe.prototype.ud,1:oe.prototype.td,2:oe.prototype.sd};
|
||||
Ma(function(){for(var a=C(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new oe(d);hb(d,c)}});
|
||||
function xe(a){w.call(this,"Debugger",a,xe);this.style=ye;this.Z=this.ra=this.J=0;this.M=W();this.$a=W();this.I=-1;this.w=[];this.ba=!1;this.aa=W();this.G=[];this.da={};this.j=this.O=this.D=[];ze(this);this.ha=0;Ae(this);this.va=[];Be(this,a.messages);this.ya=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Cc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Cc(b,a)})}bb(xe);
|
||||
var Ce={"?":"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"},
|
||||
ye=8080,De="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(" "),Ee="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(" "),
|
||||
Fe="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),Ge=[[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]];m=we.prototype;
|
||||
m.Pa=function(a,b,c,d){this.u=b;this.b=c;this.B=a;(a=nc(a,"messages"))&&Ae(this,a);this.Ea=Fe;Od(this,64,function(a){a:{var b=d.u.X,c=a[0],g=a=0,k=b.length;if(c){a=Ge(He(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.u.qa;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[g];p.type==c?l++||d.g("..."):(c=p.type,l=Bb[c],p&&d.g(n(p.id)+" %"+n(g<<d.u.qa)+" %%"+n(p.F)+" "+t(p.yb)+" "+
|
||||
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]];m=xe.prototype;
|
||||
m.Pa=function(a,b,c,d){this.u=b;this.b=c;this.B=a;(a=nc(a,"messages"))&&Be(this,a);this.Ea=Ge;Pd(this,64,function(a){a:{var b=d.u.X,c=a[0],g=a=0,k=b.length;if(c){a=He(Ie(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.u.qa;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[g];p.type==c?l++||d.g("..."):(c=p.type,l=Bb[c],p&&d.g(n(p.id)+" %"+n(g<<d.u.qa)+" %%"+n(p.F)+" "+t(p.yb)+" "+
|
||||
t(p.size)+" "+l),c!=$b&&(c=-1),l=0);a+=d.u.Ga;g++}}});E(this)};
|
||||
m.na=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ga=this.N[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Cc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.D<d.w.length-1&&(b=d.w[++d.D]):40==a.keyCode&&(0<d.D?b=d.w[--d.D]:(b="",d.D=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.N[b]=c,Ca(c,function(){if(d.ga){var a=d.ga.value;d.ga.value=
|
||||
"";Cc(d,a,!0);return!0}return!1}),!0;case "step":return this.N[b]=c,Ca(c,function(a){var b=!1;mb(d,!0)||(lb(d,!0),b=d.mb(a?1:0),lb(d,!1));return b}),!0}return!1};m.xb=function(){this.ga&&this.ga.focus()};function Ge(a){a=a&&a.F;null==a&&(a=-1);return a}m.$=function(a,b){var c=255,d=Ge(a);-1!==d&&(c=Cb(this.u,d),b&&Ie(a,b));return c};m.Sa=function(a,b){var c=65535,d=Ge(a);-1!==d&&(c=Db(this.u,d),b&&Ie(a,b));return c};m.ua=function(a,b,c){var d=Ge(a);-1!==d&&(Fb(this.u,d,b),c&&Ie(a,c),Dc(this.b,!0))};
|
||||
m.Ib=function(a,b,c){var d=Ge(a);if(-1!==d){var e=this.u,f=d&e.u,h=(d&e.w)>>>e.qa;f!=e.u?e.X[h].Rb(f,b&65535,d):(e.X[h++].zb(f,b&255,d),e.X[h&e.K].zb(0,b>>8&255,d+1));c&&Ie(a,c);Dc(this.b,!0)}};function W(a){return{F:a,Oa:!1}}function Je(a){return[a.F,a.Oa]}function Ke(a){return{F:a[0],Oa:a[1]}}
|
||||
function He(a,b,c){var d;c=(c?a.M:a.$a).F;if(void 0!==b){d=b=Le(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.G.length;c++){var f=a.G[c].Qa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=W(d));break}}if(d=e)return d;c=Me(a,b,void 0)}null!=c&&(d=W(c));return d}function Ne(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.fd=Oe(a,b.uc=c[2]))}function Ie(a,b){null!=a.F&&(a.F+=b||1)}function Z(a){return n(a,4)}
|
||||
function Pe(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.$(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Ae(a,b){a.H=a;a.sa=a.gd=536870912;a.ia=null;a.ka=[];var c=Oe(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in tb)0<=ra(c,d)&&(a.sa|=tb[d],a.g(d+" messages enabled"))}function Od(a,b,c){for(var d in tb)if(b==tb[d]){a.va[d]=c;break}}
|
||||
function Qe(a,b){var c;a=a.toUpperCase();null==b?c=ra(Ee,a):(c=ra(Ee,a.substr(b,2)),0>c&&(c=ra(Ee,a.substr(b,1))));return c}function Re(a,b){var c=0,d=Se(a,b);if(void 0!==d)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 6:c=2;break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:c=4}return c?n(d,c):"??"}
|
||||
function Se(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.i;break;case 0:c=d.S;break;case 1:c=d.T;break;case 8:c=Uc(d);break;case 2:c=d.U;break;case 3:c=d.V;break;case 9:c=Wc(d);break;case 4:c=d.W;break;case 5:c=d.Y;break;case 10:c=J(d);break;case 6:c=d.$(J(d));break;case 11:c=d.ma;break;case 12:c=d.R;break;case 13:c=Tc(d);break;case 14:c=Tc(d)&255|d.i<<8}}return c}
|
||||
function Te(a,b){b=Le(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=Qe(b,c+1),0<=e&&(b=b.substr(0,c)+Re(a,e)+b.substr(c+1+Ee[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=He(a,e))?(d=e+' "'+Pe(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=He(a,e))?(Ie(d),d=e+' "'+
|
||||
Pe(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).F));if(this.sa&1073741824)this.ka.push(a);else if(!this.ia||a!=this.ia)if(this.ia=a,this.sa&-2147483648&&(this.oa(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.P=0;c.j-=c.b;c.b=0;Dc(c)}};
|
||||
m.na=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ga=this.N[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Cc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.I<d.w.length-1&&(b=d.w[++d.I]):40==a.keyCode&&(0<d.I?b=d.w[--d.I]:(b="",d.I=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.N[b]=c,Ca(c,function(){if(d.ga){var a=d.ga.value;d.ga.value=
|
||||
"";Cc(d,a,!0);return!0}return!1}),!0;case "step":return this.N[b]=c,Ca(c,function(a){var b=!1;mb(d,!0)||(lb(d,!0),b=d.mb(a?1:0),lb(d,!1));return b}),!0}return!1};m.xb=function(){this.ga&&this.ga.focus()};function He(a){a=a&&a.F;null==a&&(a=-1);return a}m.$=function(a,b){var c=255,d=He(a);-1!==d&&(c=Cb(this.u,d),b&&Je(a,b));return c};m.Sa=function(a,b){var c=65535,d=He(a);-1!==d&&(c=Db(this.u,d),b&&Je(a,b));return c};m.ua=function(a,b,c){var d=He(a);-1!==d&&(Eb(this.u,d,b),c&&Je(a,c),Dc(this.b,!0))};
|
||||
m.Ib=function(a,b,c){var d=He(a);if(-1!==d){var e=this.u,f=d&e.u,h=(d&e.w)>>>e.qa;f!=e.u?e.X[h].Rb(f,b&65535,d):(e.X[h++].zb(f,b&255,d),e.X[h&e.K].zb(0,b>>8&255,d+1));c&&Je(a,c);Dc(this.b,!0)}};function W(a){return{F:a,Oa:!1}}function Ke(a){return[a.F,a.Oa]}function Le(a){return{F:a[0],Oa:a[1]}}
|
||||
function Ie(a,b,c){var d;c=(c?a.M:a.$a).F;if(void 0!==b){d=b=Me(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.G.length;c++){var f=a.G[c].Qa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=W(d));break}}if(d=e)return d;c=Ne(a,b,void 0)}null!=c&&(d=W(c));return d}function Oe(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.fd=Pe(a,b.uc=c[2]))}function Je(a,b){null!=a.F&&(a.F+=b||1)}function Z(a){return n(a,4)}
|
||||
function Qe(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.$(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Be(a,b){a.H=a;a.sa=a.gd=536870912;a.ia=null;a.ka=[];var c=Pe(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in tb)0<=ra(c,d)&&(a.sa|=tb[d],a.g(d+" messages enabled"))}function Pd(a,b,c){for(var d in tb)if(b==tb[d]){a.va[d]=c;break}}
|
||||
function Re(a,b){var c;a=a.toUpperCase();null==b?c=ra(Fe,a):(c=ra(Fe,a.substr(b,2)),0>c&&(c=ra(Fe,a.substr(b,1))));return c}function Se(a,b){var c=0,d=Te(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 Te(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.i;break;case 0:c=d.S;break;case 1:c=d.T;break;case 8:c=Vc(d);break;case 2:c=d.U;break;case 3:c=d.V;break;case 9:c=Xc(d);break;case 4:c=d.W;break;case 5:c=d.Y;break;case 10:c=J(d);break;case 6:c=d.$(J(d));break;case 11:c=d.ma;break;case 12:c=d.R;break;case 13:c=Uc(d);break;case 14:c=Uc(d)&255|d.i<<8}}return c}
|
||||
function Ue(a,b){b=Me(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=Re(b,c+1),0<=e&&(b=b.substr(0,c)+Se(a,e)+b.substr(c+1+Fe[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=Ie(a,e))?(d=e+' "'+Qe(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=Ie(a,e))?(Je(d),d=e+' "'+
|
||||
Qe(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).F));if(this.sa&1073741824)this.ka.push(a);else if(!this.ia||a!=this.ia)if(this.ia=a,this.sa&-2147483648&&(this.oa(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;Mc(c);c.P=0;Dc(c)}};
|
||||
function ib(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 ze(a){var b;if(Hd(a)){if(!a.L||!a.L.length){a.L=Array(1E3);for(b=0;b<a.L.length;b++)a.L[b]=W();a.ea=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.L&&a.L.length&&a.g("instruction history buffer freed"),a.ea=0,a.L=[],a.K=[]}m.cb=function(a){if(!Ue(this))return!1;this.b.cb(a);return!0};
|
||||
m.mb=function(a,b,c){if(!Ue(this))return!1;this.J=0;a||Hd(this)&&Id(this,this.b.R,0);try{var d=this.b.mb(a);0<d&&(this.J+=d,Ic(this.b,d,!0),Fc(this.b,d),this.Z++)}catch(e){"number"!=typeof e&&(this.J=0,qb(this.b,e.stack||e.message))}!1!==c&&Dc(this.b);this.Ia(b||!1);return 0<this.J};m.oa=function(a){this.b&&this.b.oa(a)};m.Ia=function(a){void 0===a&&(a=!0);this.M=W(this.b.R);a&&1!=this.P?Ve(this):uf(this)};
|
||||
function Ue(a){var b;if(b=a.b&&pb(a.b))b=a.b,b.C.wa?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!mb(a.b)?(a=a.b,a.C.ib?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.Da=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){ze(this);this.Z=this.ra=0;this.ia=null;this.J=0;this.M=W(this.b.R);this.C.za=!1;vf(this);a||this.Ia()};
|
||||
m.save=function(){var a=new H(this);I(a,0,Je(this.M));I(a,1,Je(this.aa));I(a,2,[this.w,this.ba,this.sa]);I(a,3,this.G);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.M=Ke(a[b++]),this.aa=Ke(a[b++]),this.w=a[b][0],"string"==typeof this.w&&(this.w=[this.w]),this.ba=a[b][1],this.sa|=a[b][2]);a[3]&&(this.G=a[3]);return!0};m.start=function(a,b){this.P||this.g("running");this.C.za=!0;this.qb=a;this.rb=b};
|
||||
m.stop=function(a,b){if(this.C.za){this.C.za=!1;this.J=b-this.rb;if(!this.P){var c="stopped";if(this.J){var d=a-this.qb,e=0<d?Math.round(1E3*this.J/d):0,c=c+" (";Hd(this)&&(c+=this.Z+" opcodes, ",this.ra-=this.Z,this.Z=0);c+=this.J+" cycles, "+d+" ms, "+e+" hz)"}else kb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.Ia(!0);this.xb();vf(this,this.b.R)}};function Hd(a){return 1<a.j.length||!!a.ha}
|
||||
function Id(a,b,c){var d=a.b;if(0<c&&(a.ha&&!--a.ha||ic(a,b,1,a.j)))return!0;0<=c&&a.K.length&&(a.Z++,b=Cb(a.u,b),null!=b&&(a.K[b][1]++,b=a.L[a.ea],b.F=d.R,b.Oa=!1,++a.ea==a.L.length&&(a.ea=0)));return!1}function Rb(a,b,c){a.g("break on input from port "+t(b)+": "+n(c));a.oa(!0)}function Vb(a,b,c){a.g("break on output to port "+t(b)+": "+n(c));a.oa(!0)}
|
||||
function ye(a){var b,c;a.j=["bp"];if(void 0!==a.O)for(b=1;b<a.O.length;b++){c=a.O[b];var d=a.u;jc(d.X[Ge(c)>>>d.qa],!1)}a.O=["br"];if(void 0!==a.I)for(b=1;b<a.I.length;b++)c=a.I[b],d=a.u,jc(d.X[Ge(c)>>>d.qa],!0);a.I=["bw"];a.ab=0}m.Za=function(a,b,c){var d=!0;c||wf(this,a,b,!1,!0);if(a!=this.j){var e=Ge(b);if(-1===e)this.g("invalid address: "+Z(b.F)),d=!1;else{var f=this.u;f.X[e>>>f.qa].Za(e&f.u,a==this.I)}}d&&(a.push(b),c?b.Oa=!0:(xf(this,a,a.length-1,"set"),ze(this)));return d};
|
||||
function wf(a,b,c,d,e){var f=!1;c=Ge(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==Ge(g)&&(!d||g.Oa)){f=!0;g.Oa||e||xf(a,b,h,"cleared");b.splice(h,1);b!=a.j&&(d=a.u,jc(d.X[c>>>d.qa],b==a.I));g.Oa||ze(a);break}}return f}function yf(a,b){for(var c=1;c<b.length;c++)xf(a,b,c);return b.length-1}function xf(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.F)+(d?" "+d:c.uc?' "'+c.uc+'"':""))}
|
||||
function vf(a,b){if(void 0!==b)ic(a,b,1,a.j,!0),a.P=0;else for(var c=1;c<a.j.length;c++){var d=a.j[c];if(d.Oa){if(!wf(a,a.j,d,!0))break;c=0}}}
|
||||
function ic(a,b,c,d,e){var f=!1;if(!a.ab++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.Oa)for(var k=Ge(g),l=0;l<c;l++)if(b+l==k){var p,f=!0;g.Oa&&(wf(a,d,g,!0),e=!0);if(p=g.fd){for(var f=!1,q=0;q<p.length;q++)if(!zf(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var x=q+1;x<p.length&&p[x].indexOf("else");x++)q++;if(x==p.length){f=!0;break}}a.b.C.za||(f=!0)}if(f){e||xf(a,d,h,"hit");break}}}a.ab--;return f}
|
||||
function Af(a,b,c,d){for(var e=W(b.F),f=a.$(b,1),h=a.Ea[f],g="",k=(8086!=a.style?Ce:De)[h[0]],l=h.length-1,p=0,q,x=1;x<=l;x++){var u="";q=h[x];if(void 0!==q&&!(q&16384&&a.style==xe)){var r=q&240;if(r){var B=q&15;B?p=B:q|=p;q&61440||(q|=1==x?8192:4096);if(r&32)a:{var u=a,r=q,B=b,y=" ";switch(r&15){case 1:y=n(u.$(B,1),2);break;case 2:y=n(u.$(B,1)<<24>>24,4);break;case 3:y=n(u.Sa(B,2),4);break;default:u="imm("+t(r)+")";break a}8086==u.style&&r&64?y="["+y+"]":r&16||(y=(u.style==xe?"$":"0x")+y);u=y}else r&
|
||||
16?(u=(q&3840)>>8,r=Ee[u],8086==a.style&&q&64&&(6==u&&(r="HL"),r="["+r+"]"),u=r):r&128&&(u=(f>>3&7).toString());if(!u||!u.length){g="INVALID";break}0<g.length&&(g+=",");g+=u||"???"}}}f="";h=Z(e.F)+" ";if(-1!==e.F&&-1!==b.F){do if(f+=n(a.$(e,1),2),null==e.F)break;while(e.F!=b.F)}h+=la(f,10);h=h+(q&32768?"*":" ")+la(k,7);g&&(h+=" "+g);c&&(h=la(h,40)+";"+c,h=a.b.C.hb?h+("cycles="+Gc(a.b).toString()+" cs="+n(a.b.tb)):h+(null!=d?"="+d.toString():""));return h}
|
||||
function Bf(a,b){var c;switch(b){case "IF":c=a.b.ta&512;break;case "SF":c=dd(a.b);break;case "ZF":c=cd(a.b);break;case "AF":c=bd(a.b);break;case "PF":c=ad(a.b);break;case "CF":c=Zc(a.b);break;default:c=0}return b.charAt(0)+(c?"1":"0")+" "}function Cf(a,b){return Ee[b]+"="+Re(a,b)+" "}function Df(a){return Cf(a,7)+Cf(a,8)+Cf(a,9)+Cf(a,10)+Cf(a,11)+Bf(a,"IF")+Bf(a,"SF")+Bf(a,"ZF")+Bf(a,"AF")+Bf(a,"PF")+Bf(a,"CF")}
|
||||
var Ef={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function Ff(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
|
||||
function Ae(a){var b;if(Id(a)){if(!a.L||!a.L.length){a.L=Array(1E3);for(b=0;b<a.L.length;b++)a.L[b]=W();a.ea=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.L&&a.L.length&&a.g("instruction history buffer freed"),a.ea=0,a.L=[],a.K=[]}m.cb=function(a){if(!Ve(this))return!1;this.b.cb(a);return!0};
|
||||
m.mb=function(a,b,c){if(!Ve(this))return!1;this.J=0;a||Id(this)&&Jd(this,this.b.R,0);try{var d=this.b.mb(a);0<d&&(this.J+=d,Ic(this.b,d,!0),Fc(this.b,d),this.Z++)}catch(e){"number"!=typeof e&&(this.J=0,qb(this.b,e.stack||e.message))}!1!==c&&Dc(this.b);this.Ia(b||!1);return 0<this.J};m.oa=function(a){this.b&&this.b.oa(a)};m.Ia=function(a){void 0===a&&(a=!0);this.M=W(this.b.R);a&&1!=this.P?We(this):vf(this)};
|
||||
function Ve(a){var b;if(b=a.b&&pb(a.b))b=a.b,b.C.wa?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!mb(a.b)?(a=a.b,a.C.ib?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.Da=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){Ae(this);this.Z=this.ra=0;this.ia=null;this.J=0;this.M=W(this.b.R);this.C.za=!1;wf(this);a||this.Ia()};
|
||||
m.save=function(){var a=new H(this);I(a,0,Ke(this.M));I(a,1,Ke(this.aa));I(a,2,[this.w,this.ba,this.sa]);I(a,3,this.G);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.M=Le(a[b++]),this.aa=Le(a[b++]),this.w=a[b][0],"string"==typeof this.w&&(this.w=[this.w]),this.ba=a[b][1],this.sa|=a[b][2]);a[3]&&(this.G=a[3]);return!0};m.start=function(a,b){this.P||this.g("running");this.C.za=!0;this.qb=a;this.rb=b};
|
||||
m.stop=function(a,b){if(this.C.za){this.C.za=!1;this.J=b-this.rb;if(!this.P){var c="stopped";if(this.J){var d=a-this.qb,e=0<d?Math.round(1E3*this.J/d):0,c=c+" (";Id(this)&&(c+=this.Z+" opcodes, ",this.ra-=this.Z,this.Z=0);c+=this.J+" cycles, "+d+" ms, "+e+" hz)"}else kb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.Ia(!0);this.xb();wf(this,this.b.R)}};function Id(a){return 1<a.j.length||!!a.ha}
|
||||
function Jd(a,b,c){var d=a.b;if(0<c&&(a.ha&&!--a.ha||ic(a,b,1,a.j)))return!0;0<=c&&a.K.length&&(a.Z++,b=Cb(a.u,b),null!=b&&(a.K[b][1]++,b=a.L[a.ea],b.F=d.R,b.Oa=!1,++a.ea==a.L.length&&(a.ea=0)));return!1}function Jb(a,b,c){a.g("break on input from port "+t(b)+": "+n(c));a.oa(!0)}function Vb(a,b,c){a.g("break on output to port "+t(b)+": "+n(c));a.oa(!0)}
|
||||
function ze(a){var b,c;a.j=["bp"];if(void 0!==a.O)for(b=1;b<a.O.length;b++){c=a.O[b];var d=a.u;jc(d.X[He(c)>>>d.qa],!1)}a.O=["br"];if(void 0!==a.D)for(b=1;b<a.D.length;b++)c=a.D[b],d=a.u,jc(d.X[He(c)>>>d.qa],!0);a.D=["bw"];a.ab=0}m.Za=function(a,b,c){var d=!0;c||xf(this,a,b,!1,!0);if(a!=this.j){var e=He(b);if(-1===e)this.g("invalid address: "+Z(b.F)),d=!1;else{var f=this.u;f.X[e>>>f.qa].Za(e&f.u,a==this.D)}}d&&(a.push(b),c?b.Oa=!0:(yf(this,a,a.length-1,"set"),Ae(this)));return d};
|
||||
function xf(a,b,c,d,e){var f=!1;c=He(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==He(g)&&(!d||g.Oa)){f=!0;g.Oa||e||yf(a,b,h,"cleared");b.splice(h,1);b!=a.j&&(d=a.u,jc(d.X[c>>>d.qa],b==a.D));g.Oa||Ae(a);break}}return f}function zf(a,b){for(var c=1;c<b.length;c++)yf(a,b,c);return b.length-1}function yf(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.F)+(d?" "+d:c.uc?' "'+c.uc+'"':""))}
|
||||
function wf(a,b){if(void 0!==b)ic(a,b,1,a.j,!0),a.P=0;else for(var c=1;c<a.j.length;c++){var d=a.j[c];if(d.Oa){if(!xf(a,a.j,d,!0))break;c=0}}}
|
||||
function ic(a,b,c,d,e){var f=!1;if(!a.ab++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.Oa)for(var k=He(g),l=0;l<c;l++)if(b+l==k){var p,f=!0;g.Oa&&(xf(a,d,g,!0),e=!0);if(p=g.fd){for(var f=!1,q=0;q<p.length;q++)if(!Af(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var x=q+1;x<p.length&&p[x].indexOf("else");x++)q++;if(x==p.length){f=!0;break}}a.b.C.za||(f=!0)}if(f){e||yf(a,d,h,"hit");break}}}a.ab--;return f}
|
||||
function Bf(a,b,c,d){for(var e=W(b.F),f=a.$(b,1),h=a.Ea[f],g="",k=(8086!=a.style?De:Ee)[h[0]],l=h.length-1,p=0,q,x=1;x<=l;x++){var u="";q=h[x];if(void 0!==q&&!(q&16384&&a.style==ye)){var r=q&240;if(r){var B=q&15;B?p=B:q|=p;q&61440||(q|=1==x?8192:4096);if(r&32)a:{var u=a,r=q,B=b,y=" ";switch(r&15){case 1:y=n(u.$(B,1),2);break;case 2:y=n(u.$(B,1)<<24>>24,4);break;case 3:y=n(u.Sa(B,2),4);break;default:u="imm("+t(r)+")";break a}8086==u.style&&r&64?y="["+y+"]":r&16||(y=(u.style==ye?"$":"0x")+y);u=y}else r&
|
||||
16?(u=(q&3840)>>8,r=Fe[u],8086==a.style&&q&64&&(6==u&&(r="HL"),r="["+r+"]"),u=r):r&128&&(u=(f>>3&7).toString());if(!u||!u.length){g="INVALID";break}0<g.length&&(g+=",");g+=u||"???"}}}f="";h=Z(e.F)+" ";if(-1!==e.F&&-1!==b.F){do if(f+=n(a.$(e,1),2),null==e.F)break;while(e.F!=b.F)}h+=la(f,10);h=h+(q&32768?"*":" ")+la(k,7);g&&(h+=" "+g);c&&(h=la(h,40)+";"+c,h=a.b.C.hb?h+("cycles="+Gc(a.b).toString()+" cs="+n(a.b.tb)):h+(null!=d?"="+d.toString():""));return h}
|
||||
function Cf(a,b){var c;switch(b){case "IF":c=a.b.ta&512;break;case "SF":c=ed(a.b);break;case "ZF":c=dd(a.b);break;case "AF":c=cd(a.b);break;case "PF":c=bd(a.b);break;case "CF":c=$c(a.b);break;default:c=0}return b.charAt(0)+(c?"1":"0")+" "}function Df(a,b){return Fe[b]+"="+Se(a,b)+" "}function Ef(a){return Df(a,7)+Df(a,8)+Df(a,9)+Df(a,10)+Df(a,11)+Cf(a,"IF")+Cf(a,"SF")+Cf(a,"ZF")+Cf(a,"AF")+Cf(a,"PF")+Cf(a,"CF")}
|
||||
var Ff={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function Gf(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 Me(a,b,c){var d;if(b){b=Le(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var p=l[e++],q=p.length,p=ma(p);if(!p){f=!0;break}p=Gf(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}g.push(p);if(e==l.length)break;var p=l[e++],x=p.length;k.length&&Ef[p]<Ef[k[k.length-1]]&&Ff(g,k,1);k.push(p);b=b.substr(q+x)}Ff(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&Hf(a,null,
|
||||
d))}return d}function Le(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Me(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?n(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=He(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.Z-a.ra}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
||||
function Gf(a,b,c,d){var e;void 0!==b?(e=Qe(b),0<=e?e=Se(a,e):(e=a.da[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 Hf(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 If(a,b){if(b)return Hf(a,b,a.da[b]);var c=0;for(b in a.da)Hf(a,b,a.da[b]),c++;return 0<c}we.prototype.Ta=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Jf(a,b,c){var d=[],e=Ge(b)>>>0;for(b=0;b<a.G.length;b++){var f=a.G[b],h=f.F>>>0,g=f.rd;if(e>=h&&e<h+g){e=oa(f.bc,[e-h],a.Ta);0<=e?Kf(a,b,e,d):c&&(e=~e,Kf(a,b,e-1,d),Kf(a,b,e,d));break}}return d}function Kf(a,b,c,d){var e={},f=a.G[b].bc,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.G[b].Qa[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
|
||||
function Lf(a,b){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?Ce:De;for(c=0;c<e.length;c++){var h=e[c][0],g=e[c][1];g&&(a.g((f[a.Ea[h][0]]+" ").substr(0,5)+" ("+da(h)+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}}
|
||||
function Mf(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return If(a)||a.g("no variables"),!0;if(!c[2])return If(a,c[1]);if(!c[3])return delete a.da[c[1]],!0;var d=Me(a,c[3]);return void 0!==d?(a.da[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
|
||||
function Nf(a,b,c){var d=null;if(b=He(a,b,!0)){var e=Jf(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.F-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.F)&&(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 Of(a,b){switch(b[1]){case "8080":a.style=xe;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.jb=c;break;case "start":a.b.ub=c;break;case "stop":a.b.kb=c;break;default:a.g("unknown cs option");return}void 0!==c&&Bc(a.b);a.g("checksums "+(a.b.C.hb?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Hc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.bb.toFixed(2)+"Mhz")+" ("+
|
||||
function Ne(a,b,c){var d;if(b){b=Me(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var p=l[e++],q=p.length,p=ma(p);if(!p){f=!0;break}p=Hf(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}g.push(p);if(e==l.length)break;var p=l[e++],x=p.length;k.length&&Ff[p]<Ff[k[k.length-1]]&&Gf(g,k,1);k.push(p);b=b.substr(q+x)}Gf(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&If(a,null,
|
||||
d))}return d}function Me(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Ne(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?n(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=Ie(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.Z-a.ra}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
||||
function Hf(a,b,c,d){var e;void 0!==b?(e=Re(b),0<=e?e=Te(a,e):(e=a.da[b],void 0===e&&(e=ca(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
|
||||
function If(a,b,c){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 Jf(a,b){if(b)return If(a,b,a.da[b]);var c=0;for(b in a.da)If(a,b,a.da[b]),c++;return 0<c}xe.prototype.Ta=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Kf(a,b,c){var d=[],e=He(b)>>>0;for(b=0;b<a.G.length;b++){var f=a.G[b],h=f.F>>>0,g=f.rd;if(e>=h&&e<h+g){e=oa(f.bc,[e-h],a.Ta);0<=e?Lf(a,b,e,d):c&&(e=~e,Lf(a,b,e-1,d),Lf(a,b,e,d));break}}return d}function Lf(a,b,c,d){var e={},f=a.G[b].bc,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.G[b].Qa[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
|
||||
function Mf(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?De:Ee;for(c=0;c<e.length;c++){var h=e[c][0],g=e[c][1];g&&(a.g((f[a.Ea[h][0]]+" ").substr(0,5)+" ("+da(h)+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}}
|
||||
function Nf(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Jf(a)||a.g("no variables"),!0;if(!c[2])return Jf(a,c[1]);if(!c[3])return delete a.da[c[1]],!0;var d=Ne(a,c[3]);return void 0!==d?(a.da[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
|
||||
function Of(a,b,c){var d=null;if(b=Ie(a,b,!0)){var e=Kf(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.F-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.F)&&(h=" - "+t(f)),f=e[4]+" ("+Z(e[5])+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
|
||||
function Pf(a,b){switch(b[1]){case "8080":a.style=ye;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.jb=c;break;case "start":a.b.ub=c;break;case "stop":a.b.kb=c;break;default:a.g("unknown cs option");return}void 0!==c&&pc(a.b);a.g("checksums "+(a.b.C.hb?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Hc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.bb.toFixed(2)+"Mhz")+" ("+
|
||||
a.b.Ra+"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 Ve(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=Me(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.i=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.Y=g&255;break;case "SP":d.ma=g&65535;break;case "PC":G(d,g);a.M=W(d.R);break;case "PS":Rc(d,g);break;case "PSW":Rc(d,g&255|d.ta&-256);d.i=g>>8;break;case "CF":d.ca=g?d.ca|256:d.ca&255;break;case "PF":g?ad(d)||(d.fa^=1):ad(d)&&(d.fa^=1);break;case "AF":d.xa=g?~d.fa&16|d.xa&-17:d.fa&16|d.xa&-17;break;case "ZF":d.ca=g?d.ca&-256:d.ca|255;break;case "SF":g?dd(d)||(d.fa^=192):dd(d)&&(d.fa^=
|
||||
192);break;case "IF":d.ta=g?d.ta|512:d.ta&-513;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}Dc(d);a.g("updated registers:")}a.g(Df(a));c&&(a.M=W(d.R),uf(a,Z(a.M.F)))}}function Pf(a,b){b=ma(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(Te(a,c[2])):Me(a,b,!0)}function Qf(a,b,c){var d="t"!=b;c=Gf(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ba(c,function(){return lb(a,!0)&&a.mb(e,d,!1)},function(){Dc(a.b);lb(a,!1)})}
|
||||
function uf(a,b,c,d){if(b=He(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=He(a,c,!0);if(!d||d.F<b.F)return;e=d.F-b.F;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=mb(a,!1)||a.P?a.J:null;var h=null!=f?"cycles":null,g=Jf(a,b),k=b.F;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=Af(a,b,h,f);a.g(f);a.M=b;e-=b.F-k;c++}}}
|
||||
function Oe(a,b,c,d){if(c)if(b){0>a.D&&a.w.length&&(a.D=0);if(0>a.D||b!=a.w[a.D])a.w.splice(0,0,b),a.D=0;a.D--}else a.ba?b="end":b=a.w[a.D+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(ma(b.substring(c,f))),c=f+1}}return a}
|
||||
function zf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.ba&&(a.g("ended assemble at "+Z(a.aa.F)),a.M=a.aa,a.ba=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ia=null;if(pb(a)&&0<b.length){a.ba&&(b="a "+Z(a.aa.F)+" "+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=He(a,f[1],!0);if(p)if(a.aa=
|
||||
p,void 0===f[2])a.g("begin assemble at "+Z(p.F)),a.ba=!0,Dc(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var x=0;x<q.length;x++)a.ua(p,q[x],1);a.g(Af(a,a.aa))}}break;case "b":a:{var u=f[0],r=f[1],B=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=u.charAt(1);if("l"==y){var X=0,X=X+yf(a,a.j),X=X+yf(a,a.O);(X+=yf(a,a.I))||a.g("no breakpoints")}else if("n"==y)a.ha=Gf(a,r),a.g("break after "+a.ha+" instruction(s)");else if(void 0===r)a.g("missing breakpoint address");else{var A=W();if("*"!=r&&(A=He(a,r,!0),!A))break a;r=t(A.F);"c"==y?null==A.F?(ye(a),a.g("all breakpoints cleared")):wf(a,a.j,A)||wf(a,a.O,A)||
|
||||
wf(a,a.I,A)||a.g("breakpoint missing: "+Z(A.F)):"i"==y?a.g("breakpoint "+(Gb(a.u,A.F)?"enabled":"cleared")+": port "+r+" (input)"):"o"==y?a.g("breakpoint "+(Sb(a.u,A.F)?"enabled":"cleared")+": port "+r+" (output)"):null!=A.F&&(Ne(a,A,B),"p"==y?a.Za(a.j,A):"r"==y?a.Za(a.O,A):"w"==y?a.Za(a.I,A):a.g("unknown breakpoint command: "+y))}}}break;case "c":a.Fa&&(a.Fa.value="");break;case "d":a:{var Q,aa=f[0],Y=f[1],ua=f[2],Eb=f[3];if("?"==Y){var Fa="";for(Q in tb)a.va[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 We=Rf(a.B,!0);"console"==ua?console.log(We):(a.Fa&&(a.Fa.value=""),a.g(We))}else if("symbols"==Y)for(var kd=0;kd<a.G.length;kd++){var ld=a.G[kd],nb;for(nb in ld.Qa)if("."!=nb.charAt(0)){var Xe=ld.Qa[nb].o;
|
||||
if(void 0!==Xe){var Ye=ld.Qa[nb].l;Ye&&(nb=Ye);a.g(Z(Xe)+" "+nb)}}}else{if("d"==aa){for(Q in tb)if(f[1]==Q){var Ze=a.va[Q];Ze?(f.shift(),f.shift(),Ze(f)):a.g("no dump registered for "+Y);break a}Y||(aa=a.sb||"db")}else a.sb=aa;if("dh"==aa){var $e=Y,af=ua,bf="",cf=0,ba=a.ea,Ga=a.L;if(Ga.length){var ia=+$e||a.eb,ob=+af||10;isNaN(ia)?ia=ob:bf="more ";ia>Ga.length&&(a.g("note: only "+Ga.length+" available"),ia=Ga.length);ba-=ia;0>ba&&(null==Ga[Ga.length-1].F?(ia=ba+ia,ba=0):ba+=Ga.length);var md=[];"call"==
|
||||
af&&(ob=1E5,md=["CALL"]);for(void 0!==$e&&a.g(ia+" instructions earlier:");0<ob&&ba!=a.ea;){var df=Ga[ba++];if(null==df.F)break;var Jb=W(df.F),jg=ia--,ef=Af(a,Jb,"history",jg);(!md.length||0<=ef.indexOf(md[0]))&&a.g(ef);Jb.Jb&&(ba+=Jb.Jb,ob-=Jb.Jb,ia-=Jb.Jb);ba>=Ga.length&&(ba=0);a.eb=ia;cf++;ob--}}cf||(a.g("no "+bf+"history available"),a.eb=void 0)}else{var pc=He(a,Y);if(pc){var qc=0;ua&&("l"==ua.charAt(0)&&(ua=ua.substr(1)||Eb),qc=Gf(a,ua)>>>0,65536<qc&&(qc=65536));for(var Xa="",rc="dd"==aa?4:"dw"==
|
||||
aa?2:1,sc=rc*qc||128,kg=sc+15>>4||1;kg--&&0<sc;){var tc=0,nd=0,Kb,Lb="",od="",Y=Z(pc.F);for(Kb=16;0<Kb&&0<sc;Kb--){var uc=a.$(pc,1),tc=tc|uc<<(nd++<<3);nd==rc&&(Lb+=n(tc,2*rc),Lb+=1==rc?9==Kb?"-":" ":" ",tc=nd=0);od+=32<=uc&&128>uc?String.fromCharCode(uc):".";sc--}Xa&&(Xa+="\n");Xa+=Y+" "+Lb+(0==Kb?" "+od:"")}Xa&&a.g(Xa);a.$a=pc}}}}break;case "e":if("else"==f[0])break;var vc=1,ff=255,gf=a.$,hf=a.ua;"ew"==f[0]&&(vc=2,ff=65535,gf=a.Sa,hf=a.Ib);var jf=vc<<1,kf=f[1];if(null==kf)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=He(a,kf);if(wc)for(var xc=2;xc<f.length;xc++){var Mb=Me(a,f[xc]);if(void 0===Mb){a.g("unrecognized value: "+f[xc]);break}Mb&~ff&&a.g("warning: "+n(Mb)+" exceeds "+vc+"-byte value");var lg=gf.call(a,wc);a.g("changing "+Z(wc.F)+" from 0x"+n(lg,jf)+" to 0x"+n(Mb,jf));hf.call(a,wc,Mb,vc)}}break;case "f":Lf(a,f[1]);break;case "g":a:{var lf=f[1],mg=b;if(void 0!==lf){var pd=He(a,lf,!0);if(!pd)break a;
|
||||
Ne(a,pd,mg);a.Za(a.j,pd,!0)}a.cb(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var qd;if(a.C.za)qd="halting",a.oa();else{if(mb(a,!0))break a;qd="already halted"}c||a.g(qd)}break;case "i":if("if"==f[0]){var rd;var Nb=b.substr(2),Nb=ma(Nb);Me(a,Nb)?(c||a.g("true: "+Nb),rd=!0):(c||a.g("false: "+Nb),rd=!1);rd||(d=!1);break}if("int"==f[0]){var yc;var ng=f[1];if(a.b.ta&512){var sd=Me(a,ng);null==sd?yc=!1:(a.g("requesting interrupt level "+sd),Gd(a.b,sd),yc=!0)}else a.g("interrupts disabled (use rif=1 to enable)"),
|
||||
yc=!1;yc||(d=!1);break}var td=f[1];if(td&&"?"!=td){var ud=Gf(a,td);if(void 0!==ud){var og=Ib(a.u,ud);a.g(t(ud)+": "+da(og))}}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 pg=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var vd=0,mf=W(),Ob=W(a.b.ma);for(a.g("stack trace for "+Z(Ob.F));10>vd;){for(var Ya=null,qg=256;65536>Ob.F>>>0;){mf.F=
|
||||
a.Sa(Ob,2);if(null==Ob.F||!qg--)break;for(var rg=a,zc=mf,nf=null,Pb=zc.F,of=Pb,wd=1;6>=wd&&Pb;wd++){if(2<wd){zc.F=Pb;var Ac=Af(rg,zc);if(0<=Ac.indexOf("CALL")){var pf=Ac.indexOf(" ");if(Pb+(Ac.indexOf(" ",pf+1)-pf-1)/2==of){nf=Ac;break}}}Pb--}zc.F=of;if(Ya=nf)break}if(!Ya||null==Ya)break;var qf=null;if("ks"==pg){var rf=Ya.match(/[0-9A-F]+$/);rf&&(qf=Nf(a,rf[0]))}Ya=la(Ya,50)+" ;"+(qf||"stack="+Z(Ob.F));a.g(Ya);vd++}vd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Nf(a,f[1],!0);
|
||||
break}break;case "m":a:{var Ha,Ia=null,N=f[1];"?"==N&&(N=void 0);if(void 0!==N){var Ra=0;if("all"==N)Ra=1878917119,N=null;else if("on"==N)Ia=!0,N=null;else if("off"==N)Ia=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(Ha in tb)if(N==Ha){Ra=tb[Ha];Ia=!!(a.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 xd=0;xd<a.ka.length;xd++)a.g(a.ka[xd]);a.ka=[]}}var sg=0,Sa="";for(Ha in tb)if(!N||
|
||||
N==Ha){var tg=!!(a.sa&tb[Ha]);if(null===Ia||Ia==tg)Sa&&(Sa+=","),++sg%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"));ze(a)}break;case "o":var yd=f[1],ug=f[2];if(yd&&"?"!=yd){var zd=Gf(a,yd,"port #"),Ad=Gf(a,ug);void 0!==zd&&void 0!==Ad&&(Ub(a.u,zd,Ad),a.g(t(zd)+": "+da(Ad)))}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]){Pf(a,b.substr(5));break}var sf="pr"==f[0]?1:0,vg=1+sf;if(a.P)a.g("step in progress");else{var Bd=W(a.b.R);switch(a.$(Bd)){case 205:a.P=vg,Ie(Bd,3)}a.P?(a.Za(a.j,Bd,!0),a.cb()||(a.B&&a.B.xb(),a.P=0)):Qf(a,sf?"tr":"t")}break;case "r":if("reset"==b){a.B&&a.B.reset();break}Ve(a,f);break;case "s":Of(a,f);break;case "t":Qf(a,f[0],f[1]);break;case "u":uf(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Mf(a,b.substr(3))||
|
||||
(d=!1);break}a.g("PC8080 version 1.24.2 ("+a.b.nc+",RELEASE"+(rb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(ta());break;case "?":if(f[1]){Pf(a,b.substr(1));break}var Qb="commands:",Cd;for(Cd in Be)Qb+="\n"+la(Cd,9)+Be[Cd];Hd(a)||(Qb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Qb);break;default:a.g("unknown command: "+b),d=!1}}}catch(tf){a.g("debugger error: "+(tf.stack||tf.message)),d=!1}return d}function Cc(a,b,c){b=Oe(a,b,c);for(var d in b)if(!zf(a,b[d]))return!1;return!0}
|
||||
Ma(function(){for(var a=C(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new we(d);hb(d,c)}});
|
||||
function Sf(a,b,c){w.call(this,"Computer",a,Sf,67108864);this.C.wa=!1;Tf(this,b);this.O=nc(this,"autoPower",a);this.w=0;this.da=a.busWidth||a.buswidth;this.B=Uf;this.L=null;this.K=this.aa=!1;this.ea=nc(this,"url")||"";(Math.random()+.1).toString(36);this.j=Vf(this);if(this.b=gb("CPU",this.id)){this.H=gb("Debugger",this.id);this.G=[];for(b=null;b=vb(this,"Video",b);)this.G.push(b);this.u=new xb({id:this.Cb+".bus",busWidth:this.da},this.b,this.H);var d,e=eb(this.id);if((this.D=gb("Panel",this.id))&&
|
||||
this.D.Fa)for(b=0;b<e.length;b++)d=e[b],d.ja=this.D.ja,d.g=this.D.g,d.Fa=this.D.Fa;this.g("PC8080 v1.24.2\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.Pa&&d.Pa(this,this.u,this.b,this.H);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.B=parseInt(d,10));var f;if(a=nc(this,"state")||(f=!0,a.state))b=this.P=a,f||(this.K=!0,this.B=Uf),this.B&&(this.M=new H(this,"1.24.2"),Wf(this.M)?
|
||||
b=null:delete this.M);!b&&this.B&&(b=Xf(this))&&(this.K=!0);if(b){var h=this;sa(b,null,!0,function(a,b,c){c?(h.J=null,h.K=!1,h.ja("Unable to load machine state from server (error "+c+(b?": "+ma(b):"")+")")):(h.L=b,h.aa=!0);E(h)})}else E(this);this.N.power||(this.O=!0);!c&&this.O&&Yf(this,this.vb)}else v("Unable to find CPU component")}bb(Sf);var Uf=0;function Tf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){v(d.message+" ("+c+")")}}a.ba=b}
|
||||
function nc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.ba&&(d=a.ba[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Yf(a,b,c){for(var d=eb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!pb(f)){pb(f,function(){Yf(a,b,c)});return}}b.call(a,c)}
|
||||
function Zf(a,b){var c=new H(a,"1.24.2","validate");if(Wf(c)&&$f(c)){var d=ag(c,"timestamp"),e=b?ag(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=Sf.prototype;
|
||||
m.vb=function(a){void 0===a&&(a=this.B||(this.L?1:Uf));if(!this.w){this.w++;var b=!1,c=!1;this.Z=!1;var d=this.M||new H(this,"1.24.2");if(-1==a)b=!0;else if(a>Uf){if(Wf(d,this.L)){this.I=new H(this,"1.24.2","failsafe");Wf(this.I)&&(bg(this,d),a=2,cg(this.I));I(this.I,"timestamp",qa());dg(this.I);var e=this.B&&!this.K;if(1==a||va("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=$f(d)){var f=ag(d,"code"),h=ag(d,"data");f&&("ok"==f?Wf(d,h):("error"==f&&
|
||||
"no machine state"!=h?(this.ja("Error: "+h),"unable to verify user"==h&&(za("user",""),this.j=null)):this.g(f+": "+h),cg(d),Wf(d)?(c=$f(d),e=!0):c=!1))}e&&Zf(this,c?d:null)}else 2==a&&d.clear()}else Zf(this);delete this.L;delete this.M}e=eb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=eg(this,h,d,b,c));b=[d,a,c];-1!=a?Yf(this,this.cc,b):this.cc(b)}};
|
||||
function eg(a,b,c,d,e){if(!b.C.wa){b.C.wa=!0;if(b.Da){var f=null;e&&((f=ag(c,b.id))||(f=ag(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Da(f,d)&&f&&(v("Unable to restore state for "+b.type),a.P&&!a.aa?(c.clear(),a.B=Uf,window&&window.location.reload()):a.Z=!0,b.Da(null),e=!1)}if(!d&&b.hc)for(a=b.hc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
m.cc=function(a){var b=a[0],c=0>a[1];a=a[2];this.ga=!0;this.C.wa=!0;var d=this.N.power;d&&(d.textContent="Shutdown");this.b&&(eg(this,this.b,b,c,a),Ec(this.b));this.Z&&(bg(this,b),b.clear());!c&&this.I&&(this.I.clear(),delete this.I);this.w=0};
|
||||
function bg(a,b){if(va("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.j||"",d=b.toString(),e={app:"PC8080",ver:"1.24.2"};e.url=a.ea;e.user=c;e.type="bug";e.data=d;sa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
||||
function Rf(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new H(a,"1.24.2"),h=new H(a,"1.24.2","validate"),g=qa();I(h,"timestamp",g);I(f,"timestamp",g);I(f,"version","1.24.2");I(f,"url",window?window.location.href:null);I(f,"browser",ta());a.b&&a.b.Ha&&(c&&a.b.oa(),d=a.b.Ha(b,c),"object"===typeof d&&I(f,a.b.id,d),c&&(a.b.C.wa=!1,!1===d&&(e=null)));for(var g=eb(a.id),k=0;k<g.length;k++){var l=g[k];l.C.wa&&(l.Ha&&(d=l.Ha(b,c),"object"===typeof d&&I(f,l.id,d)),c&&(l.C.wa=!1,!1===d&&(e=null)))}e&&
|
||||
(c?(g=d=!1,b?(a.j&&fg(a,a.j,f.toString()),dg(h)&&dg(f)||(e=null,d=g=!0)):a.B&&(d=!0,g=3==a.B),d&&f.clear(g)):e=f.toString());c&&(a.C.wa=!1,b=a.N.power)&&(b.textContent="Power");a.w=0;return e}m.reset=function(){this.u&&this.u.reset&&(jb(this,"Resetting "+this.u.type),this.u.reset());for(var a=eb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c.reset&&(jb(this,"Resetting "+c.type),c.reset())}};
|
||||
function We(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=Ne(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.i=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.Y=g&255;break;case "SP":d.ma=g&65535;break;case "PC":G(d,g);a.M=W(d.R);break;case "PS":Sc(d,g);break;case "PSW":Sc(d,g&255|d.ta&-256);d.i=g>>8;break;case "CF":d.ca=g?d.ca|256:d.ca&255;break;case "PF":g?bd(d)||(d.fa^=1):bd(d)&&(d.fa^=1);break;case "AF":d.xa=g?~d.fa&16|d.xa&-17:d.fa&16|d.xa&-17;break;case "ZF":d.ca=g?d.ca&-256:d.ca|255;break;case "SF":g?ed(d)||(d.fa^=192):ed(d)&&(d.fa^=
|
||||
192);break;case "IF":d.ta=g?d.ta|512:d.ta&-513;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}Dc(d);a.g("updated registers:")}a.g(Ef(a));c&&(a.M=W(d.R),vf(a,Z(a.M.F)))}}function Qf(a,b){b=ma(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(Ue(a,c[2])):Ne(a,b,!0)}function Rf(a,b,c){var d="t"!=b;c=Hf(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ba(c,function(){return lb(a,!0)&&a.mb(e,d,!1)},function(){Dc(a.b);lb(a,!1)})}
|
||||
function vf(a,b,c,d){if(b=Ie(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=Ie(a,c,!0);if(!d||d.F<b.F)return;e=d.F-b.F;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=mb(a,!1)||a.P?a.J:null;var h=null!=f?"cycles":null,g=Kf(a,b),k=b.F;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=Bf(a,b,h,f);a.g(f);a.M=b;e-=b.F-k;c++}}}
|
||||
function Pe(a,b,c,d){if(c)if(b){0>a.I&&a.w.length&&(a.I=0);if(0>a.I||b!=a.w[a.I])a.w.splice(0,0,b),a.I=0;a.I--}else a.ba?b="end":b=a.w[a.I+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(ma(b.substring(c,f))),c=f+1}}return a}
|
||||
function Af(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.ba&&(a.g("ended assemble at "+Z(a.aa.F)),a.M=a.aa,a.ba=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ia=null;if(pb(a)&&0<b.length){a.ba&&(b="a "+Z(a.aa.F)+" "+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=Ie(a,f[1],!0);if(p)if(a.aa=
|
||||
p,void 0===f[2])a.g("begin assemble at "+Z(p.F)),a.ba=!0,Dc(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var x=0;x<q.length;x++)a.ua(p,q[x],1);a.g(Bf(a,a.aa))}}break;case "b":a:{var u=f[0],r=f[1],B=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=u.charAt(1);if("l"==y){var X=0,X=X+zf(a,a.j),X=X+zf(a,a.O);(X+=zf(a,a.D))||a.g("no breakpoints")}else if("n"==y)a.ha=Hf(a,r),a.g("break after "+a.ha+" instruction(s)");else if(void 0===r)a.g("missing breakpoint address");else{var A=W();if("*"!=r&&(A=Ie(a,r,!0),!A))break a;r=t(A.F);"c"==y?null==A.F?(ze(a),a.g("all breakpoints cleared")):xf(a,a.j,A)||xf(a,a.O,A)||
|
||||
xf(a,a.D,A)||a.g("breakpoint missing: "+Z(A.F)):"i"==y?a.g("breakpoint "+(Gb(a.u,A.F)?"enabled":"cleared")+": port "+r+" (input)"):"o"==y?a.g("breakpoint "+(Sb(a.u,A.F)?"enabled":"cleared")+": port "+r+" (output)"):null!=A.F&&(Oe(a,A,B),"p"==y?a.Za(a.j,A):"r"==y?a.Za(a.O,A):"w"==y?a.Za(a.D,A):a.g("unknown breakpoint command: "+y))}}}break;case "c":a.Fa&&(a.Fa.value="");break;case "d":a:{var Q,aa=f[0],Y=f[1],ua=f[2],Fb=f[3];if("?"==Y){var Fa="";for(Q in tb)a.va[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 Xe=Sf(a.B,!0);"console"==ua?console.log(Xe):(a.Fa&&(a.Fa.value=""),a.g(Xe))}else if("symbols"==Y)for(var ld=0;ld<a.G.length;ld++){var md=a.G[ld],nb;for(nb in md.Qa)if("."!=nb.charAt(0)){var Ye=md.Qa[nb].o;
|
||||
if(void 0!==Ye){var Ze=md.Qa[nb].l;Ze&&(nb=Ze);a.g(Z(Ye)+" "+nb)}}}else{if("d"==aa){for(Q in tb)if(f[1]==Q){var $e=a.va[Q];$e?(f.shift(),f.shift(),$e(f)):a.g("no dump registered for "+Y);break a}Y||(aa=a.sb||"db")}else a.sb=aa;if("dh"==aa){var af=Y,bf=ua,cf="",df=0,ba=a.ea,Ga=a.L;if(Ga.length){var ia=+af||a.eb,ob=+bf||10;isNaN(ia)?ia=ob:cf="more ";ia>Ga.length&&(a.g("note: only "+Ga.length+" available"),ia=Ga.length);ba-=ia;0>ba&&(null==Ga[Ga.length-1].F?(ia=ba+ia,ba=0):ba+=Ga.length);var nd=[];"call"==
|
||||
bf&&(ob=1E5,nd=["CALL"]);for(void 0!==af&&a.g(ia+" instructions earlier:");0<ob&&ba!=a.ea;){var ef=Ga[ba++];if(null==ef.F)break;var Kb=W(ef.F),kg=ia--,ff=Bf(a,Kb,"history",kg);(!nd.length||0<=ff.indexOf(nd[0]))&&a.g(ff);Kb.Jb&&(ba+=Kb.Jb,ob-=Kb.Jb,ia-=Kb.Jb);ba>=Ga.length&&(ba=0);a.eb=ia;df++;ob--}}df||(a.g("no "+cf+"history available"),a.eb=void 0)}else{var qc=Ie(a,Y);if(qc){var rc=0;ua&&("l"==ua.charAt(0)&&(ua=ua.substr(1)||Fb),rc=Hf(a,ua)>>>0,65536<rc&&(rc=65536));for(var Xa="",sc="dd"==aa?4:"dw"==
|
||||
aa?2:1,tc=sc*rc||128,lg=tc+15>>4||1;lg--&&0<tc;){var uc=0,od=0,Lb,Mb="",pd="",Y=Z(qc.F);for(Lb=16;0<Lb&&0<tc;Lb--){var vc=a.$(qc,1),uc=uc|vc<<(od++<<3);od==sc&&(Mb+=n(uc,2*sc),Mb+=1==sc?9==Lb?"-":" ":" ",uc=od=0);pd+=32<=vc&&128>vc?String.fromCharCode(vc):".";tc--}Xa&&(Xa+="\n");Xa+=Y+" "+Mb+(0==Lb?" "+pd:"")}Xa&&a.g(Xa);a.$a=qc}}}}break;case "e":if("else"==f[0])break;var wc=1,gf=255,hf=a.$,jf=a.ua;"ew"==f[0]&&(wc=2,gf=65535,hf=a.Sa,jf=a.Ib);var kf=wc<<1,lf=f[1];if(null==lf)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=Ie(a,lf);if(xc)for(var yc=2;yc<f.length;yc++){var Nb=Ne(a,f[yc]);if(void 0===Nb){a.g("unrecognized value: "+f[yc]);break}Nb&~gf&&a.g("warning: "+n(Nb)+" exceeds "+wc+"-byte value");var mg=hf.call(a,xc);a.g("changing "+Z(xc.F)+" from 0x"+n(mg,kf)+" to 0x"+n(Nb,kf));jf.call(a,xc,Nb,wc)}}break;case "f":Mf(a,f[1]);break;case "g":a:{var mf=f[1],ng=b;if(void 0!==mf){var qd=Ie(a,mf,!0);if(!qd)break a;
|
||||
Oe(a,qd,ng);a.Za(a.j,qd,!0)}a.cb(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var rd;if(a.C.za)rd="halting",a.oa();else{if(mb(a,!0))break a;rd="already halted"}c||a.g(rd)}break;case "i":if("if"==f[0]){var sd;var Ob=b.substr(2),Ob=ma(Ob);Ne(a,Ob)?(c||a.g("true: "+Ob),sd=!0):(c||a.g("false: "+Ob),sd=!1);sd||(d=!1);break}if("int"==f[0]){var zc;var og=f[1];if(a.b.ta&512){var td=Ne(a,og);null==td?zc=!1:(a.g("requesting interrupt level "+td),Hd(a.b,td),zc=!0)}else a.g("interrupts disabled (use rif=1 to enable)"),
|
||||
zc=!1;zc||(d=!1);break}var ud=f[1];if(ud&&"?"!=ud){var vd=Hf(a,ud);if(void 0!==vd){var pg=Ib(a.u,vd);a.g(t(vd)+": "+da(pg))}}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 qg=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var wd=0,nf=W(),Pb=W(a.b.ma);for(a.g("stack trace for "+Z(Pb.F));10>wd;){for(var Ya=null,rg=256;65536>Pb.F>>>0;){nf.F=
|
||||
a.Sa(Pb,2);if(null==Pb.F||!rg--)break;for(var sg=a,Ac=nf,of=null,Qb=Ac.F,pf=Qb,xd=1;6>=xd&&Qb;xd++){if(2<xd){Ac.F=Qb;var Bc=Bf(sg,Ac);if(0<=Bc.indexOf("CALL")){var qf=Bc.indexOf(" ");if(Qb+(Bc.indexOf(" ",qf+1)-qf-1)/2==pf){of=Bc;break}}}Qb--}Ac.F=pf;if(Ya=of)break}if(!Ya||null==Ya)break;var rf=null;if("ks"==qg){var sf=Ya.match(/[0-9A-F]+$/);sf&&(rf=Of(a,sf[0]))}Ya=la(Ya,50)+" ;"+(rf||"stack="+Z(Pb.F));a.g(Ya);wd++}wd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Of(a,f[1],!0);
|
||||
break}break;case "m":a:{var Ha,Ia=null,N=f[1];"?"==N&&(N=void 0);if(void 0!==N){var Ra=0;if("all"==N)Ra=1878917119,N=null;else if("on"==N)Ia=!0,N=null;else if("off"==N)Ia=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(Ha in tb)if(N==Ha){Ra=tb[Ha];Ia=!!(a.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 yd=0;yd<a.ka.length;yd++)a.g(a.ka[yd]);a.ka=[]}}var tg=0,Sa="";for(Ha in tb)if(!N||
|
||||
N==Ha){var ug=!!(a.sa&tb[Ha]);if(null===Ia||Ia==ug)Sa&&(Sa+=","),++tg%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"));Ae(a)}break;case "o":var zd=f[1],vg=f[2];if(zd&&"?"!=zd){var Ad=Hf(a,zd,"port #"),Bd=Hf(a,vg);void 0!==Ad&&void 0!==Bd&&(Ub(a.u,Ad,Bd),a.g(t(Ad)+": "+da(Bd)))}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]){Qf(a,b.substr(5));break}var tf="pr"==f[0]?1:0,wg=1+tf;if(a.P)a.g("step in progress");else{var Cd=W(a.b.R);switch(a.$(Cd)){case 205:a.P=wg,Je(Cd,3)}a.P?(a.Za(a.j,Cd,!0),a.cb()||(a.B&&a.B.xb(),a.P=0)):Rf(a,tf?"tr":"t")}break;case "r":if("reset"==b){a.B&&a.B.reset();break}We(a,f);break;case "s":Pf(a,f);break;case "t":Rf(a,f[0],f[1]);break;case "u":vf(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Nf(a,b.substr(3))||
|
||||
(d=!1);break}a.g("PC8080 version 1.24.2 ("+a.b.nc+",RELEASE"+(rb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(ta());break;case "?":if(f[1]){Qf(a,b.substr(1));break}var Rb="commands:",Dd;for(Dd in Ce)Rb+="\n"+la(Dd,9)+Ce[Dd];Id(a)||(Rb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Rb);break;default:a.g("unknown command: "+b),d=!1}}}catch(uf){a.g("debugger error: "+(uf.stack||uf.message)),d=!1}return d}function Cc(a,b,c){b=Pe(a,b,c);for(var d in b)if(!Af(a,b[d]))return!1;return!0}
|
||||
Ma(function(){for(var a=C(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new xe(d);hb(d,c)}});
|
||||
function Tf(a,b,c){w.call(this,"Computer",a,Tf,67108864);this.C.wa=!1;Uf(this,b);this.O=nc(this,"autoPower",a);this.w=0;this.da=a.busWidth||a.buswidth;this.B=Vf;this.L=null;this.K=this.aa=!1;this.ea=nc(this,"url")||"";(Math.random()+.1).toString(36);this.j=Wf(this);if(this.b=gb("CPU",this.id)){this.H=gb("Debugger",this.id);this.G=[];for(b=null;b=vb(this,"Video",b);)this.G.push(b);this.u=new xb({id:this.Cb+".bus",busWidth:this.da},this.b,this.H);var d,e=eb(this.id);if((this.I=gb("Panel",this.id))&&
|
||||
this.I.Fa)for(b=0;b<e.length;b++)d=e[b],d.ja=this.I.ja,d.g=this.I.g,d.Fa=this.I.Fa;this.g("PC8080 v1.24.2\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.Pa&&d.Pa(this,this.u,this.b,this.H);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.B=parseInt(d,10));var f;if(a=nc(this,"state")||(f=!0,a.state))b=this.P=a,f||(this.K=!0,this.B=Vf),this.B&&(this.M=new H(this,"1.24.2"),Xf(this.M)?
|
||||
b=null:delete this.M);!b&&this.B&&(b=Yf(this))&&(this.K=!0);if(b){var h=this;sa(b,null,!0,function(a,b,c){c?(h.J=null,h.K=!1,h.ja("Unable to load machine state from server (error "+c+(b?": "+ma(b):"")+")")):(h.L=b,h.aa=!0);E(h)})}else E(this);this.N.power||(this.O=!0);!c&&this.O&&Zf(this,this.vb)}else v("Unable to find CPU component")}bb(Tf);var Vf=0;function Uf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){v(d.message+" ("+c+")")}}a.ba=b}
|
||||
function nc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.ba&&(d=a.ba[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=eb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!pb(f)){pb(f,function(){Zf(a,b,c)});return}}b.call(a,c)}
|
||||
function $f(a,b){var c=new H(a,"1.24.2","validate");if(Xf(c)&&ag(c)){var d=bg(c,"timestamp"),e=b?bg(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=Tf.prototype;
|
||||
m.vb=function(a){void 0===a&&(a=this.B||(this.L?1:Vf));if(!this.w){this.w++;var b=!1,c=!1;this.Z=!1;var d=this.M||new H(this,"1.24.2");if(-1==a)b=!0;else if(a>Vf){if(Xf(d,this.L)){this.D=new H(this,"1.24.2","failsafe");Xf(this.D)&&(cg(this,d),a=2,dg(this.D));I(this.D,"timestamp",qa());eg(this.D);var e=this.B&&!this.K;if(1==a||va("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=ag(d)){var f=bg(d,"code"),h=bg(d,"data");f&&("ok"==f?Xf(d,h):("error"==f&&
|
||||
"no machine state"!=h?(this.ja("Error: "+h),"unable to verify user"==h&&(za("user",""),this.j=null)):this.g(f+": "+h),dg(d),Xf(d)?(c=ag(d),e=!0):c=!1))}e&&$f(this,c?d:null)}else 2==a&&d.clear()}else $f(this);delete this.L;delete this.M}e=eb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=fg(this,h,d,b,c));b=[d,a,c];-1!=a?Zf(this,this.cc,b):this.cc(b)}};
|
||||
function fg(a,b,c,d,e){if(!b.C.wa){b.C.wa=!0;if(b.Da){var f=null;e&&((f=bg(c,b.id))||(f=bg(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Da(f,d)&&f&&(v("Unable to restore state for "+b.type),a.P&&!a.aa?(c.clear(),a.B=Vf,window&&window.location.reload()):a.Z=!0,b.Da(null),e=!1)}if(!d&&b.hc)for(a=b.hc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
m.cc=function(a){var b=a[0],c=0>a[1];a=a[2];this.ga=!0;this.C.wa=!0;var d=this.N.power;d&&(d.textContent="Shutdown");this.b&&(fg(this,this.b,b,c,a),Ec(this.b));this.Z&&(cg(this,b),b.clear());!c&&this.D&&(this.D.clear(),delete this.D);this.w=0};
|
||||
function cg(a,b){if(va("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.j||"",d=b.toString(),e={app:"PC8080",ver:"1.24.2"};e.url=a.ea;e.user=c;e.type="bug";e.data=d;sa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
||||
function Sf(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new H(a,"1.24.2"),h=new H(a,"1.24.2","validate"),g=qa();I(h,"timestamp",g);I(f,"timestamp",g);I(f,"version","1.24.2");I(f,"url",window?window.location.href:null);I(f,"browser",ta());a.b&&a.b.Ha&&(c&&a.b.oa(),d=a.b.Ha(b,c),"object"===typeof d&&I(f,a.b.id,d),c&&(a.b.C.wa=!1,!1===d&&(e=null)));for(var g=eb(a.id),k=0;k<g.length;k++){var l=g[k];l.C.wa&&(l.Ha&&(d=l.Ha(b,c),"object"===typeof d&&I(f,l.id,d)),c&&(l.C.wa=!1,!1===d&&(e=null)))}e&&
|
||||
(c?(g=d=!1,b?(a.j&&gg(a,a.j,f.toString()),eg(h)&&eg(f)||(e=null,d=g=!0)):a.B&&(d=!0,g=3==a.B),d&&f.clear(g)):e=f.toString());c&&(a.C.wa=!1,b=a.N.power)&&(b.textContent="Power");a.w=0;return e}m.reset=function(){this.u&&this.u.reset&&(jb(this,"Resetting "+this.u.type),this.u.reset());for(var a=eb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c.reset&&(jb(this,"Resetting "+c.type),c.reset())}};
|
||||
m.start=function(a,b){for(var c=eb(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=eb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||
m.na=function(a,b,c){var d=this;switch(b){case "power":return this.N[b]=c,c.onclick=function(){d.w||(d.C.wa?Rf(d,!1,!0):Yf(d,d.vb))},!0;case "reset":return this.N[b]=c,c.onclick=function(){if(d.C.wa&&!d.w)if(d.B&&!d.J){var a=va("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Rf(d,a,!0);!a&&d.P?window&&window.location.reload():d.vb(Uf)}else d.reset(),d.b&&Ec(d.b)},!0;case "save":if(ga()){c.parentNode.removeChild(c);break}this.N[b]=
|
||||
c;c.onclick=function(){var a=Vf(d,!0);if(a){var b=!!(d.B&&!d.J||d.P),c=Rf(d,b);b?fg(d,a,c):d.ja("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function Vf(a,b){var c=a.j;c||(c=ya("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=gg(a,c))||a.ja("The user ID is invalid."))):b&&a.ja("Browser local storage is not available"));return c}
|
||||
function gg(a,b){a.j=null;var c=sa(ha()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(za("user",c.data),a.j=c.data)}catch(e){v(e.message+" ("+d+")")}return a.j}function Xf(a){var b=null;a.j&&(b=ha()+"/api/v1/user?req=load&user="+a.j+"&state="+hg(a,"1.24.2"));return b}
|
||||
function fg(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=hg(a,"1.24.2");d.data=c;b=sa(ha()+"/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),za("user",""),a.j=null)}}
|
||||
function vb(a,b,c){a=eb(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.xb=function(a){if(this.G.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.G[0];d.ia&&d.ia.focus();!a&&window&&window.scrollTo(b,c)}};m.Ia=function(a){this.b&&this.b.Ia(a);this.D&&this.D.Ia(a)};
|
||||
Ma(function(){for(var a=C(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=z(c),c=C(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=z(f),h=new Sf(h,d,!0);hb(h,f);h.O&&Yf(h,h.vb)}});Da.show.push(function(){for(var a=C(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=gb("Computer",c.id))&&c.ga&&!c.C.wa&&c.vb(-1)}});
|
||||
Da.exit.push(function(){for(var a=C(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=gb("Computer",c.id))&&c.C.wa&&Rf(c,!(!c.B||c.J),!0)}});function H(a,b,c){this.id=a.id;this.key=hg(a,b,c);this.H=a.H;cg(this,a.Jd)}function hg(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){cg(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 cg(a,b){a[a.id]={};b&&I(a,"parms",b);a.b=!1}function dg(a){var b=!0;if(xa()){var c=JSON.stringify(a[a.id]);za(a.key,c)||(v("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function $f(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){v(c.message||c),b=!1}return b}function Wf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:xa()&&(b=ya(a.key))?(a[a.id]=b,a.b=!0):!1}function ag(a,b){return a[a.id][b]||null}function I(a,b,c){try{a[a.id][b]=c}catch(d){}}var ig=0;
|
||||
function wg(a,b,c,d,e,f){e("Loading "+a+"...");sa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):xg(g,a,b,c,d,e,f)})}
|
||||
function xg(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){db(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?yg(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function yg(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");sa(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);yg(a,b,c)}})}else c(a,null)}
|
||||
function zg(a,b,c,d){function e(a){if(void 0===g){var b=h&&C(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ka(a))}function f(a){e("Error: "+a);k&&(--ig||Pa(!0));k=!1}var h,g,k=!0;ig++;cb[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.24.2/components.xsl");l=function(d,g){g?wg(c,null,null,!1,e,function(d,k){if(k)if(db(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--ig||Pa(!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),--ig||Pa(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?wg(b,a,d,!0,e,l):xg(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(x){f(x.message)}return k}window.embedPC8080=function(a,b,c,d){Pa(!1);return zg(a,b,c,d)};window.enableEvents=Pa;window.sendEvent=Qa;})();
|
||||
m.na=function(a,b,c){var d=this;switch(b){case "power":return this.N[b]=c,c.onclick=function(){d.w||(d.C.wa?Sf(d,!1,!0):Zf(d,d.vb))},!0;case "reset":return this.N[b]=c,c.onclick=function(){if(d.C.wa&&!d.w)if(d.B&&!d.J){var a=va("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Sf(d,a,!0);!a&&d.P?window&&window.location.reload():d.vb(Vf)}else d.reset(),d.b&&Ec(d.b)},!0;case "save":if(ga()){c.parentNode.removeChild(c);break}this.N[b]=
|
||||
c;c.onclick=function(){var a=Wf(d,!0);if(a){var b=!!(d.B&&!d.J||d.P),c=Sf(d,b);b?gg(d,a,c):d.ja("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function Wf(a,b){var c=a.j;c||(c=ya("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=hg(a,c))||a.ja("The user ID is invalid."))):b&&a.ja("Browser local storage is not available"));return c}
|
||||
function hg(a,b){a.j=null;var c=sa(ha()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(za("user",c.data),a.j=c.data)}catch(e){v(e.message+" ("+d+")")}return a.j}function Yf(a){var b=null;a.j&&(b=ha()+"/api/v1/user?req=load&user="+a.j+"&state="+ig(a,"1.24.2"));return b}
|
||||
function gg(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=ig(a,"1.24.2");d.data=c;b=sa(ha()+"/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),za("user",""),a.j=null)}}
|
||||
function vb(a,b,c){a=eb(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.xb=function(a){if(this.G.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.G[0];d.ia&&d.ia.focus();!a&&window&&window.scrollTo(b,c)}};m.Ia=function(a){this.b&&this.b.Ia(a);this.I&&this.I.Ia(a)};
|
||||
Ma(function(){for(var a=C(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=z(c),c=C(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=z(f),h=new Tf(h,d,!0);hb(h,f);h.O&&Zf(h,h.vb)}});Da.show.push(function(){for(var a=C(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=gb("Computer",c.id))&&c.ga&&!c.C.wa&&c.vb(-1)}});
|
||||
Da.exit.push(function(){for(var a=C(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=gb("Computer",c.id))&&c.C.wa&&Sf(c,!(!c.B||c.J),!0)}});function H(a,b,c){this.id=a.id;this.key=ig(a,b,c);this.H=a.H;dg(this,a.Jd)}function ig(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){dg(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 dg(a,b){a[a.id]={};b&&I(a,"parms",b);a.b=!1}function eg(a){var b=!0;if(xa()){var c=JSON.stringify(a[a.id]);za(a.key,c)||(v("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function ag(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){v(c.message||c),b=!1}return b}function Xf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:xa()&&(b=ya(a.key))?(a[a.id]=b,a.b=!0):!1}function bg(a,b){return a[a.id][b]||null}function I(a,b,c){try{a[a.id][b]=c}catch(d){}}var jg=0;
|
||||
function xg(a,b,c,d,e,f){e("Loading "+a+"...");sa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):yg(g,a,b,c,d,e,f)})}
|
||||
function yg(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){db(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?zg(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function zg(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");sa(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);zg(a,b,c)}})}else c(a,null)}
|
||||
function Ag(a,b,c,d){function e(a){if(void 0===g){var b=h&&C(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ka(a))}function f(a){e("Error: "+a);k&&(--jg||Pa(!0));k=!1}var h,g,k=!0;jg++;cb[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.24.2/components.xsl");l=function(d,g){g?xg(c,null,null,!1,e,function(d,k){if(k)if(db(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--jg||Pa(!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),--jg||Pa(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?xg(b,a,d,!0,e,l):yg(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(x){f(x.message)}return k}window.embedPC8080=function(a,b,c,d){Pa(!1);return Ag(a,b,c,d)};window.enableEvents=Pa;window.sendEvent=Qa;})();
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ typeof b){var l="",n;for(n in b)b.hasOwnProperty(n)&&(l&&(l+="&"),l+=n+"="+encod
|
|||
function p(a){window&&window.alert(a)}function na(a){var b=!1;window&&(b=window.confirm(a));return b}var oa=null;function pa(){if(null==oa){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}oa=a}return oa}function qa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function ra(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function sa(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var ta={init:[],show:[],exit:[]},ua=!1,va=!1,wa=!0;function xa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function ya(a){ta.init.push(a)}
|
||||
function za(a){if(wa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Aa("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Ba(a){!wa&&a?(wa=!0,ua&&Da("init"),va&&Da("show")):wa=a}function Da(a){ta[a]&&za(ta[a])}xa("onload",function(){ua=!0;za(ta.init)});xa("onpageshow",function(){va=!0;za(ta.show)});xa(sa("Opera")||sa("iOS")?"onunload":"onbeforeunload",function(){za(ta.exit)});
|
||||
function q(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.zb=b.comment;this.Mc=b;b=this.id.indexOf(".");0>b?this.Ta=this.id:(this.Ua=this.id.substr(0,b),this.Ta=this.id.substr(b+1));this[a]=c;this.l={ha:!1,Ma:!1,gb:!1,Y:!1,Aa:!1};this.Za=null;this.l.Aa=!1;this.A={};this.O=null;r.push(this)}var Ea=void 0,Fa={};
|
||||
function q(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.zb=b.comment;this.Mc=b;b=this.id.indexOf(".");0>b?this.Ta=this.id:(this.Ua=this.id.substr(0,b),this.Ta=this.id.substr(b+1));this[a]=c;this.l={ha:!1,Ma:!1,gb:!1,Y:!1,Aa:!1};this.Za=null;this.l.Aa=!1;this.A={};this.N=null;r.push(this)}var Ea=void 0,Fa={};
|
||||
if(window){Ea||(Ea=window.location.search.substr(1));for(var Ga,Ha=/\+/g,Ia=/([^&=]+)=?([^&]*)/g;Ga=Ia.exec(Ea);)Fa[decodeURIComponent(Ga[1].replace(Ha," "))]=decodeURIComponent(Ga[2].replace(Ha," "))}function Ja(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
||||
function w(a,b){b||(b=q);a.prototype=Ja(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Ka=window.PCjs.Machines||(window.PCjs.Machines={}),r=window.PCjs.Components||(window.PCjs.Components=[])}else Ka={},r=[];function La(a,b,c){Ka[a]&&b&&(Ka[a][b]=c)}function Aa(a,b,c){b||p((c?c+": ":"")+a)}
|
||||
function Ma(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<r.length;b++){var d=r[b];a&&d.id.indexOf(a)||c.push(d)}return c}function Na(a){if(void 0!==a){var b;for(b=0;b<r.length;b++)if(r[b].id===a)return r[b]}return null}function Oa(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<r.length;d++)if(c)c==r[d]&&(c=null);else if(!(a!=r[d].type||b&&r[d].id.indexOf(b)))return r[d]}return null}
|
||||
|
|
@ -17,146 +17,146 @@ q.prototype={constructor:q,parent:null,toString:function(){return this.name?this
|
|||
this.M=function(a){this.ca(a,this.Ta)}),!0;default:return!1}},log:function(){},ca:function(){},status:function(a){this.ca(this.Ta+": "+a)},M:function(a,b,c){Aa(a,b,c||this.type)},fa:function(){return this.l.Y=!0},ia:function(a,b){b&&(this.l.Y=!1);return!0}};function Qa(a,b){if(a.l.gb)return a.l.Ma&&(a.l.Ma=!1),a.l.gb=!1;if(a.l.Aa)return a.ca(a.toString()+" error"),!1;a.l.Ma=b;return a.l.Ma}function C(a){if(!a.l.Aa&&(a.l.ha=!0,a.l.ha)){var b=a.Za;a.Za=null;b&&b()}}
|
||||
function Ra(a,b){b&&(a.l.ha?b():a.Za=b);return a.l.ha}
|
||||
var Sa="undefined"!==typeof ArrayBuffer,Ta=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
|
||||
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function Ua(a){q.call(this,"Panel",a,Ua)}w(Ua);k=Ua.prototype;k.V=function(a,b,c,d){return this.v&&this.v.V(a,b,c,d)||this.a&&this.a.V(a,b,c,d)||this.m&&this.m.V(a,b,c,d)?!0:this.parent.V.call(this,a,b,c,d)};k.qa=function(a,b,c,d){this.v=a;this.j=b;this.a=c;this.O=d;this.m=Va(a,"Keyboard")};k.fa=function(a,b){b||Wa();return!0};k.ia=function(){return!0};k.Ba=function(){};
|
||||
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function Ua(a){q.call(this,"Panel",a,Ua)}w(Ua);k=Ua.prototype;k.V=function(a,b,c,d){return this.v&&this.v.V(a,b,c,d)||this.a&&this.a.V(a,b,c,d)||this.m&&this.m.V(a,b,c,d)?!0:this.parent.V.call(this,a,b,c,d)};k.qa=function(a,b,c,d){this.v=a;this.j=b;this.a=c;this.N=d;this.m=Va(a,"Keyboard")};k.fa=function(a,b){b||Wa();return!0};k.ia=function(){return!0};k.Ba=function(){};
|
||||
function Wa(){for(var a=!1,b=A(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f=Na(e.id);f||(a=!0,f=new Ua(e));Pa(f,d);a&&C(f)}}ya(Wa);
|
||||
function Xa(a,b,c){q.call(this,"Bus",a,Xa);this.a=b;this.O=c;this.i=a.busWidth||16;this.u=Math.pow(2,this.i);this.g=this.u-1|0;this.j=16>=this.i?10:20>=this.i?12:24>=this.i?14:15;this.c=1<<this.j;this.w=this.c>>2;this.f=this.c-1;this.m=this.u/this.c|0;this.s=this.m-1;this.v=[];this.o=[];this.B=[];this.C=[];a=new D;Ya(a,this.O);this.b=Array(this.m);for(b=0;b<this.m;b++)this.b[b]=a;C(this)}w(Xa);Xa.prototype.reset=function(){};Xa.prototype.fa=function(a,b){b||this.reset();return!0};
|
||||
function Za(a,b,c,d){for(var e=b,f=c,h=e>>>a.j;0<f&&h<a.b.length;){var g=a.b[h],l=h*a.c,n=a.c-(e-l);n>f&&(n=f);if(g&&g.size){if(g.type==d){if(e+f<=g.Ia)return g.fb+=g.Ia-e,g.Ia=e,!0;if(e>=g.Ia+g.fb){n=g.size-(e-l);n>f&&(n=f);g.fb=e-g.Ia+n;e=l+a.c;f-=n;h++;continue}}return $a(1,e,f)}e=new D(e,n,a.c,d);Ya(e,a.O,g);a.b[h++]=e;e=l+a.c;f-=n}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+ab[d]+" at "+("0x"+m(b,4))),!0):$a(2,b,c)}
|
||||
Xa.prototype.K=function(a){return this.b[(a&this.g)>>>this.j].Qa(a&this.f,a)};function bb(a,b){return a.b[(b&a.g)>>>a.j].eb(b&a.f,b)}function cb(a,b){var c=b&a.f,d=(b&a.g)>>>a.j;return c!=a.f?a.b[d].Oc(c,b):a.b[d++].Qa(c,b)|a.b[d&a.s].Qa(0,b+1)<<8}Xa.prototype.$=function(a,b){this.b[(a&this.g)>>>this.j].Ra(a&this.f,b&255,a)};function eb(a,b,c){a.b[(b&a.g)>>>a.j].Gb(b&a.f,c&255,b)}
|
||||
function Xa(a,b,c){q.call(this,"Bus",a,Xa);this.a=b;this.N=c;this.i=a.busWidth||16;this.u=Math.pow(2,this.i);this.g=this.u-1|0;this.j=16>=this.i?10:20>=this.i?12:24>=this.i?14:15;this.c=1<<this.j;this.w=this.c>>2;this.f=this.c-1;this.m=this.u/this.c|0;this.s=this.m-1;this.v=[];this.o=[];this.B=[];this.C=[];a=new D;Ya(a,this.N);this.b=Array(this.m);for(b=0;b<this.m;b++)this.b[b]=a;C(this)}w(Xa);Xa.prototype.reset=function(){};Xa.prototype.fa=function(a,b){b||this.reset();return!0};
|
||||
function Za(a,b,c,d){for(var e=b,f=c,h=e>>>a.j;0<f&&h<a.b.length;){var g=a.b[h],l=h*a.c,n=a.c-(e-l);n>f&&(n=f);if(g&&g.size){if(g.type==d){if(e+f<=g.Ia)return g.fb+=g.Ia-e,g.Ia=e,!0;if(e>=g.Ia+g.fb){n=g.size-(e-l);n>f&&(n=f);g.fb=e-g.Ia+n;e=l+a.c;f-=n;h++;continue}}return $a(1,e,f)}e=new D(e,n,a.c,d);Ya(e,a.N,g);a.b[h++]=e;e=l+a.c;f-=n}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+ab[d]+" at "+("0x"+m(b,4))),!0):$a(2,b,c)}
|
||||
Xa.prototype.L=function(a){return this.b[(a&this.g)>>>this.j].Qa(a&this.f,a)};function bb(a,b){return a.b[(b&a.g)>>>a.j].eb(b&a.f,b)}function cb(a,b){var c=b&a.f,d=(b&a.g)>>>a.j;return c!=a.f?a.b[d].Oc(c,b):a.b[d++].Qa(c,b)|a.b[d&a.s].Qa(0,b+1)<<8}Xa.prototype.$=function(a,b){this.b[(a&this.g)>>>this.j].Ra(a&this.f,b&255,a)};function db(a,b,c){a.b[(b&a.g)>>>a.j].Gb(b&a.f,c&255,b)}
|
||||
function fb(a,b,c){var d=b&a.f,e=(b&a.g)>>>a.j;d!=a.f?a.b[e].Pc(d,c&65535,b):(a.b[e++].Ra(d,c&255,b),a.b[e&a.s].Ra(0,c>>8&255,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 l=+e+d;l<=h;l++)void 0!==f.v[l]?p("Input port 0x"+m(l,4)+" already registered"):f.v[l]=[g,!1]}}
|
||||
function hb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var l=+e+d;l<=h;l++)void 0!==f.o[l]?p("Output port 0x"+m(l,4)+" already registered"):f.o[l]=[g,!1]}}function $a(a,b,c){p("Memory block error ("+a+": "+m(b)+","+m(c)+")");return!1}var ib;if(Sa){var jb=new ArrayBuffer(2);(new DataView(jb)).setUint16(0,256,!0);ib=256===(new Uint16Array(jb))[0]}else ib=!1;var kb=ib;
|
||||
function D(a,b,c,d){this.id=lb+=2;this.a=null;this.Ia=a;this.fb=b;this.size=c||0;this.type=d||mb;this.c=d==nb;Ya(this);this.na=this.wb=!1;if(c)if(Sa)this.j=new ArrayBuffer(c),this.A=new DataView(this.j,0,c),this.b=new Uint8Array(this.j,0,c),this.i=new Uint16Array(this.j,0,c>>1),this.a=new Int32Array(this.j,0,c>>2),ob(this,kb?pb:qb);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;ob(this,rb)}else ob(this)}var mb=0,nb=2,ab=["NONE","RAM","ROM","VID","H/W"],lb=0;
|
||||
D.prototype={constructor:D,parent:null,save:function(){var a,b;if(Sa)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.A.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(Sa)for(b=0;b<a.length;b++)this.A.setInt32(b<<2,a[b],!0);else this.a=a;return this.na=!0}return!1},m:function(){return 255},o:function(){},v:function(a,b){return this.Qa(a++,b++)|this.Qa(a,b)<<8},s:function(a,b,c){this.Ra(a++,b&255,c++);this.Ra(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},R:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.na=!0},da: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.na=!0},w:function(a,b){return this.eb(a,b)},H:function(a,b){return this.Eb(a,b)},N:function(a,b,c){this.c||this.Gb(a,b,c)},W:function(a,
|
||||
b,c){this.c||this.X(a,b,c)},u:function(a){return this.b[a]},B:function(a){return this.b[a]},G:function(a){return this.A.getUint16(a,!0)},L:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.i[a>>1]},J:function(a,b){this.b[a]=b;this.na=!0},P:function(a,b){this.b[a]=b;this.na=!0},U:function(a,b){this.A.setUint16(a,b,!0);this.na=!0},Z:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.i[a>>1]=b;this.na=!0}};function Ya(a,b,c){a.O=b;a.f=a.g=0;c&&((a.f=c.f)&&sb(a,tb,!1),(a.g=c.g)&&ub(a,tb,!1))}
|
||||
function ub(a,b,c){c&&a.g||(a.Ra=!a.c&&b[2]||a.o,a.Pc=!a.c&&b[3]||a.s);if(c||void 0===c)a.Gb=b[2]||a.o,a.X=b[3]||a.s}function sb(a,b,c){c&&a.f||(a.Qa=b[0]||a.m,a.Oc=b[1]||a.v);if(c||void 0===c)a.eb=b[0]||a.m,a.Eb=b[1]||a.v}function ob(a,b){b||(b=vb);sb(a,b,void 0);ub(a,b,void 0)}var vb=[],rb=[D.prototype.C,D.prototype.I,D.prototype.R,D.prototype.da],tb=[D.prototype.w,D.prototype.H,D.prototype.N,D.prototype.W];
|
||||
if(Sa)var qb=[D.prototype.u,D.prototype.G,D.prototype.J,D.prototype.U],pb=[D.prototype.B,D.prototype.L,D.prototype.P,D.prototype.Z];function wb(a,b){q.call(this,"CPU",a,wb);var c=a.multiplier||1;this.ma=a.cycles||b;this.J=c;this.Da=Math.round(this.ma/1E4)/100;this.W=this.Da*this.J;this.l.oa=!1;this.l.yb=!1;this.l.vb=a.autoStart;this.l.xb=!1;this.l.Xa=!1;this.ta=this.X=0;this.ua=a.csStart;this.Z=a.csInterval;this.da=a.csStop;this.H=[];this.ab=this.jb.bind(this);C(this)}w(wb);var xb=["power","reset"];
|
||||
k=wb.prototype;k.qa=function(a,b,c,d){this.v=a;this.j=b;this.O=d;for(b=0;b<xb.length;b++)(c=this.A[xb[b]])&&this.v.V(null,xb[b],c);this.L=Va(a,"ChipSet");a=yb(a,"autoStart");null!=a&&(this.l.vb="true"==a?!0:"false"==a?!1:!!a);C(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};k.fa=function(a,b){if(!b){if(a&&this.restore){zb(this);if(!this.restore(a))return!1;Ab(this)}else this.reset();this.ca("No debugger detected")}Bb(this);return!0};
|
||||
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},R:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.na=!0},da: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.na=!0},w:function(a,b){return this.eb(a,b)},J:function(a,b){return this.Eb(a,b)},O:function(a,b,c){this.c||this.Gb(a,b,c)},W:function(a,
|
||||
b,c){this.c||this.X(a,b,c)},u:function(a){return this.b[a]},B:function(a){return this.b[a]},G:function(a){return this.A.getUint16(a,!0)},H:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.i[a>>1]},K:function(a,b){this.b[a]=b;this.na=!0},P:function(a,b){this.b[a]=b;this.na=!0},U:function(a,b){this.A.setUint16(a,b,!0);this.na=!0},Z:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.i[a>>1]=b;this.na=!0}};function Ya(a,b,c){a.N=b;a.f=a.g=0;c&&((a.f=c.f)&&sb(a,tb,!1),(a.g=c.g)&&ub(a,tb,!1))}
|
||||
function ub(a,b,c){c&&a.g||(a.Ra=!a.c&&b[2]||a.o,a.Pc=!a.c&&b[3]||a.s);if(c||void 0===c)a.Gb=b[2]||a.o,a.X=b[3]||a.s}function sb(a,b,c){c&&a.f||(a.Qa=b[0]||a.m,a.Oc=b[1]||a.v);if(c||void 0===c)a.eb=b[0]||a.m,a.Eb=b[1]||a.v}function ob(a,b){b||(b=vb);sb(a,b,void 0);ub(a,b,void 0)}var vb=[],rb=[D.prototype.C,D.prototype.I,D.prototype.R,D.prototype.da],tb=[D.prototype.w,D.prototype.J,D.prototype.O,D.prototype.W];
|
||||
if(Sa)var qb=[D.prototype.u,D.prototype.G,D.prototype.K,D.prototype.U],pb=[D.prototype.B,D.prototype.H,D.prototype.P,D.prototype.Z];function wb(a,b){q.call(this,"CPU",a,wb);var c=a.multiplier||1;this.ma=a.cycles||b;this.I=c;this.Da=Math.round(this.ma/1E4)/100;this.W=this.Da*this.I;this.l.oa=!1;this.l.yb=!1;this.l.vb=a.autoStart;this.l.xb=!1;this.l.Xa=!1;this.ta=this.X=0;this.ua=a.csStart;this.Z=a.csInterval;this.da=a.csStop;this.G=[];this.ab=this.jb.bind(this);C(this)}w(wb);var xb=["power","reset"];
|
||||
k=wb.prototype;k.qa=function(a,b,c,d){this.v=a;this.j=b;this.N=d;for(b=0;b<xb.length;b++)(c=this.A[xb[b]])&&this.v.V(null,xb[b],c);this.J=Va(a,"ChipSet");a=yb(a,"autoStart");null!=a&&(this.l.vb="true"==a?!0:"false"==a?!1:!!a);C(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};k.fa=function(a,b){if(!b){if(a&&this.restore){zb(this);if(!this.restore(a))return!1;Ab(this)}else this.reset();this.ca("No debugger detected")}Bb(this);return!0};
|
||||
k.ia=function(a){return a?this.save():!0};function Cb(a){(a.l.vb||void 0===a.A.run)&&a.jb(!0)}k.Ab=function(){return 0};function Ab(a){void 0===a.ua&&(a.ua=0);void 0===a.Z&&(a.Z=-1);void 0===a.da&&(a.da=-1);a.l.Xa=0<=a.ua&&0<a.Z;a.l.Xa&&(a.ta=0,a.X=a.ua-a.U)}
|
||||
k.V=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.A[b]=c;a=!0;break;case "run":this.A[b]=c;c.onclick=function(){var a;if(a=d.v)if(a=d.v,a.l.Y)a=!0;else{var b=null,c,g=Ma(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.l.ha);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.l.Y);c++);c==g.length&&(b=a);p("The "+b.type+" component ("+b.id+") is not "+(b.l.ha?"powered yet":"ready yet"+(b.Za?" (waiting for notification)":""))+".");a=!1}a&&(d.l.oa?Db(d):d.jb())};a=!0;break;
|
||||
case "speed":this.A[b]=c;a=!0;break;case "setSpeed":this.A[b]=c,c.onclick=function(){Eb(d,d.J<<1,!0)},c.textContent=this.W.toFixed(2)+"Mhz",a=!0}return a};function Fb(a,b,c){a.U+=b;c&&(a.C=a.a=0)}function Gb(a,b){var c=1;b&&1<a.J&&a.P&&(c=a.P/a.Da);a.Na=Math.round(1E3/30);a.wa=Math.floor(a.ma/30*c);b||(a.la=a.wa);a.Ea=0}function Hb(a){return a.U+a.N+a.C-a.a}function zb(a){a.P=0;a.Oa=0;a.U=a.N=a.C=a.a=0;Ab(a);Eb(a,1)}
|
||||
function Eb(a,b,c){if(void 0!==b){.8>a.P/a.W&&(b=1);a.J=b;b=a.Da*a.J;if(a.W!=b){a.W=b;b=a.W.toFixed(2)+"Mhz";var d=a.A.setSpeed;d&&(d.textContent=b);a.ca("target speed: "+b)}c&&a.v&&Ib(a.v)}Fb(a,a.N);a.N=0;a.I=ja();a.R=0;Gb(a)}function Kb(a,b){var c=a.H.length;a.H.push([-1,b]);return c}function Lb(a,b,c){var d=-1;0<=b&&b<a.H.length&&(d=a.ma*a.J/1E3*c,a.H[b][0]=d)}
|
||||
k.jb=function(a){if(Qa(this,!0)){if(!this.l.oa){Eb(this);this.v&&this.v.start(this.I,Hb(this));this.l.oa=!0;this.l.yb=!0;this.L&&this.L.start();var b=this.A.run;b&&(b.textContent="Halt");this.v&&(this.v.Ba(!0),a&&Ib(this.v,!0))}this.Ea>=this.ma&&Gb(this,!0);this.pa=0;this.sa=ja();this.R&&(a=this.sa-this.R,a>this.Na&&(this.I+=a,this.I>this.sa&&(this.I=this.sa)));try{do{for(var c=this.l.Xa?1:this.wa,d=this.H.length-1;0<=d;d--){var e=this.H[d];0>e[0]||c>e[0]&&(c=e[0])}this.Fb(c);var f=this.C-this.a;
|
||||
a=f;for(var h=this.H.length-1;0<=h;h--){var g=this.H[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.pa+=f;this.N+=f;Fb(this,0,!0);a=f;this.l.Xa&&(b=!1,this.ta=this.ta+this.Ab()|0,this.X-=a,0>=this.X&&(this.X+=this.Z,b=!0),0<=this.da&&this.da<=Hb(this)&&(this.Z=this.da=-1,Ab(this),Db(this),b=!0),b&&this.ca(Hb(this)+" cycles: checksum="+m(this.ta)));this.la-=f;if(0>=this.la){this.la+=this.wa;15<=++this.Oa&&(this.v&&this.v.Ba(),this.Oa=0);break}}while(this.l.oa)}catch(l){Db(this);Bb(this);this.v&&
|
||||
this.v.stop(ja(),Hb(this));Qa(this,!1);c=l.stack||l.message;this.l.Aa=!0;this.M(c);return}c=setTimeout;d=this.ab;this.R=ja();e=this.Na;this.pa&&(e=Math.round(e*this.pa/this.wa));e=e-(this.R-this.sa);if(f=this.R-this.I)this.P=Math.round(this.N/(10*f))/100,864E5<=f&&(this.U=0,Eb(this));if(0>e||this.P<this.W)-1E3>e&&(this.I-=e),e=0;this.Ea+=this.pa;this.R+=e;c(d,e)}else Bb(this),this.v&&this.v.stop(ja(),Hb(this))};k.Fb=function(){return 0};
|
||||
function Db(a){a.l.Ma&&(a.l.gb=!0);a.C-=a.a;a.a=0;Fb(a,a.N);a.N=0;if(a.l.oa){a.l.oa=!1;a.L&&a.L.stop();var b=a.A.run;b&&(b.textContent="Run")}a.l.Ya=void 0}function Bb(a){if(a.v){for(var b=a.v,c=0;c<b.m.length;c++)Mb(b.m[c],void 0);a.v.Ba(void 0)}}function Nb(a){this.$a=+a.model||8080;wb.call(this,a,1E6);this.Ja=Ob;zb(this);this.l.Ya=this.l.mc=!1;this.La=0;this.ra=[];this.Ka=0;Pb(this)}w(Nb,wb);function Qb(a,b){a.ra.push(b)}k=Nb.prototype;
|
||||
k.reset=function(){this.l.oa&&Db(this);Pb(this);zb(this);this.l.Aa=!1;this.parent.reset.call(this)};function Pb(a){a.b=0;a.c=0;a.D=0;a.f=0;a.F=0;a.g=0;a.i=0;a.u=0;E(a,a.Ka);Rb(a,0);a.B=0}function Sb(a,b){a.Ka=b;E(a,b)}k.Ab=function(){var a=this.b+this.c+this.D+this.f+this.F+this.g+this.i|0;return a=a+this.u+this.o+Tb(this)|0};
|
||||
k.save=function(){var a=new F(this);G(a,0,[this.b,this.c,this.D,this.f,this.F,this.g,this.i,this.u,this.o,Tb(this)]);G(a,1,[this.B,this.U,this.J]);for(var b=this.j,c=0,d=[],e=0;e<b.m;e++){var f=b.b[e];if(f.na||f.wb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,l=0,n=[];g<f.length;){for(var x=f[g],t=g+1;t<f.length&&f[t]===x;)t++;n[l++]=t-g;n[l++]=x;g=t}if(n.length<f.length){f=n;break a}}d[h]=f}}G(a,2,d);return a.data()};
|
||||
k.restore=function(a){var b=a[0];this.b=b[0];this.c=b[1];this.D=b[2];this.f=b[3];this.F=b[4];this.g=b[5];this.i=b[6];this.u=b[7]&65535;E(this,b[8]);Rb(this,b[9]);b=a[1];this.B=b[0];this.U=b[1];Eb(this,b[3]);a:{b=this.j;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.w){for(var f=0,h=Array(b.w),g=0;g<e.length-1;)for(var l=e[g++],n=e[g++];l--;)h[f++]=n;e=h}f=b.b[d];if(!f||!f.restore(e)){p("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
k.V=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.A[b]=c;this.La++;d=!0;break;default:d=this.parent.V.call(this,a,b,c)}return d};function Ub(a){return a.c<<8|a.D}function Vb(a,b){a.c=b>>8&255;a.D=b&255}function Wb(a){return a.f<<8|a.F}function Xb(a,b){a.f=b>>8&255;a.F=b&255}function I(a){return a.g<<8|a.i}
|
||||
function J(a,b){a.g=b>>8&255;a.i=b&255}function E(a,b){a.o=b&65535}function K(a){return a.m&256?1:0}function L(a,b){a.m=a.m&255|b}function Yb(a){return Ta[a.s&255]?4:0}function Tb(a){return a.G&-214|(a.s&128?128:0)|(a.m&255?0:64)|((a.s^a.w)&16?16:0)|Yb(a)|K(a)}function Rb(a,b){a.m=a.s=a.w=0;b&1&&(a.m|=256);b&4||(a.s|=1);b&16&&(a.w|=16);b&64||(a.m|=255);b&128&&(a.s^=192);a.G=a.G&-726|b&512|2}function M(a,b){a.w=a.b^b;return a.s=(a.m=a.b+b)&255}
|
||||
function Zb(a,b){a.w=a.b^b;return a.s=(a.m=a.b+b+(a.m&256?1:0))&255}function $b(a,b){a.m=a.s=a.w=a.b&b;(a.b|b)&8&&(a.w^=16);return a.m}function ac(a,b){a.w=b^255;b=a.s=b+255&255;a.m=a.m&-256|b;return b}function bc(a,b){a.w=b;b=a.s=b+1&255;a.m=a.m&-256|b;return b}function cc(a,b){return a.s=a.m=a.w=a.b|b}function N(a,b){b^=255;a.w=a.b^b;return a.s=(a.m=a.b+b+1^256)&255}function dc(a,b){b^=255;a.w=a.b^b;return a.s=(a.m=a.b+b+(a.m&256?0:1)^256)&255}function ec(a,b){return a.s=a.m=a.w=a.b^b}k.K=function(a){return this.j.K(a)};
|
||||
k.$=function(a,b){this.j.$(a,b)};function O(a){var b=a.K(a.o);E(a,a.o+1);return b}function P(a){var b=cb(a.j,a.o);E(a,a.o+2);return b}function Q(a){var b=cb(a.j,a.u);a.u=a.u+2&65535;return b}function S(a,b){a.u=a.u-2&65535;fb(a.j,a.u,b)}function fc(a){if(a.a&&a.B&255&&a.G&512){for(var b=0;8>b&&!(a.B&1<<b);b++);a.B&=~(0>b?255:1<<b);a.G&=-513;a.B&=-257;a.Ja[199|b<<3].call(a)}return a.B&256?(a.C-=a.a,a.a=0,!1):!0}function gc(a,b){a.B|=1<<b;a.G&512&&(a.C-=a.a,a.a=0)}
|
||||
case "speed":this.A[b]=c;a=!0;break;case "setSpeed":this.A[b]=c,c.onclick=function(){Eb(d,d.I<<1,!0)},c.textContent=this.W.toFixed(2)+"Mhz",a=!0}return a};function Fb(a,b,c){a.U+=b;c&&(a.R=a.a=0)}function Gb(a,b){var c=1;b&&1<a.I&&a.O&&(c=a.O/a.Da);a.Na=Math.round(1E3/30);a.wa=Math.floor(a.ma/30*c);b||(a.la=a.wa);a.Ea=0}function Hb(a){return a.U+a.K+a.R-a.a}function zb(a){a.O=0;a.Oa=0;a.U=a.K=a.R=a.a=0;Ab(a);Eb(a,1)}
|
||||
function Eb(a,b,c){if(void 0!==b){.8>a.O/a.W&&(b=1);a.I=b;b=a.Da*a.I;if(a.W!=b){a.W=b;b=a.W.toFixed(2)+"Mhz";var d=a.A.setSpeed;d&&(d.textContent=b);a.ca("target speed: "+b)}c&&a.v&&Ib(a.v)}Fb(a,a.K);a.K=0;a.H=ja();a.P=0;Gb(a)}function Jb(a,b){var c=a.G.length;a.G.push([-1,b]);return c}function Lb(a,b,c){var d=-1;0<=b&&b<a.G.length&&(d=a.ma*a.I/1E3*c,a.G[b][0]=d)}function Mb(a){a.R-=a.a;a.a=0}
|
||||
k.jb=function(a){if(Qa(this,!0)){if(!this.l.oa){Eb(this);this.v&&this.v.start(this.H,Hb(this));this.l.oa=!0;this.l.yb=!0;this.J&&this.J.start();var b=this.A.run;b&&(b.textContent="Halt");this.v&&(this.v.Ba(!0),a&&Ib(this.v,!0))}this.Ea>=this.ma&&Gb(this,!0);this.pa=0;this.sa=ja();this.P&&(a=this.sa-this.P,a>this.Na&&(this.H+=a,this.H>this.sa&&(this.H=this.sa)));try{do{for(var c=this.l.Xa?1:this.wa,d=this.G.length-1;0<=d;d--){var e=this.G[d];0>e[0]||c>e[0]&&(c=e[0])}this.Fb(c);var f=this.R-this.a;
|
||||
a=f;for(var h=this.G.length-1;0<=h;h--){var g=this.G[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.pa+=f;this.K+=f;Fb(this,0,!0);a=f;this.l.Xa&&(b=!1,this.ta=this.ta+this.Ab()|0,this.X-=a,0>=this.X&&(this.X+=this.Z,b=!0),0<=this.da&&this.da<=Hb(this)&&(this.Z=this.da=-1,Ab(this),Db(this),b=!0),b&&this.ca(Hb(this)+" cycles: checksum="+m(this.ta)));this.la-=f;if(0>=this.la){this.la+=this.wa;15<=++this.Oa&&(this.v&&this.v.Ba(),this.Oa=0);break}}while(this.l.oa)}catch(l){Db(this);Bb(this);this.v&&
|
||||
this.v.stop(ja(),Hb(this));Qa(this,!1);c=l.stack||l.message;this.l.Aa=!0;this.M(c);return}c=setTimeout;d=this.ab;this.P=ja();e=this.Na;this.pa&&(e=Math.round(e*this.pa/this.wa));e=e-(this.P-this.sa);if(f=this.P-this.H)this.O=Math.round(this.K/(10*f))/100,864E5<=f&&(this.U=0,Eb(this));if(0>e||this.O<this.W)-1E3>e&&(this.H-=e),e=0;this.Ea+=this.pa;this.P+=e;c(d,e)}else Bb(this),this.v&&this.v.stop(ja(),Hb(this))};k.Fb=function(){return 0};
|
||||
function Db(a){a.l.Ma&&(a.l.gb=!0);Mb(a);Fb(a,a.K);a.K=0;if(a.l.oa){a.l.oa=!1;a.J&&a.J.stop();var b=a.A.run;b&&(b.textContent="Run")}a.l.Ya=void 0}function Bb(a){if(a.v){for(var b=a.v,c=0;c<b.m.length;c++)Nb(b.m[c],void 0);a.v.Ba(void 0)}}function Ob(a){this.$a=+a.model||8080;wb.call(this,a,1E6);this.Ja=Pb;zb(this);this.l.Ya=this.l.mc=!1;this.La=0;this.ra=[];this.Ka=0;Qb(this)}w(Ob,wb);function Rb(a,b){a.ra.push(b)}k=Ob.prototype;
|
||||
k.reset=function(){this.l.oa&&Db(this);Qb(this);zb(this);this.l.Aa=!1;this.parent.reset.call(this)};function Qb(a){a.b=0;a.c=0;a.D=0;a.f=0;a.F=0;a.g=0;a.i=0;a.u=0;E(a,a.Ka);Sb(a,0);a.B=0}function Tb(a,b){a.Ka=b;E(a,b)}k.Ab=function(){var a=this.b+this.c+this.D+this.f+this.F+this.g+this.i|0;return a=a+this.u+this.o+Ub(this)|0};
|
||||
k.save=function(){var a=new F(this);G(a,0,[this.b,this.c,this.D,this.f,this.F,this.g,this.i,this.u,this.o,Ub(this)]);G(a,1,[this.B,this.U,this.I]);for(var b=this.j,c=0,d=[],e=0;e<b.m;e++){var f=b.b[e];if(f.na||f.wb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,l=0,n=[];g<f.length;){for(var x=f[g],t=g+1;t<f.length&&f[t]===x;)t++;n[l++]=t-g;n[l++]=x;g=t}if(n.length<f.length){f=n;break a}}d[h]=f}}G(a,2,d);return a.data()};
|
||||
k.restore=function(a){var b=a[0];this.b=b[0];this.c=b[1];this.D=b[2];this.f=b[3];this.F=b[4];this.g=b[5];this.i=b[6];this.u=b[7]&65535;E(this,b[8]);Sb(this,b[9]);b=a[1];this.B=b[0];this.U=b[1];Eb(this,b[3]);a:{b=this.j;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.w){for(var f=0,h=Array(b.w),g=0;g<e.length-1;)for(var l=e[g++],n=e[g++];l--;)h[f++]=n;e=h}f=b.b[d];if(!f||!f.restore(e)){p("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
k.V=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.A[b]=c;this.La++;d=!0;break;default:d=this.parent.V.call(this,a,b,c)}return d};function Vb(a){return a.c<<8|a.D}function Wb(a,b){a.c=b>>8&255;a.D=b&255}function Xb(a){return a.f<<8|a.F}function Yb(a,b){a.f=b>>8&255;a.F=b&255}function I(a){return a.g<<8|a.i}
|
||||
function J(a,b){a.g=b>>8&255;a.i=b&255}function E(a,b){a.o=b&65535}function K(a){return a.m&256?1:0}function L(a,b){a.m=a.m&255|b}function Zb(a){return Ta[a.s&255]?4:0}function Ub(a){return a.C&-214|(a.s&128?128:0)|(a.m&255?0:64)|((a.s^a.w)&16?16:0)|Zb(a)|K(a)}function Sb(a,b){a.m=a.s=a.w=0;b&1&&(a.m|=256);b&4||(a.s|=1);b&16&&(a.w|=16);b&64||(a.m|=255);b&128&&(a.s^=192);a.C=a.C&-726|b&512|2}function M(a,b){a.w=a.b^b;return a.s=(a.m=a.b+b)&255}
|
||||
function $b(a,b){a.w=a.b^b;return a.s=(a.m=a.b+b+(a.m&256?1:0))&255}function ac(a,b){a.m=a.s=a.w=a.b&b;(a.b|b)&8&&(a.w^=16);return a.m}function bc(a,b){a.w=b^255;b=a.s=b+255&255;a.m=a.m&-256|b;return b}function cc(a,b){a.w=b;b=a.s=b+1&255;a.m=a.m&-256|b;return b}function dc(a,b){return a.s=a.m=a.w=a.b|b}function N(a,b){b^=255;a.w=a.b^b;return a.s=(a.m=a.b+b+1^256)&255}function ec(a,b){b^=255;a.w=a.b^b;return a.s=(a.m=a.b+b+(a.m&256?0:1)^256)&255}function fc(a,b){return a.s=a.m=a.w=a.b^b}k.L=function(a){return this.j.L(a)};
|
||||
k.$=function(a,b){this.j.$(a,b)};function O(a){var b=a.L(a.o);E(a,a.o+1);return b}function P(a){var b=cb(a.j,a.o);E(a,a.o+2);return b}function Q(a){var b=cb(a.j,a.u);a.u=a.u+2&65535;return b}function S(a,b){a.u=a.u-2&65535;fb(a.j,a.u,b)}function gc(a){if(a.a&&a.B&255&&a.C&512){for(var b=0;8>b&&!(a.B&1<<b);b++);a.B&=~(0>b?255:1<<b);a.C&=-513;a.B&=-257;a.Ja[199|b<<3].call(a)}return a.B&256?(Mb(a),!1):!0}function hc(a,b){a.B|=1<<b;a.C&512&&Mb(a)}
|
||||
function T(a,b,c,d){d=d||2;a.A[b]&&(void 0===c&&(a.l.Aa=!0,a.M("Value for "+b+" is invalid"),Db(a)),c=!a.l.oa||a.l.xb?m(c,d):"--------".substr(0,d),a.A[b].textContent!=c&&(a.A[b].textContent=c))}
|
||||
k.Ba=function(a){this.La&&(a||!this.l.oa||this.l.xb)&&(T(this,"A",this.b),T(this,"B",this.c),T(this,"C",this.D),T(this,"BC",Ub(this),4),T(this,"D",this.f),T(this,"E",this.F),T(this,"DE",Wb(this),4),T(this,"H",this.g),T(this,"L",this.i),T(this,"HL",I(this),4),T(this,"SP",this.u,4),T(this,"PC",this.o,4),a=Tb(this),T(this,"PS",a,4),T(this,"IF",a&512?1:0,1),T(this,"SF",a&128?1:0,1),T(this,"ZF",a&64?1:0,1),T(this,"AF",a&16?1:0,1),T(this,"PF",a&4?1:0,1),T(this,"CF",a&1?1:0,1));if(a=this.A.speed)a.textContent=
|
||||
this.l.oa&&this.P?this.P.toFixed(2)+"Mhz":"Stopped"};k.Fb=function(a){this.l.Ya=!0;this.l.mc=!1;this.l.yb=!1;this.C=this.a=a;if(fc(this)){do this.Ja[O(this)].call(this);while(0<this.a)}return this.l.Ya?this.C-this.a:void 0===this.l.Ya?0:-1};ya(function(){for(var a=A(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Nb(d);Pa(d,c)}});function hc(){this.a-=4}function ic(){E(this,P(this));this.a-=10}function jc(){E(this,Q(this));this.a-=10}
|
||||
function kc(){var a=P(this);S(this,this.o);E(this,a);this.a-=17}
|
||||
var Ob=[hc,function(){Vb(this,P(this));this.a-=10},function(){this.$(Ub(this),this.b);this.a-=7},function(){Vb(this,Ub(this)+1);this.a-=5},function(){this.c=bc(this,this.c);this.a-=5},function(){this.c=ac(this,this.c);this.a-=5},function(){this.c=O(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|a>>8;L(this,a&256);this.a-=4},hc,function(){var a;J(this,a=I(this)+Ub(this));L(this,a>>8&256);this.a-=10},function(){this.b=this.K(Ub(this));this.a-=7},function(){Vb(this,Ub(this)-1);this.a-=5},function(){this.D=
|
||||
bc(this,this.D);this.a-=5},function(){this.D=ac(this,this.D);this.a-=5},function(){this.D=O(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(a|this.b)>>1;L(this,a);this.a-=4},hc,function(){Xb(this,P(this));this.a-=10},function(){this.$(Wb(this),this.b);this.a-=7},function(){Xb(this,Wb(this)+1);this.a-=5},function(){this.f=bc(this,this.f);this.a-=5},function(){this.f=ac(this,this.f);this.a-=5},function(){this.f=O(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|K(this);L(this,a&256);
|
||||
this.a-=4},hc,function(){var a;J(this,a=I(this)+Wb(this));L(this,a>>8&256);this.a-=10},function(){this.b=this.K(Wb(this));this.a-=7},function(){Xb(this,Wb(this)-1);this.a-=5},function(){this.F=bc(this,this.F);this.a-=5},function(){this.F=ac(this,this.F);this.a-=5},function(){this.F=O(this);this.a-=7},function(){var a=this.b<<8;this.b=(K(this)<<8|this.b)>>1;L(this,a&256);this.a-=4},hc,function(){J(this,P(this));this.a-=10},function(){var a=P(this);fb(this.j,a,I(this));this.a-=16},function(){J(this,
|
||||
I(this)+1);this.a-=5},function(){this.g=bc(this,this.g);this.a-=5},function(){this.g=ac(this,this.g);this.a-=5},function(){this.g=O(this);this.a-=7},function(){var a=0,b=K(this);if((this.s^this.w)&16||9<(this.b&15))a|=6;if(b||154<=this.b)a|=96,b=1;this.b=M(this,a);L(this,b?256:0);this.a-=4},hc,function(){var a;J(this,a=I(this)+I(this));L(this,a>>8&256);this.a-=10},function(){var a;a=P(this);a=cb(this.j,a);J(this,a);this.a-=16},function(){J(this,I(this)-1);this.a-=5},function(){this.i=bc(this,this.i);
|
||||
this.a-=5},function(){this.i=ac(this,this.i);this.a-=5},function(){this.i=O(this);this.a-=7},function(){this.b=~this.b&255;this.a-=4},hc,function(){this.u=P(this)&65535;this.a-=10},function(){this.$(P(this),this.b);this.a-=13},function(){this.u=this.u+1&65535;this.a-=5},function(){var a=I(this);this.$(a,bc(this,this.K(a)));this.a-=10},function(){var a=I(this);this.$(a,ac(this,this.K(a)));this.a-=10},function(){this.$(I(this),O(this));this.a-=10},function(){this.m|=256;this.a-=4},hc,function(){var a;
|
||||
J(this,a=I(this)+this.u);L(this,a>>8&256);this.a-=10},function(){this.b=this.K(P(this));this.a-=13},function(){this.u=this.u-1&65535;this.a-=5},function(){this.b=bc(this,this.b);this.a-=5},function(){this.b=ac(this,this.b);this.a-=5},function(){this.b=O(this);this.a-=7},function(){L(this,K(this)?0:256);this.a-=4},function(){this.a-=5},function(){this.c=this.D;this.a-=5},function(){this.c=this.f;this.a-=5},function(){this.c=this.F;this.a-=5},function(){this.c=this.g;this.a-=5},function(){this.c=this.i;
|
||||
this.a-=5},function(){this.c=this.K(I(this));this.a-=7},function(){this.c=this.b;this.a-=5},function(){this.D=this.c;this.a-=5},function(){this.a-=5},function(){this.D=this.f;this.a-=5},function(){this.D=this.F;this.a-=5},function(){this.D=this.g;this.a-=5},function(){this.D=this.i;this.a-=5},function(){this.D=this.K(I(this));this.a-=7},function(){this.D=this.b;this.a-=5},function(){this.f=this.c;this.a-=5},function(){this.f=this.D;this.a-=5},function(){this.a-=5},function(){this.f=this.F;this.a-=
|
||||
5},function(){this.f=this.g;this.a-=5},function(){this.f=this.i;this.a-=5},function(){this.f=this.K(I(this));this.a-=7},function(){this.f=this.b;this.a-=5},function(){this.F=this.c;this.a-=5},function(){this.F=this.D;this.a-=5},function(){this.F=this.f;this.a-=5},function(){this.a-=5},function(){this.F=this.g;this.a-=5},function(){this.F=this.i;this.a-=5},function(){this.F=this.K(I(this));this.a-=7},function(){this.F=this.b;this.a-=5},function(){this.g=this.c;this.a-=5},function(){this.g=this.D;this.a-=
|
||||
5},function(){this.g=this.f;this.a-=5},function(){this.g=this.F;this.a-=5},function(){this.a-=5},function(){this.g=this.i;this.a-=5},function(){this.g=this.K(I(this));this.a-=7},function(){this.g=this.b;this.a-=5},function(){this.i=this.c;this.a-=5},function(){this.i=this.D;this.a-=5},function(){this.i=this.f;this.a-=5},function(){this.i=this.F;this.a-=5},function(){this.i=this.g;this.a-=5},function(){this.a-=5},function(){this.i=this.K(I(this));this.a-=7},function(){this.i=this.b;this.a-=5},function(){this.$(I(this),
|
||||
this.c);this.a-=7},function(){this.$(I(this),this.D);this.a-=7},function(){this.$(I(this),this.f);this.a-=7},function(){this.$(I(this),this.F);this.a-=7},function(){this.$(I(this),this.g);this.a-=7},function(){this.$(I(this),this.i);this.a-=7},function(){var a=this.o-1;if(this.ra.length)for(var b=0;b<this.ra.length;b++)if(this.ra[b](a))return;this.a-=7;this.B|=256;this.C-=this.a;this.a=0;this.G&512||Db(this)},function(){this.$(I(this),this.b);this.a-=7},function(){this.b=this.c;this.a-=5},function(){this.b=
|
||||
this.D;this.a-=5},function(){this.b=this.f;this.a-=5},function(){this.b=this.F;this.a-=5},function(){this.b=this.g;this.a-=5},function(){this.b=this.i;this.a-=5},function(){this.b=this.K(I(this));this.a-=7},function(){this.a-=5},function(){this.b=M(this,this.c);this.a-=4},function(){this.b=M(this,this.D);this.a-=4},function(){this.b=M(this,this.f);this.a-=4},function(){this.b=M(this,this.F);this.a-=4},function(){this.b=M(this,this.g);this.a-=4},function(){this.b=M(this,this.i);this.a-=4},function(){this.b=
|
||||
M(this,this.K(I(this)));this.a-=7},function(){this.b=M(this,this.b);this.a-=4},function(){this.b=Zb(this,this.c);this.a-=4},function(){this.b=Zb(this,this.D);this.a-=4},function(){this.b=Zb(this,this.f);this.a-=4},function(){this.b=Zb(this,this.F);this.a-=4},function(){this.b=Zb(this,this.g);this.a-=4},function(){this.b=Zb(this,this.i);this.a-=4},function(){this.b=Zb(this,this.K(I(this)));this.a-=7},function(){this.b=Zb(this,this.b);this.a-=4},function(){this.b=N(this,this.c);this.a-=4},function(){this.b=
|
||||
N(this,this.D);this.a-=4},function(){this.b=N(this,this.f);this.a-=4},function(){this.b=N(this,this.F);this.a-=4},function(){this.b=N(this,this.g);this.a-=4},function(){this.b=N(this,this.i);this.a-=4},function(){this.b=N(this,this.K(I(this)));this.a-=7},function(){this.b=N(this,this.b);this.a-=4},function(){this.b=dc(this,this.c);this.a-=4},function(){this.b=dc(this,this.D);this.a-=4},function(){this.b=dc(this,this.f);this.a-=4},function(){this.b=dc(this,this.F);this.a-=4},function(){this.b=dc(this,
|
||||
this.g);this.a-=4},function(){this.b=dc(this,this.i);this.a-=4},function(){this.b=dc(this,this.K(I(this)));this.a-=7},function(){this.b=dc(this,this.b);this.a-=4},function(){this.b=$b(this,this.c);this.a-=4},function(){this.b=$b(this,this.D);this.a-=4},function(){this.b=$b(this,this.f);this.a-=4},function(){this.b=$b(this,this.F);this.a-=4},function(){this.b=$b(this,this.g);this.a-=4},function(){this.b=$b(this,this.i);this.a-=4},function(){this.b=$b(this,this.K(I(this)));this.a-=7},function(){this.b=
|
||||
$b(this,this.b);this.a-=4},function(){this.b=ec(this,this.c);this.a-=4},function(){this.b=ec(this,this.D);this.a-=4},function(){this.b=ec(this,this.f);this.a-=4},function(){this.b=ec(this,this.F);this.a-=4},function(){this.b=ec(this,this.g);this.a-=4},function(){this.b=ec(this,this.i);this.a-=4},function(){this.b=ec(this,this.K(I(this)));this.a-=7},function(){this.b=ec(this,this.b);this.a-=4},function(){this.b=cc(this,this.c);this.a-=4},function(){this.b=cc(this,this.D);this.a-=4},function(){this.b=
|
||||
cc(this,this.f);this.a-=4},function(){this.b=cc(this,this.F);this.a-=4},function(){this.b=cc(this,this.g);this.a-=4},function(){this.b=cc(this,this.i);this.a-=4},function(){this.b=cc(this,this.K(I(this)));this.a-=7},function(){this.b=cc(this,this.b);this.a-=4},function(){N(this,this.c);this.a-=4},function(){N(this,this.D);this.a-=4},function(){N(this,this.f);this.a-=4},function(){N(this,this.F);this.a-=4},function(){N(this,this.g);this.a-=4},function(){N(this,this.i);this.a-=4},function(){N(this,
|
||||
this.K(I(this)));this.a-=7},function(){N(this,this.b);this.a-=4},function(){this.m&255&&(E(this,Q(this)),this.a-=6);this.a-=5},function(){Vb(this,Q(this));this.a-=10},function(){var a=P(this);this.m&255&&E(this,a);this.a-=10},ic,function(){var a=P(this);this.m&255&&(S(this,this.o),E(this,a),this.a-=6);this.a-=11},function(){S(this,Ub(this));this.a-=11},function(){this.b=M(this,O(this));this.a-=7},function(){S(this,this.o);E(this,0);this.a-=11},function(){this.m&255||(E(this,Q(this)),this.a-=6);this.a-=
|
||||
5},jc,function(){var a=P(this);this.m&255||E(this,a);this.a-=10},ic,function(){var a=P(this);this.m&255||(S(this,this.o),E(this,a),this.a-=6);this.a-=11},kc,function(){this.b=Zb(this,O(this));this.a-=7},function(){S(this,this.o);E(this,8);this.a-=11},function(){K(this)||(E(this,Q(this)),this.a-=6);this.a-=5},function(){Xb(this,Q(this));this.a-=10},function(){var a=P(this);K(this)||E(this,a);this.a-=10},function(){for(var a=O(this),b=this.j,c=this.b,d=this.o+-2&65535,e=1,f=0;0<e;){var h=b.o[a],g=b.C[a]||
|
||||
1,l=1==g?255:2==g?65535:-1,l=(c>>>=f)&l;if(void 0!==h&&h[0])h[0](a,l,d);f+=g<<3;a+=g;e-=g}this.a-=10},function(){var a=P(this);K(this)||(S(this,this.o),E(this,a),this.a-=6);this.a-=11},function(){S(this,Wb(this));this.a-=11},function(){this.b=N(this,O(this));this.a-=7},function(){S(this,this.o);E(this,16);this.a-=11},function(){K(this)&&(E(this,Q(this)),this.a-=6);this.a-=5},jc,function(){var a=P(this);K(this)&&E(this,a);this.a-=10},function(){for(var a=O(this),b=this.j,c=this.o+-2&65535,d=1,e=0,
|
||||
f=0;0<d;){var h=b.v[a],g=b.B[a]||1,l=1==g?255:2==g?65535:-1,n=l;void 0!==h&&h[0]&&(n=h[0](a,c),void 0===n?n=l:n&=l);e|=n<<f;f+=g<<3;a+=g;d-=g}this.b=e&255;this.a-=10},function(){var a=P(this);K(this)&&(S(this,this.o),E(this,a),this.a-=6);this.a-=11},kc,function(){this.b=dc(this,O(this));this.a-=7},function(){S(this,this.o);E(this,24);this.a-=11},function(){Yb(this)||(E(this,Q(this)),this.a-=6);this.a-=5},function(){J(this,Q(this));this.a-=10},function(){var a=P(this);Yb(this)||E(this,a);this.a-=10},
|
||||
function(){var a=Q(this);S(this,I(this));J(this,a);this.a-=18},function(){var a=P(this);Yb(this)||(S(this,this.o),E(this,a),this.a-=6);this.a-=11},function(){S(this,I(this));this.a-=11},function(){this.b=$b(this,O(this));this.a-=7},function(){S(this,this.o);E(this,32);this.a-=11},function(){Yb(this)&&(E(this,Q(this)),this.a-=6);this.a-=5},function(){E(this,I(this));this.a-=5},function(){var a=P(this);Yb(this)&&E(this,a);this.a-=10},function(){var a=I(this);J(this,Wb(this));Xb(this,a);this.a-=5},function(){var a=
|
||||
P(this);Yb(this)&&(S(this,this.o),E(this,a),this.a-=6);this.a-=11},kc,function(){this.b=ec(this,O(this));this.a-=7},function(){S(this,this.o);E(this,40);this.a-=11},function(){this.s&128||(E(this,Q(this)),this.a-=6);this.a-=5},function(){var a=Q(this);Rb(this,a&255|this.G&-256);this.b=a>>8;this.a-=10},function(){var a=P(this);this.s&128||E(this,a);this.a-=10},function(){this.G&=-513;this.a-=4},function(){var a=P(this);this.s&128||(S(this,this.o),E(this,a),this.a-=6);this.a-=11},function(){S(this,
|
||||
Tb(this)&255|this.b<<8);this.a-=11},function(){this.b=cc(this,O(this));this.a-=7},function(){S(this,this.o);E(this,48);this.a-=11},function(){this.s&128&&(E(this,Q(this)),this.a-=6);this.a-=5},function(){this.u=I(this)&65535;this.a-=5},function(){var a=P(this);this.s&128&&E(this,a);this.a-=10},function(){this.G|=512;this.a-=4;fc(this)},function(){var a=P(this);this.s&128&&(S(this,this.o),E(this,a),this.a-=6);this.a-=11},kc,function(){N(this,O(this));this.a-=7},function(){S(this,this.o);E(this,56);
|
||||
this.a-=11}];function U(a){q.call(this,"ChipSet",a,U);var b=a.model;b&&!lc[b]&&Aa("Unrecognized ChipSet model: "+b);this.c=lc[b]||{};a.sound&&(this.I=null,window&&(this.I=window.AudioContext||window.webkitAudioContext),this.I&&new this.I);C(this)}w(U);
|
||||
k.Ba=function(a){this.La&&(a||!this.l.oa||this.l.xb)&&(T(this,"A",this.b),T(this,"B",this.c),T(this,"C",this.D),T(this,"BC",Vb(this),4),T(this,"D",this.f),T(this,"E",this.F),T(this,"DE",Xb(this),4),T(this,"H",this.g),T(this,"L",this.i),T(this,"HL",I(this),4),T(this,"SP",this.u,4),T(this,"PC",this.o,4),a=Ub(this),T(this,"PS",a,4),T(this,"IF",a&512?1:0,1),T(this,"SF",a&128?1:0,1),T(this,"ZF",a&64?1:0,1),T(this,"AF",a&16?1:0,1),T(this,"PF",a&4?1:0,1),T(this,"CF",a&1?1:0,1));if(a=this.A.speed)a.textContent=
|
||||
this.l.oa&&this.O?this.O.toFixed(2)+"Mhz":"Stopped"};k.Fb=function(a){this.l.Ya=!0;this.l.mc=!1;this.l.yb=!1;this.R=this.a=a;if(gc(this)){do this.Ja[O(this)].call(this);while(0<this.a)}return this.l.Ya?this.R-this.a:void 0===this.l.Ya?0:-1};ya(function(){for(var a=A(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Ob(d);Pa(d,c)}});function ic(){this.a-=4}function jc(){E(this,P(this));this.a-=10}function kc(){E(this,Q(this));this.a-=10}
|
||||
function lc(){var a=P(this);S(this,this.o);E(this,a);this.a-=17}
|
||||
var Pb=[ic,function(){Wb(this,P(this));this.a-=10},function(){this.$(Vb(this),this.b);this.a-=7},function(){Wb(this,Vb(this)+1);this.a-=5},function(){this.c=cc(this,this.c);this.a-=5},function(){this.c=bc(this,this.c);this.a-=5},function(){this.c=O(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|a>>8;L(this,a&256);this.a-=4},ic,function(){var a;J(this,a=I(this)+Vb(this));L(this,a>>8&256);this.a-=10},function(){this.b=this.L(Vb(this));this.a-=7},function(){Wb(this,Vb(this)-1);this.a-=5},function(){this.D=
|
||||
cc(this,this.D);this.a-=5},function(){this.D=bc(this,this.D);this.a-=5},function(){this.D=O(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(a|this.b)>>1;L(this,a);this.a-=4},ic,function(){Yb(this,P(this));this.a-=10},function(){this.$(Xb(this),this.b);this.a-=7},function(){Yb(this,Xb(this)+1);this.a-=5},function(){this.f=cc(this,this.f);this.a-=5},function(){this.f=bc(this,this.f);this.a-=5},function(){this.f=O(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|K(this);L(this,a&256);
|
||||
this.a-=4},ic,function(){var a;J(this,a=I(this)+Xb(this));L(this,a>>8&256);this.a-=10},function(){this.b=this.L(Xb(this));this.a-=7},function(){Yb(this,Xb(this)-1);this.a-=5},function(){this.F=cc(this,this.F);this.a-=5},function(){this.F=bc(this,this.F);this.a-=5},function(){this.F=O(this);this.a-=7},function(){var a=this.b<<8;this.b=(K(this)<<8|this.b)>>1;L(this,a&256);this.a-=4},ic,function(){J(this,P(this));this.a-=10},function(){var a=P(this);fb(this.j,a,I(this));this.a-=16},function(){J(this,
|
||||
I(this)+1);this.a-=5},function(){this.g=cc(this,this.g);this.a-=5},function(){this.g=bc(this,this.g);this.a-=5},function(){this.g=O(this);this.a-=7},function(){var a=0,b=K(this);if((this.s^this.w)&16||9<(this.b&15))a|=6;if(b||154<=this.b)a|=96,b=1;this.b=M(this,a);L(this,b?256:0);this.a-=4},ic,function(){var a;J(this,a=I(this)+I(this));L(this,a>>8&256);this.a-=10},function(){var a;a=P(this);a=cb(this.j,a);J(this,a);this.a-=16},function(){J(this,I(this)-1);this.a-=5},function(){this.i=cc(this,this.i);
|
||||
this.a-=5},function(){this.i=bc(this,this.i);this.a-=5},function(){this.i=O(this);this.a-=7},function(){this.b=~this.b&255;this.a-=4},ic,function(){this.u=P(this)&65535;this.a-=10},function(){this.$(P(this),this.b);this.a-=13},function(){this.u=this.u+1&65535;this.a-=5},function(){var a=I(this);this.$(a,cc(this,this.L(a)));this.a-=10},function(){var a=I(this);this.$(a,bc(this,this.L(a)));this.a-=10},function(){this.$(I(this),O(this));this.a-=10},function(){this.m|=256;this.a-=4},ic,function(){var a;
|
||||
J(this,a=I(this)+this.u);L(this,a>>8&256);this.a-=10},function(){this.b=this.L(P(this));this.a-=13},function(){this.u=this.u-1&65535;this.a-=5},function(){this.b=cc(this,this.b);this.a-=5},function(){this.b=bc(this,this.b);this.a-=5},function(){this.b=O(this);this.a-=7},function(){L(this,K(this)?0:256);this.a-=4},function(){this.a-=5},function(){this.c=this.D;this.a-=5},function(){this.c=this.f;this.a-=5},function(){this.c=this.F;this.a-=5},function(){this.c=this.g;this.a-=5},function(){this.c=this.i;
|
||||
this.a-=5},function(){this.c=this.L(I(this));this.a-=7},function(){this.c=this.b;this.a-=5},function(){this.D=this.c;this.a-=5},function(){this.a-=5},function(){this.D=this.f;this.a-=5},function(){this.D=this.F;this.a-=5},function(){this.D=this.g;this.a-=5},function(){this.D=this.i;this.a-=5},function(){this.D=this.L(I(this));this.a-=7},function(){this.D=this.b;this.a-=5},function(){this.f=this.c;this.a-=5},function(){this.f=this.D;this.a-=5},function(){this.a-=5},function(){this.f=this.F;this.a-=
|
||||
5},function(){this.f=this.g;this.a-=5},function(){this.f=this.i;this.a-=5},function(){this.f=this.L(I(this));this.a-=7},function(){this.f=this.b;this.a-=5},function(){this.F=this.c;this.a-=5},function(){this.F=this.D;this.a-=5},function(){this.F=this.f;this.a-=5},function(){this.a-=5},function(){this.F=this.g;this.a-=5},function(){this.F=this.i;this.a-=5},function(){this.F=this.L(I(this));this.a-=7},function(){this.F=this.b;this.a-=5},function(){this.g=this.c;this.a-=5},function(){this.g=this.D;this.a-=
|
||||
5},function(){this.g=this.f;this.a-=5},function(){this.g=this.F;this.a-=5},function(){this.a-=5},function(){this.g=this.i;this.a-=5},function(){this.g=this.L(I(this));this.a-=7},function(){this.g=this.b;this.a-=5},function(){this.i=this.c;this.a-=5},function(){this.i=this.D;this.a-=5},function(){this.i=this.f;this.a-=5},function(){this.i=this.F;this.a-=5},function(){this.i=this.g;this.a-=5},function(){this.a-=5},function(){this.i=this.L(I(this));this.a-=7},function(){this.i=this.b;this.a-=5},function(){this.$(I(this),
|
||||
this.c);this.a-=7},function(){this.$(I(this),this.D);this.a-=7},function(){this.$(I(this),this.f);this.a-=7},function(){this.$(I(this),this.F);this.a-=7},function(){this.$(I(this),this.g);this.a-=7},function(){this.$(I(this),this.i);this.a-=7},function(){var a=this.o-1;if(this.ra.length)for(var b=0;b<this.ra.length;b++)if(this.ra[b](a))return;this.a-=7;this.B|=256;Mb(this);this.C&512||Db(this)},function(){this.$(I(this),this.b);this.a-=7},function(){this.b=this.c;this.a-=5},function(){this.b=this.D;
|
||||
this.a-=5},function(){this.b=this.f;this.a-=5},function(){this.b=this.F;this.a-=5},function(){this.b=this.g;this.a-=5},function(){this.b=this.i;this.a-=5},function(){this.b=this.L(I(this));this.a-=7},function(){this.a-=5},function(){this.b=M(this,this.c);this.a-=4},function(){this.b=M(this,this.D);this.a-=4},function(){this.b=M(this,this.f);this.a-=4},function(){this.b=M(this,this.F);this.a-=4},function(){this.b=M(this,this.g);this.a-=4},function(){this.b=M(this,this.i);this.a-=4},function(){this.b=
|
||||
M(this,this.L(I(this)));this.a-=7},function(){this.b=M(this,this.b);this.a-=4},function(){this.b=$b(this,this.c);this.a-=4},function(){this.b=$b(this,this.D);this.a-=4},function(){this.b=$b(this,this.f);this.a-=4},function(){this.b=$b(this,this.F);this.a-=4},function(){this.b=$b(this,this.g);this.a-=4},function(){this.b=$b(this,this.i);this.a-=4},function(){this.b=$b(this,this.L(I(this)));this.a-=7},function(){this.b=$b(this,this.b);this.a-=4},function(){this.b=N(this,this.c);this.a-=4},function(){this.b=
|
||||
N(this,this.D);this.a-=4},function(){this.b=N(this,this.f);this.a-=4},function(){this.b=N(this,this.F);this.a-=4},function(){this.b=N(this,this.g);this.a-=4},function(){this.b=N(this,this.i);this.a-=4},function(){this.b=N(this,this.L(I(this)));this.a-=7},function(){this.b=N(this,this.b);this.a-=4},function(){this.b=ec(this,this.c);this.a-=4},function(){this.b=ec(this,this.D);this.a-=4},function(){this.b=ec(this,this.f);this.a-=4},function(){this.b=ec(this,this.F);this.a-=4},function(){this.b=ec(this,
|
||||
this.g);this.a-=4},function(){this.b=ec(this,this.i);this.a-=4},function(){this.b=ec(this,this.L(I(this)));this.a-=7},function(){this.b=ec(this,this.b);this.a-=4},function(){this.b=ac(this,this.c);this.a-=4},function(){this.b=ac(this,this.D);this.a-=4},function(){this.b=ac(this,this.f);this.a-=4},function(){this.b=ac(this,this.F);this.a-=4},function(){this.b=ac(this,this.g);this.a-=4},function(){this.b=ac(this,this.i);this.a-=4},function(){this.b=ac(this,this.L(I(this)));this.a-=7},function(){this.b=
|
||||
ac(this,this.b);this.a-=4},function(){this.b=fc(this,this.c);this.a-=4},function(){this.b=fc(this,this.D);this.a-=4},function(){this.b=fc(this,this.f);this.a-=4},function(){this.b=fc(this,this.F);this.a-=4},function(){this.b=fc(this,this.g);this.a-=4},function(){this.b=fc(this,this.i);this.a-=4},function(){this.b=fc(this,this.L(I(this)));this.a-=7},function(){this.b=fc(this,this.b);this.a-=4},function(){this.b=dc(this,this.c);this.a-=4},function(){this.b=dc(this,this.D);this.a-=4},function(){this.b=
|
||||
dc(this,this.f);this.a-=4},function(){this.b=dc(this,this.F);this.a-=4},function(){this.b=dc(this,this.g);this.a-=4},function(){this.b=dc(this,this.i);this.a-=4},function(){this.b=dc(this,this.L(I(this)));this.a-=7},function(){this.b=dc(this,this.b);this.a-=4},function(){N(this,this.c);this.a-=4},function(){N(this,this.D);this.a-=4},function(){N(this,this.f);this.a-=4},function(){N(this,this.F);this.a-=4},function(){N(this,this.g);this.a-=4},function(){N(this,this.i);this.a-=4},function(){N(this,
|
||||
this.L(I(this)));this.a-=7},function(){N(this,this.b);this.a-=4},function(){this.m&255&&(E(this,Q(this)),this.a-=6);this.a-=5},function(){Wb(this,Q(this));this.a-=10},function(){var a=P(this);this.m&255&&E(this,a);this.a-=10},jc,function(){var a=P(this);this.m&255&&(S(this,this.o),E(this,a),this.a-=6);this.a-=11},function(){S(this,Vb(this));this.a-=11},function(){this.b=M(this,O(this));this.a-=7},function(){S(this,this.o);E(this,0);this.a-=11},function(){this.m&255||(E(this,Q(this)),this.a-=6);this.a-=
|
||||
5},kc,function(){var a=P(this);this.m&255||E(this,a);this.a-=10},jc,function(){var a=P(this);this.m&255||(S(this,this.o),E(this,a),this.a-=6);this.a-=11},lc,function(){this.b=$b(this,O(this));this.a-=7},function(){S(this,this.o);E(this,8);this.a-=11},function(){K(this)||(E(this,Q(this)),this.a-=6);this.a-=5},function(){Yb(this,Q(this));this.a-=10},function(){var a=P(this);K(this)||E(this,a);this.a-=10},function(){for(var a=O(this),b=this.j,c=this.b,d=this.o+-2&65535,e=1,f=0;0<e;){var h=b.o[a],g=b.C[a]||
|
||||
1,l=1==g?255:2==g?65535:-1,l=(c>>>=f)&l;if(void 0!==h&&h[0])h[0](a,l,d);f+=g<<3;a+=g;e-=g}this.a-=10},function(){var a=P(this);K(this)||(S(this,this.o),E(this,a),this.a-=6);this.a-=11},function(){S(this,Xb(this));this.a-=11},function(){this.b=N(this,O(this));this.a-=7},function(){S(this,this.o);E(this,16);this.a-=11},function(){K(this)&&(E(this,Q(this)),this.a-=6);this.a-=5},kc,function(){var a=P(this);K(this)&&E(this,a);this.a-=10},function(){for(var a=O(this),b=this.j,c=this.o+-2&65535,d=1,e=0,
|
||||
f=0;0<d;){var h=b.v[a],g=b.B[a]||1,l=1==g?255:2==g?65535:-1,n=l;void 0!==h&&h[0]&&(n=h[0](a,c),void 0===n?n=l:n&=l);e|=n<<f;f+=g<<3;a+=g;d-=g}this.b=e&255;this.a-=10},function(){var a=P(this);K(this)&&(S(this,this.o),E(this,a),this.a-=6);this.a-=11},lc,function(){this.b=ec(this,O(this));this.a-=7},function(){S(this,this.o);E(this,24);this.a-=11},function(){Zb(this)||(E(this,Q(this)),this.a-=6);this.a-=5},function(){J(this,Q(this));this.a-=10},function(){var a=P(this);Zb(this)||E(this,a);this.a-=10},
|
||||
function(){var a=Q(this);S(this,I(this));J(this,a);this.a-=18},function(){var a=P(this);Zb(this)||(S(this,this.o),E(this,a),this.a-=6);this.a-=11},function(){S(this,I(this));this.a-=11},function(){this.b=ac(this,O(this));this.a-=7},function(){S(this,this.o);E(this,32);this.a-=11},function(){Zb(this)&&(E(this,Q(this)),this.a-=6);this.a-=5},function(){E(this,I(this));this.a-=5},function(){var a=P(this);Zb(this)&&E(this,a);this.a-=10},function(){var a=I(this);J(this,Xb(this));Yb(this,a);this.a-=5},function(){var a=
|
||||
P(this);Zb(this)&&(S(this,this.o),E(this,a),this.a-=6);this.a-=11},lc,function(){this.b=fc(this,O(this));this.a-=7},function(){S(this,this.o);E(this,40);this.a-=11},function(){this.s&128||(E(this,Q(this)),this.a-=6);this.a-=5},function(){var a=Q(this);Sb(this,a&255|this.C&-256);this.b=a>>8;this.a-=10},function(){var a=P(this);this.s&128||E(this,a);this.a-=10},function(){this.C&=-513;this.a-=4},function(){var a=P(this);this.s&128||(S(this,this.o),E(this,a),this.a-=6);this.a-=11},function(){S(this,
|
||||
Ub(this)&255|this.b<<8);this.a-=11},function(){this.b=dc(this,O(this));this.a-=7},function(){S(this,this.o);E(this,48);this.a-=11},function(){this.s&128&&(E(this,Q(this)),this.a-=6);this.a-=5},function(){this.u=I(this)&65535;this.a-=5},function(){var a=P(this);this.s&128&&E(this,a);this.a-=10},function(){this.C|=512;this.a-=4;gc(this)},function(){var a=P(this);this.s&128&&(S(this,this.o),E(this,a),this.a-=6);this.a-=11},lc,function(){N(this,O(this));this.a-=7},function(){S(this,this.o);E(this,56);
|
||||
this.a-=11}];function U(a){q.call(this,"ChipSet",a,U);var b=a.model;b&&!mc[b]&&Aa("Unrecognized ChipSet model: "+b);this.c=mc[b]||{};a.sound&&(this.I=null,window&&(this.I=window.AudioContext||window.webkitAudioContext),this.I&&new this.I);C(this)}w(U);
|
||||
var W={aa:1978.1,jc:{ba:0,Uc:1,Yc:16,ed:32,od:64,nd:128,Ga:14},za:{ba:1,Lb:1,ec:2,ac:4,bc:16,cc:32,dc:64,Ga:8},kc:{ba:2,Tc:3,xd:4,Vc:8,jd:16,kd:32,ld:64,Wc:128,Ga:0},sd:{ba:3},qd:{ba:2,fd:7},ud:{ba:3,yd:1,td:2,md:4,cd:8,Xc:16,Qc:32},rd:{ba:4},vd:{ba:5,Zc:1,$c:2,ad:4,bd:8,zd:16}},X={aa:100,ja:{ba:66,tb:1,Zb:2,$b:4,hd:8,gd:16,rb:32,qb:64,nb:128},Kb:{ba:66,INIT:0},xa:{ba:194,Sc:0,mb:16,fc:32,sb:48,Pb:0,Qb:32},Sa:{ba:162,pd:0,Sb:0,Ob:0,Rb:0,Nb:0},ka:{dd:{ba:98},Ca:{Ib:0,Hb:1,hc:2,lc:4,Mb:5,gc:6,wd:7},
|
||||
Va:16383}},lc={SI1978:W,VT100:X};U.prototype.V=function(){return!1};U.prototype.qa=function(a,b,c,d){this.j=b;this.a=c;this.O=d;this.v=a;this.m=Va(a,"Keyboard");this.Z=Va(a,"SerialPort");this.video=Va(a,"Video");gb(b,this,this.c.bb);hb(b,this,this.c.cb)};U.prototype.fa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};U.prototype.ia=function(a){return a?this.save():!0};W.INIT=[[W.jc.Ga,W.za.Ga,W.kc.Ga,0,0,0,0]];
|
||||
Va:16383}},mc={SI1978:W,VT100:X};U.prototype.V=function(){return!1};U.prototype.qa=function(a,b,c,d){this.j=b;this.a=c;this.N=d;this.v=a;this.m=Va(a,"Keyboard");this.Z=Va(a,"SerialPort");this.video=Va(a,"Video");gb(b,this,this.c.bb);hb(b,this,this.c.cb)};U.prototype.fa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};U.prototype.ia=function(a){return a?this.save():!0};W.INIT=[[W.jc.Ga,W.za.Ga,W.kc.Ga,0,0,0,0]];
|
||||
X.INIT=[[X.Kb.INIT,X.ja.Zb|X.ja.$b],[X.xa.Pb,X.xa.Qb],[X.Sa.Sb,X.Sa.Ob,X.Sa.Rb,X.Sa.Nb],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];k=U.prototype;k.reset=function(){this.c.INIT&&!this.restore(this.c.INIT)&&this.M("reset error")};
|
||||
k.save=function(){var a=new F(this);switch(this.c.aa){case W.aa:G(a,0,[this.W,this.g,this.X,this.C,this.L,this.R,this.U]);break;case X.aa:G(a,0,[this.J,this.u]),G(a,1,[this.o,this.s]),G(a,2,[this.f,this.G,this.P,this.N]),G(a,3,[this.B,this.b,this.w,this.H,this.i])}return a.data()};
|
||||
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.c.aa){case W.aa:return this.W=b[0],this.g=b[1],this.X=b[2],this.C=b[3],this.L=b[4],this.R=b[5],this.U=b[6],!0;case X.aa:return this.J=b[0],this.u=b[1],b=a[1],this.o=b[0],this.s=b[1],b=a[2],this.f=b[0],this.G=b[1],this.P=b[2],this.N=b[3],b=a[3],this.B=b[0],this.b=b[1],this.w=b[2],this.H=b[3],this.i=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.qc=function(){return this.W};k.rc=function(){return this.g};k.sc=function(){return this.X};
|
||||
k.pc=function(){return this.C>>8-this.L&255};k.Cc=function(a,b){this.L=b};k.Ec=function(a,b){this.R=b};k.Dc=function(a,b){this.C=b<<8|this.C>>8};k.Fc=function(a,b){this.U=b};k.Gc=function(){};function mc(a){var b=0,c=0,d=~a.B;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
|
||||
k.tc=function(){var a=this.u,a=a&~X.ja.qb;if((Hb(this.a)&64)<<1&&(a|=X.ja.qb,a!=this.u)){var b,c;b=this.w&1;switch(this.w>>1&7){case X.ka.Ca.Hb:this.B=this.B<<1|b;break;case X.ka.Ca.Mb:b=mc(this);this.i[b]=X.ka.Va;break;case X.ka.Ca.Ib:this.b=this.b<<1|b;break;case X.ka.Ca.lc:b=mc(this);c=this.b&X.ka.Va;this.i[b]=c;break;case X.ka.Ca.gc:b=mc(this);c=this.i[b];null==c&&(c=X.ka.Va);this.b=c;break;case X.ka.Ca.hc:this.b<<=1,this.H=this.b&X.ka.Va+1}}a&=~X.ja.rb;this.H&&(a|=X.ja.rb);a&=~X.ja.nb;if(b=this.m){b=
|
||||
this.m;if(c=b.f)c=b.a,c=Hb(b.a)>=b.m+c.ma*c.J/1E3*1.2731488;c&&(b.f=!1);b=!b.f}b&&(a|=X.ja.nb);a&=~X.ja.tb;this.Z&&this.Z.ea&1&&(a|=X.ja.tb);return this.u=a};k.Hc=function(a,b){this.J=b};k.Kc=function(a,b){this.w=b};k.Jc=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.pa!==d&&((c.pa=d)?Mb(c,!0):c.sa=!0)}break;case 2:switch(c){case 0:this.G=~this.G;break;case 2:case 3:this.P=3-c}break;case 3:this.N=c}};
|
||||
k.Ic=function(a,b){if(b&X.xa.fc)b&=X.xa.sb,this.s!=b&&(this.s=b,this.video&&(this.video.Db=this.s==X.xa.sb?50:60));else if(b&=X.xa.mb,this.o!=b&&(this.o=b,this.video)){var c=this.video,d=this.o==X.xa.mb?132:80;c.H=d;c.T=c.wa;80<d&&c.T--;nc(c)&&oc(c)}};W.bb={0:U.prototype.qc,1:U.prototype.rc,2:U.prototype.sc,3:U.prototype.pc};W.cb={2:U.prototype.Cc,3:U.prototype.Ec,4:U.prototype.Dc,5:U.prototype.Fc,6:U.prototype.Gc};X.bb={66:U.prototype.tc};
|
||||
k.save=function(){var a=new F(this);switch(this.c.aa){case W.aa:G(a,0,[this.W,this.g,this.X,this.C,this.H,this.R,this.U]);break;case X.aa:G(a,0,[this.K,this.u]),G(a,1,[this.o,this.s]),G(a,2,[this.f,this.G,this.P,this.O]),G(a,3,[this.B,this.b,this.w,this.J,this.i])}return a.data()};
|
||||
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.c.aa){case W.aa:return this.W=b[0],this.g=b[1],this.X=b[2],this.C=b[3],this.H=b[4],this.R=b[5],this.U=b[6],!0;case X.aa:return this.K=b[0],this.u=b[1],b=a[1],this.o=b[0],this.s=b[1],b=a[2],this.f=b[0],this.G=b[1],this.P=b[2],this.O=b[3],b=a[3],this.B=b[0],this.b=b[1],this.w=b[2],this.J=b[3],this.i=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.qc=function(){return this.W};k.rc=function(){return this.g};k.sc=function(){return this.X};
|
||||
k.pc=function(){return this.C>>8-this.H&255};k.Cc=function(a,b){this.H=b};k.Ec=function(a,b){this.R=b};k.Dc=function(a,b){this.C=b<<8|this.C>>8};k.Fc=function(a,b){this.U=b};k.Gc=function(){};function nc(a){var b=0,c=0,d=~a.B;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
|
||||
k.tc=function(){var a=this.u,a=a&~X.ja.qb;if((Hb(this.a)&64)<<1&&(a|=X.ja.qb,a!=this.u)){var b,c;b=this.w&1;switch(this.w>>1&7){case X.ka.Ca.Hb:this.B=this.B<<1|b;break;case X.ka.Ca.Mb:b=nc(this);this.i[b]=X.ka.Va;break;case X.ka.Ca.Ib:this.b=this.b<<1|b;break;case X.ka.Ca.lc:b=nc(this);c=this.b&X.ka.Va;this.i[b]=c;break;case X.ka.Ca.gc:b=nc(this);c=this.i[b];null==c&&(c=X.ka.Va);this.b=c;break;case X.ka.Ca.hc:this.b<<=1,this.J=this.b&X.ka.Va+1}}a&=~X.ja.rb;this.J&&(a|=X.ja.rb);a&=~X.ja.nb;if(b=this.m){b=
|
||||
this.m;if(c=b.f)c=b.a,c=Hb(b.a)>=b.m+c.ma*c.I/1E3*1.2731488;c&&(b.f=!1);b=!b.f}b&&(a|=X.ja.nb);a&=~X.ja.tb;this.Z&&this.Z.ea&1&&(a|=X.ja.tb);return this.u=a};k.Hc=function(a,b){this.K=b};k.Kc=function(a,b){this.w=b};k.Jc=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.pa!==d&&((c.pa=d)?Nb(c,!0):c.sa=!0)}break;case 2:switch(c){case 0:this.G=~this.G;break;case 2:case 3:this.P=3-c}break;case 3:this.O=c}};
|
||||
k.Ic=function(a,b){if(b&X.xa.fc)b&=X.xa.sb,this.s!=b&&(this.s=b,this.video&&(this.video.Db=this.s==X.xa.sb?50:60));else if(b&=X.xa.mb,this.o!=b&&(this.o=b,this.video)){var c=this.video,d=this.o==X.xa.mb?132:80;c.J=d;c.T=c.wa;80<d&&c.T--;oc(c)&&pc(c)}};W.bb={0:U.prototype.qc,1:U.prototype.rc,2:U.prototype.sc,3:U.prototype.pc};W.cb={2:U.prototype.Cc,3:U.prototype.Ec,4:U.prototype.Dc,5:U.prototype.Fc,6:U.prototype.Gc};X.bb={66:U.prototype.tc};
|
||||
X.cb={66:U.prototype.Hc,98:U.prototype.Kc,162:U.prototype.Jc,194:U.prototype.Ic};ya(function(){for(var a=A(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new U(d);Pa(d,c)}});
|
||||
function pc(a){q.call(this,"ROM",a,pc);this.b=null;this.m=a.addr;this.c=a.size;this.v=a.writable;this.f=a.alias;this.g=a.file;this.o=ba(this.g);if(this.g){a=this.g;var b=ca(this.o);"json"!=b&&"hex"!=b&&(a=ea()+"/api/v1/dump?file="+this.g+"&format=bytes&decimal=true");var c=this;ma(a,null,!0,function(a,b,f){qc(c,a,b,f)})}}w(pc);var rc=[0,5];pc.prototype.qa=function(a,b,c,d){this.j=b;this.a=c;this.O=d;sc(this)};
|
||||
pc.prototype.fa=function(){this.i&&(this.O&&this.O.a(this.id,this.m,this.c,this.i),delete this.i);return!0};pc.prototype.ia=function(){return!0};
|
||||
function qc(a,b,c,d){if(d)a.M("Unable to load system ROM (error "+d+": "+b+")");else{La(a.Ua,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.i=e.symbols;if(!a.b.length){p("Empty ROM: "+b);return}if(1==a.b.length){p(a.b[0]);return}}catch(g){a.M("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=aa(b[e]);sc(a)}}
|
||||
function sc(a){if(!Ra(a))if(!a.g)C(a);else if(a.b&&a.j){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size (0x"+m(a.b.length)+") does not match specified size ("+("0x"+m(a.c))+")";a.l.Aa=!0;a.M(b)}else if(tc(a,a.m)){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.j,h=d.c,g=[],l=d.m>>>f.j;0<h&&l<f.b.length;)g.push(f.b[l++]),h-=f.c;f=d.j;d=d.c;h=0;for(e>>>=f.j;0<d&&e<f.b.length;){l=g[h++];if(!l)break;f.b[e++]=l;d-=f.c}}delete a.b}C(a)}}
|
||||
function tc(a,b){if(Za(a.j,b,a.c,a.v?1:nb)){var c;for(c=0;c<a.b.length;c++)eb(a.j,b+c,a.b[c]);if(a.v&&256==b){for(c=0;c<rc.length;c++)eb(a.j,rc[c],118);Qb(a.a,function(a){return function(b){if(0<=rc.indexOf(b)){var c=!1,h=a.a,g=a.O;if(5==b)switch(c=!0,h.D){case 2:uc(a,String.fromCharCode(h.F));break;case 9:for(var l=Wb(h),n="",x=255;x--;){var t=a.a.K(l++);if(36==t)break;n+=String.fromCharCode(t)}uc(a,n);break;default:c=!1}c?jc.call(h):g&&(a.ca("\nCP/M vector 0x"+m(b,4)),E(h,b),Db(g));b=!0}else b=
|
||||
!1;return b}}(a));Sb(a.a,b)}return!0}return!1}function uc(a,b){b=b.replace(/\r/g,"");a.va&&(a.va.value+=b,a.va.scrollTop=a.va.scrollHeight)}ya(function(){for(var a=A(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new pc(d);Pa(d,c)}});function vc(a){q.call(this,"RAM",a,vc);this.f=a.addr;this.c=a.size;this.b=!1}w(vc);k=vc.prototype;k.qa=function(a,b,c,d){this.j=b;this.a=c;this.O=d;C(this)};k.fa=function(a,b){b||this.reset();return!0};k.ia=function(a){return a?this.save():!0};
|
||||
k.reset=function(){!this.b&&this.c&&Za(this.j,this.f,this.c,1)&&(this.b=!0);this.b||p("No RAM allocated")};k.save=function(){return null};k.restore=function(){return!0};ya(function(){for(var a=A(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new vc(d);Pa(d,c)}});function Y(a){q.call(this,"Keyboard",a,Y);(a=a.model)&&!wc[a]&&Aa("Unrecognized Keyboard8080 model: "+a);this.b=wc[a]||{};this.reset();C(this)}w(Y);
|
||||
var xc={aa:1978.1,h:{},lb:{65:37,68:39,76:32},Ha:{},ya:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},Z={aa:100,h:{},lb:{},Ha:{},ya:{setup:120},Jb:{ba:130,INIT:127},ga:{ba:130,Xb:1,Wb:2,Vb:4,Ub:8,Yb:16,pb:32,ob:63,ic:64,Rc:128,INIT:0},Tb:127};Z.h[46]=3;Z.h[80]=5;Z.h[79]=6;Z.h[89]=7;Z.h[84]=8;Z.h[87]=9;Z.h[81]=10;Z.h[39]=16;Z.h[221]=20;Z.h[219]=21;Z.h[73]=22;Z.h[85]=23;Z.h[82]=24;Z.h[69]=25;Z.h[49]=26;Z.h[37]=32;Z.h[40]=34;Z.h[117]=35;Z.h[19]=35;Z.h[192]=36;Z.h[189]=37;Z.h[57]=38;Z.h[55]=39;
|
||||
function qc(a){q.call(this,"ROM",a,qc);this.b=null;this.m=a.addr;this.c=a.size;this.v=a.writable;this.f=a.alias;this.g=a.file;this.o=ba(this.g);if(this.g){a=this.g;var b=ca(this.o);"json"!=b&&"hex"!=b&&(a=ea()+"/api/v1/dump?file="+this.g+"&format=bytes&decimal=true");var c=this;ma(a,null,!0,function(a,b,f){rc(c,a,b,f)})}}w(qc);var sc=[0,5];qc.prototype.qa=function(a,b,c,d){this.j=b;this.a=c;this.N=d;tc(this)};
|
||||
qc.prototype.fa=function(){this.i&&(this.N&&this.N.a(this.id,this.m,this.c,this.i),delete this.i);return!0};qc.prototype.ia=function(){return!0};
|
||||
function rc(a,b,c,d){if(d)a.M("Unable to load system ROM (error "+d+": "+b+")");else{La(a.Ua,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.i=e.symbols;if(!a.b.length){p("Empty ROM: "+b);return}if(1==a.b.length){p(a.b[0]);return}}catch(g){a.M("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=aa(b[e]);tc(a)}}
|
||||
function tc(a){if(!Ra(a))if(!a.g)C(a);else if(a.b&&a.j){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size (0x"+m(a.b.length)+") does not match specified size ("+("0x"+m(a.c))+")";a.l.Aa=!0;a.M(b)}else if(uc(a,a.m)){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.j,h=d.c,g=[],l=d.m>>>f.j;0<h&&l<f.b.length;)g.push(f.b[l++]),h-=f.c;f=d.j;d=d.c;h=0;for(e>>>=f.j;0<d&&e<f.b.length;){l=g[h++];if(!l)break;f.b[e++]=l;d-=f.c}}delete a.b}C(a)}}
|
||||
function uc(a,b){if(Za(a.j,b,a.c,a.v?1:nb)){var c;for(c=0;c<a.b.length;c++)db(a.j,b+c,a.b[c]);if(a.v&&256==b){for(c=0;c<sc.length;c++)db(a.j,sc[c],118);Rb(a.a,function(a){return function(b){if(0<=sc.indexOf(b)){var c=!1,h=a.a,g=a.N;if(5==b)switch(c=!0,h.D){case 2:vc(a,String.fromCharCode(h.F));break;case 9:for(var l=Xb(h),n="",x=255;x--;){var t=a.a.L(l++);if(36==t)break;n+=String.fromCharCode(t)}vc(a,n);break;default:c=!1}c?kc.call(h):g&&(a.ca("\nCP/M vector 0x"+m(b,4)),E(h,b),Db(g));b=!0}else b=
|
||||
!1;return b}}(a));Tb(a.a,b)}return!0}return!1}function vc(a,b){b=b.replace(/\r/g,"");a.va&&(a.va.value+=b,a.va.scrollTop=a.va.scrollHeight)}ya(function(){for(var a=A(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new qc(d);Pa(d,c)}});function wc(a){q.call(this,"RAM",a,wc);this.f=a.addr;this.c=a.size;this.b=!1}w(wc);k=wc.prototype;k.qa=function(a,b,c,d){this.j=b;this.a=c;this.N=d;C(this)};k.fa=function(a,b){b||this.reset();return!0};k.ia=function(a){return a?this.save():!0};
|
||||
k.reset=function(){!this.b&&this.c&&Za(this.j,this.f,this.c,1)&&(this.b=!0);this.b||p("No RAM allocated")};k.save=function(){return null};k.restore=function(){return!0};ya(function(){for(var a=A(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new wc(d);Pa(d,c)}});function Y(a){q.call(this,"Keyboard",a,Y);(a=a.model)&&!xc[a]&&Aa("Unrecognized Keyboard8080 model: "+a);this.b=xc[a]||{};this.reset();C(this)}w(Y);
|
||||
var yc={aa:1978.1,h:{},lb:{65:37,68:39,76:32},Ha:{},ya:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},Z={aa:100,h:{},lb:{},Ha:{},ya:{setup:120},Jb:{ba:130,INIT:127},ga:{ba:130,Xb:1,Wb:2,Vb:4,Ub:8,Yb:16,pb:32,ob:63,ic:64,Rc:128,INIT:0},Tb:127};Z.h[46]=3;Z.h[80]=5;Z.h[79]=6;Z.h[89]=7;Z.h[84]=8;Z.h[87]=9;Z.h[81]=10;Z.h[39]=16;Z.h[221]=20;Z.h[219]=21;Z.h[73]=22;Z.h[85]=23;Z.h[82]=24;Z.h[69]=25;Z.h[49]=26;Z.h[37]=32;Z.h[40]=34;Z.h[117]=35;Z.h[19]=35;Z.h[192]=36;Z.h[189]=37;Z.h[57]=38;Z.h[55]=39;
|
||||
Z.h[52]=40;Z.h[51]=41;Z.h[27]=42;Z.h[38]=48;Z.h[114]=49;Z.h[112]=50;Z.h[8]=51;Z.h[187]=52;Z.h[48]=53;Z.h[56]=54;Z.h[54]=55;Z.h[53]=56;Z.h[50]=57;Z.h[9]=58;Z.h[103]=64;Z.h[115]=65;Z.h[113]=66;Z.h[96]=67;Z.h[118]=68;Z.h[220]=69;Z.h[76]=70;Z.h[75]=71;Z.h[71]=72;Z.h[70]=73;Z.h[65]=74;Z.h[104]=80;Z.h[2013]=81;Z.h[98]=82;Z.h[97]=83;Z.h[222]=85;Z.h[186]=86;Z.h[74]=87;Z.h[72]=88;Z.h[68]=89;Z.h[83]=90;Z.h[110]=96;Z.h[116]=97;Z.h[101]=98;Z.h[100]=99;Z.h[13]=100;Z.h[190]=101;Z.h[188]=102;Z.h[78]=103;
|
||||
Z.h[66]=104;Z.h[88]=105;Z.h[119]=106;Z.h[105]=112;Z.h[99]=113;Z.h[102]=114;Z.h[109]=115;Z.h[191]=117;Z.h[77]=118;Z.h[32]=119;Z.h[86]=120;Z.h[67]=121;Z.h[90]=122;Z.h[120]=123;Z.h[17]=124;Z.h[16]=125;Z.h[20]=126;Z.Ha={l4:Z.ga.Xb,l3:Z.ga.Wb,l2:Z.ga.Vb,l1:Z.ga.Ub,locked:Z.ga.Yb,local:Z.ga.pb,online:~Z.ga.pb};var wc={SI1978:xc,VT100:Z};
|
||||
Y.prototype.V=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.A[e]){if("led"==a&&this.b.Ha[b])return this.A[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return yc(d,a,!0)},c.onkeyup=function(a){return yc(d,a,!1)},!0;default:if(this.b.ya&&void 0!==this.b.ya[b])return this.A[e]=c,a=function(a,b){return function(c){c.preventDefault();Ac(a,b,!0)}}(this,this.b.ya[b]),b=function(a,b){return function(){Ac(a,b,!1)}}(this,this.b.ya[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
|
||||
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};Y.prototype.qa=function(a,b,c,d){this.v=a;this.a=c;this.O=d;this.L=Va(a,"ChipSet");gb(b,this,this.b.bb);hb(b,this,this.b.cb)};Y.prototype.fa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};Y.prototype.ia=function(a){return a?this.save():!0};Z.INIT=[[Z.ga.INIT,Z.Jb.INIT,!1,0,-1]];k=Y.prototype;k.reset=function(){this.j=[];this.b.INIT&&!this.restore(this.b.INIT)&&this.M("reset error")};
|
||||
k.save=function(){var a=new F(this);switch(this.b.aa){case Z.aa:G(a,0,[this.i,this.g,this.f,this.m,-1])}return a.data()};k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.aa){case xc.aa:return!0;case Z.aa:return this.i=b[0],Bc(this,this.i&Z.ga.ob),this.g=b[1],this.f=b[2],this.m=b[3],this.c=b[4],!0}return!1};function Bc(a,b){for(var c in a.b.Ha){var d=a.A["led-"+c];if(d){var e=a.b.Ha[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}
|
||||
function yc(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.b.lb[e]||e,!a.b.h[e]){for(var f in a.b.ya)if(a.b.ya[f]===e){e=f;break a}e=null}e&&(d=Ac(a,e,c),b.preventDefault());return d}
|
||||
function Ac(a,b,c){var d;a:{for(d=0;d<a.j.length;d++)if(a.j[d].kb==b)break a;d=-1}if(c)0>d?a.j.push({kb:b,hb:Date.now(),Wa:!1}):(a.j[d].hb=Date.now(),a.j[d].Wa=!1);else if(0<=d){if(!a.j[d].Wa){var e=a.j[d].hb;if(e&&100>Date.now()-e)return a.j[d].Wa=!0,Cc(a),!0}a.j.splice(d,1)}if(a.L){d=0;switch(b){case "1p":d=W.za.ac;break;case "2p":d=W.za.ec;break;case "coin":d=W.za.Lb;break;case "left":d=W.za.cc;break;case "right":d=W.za.dc;break;case "fire":d=W.za.bc}d&&(a=a.L,b=d,a.g&=~b,c&&(a.g|=b))}return!0}
|
||||
function Cc(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].Wa){var d=a.j[b].kb,e=100-(Date.now()-a.j[b].hb);if(0<e){if(0>c||c>e)c=e}else{Ac(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){Cc(a)},c)}k.uc=function(){var a=this.g;0<=this.c&&(this.c<this.j.length?(a=this.j[this.c],this.c++,a=Z.h[a.kb],a&128&&(a&=127)):(this.c=-1,a=Z.Tb),this.g=a,gc(this.a,1));return a};k.Lc=function(a,b){this.i=b;this.f=!0;this.m=Hb(this.a);Bc(this,b&Z.ga.ob);b&Z.ga.ic&&(this.c=0,gc(this.a,1))};Z.bb={130:Y.prototype.uc};
|
||||
Z.h[66]=104;Z.h[88]=105;Z.h[119]=106;Z.h[105]=112;Z.h[99]=113;Z.h[102]=114;Z.h[109]=115;Z.h[191]=117;Z.h[77]=118;Z.h[32]=119;Z.h[86]=120;Z.h[67]=121;Z.h[90]=122;Z.h[120]=123;Z.h[17]=124;Z.h[16]=125;Z.h[20]=126;Z.Ha={l4:Z.ga.Xb,l3:Z.ga.Wb,l2:Z.ga.Vb,l1:Z.ga.Ub,locked:Z.ga.Yb,local:Z.ga.pb,online:~Z.ga.pb};var xc={SI1978:yc,VT100:Z};
|
||||
Y.prototype.V=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.A[e]){if("led"==a&&this.b.Ha[b])return this.A[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return zc(d,a,!0)},c.onkeyup=function(a){return zc(d,a,!1)},!0;default:if(this.b.ya&&void 0!==this.b.ya[b])return this.A[e]=c,a=function(a,b){return function(c){c.preventDefault();Bc(a,b,!0)}}(this,this.b.ya[b]),b=function(a,b){return function(){Bc(a,b,!1)}}(this,this.b.ya[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
|
||||
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};Y.prototype.qa=function(a,b,c,d){this.v=a;this.a=c;this.N=d;this.J=Va(a,"ChipSet");gb(b,this,this.b.bb);hb(b,this,this.b.cb)};Y.prototype.fa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};Y.prototype.ia=function(a){return a?this.save():!0};Z.INIT=[[Z.ga.INIT,Z.Jb.INIT,!1,0,-1]];k=Y.prototype;k.reset=function(){this.j=[];this.b.INIT&&!this.restore(this.b.INIT)&&this.M("reset error")};
|
||||
k.save=function(){var a=new F(this);switch(this.b.aa){case Z.aa:G(a,0,[this.i,this.g,this.f,this.m,-1])}return a.data()};k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.aa){case yc.aa:return!0;case Z.aa:return this.i=b[0],Cc(this,this.i&Z.ga.ob),this.g=b[1],this.f=b[2],this.m=b[3],this.c=b[4],!0}return!1};function Cc(a,b){for(var c in a.b.Ha){var d=a.A["led-"+c];if(d){var e=a.b.Ha[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}
|
||||
function zc(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.b.lb[e]||e,!a.b.h[e]){for(var f in a.b.ya)if(a.b.ya[f]===e){e=f;break a}e=null}e&&(d=Bc(a,e,c),b.preventDefault());return d}
|
||||
function Bc(a,b,c){var d;a:{for(d=0;d<a.j.length;d++)if(a.j[d].kb==b)break a;d=-1}if(c)0>d?a.j.push({kb:b,hb:Date.now(),Wa:!1}):(a.j[d].hb=Date.now(),a.j[d].Wa=!1);else if(0<=d){if(!a.j[d].Wa){var e=a.j[d].hb;if(e&&100>Date.now()-e)return a.j[d].Wa=!0,Dc(a),!0}a.j.splice(d,1)}if(a.J){d=0;switch(b){case "1p":d=W.za.ac;break;case "2p":d=W.za.ec;break;case "coin":d=W.za.Lb;break;case "left":d=W.za.cc;break;case "right":d=W.za.dc;break;case "fire":d=W.za.bc}d&&(a=a.J,b=d,a.g&=~b,c&&(a.g|=b))}return!0}
|
||||
function Dc(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].Wa){var d=a.j[b].kb,e=100-(Date.now()-a.j[b].hb);if(0<e){if(0>c||c>e)c=e}else{Bc(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){Dc(a)},c)}k.uc=function(){var a=this.g;0<=this.c&&(this.c<this.j.length?(a=this.j[this.c],this.c++,a=Z.h[a.kb],a&128&&(a&=127)):(this.c=-1,a=Z.Tb),this.g=a,hc(this.a,1));return a};k.Lc=function(a,b){this.i=b;this.f=!0;this.m=Hb(this.a);Cc(this,b&Z.ga.ob);b&Z.ga.ic&&(this.c=0,hc(this.a,1))};Z.bb={130:Y.prototype.uc};
|
||||
Z.cb={130:Y.prototype.Lc};ya(function(){for(var a=A(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Y(d);Pa(d,c)}});
|
||||
function Dc(a,b,c,d,e){var f=this;this.Ka=sa("Gecko/");var h=["","moz","ms","webkit"];q.call(this,"Video",a,Dc);this.C=a.screenWidth;this.w=a.screenHeight;this.da=a.bufferAddr;this.xc=a.bufferRAM;var g=a.bufferFormat;this.U=g&&Ec[g.toUpperCase()]||Fc;this.H=a.bufferCols;this.W=a.bufferRows;this.wa=this.T=a.cellWidth||1;this.S=a.cellHeight||1;this.X=null;this.Ja=!1;this.la=a.bufferBits||1;this.yc=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.ma=a.interruptRate;this.ab=a.refreshRate||60;this.u=b;this.f=c;this.P=(this.Nc=d)||b||null;this.vc=this.C;this.wc=this.w;this.Da=this.C/this.H|0;this.Ea=this.w/this.W|0;1<this.S&&(this.W++,this.pa=0,this.sa=!1);b=a.smoothing;(c=Fa.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.g=a.screenRotate)this.g=this.g%360,0<this.g&&(this.g-=360),-90!=this.g?(this.M("unsupported screen rotation: "+
|
||||
this.g),this.g=0):(this.f.translate(0,this.w),this.f.rotate(this.g*Math.PI/180),this.f.scale(this.w/this.C,this.C/this.w));if(this.b=e)if(this.b.Fa=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.Fa){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){Gc(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(){Gc(f,null)},!1);break}}if(this.L=a.fontROM)"json"!=ca(this.L)&&(this.L=ea()+"/api/v1/dump?file="+this.L+"&format=bytes"),ma(this.L,null,!0,function(a,b,c){Hc(f,a,b,c)});this.ua={}}w(Dc);var Fc=0,Ec={SI1978:1,VT100:2};
|
||||
function nc(a){a.o=a.H*a.T;a.G=a.W*a.S;var b=a.o,c=a.G;a.c&&(b=a.G,c=a.o);a.B=0;if(!a.xc&&(a.B=(a.o*a.la>>3)*a.G,!Za(a.j,a.da,a.B,3)))return!1;a.B?(a.La=a.f.createImageData(b,c),a.Oa=16/a.la|0,Ic(a,a.B>>1)):Ic(a,(a.H+1)*a.W);a.s=document.createElement("canvas");a.s.width=b;a.s.height=c;a.ra=a.s.getContext("2d");a.I={};a.R=1<<a.la;a.J=Array(a.R+2);a.J[0]=[0,0,0,255];a.J[1]=[255,255,255,255];1==a.U&&(a.J[a.R+0]=[255,255,0,255],a.J[a.R+1]=[0,255,0,255]);2==a.U&&(a.Db=60,a.ta=!1,a.Z=Array(a.H));return!0}
|
||||
Dc.prototype.qa=function(a,b,c,d){this.v=a;this.j=b;this.a=c;this.O=d;nc(this);if(this.m=Va(a,"Keyboard")){for(var e in this.ua)this.m.V("led",e,this.ua[e]);this.u&&this.m.V(this.Nc?"textarea":"canvas","kbd",this.P)}var f=this;this.Cb=Kb(this.a,function(){Mb(f)});Lb(this.a,this.Cb,1E3/Math.max(this.ab,this.ma));this.$a=0;this.L||C(this)};
|
||||
function Hc(a,b,c,d){if(d)a.M("Unable to load font ROM (error "+d+": "+b+")");else{La(a.Ua,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){p("Empty font ROM: "+b);return}if(1==f.length){p(f[0]);return}if(2048==f.length)a.X=f,oc(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.O)&&C(a)}}
|
||||
function oc(a){a.X&&(a.Ja=2==a.U,a.I[96]=[Jc(a,a.T,a.S),Jc(a,a.T,a.S,a.ta)],a.I[64]=[Jc(a,2*a.T,a.S),Jc(a,2*a.T,a.S,a.ta)],a.I[32]=a.I[0]=[Jc(a,2*a.T,2*a.S),Jc(a,2*a.T,2*a.S,a.ta)])}
|
||||
function Jc(a,b,c,d){var e=8>=a.wa?8:16,f=8<e?15:0,h=a.X.length/e,g=!1===d,l={T:b,S:c};l.canvas=document.createElement("canvas");l.canvas.width=16*b;l.canvas.height=h/16*c;l.context=l.canvas.getContext("2d");for(var n=l.context.createImageData(b,c),x=0;x<h;x++){for(var t=0,B=t;t<a.S;t++)for(var u=x*e+(f+t&e-1),u=d&&8==t?255:a.X[u],y=0;y<c/a.S;y++){for(var v=0,H=0,V=H;H<a.T;H++){for(var R=u&128>>(7<H?7:H),v=a.Ja&&!R&&v?v:R,ka=0;ka<b/a.T;ka++)g&&(v=!v),Kc(a,n,V,B,v?1:0),V++;v=R}B++}l.context.putImageData(n,
|
||||
(x&15)*b,(x>>4)*c)}return l}Dc.prototype.fa=function(){return!0};Dc.prototype.V=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.ua[b]=c,!0;switch(b){case "fullScreen":return this.A[b]=c,this.b&&this.b.Fa?c.onclick=function(){d.Fa()}:c.parentNode.removeChild(c),!0}return!1};
|
||||
Dc.prototype.Fa=function(){var a=!1;if(this.b){if(this.b.Fa){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.Ka?(this.u.style.width=a,this.u.style.width=a,this.u.style.display="block",this.u.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.Fa();a=!0}this.P&&this.P.focus()}return a};
|
||||
function Gc(a,b){!b&&a.b&&(a.Ka?a.u.style.width=a.u.style.height="":a.b.style.width=a.b.style.height="")}function Ic(a,b){a.Na=b;a.N=!1;if(void 0===a.i||a.i.length!=a.Na)a.i=Array(a.Na)}function Kc(a,b,c,d,e){d=a.c?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.U&&(208<=c&&236>c?e=a.R+0:28<=c&&72>c&&(e=a.R+1));a=a.J[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 Mb(a,b){var c=!0;if(!b){a.ma&&(120==a.ma?a.$a&1?(gc(a.a,2),c=!1):gc(a.a,1):gc(a.a,4));if(c&&a.N&&a.B){for(var d=a.j,e=a.B,f=!0,h=a.da>>>d.j;0<e&&h<d.b.length;)d.b[h].na&&(d.b[h].na=f=!1,d.b[h].wb=!0),e-=d.c,h++;f&&(c=!1)}Lb(a.a,a.Cb,1E3/Math.max(a.ab,a.ma));a.$a++}if(c)if(1<a.T)switch(a.U){case 2:for(var c=a.da,d=-1,e=0,f=60==a.Db?2:5,g=h=0,l=-1;e<a.W;){var n=0,x=c,t=d,B=a.H;for(96!=t&&(B>>=1);;){var u=bb(a.j,x++);if(127==(u&127)){var y=bb(a.j,x++),d=y&96,c=(y&15)<<8|bb(a.j,x),c=c+(y&16?
|
||||
8192:16384);break}if(n<B)a.Z[n++]=u;else break}if(f)f--;else{for(;n<a.Z.length;)a.Z[n++]=0;if(0<=t)for(x=a.N&&a.i[h]==B,a.i[h++]=B,B=0;B<n;B++){u=a.Z[B];if(!x||u!==a.i[h]){a.i[l=h]=u;var y=a,v=a.ra,H=u&127;if(u=y.I[t][u&128?1:0]){var V=(H&15)*u.T,H=(H>>4)*u.S,R=void 0,ka=void 0,Ca=void 0,db=void 0,zc=u.T,Jb=u.S;v?(R=B*y.T,ka=e*y.S,Ca=y.T,db=y.S):(R=B*y.Da,ka=e*y.Ea,Ca=y.Da,db=y.Ea);u.T>y.T&&(R*=2,Ca*=2);u.S>y.S&&(0==t&&(H+=y.S),Jb=y.S);v?v.drawImage(u.canvas,V,H,zc,Jb,R,ka,Ca,db):(R+=0,ka+=0,y.f.drawImage(u.canvas,
|
||||
V,H,zc,Jb,R,ka,Ca,db))}g++}h++}e++}}a.N=!0;!b&&a.sa&&1==g&&(a.i[l]=-1,g=0);a.sa=!1;(g||b)&&a.ra&&a.f.drawImage(a.s,0,a.pa,a.o,a.G-a.S,0,0,a.vc,a.wc)}else{f=a.da;h=f+a.B;n=l=g=0;c=a.o;t=0;d=a.G;x=e=0;B=a.la;y=(1<<B)-1;a.yc&&(B=-B,x=16+B);for(;f<h;){v=a.j;u=f;V=u&v.f;H=(u&v.g)>>>v.j;v=V!=v.f?v.b[H].Eb(V,u):v.b[H++].eb(V,u)|v.b[H&v.s].eb(0,u+1)<<8;if(a.N&&v===a.i[g])l+=a.Oa;else{a.i[g]=v;(u=x)&&(v=v>>8|(v&255)<<8);l<c&&(c=l);for(V=a.Oa;V--;)H=v>>u&y,Kc(a,a.La,l++,n,H),u+=B;l>t&&(t=l);n<d&&(d=n);n>=e&&
|
||||
(e=n+1)}f+=2;g++;if(l>=a.o&&(l=0,n++,n>a.G))break}a.N=!0;c<a.o&&(f=t-c,e-=d,a.c&&(h=c,g=f,c=d,f=e,d=a.o-(h+g),e=g),a.ra.putImageData(a.La,0,0,c,d,f,e),a.f.drawImage(a.s,0,0,a.s.width,a.s.height,0,0,a.C,a.w))}}
|
||||
function Ec(a,b,c,d,e){var f=this;this.Ka=sa("Gecko/");var h=["","moz","ms","webkit"];q.call(this,"Video",a,Ec);this.C=a.screenWidth;this.w=a.screenHeight;this.da=a.bufferAddr;this.xc=a.bufferRAM;var g=a.bufferFormat;this.U=g&&Fc[g.toUpperCase()]||Gc;this.J=a.bufferCols;this.W=a.bufferRows;this.wa=this.T=a.cellWidth||1;this.S=a.cellHeight||1;this.X=null;this.Ja=!1;this.la=a.bufferBits||1;this.yc=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.ma=a.interruptRate;this.ab=a.refreshRate||60;this.u=b;this.f=c;this.P=(this.Nc=d)||b||null;this.vc=this.C;this.wc=this.w;this.Da=this.C/this.J|0;this.Ea=this.w/this.W|0;1<this.S&&(this.W++,this.pa=0,this.sa=!1);b=a.smoothing;(c=Fa.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.g=a.screenRotate)this.g=this.g%360,0<this.g&&(this.g-=360),-90!=this.g?(this.M("unsupported screen rotation: "+
|
||||
this.g),this.g=0):(this.f.translate(0,this.w),this.f.rotate(this.g*Math.PI/180),this.f.scale(this.w/this.C,this.C/this.w));if(this.b=e)if(this.b.Fa=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.Fa){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){Hc(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(){Hc(f,null)},!1);break}}if(this.H=a.fontROM)"json"!=ca(this.H)&&(this.H=ea()+"/api/v1/dump?file="+this.H+"&format=bytes"),ma(this.H,null,!0,function(a,b,c){Ic(f,a,b,c)});this.ua={}}w(Ec);var Gc=0,Fc={SI1978:1,VT100:2};
|
||||
function oc(a){a.o=a.J*a.T;a.G=a.W*a.S;var b=a.o,c=a.G;a.c&&(b=a.G,c=a.o);a.B=0;if(!a.xc&&(a.B=(a.o*a.la>>3)*a.G,!Za(a.j,a.da,a.B,3)))return!1;a.B?(a.La=a.f.createImageData(b,c),a.Oa=16/a.la|0,Jc(a,a.B>>1)):Jc(a,(a.J+1)*a.W);a.s=document.createElement("canvas");a.s.width=b;a.s.height=c;a.ra=a.s.getContext("2d");a.I={};a.R=1<<a.la;a.K=Array(a.R+2);a.K[0]=[0,0,0,255];a.K[1]=[255,255,255,255];1==a.U&&(a.K[a.R+0]=[255,255,0,255],a.K[a.R+1]=[0,255,0,255]);2==a.U&&(a.Db=60,a.ta=!1,a.Z=Array(a.J));return!0}
|
||||
Ec.prototype.qa=function(a,b,c,d){this.v=a;this.j=b;this.a=c;this.N=d;oc(this);if(this.m=Va(a,"Keyboard")){for(var e in this.ua)this.m.V("led",e,this.ua[e]);this.u&&this.m.V(this.Nc?"textarea":"canvas","kbd",this.P)}var f=this;this.Cb=Jb(this.a,function(){Nb(f)});Lb(this.a,this.Cb,1E3/Math.max(this.ab,this.ma));this.$a=0;this.H||C(this)};
|
||||
function Ic(a,b,c,d){if(d)a.M("Unable to load font ROM (error "+d+": "+b+")");else{La(a.Ua,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){p("Empty font ROM: "+b);return}if(1==f.length){p(f[0]);return}if(2048==f.length)a.X=f,pc(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)&&C(a)}}
|
||||
function pc(a){a.X&&(a.Ja=2==a.U,a.I[96]=[Kc(a,a.T,a.S),Kc(a,a.T,a.S,a.ta)],a.I[64]=[Kc(a,2*a.T,a.S),Kc(a,2*a.T,a.S,a.ta)],a.I[32]=a.I[0]=[Kc(a,2*a.T,2*a.S),Kc(a,2*a.T,2*a.S,a.ta)])}
|
||||
function Kc(a,b,c,d){var e=8>=a.wa?8:16,f=8<e?15:0,h=a.X.length/e,g=!1===d,l={T:b,S:c};l.canvas=document.createElement("canvas");l.canvas.width=16*b;l.canvas.height=h/16*c;l.context=l.canvas.getContext("2d");for(var n=l.context.createImageData(b,c),x=0;x<h;x++){for(var t=0,B=t;t<a.S;t++)for(var u=x*e+(f+t&e-1),u=d&&8==t?255:a.X[u],y=0;y<c/a.S;y++){for(var v=0,H=0,V=H;H<a.T;H++){for(var R=u&128>>(7<H?7:H),v=a.Ja&&!R&&v?v:R,ka=0;ka<b/a.T;ka++)g&&(v=!v),Lc(a,n,V,B,v?1:0),V++;v=R}B++}l.context.putImageData(n,
|
||||
(x&15)*b,(x>>4)*c)}return l}Ec.prototype.fa=function(){return!0};Ec.prototype.V=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.ua[b]=c,!0;switch(b){case "fullScreen":return this.A[b]=c,this.b&&this.b.Fa?c.onclick=function(){d.Fa()}:c.parentNode.removeChild(c),!0}return!1};
|
||||
Ec.prototype.Fa=function(){var a=!1;if(this.b){if(this.b.Fa){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.Ka?(this.u.style.width=a,this.u.style.width=a,this.u.style.display="block",this.u.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.Fa();a=!0}this.P&&this.P.focus()}return a};
|
||||
function Hc(a,b){!b&&a.b&&(a.Ka?a.u.style.width=a.u.style.height="":a.b.style.width=a.b.style.height="")}function Jc(a,b){a.Na=b;a.O=!1;if(void 0===a.i||a.i.length!=a.Na)a.i=Array(a.Na)}function Lc(a,b,c,d,e){d=a.c?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.U&&(208<=c&&236>c?e=a.R+0:28<=c&&72>c&&(e=a.R+1));a=a.K[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 Nb(a,b){var c=!0;if(!b){a.ma&&(120==a.ma?a.$a&1?(hc(a.a,2),c=!1):hc(a.a,1):hc(a.a,4));if(c&&a.O&&a.B){for(var d=a.j,e=a.B,f=!0,h=a.da>>>d.j;0<e&&h<d.b.length;)d.b[h].na&&(d.b[h].na=f=!1,d.b[h].wb=!0),e-=d.c,h++;f&&(c=!1)}Lb(a.a,a.Cb,1E3/Math.max(a.ab,a.ma));a.$a++}if(c)if(1<a.T)switch(a.U){case 2:for(var c=a.da,d=-1,e=0,f=60==a.Db?2:5,g=h=0,l=-1;e<a.W;){var n=0,x=c,t=d,B=a.J;for(96!=t&&(B>>=1);;){var u=bb(a.j,x++);if(127==(u&127)){var y=bb(a.j,x++),d=y&96,c=(y&15)<<8|bb(a.j,x),c=c+(y&16?
|
||||
8192:16384);break}if(n<B)a.Z[n++]=u;else break}if(f)f--;else{for(;n<a.Z.length;)a.Z[n++]=0;if(0<=t)for(x=a.O&&a.i[h]==B,a.i[h++]=B,B=0;B<n;B++){u=a.Z[B];if(!x||u!==a.i[h]){a.i[l=h]=u;var y=a,v=a.ra,H=u&127;if(u=y.I[t][u&128?1:0]){var V=(H&15)*u.T,H=(H>>4)*u.S,R=void 0,ka=void 0,Ca=void 0,eb=void 0,Ac=u.T,Kb=u.S;v?(R=B*y.T,ka=e*y.S,Ca=y.T,eb=y.S):(R=B*y.Da,ka=e*y.Ea,Ca=y.Da,eb=y.Ea);u.T>y.T&&(R*=2,Ca*=2);u.S>y.S&&(0==t&&(H+=y.S),Kb=y.S);v?v.drawImage(u.canvas,V,H,Ac,Kb,R,ka,Ca,eb):(R+=0,ka+=0,y.f.drawImage(u.canvas,
|
||||
V,H,Ac,Kb,R,ka,Ca,eb))}g++}h++}e++}}a.O=!0;!b&&a.sa&&1==g&&(a.i[l]=-1,g=0);a.sa=!1;(g||b)&&a.ra&&a.f.drawImage(a.s,0,a.pa,a.o,a.G-a.S,0,0,a.vc,a.wc)}else{f=a.da;h=f+a.B;n=l=g=0;c=a.o;t=0;d=a.G;x=e=0;B=a.la;y=(1<<B)-1;a.yc&&(B=-B,x=16+B);for(;f<h;){v=a.j;u=f;V=u&v.f;H=(u&v.g)>>>v.j;v=V!=v.f?v.b[H].Eb(V,u):v.b[H++].eb(V,u)|v.b[H&v.s].eb(0,u+1)<<8;if(a.O&&v===a.i[g])l+=a.Oa;else{a.i[g]=v;(u=x)&&(v=v>>8|(v&255)<<8);l<c&&(c=l);for(V=a.Oa;V--;)H=v>>u&y,Lc(a,a.La,l++,n,H),u+=B;l>t&&(t=l);n<d&&(d=n);n>=e&&
|
||||
(e=n+1)}f+=2;g++;if(l>=a.o&&(l=0,n++,n>a.G))break}a.O=!0;c<a.o&&(f=t-c,e-=d,a.c&&(h=c,g=f,c=d,f=e,d=a.o-(h+g),e=g),a.ra.putImageData(a.La,0,0,c,d,f,e),a.f.drawImage(a.s,0,0,a.s.width,a.s.height,0,0,a.C,a.w))}}
|
||||
ya(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||Fa.aspect);f&&.3<=f&&3.33>=f&&(xa("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");sa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new Dc(d,e,h,f,c);Pa(d,c)}});
|
||||
function Lc(a){this.H=+a.adapter;switch(this.H){case 0:this.I=0;this.N=2;break;default:p("Unrecognized serial adapter #"+this.H);return}this.b=this.c=null;this.J=a.tabSize;this.G=a.charBOL;this.f=0;this.B=!1;q.call(this,"SerialPort",a,Lc);var b=a.binding;if("console"==b)this.c="";else{var c;a=Mc;b&&(void 0===c&&(c="Panel"),(c=Oa(c,this.id))&&(b=c.A[b])&&this.V(null,a,b))}this.g="";this.i=this.o=null;this.exports={connect:this.Bb,receiveData:this.ib}}w(Lc);
|
||||
var Nc=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Oc=[!1,0,0,133,142,39,238],Mc="buffer";k=Lc.prototype;
|
||||
k.V=function(a,b,c,d){var e=this;switch(b){case Mc:return this.A[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),Pc(e,b);return!0},c.onkeypress=function(a){a=a||window.event;Pc(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.A[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.ib(d);return!0},
|
||||
!0}return!1};k.qa=function(a,b,c,d){this.v=a;this.j=b;this.a=c;this.O=d;var e=this;this.P=Kb(this.a,function(){e.ib()});this.R=Kb(this.a,function(){e.ea|=5});this.L=Va(a,"ChipSet");gb(b,this,Qc,this.I);hb(b,this,Rc,this.I);C(this)};
|
||||
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||Fa.aspect);f&&.3<=f&&3.33>=f&&(xa("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");sa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new Ec(d,e,h,f,c);Pa(d,c)}});
|
||||
function Mc(a){this.H=+a.adapter;switch(this.H){case 0:this.I=0;this.O=2;break;default:p("Unrecognized serial adapter #"+this.H);return}this.b=this.c=null;this.K=a.tabSize;this.G=a.charBOL;this.f=0;this.B=!1;q.call(this,"SerialPort",a,Mc);var b=a.binding;if("console"==b)this.c="";else{var c;a=Nc;b&&(void 0===c&&(c="Panel"),(c=Oa(c,this.id))&&(b=c.A[b])&&this.V(null,a,b))}this.g="";this.i=this.o=null;this.exports={connect:this.Bb,receiveData:this.ib}}w(Mc);
|
||||
var Oc=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Pc=[!1,0,0,133,142,39,238],Nc="buffer";k=Mc.prototype;
|
||||
k.V=function(a,b,c,d){var e=this;switch(b){case Nc:return this.A[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),Qc(e,b);return!0},c.onkeypress=function(a){a=a||window.event;Qc(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.A[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.ib(d);return!0},
|
||||
!0}return!1};k.qa=function(a,b,c,d){this.v=a;this.j=b;this.a=c;this.N=d;var e=this;this.P=Jb(this.a,function(){e.ib()});this.R=Jb(this.a,function(){e.ea|=5});this.J=Va(a,"ChipSet");gb(b,this,Rc,this.I);hb(b,this,Sc,this.I);C(this)};
|
||||
k.Bb=function(){if(!this.i){var a=yb(this.v,"connection");if(a){var b=a.split("->");if(2==b.length){var c=ha(b[0]);if(c!=this.Ta)return;b=ha(b[1]);if(this.i=Na(b)){var d=this.i.exports;if(d){var e=d.connect;e&&e.call(this.i);if(this.o=d.receiveData){this.status(this.Ua+"."+c+" connected to "+b);return}}}}this.status("Unable to establish connection: "+a)}}};k.fa=function(a,b){if(!b)if(this.Bb(),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};
|
||||
k.ia=function(a){return a?this.save():!0};k.reset=function(){Sc(this)};k.save=function(){var a=new F(this),b=0,c=[];c[b++]=this.ha;c[b++]=this.w;c[b++]=this.C;c[b++]=this.ea;c[b++]=this.m;c[b++]=this.u;c[b]=this.s;G(a,0,c);return a.data()};k.restore=function(a){return Sc(this,a[0])};function Sc(a,b){var c=0;void 0===b&&(b=Oc);a.ha=b[c++];a.w=b[c++];a.C=b[c++];a.ea=b[c++];a.m=b[c++];a.u=b[c++];a.s=b[c];return!0}
|
||||
function Tc(a,b){var c=a.s&b;b&15||(c>>=4);var c=Nc[c],d=((a.m&12)>>2)+6;a.m&16&&d++;d+=((a.m&192)>>6)+1>>1;return 1E3/Math.round(c/d)}function Pc(a,b){return a.B||a.ea&2?!1:(a.w=b,a.ea|=2,gc(a.a,a.N),!0)}k.ib=function(a){null!=a&&(this.g="number"!=typeof a?a:this.g+String.fromCharCode(a));this.g&&(Pc(this,this.g.charCodeAt(0))&&(this.g=this.g.substr(1)),this.g&&this.a&&Lb(this.a,this.P,Tc(this,15)));return!0};k.oc=function(){var a=this.w;this.ea&=-3;return a};k.nc=function(){return this.ea};
|
||||
k.Bc=function(a,b){this.C=b;this.ea&=-6;if(19==b)this.B=!0;else if(17==b)this.B=!1;else if(this.o&&this.o.call(this.i,b),this.b)if(8==b)this.b.value=this.b.value.slice(0,-1),0<this.f&&this.f--;else{var c;c=(c=ia[b])?"<"+c+">":String.fromCharCode(b);var d=c.length;9==b?(d=this.J||8,d=d-this.f%d,this.J&&(c=" ".slice(0,d))):13==b&&(this.f=d=0,c="\n");this.G&&!this.f&&d&&(c=String.fromCharCode(this.G)+c);this.b.value+=c;this.b.scrollTop=this.b.scrollHeight;this.f+=
|
||||
d}else if(null!=this.c){if(10==b||1024<=this.c.length)this.ca(this.c),this.c="";10!=b&&(this.c+=String.fromCharCode(b))}this.a&&Lb(this.a,this.R,Tc(this,240))};k.Ac=function(a,b){this.ha?(this.u=b,this.u&64&&(this.ha=!1)):(this.m=b,this.ha=!0)};k.zc=function(a,b){this.s=b};var Qc={0:Lc.prototype.oc,1:Lc.prototype.nc},Rc={0:Lc.prototype.Bc,1:Lc.prototype.Ac,2:Lc.prototype.zc};ya(function(){for(var a=A(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Lc(d);Pa(d,c)}});
|
||||
function Uc(a,b,c){q.call(this,"Computer",a,Uc);this.l.Y=!1;Vc(this,b);this.w=yb(this,"autoPower",a);this.f=0;this.L=a.busWidth||a.buswidth;this.b=Wc;this.s=null;this.v=this.G=!1;this.I=yb(this,"url")||"";(Math.random()+.1).toString(36);this.c=Xc(this);if(this.a=Oa("CPU",this.id)){this.O=Oa("Debugger",this.id);this.m=[];for(b=null;b=Va(this,"Video",b);)this.m.push(b);this.j=new Xa({id:this.Ua+".bus",busWidth:this.L},this.a,this.O);var d,e=Ma(this.id);if((this.g=Oa("Panel",this.id))&&this.g.va)for(b=
|
||||
0;b<e.length;b++)d=e[b],d.M=this.g.M,d.ca=this.g.ca,d.va=this.g.va;this.ca("PC8080 v1.24.2\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.j,this.a,this.O);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.o=d:this.b=parseInt(d,10));var f;if(a=yb(this,"state")||(f=!0,a.state))b=this.B=a,f||(this.v=!0,this.b=Wc),this.b&&(this.u=new F(this,"1.24.2"),Yc(this.u)?b=null:delete this.u);
|
||||
!b&&this.b&&(b=Zc(this))&&(this.v=!0);if(b){var h=this;ma(b,null,!0,function(a,b,c){c?(h.o=null,h.v=!1,h.M("Unable to load machine state from server (error "+c+(b?": "+ha(b):"")+")")):(h.s=b,h.G=!0);C(h)})}else C(this);this.A.power||(this.w=!0);!c&&this.w&&$c(this,this.Pa)}else p("Unable to find CPU component")}w(Uc);var Wc=0;function Vc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){p(d.message+" ("+c+")")}}a.H=b}
|
||||
function yb(a,b,c){var d=b.toLowerCase(),d=Fa[b]||Fa[d];void 0===d&&a.H&&(d=a.H[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function $c(a,b,c){for(var d=Ma(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Ra(f)){Ra(f,function(){$c(a,b,c)});return}}b.call(a,c)}
|
||||
function ad(a,b){var c=new F(a,"1.24.2","validate");if(Yc(c)&&bd(c)){var d=cd(c,"timestamp"),e=b?cd(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())}}k=Uc.prototype;
|
||||
k.Pa=function(a){void 0===a&&(a=this.b||(this.s?1:Wc));if(!this.f){this.f++;var b=!1,c=!1;this.C=!1;var d=this.u||new F(this,"1.24.2");if(-1==a)b=!0;else if(a>Wc){if(Yc(d,this.s)){this.i=new F(this,"1.24.2","failsafe");Yc(this.i)&&(dd(this,d),a=2,ed(this.i));G(this.i,"timestamp",la());fd(this.i);var e=this.b&&!this.v;if(1==a||na("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=bd(d)){var f=cd(d,"code"),h=cd(d,"data");f&&("ok"==f?Yc(d,h):("error"==f&&
|
||||
"no machine state"!=h?(this.M("Error: "+h),"unable to verify user"==h&&(ra("user",""),this.c=null)):this.ca(f+": "+h),ed(d),Yc(d)?(c=bd(d),e=!0):c=!1))}e&&ad(this,c?d:null)}else 2==a&&d.clear()}else ad(this);delete this.s;delete this.u}e=Ma(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.a&&(c=gd(this,h,d,b,c));b=[d,a,c];-1!=a?$c(this,this.ub,b):this.ub(b)}};
|
||||
function gd(a,b,c,d,e){if(!b.l.Y){b.l.Y=!0;if(b.fa){var f=null;e&&((f=cd(c,b.id))||(f=cd(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.fa(f,d)&&f&&(p("Unable to restore state for "+b.type),a.B&&!a.G?(c.clear(),a.b=Wc,window&&window.location.reload()):a.C=!0,b.fa(null),e=!1)}if(!d&&b.zb)for(a=b.zb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
k.ub=function(a){var b=a[0],c=0>a[1];a=a[2];this.J=!0;this.l.Y=!0;var d=this.A.power;d&&(d.textContent="Shutdown");this.a&&(gd(this,this.a,b,c,a),Cb(this.a));this.C&&(dd(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0};
|
||||
function dd(a,b){if(na("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.24.2"};e.url=a.I;e.user=c;e.type="bug";e.data=d;ma("http://www.pcjs.org/api/v1/report",e,!0)}}
|
||||
function hd(a,b,c){var d,e="none";if(a.f)return null;a.f--;var f=new F(a,"1.24.2"),h=new F(a,"1.24.2","validate"),g=la();G(h,"timestamp",g);G(f,"timestamp",g);G(f,"version","1.24.2");G(f,"url",window?window.location.href:null);G(f,"browser",window?window.navigator.userAgent:"");a.a&&a.a.ia&&(c&&Db(a.a),d=a.a.ia(b,c),"object"===typeof d&&G(f,a.a.id,d),c&&(a.a.l.Y=!1,!1===d&&(e=null)));for(var g=Ma(a.id),l=0;l<g.length;l++){var n=g[l];n.l.Y&&(n.ia&&(d=n.ia(b,c),"object"===typeof d&&G(f,n.id,d)),c&&
|
||||
(n.l.Y=!1,!1===d&&(e=null)))}e&&(c?(g=d=!1,b?(a.c&&id(a,a.c,f.toString()),fd(h)&&fd(f)||(e=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&f.clear(g)):e=f.toString());c&&(a.l.Y=!1,b=a.A.power)&&(b.textContent="Power");a.f=0;return e}k.reset=function(){this.j&&this.j.reset&&this.j.reset();for(var a=Ma(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.j&&c.reset&&c.reset()}};k.start=function(a,b){for(var c=Ma(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
|
||||
k.ia=function(a){return a?this.save():!0};k.reset=function(){Tc(this)};k.save=function(){var a=new F(this),b=0,c=[];c[b++]=this.ha;c[b++]=this.w;c[b++]=this.C;c[b++]=this.ea;c[b++]=this.m;c[b++]=this.u;c[b]=this.s;G(a,0,c);return a.data()};k.restore=function(a){return Tc(this,a[0])};function Tc(a,b){var c=0;void 0===b&&(b=Pc);a.ha=b[c++];a.w=b[c++];a.C=b[c++];a.ea=b[c++];a.m=b[c++];a.u=b[c++];a.s=b[c];return!0}
|
||||
function Uc(a,b){var c=a.s&b;b&15||(c>>=4);var c=Oc[c],d=((a.m&12)>>2)+6;a.m&16&&d++;d+=((a.m&192)>>6)+1>>1;return 1E3/Math.round(c/d)}function Qc(a,b){return a.B||a.ea&2?!1:(a.w=b,a.ea|=2,hc(a.a,a.O),!0)}k.ib=function(a){null!=a&&(this.g="number"!=typeof a?a:this.g+String.fromCharCode(a));this.g&&(Qc(this,this.g.charCodeAt(0))&&(this.g=this.g.substr(1)),this.g&&this.a&&Lb(this.a,this.P,Uc(this,15)));return!0};k.oc=function(){var a=this.w;this.ea&=-3;return a};k.nc=function(){return this.ea};
|
||||
k.Bc=function(a,b){this.C=b;this.ea&=-6;if(19==b)this.B=!0;else if(17==b)this.B=!1;else if(this.o&&this.o.call(this.i,b),this.b)if(8==b)this.b.value=this.b.value.slice(0,-1),0<this.f&&this.f--;else{var c;c=(c=ia[b])?"<"+c+">":String.fromCharCode(b);var d=c.length;9==b?(d=this.K||8,d=d-this.f%d,this.K&&(c=" ".slice(0,d))):13==b&&(this.f=d=0,c="\n");this.G&&!this.f&&d&&(c=String.fromCharCode(this.G)+c);this.b.value+=c;this.b.scrollTop=this.b.scrollHeight;this.f+=
|
||||
d}else if(null!=this.c){if(10==b||1024<=this.c.length)this.ca(this.c),this.c="";10!=b&&(this.c+=String.fromCharCode(b))}this.a&&Lb(this.a,this.R,Uc(this,240))};k.Ac=function(a,b){this.ha?(this.u=b,this.u&64&&(this.ha=!1)):(this.m=b,this.ha=!0)};k.zc=function(a,b){this.s=b};var Rc={0:Mc.prototype.oc,1:Mc.prototype.nc},Sc={0:Mc.prototype.Bc,1:Mc.prototype.Ac,2:Mc.prototype.zc};ya(function(){for(var a=A(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Mc(d);Pa(d,c)}});
|
||||
function Vc(a,b,c){q.call(this,"Computer",a,Vc);this.l.Y=!1;Wc(this,b);this.w=yb(this,"autoPower",a);this.f=0;this.H=a.busWidth||a.buswidth;this.b=Xc;this.s=null;this.v=this.G=!1;this.I=yb(this,"url")||"";(Math.random()+.1).toString(36);this.c=Yc(this);if(this.a=Oa("CPU",this.id)){this.N=Oa("Debugger",this.id);this.m=[];for(b=null;b=Va(this,"Video",b);)this.m.push(b);this.j=new Xa({id:this.Ua+".bus",busWidth:this.H},this.a,this.N);var d,e=Ma(this.id);if((this.g=Oa("Panel",this.id))&&this.g.va)for(b=
|
||||
0;b<e.length;b++)d=e[b],d.M=this.g.M,d.ca=this.g.ca,d.va=this.g.va;this.ca("PC8080 v1.24.2\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.j,this.a,this.N);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.o=d:this.b=parseInt(d,10));var f;if(a=yb(this,"state")||(f=!0,a.state))b=this.B=a,f||(this.v=!0,this.b=Xc),this.b&&(this.u=new F(this,"1.24.2"),Zc(this.u)?b=null:delete this.u);
|
||||
!b&&this.b&&(b=$c(this))&&(this.v=!0);if(b){var h=this;ma(b,null,!0,function(a,b,c){c?(h.o=null,h.v=!1,h.M("Unable to load machine state from server (error "+c+(b?": "+ha(b):"")+")")):(h.s=b,h.G=!0);C(h)})}else C(this);this.A.power||(this.w=!0);!c&&this.w&&ad(this,this.Pa)}else p("Unable to find CPU component")}w(Vc);var Xc=0;function Wc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){p(d.message+" ("+c+")")}}a.J=b}
|
||||
function yb(a,b,c){var d=b.toLowerCase(),d=Fa[b]||Fa[d];void 0===d&&a.J&&(d=a.J[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function ad(a,b,c){for(var d=Ma(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Ra(f)){Ra(f,function(){ad(a,b,c)});return}}b.call(a,c)}
|
||||
function bd(a,b){var c=new F(a,"1.24.2","validate");if(Zc(c)&&cd(c)){var d=dd(c,"timestamp"),e=b?dd(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())}}k=Vc.prototype;
|
||||
k.Pa=function(a){void 0===a&&(a=this.b||(this.s?1:Xc));if(!this.f){this.f++;var b=!1,c=!1;this.C=!1;var d=this.u||new F(this,"1.24.2");if(-1==a)b=!0;else if(a>Xc){if(Zc(d,this.s)){this.i=new F(this,"1.24.2","failsafe");Zc(this.i)&&(ed(this,d),a=2,fd(this.i));G(this.i,"timestamp",la());gd(this.i);var e=this.b&&!this.v;if(1==a||na("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=cd(d)){var f=dd(d,"code"),h=dd(d,"data");f&&("ok"==f?Zc(d,h):("error"==f&&
|
||||
"no machine state"!=h?(this.M("Error: "+h),"unable to verify user"==h&&(ra("user",""),this.c=null)):this.ca(f+": "+h),fd(d),Zc(d)?(c=cd(d),e=!0):c=!1))}e&&bd(this,c?d:null)}else 2==a&&d.clear()}else bd(this);delete this.s;delete this.u}e=Ma(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.a&&(c=hd(this,h,d,b,c));b=[d,a,c];-1!=a?ad(this,this.ub,b):this.ub(b)}};
|
||||
function hd(a,b,c,d,e){if(!b.l.Y){b.l.Y=!0;if(b.fa){var f=null;e&&((f=dd(c,b.id))||(f=dd(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.fa(f,d)&&f&&(p("Unable to restore state for "+b.type),a.B&&!a.G?(c.clear(),a.b=Xc,window&&window.location.reload()):a.C=!0,b.fa(null),e=!1)}if(!d&&b.zb)for(a=b.zb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
k.ub=function(a){var b=a[0],c=0>a[1];a=a[2];this.K=!0;this.l.Y=!0;var d=this.A.power;d&&(d.textContent="Shutdown");this.a&&(hd(this,this.a,b,c,a),Cb(this.a));this.C&&(ed(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0};
|
||||
function ed(a,b){if(na("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.24.2"};e.url=a.I;e.user=c;e.type="bug";e.data=d;ma("http://www.pcjs.org/api/v1/report",e,!0)}}
|
||||
function id(a,b,c){var d,e="none";if(a.f)return null;a.f--;var f=new F(a,"1.24.2"),h=new F(a,"1.24.2","validate"),g=la();G(h,"timestamp",g);G(f,"timestamp",g);G(f,"version","1.24.2");G(f,"url",window?window.location.href:null);G(f,"browser",window?window.navigator.userAgent:"");a.a&&a.a.ia&&(c&&Db(a.a),d=a.a.ia(b,c),"object"===typeof d&&G(f,a.a.id,d),c&&(a.a.l.Y=!1,!1===d&&(e=null)));for(var g=Ma(a.id),l=0;l<g.length;l++){var n=g[l];n.l.Y&&(n.ia&&(d=n.ia(b,c),"object"===typeof d&&G(f,n.id,d)),c&&
|
||||
(n.l.Y=!1,!1===d&&(e=null)))}e&&(c?(g=d=!1,b?(a.c&&jd(a,a.c,f.toString()),gd(h)&&gd(f)||(e=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&f.clear(g)):e=f.toString());c&&(a.l.Y=!1,b=a.A.power)&&(b.textContent="Power");a.f=0;return e}k.reset=function(){this.j&&this.j.reset&&this.j.reset();for(var a=Ma(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.j&&c.reset&&c.reset()}};k.start=function(a,b){for(var c=Ma(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
|
||||
k.stop=function(a,b){for(var c=Ma(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||
k.V=function(a,b,c){var d=this;switch(b){case "power":return this.A[b]=c,c.onclick=function(){d.f||(d.l.Y?hd(d,!1,!0):$c(d,d.Pa))},!0;case "reset":return this.A[b]=c,c.onclick=function(){if(d.l.Y&&!d.f)if(d.b&&!d.o){var a=na("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");hd(d,a,!0);!a&&d.B?window&&window.location.reload():d.Pa(Wc)}else d.reset(),d.a&&Cb(d.a)},!0;case "save":if(da()){c.parentNode.removeChild(c);break}this.A[b]=c;c.onclick=
|
||||
function(){var a=Xc(d,!0);if(a){var b=!!(d.b&&!d.o||d.B),c=hd(d,b);b?id(d,a,c):d.M("Resume disabled, machine state not saved")}};return!0}return!1};function Xc(a,b){var c=a.c;c||(c=qa("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=jd(a,c))||a.M("The user ID is invalid."))):b&&a.M("Browser local storage is not available"));return c}
|
||||
function jd(a,b){a.c=null;var c=ma(ea()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(ra("user",c.data),a.c=c.data)}catch(e){p(e.message+" ("+d+")")}return a.c}function Zc(a){var b=null;a.c&&(b=ea()+"/api/v1/user?req=load&user="+a.c+"&state="+kd(a,"1.24.2"));return b}
|
||||
function id(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=kd(a,"1.24.2");d.data=c;b=ma(ea()+"/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),ra("user",""),a.c=null)}}
|
||||
k.V=function(a,b,c){var d=this;switch(b){case "power":return this.A[b]=c,c.onclick=function(){d.f||(d.l.Y?id(d,!1,!0):ad(d,d.Pa))},!0;case "reset":return this.A[b]=c,c.onclick=function(){if(d.l.Y&&!d.f)if(d.b&&!d.o){var a=na("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");id(d,a,!0);!a&&d.B?window&&window.location.reload():d.Pa(Xc)}else d.reset(),d.a&&Cb(d.a)},!0;case "save":if(da()){c.parentNode.removeChild(c);break}this.A[b]=c;c.onclick=
|
||||
function(){var a=Yc(d,!0);if(a){var b=!!(d.b&&!d.o||d.B),c=id(d,b);b?jd(d,a,c):d.M("Resume disabled, machine state not saved")}};return!0}return!1};function Yc(a,b){var c=a.c;c||(c=qa("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=kd(a,c))||a.M("The user ID is invalid."))):b&&a.M("Browser local storage is not available"));return c}
|
||||
function kd(a,b){a.c=null;var c=ma(ea()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(ra("user",c.data),a.c=c.data)}catch(e){p(e.message+" ("+d+")")}return a.c}function $c(a){var b=null;a.c&&(b=ea()+"/api/v1/user?req=load&user="+a.c+"&state="+ld(a,"1.24.2"));return b}
|
||||
function jd(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=ld(a,"1.24.2");d.data=c;b=ma(ea()+"/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),ra("user",""),a.c=null)}}
|
||||
function Va(a,b,c){a=Ma(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 Ib(a,b){if(a.m.length){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);var e=a.m[0];e.P&&e.P.focus();!b&&window&&window.scrollTo(c,d)}}k.Ba=function(a){this.a&&this.a.Ba(a);this.g&&this.g.Ba(a)};
|
||||
ya(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 Uc(h,d,!0);Pa(h,f);h.w&&$c(h,h.Pa)}});ta.show.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=Oa("Computer",c.id))&&c.J&&!c.l.Y&&c.Pa(-1)}});
|
||||
ta.exit.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=Oa("Computer",c.id))&&c.l.Y&&hd(c,!(!c.b||c.o),!0)}});function F(a,b,c){this.id=a.id;this.key=kd(a,b,c);this.O=a.O;ed(this,a.Mc)}function kd(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}
|
||||
F.prototype={constructor:F,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){ed(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 ed(a,b){a[a.id]={};b&&G(a,"parms",b);a.a=!1}function fd(a){var b=!0;if(pa()){var c=JSON.stringify(a[a.id]);ra(a.key,c)||(p("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function bd(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){p(c.message||c),b=!1}return b}function Yc(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:pa()&&(b=qa(a.key))?(a[a.id]=b,a.a=!0):!1}function cd(a,b){return a[a.id][b]||null}function G(a,b,c){try{a[a.id][b]=c}catch(d){}}var ld=0;
|
||||
function md(a,b,c,d,e,f){e("Loading "+a+"...");ma(a,null,!0,function(h,g,l){l?(g||(g="unable to load "+a+" ("+l+")"),f(g,null)):nd(g,a,b,c,d,e,f)})}
|
||||
function nd(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){La(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(t){g=null,a=t.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?od(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function od(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");ma(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 l=g[0],n,x=/( [a-z]+=)(['"])(.*?)\2/g;n=x.exec(f);)l=0>l.indexOf(n[1])?l.replace(">",n[0]+">"):l.replace(new RegExp(n[1]+"(['\"])(.*?)\\1"),n[0]);g[0]!=l&&(h=h.replace(g[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);od(a,b,c)}})}else c(a,null)}
|
||||
function pd(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=ga(a))}function f(a){e("Error: "+a);l&&(--ld||Ba(!0));l=!1}var h,g,l=!0;ld++;Ka[a]={};try{if(h=document.getElementById(a)){var n;if("object"==typeof resources&&(n=resources.css)){var x=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css";t.styleSheet?t.styleSheet.cssText=n:t.appendChild(document.createTextNode(n));x.appendChild(t)}c||
|
||||
(c="/versions/pc8080/1.24.2/components.xsl");n=function(d,g){g?md(c,null,null,!1,e,function(d,l){if(l)if(La(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var n=g.transformNode(l);n?(h.outerHTML=n,--ld||Ba(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(n=new XSLTProcessor,n.importStylesheet(l),(n=n.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(n,h),--ld||Ba(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?md(b,a,d,!0,e,n):nd(b,null,a,d,!1,e,n)}else f("missing machine element: "+a)}catch(B){f(B.message)}return l}window.embedPC8080=function(a,b,c,d){Ba(!1);return pd(a,b,c,d)};window.enableEvents=Ba;window.sendEvent=Da;})();
|
||||
ya(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 Vc(h,d,!0);Pa(h,f);h.w&&ad(h,h.Pa)}});ta.show.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=Oa("Computer",c.id))&&c.K&&!c.l.Y&&c.Pa(-1)}});
|
||||
ta.exit.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=Oa("Computer",c.id))&&c.l.Y&&id(c,!(!c.b||c.o),!0)}});function F(a,b,c){this.id=a.id;this.key=ld(a,b,c);this.N=a.N;fd(this,a.Mc)}function ld(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}
|
||||
F.prototype={constructor:F,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){fd(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 fd(a,b){a[a.id]={};b&&G(a,"parms",b);a.a=!1}function gd(a){var b=!0;if(pa()){var c=JSON.stringify(a[a.id]);ra(a.key,c)||(p("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function cd(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){p(c.message||c),b=!1}return b}function Zc(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:pa()&&(b=qa(a.key))?(a[a.id]=b,a.a=!0):!1}function dd(a,b){return a[a.id][b]||null}function G(a,b,c){try{a[a.id][b]=c}catch(d){}}var md=0;
|
||||
function nd(a,b,c,d,e,f){e("Loading "+a+"...");ma(a,null,!0,function(h,g,l){l?(g||(g="unable to load "+a+" ("+l+")"),f(g,null)):od(g,a,b,c,d,e,f)})}
|
||||
function od(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){La(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(t){g=null,a=t.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?pd(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function pd(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");ma(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 l=g[0],n,x=/( [a-z]+=)(['"])(.*?)\2/g;n=x.exec(f);)l=0>l.indexOf(n[1])?l.replace(">",n[0]+">"):l.replace(new RegExp(n[1]+"(['\"])(.*?)\\1"),n[0]);g[0]!=l&&(h=h.replace(g[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);pd(a,b,c)}})}else c(a,null)}
|
||||
function qd(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=ga(a))}function f(a){e("Error: "+a);l&&(--md||Ba(!0));l=!1}var h,g,l=!0;md++;Ka[a]={};try{if(h=document.getElementById(a)){var n;if("object"==typeof resources&&(n=resources.css)){var x=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css";t.styleSheet?t.styleSheet.cssText=n:t.appendChild(document.createTextNode(n));x.appendChild(t)}c||
|
||||
(c="/versions/pc8080/1.24.2/components.xsl");n=function(d,g){g?nd(c,null,null,!1,e,function(d,l){if(l)if(La(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var n=g.transformNode(l);n?(h.outerHTML=n,--md||Ba(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(n=new XSLTProcessor,n.importStylesheet(l),(n=n.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(n,h),--md||Ba(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?nd(b,a,d,!0,e,n):od(b,null,a,d,!1,e,n)}else f("missing machine element: "+a)}catch(B){f(B.message)}return l}window.embedPC8080=function(a,b,c,d){Ba(!1);return qd(a,b,c,d)};window.enableEvents=Ba;window.sendEvent=Da;})();
|
||||
|
|
|
|||
|
|
@ -708,7 +708,7 @@ function fr(a,b){var c=0,d=gr(a,b);if(void 0!==d)switch(b){case 0:case 1:case 2:
|
|||
function gr(a,b){var c;if(0<=b){var d=a.F;switch(b){case 0:c=d.G&255;break;case 1:c=d.I&255;break;case 2:c=d.M&255;break;case 3:c=d.H&255;break;case 4:c=d.G>>8&255;break;case 5:c=d.I>>8&255;break;case 6:c=d.M>>8&255;break;case 7:c=d.H>>8&255;break;case 8:c=d.G&65535;break;case 9:c=d.I&65535;break;case 10:c=d.M&65535;break;case 11:c=d.H&65535;break;case 12:c=I(d)&65535;break;case 13:c=d.P&65535;break;case 14:c=d.K&65535;break;case 15:c=d.J&65535;break;case 22:c=K(d)&65535;break;case 23:c=zd(d);break;
|
||||
case 16:c=d.Xa.Z;break;case 17:c=d.va.Z;break;case 18:c=d.ta.Z;break;case 19:c=d.vb.Z;break;default:if(80286==a.F.ja)32==b&&(c=d.Za);else if(80386<=a.F.ja)switch(b){case 24:c=d.G;break;case 25:c=d.I;break;case 26:c=d.M;break;case 27:c=d.H;break;case 28:c=I(d);break;case 29:c=d.P;break;case 30:c=d.K;break;case 31:c=d.J;break;case 32:c=d.Za;break;case 33:c=d.li;break;case 34:c=d.ue;break;case 35:c=d.Qd;break;case 20:c=d.Nb.Z;break;case 21:c=d.Ob.Z;break;case 56:c=K(d)}}}return c}
|
||||
function hr(a,b){b=$q(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=er(b,c+1),0<=e&&(b=b.substr(0,c)+fr(a,e)+b.substr(c+1+vq[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=Zq(a,e))?(d=e+' "'+Jq(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=Zq(a,e))?(Uq(a,d),d=e+
|
||||
' "'+Jq(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m=iq.prototype;m.message=function(a,b){b&&(a+=" at "+Sq(jq(this,K(this.F),this.F.va.Z))+" (%"+r(this.F.Ha)+")");if(!this.Pa||a!=this.Pa)if(this.Pa=a,this.wc&-2147483648&&(this.Wb(),a+=" (cpu halted)"),this.O(a),this.F){var c=this.F;c.Y.nf=0;c.fb-=c.A;c.A=0;Wc(c)}};
|
||||
' "'+Jq(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m=iq.prototype;m.message=function(a,b){b&&(a+=" at "+Sq(jq(this,K(this.F),this.F.va.Z))+" (%"+r(this.F.Ha)+")");if(!this.Pa||a!=this.Pa)if(this.Pa=a,this.wc&-2147483648&&(this.Wb(),a+=" (cpu halted)"),this.O(a),this.F){var c=this.F;c.fb-=c.A;c.A=0;c.Y.nf=0;Wc(c)}};
|
||||
function nk(a,b,c,d){var e,f;if(!d&&(d=A(a,1)&&0>pq.indexOf(b),!d)){var g=oq[b];g&&(d=A(a,g)?!0:524288==g&&A(a,g=1048576))}d&&(e=a.F.G>>8&255,f=a.F.M&255,33==b&&11==e||524288==g&&128<=f||1048576==g&&128>f)&&(d=!1);d&&((g=(g=Ab[b])&&g[e]||"")&&(g=" "+hr(a,g)),a.message("INT "+t(b)+": AH="+t(e)+" at "+Iq(c-2-a.F.va.Aa,a.F.va.Z)+g));return d}
|
||||
function qb(a,b,c,d,e,f,g,h){h|=256;if(null==e||(a.wc&h)==h)h=null,null!=e&&(h=a.F.va.Z,e-=a.F.va.Aa),a.message(b.zd+"."+(null!=d?"outPort":"inPort")+"("+u(c)+","+(f?f:"unknown")+(null!=d?","+t(d):"")+")"+(null!=g?": "+t(g):"")+(null!=e?" at "+Iq(e,h):""))}m.jh=function(){this.O("Type ? for help with PCx86 Debugger commands");this.qd();if(this.gb){var a=this.gb;this.gb=null;nq(this,a)}};
|
||||
function lq(a,b){var c;if(Wf(a)){if(!a.ia||!a.ia.length){a.ia=Array(1E3);for(c=0;c<a.ia.length;c++)a.ia[c]=jq(a);a.Fa=0;b||a.O("instruction history buffer allocated")}if(!a.W||!a.W.length)for(a.W=Array(256),c=0;c<a.W.length;c++)a.W[c]=[c,0]}else a.ia&&a.ia.length&&!b&&a.O("instruction history buffer freed"),a.Fa=0,a.ia=[],a.W=[]}m.Le=function(a){if(!ir(this))return!1;this.F.Le(a);return!0};
|
||||
|
|
|
|||
|
|
@ -1,143 +1,169 @@
|
|||
(function(){var g;function ba(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 ca(a){return"0x"+n(a,4)}function da(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function ea(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function ja(){var a=ka();return-1!==a.indexOf("pcjs.org",a.length-8)}
|
||||
var la={"&":"&","<":"<",">":">",'"':""","'":"'"};function ma(a){return a.replace(/[&<>"']/g,function(a){return la[a]})}function na(a,b){return(a+" ").slice(0,b)}function oa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function pa(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 k=d+e>>1,h;h=c(b,a[k]);0<h?d=k+1:(e=k,f=!h)}return f?d:~d}var qa=Date.now||function(){return+new Date};
|
||||
function ra(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}function xa(a,b){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;c<d;c++)if(c in a&&a[c]===b)return c;return-1}
|
||||
function ya(a,b,c,d){var e=0,f=null,k=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)}),k;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,f,e))});if(b&&"object"==
|
||||
typeof b){var l="",m;for(m in b)b.hasOwnProperty(m)&&(l&&(l+="&"),l+=m+"="+encodeURIComponent(b[m]));l=l.replace(/%20/g,"+");h.open("POST",a,!!c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(l)}else h.open("GET",a,!!c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),k=[f,e]);return k}function ka(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
||||
function r(a){window&&window.alert(a)}function za(a){var b=!1;window&&(b=window.confirm(a));return b}var Aa=null;function Ba(){if(null==Aa){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}Aa=a}return Aa}function Ca(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function Da(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ea(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}function Fa(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function Ga(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 t={init:[],show:[],exit:[]},Ha=!1,Ia=!1,Ja=!0;function Ka(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function La(a){t.init.push(a)}
|
||||
function Ma(a){if(Ja)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){r(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function Na(a){!Ja&&a?(Ja=!0,Ha&&Oa("init"),Ia&&Oa("show")):Ja=a}function Oa(a){t[a]&&Ma(t[a])}Ka("onload",function(){Ha=!0;Ma(t.init)});Ka("onpageshow",function(){Ia=!0;Ma(t.show)});Ka(Ea("Opera")||Ea("iOS")?"onunload":"onbeforeunload",function(){Ma(t.exit)});
|
||||
function v(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.ib=b.comment;this.Fb=b;b=this.id.indexOf(".");0>b?this.Ka=this.id:(this.nb=this.id.substr(0,b),this.Ka=this.id.substr(b+1));this[a]=c;this.j={Ca:!1,za:!1,eb:!1,U:!1,Ba:!1};this.Za=null;this.j.Ba=!1;this.G={};this.C=null;this.W=d||0;x.push(this)}var Pa=void 0,Qa={};
|
||||
if(window){Pa||(Pa=window.location.search.substr(1));for(var Ra,ab=/\+/g,bb=/([^&=]+)=?([^&]*)/g;Ra=bb.exec(Pa);)Qa[decodeURIComponent(Ra[1].replace(ab," "))]=decodeURIComponent(Ra[2].replace(ab," "))}function cb(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 z(a,b){b||(b=v);a.prototype=cb(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var db=window.PCjs.Machines||(window.PCjs.Machines={}),x=window.PCjs.Components||(window.PCjs.Components=[])}else db={},x=[];function eb(a,b,c){db[a]&&b&&(db[a][b]=c)}function D(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<x.length;b++){var d=x[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
||||
function fb(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<x.length;d++)if(c)c==x[d]&&(c=null);else if(!(a!=x[d].type||b&&x[d].id.indexOf(b)))return x[d]}return null}function E(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){r(c.message+" ("+a+")")}return b}
|
||||
function gb(a,b){for(var c=F(b.parentNode,"pdp11-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var k=e[f];if(1===k.nodeType){var h=k.getAttribute("class");if(h)for(var l=h.split(" "),m=0;m<l.length;m++)switch(h=l[m],h){case "pdp11-binding":(h=E(k))&&h.binding&&a.ba(h.type,h.binding,k,h.value),m=l.length}}}}
|
||||
function F(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}
|
||||
v.prototype={constructor:v,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ba:function(a,b,c){switch(b){case "clear":return this.G[b]||(this.G[b]=c,c.onclick=function(a){return function(){a.G.print&&(a.G.print.value="")}}(this)),!0;case "print":return this.G[b]||(this.ua=this.G[b]=c,c.value="",this.b=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.aa=function(a){this.b(a,this.Ka)}),!0;default:return!1}},log:function(){},b:function(){},status:function(a){this.b(this.Ka+": "+a)},aa:function(a,b,c){c=c||this.type;b||r((c?c+": ":"")+a)},qa:function(){return this.j.U=!0},pa:function(a,b){b&&(this.j.U=!1);return!0}};function hb(a,b){if(a.C){a===a.C?b|=0:b=b||a.W;var c=a.C.W&b;return!!b&&c===b||!!(c&a.C.Ab)}return!1}
|
||||
function ib(a,b){if(a.j.eb)return a.j.za&&(a.j.za=!1),a.j.eb=!1;if(a.j.Ba)return a.b(a.toString()+" error"),!1;a.j.za=b;return a.j.za}function jb(a,b){a.j.za&&(b?a.j.eb=!0:void 0===b&&a.b(a.toString()+" busy"));return a.j.za}function G(a){if(!a.j.Ba&&(a.j.Ca=!0,a.j.Ca)){var b=a.Za;a.Za=null;b&&b()}}function kb(a,b){b&&(a.j.Ca?b():a.Za=b);return a.j.Ca}function lb(a,b){a.j.Ba=!0;a.aa(b)}
|
||||
var mb="undefined"!==typeof ArrayBuffer,J={cpu:1,bus:64,mem:128,keyboard:65536,key:131072,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function nb(a){v.call(this,"Panel",a,nb)}z(nb);g=nb.prototype;g.ba=function(a,b,c,d){return this.i&&this.i.ba(a,b,c,d)||this.g&&this.g.ba(a,b,c,d)||this.C&&this.C.ba(a,b,c,d)?!0:this.parent.ba.call(this,a,b,c,d)};g.va=function(a,b,c,d){this.i=a;this.A=b;this.g=c;this.C=d};
|
||||
g.qa=function(a,b){b||ob();return!0};g.pa=function(){return!0};g.ea=function(){};function ob(){for(var a=!1,b=F(document,"pdp11","panel"),c=0;c<b.length;c++){var d=b[c],e=E(d),f;a:{f=e.id;if(void 0!==f)for(var k=void 0,k=0;k<x.length;k++)if(x[k].id===f){f=x[k];break a}f=null}f||(a=!0,f=new nb(e));gb(f,d);a&&G(f)}}La(ob);
|
||||
function pb(a,b,c){v.call(this,"Bus",a,pb);this.g=b;this.C=c;this.w=a.busWidth||16;this.F=Math.pow(2,this.w);this.i=this.F-1|0;this.P=16>=this.w?10:20>=this.w?12:24>=this.w?14:15;this.ga=1<<this.P;this.H=this.ga>>2;this.A=this.ga-1;this.D=this.F/this.ga|0;this.B=this.D-1;a=new K;qb(a,this.C);this.I=Array(this.D);for(b=0;b<this.D;b++)this.I[b]=a;G(this)}z(pb);g=pb.prototype;g.reset=function(){};g.qa=function(a,b){b||this.reset();return!0};
|
||||
function rb(a,b,c,d){for(var e=b,f=c,k=e>>>a.P;0<f&&k<a.I.length;){var h=a.I[k],l=k*a.ga,m=a.ga-(e-l);m>f&&(m=f);if(h&&h.size){if(h.type==d){if(e+f<=h.u)return h.Xa+=h.u-e,h.u=e,!0;if(e>=h.u+h.Xa){m=h.size-(e-l);m>f&&(m=f);h.Xa=e-h.u+m;e=l+a.ga;f-=m;k++;continue}}return Eb(1,e,f)}e=new K(e,m,a.ga,d);qb(e,a.C,h);a.I[k++]=e;e=l+a.ga;f-=m}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Fb[d]+" at "+ca(b)),!0):Eb(2,b,c)}g.ca=function(a){return this.I[(a&this.i)>>>this.P].Fa(a&this.A,a)};
|
||||
function Gb(a,b){return a.I[(b&a.i)>>>a.P].Qa(b&a.A,b)}g.Ma=function(a){var b=a&this.A,c=(a&this.i)>>>this.P;return b!=this.A?this.I[c].vb(b,a):this.I[c++].Fa(b,a)|this.I[c&this.B].Fa(0,a+1)<<8};g.Va=function(a,b){this.I[(a&this.i)>>>this.P].Ia(a&this.A,b&255,a)};g.xb=function(a,b){var c=a&this.A,d=(a&this.i)>>>this.P;c!=this.A?this.I[d].yb(c,b&65535,a):(this.I[d++].Ia(c,b&255,a),this.I[d&this.B].Ia(0,b>>8&255,a+1))};function Eb(a,b,c){r("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Hb;
|
||||
if(mb){var Ib=new ArrayBuffer(2);(new DataView(Ib)).setUint16(0,256,!0);Hb=256===(new Uint16Array(Ib))[0]}else Hb=!1;var Jb=Hb;
|
||||
function K(a,b,c,d){this.id=Kb+=2;this.g=null;this.u=a;this.Xa=b;this.size=c||0;this.type=d||Lb;this.G=d==Mb;qb(this);this.ra=this.Cb=!1;if(c)if(mb)this.D=new ArrayBuffer(c),this.F=new DataView(this.D,0,c),this.A=new Uint8Array(this.D,0,c),this.J=new Uint16Array(this.D,0,c>>1),this.g=new Int32Array(this.D,0,c>>2),Nb(this,Jb?Ob:Pb);else{this.g=Array(c>>2);for(a=0;a<this.g.length;a++)this.g[a]=0;Nb(this,Qb)}else Nb(this)}var Lb=0,Mb=2,Fb=["NONE","RAM","ROM","VID","H/W"],Kb=0;
|
||||
K.prototype={constructor:K,parent:null,save:function(){var a,b;if(mb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.F.getInt32(b<<2,!0);else a=this.g;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(mb)for(b=0;b<a.length;b++)this.F.setInt32(b<<2,a[b],!0);else this.g=a;return this.ra=!0}return!1},ta:function(a,b){b?0===this.w++&&Rb(this,Sb,!1):0===this.i++&&Tb(this,Sb,!1)},K:function(){this.C&&hb(this.C,129)&&this.C.message("attempt to read invalid block %"+n(this.u),!0);
|
||||
return 255},B:function(a,b){this.C&&hb(this.C,129)&&this.C.message("attempt to write "+ca(b)+" to invalid block %"+n(this.u),!0)},L:function(a,b){return this.Fa(a++,b++)|this.Fa(a,b)<<8},H:function(a,b,c){this.Ia(a++,b&255,c++);this.Ia(a,b>>8,c)},S:function(a){return this.g[a>>2]>>>((a&3)<<3)&255},$:function(a){var b=a>>2;a=(a&3)<<3;var c=this.g[b]>>a;return 24>a?c&65535:c&255|(this.g[b+1]&255)<<8},ma:function(a,b){var c=a>>2,d=(a&3)<<3;this.g[c]=this.g[c]&~(255<<d)|b<<d;this.ra=!0},La:function(a,
|
||||
b){var c=a>>2,d=(a&3)<<3;24>d?this.g[c]=this.g[c]&~(65535<<d)|b<<d:(this.g[c]=this.g[c]&16777215|b<<24,c++,this.g[c]=this.g[c]&-256|b>>8);this.ra=!0},N:function(a,b){if(this.C&&null!=this.u){var c=this.C;Ub(c,this.u+a,1,c.N)&&c.Y(!0)}return this.Qa(a,b)},V:function(a,b){if(this.C&&null!=this.u){var c=this.C;Ub(c,this.u+a,2,c.N)&&c.Y(!0)}return this.gb(a,b)},ja:function(a,b,c){if(this.C&&null!=this.u){var d=this.C;Ub(d,this.u+a,1,d.F)&&d.Y(!0)}this.G?this.B(a,b,c):this.Ja(a,b,c)},sa:function(a,b,c){if(this.C&&
|
||||
null!=this.u){var d=this.C;Ub(d,this.u+a,2,d.F)&&d.Y(!0)}this.G?this.B(a,b,c):this.hb(a,b,c)},M:function(a){return this.A[a]},O:function(a){return this.A[a]},T:function(a){return this.F.getUint16(a,!0)},Z:function(a){return a&1?this.A[a]|this.A[a+1]<<8:this.J[a>>1]},fa:function(a,b){this.A[a]=b;this.ra=!0},ka:function(a,b){this.A[a]=b;this.ra=!0},na:function(a,b){this.F.setUint16(a,b,!0);this.ra=!0},Ka:function(a,b){a&1?(this.A[a]=b,this.A[a+1]=b>>8):this.J[a>>1]=b;this.ra=!0}};
|
||||
function qb(a,b,c){a.C=b;a.i=a.w=0;c&&((a.i=c.i)&&Tb(a,Sb,!1),(a.w=c.w)&&Rb(a,Sb,!1))}function Vb(a,b){b?0===--a.w&&(a.Ia=a.G?a.B:a.Ja,a.yb=a.G?a.H:a.hb):0===--a.i&&(a.Fa=a.Qa,a.vb=a.gb)}function Rb(a,b,c){c&&a.w||(a.Ia=!a.G&&b[2]||a.B,a.yb=!a.G&&b[3]||a.H);if(c||void 0===c)a.Ja=b[2]||a.B,a.hb=b[3]||a.H}function Tb(a,b,c){c&&a.i||(a.Fa=b[0]||a.K,a.vb=b[1]||a.L);if(c||void 0===c)a.Qa=b[0]||a.K,a.gb=b[1]||a.L}function Nb(a,b){b||(b=Wb);Tb(a,b,void 0);Rb(a,b,void 0)}
|
||||
var Wb=[],Qb=[K.prototype.S,K.prototype.$,K.prototype.ma,K.prototype.La],Sb=[K.prototype.N,K.prototype.V,K.prototype.ja,K.prototype.sa];if(mb)var Pb=[K.prototype.M,K.prototype.T,K.prototype.fa,K.prototype.na],Ob=[K.prototype.O,K.prototype.Z,K.prototype.ka,K.prototype.Ka];
|
||||
function Xb(a,b){v.call(this,"CPU",a,Xb,1);var c=a.multiplier||1;this.$=a.cycles||b;this.xa=c;this.Z=Math.round(this.$/1E4)/100;this.wa=this.Z*this.xa;this.j.X=!1;this.j.fb=!1;this.j.rb=a.autoStart;this.j.sb=!1;this.j.Aa=!1;this.Na=this.L=0;this.Oa=a.csStart;this.Da=a.csInterval;this.Ea=a.csStop;this.S=[];this.sa=this.ya.bind(this);G(this)}z(Xb);var Yb=["power","reset"];g=Xb.prototype;
|
||||
g.va=function(a,b,c,d){this.i=a;this.A=b;this.C=d;for(b=0;b<Yb.length;b++)(c=this.G[Yb[b]])&&this.i.ba(null,Yb[b],c);this.N=null;a=Zb(a,"autoStart");null!=a&&(this.j.rb="true"==a?!0:"false"==a?!1:!!a);G(this)};g.reset=function(){};g.save=function(){return null};g.restore=function(){return!1};
|
||||
g.qa=function(a,b){if(!b){if(a&&this.restore){$b(this);if(!this.restore(a))return!1;ac(this)}else this.reset();if(this.C){var c=this.C;c.b("Type ? for help with PDP11 Debugger commands");c.ea();if(c.La){var d=c.La;c.La=null;bc(c,d)}}else this.b("No debugger detected")}L(this);return!0};g.pa=function(a){return a?this.save():!0};function cc(a){(a.j.rb||!a.C&&void 0===a.G.run)&&a.ya(!0)}g.tb=function(){return 0};
|
||||
function ac(a){void 0===a.Oa&&(a.Oa=0);void 0===a.Da&&(a.Da=-1);void 0===a.Ea&&(a.Ea=-1);a.j.Aa=0<=a.Oa&&0<a.Da;a.j.Aa&&(a.Na=0,a.L=a.Oa-a.K)}function dc(a,b){if(a.j.Aa){var c=!1;a.Na=a.Na+a.tb()|0;a.L-=b;0>=a.L&&(a.L+=a.Da,c=!0);0<=a.Ea&&a.Ea<=sc(a)&&(a.Da=a.Ea=-1,ac(a),a.Y(),c=!0);c&&a.b(sc(a)+" cycles: checksum="+n(a.Na))}}
|
||||
function tc(a,b,c,d){a.G[b]&&(void 0===c&&(lb(a,"Value for "+b+" is invalid"),a.Y()),c=!a.j.X||a.j.sb?n(c,d):"--------".substr(0,d),a.G[b].textContent!=c&&(a.G[b].textContent=c))}
|
||||
g.ba=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.G[b]=c;a=!0;break;case "run":this.G[b]=c;c.onclick=function(){var a;if(a=d.i)if(a=d.i,a.j.U)a=!0;else{var b=null,c,h=D(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.j.Ca);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.j.U);c++);c==h.length&&(b=a);r("The "+b.type+" component ("+b.id+") is not "+(b.j.Ca?"powered yet":"ready yet"+(b.Za?" (waiting for notification)":""))+".");a=!1}a&&(d.j.X?d.Y():d.ya())};a=!0;break;
|
||||
case "speed":this.G[b]=c;a=!0;break;case "setSpeed":this.G[b]=c,c.onclick=function(){uc(d,d.xa<<1,!0)},c.textContent=this.wa.toFixed(2)+"Mhz",a=!0}return a};function vc(a,b,c){a.K+=b;c&&(a.w=a.g=0)}function wc(a,b){var c=1;b&&1<a.xa&&a.H&&(c=a.H/a.Z);a.ma=Math.round(1E3/30);a.V=Math.floor(a.$/30*c);b||(a.M=a.V);a.fa=0}function sc(a){return a.K+a.F+a.w-a.g}function $b(a){a.H=0;a.na=0;a.K=a.F=a.w=a.g=0;ac(a);uc(a,1)}
|
||||
function uc(a,b,c){var d=!1;if(void 0!==b){.8>a.H/a.wa?b=1:d=!0;a.xa=b;b=a.Z*a.xa;if(a.wa!=b){a.wa=b;b=a.wa.toFixed(2)+"Mhz";var e=a.G.setSpeed;e&&(e.textContent=b);a.b("target speed: "+b)}c&&a.i&&a.i.Wa()}vc(a,a.F);a.F=0;a.D=qa();a.J=0;wc(a);return d}
|
||||
g.ya=function(a){if(ib(this,!0)){if(!this.j.X){uc(this);this.i&&this.i.start(this.D,sc(this));this.j.X=!0;this.j.fb=!0;this.N&&this.N.start();var b=this.G.run;b&&(b.textContent="Halt");this.i&&(this.i.ea(!0),a&&this.i.Wa(!0))}this.fa>=this.$&&wc(this,!0);this.O=0;this.T=qa();this.J&&(a=this.T-this.J,a>this.ma&&(this.D+=a,this.D>this.T&&(this.D=this.T)));try{do{for(var c=this.j.Aa?1:this.V,d=this.S.length-1;0<=d;d--){var e=this.S[d];0>e[0]||c>e[0]&&(c=e[0])}this.Ha(c);var f=this.w-this.g;a=f;for(var k=
|
||||
this.S.length-1;0<=k;k--){var h=this.S[k];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.O+=f;this.F+=f;vc(this,0,!0);dc(this,f);this.M-=f;if(0>=this.M){this.M+=this.V;15<=++this.na&&(this.i&&this.i.ea(),this.na=0);break}}while(this.j.X)}catch(l){this.Y();L(this);this.i&&this.i.stop(qa(),sc(this));ib(this,!1);lb(this,l.stack||l.message);return}c=setTimeout;d=this.sa;this.J=qa();e=this.ma;this.O&&(e=Math.round(e*this.O/this.V));e=e-(this.J-this.T);if(f=this.J-this.D)this.H=Math.round(this.F/(10*
|
||||
f))/100,864E5<=f&&(this.K=0,uc(this));if(0>e||this.H<this.wa)-1E3>e&&(this.D-=e),e=0;this.fa+=this.O;this.J+=e;c(d,e)}else L(this),this.i&&this.i.stop(qa(),sc(this))};g.Ha=function(){return 0};g.Y=function(a){jb(this,!0);this.w-=this.g;this.g=0;vc(this,this.F);this.F=0;if(this.j.X){this.j.X=!1;this.N&&this.N.stop();var b=this.G.run;b&&(b.textContent="Run")}this.j.Ya=a};function L(a,b){a.i&&a.i.ea(b)}
|
||||
function xc(a){this.ub=+a.model||1170;Xb.call(this,a,1E6);this.ja=yc;$b(this);this.j.Ya=this.j.Bb=!1;this.ka=0;zc(this)}z(xc,Xb);g=xc.prototype;g.reset=function(){this.j.X&&this.Y();zc(this);$b(this);this.j.Ba=!1;this.parent.reset.call(this)};function zc(a){a.Ga=0;a.Ra=0;a.$a=0;a.Sa=0;a.ab=0;a.Ta=0;a.bb=0;a.Ua=0;a.R=0;Ac(a,0);a.B=0}g.tb=function(){var a=this.Ga+this.Ra+this.$a+this.Sa+this.ab+this.Ta+this.bb|0;return a=a+this.Ua+this.R+Bc(this)|0};
|
||||
g.save=function(){var a=new M(this);N(a,0,[this.Ga,this.Ra,this.$a,this.Sa,this.ab,this.Ta,this.bb,this.Ua,this.R,Bc(this)]);N(a,1,[this.B,this.K,this.xa]);for(var b=this.A,c=0,d=[],e=0;e<b.D;e++){var f=b.I[e];if(f.ra||f.Cb){d[c++]=e;var k=c++;a:if(f=f.save()){for(var h=0,l=0,m=[];h<f.length;){for(var p=f[h],q=h+1;q<f.length&&f[q]===p;)q++;m[l++]=q-h;m[l++]=p;h=q}if(m.length<f.length){f=m;break a}}d[k]=f}}N(a,2,d);return a.data()};
|
||||
g.restore=function(a){var b=a[0];this.Ga=b[0];this.Ra=b[1];this.$a=b[2];this.Sa=b[3];this.ab=b[4];this.Ta=b[5];this.bb=b[6];this.Ua=b[7]&65535;this.R=b[8]&65535;Ac(this,b[9]);b=a[1];this.B=b[0];this.K=b[1];uc(this,b[3]);a:{b=this.A;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.H){for(var f=0,k=Array(b.H),h=0;h<e.length-1;)for(var l=e[h++],m=e[h++];l--;)k[f++]=m;e=k}f=b.I[d];if(!f||!f.restore(e)){r("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
g.ba=function(a,b,c){var d=!1;switch(b){case "PC":case "PSW":case "IF":case "SF":case "ZF":case "CF":this.G[b]=c;this.ka++;d=!0;break;default:d=this.parent.ba.call(this,a,b,c)}return d};function Bc(a){return a.ha&-214|(a.ia&128?128:0)|(a.da&255?0:64)|(a.da&256?1:0)}function Ac(a,b){a.da=a.ia=0;b&1&&(a.da|=256);b&4||(a.ia|=1);b&64||(a.da|=255);b&128&&(a.ia^=192);a.ha=a.ha&-726|b&512|2}g.ca=function(a){return this.A.ca(a)};g.Va=function(a,b){this.A.Va(a,b)};
|
||||
function Cc(a){var b=a.ca(a.R);a.R=a.R+1&65535;return b}g.ea=function(a){this.ka&&(a||!this.j.X||this.j.sb)&&(tc(this,"PC",this.R,4),a=Bc(this),tc(this,"PSW",a,4),tc(this,"IF",a&512?1:0,1),tc(this,"SF",a&128?1:0,1),tc(this,"ZF",a&64?1:0,1),tc(this,"CF",a&1?1:0,1));if(a=this.G.speed)a.textContent=this.j.X&&this.H?this.H.toFixed(2)+"Mhz":"Stopped"};
|
||||
g.Ha=function(a){this.j.Ya=!0;var b=this.j.Bb=this.C&&Dc(this.C),c=a?this.j.fb?0:1:-1;this.j.fb=!1;this.w=this.g=a;if(this.g&&this.B&255&&this.ha&512){for(a=0;8>a&&!(this.B&1<<a);a++);this.B&=~(0>a?255:1<<a);this.ha&=-513;this.B&=-257;this.ja[199|a<<3].call(this)}this.B&256?(this.w-=this.g,this.g=0,a=!1):a=!0;if(a){do{if(b){if(Ec(this.C,this.R,c)){this.Y();break}c=1}this.ja[Cc(this)].call(this)}while(0<this.g)}return this.j.Ya?this.w-this.g:void 0===this.j.Ya?0:-1};
|
||||
La(function(){for(var a=F(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new xc(d);gb(d,c)}});function O(){this.g-=4}
|
||||
var yc=[O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
|
||||
O,O,O,O,O,O,O,O,O];function Fc(a){v.call(this,"ROM",a,Fc);this.i=null;this.F=a.addr;this.w=a.size;this.H=a.writable;this.B=a.alias;this.D=a.file;this.J=da(this.D);if(this.D){a=this.D;var b=ea(this.J);"json"!=b&&"hex"!=b&&(a=ka()+"/api/v1/dump?file="+this.D+"&format=bytes&decimal=true");var c=this;ya(a,null,!0,function(a,b,f){Gc(c,a,b,f)})}}z(Fc);Fc.prototype.va=function(a,b,c,d){this.A=b;this.g=c;this.C=d;Hc(this)};
|
||||
Fc.prototype.qa=function(){if(this.oa){if(this.C){var a=this.C,b=this.id,c=this.F,d=this.w,e=this.oa,f=[],k;for(k in e){var h=e[k];"number"==typeof h&&(e[k]=h={o:h});var l=h.o,m=h.a;if(void 0!==l){var p=f,l=[l>>>0,k],q=pa(p,l,a.lb);0>q&&p.splice(-(q+1),0,l)}m&&(h.a=m.replace(/''/g,'"'))}a.H.push({Ib:b,u:c,Hb:d,oa:e,kb:f})}delete this.oa}return!0};Fc.prototype.pa=function(){return!0};
|
||||
function Gc(a,b,c,d){if(d)a.aa("Unable to load system ROM (error "+d+": "+b+")");else{eb(a.nb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,k=e.data;if(f)a.i=f;else if(k)for(a.i=Array(4*k.length),d=c=0;c<k.length;c++)a.i[d++]=k[c]&255,a.i[d++]=k[c]>>8&255,a.i[d++]=k[c]>>16&255,a.i[d++]=k[c]>>24&255;else a.i=e;a.oa=e.symbols;if(!a.i.length){r("Empty ROM: "+b);return}if(1==a.i.length){r(a.i[0]);return}}catch(h){a.aa("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.i=Array(b.length),e=0;e<b.length;e++)a.i[e]=ba(b[e],16);Hc(a)}}
|
||||
function Hc(a){if(!kb(a))if(!a.D)G(a);else if(a.i&&a.A){a.w||(a.w=a.i.length);if(a.i.length!=a.w)lb(a,"ROM size (0x"+n(a.i.length)+") does not match specified size ("+("0x"+n(a.w))+")");else{var b;b=a.F;if(rb(a.A,b,a.w,a.H?1:Mb)){var c;for(c=0;c<a.i.length;c++){var d=a.A,e=b+c;d.I[(e&d.i)>>>d.P].Ja(e&d.A,a.i[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.B?b.push(a.B):null!=a.B&&a.B.length&&(b=a.B);for(c=0;c<b.length;c++){for(var f=a,d=b[c],e=f.A,k=f.w,h=[],l=f.F>>>e.P;0<k&&l<e.I.length;)h.push(e.I[l++]),
|
||||
k-=e.ga;e=f.A;f=f.w;k=0;for(d>>>=e.P;0<f&&d<e.I.length;){l=h[k++];if(!l)break;e.I[d++]=l;f-=e.ga}}delete a.i}}G(a)}}La(function(){for(var a=F(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Fc(d);gb(d,c)}});function Ic(a){v.call(this,"RAM",a,Ic);this.B=a.addr;this.w=a.size;this.i=!1}z(Ic);g=Ic.prototype;g.va=function(a,b,c,d){this.A=b;this.g=c;this.C=d;G(this)};g.qa=function(a,b){b||this.reset();return!0};g.pa=function(a){return a?this.save():!0};
|
||||
g.reset=function(){!this.i&&this.w&&rb(this.A,this.B,this.w,1)&&(this.i=!0);this.i||r("No RAM allocated")};g.save=function(){return null};g.restore=function(){return!0};La(function(){for(var a=F(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Ic(d);gb(d,c)}});function Jc(a){v.call(this,"Keyboard",a,Jc,65536);G(this)}z(Jc);Jc.prototype.ba=function(){return!1};Jc.prototype.va=function(a,b,c,d){this.i=a;this.g=c;this.C=d;this.N=null};
|
||||
La(function(){for(var a=F(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Jc(d);gb(d,c)}});
|
||||
function Kc(a){v.call(this,"Debugger",a,Kc);this.S=this.na=this.K=0;this.M=P();this.mb=P();this.D=-1;this.B=[];this.V=!1;this.T=P();this.H=[];this.Z={};this.w=this.N=this.F=[];Lc(this);this.ja=0;Mc(this);this.sa=[];Nc(this,a.messages);this.La=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return bc(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return bc(b,a)})}z(Kc);
|
||||
var Oc={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},Pc=["NONE"],Qc=["PC","PSW"],Rc=[];g=Kc.prototype;
|
||||
g.va=function(a,b,c,d){this.A=b;this.g=c;this.i=a;(a=Zb(a,"messages"))&&Nc(this,a);this.jb=Rc;Sc(this,function(a){a:{var b=d.A.I,c=a[0],h=a=0,l=b.length;if(c){a=V(W(d,c));if(-1===a){d.b("invalid address: "+c);break a}h=a>>>d.A.P;l=1}d.b("blockid physical blockaddr used size type");d.b("-------- --------- ---------- ------ ------ ----");for(var c=-1,m=0;l--;){var p=b[h];p.type==c?m++||d.b("..."):(c=p.type,m=Fb[c],p&&d.b(n(p.id)+" %"+n(h<<d.A.P)+" %%"+n(p.u)+" "+ca(p.Xa)+" "+ca(p.size)+
|
||||
" "+m),c!=Lb&&(c=-1),m=0);a+=d.A.ga;h++}}});G(this)};
|
||||
g.ba=function(a,b,c){var d=this;switch(b){case "debugInput":return this.fa=this.G[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",bc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.D<d.B.length-1&&(b=d.B[++d.D]):40==a.keyCode&&(0<d.D?b=d.B[--d.D]:(b="",d.D=-1)),null!=b){var k=b.length;c.value=b;c.setSelectionRange(k,k)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.G[b]=c,Ga(c,function(){if(d.fa){var a=d.fa.value;d.fa.value=
|
||||
"";bc(d,a,!0);return!0}return!1}),!0;case "step":return this.G[b]=c,Ga(c,function(a){var b=!1;jb(d,!0)||(ib(d,!0),b=d.Ha(a?1:0),ib(d,!1));return b}),!0}return!1};g.Wa=function(){this.fa&&this.fa.focus()};function V(a){a=a&&a.u;null==a&&(a=-1);return a}g.ca=function(a,b){var c=255,d=V(a);-1!==d&&(c=Gb(this.A,d),b&&Tc(a,b));return c};g.Ma=function(a,b){var c=65535,d=V(a);if(-1!==d){var c=this.A,e=d&c.A,f=(d&c.i)>>>c.P,c=e!=c.A?c.I[f].gb(e,d):c.I[f++].Qa(e,d)|c.I[f&c.B].Qa(0,d+1)<<8;b&&Tc(a,b)}return c};
|
||||
g.Va=function(a,b,c){var d=V(a);if(-1!==d){var e=this.A;e.I[(d&e.i)>>>e.P].Ja(d&e.A,b&255,d);c&&Tc(a,c);L(this.g,!0)}};g.xb=function(a,b,c){var d=V(a);if(-1!==d){var e=this.A,f=d&e.A,k=(d&e.i)>>>e.P;f!=e.A?e.I[k].hb(f,b&65535,d):(e.I[k++].Ja(f,b&255,d),e.I[k&e.B].Ja(0,b>>8&255,d+1));c&&Tc(a,c);L(this.g,!0)}};function P(a){return{u:a,la:!1}}function Uc(a){return[a.u,a.la]}function Vc(a){return{u:a[0],la:a[1]}}
|
||||
function W(a,b,c){var d;c=(c?a.M:a.mb).u;if(void 0!==b){d=b=Wc(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].oa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=P(d));break}}if(d=e)return d;c=X(a,b,void 0)}null!=c&&(d=P(c));return d}function Xc(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.zb=Yc(a,b.wb=c[2]))}function Tc(a,b){null!=a.u&&(a.u+=b||1)}
|
||||
function Zc(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.ca(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Nc(a,b){a.C=a;a.W=a.Ab=536870912;a.ka=null;a.ma=[];var c=Yc(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in J)0<=xa(c,d)&&(a.W|=J[d],a.b(d+" messages enabled"))}function Sc(a,b){for(var c in J)if(64==J[c]){a.sa[c]=b;break}}
|
||||
function $c(a,b){var c;a=a.toUpperCase();null==b?c=xa(Qc,a):(c=xa(Qc,a.substr(b,2)),0>c&&(c=xa(Qc,a.substr(b,1))));return c}function ad(a,b){var c;if(0<=b){var d=a.g;switch(b){case 12:c=d.R;break;case 14:c=Bc(d)&255|d.Ga<<8}}return c}
|
||||
function bd(a,b){b=Wc(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));){e=$c(b,c+1);if(0<=e){d=0;var f=ad(a,e);if(void 0!==f)switch(e){case 12:case 14:d=4}b=b.substr(0,c)+(d?n(f,d):"??")+b.substr(c+1+Qc[e].length)}c++}for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=ba(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=W(a,e))?(d=e+' "'+Zc(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=W(a,e))?(Tc(d),d=e+' "'+Zc(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}g.message=function(a,b){b&&(a+=" at "+n(P(this.g.R).u,4));if(this.W&1073741824)this.ma.push(a);else if(!this.ka||a!=this.ka)if(this.ka=a,this.W&-2147483648&&(this.Y(),a+=" (cpu halted)"),this.b(a),this.g){var c=this.g;c.M=0;c.w-=c.g;c.g=0;L(c)}};
|
||||
function Mc(a){var b;if(Dc(a)){if(!a.L||!a.L.length){a.L=Array(1E3);for(b=0;b<a.L.length;b++)a.L[b]=P();a.$=0;a.b("instruction history buffer allocated")}if(!a.J||!a.J.length)for(a.J=Array(256),b=0;b<a.J.length;b++)a.J[b]=[b,0]}else a.L&&a.L.length&&a.b("instruction history buffer freed"),a.$=0,a.L=[],a.J=[]}g.ya=function(a){if(!cd(this))return!1;this.g.ya(a);return!0};
|
||||
g.Ha=function(a,b,c){if(!cd(this))return!1;this.K=0;a||Dc(this)&&Ec(this,this.g.R,0);try{var d=this.g.Ha(a);0<d&&(this.K+=d,vc(this.g,d,!0),dc(this.g,d),this.S++)}catch(e){"number"!=typeof e&&(this.K=0,lb(this.g,e.stack||e.message))}!1!==c&&L(this.g);this.ea(b||!1);return 0<this.K};g.Y=function(a){this.g&&this.g.Y(a)};g.ea=function(a){void 0===a&&(a=!0);this.M=P(this.g.R);a&&1!=this.O?dd(this):ed(this)};
|
||||
function cd(a){var b;if(b=a.g&&kb(a.g))b=a.g,b.j.U?b=!0:(b.b(b.toString()+" not powered"),b=!1);b&&!jb(a.g)?(a=a.g,a.j.Ba?(a.b(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}g.qa=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};g.pa=function(a,b){b&&this.b(a?"suspending":"shutting down");return a?this.save():!0};g.reset=function(a){Mc(this);this.S=this.na=0;this.ka=null;this.K=0;this.M=P(this.g.R);this.j.X=!1;fd(this);a||this.ea()};
|
||||
g.save=function(){var a=new M(this);N(a,0,Uc(this.M));N(a,1,Uc(this.T));N(a,2,[this.B,this.V,this.W]);N(a,3,this.H);return a.data()};g.restore=function(a){var b=0;void 0!==a[2]&&(this.M=Vc(a[b++]),this.T=Vc(a[b++]),this.B=a[b][0],"string"==typeof this.B&&(this.B=[this.B]),this.V=a[b][1],this.W|=a[b][2]);a[3]&&(this.H=a[3]);return!0};g.start=function(a,b){this.O||this.b("running");this.j.X=!0;this.Db=a;this.Eb=b};
|
||||
g.stop=function(a,b){if(this.j.X){this.j.X=!1;this.K=b-this.Eb;if(!this.O){var c="stopped";if(this.K){var d=a-this.Db,e=0<d?Math.round(1E3*this.K/d):0,c=c+" (";Dc(this)&&(c+=this.S+" opcodes, ",this.na-=this.S,this.S=0);c+=this.K+" cycles, "+d+" ms, "+e+" hz)"}else hb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.b(c)}this.ea(!0);this.Wa();fd(this,this.g.R)}};function Dc(a){return 1<a.w.length||!!a.ja}
|
||||
function Ec(a,b,c){var d=a.g;if(0<c&&(a.ja&&!--a.ja||Ub(a,b,1,a.w)))return!0;0<=c&&a.J.length&&(a.S++,b=Gb(a.A,b),null!=b&&(a.J[b][1]++,b=a.L[a.$],b.u=d.R,b.la=!1,++a.$==a.L.length&&(a.$=0)));return!1}function Lc(a){var b,c;a.w=["bp"];if(void 0!==a.N)for(b=1;b<a.N.length;b++){c=a.N[b];var d=a.A;Vb(d.I[V(c)>>>d.P],!1)}a.N=["br"];if(void 0!==a.F)for(b=1;b<a.F.length;b++)c=a.F[b],d=a.A,Vb(d.I[V(c)>>>d.P],!0);a.F=["bw"];a.ob=0}
|
||||
g.ta=function(a,b,c){var d=!0;c||gd(this,a,b,!1,!0);if(a!=this.w){var e=V(b);if(-1===e)this.b("invalid address: "+n(b.u,4)),d=!1;else{var f=this.A;f.I[e>>>f.P].ta(e&f.A,a==this.F)}}d&&(a.push(b),c?b.la=!0:(hd(this,a,a.length-1,"set"),Mc(this)));return d};function gd(a,b,c,d,e){var f=!1;c=V(c);for(var k=1;k<b.length;k++){var h=b[k];if(c==V(h)&&(!d||h.la)){f=!0;h.la||e||hd(a,b,k,"cleared");b.splice(k,1);b!=a.w&&(d=a.A,Vb(d.I[c>>>d.P],b==a.F));h.la||Mc(a);break}}return f}
|
||||
function id(a,b){for(var c=1;c<b.length;c++)hd(a,b,c);return b.length-1}function hd(a,b,c,d){c=b[c];a.b(b[0]+" "+n(c.u,4)+(d?" "+d:c.wb?' "'+c.wb+'"':""))}function fd(a,b){if(void 0!==b)Ub(a,b,1,a.w,!0),a.O=0;else for(var c=1;c<a.w.length;c++){var d=a.w[c];if(d.la){if(!gd(a,a.w,d,!0))break;c=0}}}
|
||||
function Ub(a,b,c,d,e){var f=!1;if(!a.ob++)for(var k=1;!f&&k<d.length;k++){var h=d[k];if(!e||h.la)for(var l=V(h),m=0;m<c;m++)if(b+m==l){var p,f=!0;h.la&&(gd(a,d,h,!0),e=!0);if(p=h.zb){for(var f=!1,q=0;q<p.length;q++)if(!jd(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var w=q+1;w<p.length&&p[w].indexOf("else");w++)q++;if(w==p.length){f=!0;break}}a.g.j.X||(f=!0)}if(f){e||hd(a,d,k,"hit");break}}}a.ob--;return f}
|
||||
function kd(a,b,c,d){for(var e=P(b.u),f=a.ca(b,1),k=a.jb[f],h="",l=Pc[k[0]],m=k.length-1,p=0,q,w=1;w<=m;w++){var B="";q=k[w];if(void 0!==q){var A=q&240;if(A){var Y=q&15;Y?p=Y:q|=p;q&61440||(q|=1==w?8192:4096);if(A&32)a:{var B=a,A=q,Y=b,y=" ";switch(A&15){case 1:y=n(B.ca(Y,1),2);break;case 2:y=n(B.ca(Y,1)<<24>>24,4);break;case 3:y=n(B.Ma(Y,2),4);break;default:B="imm("+ca(A)+")";break a}A&64?y="["+y+"]":A&16||(y="0x"+y);B=y}else A&16?B=Qc[(q&3840)>>8]:A&128&&(B=(f>>3&7).toString());if(!B||!B.length){h=
|
||||
"INVALID";break}0<h.length&&(h+=",");h+=B||"???"}}}f="";k=n(e.u,4)+" ";if(-1!==e.u&&-1!==b.u){do if(f+=n(a.ca(e,1),2),null==e.u)break;while(e.u!=b.u)}k+=na(f,10);k=k+(q&32768?"*":" ")+na(l,7);h&&(k+=" "+h);c&&(k=na(k,40)+";"+c,k=a.g.j.Aa?k+("cycles="+sc(a.g).toString()+" cs="+n(a.g.Na)):k+(null!=d?"="+d.toString():""));return k}var ld={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function md(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
|
||||
(function(){var m;function da(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 q(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 ea(a){return"0x"+q(a,4)}function fa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function ja(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function ka(){var a=la();return-1!==a.indexOf("pcjs.org",a.length-8)}
|
||||
var ma={"&":"&","<":"<",">":">",'"':""","'":"'"};function na(a){return a.replace(/[&<>"']/g,function(a){return ma[a]})}function oa(a,b){return(a+" ").slice(0,b)}function pa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function ta(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 ua=Date.now||function(){return+new Date};
|
||||
function va(){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 wa(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 xa(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 la(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
||||
function r(a){window&&window.alert(a)}function ya(a){var b=!1;window&&(b=window.confirm(a));return b}var za=null;function Fa(){if(null==za){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}za=a}return za}function Ga(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function Ha(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ia(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}function Ja(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function Ka(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 La={init:[],show:[],exit:[]},Ma=!1,Na=!1,Oa=!0;function Pa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Qa(a){La.init.push(a)}
|
||||
function Ra(a){if(Oa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){r(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function Sa(a){!Oa&&a?(Oa=!0,Ma&&Ta("init"),Na&&Ta("show")):Oa=a}function Ta(a){La[a]&&Ra(La[a])}Pa("onload",function(){Ma=!0;Ra(La.init)});Pa("onpageshow",function(){Na=!0;Ra(La.show)});Pa(Ia("Opera")||Ia("iOS")?"onunload":"onbeforeunload",function(){Ra(La.exit)});
|
||||
function t(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.ob=b.comment;this.Jb=b;b=this.id.indexOf(".");0>b?this.Za=this.id:(this.pb=this.id.substr(0,b),this.Za=this.id.substr(b+1));this[a]=c;this.A={Ha:!1,Ea:!1,ab:!1,X:!1,Ga:!1};this.Xa=null;this.A.Ga=!1;this.K={};this.F=null;this.Y=d||0;u.push(this)}var Ua=void 0,Va={};
|
||||
if(window){Ua||(Ua=window.location.search.substr(1));for(var Wa,Xa=/\+/g,Ya=/([^&=]+)=?([^&]*)/g;Wa=Ya.exec(Ua);)Va[decodeURIComponent(Wa[1].replace(Xa," "))]=decodeURIComponent(Wa[2].replace(Xa," "))}function Za(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
||||
function v(a,b){b||(b=t);a.prototype=Za(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var $a=window.PCjs.Machines||(window.PCjs.Machines={}),u=window.PCjs.Components||(window.PCjs.Components=[])}else $a={},u=[];function ab(a,b,c){$a[a]&&b&&($a[a][b]=c)}function bb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<u.length;b++){var d=u[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
||||
function cb(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<u.length;d++)if(c)c==u[d]&&(c=null);else if(!(a!=u[d].type||b&&u[d].id.indexOf(b)))return u[d]}return null}function w(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){r(c.message+" ("+a+")")}return b}
|
||||
function mb(a,b){for(var c=y(b.parentNode,"pdp11-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 "pdp11-binding":(g=w(h))&&g.binding&&a.ha(g.type,g.binding,h,g.value),l=k.length}}}}
|
||||
function y(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
||||
t.prototype={constructor:t,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ha:function(a,b,c){switch(b){case "clear":return this.K[b]||(this.K[b]=c,c.onclick=function(a){return function(){a.K.print&&(a.K.print.value="")}}(this)),!0;case "print":return this.K[b]||(this.ya=this.K[b]=c,c.value="",this.u=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.ea=function(a){this.u(a,this.Za)}),!0;default:return!1}},log:function(){},u:function(){},status:function(a){this.u(this.Za+": "+a)},ea:function(a,b,c){c=c||this.type;b||r((c?c+": ":"")+a)},sa:function(){return this.A.X=!0},ra:function(a,b){b&&(this.A.X=!1);return!0}};function nb(a,b){if(a.F){a===a.F?b|=0:b=b||a.Y;var c=a.F.Y&b;return!!b&&c===b||!!(c&a.F.Db)}return!1}
|
||||
function ob(a,b){if(a.A.ab)return a.A.Ea&&(a.A.Ea=!1),a.A.ab=!1;if(a.A.Ga)return a.u(a.toString()+" error"),!1;a.A.Ea=b;return a.A.Ea}function pb(a,b){a.A.Ea&&(b?a.A.ab=!0:void 0===b&&a.u(a.toString()+" busy"));return a.A.Ea}function A(a){if(!a.A.Ga&&(a.A.Ha=!0,a.A.Ha)){var b=a.Xa;a.Xa=null;b&&b()}}function qb(a,b){b&&(a.A.Ha?b():a.Xa=b);return a.A.Ha}function rb(a,b){a.A.Ga=!0;a.ea(b)}
|
||||
var sb="undefined"!==typeof ArrayBuffer,C={cpu:1,bus:64,mem:128,keyboard:65536,key:131072,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function tb(a){t.call(this,"Panel",a,tb)}v(tb);m=tb.prototype;m.ha=function(a,b,c,d){return this.D&&this.D.ha(a,b,c,d)||this.b&&this.b.ha(a,b,c,d)||this.F&&this.F.ha(a,b,c,d)?!0:this.parent.ha.call(this,a,b,c,d)};m.za=function(a,b,c,d){this.D=a;this.H=b;this.b=c;this.F=d};
|
||||
m.sa=function(a,b){b||ub();return!0};m.ra=function(){return!0};m.ia=function(){};function ub(){for(var a=!1,b=y(document,"pdp11","panel"),c=0;c<b.length;c++){var d=b[c],e=w(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<u.length;h++)if(u[h].id===f){f=u[h];break a}f=null}f||(a=!0,f=new tb(e));mb(f,d);a&&A(f)}}Qa(ub);
|
||||
function vb(a,b,c){t.call(this,"Bus",a,vb);this.b=b;this.F=c;this.w=a.busWidth||16;this.D=Math.pow(2,this.w);this.j=this.D-1|0;this.aa=16>=this.w?10:20>=this.w?12:24>=this.w?14:15;this.la=1<<this.aa;this.C=this.la>>2;this.i=this.la-1;this.H=this.D/this.la|0;this.G=this.H-1;a=new D;wb(a,this.F);this.P=Array(this.H);for(b=0;b<this.H;b++)this.P[b]=a;A(this)}v(vb);vb.prototype.reset=function(){};vb.prototype.sa=function(a,b){b||this.reset();return!0};
|
||||
function xb(a,b,c,d){for(var e=b,f=c,h=e>>>a.aa;0<f&&h<a.P.length;){var g=a.P[h],k=h*a.la,l=a.la-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==d){if(e+f<=g.B)return g.Ua+=g.B-e,g.B=e,!0;if(e>=g.B+g.Ua){l=g.size-(e-k);l>f&&(l=f);g.Ua=e-g.B+l;e=k+a.la;f-=l;h++;continue}}return yb(1,e,f)}e=new D(e,l,a.la,d);wb(e,a.F,g);a.P[h++]=e;e=k+a.la;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+zb[d]+" at "+ea(b)),!0):yb(2,b,c)}function Ab(a,b){return a.P[(b&a.j)>>>a.aa].Sa(b&a.i,b)}
|
||||
function yb(a,b,c){r("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Bb;if(sb){var Nb=new ArrayBuffer(2);(new DataView(Nb)).setUint16(0,256,!0);Bb=256===(new Uint16Array(Nb))[0]}else Bb=!1;var Ob=Bb;
|
||||
function D(a,b,c,d){this.id=Pb+=2;this.b=null;this.B=a;this.Ua=b;this.size=c||0;this.type=d||Qb;this.C=d==Rb;wb(this);this.va=this.Fb=!1;if(c)if(sb)this.K=new ArrayBuffer(c),this.D=new DataView(this.K,0,c),this.i=new Uint8Array(this.K,0,c),this.L=new Uint16Array(this.K,0,c>>1),this.b=new Int32Array(this.K,0,c>>2),Sb(this,Ob?Tb:Ub);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Sb(this,Vb)}else Sb(this)}var Qb=0,Rb=2,zb=["NONE","RAM","ROM","VID","H/W"],Pb=0;
|
||||
D.prototype={constructor:D,parent:null,save:function(){var a,b;if(sb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.D.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(sb)for(b=0;b<a.length;b++)this.D.setInt32(b<<2,a[b],!0);else this.b=a;return this.va=!0}return!1},xa:function(a,b){b?0===this.w++&&Wb(this,Xb,!1):0===this.j++&&Yb(this,Xb,!1)},M:function(){this.F&&nb(this.F,129)&&this.F.message("attempt to read invalid block %"+q(this.B),!0);
|
||||
return 255},H:function(a,b){this.F&&nb(this.F,129)&&this.F.message("attempt to write "+ea(b)+" to invalid block %"+q(this.B),!0)},V:function(a,b){return this.G(a++,b++)|this.G(a,b)<<8},oa:function(a,b,c){this.J(a++,b&255,c++);this.J(a,b>>8,c)},S:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},$: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},ga:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.va=!0},na: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.va=!0},O:function(a,b){if(this.F&&null!=this.B){var c=this.F;Zb(c,this.B+a,1,c.O)&&c.ba(!0)}return this.Sa(a,b)},U:function(a,b){if(this.F&&null!=this.B){var c=this.F;Zb(c,this.B+a,2,c.O)&&c.ba(!0)}return this.xb(a,b)},da:function(a,b,c){if(this.F&&null!=this.B){var d=this.F;Zb(d,this.B+a,1,d.C)&&d.ba(!0)}this.C?this.H(a,b,c):this.La(a,b,c)},ka:function(a,b,c){if(this.F&&
|
||||
null!=this.B){var d=this.F;Zb(d,this.B+a,2,d.C)&&d.ba(!0)}this.C?this.H(a,b,c):this.Ab(a,b,c)},N:function(a){return this.i[a]},R:function(a){return this.i[a]},T:function(a){return this.D.getUint16(a,!0)},W:function(a){return a&1?this.i[a]|this.i[a+1]<<8:this.L[a>>1]},ca:function(a,b){this.i[a]=b;this.va=!0},fa:function(a,b){this.i[a]=b;this.va=!0},ja:function(a,b){this.D.setUint16(a,b,!0);this.va=!0},pa:function(a,b){a&1?(this.i[a]=b,this.i[a+1]=b>>8):this.L[a>>1]=b;this.va=!0}};
|
||||
function wb(a,b,c){a.F=b;a.j=a.w=0;c&&((a.j=c.j)&&Yb(a,Xb,!1),(a.w=c.w)&&Wb(a,Xb,!1))}function $b(a,b){b?0===--a.w&&(a.J=a.C?a.H:a.La):0===--a.j&&(a.G=a.Sa)}function Wb(a,b,c){c&&a.w||(a.J=!a.C&&b[2]||a.H);if(c||void 0===c)a.La=b[2]||a.H,a.Ab=b[3]||a.oa}function Yb(a,b,c){c&&a.j||(a.G=b[0]||a.M);if(c||void 0===c)a.Sa=b[0]||a.M,a.xb=b[1]||a.V}function Sb(a,b){b||(b=ac);Yb(a,b,void 0);Wb(a,b,void 0)}
|
||||
var ac=[],Vb=[D.prototype.S,D.prototype.$,D.prototype.ga,D.prototype.na],Xb=[D.prototype.O,D.prototype.U,D.prototype.da,D.prototype.ka];if(sb)var Ub=[D.prototype.N,D.prototype.T,D.prototype.ca,D.prototype.ja],Tb=[D.prototype.R,D.prototype.W,D.prototype.fa,D.prototype.pa];
|
||||
function bc(a,b){t.call(this,"CPU",a,bc,1);var c=a.multiplier||1;this.cb=a.cycles||b;this.Ba=c;this.Ma=Math.round(this.cb/1E4)/100;this.Aa=this.Ma*this.Ba;this.A.Z=!1;this.A.bb=!1;this.A.kb=a.autoStart;this.A.lb=!1;this.A.Fa=!1;this.Pa=this.ca=0;this.Qa=a.csStart;this.Ia=a.csInterval;this.Ja=a.csStop;this.oa=[];this.Ib=this.Ca.bind(this);A(this)}v(bc);var cc=["power","reset"];m=bc.prototype;
|
||||
m.za=function(a,b,c,d){this.D=a;this.H=b;this.F=d;for(b=0;b<cc.length;b++)(c=this.K[cc[b]])&&this.D.ha(null,cc[b],c);this.ja=null;a=dc(a,"autoStart");null!=a&&(this.A.kb="true"==a?!0:"false"==a?!1:!!a);A(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
|
||||
m.sa=function(a,b){if(!b){if(a&&this.restore){ec(this);if(!this.restore(a))return!1;fc(this)}else this.reset();if(this.F){var c=this.F;c.u("Type ? for help with PDP11 Debugger commands");c.ia();if(c.ka){var d=c.ka;c.ka=null;gc(c,d)}}else this.u("No debugger detected")}F(this);return!0};m.ra=function(a){return a?this.save():!0};function hc(a){(a.A.kb||!a.F&&void 0===a.K.run)&&a.Ca(!0)}m.mb=function(){return 0};
|
||||
function fc(a){void 0===a.Qa&&(a.Qa=0);void 0===a.Ia&&(a.Ia=-1);void 0===a.Ja&&(a.Ja=-1);a.A.Fa=0<=a.Qa&&0<a.Ia;a.A.Fa&&(a.Pa=0,a.ca=a.Qa-a.V)}function ic(a,b){if(a.A.Fa){var c=!1;a.Pa=a.Pa+a.mb()|0;a.ca-=b;0>=a.ca&&(a.ca+=a.Ia,c=!0);0<=a.Ja&&a.Ja<=jc(a)&&(a.Ia=a.Ja=-1,fc(a),a.ba(),c=!0);c&&a.u(jc(a)+" cycles: checksum="+q(a.Pa))}}
|
||||
function kc(a,b,c,d){a.K[b]&&(void 0===c&&(rb(a,"Value for "+b+" is invalid"),a.ba()),c=!a.A.Z||a.A.lb?q(c,d):"--------".substr(0,d),a.K[b].textContent!=c&&(a.K[b].textContent=c))}
|
||||
m.ha=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.K[b]=c;a=!0;break;case "run":this.K[b]=c;c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.A.X)a=!0;else{var b=null,c,g=bb(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.A.Ha);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.A.X);c++);c==g.length&&(b=a);r("The "+b.type+" component ("+b.id+") is not "+(b.A.Ha?"powered yet":"ready yet"+(b.Xa?" (waiting for notification)":""))+".");a=!1}a&&(d.A.Z?d.ba():d.Ca())};a=!0;break;
|
||||
case "speed":this.K[b]=c;a=!0;break;case "setSpeed":this.K[b]=c,c.onclick=function(){lc(d,d.Ba<<1,!0)},c.textContent=this.Aa.toFixed(2)+"Mhz",a=!0}return a};function mc(a,b,c){a.V+=b;c&&(a.U=a.R=0)}function nc(a,b){var c=1;b&&1<a.Ba&&a.S&&(c=a.S/a.Ma);a.ub=Math.round(1E3/30);a.wa=Math.floor(a.cb/30*c);b||(a.da=a.wa);a.eb=0}function jc(a){return a.V+a.O+a.U-a.R}function ec(a){a.S=0;a.vb=0;a.V=a.O=a.U=a.R=0;fc(a);lc(a,1)}
|
||||
function lc(a,b,c){var d=!1;if(void 0!==b){.8>a.S/a.Aa?b=1:d=!0;a.Ba=b;b=a.Ma*a.Ba;if(a.Aa!=b){a.Aa=b;b=a.Aa.toFixed(2)+"Mhz";var e=a.K.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.D&&a.D.Ta()}mc(a,a.O);a.O=0;a.N=ua();a.T=0;nc(a);return d}function Ac(a){a.U-=a.R;a.R=0}
|
||||
m.Ca=function(a){if(ob(this,!0)){if(!this.A.Z){lc(this);this.D&&this.D.start(this.N,jc(this));this.A.Z=!0;this.A.bb=!0;this.ja&&this.ja.start();var b=this.K.run;b&&(b.textContent="Halt");this.D&&(this.D.ia(!0),a&&this.D.Ta(!0))}this.eb>=this.cb&&nc(this,!0);this.ka=0;this.na=ua();this.T&&(a=this.na-this.T,a>this.ub&&(this.N+=a,this.N>this.na&&(this.N=this.na)));try{do{for(var c=this.A.Fa?1:this.wa,d=this.oa.length-1;0<=d;d--){var e=this.oa[d];0>e[0]||c>e[0]&&(c=e[0])}this.Ka(c);var f=this.U-this.R;
|
||||
a=f;for(var h=this.oa.length-1;0<=h;h--){var g=this.oa[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.ka+=f;this.O+=f;mc(this,0,!0);ic(this,f);this.da-=f;if(0>=this.da){this.da+=this.wa;15<=++this.vb&&(this.D&&this.D.ia(),this.vb=0);break}}while(this.A.Z)}catch(k){this.ba();F(this);this.D&&this.D.stop(ua(),jc(this));ob(this,!1);rb(this,k.stack||k.message);return}c=setTimeout;d=this.Ib;this.T=ua();e=this.ub;this.ka&&(e=Math.round(e*this.ka/this.wa));e=e-(this.T-this.na);if(f=this.T-this.N)this.S=
|
||||
Math.round(this.O/(10*f))/100,864E5<=f&&(this.V=0,lc(this));if(0>e||this.S<this.Aa)-1E3>e&&(this.N-=e),e=0;this.eb+=this.ka;this.T+=e;c(d,e)}else F(this),this.D&&this.D.stop(ua(),jc(this))};m.Ka=function(){return 0};m.ba=function(a){pb(this,!0);Ac(this);mc(this,this.O);this.O=0;if(this.A.Z){this.A.Z=!1;this.ja&&this.ja.stop();var b=this.K.run;b&&(b.textContent="Run")}this.A.Wa=a};function F(a,b){a.D&&a.D.ia(b)}
|
||||
function Bc(a){this.rb=+a.model||1170;bc.call(this,a,1E6);ec(this);this.A.Wa=this.A.Eb=!1;this.nb=0;this.w=65536;this.i=this.b=32768;this.j=65535;this.I=15;this.g=[0,0,0,0,0,0,0,0];this.zb=[0,0,0,0,0,0];this.fa=[0,0,0,0];this.memory=[];this.J=[];this.fb=this.wb=0;this.W=2;this.$=255;this.G=0;this.ga=-1;this.tb=this.Na=this.sb=this.C=this.Da=this.M=this.L=0;this.pa=[7,7,7,7];this.Oa=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0],[65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.Kb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}v(Bc,bc);m=Bc.prototype;m.reset=function(){this.A.Z&&this.ba();Cc(this);ec(this);this.A.Ga=!1;this.parent.reset.call(this)};
|
||||
function Cc(a){a.$=255;a.J=[];a.wb=0;a.L=a.M=a.Da=a.sb=0;a.pa[0]=a.pa[1]=a.pa[3]=7;a.Na=0}m.mb=function(){return 0};m.save=function(){var a=new G(this);H(a,0,[]);H(a,1,[this.qb,this.V,this.Ba]);for(var b=this.H,c=0,d=[],e=0;e<b.H;e++){var f=b.P[e];if(f.va||f.Fb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var n=f[g],p=g+1;p<f.length&&f[p]===n;)p++;l[k++]=p-g;l[k++]=n;g=p}if(l.length<f.length){f=l;break a}}d[h]=f}}H(a,2,d);return a.data()};
|
||||
m.restore=function(a){var b=a[1];this.qb=b[0];this.V=b[1];lc(this,b[3]);a:{b=this.H;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.C){for(var f=0,h=Array(b.C),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.P[d];if(!f||!f.restore(e)){r("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
m.ha=function(a,b,c){var d=!1;switch(b){case "PC":case "PSW":case "IF":case "SF":case "ZF":case "CF":this.K[b]=c;this.nb++;d=!0;break;default:d=this.parent.ha.call(this,a,b,c)}return d};m.ia=function(a){this.nb&&(a||!this.A.Z||this.A.lb)&&(a=this.I&-14|0|(this.ta&255?0:4)|(this.ta&256?1:0),kc(this,"PSW",a,4),kc(this,"SF",a&8?1:0,1),kc(this,"ZF",a&4?1:0,1),kc(this,"CF",a&1?1:0,1));if(a=this.K.speed)a.textContent=this.A.Z&&this.S?this.S.toFixed(2)+"Mhz":"Stopped"};
|
||||
function Dc(a,b){var c,d;a.b=b<<12;a.j=~b&4;a.i=b<<14;a.w=b<<16;if((b^a.I)&2048)for(c=0;6>c;c++)d=a.g[c],a.g[c]=a.zb[c],a.zb[c]=d;(a.C=b>>14&3)!==(d=a.I>>14&3)&&(a.fa[d]=a.g[6],a.g[6]=a.fa[a.C]);a.W=2;a.I=b}
|
||||
function I(a,b){var c,d,e=0;0>a.ga?(a.I=a.I&63728|a.b>>12&8|a.i>>14&2|a.w>>16&1,a.j&65535||(a.I|=4),a.ga=a.I):a.C||(b=4,e=1);a.L&57344||(a.M=63222);a.C=0;0<=(c=L(a,b|65536))&&0<=(d=L(a,b+2&65535|65536))&&(Dc(a,d&53247|a.ga>>2&12288),e&&(a.g[6]=4),0<=Ec(a,a.ga)&&0<=Ec(a,a.g[7])&&(a.g[7]=c));a.G=0;return a.ga=-1}
|
||||
function Fc(a,b,c){var d,e,f,h=0;if(c&a.sb){d=b>>13&a.pa[a.C];e=a.Oa[a.C][d];f=(a.Oa[a.C][d+16]<<6)+(b&8191)&4194303;if(a.Da&16){if(3932160<=f&&4186112>f){f=f&262143;var g=f>>13&31;31>g?a.Da&32&&(f=a.Kb[g]+(f&8190)&4194302,3932160<=f&&4186112>f&&console.log("panic(898)")):f|=4186112}}else f&=262143,253952<=f&&(f|=4186112);if(3932160>f&&(3915776<=f||f&1&&!(c&1)))return I(a,4);switch(e&7){case 1:h=4096;case 2:e|=128;c&4&&(h=8192);break;case 4:h=4096;case 5:c&4&&(h=4096);case 6:e|=c&4?192:128;break;
|
||||
default:h=32768}32512!==(e&32520)&&(e&8?e&32512&&(b&8128)<(e>>2&8128)&&(h|=16384):(b&8128)>(e>>2&8128)&&(h|=16384));a.Oa[a.C][d]=e;if(4194170!==f||a.C)a.Na=a.C,a.tb=d;if(h){if(h&57344)return 0<=a.ga&&(h|=128),a.L&57344||(a.L=a.L|h|a.Na<<5|a.tb<<1),I(a,168);a.L&61440||!(4191360>f||4194239<f)||(a.L|=4096,a.L&512&&(a.G|=2))}}else if(f=b&65535,57344<=f)f|=4186112;else if(f&1&&!(c&1))return I(a,4);return f}function M(a,b){return 4194304<=b?a.g[b-4194304]:3932160<=b?-1:0<=b?a.memory[b>>1]:b}
|
||||
function N(a,b,c){c&=65535;return 4194304<=b?a.g[b-4194304]=c:3932160<=b?-1:0<=b?a.memory[b>>1]=c:b}function O(a,b){var c;return 4194304<=b?a.g[b-4194304]&255:3932160<=b?-1:0<=b?(c=a.memory[b>>1],b&1&&(c=c>>8),c&255):b}function R(a,b,c){c&=255;return 4194304<=b?a.g[b-4194304]=a.g[b-4194304]&65280|c:3932160<=b?-1:0<=b?b&1?a.memory[b>>1]=c<<8|a.memory[b>>1]&255:a.memory[b>>1]=a.memory[b>>1]&65280|c:b}function L(a,b){return M(a,Fc(a,b,2))}
|
||||
function Gc(a){var b=L(a,a.g[6]|65536);0<=b&&(a.g[6]=a.g[6]+2&65535);return b}function Ec(a,b){var c,d;a.g[6]=d=a.g[6]-2&65535;a.L&57344||(a.M=a.M<<8|246);if(!a.C&&d<=a.$&&4<d){if(d<=a.$-32)return a.g[6]=4,I(a,4);a.G|=4}return 0<=(c=Fc(a,d|65536,4))?N(a,c,b):c}
|
||||
function Hc(a,b,c){var d,e,f=b&7;switch(b>>3&7){case 0:return I(a,4);case 1:if(6===f&&!a.C&&c&4&&(a.g[6]<=a.$||65534<=a.g[6])){if(a.g[6]<=a.$-32||65534<=a.g[6])return a.g[6]=4,I(a,4);a.G|=4}return 7===f?a.g[f]:a.g[f]|65536;case 2:e=2;d=a.g[f];7!==f&&(d|=65536,6>f&&c&1&&(e=1));break;case 3:e=2;d=a.g[f];7!==f&&(d|=65536);if(0>(d=L(a,d)))return d;d|=65536;break;case 4:e=-2;6>f&&c&1&&(e=-1);d=a.g[f]+e&65535;7!==f&&(d|=65536);break;case 5:e=-2;d=a.g[f]-2&65535;7!==f&&(d|=65536);if(0>(d=L(a,d)))return d;
|
||||
d|=65536;break;case 6:if(0>(d=L(a,a.g[7])))return d;a.g[7]=a.g[7]+2&65535;d=d+a.g[f]&65535;return d|65536;case 7:if(0>(d=L(a,a.g[7])))return d;a.g[7]=a.g[7]+2&65535;d=d+a.g[f]&65535;return 0>(d=L(a,d|65536))?d:d|65536}a.g[f]=a.g[f]+e&65535;a.L&57344||(a.M=a.M<<8|e<<3&248|f);if(6===f&&!a.C&&c&4&&0>=e&&(a.g[6]<=a.$||65534<=a.g[6])){if(a.g[6]<=a.$-32)return a.g[6]=4,I(a,4);a.G|=4}return d}function S(a,b,c){var d;return b&56?(0<=(d=Hc(a,b,c))&&(d=Fc(a,d,c)),d):4194304+(b&7)}
|
||||
function T(a,b){var c;b&56?0<=(c=S(a,b,2))&&(c=M(a,c)):c=a.g[b&7];return c}function Ic(a,b){var c;b&56?0<=(c=S(a,b,3))&&(c=O(a,c)):c=a.g[b&7]&255;return c}function U(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||
m.Ka=function(a){this.A.Wa=!0;var b=this.A.Eb=this.F&&Jc(this.F),c=a?this.A.bb?0:1:-1;this.A.bb=!1;this.U=this.R=a;this.qb&256?(Ac(this),a=!1):a=!0;if(a){do{if(b){if(Kc(this.F,this.g[7],c)){this.ba();break}c=1}var d,e,f,h,g;if(this.W)if(1===this.W)this.W=2;else{this.W=0;g=-1;d=this.wb&224;if(0<(a=this.J.length))for(;0<a--;){if(0<this.J[a].$a){this.J[a].$a--;this.W=2;break}if(this.J[a].ib){if(!this.J[a].ib()){this.J.splice(a,1);g--;continue}this.J[a].ib=null}this.J[a].Hb>d&&(d=this.J[a].Hb,g=a)}d>
|
||||
(this.I&224)&&(0>g?I(this,160):(I(this,this.J[g].Mb),this.J.splice(g,1)))}this.L&57344||(this.M=0);this.G=this.I&16;if(0<=(a=L(this,this.g[7])))switch(this.g[7]=this.g[7]+2&65535,a&61440){case 4096:0<=(d=T(this,a>>6))&&(a&56?0<=(f=S(this,a,4))&&0<=N(this,f,d)&&(this.b=this.j=d,this.i=0):(this.b=this.j=this.g[a&7]=d,this.i=0));break;case 8192:0<=(d=T(this,a>>6))&&0<=(e=T(this,a))&&(this.b=this.j=this.w=a=d-e,this.i=(d^e)&(d^a));break;case 12288:0<=(d=T(this,a>>6))&&0<=(e=T(this,a))&&(this.b=this.j=
|
||||
d&e,this.i=0);break;case 16384:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e&~d,0<=N(this,f,a)&&(this.b=this.j=a,this.i=0)):(this.b=this.j=a=this.g[a&7]&=~d,this.i=0));break;case 20480:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e|d,0<=N(this,f,a)&&(this.b=this.j=a,this.i=0)):(this.b=this.j=a=this.g[a&7]|=d,this.i=0));break;case 24576:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=d+e,0<=N(this,f,a)&&(this.b=this.j=this.w=a,this.i=(d^a)&(e^a))):(g=a&7,
|
||||
e=this.g[g],this.g[g]=(a=d+e)&65535,this.b=this.j=this.w=a,this.i=(d^a)&(e^a)));break;case 36864:0<=(d=Ic(this,a>>6))&&(a&56?0<=(f=S(this,a,5))&&0<=R(this,f,d)&&(this.b=this.j=d<<8,this.i=0):(d&128&&(d|=65280),this.b=this.j=this.g[a&7]=d,this.i=0));break;case 40960:0<=(d=Ic(this,a>>6))&&0<=(e=Ic(this,a))&&(a=d-e,this.b=this.j=this.w=a<<8,this.i=((d^e)&(d^a))<<8);break;case 45056:0<=(d=Ic(this,a>>6))&&0<=(e=Ic(this,a))&&(this.b=this.j=(d&e)<<8,this.i=0);break;case 49152:0<=(d=Ic(this,a>>6))&&0<=(e=
|
||||
O(this,f=S(this,a,7)))&&(a=e&~d,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=0));break;case 53248:0<=(d=Ic(this,a>>6))&&0<=(e=O(this,f=S(this,a,7)))&&(a=e|d,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=0));break;case 57344:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e-d,0<=N(this,f,a)&&(this.b=this.j=this.w=a,this.i=(d^e)&(e^a))):(g=a&7,e=this.g[g],this.g[g]=(a=e-d)&65535,this.b=this.j=this.w=a,this.i=(d^e)&(e^a)));break;default:switch(a&65024){case 2048:0<=(h=Hc(this,a,0))&&(g=a>>6&7,
|
||||
0<=Ec(this,this.g[g])&&(this.g[g]=this.g[7],this.g[7]=h&65535));break;case 28672:0<=(d=T(this,a))&&(g=a>>6&7,d&32768&&(d|=-65536),e=this.g[g],e&32768&&(e|=-65536),a=~~(d*e),this.g[g]=a>>16&65535,this.g[g|1]=a&65535,this.b=a>>16,this.j=this.b|a,this.w=this.i=0,-32768>a||32767<a)&&(this.w=65536);break;case 29184:0<=(d=T(this,a))&&(d?(g=a>>6&7,e=this.g[g]<<16|this.g[g|1],this.w=this.i=0,d&32768&&(d|=-65536),a=~~(e/d),-32768<=a&&32767>=a?(this.g[g]=a&65535,this.g[g|1]=e-a*d&65535,this.j=a>>16|a,this.b=
|
||||
a>>16):(this.i=32768,this.j=a>>15|a,this.b=e>>16,-1===d&&65534===this.g[g]&&(this.g[g]=this.g[g|1]=1))):(this.j=this.b=0,this.i=32768,this.w=65536));break;case 29696:0<=(d=T(this,a))&&(g=a>>6&7,a=this.g[g],a&32768&&(a|=4294901760),this.w=this.i=0,d&=63,d&32?(d=64-d,16<d&&(d=16),this.w=a<<17-d,a=a>>d):d&&(16<d?(this.i=a,a=0):(this.w=a=a<<d,(e=a>>15&65535)&&65535!==e&&(this.i=32768))),this.g[g]=a&65535,this.b=this.j=a);break;case 30208:if(0<=(d=T(this,a))){g=a>>6&7;e=this.g[g]<<16|this.g[g|1];this.w=
|
||||
this.i=0;d&=63;if(d&32)d=64-d,32<d&&(d=32),a=e>>d-1,this.w=a<<16,a>>=1,e&2147483648&&(a|=4294967295<<32-d);else if(d){if(a=e<<d-1,this.w=a>>15,a<<=1,32<d&&(d=32),e>>=32-d)e|=4294967295<<d&4294967295,4294967295!==e&&(this.i=32768)}else a=e;this.g[g]=a>>16&65535;this.g[g|1]=a&65535;this.b=a>>16;this.j=a>>16|a}break;case 30720:a&56?0<=(e=M(this,f=S(this,a,6)))&&(e^=this.g[a>>6&7],0<=N(this,f,e)&&(this.b=this.j=e,this.i=0)):(this.b=this.j=e=this.g[a&7]^=this.g[a>>6&7],this.i=0);break;case 32256:g=a>>
|
||||
6&7;if(this.g[g]=this.g[g]-1&65535)this.g[7]=this.g[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.g[7]=U(this.g[7],a);break;case 512:this.j&65535&&(this.g[7]=U(this.g[7],a));break;case 768:this.j&65535||(this.g[7]=U(this.g[7],a));break;case 1024:(this.b&32768)===(this.i&32768)&&(this.g[7]=U(this.g[7],a));break;case 1280:(this.b&32768)!==(this.i&32768)&&(this.g[7]=U(this.g[7],a));break;case 1536:this.j&65535&&(this.b&32768)===(this.i&32768)&&(this.g[7]=U(this.g[7],a));break;case 1792:this.j&
|
||||
65535&&(this.b&32768)===(this.i&32768)||(this.g[7]=U(this.g[7],a));break;case 32768:this.b&32768||(this.g[7]=U(this.g[7],a));break;case 33280:!(this.w&65536)&&this.j&65535&&(this.g[7]=U(this.g[7],a));break;case 33024:this.b&32768&&(this.g[7]=U(this.g[7],a));break;case 33536:if(this.w&65536||!(this.j&65535))this.g[7]=U(this.g[7],a);break;case 33792:this.i&32768||(this.g[7]=U(this.g[7],a));break;case 34048:this.i&32768&&(this.g[7]=U(this.g[7],a));break;case 34304:this.w&65536||(this.g[7]=U(this.g[7],
|
||||
a));break;case 34560:this.w&65536&&(this.g[7]=U(this.g[7],a));break;case 34816:I(this,24);break;case 35072:I(this,28);break;default:switch(a&65472){case 64:0<=(h=Hc(this,a,0))&&(this.g[7]=h&65535);break;case 192:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e<<8|e>>8,0<=N(this,f,a)&&(this.b=this.j=e&65280,this.i=this.w=0)):(g=a&7,e=this.g[g],this.g[g]=(e<<8|e>>8)&65535,this.b=this.j=e&65280,this.i=this.w=0);break;case 2560:a&56?0<=(f=S(this,a,4))&&0<=N(this,f,0)&&(this.b=this.w=this.i=this.j=0):this.b=this.w=
|
||||
this.i=this.j=this.g[a&7]=0;break;case 2624:0<=(e=M(this,f=S(this,a,6)))&&(a=~e,0<=N(this,f,a)&&(this.b=this.j=a,this.w=65536,this.i=0));break;case 2688:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e+1,0<=N(this,f,a)&&(this.b=this.j=a,this.i=a&(a^e))):(g=a&7,e=this.g[g],a=e+1,this.g[g]=a&65535,this.b=this.j=a,this.i=a&(a^e));break;case 2752:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e-1,0<=N(this,f,a)&&(this.b=this.j=a,this.i=(a^e)&e)):(g=a&7,e=this.g[g],a=e-1,this.g[g]=a&65535,this.b=this.j=a,this.i=(a^e)&e);
|
||||
break;case 2816:0<=(e=M(this,f=S(this,a,6)))&&(a=-e,0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a&e));break;case 2880:0<=(e=M(this,f=S(this,a,6)))&&(a=e+(this.w>>16&1),0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a&(a^e)));break;case 2944:0<=(e=M(this,f=S(this,a,6)))&&(a=e-(this.w>>16&1),0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=(a^e)&e));break;case 3008:0<=(e=T(this,a))&&(this.b=this.j=e,this.w=this.i=0);break;case 3072:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=(this.w&65536|e)>>1,0<=N(this,
|
||||
f,a)&&(this.w=e<<16,this.b=this.j=a,this.i=a^this.w>>1)):(g=a&7,e=this.g[g],a=(this.w&65536|e)>>1,this.g[g]=a&65535,this.w=e<<16,this.b=this.j=a,this.i=a^this.w>>1);break;case 3136:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e<<1|this.w>>16&1,0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a^e)):(g=a&7,e=this.g[g],a=e<<1|this.w>>16&1,this.g[g]=a&65535,this.w=this.b=this.j=a,this.i=a^e);break;case 3200:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e&32768|e>>1,0<=N(this,f,a)&&(this.w=e<<16,this.b=this.j=a,this.i=
|
||||
this.b^this.w>>1)):(g=a&7,e=this.g[g],a=e&32768|e>>1,this.g[g]=a&65535,this.w=e<<16,this.b=this.j=a,this.i=this.b^this.w>>1);break;case 3264:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e<<1,0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a^e)):(g=a&7,e=this.g[g],a=e<<1,this.g[g]=a&65535,this.w=this.b=this.j=a,this.i=a^e);break;case 3328:h=this.g[7]+((a&63)<<1)&65535;0<=(d=L(this,h|65536))&&(this.g[7]=this.g[5],this.g[5]=d,this.g[6]=h+2&65535);break;case 3392:a&56?0<=(h=Hc(this,a,0))&&(61440!==(this.I&61440)&&
|
||||
(h&=65535),this.C=this.I>>12&3,0<=(d=L(this,h))&&(this.C=this.I>>14&3,0<=Ec(this,d)&&(this.b=this.j=d,this.i=0))):(g=a&7,d=6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]:this.fa[this.I>>12&3],0<=Ec(this,d)&&(this.b=this.j=d,this.i=0));break;case 3456:0<=(e=Gc(this))&&((this.L&57344||(this.M=22),a&56)?0<=(h=Hc(this,a,0))&&(h&=65535,this.C=this.I>>12&3,0<=(f=Fc(this,h,4))&&(this.C=this.I>>14&3,0<=N(this,f,e)&&(this.b=this.j=e,this.i=0))):(g=a&7,6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]=
|
||||
e:this.fa[this.I>>12&3]=e,this.b=this.j=e,this.i=0));break;case 3520:0<=(f=S(this,a,4))&&(a=-(this.b>>15&1),0<=N(this,f,a)&&(this.j=a,this.i=0));break;case 35328:a&56?0<=(f=S(this,a,5))&&0<=R(this,f,0)&&(this.b=this.w=this.i=this.j=0):(this.g[a&7]&=65280,this.b=this.w=this.i=this.j=0);break;case 35392:0<=(e=O(this,f=S(this,a,7)))&&(a=~e,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.w=65536,this.i=0));break;case 35456:0<=(e=O(this,f=S(this,a,7)))&&(a=e+1,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=(a&(a^
|
||||
e))<<8));break;case 35520:0<=(e=O(this,f=S(this,a,7)))&&(a=e-1,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=((a^e)&e)<<8));break;case 35584:0<=(e=O(this,f=S(this,a,7)))&&(a=-e,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a&e)<<8));break;case 35648:0<=(e=O(this,f=S(this,a,7)))&&(a=e+(this.w>>16&1),0<=R(this,f,a)&&(this.b=this.j=this.w=a<<8,this.i=(a&(a^e))<<8));break;case 35712:0<=(e=O(this,f=S(this,a,7)))&&(a=e-(this.w>>16&1),0<=R(this,f,a)&&(this.b=this.j=this.w=a<<8,this.i=((a^e)&e)<<8));break;
|
||||
case 35776:0<=(e=Ic(this,a))&&(this.b=this.j=e<<8,this.w=this.i=0);break;case 35840:0<=(e=O(this,f=S(this,a,7)))&&(a=((this.w&65536)>>8|e)>>1,0<=R(this,f,a)&&(this.w=e<<16,this.b=this.j=a<<8,this.i=this.b^this.w>>1));break;case 35904:0<=(e=O(this,f=S(this,a,7)))&&(a=e<<1|this.w>>16&1,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a^e)<<8));break;case 35968:0<=(e=O(this,f=S(this,a,7)))&&(a=e&128|e>>1,0<=R(this,f,a)&&(this.w=e<<16,this.b=this.j=a<<8,this.i=this.b^this.w>>1));break;case 36032:0<=
|
||||
(e=O(this,f=S(this,a,7)))&&(a=e<<1,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a^e)<<8));break;case 36160:a&56?0<=(h=Hc(this,a,0))&&(this.C=this.I>>12&3,0<=(d=L(this,h|65536))&&(this.C=this.I>>14&3,0<=Ec(this,d)&&(this.b=this.j=d,this.i=0))):(g=a&7,d=6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]:this.fa[this.I>>12&3],0<=Ec(this,d)&&(this.b=this.j=d,this.i=0));break;case 36224:0<=(e=Gc(this))&&((this.L&57344||(this.M=22),a&56)?0<=(h=Hc(this,a,0))&&(this.C=this.I>>12&3,0<=(f=Fc(this,h|
|
||||
65536,4))&&(this.C=this.I>>14&3,0<=N(this,f,e)&&(this.b=this.j=e,this.i=0))):(g=a&7,6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]=e:this.fa[this.I>>12&3]=e,this.b=this.j=e,this.i=0));break;default:switch(a&65528){case 128:0<=(d=Gc(this))&&(g=a&7,this.g[7]=this.g[g],this.g[g]=d);break;case 152:this.I&49152||(this.I=this.I&63519|(a&7)<<5,this.W=1);break;case 160:case 168:a&1&&(this.w=0);a&2&&(this.i=0);a&4&&(this.j=1);a&8&&(this.b=0);break;case 176:case 184:a&1&&(this.w=65536);a&2&&(this.i=32768);
|
||||
a&4&&(this.j=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.I?I(this,4):(this.fb=3,Ac(this),console.log("HALT at "+this.g[7].toString(8)));break;case 1:g=0;if(0<(a=this.J.length))for(;0<a--;)g+=this.J[a].$a,this.J[a].$a=0;0===g&&0===this.fb&&(this.fb=2,Ac(this));break;case 3:I(this,12);break;case 4:I(this,16);break;case 5:this.I&49152||Cc(this);break;case 2:case 6:f=this.g[6];0<=(h=L(this,f|65536))&&(f=f+2&65535,0<=(d=L(this,f|65536))&&(this.g[6]=f+2&65535,d&=63743,this.I&49152&&
|
||||
(d=d&63519|this.I&63712),this.g[7]=h,Dc(this,d),this.G&=-17,2===a&&(this.G|=this.I&16)));break;default:I(this,8)}}}}}}this.G&&(this.G&2?I(this,168):this.G&4?I(this,4):this.G&16&&I(this,12),this.G=0)}while(0<this.R)}return this.A.Wa?this.U-this.R:void 0===this.A.Wa?0:-1};Qa(function(){for(var a=y(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Bc(d);mb(d,c)}});
|
||||
function Lc(a){t.call(this,"ROM",a,Lc);this.i=null;this.C=a.addr;this.j=a.size;this.G=a.writable;this.w=a.alias;this.D=a.file;this.J=fa(this.D);if(this.D){a=this.D;var b=ja(this.J);"json"!=b&&"hex"!=b&&(a=la()+"/api/v1/dump?file="+this.D+"&format=bytes&decimal=true");var c=this;xa(a,null,!0,function(a,b,f){Mc(c,a,b,f)})}}v(Lc);Lc.prototype.za=function(a,b,c,d){this.H=b;this.b=c;this.F=d;Nc(this)};
|
||||
Lc.prototype.sa=function(){if(this.qa){if(this.F){var a=this.F,b=this.id,c=this.C,d=this.j,e=this.qa,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 n=f,k=[k>>>0,h],p=ta(n,k,a.pa);0>p&&n.splice(-(p+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.G.push({Lb:b,B:c,Gb:d,qa:e,hb:f})}delete this.qa}return!0};Lc.prototype.ra=function(){return!0};
|
||||
function Mc(a,b,c,d){if(d)a.ea("Unable to load system ROM (error "+d+": "+b+")");else{ab(a.pb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.i=f;else if(h)for(a.i=Array(4*h.length),d=c=0;c<h.length;c++)a.i[d++]=h[c]&255,a.i[d++]=h[c]>>8&255,a.i[d++]=h[c]>>16&255,a.i[d++]=h[c]>>24&255;else a.i=e;a.qa=e.symbols;if(!a.i.length){r("Empty ROM: "+b);return}if(1==a.i.length){r(a.i[0]);return}}catch(g){a.ea("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.i=Array(b.length),e=0;e<b.length;e++)a.i[e]=da(b[e],16);Nc(a)}}
|
||||
function Nc(a){if(!qb(a))if(!a.D)A(a);else if(a.i&&a.H){a.j||(a.j=a.i.length);if(a.i.length!=a.j)rb(a,"ROM size (0x"+q(a.i.length)+") does not match specified size ("+("0x"+q(a.j))+")");else{var b;b=a.C;if(xb(a.H,b,a.j,a.G?1:Rb)){var c;for(c=0;c<a.i.length;c++){var d=a.H,e=b+c;d.P[(e&d.j)>>>d.aa].La(e&d.i,a.i[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(c=0;c<b.length;c++){for(var f=a,d=b[c],e=f.H,h=f.j,g=[],k=f.C>>>e.aa;0<h&&k<e.P.length;)g.push(e.P[k++]),
|
||||
h-=e.la;e=f.H;f=f.j;h=0;for(d>>>=e.aa;0<f&&d<e.P.length;){k=g[h++];if(!k)break;e.P[d++]=k;f-=e.la}}delete a.i}}A(a)}}Qa(function(){for(var a=y(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Lc(d);mb(d,c)}});function Oc(a){t.call(this,"RAM",a,Oc);this.w=a.addr;this.j=a.size;this.i=!1}v(Oc);m=Oc.prototype;m.za=function(a,b,c,d){this.H=b;this.b=c;this.F=d;A(this)};m.sa=function(a,b){b||this.reset();return!0};m.ra=function(a){return a?this.save():!0};
|
||||
m.reset=function(){!this.i&&this.j&&xb(this.H,this.w,this.j,1)&&(this.i=!0);this.i||r("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Qa(function(){for(var a=y(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Oc(d);mb(d,c)}});function Pc(a){t.call(this,"Keyboard",a,Pc,65536);A(this)}v(Pc);Pc.prototype.ha=function(){return!1};Pc.prototype.za=function(a,b,c,d){this.D=a;this.b=c;this.F=d;this.ja=null};
|
||||
Qa(function(){for(var a=y(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Pc(d);mb(d,c)}});
|
||||
function Qc(a){t.call(this,"Debugger",a,Qc);this.R=this.ga=this.L=0;this.N=V();this.na=V();this.w=-1;this.j=[];this.T=!1;this.S=V();this.G=[];this.V={};this.i=this.O=this.C=[];Rc(this);this.ca=0;Sc(this);this.ja=[];Tc(this,a.messages);this.ka=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return gc(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return gc(b,a)})}v(Qc);
|
||||
var Uc={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},Vc=["NONE"],Wc=["PC","PSW"],Xc=[];m=Qc.prototype;
|
||||
m.za=function(a,b,c,d){this.H=b;this.b=c;this.D=a;(a=dc(a,"messages"))&&Tc(this,a);this.oa=Xc;Yc(this,function(a){a:{var b=d.H.P,c=a[0],g=a=0,k=b.length;if(c){a=W(X(d,c));if(-1===a){d.u("invalid address: "+c);break a}g=a>>>d.H.aa;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var n=b[g];n.type==c?l++||d.u("..."):(c=n.type,l=zb[c],n&&d.u(q(n.id)+" %"+q(g<<d.H.aa)+" %%"+q(n.B)+" "+ea(n.Ua)+" "+
|
||||
ea(n.size)+" "+l),c!=Qb&&(c=-1),l=0);a+=d.H.la;g++}}});A(this)};
|
||||
m.ha=function(a,b,c){var d=this;switch(b){case "debugInput":return this.$=this.K[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",gc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.w<d.j.length-1&&(b=d.j[++d.w]):40==a.keyCode&&(0<d.w?b=d.j[--d.w]:(b="",d.w=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.K[b]=c,Ka(c,function(){if(d.$){var a=d.$.value;d.$.value=
|
||||
"";gc(d,a,!0);return!0}return!1}),!0;case "step":return this.K[b]=c,Ka(c,function(a){var b=!1;pb(d,!0)||(ob(d,!0),b=d.Ka(a?1:0),ob(d,!1));return b}),!0}return!1};m.Ta=function(){this.$&&this.$.focus()};function W(a){a=a&&a.B;null==a&&(a=-1);return a}m.ua=function(a,b){var c=255,d=W(a);-1!==d&&(c=Ab(this.H,d),b&&Zc(a,b));return c};m.Va=function(a,b){var c=65535,d=W(a);if(-1!==d){var c=this.H,e=d&c.i,f=(d&c.j)>>>c.aa,c=e!=c.i?c.P[f].xb(e,d):c.P[f++].Sa(e,d)|c.P[f&c.G].Sa(0,d+1)<<8;b&&Zc(a,b)}return c};
|
||||
m.gb=function(a,b,c){var d=W(a);if(-1!==d){var e=this.H;e.P[(d&e.j)>>>e.aa].La(d&e.i,b&255,d);c&&Zc(a,c);F(this.b,!0)}};m.Bb=function(a,b,c){var d=W(a);if(-1!==d){var e=this.H,f=d&e.i,h=(d&e.j)>>>e.aa;f!=e.i?e.P[h].Ab(f,b&65535,d):(e.P[h++].La(f,b&255,d),e.P[h&e.G].La(0,b>>8&255,d+1));c&&Zc(a,c);F(this.b,!0)}};function V(a){return{B:a,ma:!1}}function $c(a){return[a.B,a.ma]}function ad(a){return{B:a[0],ma:a[1]}}
|
||||
function X(a,b,c){var d;c=(c?a.N:a.na).B;if(void 0!==b){d=b=bd(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.G.length;c++){var f=a.G[c].qa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=V(d));break}}if(d=e)return d;c=cd(a,b,void 0)}null!=c&&(d=V(c));return d}function dd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Cb=ed(a,b.yb=c[2]))}function Zc(a,b){null!=a.B&&(a.B+=b||1)}
|
||||
function fd(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.ua(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Tc(a,b){a.F=a;a.Y=a.Db=536870912;a.da=null;a.fa=[];var c=ed(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in C)0<=wa(c,d)&&(a.Y|=C[d],a.u(d+" messages enabled"))}function Yc(a,b){for(var c in C)if(64==C[c]){a.ja[c]=b;break}}
|
||||
function gd(a,b){var c;a=a.toUpperCase();null==b?c=wa(Wc,a):(c=wa(Wc,a.substr(b,2)),0>c&&(c=wa(Wc,a.substr(b,1))));return c}function hd(a,b){var c;if(0<=b){var d=a.b;switch(b){case 12:c=d.g[7];break;case 14:c=d.I&-14|0|(d.ta&255?0:4)|(d.ta&256?1:0)}}return c}
|
||||
function id(a,b){b=bd(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));){e=gd(b,c+1);if(0<=e){d=0;var f=hd(a,e);if(void 0!==f)switch(e){case 12:case 14:d=4}b=b.substr(0,c)+(d?q(f,d):"??")+b.substr(c+1+Wc[e].length)}c++}for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=da(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=X(a,e))?(d=e+' "'+fd(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=X(a,e))?(Zc(d),d=e+' "'+fd(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+q(V(this.b.g[7]).B,4));if(this.Y&1073741824)this.fa.push(a);else if(!this.da||a!=this.da)if(this.da=a,this.Y&-2147483648&&(this.ba(),a+=" (cpu halted)"),this.u(a),this.b){var c=this.b;Ac(c);c.da=0;F(c)}};
|
||||
function Sc(a){var b;if(Jc(a)){if(!a.M||!a.M.length){a.M=Array(1E3);for(b=0;b<a.M.length;b++)a.M[b]=V();a.W=0;a.u("instruction history buffer allocated")}if(!a.J||!a.J.length)for(a.J=Array(256),b=0;b<a.J.length;b++)a.J[b]=[b,0]}else a.M&&a.M.length&&a.u("instruction history buffer freed"),a.W=0,a.M=[],a.J=[]}m.Ca=function(a){if(!jd(this))return!1;this.b.Ca(a);return!0};
|
||||
m.Ka=function(a,b,c){if(!jd(this))return!1;this.L=0;a||Jc(this)&&Kc(this,this.b.g[7],0);try{var d=this.b.Ka(a);0<d&&(this.L+=d,mc(this.b,d,!0),ic(this.b,d),this.R++)}catch(e){"number"!=typeof e&&(this.L=0,rb(this.b,e.stack||e.message))}!1!==c&&F(this.b);this.ia(b||!1);return 0<this.L};m.ba=function(a){this.b&&this.b.ba(a)};m.ia=function(a){void 0===a&&(a=!0);this.N=V(this.b.g[7]);a&&1!=this.U?kd(this):ld(this)};
|
||||
function jd(a){var b;if(b=a.b&&qb(a.b))b=a.b,b.A.X?b=!0:(b.u(b.toString()+" not powered"),b=!1);b&&!pb(a.b)?(a=a.b,a.A.Ga?(a.u(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.sa=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.ra=function(a,b){b&&this.u(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Sc(this);this.R=this.ga=0;this.da=null;this.L=0;this.N=V(this.b.g[7]);this.A.Z=!1;md(this);a||this.ia()};
|
||||
m.save=function(){var a=new G(this);H(a,0,$c(this.N));H(a,1,$c(this.S));H(a,2,[this.j,this.T,this.Y]);H(a,3,this.G);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.N=ad(a[b++]),this.S=ad(a[b++]),this.j=a[b][0],"string"==typeof this.j&&(this.j=[this.j]),this.T=a[b][1],this.Y|=a[b][2]);a[3]&&(this.G=a[3]);return!0};m.start=function(a,b){this.U||this.u("running");this.A.Z=!0;this.Ma=a;this.Na=b};
|
||||
m.stop=function(a,b){if(this.A.Z){this.A.Z=!1;this.L=b-this.Na;if(!this.U){var c="stopped";if(this.L){var d=a-this.Ma,e=0<d?Math.round(1E3*this.L/d):0,c=c+" (";Jc(this)&&(c+=this.R+" opcodes, ",this.ga-=this.R,this.R=0);c+=this.L+" cycles, "+d+" ms, "+e+" hz)"}else nb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.u(c)}this.ia(!0);this.Ta();md(this,this.b.g[7])}};function Jc(a){return 1<a.i.length||!!a.ca}
|
||||
function Kc(a,b,c){var d=a.b;if(0<c&&(a.ca&&!--a.ca||Zb(a,b,1,a.i)))return!0;0<=c&&a.J.length&&(a.R++,b=Ab(a.H,b),null!=b&&(a.J[b][1]++,b=a.M[a.W],b.B=d.g[7],b.ma=!1,++a.W==a.M.length&&(a.W=0)));return!1}function Rc(a){var b,c;a.i=["bp"];if(void 0!==a.O)for(b=1;b<a.O.length;b++){c=a.O[b];var d=a.H;$b(d.P[W(c)>>>d.aa],!1)}a.O=["br"];if(void 0!==a.C)for(b=1;b<a.C.length;b++)c=a.C[b],d=a.H,$b(d.P[W(c)>>>d.aa],!0);a.C=["bw"];a.wa=0}
|
||||
m.xa=function(a,b,c){var d=!0;c||nd(this,a,b,!1,!0);if(a!=this.i){var e=W(b);if(-1===e)this.u("invalid address: "+q(b.B,4)),d=!1;else{var f=this.H;f.P[e>>>f.aa].xa(e&f.i,a==this.C)}}d&&(a.push(b),c?b.ma=!0:(od(this,a,a.length-1,"set"),Sc(this)));return d};function nd(a,b,c,d,e){var f=!1;c=W(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==W(g)&&(!d||g.ma)){f=!0;g.ma||e||od(a,b,h,"cleared");b.splice(h,1);b!=a.i&&(d=a.H,$b(d.P[c>>>d.aa],b==a.C));g.ma||Sc(a);break}}return f}
|
||||
function pd(a,b){for(var c=1;c<b.length;c++)od(a,b,c);return b.length-1}function od(a,b,c,d){c=b[c];a.u(b[0]+" "+q(c.B,4)+(d?" "+d:c.yb?' "'+c.yb+'"':""))}function md(a,b){if(void 0!==b)Zb(a,b,1,a.i,!0),a.U=0;else for(var c=1;c<a.i.length;c++){var d=a.i[c];if(d.ma){if(!nd(a,a.i,d,!0))break;c=0}}}
|
||||
function Zb(a,b,c,d,e){var f=!1;if(!a.wa++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.ma)for(var k=W(g),l=0;l<c;l++)if(b+l==k){var n,f=!0;g.ma&&(nd(a,d,g,!0),e=!0);if(n=g.Cb){for(var f=!1,p=0;p<n.length;p++)if(!qd(a,n[p],!0)){if(n[p].indexOf("if")){f=!0;break}for(var z=p+1;z<n.length&&n[z].indexOf("else");z++)p++;if(z==n.length){f=!0;break}}a.b.A.Z||(f=!0)}if(f){e||od(a,d,h,"hit");break}}}a.wa--;return f}
|
||||
function rd(a,b,c,d){for(var e=V(b.B),f=a.ua(b,1),h=a.oa[f]||[0],g="",k=Vc[h[0]],l=h.length-1,n=0,p,z=1;z<=l;z++){var J="";p=h[z];if(void 0!==p){var E=p&240;if(E){var ga=p&15;ga?n=ga:p|=n;p&61440||(p|=1==z?8192:4096);if(E&32)a:{var J=a,E=p,ga=b,B=" ";switch(E&15){case 1:B=q(J.ua(ga,1),2);break;case 2:B=q(J.ua(ga,1)<<24>>24,4);break;case 3:B=q(J.Va(ga,2),4);break;default:J="imm("+ea(E)+")";break a}E&64?B="["+B+"]":E&16||(B="0x"+B);J=B}else E&16?J=Wc[(p&3840)>>8]:E&128&&(J=(f>>3&7).toString());if(!J||
|
||||
!J.length){g="INVALID";break}0<g.length&&(g+=",");g+=J||"???"}}}f="";h=q(e.B,4)+" ";if(-1!==e.B&&-1!==b.B){do if(f+=q(a.ua(e,1),2),null==e.B)break;while(e.B!=b.B)}h+=oa(f,10);h=h+(p&32768?"*":" ")+oa(k,7);g&&(h+=" "+g);c&&(h=oa(h,40)+";"+c,h=a.b.A.Fa?h+("cycles="+jc(a.b).toString()+" cs="+q(a.b.Pa)):h+(null!=d?"="+d.toString():""));return h}var sd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function td(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 X(a,b,c){var d;if(b){b=Wc(a,b);for(var e=0,f=!1,k=b,h=[],l=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<m.length;){var p=m[e++],q=p.length,p=oa(p);if(!p){f=!0;break}p=Ld(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}h.push(p);if(e==m.length)break;var p=m[e++],w=p.length;l.length&&ld[p]<ld[l[l.length-1]]&&md(h,l,1);l.push(p);b=b.substr(q+w)}md(h,l)&&1==h.length||(f=!0);f?c&&a.b("error parsing '"+k+"' at character "+(k.length-b.length)):(d=h.pop(),c&&Md(a,null,
|
||||
d))}return d}function Wc(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=X(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?n(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=W(a,c[1]),b=b.replace("["+c[1]+"]",d?n(a.Ma(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.S-a.na}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
||||
function Ld(a,b,c,d){var e;void 0!==b?(e=$c(b),0<=e?e=ad(a,e):(e=a.Z[b],void 0===e&&(e=ba(b))),void 0!==e||d||a.b("invalid "+(c?c:"value")+": "+b)):d||a.b("missing "+(c||"value"));return e}
|
||||
function Md(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,k="";if(!f||4<f)f=4;for(var h=0;h<f;h++){k&&(k=","+k);var l=d&255,m=8,p="";void 0===m?m=32:32<m&&(m=32);if(null==l||isNaN(l))for(;0<m--;)p="?"+p;else for(;0<m--;)p=(l&1?"1":"0")+p,l>>=1;k=p+"b"+k;d>>=8}d="0x"+n(c)+" "+c+". ("+k+")"}a.b((null!=b?b+": ":"")+d);return e}function Nd(a,b){if(b)return Md(a,b,a.Z[b]);var c=0;for(b in a.Z)Md(a,b,a.Z[b]),c++;return 0<c}Kc.prototype.lb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Od(a,b,c){var d=[],e=V(b)>>>0;for(b=0;b<a.H.length;b++){var f=a.H[b],k=f.u>>>0,h=f.Hb;if(e>=k&&e<k+h){e=pa(f.kb,[e-k],a.lb);0<=e?Pd(a,b,e,d):c&&(e=~e,Pd(a,b,e-1,d),Pd(a,b,e,d));break}}return d}function Pd(a,b,c,d){var e={},f=a.H[b].kb,k=0,h=null;0<=c&&c<f.length&&(k=f[c][0],h=f[c][1]);h&&(e=a.H[b].oa[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(k);d.push(e.a);d.push(e.c)}
|
||||
function Qd(a,b){if("?"==b)a.b("frequency commands:"),a.b("\tclear\tclear all frequency counts");else{var c,d=0;if(a.J)if("clear"==b){for(c=0;c<a.J.length;c++)a.J[c]=[c,0];a.b("frequency data cleared");d++}else if(void 0!==b)a.b("unknown frequency command: "+b),d++;else{var e=a.J.slice();e.sort(function(a,b){return b[1]-a[1]});for(c=0;c<e.length;c++){var f=e[c][0],k=e[c][1];k&&(a.b((Pc[a.jb[f][0]]+" ").substr(0,5)+" ("+("0x"+n(f,2))+"): "+k+" times"),d++)}}d||a.b("no frequency data available")}}
|
||||
function Rd(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Nd(a)||a.b("no variables"),!0;if(!c[2])return Nd(a,c[1]);if(!c[3])return delete a.Z[c[1]],!0;var d=X(a,c[3]);return void 0!==d?(a.Z[c[1]]=d,!0):!1}a.b("invalid assignment:"+b);return!1}
|
||||
function Sd(a,b,c){var d=null;if(b=W(a,b,!0)){var e=Od(a,b,!0);if(e.length){var f,k;e[0]&&(k="",(f=b.u-e[1])&&(k=" + "+ca(f)),f=e[0]+" ("+n(e[1],4)+")"+k,c&&a.b(f),d=f);4<e.length&&e[4]&&(k="",(f=e[5]-b.u)&&(k=" - "+ca(f)),f=e[4]+" ("+n(e[5],4)+")"+k,c&&a.b(f),d||(d=f))}else c&&a.b("no symbols")}return d}
|
||||
function dd(a,b){var c;if(b&&"?"==b[1])a.b("register commands:"),a.b("\tr\tdump registers"),a.b("\trx [#]\tset flag or register x to [#]");else{var d=a.g;null==c&&(c=!0);if(null!=b&&1<b.length){var e=b[1],f=null,k=e.indexOf("=");if(0<k)f=e.substr(k+1),e=e.substr(0,k);else if(2<b.length)f=b[2];else{a.b("missing value for "+b[1]);return}var k=!1,h=X(a,f);if(void 0!==h)switch(k=!0,e.toUpperCase()){case "A":d.Ga=h&255;break;case "B":d.Ra=h&255;break;case "BC":d.Ra=h>>8&255;case "C":d.$a=h&255;break;case "D":d.Sa=
|
||||
h&255;break;case "DE":d.Sa=h>>8&255;case "E":d.ab=h&255;break;case "H":d.Ta=h&255;break;case "HL":d.Ta=h>>8&255;case "L":d.bb=h&255;break;case "SP":d.Ua=h&65535;break;case "PC":d.R=h&65535;a.M=P(d.R);break;case "PS":Ac(d,h);break;case "PSW":Ac(d,h&255|d.ha&-256);d.Ga=h>>8;break;case "CF":d.da=h?d.da|256:d.da&255;break;case "ZF":d.da=h?d.da&-256:d.da|255;break;case "SF":h?d.ia&128||(d.ia^=192):d.ia&128&&(d.ia^=192);break;case "IF":d.ha=h?d.ha|512:d.ha&-513;break;default:a.b("unknown register: "+e);
|
||||
return}if(!k){a.b("invalid value: "+f);return}L(d);a.b("updated registers:")}a.b("no regs");c&&(a.M=P(d.R),ed(a,n(a.M.u,4)))}}function Td(a,b){b=oa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.b(bd(a,c[2])):X(a,b,!0)}function Ud(a,b,c){var d="t"!=b;c=Ld(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Fa(c,function(){return ib(a,!0)&&a.Ha(e,d,!1)},function(){L(a.g);ib(a,!1)})}
|
||||
function ed(a,b,c,d){if(b=W(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=W(a,c,!0);if(!d||d.u<b.u)return;e=d.u-b.u;if(256<e){a.b("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=jb(a,!1)||a.O?a.K:null;var k=null!=f?"cycles":null,h=Od(a,b),l=b.u;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.b(m)}h[3]&&(k=h[3],f=null);f=kd(a,b,k,f);a.b(f);a.M=b;e-=b.u-l;c++}}}
|
||||
function Yc(a,b,c,d){if(c)if(b){0>a.D&&a.B.length&&(a.D=0);if(0>a.D||b!=a.B[a.D])a.B.splice(0,0,b),a.D=0;a.D--}else a.V?b="end":b=a.B[a.D+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 k=b.charAt(f);if('"'==k||"'"==k)e?k==e&&(e=null):e=k;else if(k==d&&!e||!k)a.push(oa(b.substring(c,f))),c=f+1}}return a}
|
||||
function jd(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.b(">> "+b):(a.V&&(a.b("ended assemble at "+n(a.T.u,4)),a.M=a.T,a.V=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ka=null;if(kb(a)&&0<b.length){a.V&&(b="a "+n(a.T.u,4)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var k=f[0],h=k.charAt(0),l=1;l<k.length;l++){var m=k.charAt(l);if("?"==h||"r"==h||"a">m||"z"<m){f[0]=k.substr(l);f.unshift(k.substr(0,l));break}}switch(f[0].charAt(0)){case "a":var p=W(a,f[1],!0);if(p)if(a.T=
|
||||
p,void 0===f[2])a.b("begin assemble at "+n(p.u,4)),a.V=!0,L(a.g);else{var q;a.b("not supported yet");q=[];if(q.length){for(var w=0;w<q.length;w++)a.Va(p,q[w],1);a.b(kd(a,a.T))}}break;case "b":a:{var B=f[0],A=f[1],Y=b;if("?"==A)a.b("breakpoint commands:"),a.b("\tbp [a]\tset exec breakpoint at addr [a]"),a.b("\tbr [a]\tset read breakpoint at addr [a]"),a.b("\tbw [a]\tset write breakpoint at addr [a]"),a.b("\tbc [a]\tclear breakpoint at addr [a]"),a.b("\tbl\tlist all breakpoints"),a.b("\tbn [n]\tbreak after [n] instruction(s)");
|
||||
else{var y=B.charAt(1);if("l"==y){var sa=0,sa=sa+id(a,a.w),sa=sa+id(a,a.N);(sa+=id(a,a.F))||a.b("no breakpoints")}else if("n"==y)a.ja=Ld(a,A),a.b("break after "+a.ja+" instruction(s)");else if(void 0===A)a.b("missing breakpoint address");else{var H=P();if("*"!=A&&(H=W(a,A,!0),!H))break a;"c"==y?null==H.u?(Lc(a),a.b("all breakpoints cleared")):gd(a,a.w,H)||gd(a,a.N,H)||gd(a,a.F,H)||a.b("breakpoint missing: "+n(H.u,4)):null!=H.u&&(Xc(a,H,Y),"p"==y?a.ta(a.w,H):"r"==y?a.ta(a.N,H):"w"==y?a.ta(a.F,H):a.b("unknown breakpoint command: "+
|
||||
y))}}}break;case "c":a.ua&&(a.ua.value="");break;case "d":a:{var ta,ua=f[0],Q=f[1],fa=f[2],ne=f[3];if("?"==Q){var R="";for(ta in J)a.sa[ta]&&(R&&(R+=","),R+=ta);R+=",state,symbols";a.b("dump memory commands:");a.b("\tdb [a] [#] dump # bytes at address a");a.b("\tdw [a] [#] dump # words at address a");a.b("\tdd [a] [#] dump # dwords at address a");a.b("\tdh [#] [#] dump # instructions from history");R.length&&a.b("dump extension commands:\n\t"+R)}else if("state"==Q){var nd=Vd(a.i,!0);"console"==
|
||||
fa?console.log(nd):(a.ua&&(a.ua.value=""),a.b(nd))}else if("symbols"==Q)for(var ec=0;ec<a.H.length;ec++){var fc=a.H[ec],va;for(va in fc.oa)if("."!=va.charAt(0)){var od=fc.oa[va].o;if(void 0!==od){var pd=fc.oa[va].l;pd&&(va=pd);a.b(n(od,4)+" "+va)}}}else{if("d"==ua){for(ta in J)if(f[1]==ta){var qd=a.sa[ta];qd?(f.shift(),f.shift(),qd(f)):a.b("no dump registered for "+Q);break a}Q||(ua=a.Gb||"db")}else a.Gb=ua;if("dh"==ua){var rd=Q,sd=fa,td="",ud=0,C=a.$,S=a.L;if(S.length){var I=+rd||a.qb,wa=+sd||10;
|
||||
isNaN(I)?I=wa:td="more ";I>S.length&&(a.b("note: only "+S.length+" available"),I=S.length);C-=I;0>C&&(null==S[S.length-1].u?(I=C+I,C=0):C+=S.length);var gc=[];"call"==sd&&(wa=1E5,gc=["CALL"]);for(void 0!==rd&&a.b(I+" instructions earlier:");0<wa&&C!=a.$;){var vd=S[C++];if(null==vd.u)break;var Sa=P(vd.u),oe=I--,wd=kd(a,Sa,"history",oe);(!gc.length||0<=wd.indexOf(gc[0]))&&a.b(wd);Sa.cb&&(C+=Sa.cb,wa-=Sa.cb,I-=Sa.cb);C>=S.length&&(C=0);a.qb=I;ud++;wa--}}ud||(a.b("no "+td+"history available"),a.qb=void 0)}else{var sb=
|
||||
W(a,Q);if(sb){var tb=0;fa&&("l"==fa.charAt(0)&&(fa=fa.substr(1)||ne),tb=Ld(a,fa)>>>0,65536<tb&&(tb=65536));for(var ga="",ub="dd"==ua?4:"dw"==ua?2:1,vb=ub*tb||128,pe=vb+15>>4||1;pe--&&0<vb;){var wb=0,hc=0,Ta,Ua="",ic="",Q=n(sb.u,4);for(Ta=16;0<Ta&&0<vb;Ta--){var xb=a.ca(sb,1),wb=wb|xb<<(hc++<<3);hc==ub&&(Ua+=n(wb,2*ub),Ua+=1==ub?9==Ta?"-":" ":" ",wb=hc=0);ic+=32<=xb&&128>xb?String.fromCharCode(xb):".";vb--}ga&&(ga+="\n");ga+=Q+" "+Ua+(0==Ta?" "+ic:"")}ga&&a.b(ga);a.mb=sb}}}}break;case "e":if("else"==
|
||||
f[0])break;var yb=1,xd=255,yd=a.ca,zd=a.Va;"ew"==f[0]&&(yb=2,xd=65535,yd=a.Ma,zd=a.xb);var Ad=yb<<1,Bd=f[1];if(null==Bd)a.b("edit memory commands:"),a.b("\teb [a] [...] edit bytes at address a"),a.b("\tew [a] [...] edit words at address a");else{var zb=W(a,Bd);if(zb)for(var Ab=2;Ab<f.length;Ab++){var Va=X(a,f[Ab]);if(void 0===Va){a.b("unrecognized value: "+f[Ab]);break}Va&~xd&&a.b("warning: "+n(Va)+" exceeds "+yb+"-byte value");var qe=yd.call(a,zb);a.b("changing "+n(zb.u,4)+" from 0x"+n(qe,Ad)+
|
||||
" to 0x"+n(Va,Ad));zd.call(a,zb,Va,yb)}}break;case "f":Qd(a,f[1]);break;case "g":a:{var Cd=f[1],re=b;if(void 0!==Cd){var jc=W(a,Cd,!0);if(!jc)break a;Xc(a,jc,re);a.ta(a.w,jc,!0)}a.ya(!0)||c||a.b("cpu busy or unavailable, run command ignored")}break;case "h":a:{var kc;if(a.j.X)kc="halting",a.Y();else{if(jb(a,!0))break a;kc="already halted"}c||a.b(kc)}break;case "i":if("if"==f[0]){var lc;var Wa=b.substr(2),Wa=oa(Wa);X(a,Wa)?(c||a.b("true: "+Wa),lc=!0):(c||a.b("false: "+Wa),lc=!1);lc||(d=!1);break}if("int"==
|
||||
f[0]){var Bb;var se=f[1];if(a.g.ha&512){var mc=X(a,se);if(null==mc)Bb=!1;else{a.b("requesting interrupt level "+mc);var ha=a.g;ha.B|=1<<mc;ha.ha&512&&(ha.w-=ha.g,ha.g=0);Bb=!0}}else a.b("interrupts disabled (use rif=1 to enable)"),Bb=!1;Bb||(d=!1);break}break;case "k":var te=f[0];if("?"==f[1])a.b("stack trace commands:"),a.b("\tk\tshow frame addresses"),a.b("\tks\tshow symbol information");else{var nc=0,Dd=P(),Xa=P(a.g.Ua);for(a.b("stack trace for "+n(Xa.u,4));10>nc;){for(var ia=null,ue=256;65536>
|
||||
Xa.u>>>0;){Dd.u=a.Ma(Xa,2);if(null==Xa.u||!ue--)break;for(var ve=a,Cb=Dd,Ed=null,Ya=Cb.u,Fd=Ya,oc=1;6>=oc&&Ya;oc++){if(2<oc){Cb.u=Ya;var Db=kd(ve,Cb);if(0<=Db.indexOf("CALL")){var Gd=Db.indexOf(" ");if(Ya+(Db.indexOf(" ",Gd+1)-Gd-1)/2==Fd){Ed=Db;break}}}Ya--}Cb.u=Fd;if(ia=Ed)break}if(!ia||null==ia)break;var Hd=null;if("ks"==te){var Id=ia.match(/[0-9A-F]+$/);Id&&(Hd=Sd(a,Id[0]))}ia=na(ia,50)+" ;"+(Hd||"stack="+n(Xa.u,4));a.b(ia);nc++}nc||a.b("no return addresses found")}break;case "l":if("ln"==f[0]){Sd(a,
|
||||
f[1],!0);break}break;case "m":a:{var T,U=null,u=f[1];"?"==u&&(u=void 0);if(void 0!==u){var Z=0;if("all"==u)Z=1878917119,u=null;else if("on"==u)U=!0,u=null;else if("off"==u)U=!1,u=null;else{"keys"==u&&(u="key");"kbd"==u&&(u="keyboard");for(T in J)if(u==T){Z=J[T];U=!!(a.W&Z);break}if(!Z){a.b("unknown message category: "+u);break a}}if(Z)if("on"==f[2])a.W|=Z,U=!0;else if("off"==f[2]&&(a.W&=~Z,U=!1,1073741824==Z)){for(var pc=0;pc<a.ma.length;pc++)a.b(a.ma[pc]);a.ma=[]}}var we=0,aa="";for(T in J)if(!u||
|
||||
u==T){var xe=!!(a.W&J[T]);if(null===U||U==xe)aa&&(aa+=","),++we%10||(aa+="\n\t"),"key"==T&&(T="keys"),aa+=T}void 0===u&&a.b("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.b((null!==U?U?"messages on: ":"messages off: ":"message categories:\n\t")+(aa||"none"));Mc(a)}break;case "p":if("print"==f[0]){Td(a,b.substr(5));break}var Jd="pr"==f[0]?1:0,ye=1+Jd;if(a.O)a.b("step in progress");else{var qc=P(a.g.R);switch(a.ca(qc)){case 205:a.O=ye,Tc(qc,3)}a.O?(a.ta(a.w,qc,!0),a.ya()||
|
||||
(a.i&&a.i.Wa(),a.O=0)):Ud(a,Jd?"tr":"t")}break;case "r":if("reset"==b){a.i&&a.i.reset();break}dd(a,f);break;case "s":a:switch(f[1]){case "cs":var Za;void 0!==f[3]&&(Za=+f[3]);switch(f[2]){case "int":a.g.Da=Za;break;case "start":a.g.Oa=Za;break;case "stop":a.g.Ea=Za;break;default:a.b("unknown cs option");break a}void 0!==Za&&ac(a.g);a.b("checksums "+(a.g.j.Aa?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(uc(a.g,+f[2])||a.b("warning: using 1x multiplier, previous target not reached"));a.b("target speed: "+
|
||||
(a.g.wa.toFixed(2)+"Mhz")+" ("+a.g.xa+"x)");break;case "?":a.b("debugger options:");a.b("\tcs int #\tset checksum cycle interval to #");a.b("\tcs start #\tset checksum cycle start count to #");a.b("\tcs stop #\tset checksum cycle stop count to #");a.b("\tsp #\t\tset speed multiplier to #");break;default:f[1]&&a.b("unknown option: "+f[1])}break;case "t":Ud(a,f[0],f[1]);break;case "u":ed(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Rd(a,b.substr(3))||(d=!1);break}a.b("PDP11 version 1.24.2 ("+a.g.ub+
|
||||
",RELEASE"+(mb?",TYPEDARRAYS":",LONGARRAYS")+")");a.b(window?window.navigator.userAgent:"");break;case "?":if(f[1]){Td(a,b.substr(1));break}var $a="commands:",rc;for(rc in Oc)$a+="\n"+na(rc,9)+Oc[rc];Dc(a)||($a+="\nnote: frequency/history disabled if no exec breakpoints");a.b($a);break;default:a.b("unknown command: "+b),d=!1}}}catch(Kd){a.b("debugger error: "+(Kd.stack||Kd.message)),d=!1}return d}function bc(a,b,c){b=Yc(a,b,c);for(var d in b)if(!jd(a,b[d]))return!1;return!0}
|
||||
La(function(){for(var a=F(document,"pdp11","debugger"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Kc(d);gb(d,c)}});
|
||||
function Wd(a,b,c){v.call(this,"Computer",a,Wd,67108864);this.j.U=!1;Xd(this,b);this.M=Zb(this,"autoPower",a);this.B=0;this.V=a.busWidth||a.buswidth;this.i=Yd;this.K=null;this.H=this.S=!1;this.Z=Zb(this,"url")||"";(Math.random()+.1).toString(36);this.w=Zd(this);if(this.g=fb("CPU",this.id)){this.C=fb("Debugger",this.id);this.A=new pb({id:this.nb+".bus",busWidth:this.V},this.g,this.C);var d,e=D(this.id);if((this.D=fb("Panel",this.id))&&this.D.ua)for(b=0;b<e.length;b++)d=e[b],d.aa=this.D.aa,d.b=this.D.b,
|
||||
d.ua=this.D.ua;this.b("PDP11 v1.24.2\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.va&&d.va(this,this.A,this.g,this.C);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.i=parseInt(d,10));var f;if(a=Zb(this,"state")||(f=!0,a.state))b=this.N=a,f||(this.H=!0,this.i=Yd),this.i&&(this.L=new M(this,"1.24.2"),$d(this.L)?b=null:delete this.L);!b&&this.i&&(b=ae(this))&&(this.H=!0);if(b){var k=
|
||||
this;ya(b,null,!0,function(a,b,c){c?(k.J=null,k.H=!1,k.aa("Unable to load machine state from server (error "+c+(b?": "+oa(b):"")+")")):(k.K=b,k.S=!0);G(k)})}else G(this);this.G.power||(this.M=!0);!c&&this.M&&be(this,this.Pa)}else r("Unable to find CPU component")}z(Wd);var Yd=0;function Xd(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.T=b}
|
||||
function Zb(a,b,c){var d=b.toLowerCase(),d=Qa[b]||Qa[d];void 0===d&&a.T&&(d=a.T[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function be(a,b,c){for(var d=D(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!kb(f)){kb(f,function(){be(a,b,c)});return}}b.call(a,c)}
|
||||
function ce(a,b){var c=new M(a,"1.24.2","validate");if($d(c)&&de(c)){var d=ee(c,"timestamp"),e=b?ee(b,"timestamp"):"unknown";d!=e&&(a.aa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}g=Wd.prototype;
|
||||
g.Pa=function(a){void 0===a&&(a=this.i||(this.K?1:Yd));if(!this.B){this.B++;var b=!1,c=!1;this.O=!1;var d=this.L||new M(this,"1.24.2");if(-1==a)b=!0;else if(a>Yd){if($d(d,this.K)){this.F=new M(this,"1.24.2","failsafe");$d(this.F)&&(fe(this,d),a=2,ge(this.F));N(this.F,"timestamp",ra());he(this.F);var e=this.i&&!this.H;if(1==a||za("Click OK to restore the previous PDP11 machine state, or CANCEL to reset the machine.")){if(c=de(d)){var f=ee(d,"code"),k=ee(d,"data");f&&("ok"==f?$d(d,k):("error"==f&&"no machine state"!=
|
||||
k?(this.aa("Error: "+k),"unable to verify user"==k&&(Da("user",""),this.w=null)):this.b(f+": "+k),ge(d),$d(d)?(c=de(d),e=!0):c=!1))}e&&ce(this,c?d:null)}else 2==a&&d.clear()}else ce(this);delete this.K;delete this.L}e=D(this.id);for(f=0;f<e.length;f++)k=e[f],k!==this&&k!=this.g&&(c=ie(this,k,d,b,c));b=[d,a,c];-1!=a?be(this,this.pb,b):this.pb(b)}};
|
||||
function ie(a,b,c,d,e){if(!b.j.U){b.j.U=!0;if(b.qa){var f=null;e&&((f=ee(c,b.id))||(f=ee(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.qa(f,d)&&f&&(r("Unable to restore state for "+b.type),a.N&&!a.S?(c.clear(),a.i=Yd,window&&window.location.reload()):a.O=!0,b.qa(null),e=!1)}if(!d&&b.ib)for(a=b.ib.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
g.pb=function(a){var b=a[0],c=0>a[1];a=a[2];this.$=!0;this.j.U=!0;var d=this.G.power;d&&(d.textContent="Shutdown");this.g&&(ie(this,this.g,b,c,a),cc(this.g));this.O&&(fe(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.B=0};
|
||||
function fe(a,b){if(za("There may be a problem with your PDP11 machine.\n\nTo help us diagnose it, click OK to send this PDP11 machine state to http://www.pcjs.org.")){var c=a.w||"",d=b.toString(),e={app:"PDP11",ver:"1.24.2"};e.url=a.Z;e.user=c;e.type="bug";e.data=d;ya("http://www.pcjs.org/api/v1/report",e,!0)}}
|
||||
function Vd(a,b,c){var d,e="none";if(a.B)return null;a.B--;var f=new M(a,"1.24.2"),k=new M(a,"1.24.2","validate"),h=ra();N(k,"timestamp",h);N(f,"timestamp",h);N(f,"version","1.24.2");N(f,"url",window?window.location.href:null);N(f,"browser",window?window.navigator.userAgent:"");a.g&&a.g.pa&&(c&&a.g.Y(),d=a.g.pa(b,c),"object"===typeof d&&N(f,a.g.id,d),c&&(a.g.j.U=!1,!1===d&&(e=null)));for(var h=D(a.id),l=0;l<h.length;l++){var m=h[l];m.j.U&&(m.pa&&(d=m.pa(b,c),"object"===typeof d&&N(f,m.id,d)),c&&(m.j.U=
|
||||
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.w&&je(a,a.w,f.toString()),he(k)&&he(f)||(e=null,d=h=!0)):a.i&&(d=!0,h=3==a.i),d&&f.clear(h)):e=f.toString());c&&(a.j.U=!1,b=a.G.power)&&(b.textContent="Power");a.B=0;return e}g.reset=function(){this.A&&this.A.reset&&(this.C&&hb(this,0)&&this.C.message("Resetting "+this.A.type,void 0),this.A.reset());for(var a=D(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.A&&c.reset&&(this.C&&hb(this,0)&&this.C.message("Resetting "+c.type,void 0),c.reset())}};
|
||||
g.start=function(a,b){for(var c=D(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};g.stop=function(a,b){for(var c=D(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||
g.ba=function(a,b,c){var d=this;switch(b){case "power":return this.G[b]=c,c.onclick=function(){d.B||(d.j.U?Vd(d,!1,!0):be(d,d.Pa))},!0;case "reset":return this.G[b]=c,c.onclick=function(){if(d.j.U&&!d.B)if(d.i&&!d.J){var a=za("Click OK to save changes to this PDP11 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Vd(d,a,!0);!a&&d.N?window&&window.location.reload():d.Pa(Yd)}else d.reset(),d.g&&cc(d.g)},!0;case "save":if(ja()){c.parentNode.removeChild(c);break}this.G[b]=c;c.onclick=
|
||||
function(){var a=Zd(d,!0);if(a){var b=!!(d.i&&!d.J||d.N),c=Vd(d,b);b?je(d,a,c):d.aa("Resume disabled, machine state not saved")}};return!0}return!1};function Zd(a,b){var c=a.w;c||(c=Ca("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=ke(a,c))||a.aa("The user ID is invalid."))):b&&a.aa("Browser local storage is not available"));return c}
|
||||
function ke(a,b){a.w=null;var c=ya(ka()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(Da("user",c.data),a.w=c.data)}catch(e){r(e.message+" ("+d+")")}return a.w}function ae(a){var b=null;a.w&&(b=ka()+"/api/v1/user?req=load&user="+a.w+"&state="+le(a,"1.24.2"));return b}
|
||||
function je(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=le(a,"1.24.2");d.data=c;b=ya(ka()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.aa("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.aa(c),Da("user",""),a.w=null)}}g.Wa=function(){};
|
||||
g.ea=function(a){this.g&&this.g.ea(a);this.D&&this.D.ea(a)};La(function(){for(var a=F(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=E(c),c=F(c,"pdp11","computer"),e=0;e<c.length;e++){var f=c[e],k=E(f),k=new Wd(k,d,!0);gb(k,f);k.M&&be(k,k.Pa)}});t.show.push(function(){for(var a=F(document,"pdp11","computer"),b=0;b<a.length;b++){var c=E(a[b]);(c=fb("Computer",c.id))&&c.$&&!c.j.U&&c.Pa(-1)}});
|
||||
t.exit.push(function(){for(var a=F(document,"pdp11","computer"),b=0;b<a.length;b++){var c=E(a[b]);(c=fb("Computer",c.id))&&c.j.U&&Vd(c,!(!c.i||c.J),!0)}});function M(a,b,c){this.id=a.id;this.key=le(a,b,c);this.C=a.C;ge(this,a.Fb)}function le(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}
|
||||
M.prototype={constructor:M,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){ge(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 ge(a,b){a[a.id]={};b&&N(a,"parms",b);a.g=!1}function he(a){var b=!0;if(Ba()){var c=JSON.stringify(a[a.id]);Da(a.key,c)||(r("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function de(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){r(c.message||c),b=!1}return b}function $d(a,b){return b?(a[a.id]=b,a.g=!0):a.g?!0:Ba()&&(b=Ca(a.key))?(a[a.id]=b,a.g=!0):!1}function ee(a,b){return a[a.id][b]||null}function N(a,b,c){try{a[a.id][b]=c}catch(d){}}var me=0;
|
||||
function ze(a,b,c,d,e,f){e("Loading "+a+"...");ya(a,null,!0,function(k,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),f(h,null)):Ae(h,a,b,c,d,e,f)})}
|
||||
function Ae(a,b,c,d,e,f,k){function h(a,f){if(f)k(f,null);else{if(c){eb(c,b,a);var h=b;h&&0>h.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(h=window.location.pathname+h);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+h+'"}';"object"==typeof resources&&(h=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(h?' url="'+h+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pdp11$2"));
|
||||
h=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(h=new window.ActiveXObject("Microsoft.XMLDOM"),h.async=!1,h.loadXML(a)):h=(new window.DOMParser).parseFromString(a,"text/xml")}catch(q){h=null,a=q.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,h)}}a?e?Be(a,f,h):h(a,null):k("no data"+(b?" for file: "+b:""),null)}
|
||||
function Be(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");ya(e,null,!0,function(f,k,h){if(h||!k)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=k.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(f);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=l&&(k=k.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}k=k.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],k);Be(a,b,c)}})}else c(a,null)}
|
||||
function Ce(a,b,c,d){function e(a){if(void 0===h){var b=k&&F(k,"machine-warning");h=b&&b[0]||k}h&&(h.innerHTML=ma(a))}function f(a){e("Error: "+a);l&&(--me||Na(!0));l=!1}var k,h,l=!0;me++;db[a]={};try{if(k=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=m:q.appendChild(document.createTextNode(m));p.appendChild(q)}c||
|
||||
(c="/versions/pdp11/1.24.2/components.xsl");m=function(d,h){h?ze(c,null,null,!1,e,function(d,l){if(l)if(eb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=h.transformNode(l);m?(k.outerHTML=m,--me||Na(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(l),(m=m.transformToFragment(h,document))?k.parentNode?(k.parentNode.replaceChild(m,k),--me||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)?ze(b,a,d,!0,e,m):Ae(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(w){f(w.message)}return l}window.embedPDP11=function(a,b,c,d){Na(!1);return Ce(a,b,c,d)};window.enableEvents=Na;window.sendEvent=Oa;})();
|
||||
function cd(a,b,c){var d;if(b){b=bd(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var n=l[e++],p=n.length,n=pa(n);if(!n){f=!0;break}n=ud(a,n,null,!1===c);if(void 0===n){f=!0;c=!1;break}g.push(n);if(e==l.length)break;var n=l[e++],z=n.length;k.length&&sd[n]<sd[k[k.length-1]]&&td(g,k,1);k.push(n);b=b.substr(p+z)}td(g,k)&&1==g.length||(f=!0);f?c&&a.u("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&vd(a,null,
|
||||
d))}return d}function bd(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=cd(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?q(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=X(a,c[1]),b=b.replace("["+c[1]+"]",d?q(a.Va(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.R-a.ga}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
||||
function ud(a,b,c,d){var e;void 0!==b?(e=gd(b),0<=e?e=hd(a,e):(e=a.V[b],void 0===e&&(e=da(b))),void 0!==e||d||a.u("invalid "+(c?c:"value")+": "+b)):d||a.u("missing "+(c||"value"));return e}
|
||||
function vd(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,n="";void 0===l?l=32:32<l&&(l=32);if(null==k||isNaN(k))for(;0<l--;)n="?"+n;else for(;0<l--;)n=(k&1?"1":"0")+n,k>>=1;h=n+"b"+h;d>>=8}d="0x"+q(c)+" "+c+". ("+h+")"}a.u((null!=b?b+": ":"")+d);return e}function Ud(a,b){if(b)return vd(a,b,a.V[b]);var c=0;for(b in a.V)vd(a,b,a.V[b]),c++;return 0<c}Qc.prototype.pa=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Vd(a,b,c){var d=[],e=W(b)>>>0;for(b=0;b<a.G.length;b++){var f=a.G[b],h=f.B>>>0,g=f.Gb;if(e>=h&&e<h+g){e=ta(f.hb,[e-h],a.pa);0<=e?Wd(a,b,e,d):c&&(e=~e,Wd(a,b,e-1,d),Wd(a,b,e,d));break}}return d}function Wd(a,b,c,d){var e={},f=a.G[b].hb,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.G[b].qa[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
|
||||
function Xd(a,b){if("?"==b)a.u("frequency commands:"),a.u("\tclear\tclear all frequency counts");else{var c,d=0;if(a.J)if("clear"==b){for(c=0;c<a.J.length;c++)a.J[c]=[c,0];a.u("frequency data cleared");d++}else if(void 0!==b)a.u("unknown frequency command: "+b),d++;else{var e=a.J.slice();e.sort(function(a,b){return b[1]-a[1]});for(c=0;c<e.length;c++){var f=e[c][0],h=e[c][1];h&&(a.u((Vc[a.oa[f][0]]+" ").substr(0,5)+" ("+("0x"+q(f,2))+"): "+h+" times"),d++)}}d||a.u("no frequency data available")}}
|
||||
function Yd(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ud(a)||a.u("no variables"),!0;if(!c[2])return Ud(a,c[1]);if(!c[3])return delete a.V[c[1]],!0;var d=cd(a,c[3]);return void 0!==d?(a.V[c[1]]=d,!0):!1}a.u("invalid assignment:"+b);return!1}
|
||||
function Zd(a,b,c){var d=null;if(b=X(a,b,!0)){var e=Vd(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.B-e[1])&&(h=" + "+ea(f)),f=e[0]+" ("+q(e[1],4)+")"+h,c&&a.u(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.B)&&(h=" - "+ea(f)),f=e[4]+" ("+q(e[5],4)+")"+h,c&&a.u(f),d||(d=f))}else c&&a.u("no symbols")}return d}
|
||||
function kd(a,b){var c;if(b&&"?"==b[1])a.u("register commands:"),a.u("\tr\tdump registers"),a.u("\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.u("missing value for "+b[1]);return}var h=!1,g=cd(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "PC":d.g[7]=g;a.N=V(d.g[7]);break;case "CF":d.ta=g?d.ta|256:d.ta&255;break;case "ZF":d.ta=g?d.ta&
|
||||
-256:d.ta|255;break;case "SF":break;default:a.u("unknown register: "+e);return}if(!h){a.u("invalid value: "+f);return}F(d);a.u("updated registers:")}a.u("no regs");c&&(a.N=V(d.g[7]),ld(a,q(a.N.B,4)))}}function $d(a,b){b=pa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.u(id(a,c[2])):cd(a,b,!0)}function ae(a,b,c){var d="t"!=b;c=ud(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ja(c,function(){return ob(a,!0)&&a.Ka(e,d,!1)},function(){F(a.b);ob(a,!1)})}
|
||||
function ld(a,b,c,d){if(b=X(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=X(a,c,!0);if(!d||d.B<b.B)return;e=d.B-b.B;if(256<e){a.u("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=pb(a,!1)||a.U?a.L:null;var h=null!=f?"cycles":null,g=Vd(a,b),k=b.B;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.u(l)}g[3]&&(h=g[3],f=null);f=rd(a,b,h,f);a.u(f);a.N=b;e-=b.B-k;c++}}}
|
||||
function ed(a,b,c,d){if(c)if(b){0>a.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.T?b="end":b=a.j[a.w+1];a=[];if(b){b=b.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(pa(b.substring(c,f))),c=f+1}}return a}
|
||||
function qd(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(">> "+b):(a.T&&(a.u("ended assemble at "+q(a.S.B,4)),a.N=a.S,a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.da=null;if(qb(a)&&0<b.length){a.T&&(b="a "+q(a.S.B,4)+" "+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 n=X(a,f[1],!0);if(n)if(a.S=
|
||||
n,void 0===f[2])a.u("begin assemble at "+q(n.B,4)),a.T=!0,F(a.b);else{var p;a.u("not supported yet");p=[];if(p.length){for(var z=0;z<p.length;z++)a.gb(n,p[z],1);a.u(rd(a,a.S))}}break;case "b":a:{var J=f[0],E=f[1],ga=b;if("?"==E)a.u("breakpoint commands:"),a.u("\tbp [a]\tset exec breakpoint at addr [a]"),a.u("\tbr [a]\tset read breakpoint at addr [a]"),a.u("\tbw [a]\tset write breakpoint at addr [a]"),a.u("\tbc [a]\tclear breakpoint at addr [a]"),a.u("\tbl\tlist all breakpoints"),a.u("\tbn [n]\tbreak after [n] instruction(s)");
|
||||
else{var B=J.charAt(1);if("l"==B){var Aa=0,Aa=Aa+pd(a,a.i),Aa=Aa+pd(a,a.O);(Aa+=pd(a,a.C))||a.u("no breakpoints")}else if("n"==B)a.ca=ud(a,E),a.u("break after "+a.ca+" instruction(s)");else if(void 0===E)a.u("missing breakpoint address");else{var P=V();if("*"!=E&&(P=X(a,E,!0),!P))break a;"c"==B?null==P.B?(Rc(a),a.u("all breakpoints cleared")):nd(a,a.i,P)||nd(a,a.O,P)||nd(a,a.C,P)||a.u("breakpoint missing: "+q(P.B,4)):null!=P.B&&(dd(a,P,ga),"p"==B?a.xa(a.i,P):"r"==B?a.xa(a.O,P):"w"==B?a.xa(a.C,P):
|
||||
a.u("unknown breakpoint command: "+B))}}}break;case "c":a.ya&&(a.ya.value="");break;case "d":a:{var Ba,Ca=f[0],Y=f[1],qa=f[2],ue=f[3];if("?"==Y){var Z="";for(Ba in C)a.ja[Ba]&&(Z&&(Z+=","),Z+=Ba);Z+=",state,symbols";a.u("dump memory commands:");a.u("\tdb [a] [#] dump # bytes at address a");a.u("\tdw [a] [#] dump # words at address a");a.u("\tdd [a] [#] dump # dwords at address a");a.u("\tdh [#] [#] dump # instructions from history");Z.length&&a.u("dump extension commands:\n\t"+Z)}else if("state"==
|
||||
Y){var wd=be(a.D,!0);"console"==qa?console.log(wd):(a.ya&&(a.ya.value=""),a.u(wd))}else if("symbols"==Y)for(var oc=0;oc<a.G.length;oc++){var pc=a.G[oc],Da;for(Da in pc.qa)if("."!=Da.charAt(0)){var xd=pc.qa[Da].o;if(void 0!==xd){var yd=pc.qa[Da].l;yd&&(Da=yd);a.u(q(xd,4)+" "+Da)}}}else{if("d"==Ca){for(Ba in C)if(f[1]==Ba){var zd=a.ja[Ba];zd?(f.shift(),f.shift(),zd(f)):a.u("no dump registered for "+Y);break a}Y||(Ca=a.Oa||"db")}else a.Oa=Ca;if("dh"==Ca){var Ad=Y,Bd=qa,Cd="",Dd=0,K=a.W,aa=a.M;if(aa.length){var Q=
|
||||
+Ad||a.Da,Ea=+Bd||10;isNaN(Q)?Q=Ea:Cd="more ";Q>aa.length&&(a.u("note: only "+aa.length+" available"),Q=aa.length);K-=Q;0>K&&(null==aa[aa.length-1].B?(Q=K+Q,K=0):K+=aa.length);var qc=[];"call"==Bd&&(Ea=1E5,qc=["CALL"]);for(void 0!==Ad&&a.u(Q+" instructions earlier:");0<Ea&&K!=a.W;){var Ed=aa[K++];if(null==Ed.B)break;var db=V(Ed.B),ve=Q--,Fd=rd(a,db,"history",ve);(!qc.length||0<=Fd.indexOf(qc[0]))&&a.u(Fd);db.Ya&&(K+=db.Ya,Ea-=db.Ya,Q-=db.Ya);K>=aa.length&&(K=0);a.Da=Q;Dd++;Ea--}}Dd||(a.u("no "+Cd+
|
||||
"history available"),a.Da=void 0)}else{var Cb=X(a,Y);if(Cb){var Db=0;qa&&("l"==qa.charAt(0)&&(qa=qa.substr(1)||ue),Db=ud(a,qa)>>>0,65536<Db&&(Db=65536));for(var ra="",Eb="dd"==Ca?4:"dw"==Ca?2:1,Fb=Eb*Db||128,we=Fb+15>>4||1;we--&&0<Fb;){var Gb=0,rc=0,eb,fb="",sc="",Y=q(Cb.B,4);for(eb=16;0<eb&&0<Fb;eb--){var Hb=a.ua(Cb,1),Gb=Gb|Hb<<(rc++<<3);rc==Eb&&(fb+=q(Gb,2*Eb),fb+=1==Eb?9==eb?"-":" ":" ",Gb=rc=0);sc+=32<=Hb&&128>Hb?String.fromCharCode(Hb):".";Fb--}ra&&(ra+="\n");ra+=Y+" "+fb+(0==eb?" "+sc:"")}ra&&
|
||||
a.u(ra);a.na=Cb}}}}break;case "e":if("else"==f[0])break;var Ib=1,Gd=255,Hd=a.ua,Id=a.gb;"ew"==f[0]&&(Ib=2,Gd=65535,Hd=a.Va,Id=a.Bb);var Jd=Ib<<1,Kd=f[1];if(null==Kd)a.u("edit memory commands:"),a.u("\teb [a] [...] edit bytes at address a"),a.u("\tew [a] [...] edit words at address a");else{var Jb=X(a,Kd);if(Jb)for(var Kb=2;Kb<f.length;Kb++){var gb=cd(a,f[Kb]);if(void 0===gb){a.u("unrecognized value: "+f[Kb]);break}gb&~Gd&&a.u("warning: "+q(gb)+" exceeds "+Ib+"-byte value");var xe=Hd.call(a,Jb);
|
||||
a.u("changing "+q(Jb.B,4)+" from 0x"+q(xe,Jd)+" to 0x"+q(gb,Jd));Id.call(a,Jb,gb,Ib)}}break;case "f":Xd(a,f[1]);break;case "g":a:{var Ld=f[1],ye=b;if(void 0!==Ld){var tc=X(a,Ld,!0);if(!tc)break a;dd(a,tc,ye);a.xa(a.i,tc,!0)}a.Ca(!0)||c||a.u("cpu busy or unavailable, run command ignored")}break;case "h":a:{var uc;if(a.A.Z)uc="halting",a.ba();else{if(pb(a,!0))break a;uc="already halted"}c||a.u(uc)}break;case "i":if("if"==f[0]){var vc;var hb=b.substr(2),hb=pa(hb);cd(a,hb)?(c||a.u("true: "+hb),vc=!0):
|
||||
(c||a.u("false: "+hb),vc=!1);vc||(d=!1)}break;case "k":var ze=f[0];if("?"==f[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");else{var wc=0,Md=V(),ib=V(a.b.g[6]);for(a.u("stack trace for "+q(ib.B,4));10>wc;){for(var sa=null,Ae=256;65536>ib.B>>>0;){Md.B=a.Va(ib,2);if(null==ib.B||!Ae--)break;for(var Be=a,Lb=Md,Nd=null,jb=Lb.B,Od=jb,xc=1;6>=xc&&jb;xc++){if(2<xc){Lb.B=jb;var Mb=rd(Be,Lb);if(0<=Mb.indexOf("CALL")){var Pd=Mb.indexOf(" ");if(jb+(Mb.indexOf(" ",
|
||||
Pd+1)-Pd-1)/2==Od){Nd=Mb;break}}}jb--}Lb.B=Od;if(sa=Nd)break}if(!sa||null==sa)break;var Qd=null;if("ks"==ze){var Rd=sa.match(/[0-9A-F]+$/);Rd&&(Qd=Zd(a,Rd[0]))}sa=oa(sa,50)+" ;"+(Qd||"stack="+q(ib.B,4));a.u(sa);wc++}wc||a.u("no return addresses found")}break;case "l":if("ln"==f[0]){Zd(a,f[1],!0);break}break;case "m":a:{var ba,ca=null,x=f[1];"?"==x&&(x=void 0);if(void 0!==x){var ha=0;if("all"==x)ha=1878917119,x=null;else if("on"==x)ca=!0,x=null;else if("off"==x)ca=!1,x=null;else{"keys"==x&&(x="key");
|
||||
"kbd"==x&&(x="keyboard");for(ba in C)if(x==ba){ha=C[ba];ca=!!(a.Y&ha);break}if(!ha){a.u("unknown message category: "+x);break a}}if(ha)if("on"==f[2])a.Y|=ha,ca=!0;else if("off"==f[2]&&(a.Y&=~ha,ca=!1,1073741824==ha)){for(var yc=0;yc<a.fa.length;yc++)a.u(a.fa[yc]);a.fa=[]}}var Ce=0,ia="";for(ba in C)if(!x||x==ba){var De=!!(a.Y&C[ba]);if(null===ca||ca==De)ia&&(ia+=","),++Ce%10||(ia+="\n\t"),"key"==ba&&(ba="keys"),ia+=ba}void 0===x&&a.u("message commands:\n\tm [category] [on|off]\tturn categories on/off");
|
||||
a.u((null!==ca?ca?"messages on: ":"messages off: ":"message categories:\n\t")+(ia||"none"));Sc(a)}break;case "p":if("print"==f[0]){$d(a,b.substr(5));break}var Ee="pr"==f[0]?1:0;if(a.U)a.u("step in progress");else{var Sd=V(a.b.g[7]);a.ua(Sd);a.U?(a.xa(a.i,Sd,!0),a.Ca()||(a.D&&a.D.Ta(),a.U=0)):ae(a,Ee?"tr":"t")}break;case "r":if("reset"==b){a.D&&a.D.reset();break}kd(a,f);break;case "s":a:switch(f[1]){case "cs":var kb;void 0!==f[3]&&(kb=+f[3]);switch(f[2]){case "int":a.b.Ia=kb;break;case "start":a.b.Qa=
|
||||
kb;break;case "stop":a.b.Ja=kb;break;default:a.u("unknown cs option");break a}void 0!==kb&&fc(a.b);a.u("checksums "+(a.b.A.Fa?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(lc(a.b,+f[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.b.Aa.toFixed(2)+"Mhz")+" ("+a.b.Ba+"x)");break;case "?":a.u("debugger options:");a.u("\tcs int #\tset checksum cycle interval to #");a.u("\tcs start #\tset checksum cycle start count to #");a.u("\tcs stop #\tset checksum cycle stop count to #");
|
||||
a.u("\tsp #\t\tset speed multiplier to #");break;default:f[1]&&a.u("unknown option: "+f[1])}break;case "t":ae(a,f[0],f[1]);break;case "u":ld(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Yd(a,b.substr(3))||(d=!1);break}a.u("PDP11 version 1.24.2 ("+a.b.rb+",RELEASE"+(sb?",TYPEDARRAYS":",LONGARRAYS")+")");a.u(window?window.navigator.userAgent:"");break;case "?":if(f[1]){$d(a,b.substr(1));break}var lb="commands:",zc;for(zc in Uc)lb+="\n"+oa(zc,9)+Uc[zc];Jc(a)||(lb+="\nnote: frequency/history disabled if no exec breakpoints");
|
||||
a.u(lb);break;default:a.u("unknown command: "+b),d=!1}}}catch(Td){a.u("debugger error: "+(Td.stack||Td.message)),d=!1}return d}function gc(a,b,c){b=ed(a,b,c);for(var d in b)if(!qd(a,b[d]))return!1;return!0}Qa(function(){for(var a=y(document,"pdp11","debugger"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Qc(d);mb(d,c)}});
|
||||
function ce(a,b,c){t.call(this,"Computer",a,ce,67108864);this.A.X=!1;de(this,b);this.N=dc(this,"autoPower",a);this.w=0;this.U=a.busWidth||a.buswidth;this.i=ee;this.L=null;this.G=this.S=!1;this.V=dc(this,"url")||"";(Math.random()+.1).toString(36);this.j=fe(this);if(this.b=cb("CPU",this.id)){this.F=cb("Debugger",this.id);this.H=new vb({id:this.pb+".bus",busWidth:this.U},this.b,this.F);var d,e=bb(this.id);if((this.D=cb("Panel",this.id))&&this.D.ya)for(b=0;b<e.length;b++)d=e[b],d.ea=this.D.ea,d.u=this.D.u,
|
||||
d.ya=this.D.ya;this.u("PDP11 v1.24.2\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.za&&d.za(this,this.H,this.b,this.F);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.i=parseInt(d,10));var f;if(a=dc(this,"state")||(f=!0,a.state))b=this.O=a,f||(this.G=!0,this.i=ee),this.i&&(this.M=new G(this,"1.24.2"),ge(this.M)?b=null:delete this.M);!b&&this.i&&(b=he(this))&&(this.G=!0);if(b){var h=
|
||||
this;xa(b,null,!0,function(a,b,c){c?(h.J=null,h.G=!1,h.ea("Unable to load machine state from server (error "+c+(b?": "+pa(b):"")+")")):(h.L=b,h.S=!0);A(h)})}else A(this);this.K.power||(this.N=!0);!c&&this.N&&ie(this,this.Ra)}else r("Unable to find CPU component")}v(ce);var ee=0;function de(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.T=b}
|
||||
function dc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.T&&(d=a.T[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function ie(a,b,c){for(var d=bb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!qb(f)){qb(f,function(){ie(a,b,c)});return}}b.call(a,c)}
|
||||
function je(a,b){var c=new G(a,"1.24.2","validate");if(ge(c)&&ke(c)){var d=le(c,"timestamp"),e=b?le(b,"timestamp"):"unknown";d!=e&&(a.ea("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=ce.prototype;
|
||||
m.Ra=function(a){void 0===a&&(a=this.i||(this.L?1:ee));if(!this.w){this.w++;var b=!1,c=!1;this.R=!1;var d=this.M||new G(this,"1.24.2");if(-1==a)b=!0;else if(a>ee){if(ge(d,this.L)){this.C=new G(this,"1.24.2","failsafe");ge(this.C)&&(me(this,d),a=2,ne(this.C));H(this.C,"timestamp",va());oe(this.C);var e=this.i&&!this.G;if(1==a||ya("Click OK to restore the previous PDP11 machine state, or CANCEL to reset the machine.")){if(c=ke(d)){var f=le(d,"code"),h=le(d,"data");f&&("ok"==f?ge(d,h):("error"==f&&"no machine state"!=
|
||||
h?(this.ea("Error: "+h),"unable to verify user"==h&&(Ha("user",""),this.j=null)):this.u(f+": "+h),ne(d),ge(d)?(c=ke(d),e=!0):c=!1))}e&&je(this,c?d:null)}else 2==a&&d.clear()}else je(this);delete this.L;delete this.M}e=bb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=pe(this,h,d,b,c));b=[d,a,c];-1!=a?ie(this,this.jb,b):this.jb(b)}};
|
||||
function pe(a,b,c,d,e){if(!b.A.X){b.A.X=!0;if(b.sa){var f=null;e&&((f=le(c,b.id))||(f=le(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.sa(f,d)&&f&&(r("Unable to restore state for "+b.type),a.O&&!a.S?(c.clear(),a.i=ee,window&&window.location.reload()):a.R=!0,b.sa(null),e=!1)}if(!d&&b.ob)for(a=b.ob.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
m.jb=function(a){var b=a[0],c=0>a[1];a=a[2];this.W=!0;this.A.X=!0;var d=this.K.power;d&&(d.textContent="Shutdown");this.b&&(pe(this,this.b,b,c,a),hc(this.b));this.R&&(me(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
|
||||
function me(a,b){if(ya("There may be a problem with your PDP11 machine.\n\nTo help us diagnose it, click OK to send this PDP11 machine state to http://www.pcjs.org.")){var c=a.j||"",d=b.toString(),e={app:"PDP11",ver:"1.24.2"};e.url=a.V;e.user=c;e.type="bug";e.data=d;xa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
||||
function be(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new G(a,"1.24.2"),h=new G(a,"1.24.2","validate"),g=va();H(h,"timestamp",g);H(f,"timestamp",g);H(f,"version","1.24.2");H(f,"url",window?window.location.href:null);H(f,"browser",window?window.navigator.userAgent:"");a.b&&a.b.ra&&(c&&a.b.ba(),d=a.b.ra(b,c),"object"===typeof d&&H(f,a.b.id,d),c&&(a.b.A.X=!1,!1===d&&(e=null)));for(var g=bb(a.id),k=0;k<g.length;k++){var l=g[k];l.A.X&&(l.ra&&(d=l.ra(b,c),"object"===typeof d&&H(f,l.id,d)),c&&
|
||||
(l.A.X=!1,!1===d&&(e=null)))}e&&(c?(g=d=!1,b?(a.j&&qe(a,a.j,f.toString()),oe(h)&&oe(f)||(e=null,d=g=!0)):a.i&&(d=!0,g=3==a.i),d&&f.clear(g)):e=f.toString());c&&(a.A.X=!1,b=a.K.power)&&(b.textContent="Power");a.w=0;return e}m.reset=function(){this.H&&this.H.reset&&(this.F&&nb(this,0)&&this.F.message("Resetting "+this.H.type,void 0),this.H.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.H&&c.reset&&(this.F&&nb(this,0)&&this.F.message("Resetting "+c.type,void 0),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.ha=function(a,b,c){var d=this;switch(b){case "power":return this.K[b]=c,c.onclick=function(){d.w||(d.A.X?be(d,!1,!0):ie(d,d.Ra))},!0;case "reset":return this.K[b]=c,c.onclick=function(){if(d.A.X&&!d.w)if(d.i&&!d.J){var a=ya("Click OK to save changes to this PDP11 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");be(d,a,!0);!a&&d.O?window&&window.location.reload():d.Ra(ee)}else d.reset(),d.b&&hc(d.b)},!0;case "save":if(ka()){c.parentNode.removeChild(c);break}this.K[b]=c;c.onclick=
|
||||
function(){var a=fe(d,!0);if(a){var b=!!(d.i&&!d.J||d.O),c=be(d,b);b?qe(d,a,c):d.ea("Resume disabled, machine state not saved")}};return!0}return!1};function fe(a,b){var c=a.j;c||(c=Ga("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=re(a,c))||a.ea("The user ID is invalid."))):b&&a.ea("Browser local storage is not available"));return c}
|
||||
function re(a,b){a.j=null;var c=xa(la()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(Ha("user",c.data),a.j=c.data)}catch(e){r(e.message+" ("+d+")")}return a.j}function he(a){var b=null;a.j&&(b=la()+"/api/v1/user?req=load&user="+a.j+"&state="+se(a,"1.24.2"));return b}
|
||||
function qe(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=se(a,"1.24.2");d.data=c;b=xa(la()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ea("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ea(c),Ha("user",""),a.j=null)}}m.Ta=function(){};
|
||||
m.ia=function(a){this.b&&this.b.ia(a);this.D&&this.D.ia(a)};Qa(function(){for(var a=y(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=w(c),c=y(c,"pdp11","computer"),e=0;e<c.length;e++){var f=c[e],h=w(f),h=new ce(h,d,!0);mb(h,f);h.N&&ie(h,h.Ra)}});La.show.push(function(){for(var a=y(document,"pdp11","computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=cb("Computer",c.id))&&c.W&&!c.A.X&&c.Ra(-1)}});
|
||||
La.exit.push(function(){for(var a=y(document,"pdp11","computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=cb("Computer",c.id))&&c.A.X&&be(c,!(!c.i||c.J),!0)}});function G(a,b,c){this.id=a.id;this.key=se(a,b,c);this.F=a.F;ne(this,a.Jb)}function se(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}
|
||||
G.prototype={constructor:G,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){ne(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 ne(a,b){a[a.id]={};b&&H(a,"parms",b);a.b=!1}function oe(a){var b=!0;if(Fa()){var c=JSON.stringify(a[a.id]);Ha(a.key,c)||(r("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function ke(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){r(c.message||c),b=!1}return b}function ge(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:Fa()&&(b=Ga(a.key))?(a[a.id]=b,a.b=!0):!1}function le(a,b){return a[a.id][b]||null}function H(a,b,c){try{a[a.id][b]=c}catch(d){}}var te=0;
|
||||
function Fe(a,b,c,d,e,f){e("Loading "+a+"...");xa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Ge(g,a,b,c,d,e,f)})}
|
||||
function Ge(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>)/,"$1pdp11$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(p){g=null,a=p.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?He(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function He(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");xa(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,n=/( [a-z]+=)(['"])(.*?)\2/g;l=n.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);He(a,b,c)}})}else c(a,null)}
|
||||
function Ie(a,b,c,d){function e(a){if(void 0===g){var b=h&&y(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=na(a))}function f(a){e("Error: "+a);k&&(--te||Sa(!0));k=!1}var h,g,k=!0;te++;$a[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],p=document.createElement("style");p.type="text/css";p.styleSheet?p.styleSheet.cssText=l:p.appendChild(document.createTextNode(l));n.appendChild(p)}c||
|
||||
(c="/versions/pdp11/1.24.2/components.xsl");l=function(d,g){g?Fe(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,--te||Sa(!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),--te||Sa(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?Fe(b,a,d,!0,e,l):Ge(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(z){f(z.message)}return k}window.embedPDP11=function(a,b,c,d){Sa(!1);return Ie(a,b,c,d)};window.enableEvents=Sa;window.sendEvent=Ta;})();
|
||||
|
|
|
|||
|
|
@ -1,81 +1,110 @@
|
|||
(function(){var e;function aa(a){var b=16,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 f,d=a,g=b;(g&&10!=g?16==g?null!==d.match(/^[0-9a-f]+$/i):2==g&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}
|
||||
(function(){var m;function aa(a){var b=16,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 f,d=a,e=b;(e&&10!=e?16==e?null!==d.match(/^[0-9a-f]+$/i):2==e&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|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 ba(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function ca(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function da(){var a=p();return-1!==a.indexOf("pcjs.org",a.length-8)}
|
||||
var ea={"&":"&","<":"<",">":">",'"':""","'":"'"};function fa(a){return a.replace(/[&<>"']/g,function(a){return ea[a]})}var q=Date.now||function(){return+new Date};function ga(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
|
||||
function t(a,b,c,d){var f=0,g=null,k=null;if("object"==typeof resources&&(g=resources[a]))return d&&d(a,g,f),[g,f];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),k;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(g=h.responseText,200==h.status||!h.status&&g.length&&"file:"==(window?window.location.protocol:"file:")||(f=h.status||-1),d&&d(a,g,f))});if(b&&"object"==
|
||||
typeof b){var l="",m;for(m in b)b.hasOwnProperty(m)&&(l&&(l+="&"),l+=m+"="+encodeURIComponent(b[m]));l=l.replace(/%20/g,"+");h.open("POST",a,!!c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(l)}else h.open("GET",a,!!c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(g=h.responseText,200!=h.status&&(f=h.status||-1),d&&d(a,g,f),k=[g,f]);return k}function p(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
||||
function u(a){window&&window.alert(a)}function ha(a){var b=!1;window&&(b=window.confirm(a));return b}var ia=null;function ja(){if(null==ia){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}ia=a}return ia}function ka(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function v(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function la(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 w={init:[],show:[],exit:[]},ma=!1,na=!1,oa=!0;function pa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function x(a){w.init.push(a)}
|
||||
function qa(a){if(oa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){u(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function y(a){!oa&&a?(oa=!0,ma&&ra("init"),na&&ra("show")):oa=a}function ra(a){w[a]&&qa(w[a])}pa("onload",function(){ma=!0;qa(w.init)});pa("onpageshow",function(){na=!0;qa(w.show)});pa(la("Opera")||la("iOS")?"onunload":"onbeforeunload",function(){qa(w.exit)});
|
||||
function z(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ca=b.comment;this.Ra=b;b=this.id.indexOf(".");0>b?this.ca=this.id:(this.Ea=this.id.substr(0,b),this.ca=this.id.substr(b+1));this[a]=c;this.b={aa:!1,ha:!1,wa:!1,u:!1,U:!1};this.la=null;this.b.U=!1;this.c={};this.v=null;A.push(this)}var sa=void 0,ta={};
|
||||
if(window){sa||(sa=window.location.search.substr(1));for(var ua,va=/\+/g,wa=/([^&=]+)=?([^&]*)/g;ua=wa.exec(sa);)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 B(a,b){b||(b=z);a.prototype=xa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var ya=window.PCjs.Machines||(window.PCjs.Machines={}),A=window.PCjs.Components||(window.PCjs.Components=[])}else ya={},A=[];function za(a,b,c){ya[a]&&b&&(ya[a][b]=c)}function C(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<A.length;b++){var d=A[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
||||
function D(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<A.length;d++)if(c)c==A[d]&&(c=null);else if(!(a!=A[d].type||b&&A[d].id.indexOf(b)))return A[d]}return null}function E(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}
|
||||
function G(a,b){for(var c=H(b.parentNode,"pdp11-control"),d=0;d<c.length;d++)for(var f=c[d].childNodes,g=0;g<f.length;g++){var k=f[g];if(1===k.nodeType){var h=k.getAttribute("class");if(h)for(var l=h.split(" "),m=0;m<l.length;m++)switch(h=l[m],h){case "pdp11-binding":(h=E(k))&&h.binding&&a.H(h.type,h.binding,k,h.value),m=l.length}}}}
|
||||
function H(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)f.test(a[b].className)&&c.push(a[b]);return c}
|
||||
z.prototype={constructor:z,parent:null,toString:function(){return this.name?this.name:this.id||this.type},H:function(a,b,c){switch(b){case "clear":return this.c[b]||(this.c[b]=c,c.onclick=function(a){return function(){a.c.print&&(a.c.print.value="")}}(this)),!0;case "print":return this.c[b]||(this.va=this.c[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.w=function(a){this.G(a,this.ca)}),!0;default:return!1}},log:function(){},G:function(){},status:function(a){this.G(this.ca+": "+a)},w:function(a,b,c){c=c||this.type;b||u((c?c+": ":"")+a)},P:function(){return this.b.u=!0},O:function(a,b){b&&(this.b.u=!1);return!0}};function Aa(a,b){if(a.b.wa)return a.b.ha&&(a.b.ha=!1),a.b.wa=!1;if(a.b.U)return a.G(a.toString()+" error"),!1;a.b.ha=b;return a.b.ha}function I(a){if(!a.b.U&&(a.b.aa=!0,a.b.aa)){var b=a.la;a.la=null;b&&b()}}
|
||||
function Ba(a,b){b&&(a.b.aa?b():a.la=b);return a.b.aa}var J="undefined"!==typeof ArrayBuffer;function Ca(a){z.call(this,"Panel",a,Ca)}B(Ca);e=Ca.prototype;e.H=function(a,b,c,d){return this.a&&this.a.H(a,b,c,d)||this.f&&this.f.H(a,b,c,d)?!0:this.parent.H.call(this,a,b,c,d)};e.ba=function(a,b,c,d){this.a=a;this.i=b;this.f=c;this.v=d};e.P=function(a,b){b||Da();return!0};e.O=function(){return!0};e.V=function(){};
|
||||
function Da(){for(var a=!1,b=H(document,"pdp11","panel"),c=0;c<b.length;c++){var d=b[c],f=E(d),g;a:{g=f.id;if(void 0!==g)for(var k=void 0,k=0;k<A.length;k++)if(A[k].id===g){g=A[k];break a}g=null}g||(a=!0,g=new Ca(f));G(g,d);a&&I(g)}}x(Da);
|
||||
function K(a,b,c){z.call(this,"Bus",a,K);this.f=b;this.v=c;this.h=a.busWidth||16;this.l=Math.pow(2,this.h);this.s=this.l-1|0;this.g=16>=this.h?10:20>=this.h?12:24>=this.h?14:15;this.i=1<<this.g;this.m=this.i>>2;this.o=this.i-1;this.j=this.l/this.i|0;a=new L;Ea(a,this.v);this.a=Array(this.j);for(b=0;b<this.j;b++)this.a[b]=a;I(this)}B(K);K.prototype.reset=function(){};K.prototype.P=function(a,b){b||this.reset();return!0};
|
||||
function Fa(a,b,c,d){for(var f=b,g=c,k=f>>>a.g;0<g&&k<a.a.length;){var h=a.a[k],l=k*a.i,m=a.i-(f-l);m>g&&(m=g);if(h&&h.size){if(h.type==d){if(f+g<=h.ga)return h.ma+=h.ga-f,h.ga=f,!0;if(f>=h.ga+h.ma){m=h.size-(f-l);m>g&&(m=g);h.ma=f-h.ga+m;f=l+a.i;g-=m;k++;continue}}return Ga(1,f,g)}f=new L(f,m,a.i,d);Ea(f,a.v,h);a.a[k++]=f;f=l+a.i;g-=m}return 0>=g?(a.status(Math.floor(c/1024)+"Kb "+Ha[d]+" at "+("0x"+n(b,4))),!0):Ga(2,b,c)}
|
||||
K.prototype.xa=function(a){return this.a[(a&this.s)>>>this.g].ya(a&this.o,a)};function Ga(a,b,c){u("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Ia;if(J){var Ja=new ArrayBuffer(2);(new DataView(Ja)).setUint16(0,256,!0);Ia=256===(new Uint16Array(Ja))[0]}else Ia=!1;var Ka=Ia;
|
||||
function L(a,b,c,d){this.id=La+=2;this.c=null;this.ga=a;this.ma=b;this.size=c||0;this.type=d||Ma;this.j=d==Na;Ea(this);this.N=this.Oa=!1;if(c)if(J)this.a=new ArrayBuffer(c),this.i=new DataView(this.a,0,c),this.f=new Uint8Array(this.a,0,c),this.l=new Uint16Array(this.a,0,c>>1),this.c=new Int32Array(this.a,0,c>>2),Oa(this,Ka?Pa:Qa);else{this.c=Array(c>>2);for(a=0;a<this.c.length;a++)this.c[a]=0;Oa(this,Ra)}else Oa(this)}var Ma=0,Na=2,Ha=["NONE","RAM","ROM","VID","H/W"],La=0;
|
||||
L.prototype={constructor:L,parent:null,save:function(){var a,b;if(J)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.i.getInt32(b<<2,!0);else a=this.c;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(J)for(b=0;b<a.length;b++)this.i.setInt32(b<<2,a[b],!0);else this.c=a;return this.N=!0}return!1},m:function(){return 255},s:function(){},L:function(a,b){return this.ya(a++,b++)|this.ya(a,b)<<8},ca:function(a,b,c){this.o(a++,b&255,c++);this.o(a,b>>8,c)},F:function(a){return this.c[a>>
|
||||
2]>>>((a&3)<<3)&255},S:function(a){var b=a>>2;a=(a&3)<<3;var c=this.c[b]>>a;return 24>a?c&65535:c&255|(this.c[b+1]&255)<<8},Y:function(a,b){var c=a>>2,d=(a&3)<<3;this.c[c]=this.c[c]&~(255<<d)|b<<d;this.N=!0},fa:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.c[c]=this.c[c]&~(65535<<d)|b<<d:(this.c[c]=this.c[c]&16777215|b<<24,c++,this.c[c]=this.c[c]&-256|b>>8);this.N=!0},B:function(a,b){return this.C(a,b)},K:function(a,b){return this.M(a,b)},W:function(a,b,c){this.j||this.Ma(a,b,c)},$:function(a,b,c){this.j||
|
||||
this.da(a,b,c)},A:function(a){return this.f[a]},D:function(a){return this.f[a]},I:function(a){return this.i.getUint16(a,!0)},R:function(a){return a&1?this.f[a]|this.f[a+1]<<8:this.l[a>>1]},T:function(a,b){this.f[a]=b;this.N=!0},X:function(a,b){this.f[a]=b;this.N=!0},Z:function(a,b){this.i.setUint16(a,b,!0);this.N=!0},ea:function(a,b){a&1?(this.f[a]=b,this.f[a+1]=b>>8):this.l[a>>1]=b;this.N=!0}};function Ea(a,b,c){a.v=b;a.g=a.h=0;c&&((a.g=c.g)&&Sa(a,Ta,!1),(a.h=c.h)&&Ua(a,Ta,!1))}
|
||||
function Ua(a,b,c){c&&a.h||(a.o=!a.j&&b[2]||a.s);if(c||void 0===c)a.Ma=b[2]||a.s,a.da=b[3]||a.ca}function Sa(a,b,c){c&&a.g||(a.ya=b[0]||a.m);if(c||void 0===c)a.C=b[0]||a.m,a.M=b[1]||a.L}function Oa(a,b){b||(b=Va);Sa(a,b,void 0);Ua(a,b,void 0)}var Va=[],Ra=[L.prototype.F,L.prototype.S,L.prototype.Y,L.prototype.fa],Ta=[L.prototype.B,L.prototype.K,L.prototype.W,L.prototype.$];if(J)var Qa=[L.prototype.A,L.prototype.I,L.prototype.T,L.prototype.Z],Pa=[L.prototype.D,L.prototype.R,L.prototype.X,L.prototype.ea];
|
||||
function M(a,b){z.call(this,"CPU",a,M);var c=a.multiplier||1;this.ea=a.cycles||b;this.D=c;this.da=Math.round(this.ea/1E4)/100;this.B=this.da*this.D;this.b.J=!1;this.b.Ha=!1;this.b.Fa=a.autoStart;this.b.Ga=!1;this.b.ja=!1;this.Y=this.C=0;this.Z=a.csStart;this.K=a.csInterval;this.L=a.csStop;this.W=[];this.Qa=this.za.bind(this);I(this)}B(M);var Wa=["power","reset"];e=M.prototype;
|
||||
e.ba=function(a,b,c,d){this.a=a;this.i=b;this.v=d;for(b=0;b<Wa.length;b++)(c=this.c[Wa[b]])&&this.a.H(null,Wa[b],c);this.I=null;a=Xa(a,"autoStart");null!=a&&(this.b.Fa="true"==a?!0:"false"==a?!1:!!a);I(this)};e.reset=function(){};e.save=function(){return null};e.restore=function(){return!1};e.P=function(a,b){if(!b){if(a&&this.restore){Ya(this);if(!this.restore(a))return!1;Za(this)}else this.reset();this.G("No debugger detected")}$a(this);return!0};e.O=function(a){return a?this.save():!0};
|
||||
function ab(a){(a.b.Fa||void 0===a.c.run)&&a.za()}e.Ka=function(){return 0};function Za(a){void 0===a.Z&&(a.Z=0);void 0===a.K&&(a.K=-1);void 0===a.L&&(a.L=-1);a.b.ja=0<=a.Z&&0<a.K;a.b.ja&&(a.Y=0,a.C=a.Z-a.s)}function N(a,b,c,d){a.c[b]&&(void 0===c&&(a.b.U=!0,a.w("Value for "+b+" is invalid"),O(a)),c=!a.b.J||a.b.Ga?n(c,d):"--------".substr(0,d),a.c[b].textContent!=c&&(a.c[b].textContent=c))}
|
||||
e.H=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.c[b]=c;a=!0;break;case "run":this.c[b]=c;c.onclick=function(){var a;if(a=d.a)if(a=d.a,a.b.u)a=!0;else{var b=null,c,h=C(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.b.aa);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.b.u);c++);c==h.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.b.aa?"powered yet":"ready yet"+(b.la?" (waiting for notification)":""))+".");a=!1}a&&(d.b.J?O(d):d.za())};a=!0;break;case "speed":this.c[b]=
|
||||
c;a=!0;break;case "setSpeed":this.c[b]=c,c.onclick=function(){P(d,d.D<<1)},c.textContent=this.B.toFixed(2)+"Mhz",a=!0}return a};function bb(a,b,c){a.s+=b;c&&(a.h=a.f=0)}function cb(a,b){var c=1;b&&1<a.D&&a.m&&(c=a.m/a.da);a.Ia=Math.round(1E3/30);a.$=Math.floor(a.ea/30*c);b||(a.M=a.$);a.fa=0}function Q(a){return a.s+a.l+a.h-a.f}function Ya(a){a.m=0;a.Ja=0;a.s=a.l=a.h=a.f=0;Za(a);P(a,1)}
|
||||
function P(a,b){if(void 0!==b){.8>a.m/a.B&&(b=1);a.D=b;var c=a.da*a.D;if(a.B!=c){a.B=c;var c=a.B.toFixed(2)+"Mhz",d=a.c.setSpeed;d&&(d.textContent=c);a.G("target speed: "+c)}}bb(a,a.l);a.l=0;a.j=q();a.o=0;cb(a)}
|
||||
e.za=function(){if(Aa(this,!0)){if(!this.b.J){P(this);this.a&&this.a.start(this.j,Q(this));this.b.J=!0;this.b.Ha=!0;this.I&&this.I.start();var a=this.c.run;a&&(a.textContent="Halt");this.a&&this.a.V(!0)}this.fa>=this.ea&&cb(this,!0);this.R=0;this.X=q();this.o&&(a=this.X-this.o,a>this.Ia&&(this.j+=a,this.j>this.X&&(this.j=this.X)));try{do{for(var b=this.b.ja?1:this.$,c=this.W.length-1;0<=c;c--){var d=this.W[c];0>d[0]||b>d[0]&&(b=d[0])}this.La(b);for(var f=this.h-this.f,a=f,g=this.W.length-1;0<=g;g--){var k=
|
||||
this.W[g];0>k[0]||(k[0]-=a,0>=k[0]&&(k[0]=-1,k[1]()))}this.R+=f;this.l+=f;bb(this,0,!0);a=f;if(this.b.ja){var h=!1;this.Y=this.Y+this.Ka()|0;this.C-=a;0>=this.C&&(this.C+=this.K,h=!0);0<=this.L&&this.L<=Q(this)&&(this.K=this.L=-1,Za(this),O(this),h=!0);h&&this.G(Q(this)+" cycles: checksum="+n(this.Y))}this.M-=f;if(0>=this.M){this.M+=this.$;15<=++this.Ja&&(this.a&&this.a.V(),this.Ja=0);break}}while(this.b.J)}catch(l){O(this);$a(this);this.a&&this.a.stop(q(),Q(this));Aa(this,!1);b=l.stack||l.message;
|
||||
this.b.U=!0;this.w(b);return}b=setTimeout;c=this.Qa;this.o=q();d=this.Ia;this.R&&(d=Math.round(d*this.R/this.$));d=d-(this.o-this.X);if(f=this.o-this.j)this.m=Math.round(this.l/(10*f))/100,864E5<=f&&(this.s=0,P(this));if(0>d||this.m<this.B)-1E3>d&&(this.j-=d),d=0;this.fa+=this.R;this.o+=d;b(c,d)}else $a(this),this.a&&this.a.stop(q(),Q(this))};e.La=function(){return 0};
|
||||
function O(a){a.b.ha&&(a.b.wa=!0);a.h-=a.f;a.f=0;bb(a,a.l);a.l=0;if(a.b.J){a.b.J=!1;a.I&&a.I.stop();var b=a.c.run;b&&(b.textContent="Run")}a.b.ka=void 0}function $a(a){a.a&&a.a.V(void 0)}function db(a){this.Pa=+a.model||1170;M.call(this,a,1E6);this.Aa=eb;Ya(this);this.b.ka=this.b.Na=!1;this.Ba=0;fb(this)}B(db,M);e=db.prototype;e.reset=function(){this.b.J&&O(this);fb(this);Ya(this);this.b.U=!1;this.parent.reset.call(this)};
|
||||
function fb(a){a.oa=0;a.pa=0;a.qa=0;a.ra=0;a.sa=0;a.ta=0;a.na=0;a.ua=0;a.A=0;gb(a,0);a.g=0}e.Ka=function(){var a=this.oa+this.pa+this.qa+this.ra+this.sa+this.ta+this.na|0;return a=a+this.ua+this.A+hb(this)|0};
|
||||
e.save=function(){var a=new R(this);S(a,0,[this.oa,this.pa,this.qa,this.ra,this.sa,this.ta,this.na,this.ua,this.A,hb(this)]);S(a,1,[this.g,this.s,this.D]);for(var b=this.i,c=0,d=[],f=0;f<b.j;f++){var g=b.a[f];if(g.N||g.Oa){d[c++]=f;var k=c++;a:if(g=g.save()){for(var h=0,l=0,m=[];h<g.length;){for(var F=g[h],r=h+1;r<g.length&&g[r]===F;)r++;m[l++]=r-h;m[l++]=F;h=r}if(m.length<g.length){g=m;break a}}d[k]=g}}S(a,2,d);return a.data()};
|
||||
e.restore=function(a){var b=a[0];this.oa=b[0];this.pa=b[1];this.qa=b[2];this.ra=b[3];this.sa=b[4];this.ta=b[5];this.na=b[6];this.ua=b[7]&65535;this.A=b[8]&65535;gb(this,b[9]);b=a[1];this.g=b[0];this.s=b[1];P(this,b[3]);a:{b=this.i;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],f=a[c+1];if(f&&f.length<b.m){for(var g=0,k=Array(b.m),h=0;h<f.length-1;)for(var l=f[h++],m=f[h++];l--;)k[g++]=m;f=k}g=b.a[d];if(!g||!g.restore(f)){u("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
e.H=function(a,b,c){var d=!1;switch(b){case "PC":case "PSW":case "IF":case "SF":case "ZF":case "CF":this.c[b]=c;this.Ba++;d=!0;break;default:d=this.parent.H.call(this,a,b,c)}return d};function hb(a){return a.S&-214|(a.T&128?128:0)|(a.F&255?0:64)|(a.F&256?1:0)}function gb(a,b){a.F=a.T=0;b&1&&(a.F|=256);b&4||(a.T|=1);b&64||(a.F|=255);b&128&&(a.T^=192);a.S=a.S&-726|b&512|2}e.xa=function(a){return this.i.xa(a)};function ib(a){var b=a.xa(a.A);a.A=a.A+1&65535;return b}
|
||||
e.V=function(a){this.Ba&&(a||!this.b.J||this.b.Ga)&&(N(this,"PC",this.A,4),a=hb(this),N(this,"PSW",a,4),N(this,"IF",a&512?1:0,1),N(this,"SF",a&128?1:0,1),N(this,"ZF",a&64?1:0,1),N(this,"CF",a&1?1:0,1));if(a=this.c.speed)a.textContent=this.b.J&&this.m?this.m.toFixed(2)+"Mhz":"Stopped"};
|
||||
e.La=function(a){this.b.ka=!0;this.b.Na=!1;this.b.Ha=!1;this.h=this.f=a;if(this.f&&this.g&255&&this.S&512){for(a=0;8>a&&!(this.g&1<<a);a++);this.g&=~(0>a?255:1<<a);this.S&=-513;this.g&=-257;this.Aa[199|a<<3].call(this)}this.g&256?(this.h-=this.f,this.f=0,a=!1):a=!0;if(a){do this.Aa[ib(this)].call(this);while(0<this.f)}return this.b.ka?this.h-this.f:void 0===this.b.ka?0:-1};x(function(){for(var a=H(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new db(d);G(d,c)}});
|
||||
function T(){this.f-=4}
|
||||
var eb=[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,
|
||||
T,T,T,T,T,T,T,T,T];function U(a){z.call(this,"ROM",a,U);this.a=null;this.m=a.addr;this.g=a.size;this.o=a.writable;this.h=a.alias;this.j=a.file;this.s=ba(this.j);if(this.j){a=this.j;var b=ca(this.s);"json"!=b&&"hex"!=b&&(a=p()+"/api/v1/dump?file="+this.j+"&format=bytes&decimal=true");var c=this;t(a,null,!0,function(a,b,g){jb(c,a,b,g)})}}B(U);U.prototype.ba=function(a,b,c,d){this.i=b;this.f=c;this.v=d;kb(this)};
|
||||
U.prototype.P=function(){this.l&&(this.v&&this.v.f(this.id,this.m,this.g,this.l),delete this.l);return!0};U.prototype.O=function(){return!0};
|
||||
function jb(a,b,c,d){if(d)a.w("Unable to load system ROM (error "+d+": "+b+")");else{za(a.Ea,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var f=eval("("+c+")"),g=f.bytes,k=f.data;if(g)a.a=g;else if(k)for(a.a=Array(4*k.length),d=c=0;c<k.length;c++)a.a[d++]=k[c]&255,a.a[d++]=k[c]>>8&255,a.a[d++]=k[c]>>16&255,a.a[d++]=k[c]>>24&255;else a.a=f;a.l=f.symbols;if(!a.a.length){u("Empty ROM: "+b);return}if(1==a.a.length){u(a.a[0]);return}}catch(h){a.w("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.a=Array(b.length),f=0;f<b.length;f++)a.a[f]=aa(b[f]);kb(a)}}
|
||||
function kb(a){if(!Ba(a))if(!a.j)I(a);else if(a.a&&a.i){a.g||(a.g=a.a.length);if(a.a.length!=a.g){var b="ROM size (0x"+n(a.a.length)+") does not match specified size ("+("0x"+n(a.g))+")";a.b.U=!0;a.w(b)}else{b=a.m;if(Fa(a.i,b,a.g,a.o?1:Na)){var c;for(c=0;c<a.a.length;c++){var d=a.i,f=b+c;d.a[(f&d.s)>>>d.g].Ma(f&d.o,a.a[c]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.h?b.push(a.h):null!=a.h&&a.h.length&&(b=a.h);for(c=0;c<b.length;c++){for(var g=a,d=b[c],f=g.i,k=g.g,h=[],l=g.m>>>f.g;0<k&&l<f.a.length;)h.push(f.a[l++]),
|
||||
k-=f.i;f=g.i;g=g.g;k=0;for(d>>>=f.g;0<g&&d<f.a.length;){l=h[k++];if(!l)break;f.a[d++]=l;g-=f.i}}delete a.a}}I(a)}}x(function(){for(var a=H(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new U(d);G(d,c)}});function lb(a){z.call(this,"RAM",a,lb);this.h=a.addr;this.g=a.size;this.a=!1}B(lb);e=lb.prototype;e.ba=function(a,b,c,d){this.i=b;this.f=c;this.v=d;I(this)};e.P=function(a,b){b||this.reset();return!0};e.O=function(a){return a?this.save():!0};
|
||||
e.reset=function(){!this.a&&this.g&&Fa(this.i,this.h,this.g,1)&&(this.a=!0);this.a||u("No RAM allocated")};e.save=function(){return null};e.restore=function(){return!0};x(function(){for(var a=H(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new lb(d);G(d,c)}});function V(a){z.call(this,"Keyboard",a,V);I(this)}B(V);V.prototype.H=function(){return!1};V.prototype.ba=function(a,b,c,d){this.a=a;this.f=c;this.v=d;this.I=null};
|
||||
x(function(){for(var a=H(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new V(d);G(d,c)}});
|
||||
function mb(a,b,c){z.call(this,"Computer",a,mb);this.b.u=!1;nb(this,b);this.B=Xa(this,"autoPower",a);this.h=0;this.K=a.busWidth||a.buswidth;this.a=W;this.s=null;this.m=this.F=!1;this.L=Xa(this,"url")||"";(Math.random()+.1).toString(36);this.g=ob(this);if(this.f=D("CPU",this.id)){this.v=D("Debugger",this.id);this.i=new K({id:this.Ea+".bus",busWidth:this.K},this.f,this.v);var d,f=C(this.id);if((this.j=D("Panel",this.id))&&this.j.va)for(b=0;b<f.length;b++)d=f[b],d.w=this.j.w,d.G=this.j.G,d.va=this.j.va;
|
||||
this.G("PDP11 v1.24.2\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<f.length;b++)d=f[b],d.ba&&d.ba(this,this.i,this.f,this.v);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.o=d:this.a=parseInt(d,10));var g;if(a=Xa(this,"state")||(g=!0,a.state))b=this.C=a,g||(this.m=!0,this.a=W),this.a&&(this.A=new R(this,"1.24.2"),X(this.A)?b=null:delete this.A);!b&&this.a&&(b=pb(this))&&(this.m=!0);if(b){var k=this;t(b,null,
|
||||
!0,function(a,b,c){c?(k.o=null,k.m=!1,k.w("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(k.s=b,k.F=!0);I(k)})}else I(this);this.c.power||(this.B=!0);!c&&this.B&&Y(this,this.ia)}else u("Unable to find CPU component")}B(mb);var W=0;function nb(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){u(d.message+" ("+c+")")}}a.I=b}
|
||||
function Xa(a,b,c){var d=b.toLowerCase(),d=ta[b]||ta[d];void 0===d&&a.I&&(d=a.I[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Y(a,b,c){for(var d=C(a.id),f=0;f<=d.length;f++){var g=f<d.length?d[f]:a;if(!Ba(g)){Ba(g,function(){Y(a,b,c)});return}}b.call(a,c)}
|
||||
function qb(a,b){var c=new R(a,"1.24.2","validate");if(X(c)&&rb(c)){var d=Z(c,"timestamp"),f=b?Z(b,"timestamp"):"unknown";d!=f&&(a.w("Machine state may be out-of-date\n("+d+" vs. "+f+")\nCheck your browser's local storage limits"),b||c.clear())}}e=mb.prototype;
|
||||
e.ia=function(a){void 0===a&&(a=this.a||(this.s?1:W));if(!this.h){this.h++;var b=!1,c=!1;this.D=!1;var d=this.A||new R(this,"1.24.2");if(-1==a)b=!0;else if(a>W){if(X(d,this.s)){this.l=new R(this,"1.24.2","failsafe");X(this.l)&&(sb(this,d),a=2,tb(this.l));S(this.l,"timestamp",ga());ub(this.l);var f=this.a&&!this.m;if(1==a||ha("Click OK to restore the previous PDP11 machine state, or CANCEL to reset the machine.")){if(c=rb(d)){var g=Z(d,"code"),k=Z(d,"data");g&&("ok"==g?X(d,k):("error"==g&&"no machine state"!=
|
||||
k?(this.w("Error: "+k),"unable to verify user"==k&&(v("user",""),this.g=null)):this.G(g+": "+k),tb(d),X(d)?(c=rb(d),f=!0):c=!1))}f&&qb(this,c?d:null)}else 2==a&&d.clear()}else qb(this);delete this.s;delete this.A}f=C(this.id);for(g=0;g<f.length;g++)k=f[g],k!==this&&k!=this.f&&(c=vb(this,k,d,b,c));b=[d,a,c];-1!=a?Y(this,this.Da,b):this.Da(b)}};
|
||||
function vb(a,b,c,d,f){if(!b.b.u){b.b.u=!0;if(b.P){var g=null;f&&((g=Z(c,b.id))||(g=Z(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof g&&(g=null);!b.P(g,d)&&g&&(u("Unable to restore state for "+b.type),a.C&&!a.F?(c.clear(),a.a=W,window&&window.location.reload()):a.D=!0,b.P(null),f=!1)}if(!d&&b.Ca)for(a=b.Ca.split("|"),c=0;c<a.length;c++)b.status(a[c])}return f}
|
||||
e.Da=function(a){var b=a[0],c=0>a[1];a=a[2];this.M=!0;this.b.u=!0;var d=this.c.power;d&&(d.textContent="Shutdown");this.f&&(vb(this,this.f,b,c,a),ab(this.f));this.D&&(sb(this,b),b.clear());!c&&this.l&&(this.l.clear(),delete this.l);this.h=0};
|
||||
function sb(a,b){if(ha("There may be a problem with your PDP11 machine.\n\nTo help us diagnose it, click OK to send this PDP11 machine state to http://www.pcjs.org.")){var c=a.g||"",d=b.toString(),f={app:"PDP11",ver:"1.24.2"};f.url=a.L;f.user=c;f.type="bug";f.data=d;t("http://www.pcjs.org/api/v1/report",f,!0)}}
|
||||
function wb(a,b,c){var d,f="none";if(a.h)return null;a.h--;var g=new R(a,"1.24.2"),k=new R(a,"1.24.2","validate"),h=ga();S(k,"timestamp",h);S(g,"timestamp",h);S(g,"version","1.24.2");S(g,"url",window?window.location.href:null);S(g,"browser",window?window.navigator.userAgent:"");a.f&&a.f.O&&(c&&O(a.f),d=a.f.O(b,c),"object"===typeof d&&S(g,a.f.id,d),c&&(a.f.b.u=!1,!1===d&&(f=null)));for(var h=C(a.id),l=0;l<h.length;l++){var m=h[l];m.b.u&&(m.O&&(d=m.O(b,c),"object"===typeof d&&S(g,m.id,d)),c&&(m.b.u=
|
||||
!1,!1===d&&(f=null)))}f&&(c?(h=d=!1,b?(a.g&&xb(a,a.g,g.toString()),ub(k)&&ub(g)||(f=null,d=h=!0)):a.a&&(d=!0,h=3==a.a),d&&g.clear(h)):f=g.toString());c&&(a.b.u=!1,b=a.c.power)&&(b.textContent="Power");a.h=0;return f}e.reset=function(){this.i&&this.i.reset&&this.i.reset();for(var a=C(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.i&&c.reset&&c.reset()}};e.start=function(a,b){for(var c=C(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.start&&f.start(a,b)}};
|
||||
e.stop=function(a,b){for(var c=C(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.stop&&f.stop(a,b)}};
|
||||
e.H=function(a,b,c){var d=this;switch(b){case "power":return this.c[b]=c,c.onclick=function(){d.h||(d.b.u?wb(d,!1,!0):Y(d,d.ia))},!0;case "reset":return this.c[b]=c,c.onclick=function(){if(d.b.u&&!d.h)if(d.a&&!d.o){var a=ha("Click OK to save changes to this PDP11 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");wb(d,a,!0);!a&&d.C?window&&window.location.reload():d.ia(W)}else d.reset(),d.f&&ab(d.f)},!0;case "save":if(da()){c.parentNode.removeChild(c);break}this.c[b]=c;c.onclick=
|
||||
function(){var a=ob(d,!0);if(a){var b=!!(d.a&&!d.o||d.C),c=wb(d,b);b?xb(d,a,c):d.w("Resume disabled, machine state not saved")}};return!0}return!1};function ob(a,b){var c=a.g;c||(c=ka("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=yb(a,c))||a.w("The user ID is invalid."))):b&&a.w("Browser local storage is not available"));return c}
|
||||
function yb(a,b){a.g=null;var c=t(p()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(v("user",c.data),a.g=c.data)}catch(f){u(f.message+" ("+d+")")}return a.g}function pb(a){var b=null;a.g&&(b=p()+"/api/v1/user?req=load&user="+a.g+"&state="+zb(a,"1.24.2"));return b}
|
||||
function xb(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=zb(a,"1.24.2");d.data=c;b=t(p()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var f=d.indexOf("\n");0<f&&(d=d.substr(0,f));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.w("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.w(c),v("user",""),a.g=null)}}e.V=function(a){this.f&&this.f.V(a);this.j&&this.j.V(a)};
|
||||
x(function(){for(var a=H(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=E(c),c=H(c,"pdp11","computer"),f=0;f<c.length;f++){var g=c[f],k=E(g),k=new mb(k,d,!0);G(k,g);k.B&&Y(k,k.ia)}});w.show.push(function(){for(var a=H(document,"pdp11","computer"),b=0;b<a.length;b++){var c=E(a[b]);(c=D("Computer",c.id))&&c.M&&!c.b.u&&c.ia(-1)}});w.exit.push(function(){for(var a=H(document,"pdp11","computer"),b=0;b<a.length;b++){var c=E(a[b]);(c=D("Computer",c.id))&&c.b.u&&wb(c,!(!c.a||c.o),!0)}});
|
||||
function R(a,b,c){this.id=a.id;this.key=zb(a,b,c);this.v=a.v;tb(this,a.Ra)}function zb(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}
|
||||
R.prototype={constructor:R,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){tb(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(f){}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(f){}b.splice(c,1);c=0}}};
|
||||
function tb(a,b){a[a.id]={};b&&S(a,"parms",b);a.c=!1}function ub(a){var b=!0;if(ja()){var c=JSON.stringify(a[a.id]);v(a.key,c)||(u("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function rb(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){u(c.message||c),b=!1}return b}function X(a,b){return b?(a[a.id]=b,a.c=!0):a.c?!0:ja()&&(b=ka(a.key))?(a[a.id]=b,a.c=!0):!1}function Z(a,b){return a[a.id][b]||null}function S(a,b,c){try{a[a.id][b]=c}catch(d){}}var Ab=0;
|
||||
function Bb(a,b,c,d,f,g){f("Loading "+a+"...");t(a,null,!0,function(k,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),g(h,null)):Cb(h,a,b,c,d,f,g)})}
|
||||
function Cb(a,b,c,d,f,g,k){function h(a,g){if(g)k(g,null);else{if(c){za(c,b,a);var h=b;h&&0>h.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(h=window.location.pathname+h);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+h+'"}';"object"==typeof resources&&(h=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(h?' url="'+h+'"':""))}f||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pdp11$2"));
|
||||
h=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(h=new window.ActiveXObject("Microsoft.XMLDOM"),h.async=!1,h.loadXML(a)):h=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){h=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,h)}}a?f?Db(a,g,h):h(a,null):k("no data"+(b?" for file: "+b:""),null)}
|
||||
function Db(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");t(f,null,!0,function(g,k,h){if(h||!k)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(g=d[3])if(h=k.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],m,F=/( [a-z]+=)(['"])(.*?)\2/g;m=F.exec(g);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=l&&(k=k.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+f);return}k=k.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],k);Db(a,b,c)}})}else c(a,null)}
|
||||
function Eb(a,b,c,d){function f(a){if(void 0===h){var b=k&&H(k,"machine-warning");h=b&&b[0]||k}h&&(h.innerHTML=fa(a))}function g(a){f("Error: "+a);l&&(--Ab||y(!0));l=!1}var k,h,l=!0;Ab++;ya[a]={};try{if(k=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var F=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css";r.styleSheet?r.styleSheet.cssText=m:r.appendChild(document.createTextNode(m));F.appendChild(r)}c||
|
||||
(c="/versions/pdp11/1.24.2/components.xsl");m=function(d,h){h?Bb(c,null,null,!1,f,function(d,l){if(l)if(za(a,c,d),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=h.transformNode(l);m?(k.outerHTML=m,--Ab||y(!0)):g("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(l),(m=m.transformToFragment(h,document))?k.parentNode?(k.parentNode.replaceChild(m,k),--Ab||y(!0)):g("invalid machine element: "+
|
||||
a):g("transformToFragment failed")):g("unable to transform XML: unsupported browser");else g(d)}):g(d)};"<"!=b.charAt(0)?Bb(b,a,d,!0,f,m):Cb(b,null,a,d,!1,f,m)}else g("missing machine element: "+a)}catch(Fb){g(Fb.message)}return l}window.embedPDP11=function(a,b,c,d){y(!1);return Eb(a,b,c,d)};window.enableEvents=y;window.sendEvent=ra;})();
|
||||
function r(a,b,c,d){var f=0,e=null,h=null;if("object"==typeof resources&&(e=resources[a]))return d&&d(a,e,f),[e,f];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&&(e=g.responseText,200==g.status||!g.status&&e.length&&"file:"==(window?window.location.protocol:"file:")||(f=g.status||-1),d&&d(a,e,f))});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||(e=g.responseText,200!=g.status&&(f=g.status||-1),d&&d(a,e,f),h=[e,f]);return h}function p(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
||||
function t(a){window&&window.alert(a)}function ha(a){var b=!1;window&&(b=window.confirm(a));return b}var ia=null;function ja(){if(null==ia){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}ia=a}return ia}function ka(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function la(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function ma(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 u={init:[],show:[],exit:[]},na=!1,oa=!1,pa=!0;function qa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function v(a){u.init.push(a)}
|
||||
function ra(a){if(pa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){t(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function sa(a){!pa&&a?(pa=!0,na&&ta("init"),oa&&ta("show")):pa=a}function ta(a){u[a]&&ra(u[a])}qa("onload",function(){na=!0;ra(u.init)});qa("onpageshow",function(){oa=!0;ra(u.show)});qa(ma("Opera")||ma("iOS")?"onunload":"onbeforeunload",function(){ra(u.exit)});
|
||||
function w(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Na=b.comment;this.cb=b;b=this.id.indexOf(".");0>b?this.va=this.id:(this.Oa=this.id.substr(0,b),this.va=this.id.substr(b+1));this[a]=c;this.h={fa:!1,ia:!1,Ba:!1,w:!1,da:!1};this.sa=null;this.h.da=!1;this.o={};this.B=null;x.push(this)}var ua=void 0,va={};
|
||||
if(window){ua||(ua=window.location.search.substr(1));for(var wa,xa=/\+/g,ya=/([^&=]+)=?([^&]*)/g;wa=ya.exec(ua);)va[decodeURIComponent(wa[1].replace(xa," "))]=decodeURIComponent(wa[2].replace(xa," "))}function za(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=w);a.prototype=za(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Aa=window.PCjs.Machines||(window.PCjs.Machines={}),x=window.PCjs.Components||(window.PCjs.Components=[])}else Aa={},x=[];function Ba(a,b,c){Aa[a]&&b&&(Aa[a][b]=c)}function A(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<x.length;b++){var d=x[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
||||
function Ca(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<x.length;d++)if(c)c==x[d]&&(c=null);else if(!(a!=x[d].type||b&&x[d].id.indexOf(b)))return x[d]}return null}function B(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){t(c.message+" ("+a+")")}return b}
|
||||
function C(a,b){for(var c=D(b.parentNode,"pdp11-control"),d=0;d<c.length;d++)for(var f=c[d].childNodes,e=0;e<f.length;e++){var h=f[e];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 "pdp11-binding":(g=B(h))&&g.binding&&a.L(g.type,g.binding,h,g.value),l=k.length}}}}
|
||||
function D(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)f.test(a[b].className)&&c.push(a[b]);return c}
|
||||
w.prototype={constructor:w,parent:null,toString:function(){return this.name?this.name:this.id||this.type},L:function(a,b,c){switch(b){case "clear":return this.o[b]||(this.o[b]=c,c.onclick=function(a){return function(){a.o.print&&(a.o.print.value="")}}(this)),!0;case "print":return this.o[b]||(this.xa=this.o[b]=c,c.value="",this.K=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.A=function(a){this.K(a,this.va)}),!0;default:return!1}},log:function(){},K:function(){},status:function(a){this.K(this.va+": "+a)},A:function(a,b,c){c=c||this.type;b||t((c?c+": ":"")+a)},Y:function(){return this.h.w=!0},X:function(a,b){b&&(this.h.w=!1);return!0}};function Da(a,b){if(a.h.Ba)return a.h.ia&&(a.h.ia=!1),a.h.Ba=!1;if(a.h.da)return a.K(a.toString()+" error"),!1;a.h.ia=b;return a.h.ia}function E(a){if(!a.h.da&&(a.h.fa=!0,a.h.fa)){var b=a.sa;a.sa=null;b&&b()}}
|
||||
function Ea(a,b){b&&(a.h.fa?b():a.sa=b);return a.h.fa}var Fa="undefined"!==typeof ArrayBuffer;function Ga(a){w.call(this,"Panel",a,Ga)}y(Ga);m=Ga.prototype;m.L=function(a,b,c,d){return this.l&&this.l.L(a,b,c,d)||this.a&&this.a.L(a,b,c,d)?!0:this.parent.L.call(this,a,b,c,d)};m.ga=function(a,b,c,d){this.l=a;this.u=b;this.a=c;this.B=d};m.Y=function(a,b){b||Ha();return!0};m.X=function(){return!0};m.ea=function(){};
|
||||
function Ha(){for(var a=!1,b=D(document,"pdp11","panel"),c=0;c<b.length;c++){var d=b[c],f=B(d),e;a:{e=f.id;if(void 0!==e)for(var h=void 0,h=0;h<x.length;h++)if(x[h].id===e){e=x[h];break a}e=null}e||(a=!0,e=new Ga(f));C(e,d);a&&E(e)}}v(Ha);
|
||||
function Ia(a,b,c){w.call(this,"Bus",a,Ia);this.a=b;this.B=c;this.g=a.busWidth||16;this.j=Math.pow(2,this.g);this.u=this.j-1|0;this.f=16>=this.g?10:20>=this.g?12:24>=this.g?14:15;this.c=1<<this.f;this.l=this.c>>2;this.m=this.c-1;this.i=this.j/this.c|0;a=new F;Ja(a,this.B);this.b=Array(this.i);for(b=0;b<this.i;b++)this.b[b]=a;E(this)}y(Ia);Ia.prototype.reset=function(){};Ia.prototype.Y=function(a,b){b||this.reset();return!0};
|
||||
function Ka(a,b,c,d){for(var f=b,e=c,h=f>>>a.f;0<e&&h<a.b.length;){var g=a.b[h],k=h*a.c,l=a.c-(f-k);l>e&&(l=e);if(g&&g.size){if(g.type==d){if(f+e<=g.ha)return g.ta+=g.ha-f,g.ha=f,!0;if(f>=g.ha+g.ta){l=g.size-(f-k);l>e&&(l=e);g.ta=f-g.ha+l;f=k+a.c;e-=l;h++;continue}}return La(1,f,e)}f=new F(f,l,a.c,d);Ja(f,a.B,g);a.b[h++]=f;f=k+a.c;e-=l}return 0>=e?(a.status(Math.floor(c/1024)+"Kb "+Ma[d]+" at "+("0x"+n(b,4))),!0):La(2,b,c)}
|
||||
function La(a,b,c){t("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Na;if(Fa){var Oa=new ArrayBuffer(2);(new DataView(Oa)).setUint16(0,256,!0);Na=256===(new Uint16Array(Oa))[0]}else Na=!1;var Pa=Na;
|
||||
function F(a,b,c,d){this.id=Qa+=2;this.a=null;this.ha=a;this.ta=b;this.size=c||0;this.type=d||Ra;this.o=d==Sa;Ja(this);this.W=this.Za=!1;if(c)if(Fa)this.c=new ArrayBuffer(c),this.f=new DataView(this.c,0,c),this.b=new Uint8Array(this.c,0,c),this.j=new Uint16Array(this.c,0,c>>1),this.a=new Int32Array(this.c,0,c>>2),Ta(this,Pa?Ua:Va);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;Ta(this,Wa)}else Ta(this)}var Ra=0,Sa=2,Ma=["NONE","RAM","ROM","VID","H/W"],Qa=0;
|
||||
F.prototype={constructor:F,parent:null,save:function(){var a,b;if(Fa)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.f.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(Fa)for(b=0;b<a.length;b++)this.f.setInt32(b<<2,a[b],!0);else this.a=a;return this.W=!0}return!1},m:function(){return 255},s:function(){},J:function(a,b){return this.l(a++,b++)|this.l(a,b)<<8},$:function(a,b,c){this.u(a++,b&255,c++);this.u(a,b>>8,c)},G:function(a){return this.a[a>>
|
||||
2]>>>((a&3)<<3)&255},P: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},U:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.W=!0},ca: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.W=!0},C:function(a,b){return this.D(a,b)},I:function(a,b){return this.N(a,b)},S:function(a,b,c){this.o||this.Xa(a,b,c)},Z:function(a,b,c){this.o||
|
||||
this.aa(a,b,c)},v:function(a){return this.b[a]},F:function(a){return this.b[a]},H:function(a){return this.f.getUint16(a,!0)},O:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.j[a>>1]},R:function(a,b){this.b[a]=b;this.W=!0},T:function(a,b){this.b[a]=b;this.W=!0},V:function(a,b){this.f.setUint16(a,b,!0);this.W=!0},ba:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.j[a>>1]=b;this.W=!0}};function Ja(a,b,c){a.B=b;a.g=a.i=0;c&&((a.g=c.g)&&Xa(a,Ya,!1),(a.i=c.i)&&Za(a,Ya,!1))}
|
||||
function Za(a,b,c){c&&a.i||(a.u=!a.o&&b[2]||a.s);if(c||void 0===c)a.Xa=b[2]||a.s,a.aa=b[3]||a.$}function Xa(a,b,c){c&&a.g||(a.l=b[0]||a.m);if(c||void 0===c)a.D=b[0]||a.m,a.N=b[1]||a.J}function Ta(a,b){b||(b=$a);Xa(a,b,void 0);Za(a,b,void 0)}var $a=[],Wa=[F.prototype.G,F.prototype.P,F.prototype.U,F.prototype.ca],Ya=[F.prototype.C,F.prototype.I,F.prototype.S,F.prototype.Z];if(Fa)var Va=[F.prototype.v,F.prototype.H,F.prototype.R,F.prototype.V],Ua=[F.prototype.F,F.prototype.O,F.prototype.T,F.prototype.ba];
|
||||
function ab(a,b){w.call(this,"CPU",a,ab);var c=a.multiplier||1;this.Ca=a.cycles||b;this.T=c;this.wa=Math.round(this.Ca/1E4)/100;this.R=this.wa*this.T;this.h.M=!1;this.h.Ka=!1;this.h.Ia=a.autoStart;this.h.Ja=!1;this.h.qa=!1;this.oa=this.S=0;this.pa=a.csStart;this.$=a.csInterval;this.aa=a.csStop;this.la=[];this.bb=this.Fa.bind(this);E(this)}y(ab);var bb=["power","reset"];m=ab.prototype;
|
||||
m.ga=function(a,b,c,d){this.l=a;this.u=b;this.B=d;for(b=0;b<bb.length;b++)(c=this.o[bb[b]])&&this.l.L(null,bb[b],c);this.Z=null;a=cb(a,"autoStart");null!=a&&(this.h.Ia="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};m.Y=function(a,b){if(!b){if(a&&this.restore){db(this);if(!this.restore(a))return!1;eb(this)}else this.reset();this.K("No debugger detected")}fb(this);return!0};m.X=function(a){return a?this.save():!0};
|
||||
function gb(a){(a.h.Ia||void 0===a.o.run)&&a.Fa()}m.La=function(){return 0};function eb(a){void 0===a.pa&&(a.pa=0);void 0===a.$&&(a.$=-1);void 0===a.aa&&(a.aa=-1);a.h.qa=0<=a.pa&&0<a.$;a.h.qa&&(a.oa=0,a.S=a.pa-a.N)}function hb(a,b,c,d){a.o[b]&&(void 0===c&&(a.h.da=!0,a.A("Value for "+b+" is invalid"),G(a)),c=!a.h.M||a.h.Ja?n(c,d):"--------".substr(0,d),a.o[b].textContent!=c&&(a.o[b].textContent=c))}
|
||||
m.L=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.o[b]=c;a=!0;break;case "run":this.o[b]=c;c.onclick=function(){var a;if(a=d.l)if(a=d.l,a.h.w)a=!0;else{var b=null,c,g=A(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.h.fa);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.h.w);c++);c==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.h.fa?"powered yet":"ready yet"+(b.sa?" (waiting for notification)":""))+".");a=!1}a&&(d.h.M?G(d):d.Fa())};a=!0;break;case "speed":this.o[b]=
|
||||
c;a=!0;break;case "setSpeed":this.o[b]=c,c.onclick=function(){ib(d,d.T<<1)},c.textContent=this.R.toFixed(2)+"Mhz",a=!0}return a};function jb(a,b,c){a.N+=b;c&&(a.J=a.G=0)}function kb(a,b){var c=1;b&&1<a.T&&a.H&&(c=a.H/a.wa);a.Sa=Math.round(1E3/30);a.ka=Math.floor(a.Ca/30*c);b||(a.ba=a.ka);a.Da=0}function lb(a){return a.N+a.F+a.J-a.G}function db(a){a.H=0;a.Ta=0;a.N=a.F=a.J=a.G=0;eb(a);ib(a,1)}
|
||||
function ib(a,b){if(void 0!==b){.8>a.H/a.R&&(b=1);a.T=b;var c=a.wa*a.T;if(a.R!=c){a.R=c;var c=a.R.toFixed(2)+"Mhz",d=a.o.setSpeed;d&&(d.textContent=c);a.K("target speed: "+c)}}jb(a,a.F);a.F=0;a.D=q();a.I=0;kb(a)}function mb(a){a.J-=a.G;a.G=0}
|
||||
m.Fa=function(){if(Da(this,!0)){if(!this.h.M){ib(this);this.l&&this.l.start(this.D,lb(this));this.h.M=!0;this.h.Ka=!0;this.Z&&this.Z.start();var a=this.o.run;a&&(a.textContent="Halt");this.l&&this.l.ea(!0)}this.Da>=this.Ca&&kb(this,!0);this.ca=0;this.na=q();this.I&&(a=this.na-this.I,a>this.Sa&&(this.D+=a,this.D>this.na&&(this.D=this.na)));try{do{for(var b=this.h.qa?1:this.ka,c=this.la.length-1;0<=c;c--){var d=this.la[c];0>d[0]||b>d[0]&&(b=d[0])}this.Wa(b);for(var f=this.J-this.G,a=f,e=this.la.length-
|
||||
1;0<=e;e--){var h=this.la[e];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.ca+=f;this.F+=f;jb(this,0,!0);a=f;if(this.h.qa){var g=!1;this.oa=this.oa+this.La()|0;this.S-=a;0>=this.S&&(this.S+=this.$,g=!0);0<=this.aa&&this.aa<=lb(this)&&(this.$=this.aa=-1,eb(this),G(this),g=!0);g&&this.K(lb(this)+" cycles: checksum="+n(this.oa))}this.ba-=f;if(0>=this.ba){this.ba+=this.ka;15<=++this.Ta&&(this.l&&this.l.ea(),this.Ta=0);break}}while(this.h.M)}catch(k){G(this);fb(this);this.l&&this.l.stop(q(),lb(this));
|
||||
Da(this,!1);b=k.stack||k.message;this.h.da=!0;this.A(b);return}b=setTimeout;c=this.bb;this.I=q();d=this.Sa;this.ca&&(d=Math.round(d*this.ca/this.ka));d=d-(this.I-this.na);if(f=this.I-this.D)this.H=Math.round(this.F/(10*f))/100,864E5<=f&&(this.N=0,ib(this));if(0>d||this.H<this.R)-1E3>d&&(this.D-=d),d=0;this.Da+=this.ca;this.I+=d;b(c,d)}else fb(this),this.l&&this.l.stop(q(),lb(this))};m.Wa=function(){return 0};
|
||||
function G(a){a.h.ia&&(a.h.Ba=!0);mb(a);jb(a,a.F);a.F=0;if(a.h.M){a.h.M=!1;a.Z&&a.Z.stop();var b=a.o.run;b&&(b.textContent="Run")}a.h.ra=void 0}function fb(a){a.l&&a.l.ea(void 0)}
|
||||
function nb(a){this.ab=+a.model||1170;ab.call(this,a,1E6);db(this);this.h.ra=this.h.Ya=!1;this.Ma=0;this.g=65536;this.c=this.b=32768;this.f=65535;this.i=15;this.a=[0,0,0,0,0,0,0,0];this.Va=[0,0,0,0,0,0];this.U=[0,0,0,0];this.memory=[];this.s=[];this.Ea=this.Ua=0;this.O=2;this.P=255;this.m=0;this.V=-1;this.Ra=this.ya=this.Qa=this.j=this.ua=this.C=this.v=0;this.ma=[7,7,7,7];this.Aa=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0],[65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.fb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}y(nb,ab);m=nb.prototype;m.reset=function(){this.h.M&&G(this);ob(this);db(this);this.h.da=!1;this.parent.reset.call(this)};
|
||||
function ob(a){a.P=255;a.s=[];a.Ua=0;a.v=a.C=a.ua=a.Qa=0;a.ma[0]=a.ma[1]=a.ma[3]=7;a.ya=0}m.La=function(){return 0};m.save=function(){var a=new H(this);I(a,0,[]);I(a,1,[this.Pa,this.N,this.T]);for(var b=this.u,c=0,d=[],f=0;f<b.i;f++){var e=b.b[f];if(e.W||e.Za){d[c++]=f;var h=c++;a:if(e=e.save()){for(var g=0,k=0,l=[];g<e.length;){for(var Q=e[g],z=g+1;z<e.length&&e[z]===Q;)z++;l[k++]=z-g;l[k++]=Q;g=z}if(l.length<e.length){e=l;break a}}d[h]=e}}I(a,2,d);return a.data()};
|
||||
m.restore=function(a){var b=a[1];this.Pa=b[0];this.N=b[1];ib(this,b[3]);a:{b=this.u;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],f=a[c+1];if(f&&f.length<b.l){for(var e=0,h=Array(b.l),g=0;g<f.length-1;)for(var k=f[g++],l=f[g++];k--;)h[e++]=l;f=h}e=b.b[d];if(!e||!e.restore(f)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
m.L=function(a,b,c){var d=!1;switch(b){case "PC":case "PSW":case "IF":case "SF":case "ZF":case "CF":this.o[b]=c;this.Ma++;d=!0;break;default:d=this.parent.L.call(this,a,b,c)}return d};m.ea=function(a){this.Ma&&(a||!this.h.M||this.h.Ja)&&(a=this.i&-14|0|(this.eb&255?0:4)|(this.eb&256?1:0),hb(this,"PSW",a,4),hb(this,"SF",a&8?1:0,1),hb(this,"ZF",a&4?1:0,1),hb(this,"CF",a&1?1:0,1));if(a=this.o.speed)a.textContent=this.h.M&&this.H?this.H.toFixed(2)+"Mhz":"Stopped"};
|
||||
function pb(a,b){var c,d;a.b=b<<12;a.f=~b&4;a.c=b<<14;a.g=b<<16;if((b^a.i)&2048)for(c=0;6>c;c++)d=a.a[c],a.a[c]=a.Va[c],a.Va[c]=d;(a.j=b>>14&3)!==(d=a.i>>14&3)&&(a.U[d]=a.a[6],a.a[6]=a.U[a.j]);a.O=2;a.i=b}
|
||||
function J(a,b){var c,d,f=0;0>a.V?(a.i=a.i&63728|a.b>>12&8|a.c>>14&2|a.g>>16&1,a.f&65535||(a.i|=4),a.V=a.i):a.j||(b=4,f=1);a.v&57344||(a.C=63222);a.j=0;0<=(c=K(a,b|65536))&&0<=(d=K(a,b+2&65535|65536))&&(pb(a,d&53247|a.V>>2&12288),f&&(a.a[6]=4),0<=L(a,a.V)&&0<=L(a,a.a[7])&&(a.a[7]=c));a.m=0;return a.V=-1}
|
||||
function qb(a,b,c){var d,f,e,h=0;if(c&a.Qa){d=b>>13&a.ma[a.j];f=a.Aa[a.j][d];e=(a.Aa[a.j][d+16]<<6)+(b&8191)&4194303;if(a.ua&16){if(3932160<=e&&4186112>e){e=e&262143;var g=e>>13&31;31>g?a.ua&32&&(e=a.fb[g]+(e&8190)&4194302,3932160<=e&&4186112>e&&console.log("panic(898)")):e|=4186112}}else e&=262143,253952<=e&&(e|=4186112);if(3932160>e&&(3915776<=e||e&1&&!(c&1)))return J(a,4);switch(f&7){case 1:h=4096;case 2:f|=128;c&4&&(h=8192);break;case 4:h=4096;case 5:c&4&&(h=4096);case 6:f|=c&4?192:128;break;
|
||||
default:h=32768}32512!==(f&32520)&&(f&8?f&32512&&(b&8128)<(f>>2&8128)&&(h|=16384):(b&8128)>(f>>2&8128)&&(h|=16384));a.Aa[a.j][d]=f;if(4194170!==e||a.j)a.ya=a.j,a.Ra=d;if(h){if(h&57344)return 0<=a.V&&(h|=128),a.v&57344||(a.v=a.v|h|a.ya<<5|a.Ra<<1),J(a,168);a.v&61440||!(4191360>e||4194239<e)||(a.v|=4096,a.v&512&&(a.m|=2))}}else if(e=b&65535,57344<=e)e|=4186112;else if(e&1&&!(c&1))return J(a,4);return e}function M(a,b){return 4194304<=b?a.a[b-4194304]:3932160<=b?-1:0<=b?a.memory[b>>1]:b}
|
||||
function N(a,b,c){c&=65535;return 4194304<=b?a.a[b-4194304]=c:3932160<=b?-1:0<=b?a.memory[b>>1]=c:b}function O(a,b){var c;return 4194304<=b?a.a[b-4194304]&255:3932160<=b?-1:0<=b?(c=a.memory[b>>1],b&1&&(c=c>>8),c&255):b}function P(a,b,c){c&=255;return 4194304<=b?a.a[b-4194304]=a.a[b-4194304]&65280|c:3932160<=b?-1:0<=b?b&1?a.memory[b>>1]=c<<8|a.memory[b>>1]&255:a.memory[b>>1]=a.memory[b>>1]&65280|c:b}function K(a,b){return M(a,qb(a,b,2))}
|
||||
function rb(a){var b=K(a,a.a[6]|65536);0<=b&&(a.a[6]=a.a[6]+2&65535);return b}function L(a,b){var c,d;a.a[6]=d=a.a[6]-2&65535;a.v&57344||(a.C=a.C<<8|246);if(!a.j&&d<=a.P&&4<d){if(d<=a.P-32)return a.a[6]=4,J(a,4);a.m|=4}return 0<=(c=qb(a,d|65536,4))?N(a,c,b):c}
|
||||
function R(a,b,c){var d,f,e=b&7;switch(b>>3&7){case 0:return J(a,4);case 1:if(6===e&&!a.j&&c&4&&(a.a[6]<=a.P||65534<=a.a[6])){if(a.a[6]<=a.P-32||65534<=a.a[6])return a.a[6]=4,J(a,4);a.m|=4}return 7===e?a.a[e]:a.a[e]|65536;case 2:f=2;d=a.a[e];7!==e&&(d|=65536,6>e&&c&1&&(f=1));break;case 3:f=2;d=a.a[e];7!==e&&(d|=65536);if(0>(d=K(a,d)))return d;d|=65536;break;case 4:f=-2;6>e&&c&1&&(f=-1);d=a.a[e]+f&65535;7!==e&&(d|=65536);break;case 5:f=-2;d=a.a[e]-2&65535;7!==e&&(d|=65536);if(0>(d=K(a,d)))return d;
|
||||
d|=65536;break;case 6:if(0>(d=K(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return d|65536;case 7:if(0>(d=K(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return 0>(d=K(a,d|65536))?d:d|65536}a.a[e]=a.a[e]+f&65535;a.v&57344||(a.C=a.C<<8|f<<3&248|e);if(6===e&&!a.j&&c&4&&0>=f&&(a.a[6]<=a.P||65534<=a.a[6])){if(a.a[6]<=a.P-32)return a.a[6]=4,J(a,4);a.m|=4}return d}function S(a,b,c){var d;return b&56?(0<=(d=R(a,b,c))&&(d=qb(a,d,c)),d):4194304+(b&7)}
|
||||
function T(a,b){var c;b&56?0<=(c=S(a,b,2))&&(c=M(a,c)):c=a.a[b&7];return c}function U(a,b){var c;b&56?0<=(c=S(a,b,3))&&(c=O(a,c)):c=a.a[b&7]&255;return c}function V(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||
m.Wa=function(a){this.h.ra=!0;this.h.Ya=!1;this.h.Ka=!1;this.J=this.G=a;this.Pa&256?(mb(this),a=!1):a=!0;if(a){do{var b,c,d,f,e;if(this.O)if(1===this.O)this.O=2;else{this.O=0;e=-1;b=this.Ua&224;if(0<(a=this.s.length))for(;0<a--;){if(0<this.s[a].za){this.s[a].za--;this.O=2;break}if(this.s[a].Ga){if(!this.s[a].Ga()){this.s.splice(a,1);e--;continue}this.s[a].Ga=null}this.s[a].$a>b&&(b=this.s[a].$a,e=a)}b>(this.i&224)&&(0>e?J(this,160):(J(this,this.s[e].gb),this.s.splice(e,1)))}this.v&57344||(this.C=
|
||||
0);this.m=this.i&16;if(0<=(a=K(this,this.a[7])))switch(this.a[7]=this.a[7]+2&65535,a&61440){case 4096:0<=(b=T(this,a>>6))&&(a&56?0<=(d=S(this,a,4))&&0<=N(this,d,b)&&(this.b=this.f=b,this.c=0):(this.b=this.f=this.a[a&7]=b,this.c=0));break;case 8192:0<=(b=T(this,a>>6))&&0<=(c=T(this,a))&&(this.b=this.f=this.g=a=b-c,this.c=(b^c)&(b^a));break;case 12288:0<=(b=T(this,a>>6))&&0<=(c=T(this,a))&&(this.b=this.f=b&c,this.c=0);break;case 16384:0<=(b=T(this,a>>6))&&(a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c&~b,
|
||||
0<=N(this,d,a)&&(this.b=this.f=a,this.c=0)):(this.b=this.f=a=this.a[a&7]&=~b,this.c=0));break;case 20480:0<=(b=T(this,a>>6))&&(a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c|b,0<=N(this,d,a)&&(this.b=this.f=a,this.c=0)):(this.b=this.f=a=this.a[a&7]|=b,this.c=0));break;case 24576:0<=(b=T(this,a>>6))&&(a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=b+c,0<=N(this,d,a)&&(this.b=this.f=this.g=a,this.c=(b^a)&(c^a))):(e=a&7,c=this.a[e],this.a[e]=(a=b+c)&65535,this.b=this.f=this.g=a,this.c=(b^a)&(c^a)));break;case 36864:0<=
|
||||
(b=U(this,a>>6))&&(a&56?0<=(d=S(this,a,5))&&0<=P(this,d,b)&&(this.b=this.f=b<<8,this.c=0):(b&128&&(b|=65280),this.b=this.f=this.a[a&7]=b,this.c=0));break;case 40960:0<=(b=U(this,a>>6))&&0<=(c=U(this,a))&&(a=b-c,this.b=this.f=this.g=a<<8,this.c=((b^c)&(b^a))<<8);break;case 45056:0<=(b=U(this,a>>6))&&0<=(c=U(this,a))&&(this.b=this.f=(b&c)<<8,this.c=0);break;case 49152:0<=(b=U(this,a>>6))&&0<=(c=O(this,d=S(this,a,7)))&&(a=c&~b,0<=P(this,d,a)&&(this.b=this.f=a<<8,this.c=0));break;case 53248:0<=(b=U(this,
|
||||
a>>6))&&0<=(c=O(this,d=S(this,a,7)))&&(a=c|b,0<=P(this,d,a)&&(this.b=this.f=a<<8,this.c=0));break;case 57344:0<=(b=T(this,a>>6))&&(a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c-b,0<=N(this,d,a)&&(this.b=this.f=this.g=a,this.c=(b^c)&(c^a))):(e=a&7,c=this.a[e],this.a[e]=(a=c-b)&65535,this.b=this.f=this.g=a,this.c=(b^c)&(c^a)));break;default:switch(a&65024){case 2048:0<=(f=R(this,a,0))&&(e=a>>6&7,0<=L(this,this.a[e])&&(this.a[e]=this.a[7],this.a[7]=f&65535));break;case 28672:0<=(b=T(this,a))&&(e=a>>6&7,b&
|
||||
32768&&(b|=-65536),c=this.a[e],c&32768&&(c|=-65536),a=~~(b*c),this.a[e]=a>>16&65535,this.a[e|1]=a&65535,this.b=a>>16,this.f=this.b|a,this.g=this.c=0,-32768>a||32767<a)&&(this.g=65536);break;case 29184:0<=(b=T(this,a))&&(b?(e=a>>6&7,c=this.a[e]<<16|this.a[e|1],this.g=this.c=0,b&32768&&(b|=-65536),a=~~(c/b),-32768<=a&&32767>=a?(this.a[e]=a&65535,this.a[e|1]=c-a*b&65535,this.f=a>>16|a,this.b=a>>16):(this.c=32768,this.f=a>>15|a,this.b=c>>16,-1===b&&65534===this.a[e]&&(this.a[e]=this.a[e|1]=1))):(this.f=
|
||||
this.b=0,this.c=32768,this.g=65536));break;case 29696:0<=(b=T(this,a))&&(e=a>>6&7,a=this.a[e],a&32768&&(a|=4294901760),this.g=this.c=0,b&=63,b&32?(b=64-b,16<b&&(b=16),this.g=a<<17-b,a=a>>b):b&&(16<b?(this.c=a,a=0):(this.g=a=a<<b,(c=a>>15&65535)&&65535!==c&&(this.c=32768))),this.a[e]=a&65535,this.b=this.f=a);break;case 30208:if(0<=(b=T(this,a))){e=a>>6&7;c=this.a[e]<<16|this.a[e|1];this.g=this.c=0;b&=63;if(b&32)b=64-b,32<b&&(b=32),a=c>>b-1,this.g=a<<16,a>>=1,c&2147483648&&(a|=4294967295<<32-b);else if(b){if(a=
|
||||
c<<b-1,this.g=a>>15,a<<=1,32<b&&(b=32),c>>=32-b)c|=4294967295<<b&4294967295,4294967295!==c&&(this.c=32768)}else a=c;this.a[e]=a>>16&65535;this.a[e|1]=a&65535;this.b=a>>16;this.f=a>>16|a}break;case 30720:a&56?0<=(c=M(this,d=S(this,a,6)))&&(c^=this.a[a>>6&7],0<=N(this,d,c)&&(this.b=this.f=c,this.c=0)):(this.b=this.f=c=this.a[a&7]^=this.a[a>>6&7],this.c=0);break;case 32256:e=a>>6&7;if(this.a[e]=this.a[e]-1&65535)this.a[7]=this.a[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.a[7]=V(this.a[7],
|
||||
a);break;case 512:this.f&65535&&(this.a[7]=V(this.a[7],a));break;case 768:this.f&65535||(this.a[7]=V(this.a[7],a));break;case 1024:(this.b&32768)===(this.c&32768)&&(this.a[7]=V(this.a[7],a));break;case 1280:(this.b&32768)!==(this.c&32768)&&(this.a[7]=V(this.a[7],a));break;case 1536:this.f&65535&&(this.b&32768)===(this.c&32768)&&(this.a[7]=V(this.a[7],a));break;case 1792:this.f&65535&&(this.b&32768)===(this.c&32768)||(this.a[7]=V(this.a[7],a));break;case 32768:this.b&32768||(this.a[7]=V(this.a[7],
|
||||
a));break;case 33280:!(this.g&65536)&&this.f&65535&&(this.a[7]=V(this.a[7],a));break;case 33024:this.b&32768&&(this.a[7]=V(this.a[7],a));break;case 33536:if(this.g&65536||!(this.f&65535))this.a[7]=V(this.a[7],a);break;case 33792:this.c&32768||(this.a[7]=V(this.a[7],a));break;case 34048:this.c&32768&&(this.a[7]=V(this.a[7],a));break;case 34304:this.g&65536||(this.a[7]=V(this.a[7],a));break;case 34560:this.g&65536&&(this.a[7]=V(this.a[7],a));break;case 34816:J(this,24);break;case 35072:J(this,28);break;
|
||||
default:switch(a&65472){case 64:0<=(f=R(this,a,0))&&(this.a[7]=f&65535);break;case 192:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c<<8|c>>8,0<=N(this,d,a)&&(this.b=this.f=c&65280,this.c=this.g=0)):(e=a&7,c=this.a[e],this.a[e]=(c<<8|c>>8)&65535,this.b=this.f=c&65280,this.c=this.g=0);break;case 2560:a&56?0<=(d=S(this,a,4))&&0<=N(this,d,0)&&(this.b=this.g=this.c=this.f=0):this.b=this.g=this.c=this.f=this.a[a&7]=0;break;case 2624:0<=(c=M(this,d=S(this,a,6)))&&(a=~c,0<=N(this,d,a)&&(this.b=this.f=a,this.g=
|
||||
65536,this.c=0));break;case 2688:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c+1,0<=N(this,d,a)&&(this.b=this.f=a,this.c=a&(a^c))):(e=a&7,c=this.a[e],a=c+1,this.a[e]=a&65535,this.b=this.f=a,this.c=a&(a^c));break;case 2752:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c-1,0<=N(this,d,a)&&(this.b=this.f=a,this.c=(a^c)&c)):(e=a&7,c=this.a[e],a=c-1,this.a[e]=a&65535,this.b=this.f=a,this.c=(a^c)&c);break;case 2816:0<=(c=M(this,d=S(this,a,6)))&&(a=-c,0<=N(this,d,a)&&(this.g=this.b=this.f=a,this.c=a&c));break;case 2880:0<=
|
||||
(c=M(this,d=S(this,a,6)))&&(a=c+(this.g>>16&1),0<=N(this,d,a)&&(this.g=this.b=this.f=a,this.c=a&(a^c)));break;case 2944:0<=(c=M(this,d=S(this,a,6)))&&(a=c-(this.g>>16&1),0<=N(this,d,a)&&(this.g=this.b=this.f=a,this.c=(a^c)&c));break;case 3008:0<=(c=T(this,a))&&(this.b=this.f=c,this.g=this.c=0);break;case 3072:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=(this.g&65536|c)>>1,0<=N(this,d,a)&&(this.g=c<<16,this.b=this.f=a,this.c=a^this.g>>1)):(e=a&7,c=this.a[e],a=(this.g&65536|c)>>1,this.a[e]=a&65535,this.g=
|
||||
c<<16,this.b=this.f=a,this.c=a^this.g>>1);break;case 3136:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c<<1|this.g>>16&1,0<=N(this,d,a)&&(this.g=this.b=this.f=a,this.c=a^c)):(e=a&7,c=this.a[e],a=c<<1|this.g>>16&1,this.a[e]=a&65535,this.g=this.b=this.f=a,this.c=a^c);break;case 3200:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c&32768|c>>1,0<=N(this,d,a)&&(this.g=c<<16,this.b=this.f=a,this.c=this.b^this.g>>1)):(e=a&7,c=this.a[e],a=c&32768|c>>1,this.a[e]=a&65535,this.g=c<<16,this.b=this.f=a,this.c=this.b^this.g>>
|
||||
1);break;case 3264:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c<<1,0<=N(this,d,a)&&(this.g=this.b=this.f=a,this.c=a^c)):(e=a&7,c=this.a[e],a=c<<1,this.a[e]=a&65535,this.g=this.b=this.f=a,this.c=a^c);break;case 3328:f=this.a[7]+((a&63)<<1)&65535;0<=(b=K(this,f|65536))&&(this.a[7]=this.a[5],this.a[5]=b,this.a[6]=f+2&65535);break;case 3392:a&56?0<=(f=R(this,a,0))&&(61440!==(this.i&61440)&&(f&=65535),this.j=this.i>>12&3,0<=(b=K(this,f))&&(this.j=this.i>>14&3,0<=L(this,b)&&(this.b=this.f=b,this.c=0))):(e=a&
|
||||
7,b=6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]:this.U[this.i>>12&3],0<=L(this,b)&&(this.b=this.f=b,this.c=0));break;case 3456:0<=(c=rb(this))&&((this.v&57344||(this.C=22),a&56)?0<=(f=R(this,a,0))&&(f&=65535,this.j=this.i>>12&3,0<=(d=qb(this,f,4))&&(this.j=this.i>>14&3,0<=N(this,d,c)&&(this.b=this.f=c,this.c=0))):(e=a&7,6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]=c:this.U[this.i>>12&3]=c,this.b=this.f=c,this.c=0));break;case 3520:0<=(d=S(this,a,4))&&(a=-(this.b>>15&1),0<=N(this,d,
|
||||
a)&&(this.f=a,this.c=0));break;case 35328:a&56?0<=(d=S(this,a,5))&&0<=P(this,d,0)&&(this.b=this.g=this.c=this.f=0):(this.a[a&7]&=65280,this.b=this.g=this.c=this.f=0);break;case 35392:0<=(c=O(this,d=S(this,a,7)))&&(a=~c,0<=P(this,d,a)&&(this.b=this.f=a<<8,this.g=65536,this.c=0));break;case 35456:0<=(c=O(this,d=S(this,a,7)))&&(a=c+1,0<=P(this,d,a)&&(this.b=this.f=a<<8,this.c=(a&(a^c))<<8));break;case 35520:0<=(c=O(this,d=S(this,a,7)))&&(a=c-1,0<=P(this,d,a)&&(this.b=this.f=a<<8,this.c=((a^c)&c)<<8));
|
||||
break;case 35584:0<=(c=O(this,d=S(this,a,7)))&&(a=-c,0<=P(this,d,a)&&(this.g=this.b=this.f=a<<8,this.c=(a&c)<<8));break;case 35648:0<=(c=O(this,d=S(this,a,7)))&&(a=c+(this.g>>16&1),0<=P(this,d,a)&&(this.b=this.f=this.g=a<<8,this.c=(a&(a^c))<<8));break;case 35712:0<=(c=O(this,d=S(this,a,7)))&&(a=c-(this.g>>16&1),0<=P(this,d,a)&&(this.b=this.f=this.g=a<<8,this.c=((a^c)&c)<<8));break;case 35776:0<=(c=U(this,a))&&(this.b=this.f=c<<8,this.g=this.c=0);break;case 35840:0<=(c=O(this,d=S(this,a,7)))&&(a=((this.g&
|
||||
65536)>>8|c)>>1,0<=P(this,d,a)&&(this.g=c<<16,this.b=this.f=a<<8,this.c=this.b^this.g>>1));break;case 35904:0<=(c=O(this,d=S(this,a,7)))&&(a=c<<1|this.g>>16&1,0<=P(this,d,a)&&(this.g=this.b=this.f=a<<8,this.c=(a^c)<<8));break;case 35968:0<=(c=O(this,d=S(this,a,7)))&&(a=c&128|c>>1,0<=P(this,d,a)&&(this.g=c<<16,this.b=this.f=a<<8,this.c=this.b^this.g>>1));break;case 36032:0<=(c=O(this,d=S(this,a,7)))&&(a=c<<1,0<=P(this,d,a)&&(this.g=this.b=this.f=a<<8,this.c=(a^c)<<8));break;case 36160:a&56?0<=(f=R(this,
|
||||
a,0))&&(this.j=this.i>>12&3,0<=(b=K(this,f|65536))&&(this.j=this.i>>14&3,0<=L(this,b)&&(this.b=this.f=b,this.c=0))):(e=a&7,b=6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]:this.U[this.i>>12&3],0<=L(this,b)&&(this.b=this.f=b,this.c=0));break;case 36224:0<=(c=rb(this))&&((this.v&57344||(this.C=22),a&56)?0<=(f=R(this,a,0))&&(this.j=this.i>>12&3,0<=(d=qb(this,f|65536,4))&&(this.j=this.i>>14&3,0<=N(this,d,c)&&(this.b=this.f=c,this.c=0))):(e=a&7,6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]=
|
||||
c:this.U[this.i>>12&3]=c,this.b=this.f=c,this.c=0));break;default:switch(a&65528){case 128:0<=(b=rb(this))&&(e=a&7,this.a[7]=this.a[e],this.a[e]=b);break;case 152:this.i&49152||(this.i=this.i&63519|(a&7)<<5,this.O=1);break;case 160:case 168:a&1&&(this.g=0);a&2&&(this.c=0);a&4&&(this.f=1);a&8&&(this.b=0);break;case 176:case 184:a&1&&(this.g=65536);a&2&&(this.c=32768);a&4&&(this.f=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.i?J(this,4):(this.Ea=3,mb(this),console.log("HALT at "+
|
||||
this.a[7].toString(8)));break;case 1:e=0;if(0<(a=this.s.length))for(;0<a--;)e+=this.s[a].za,this.s[a].za=0;0===e&&0===this.Ea&&(this.Ea=2,mb(this));break;case 3:J(this,12);break;case 4:J(this,16);break;case 5:this.i&49152||ob(this);break;case 2:case 6:d=this.a[6];0<=(f=K(this,d|65536))&&(d=d+2&65535,0<=(b=K(this,d|65536))&&(this.a[6]=d+2&65535,b&=63743,this.i&49152&&(b=b&63519|this.i&63712),this.a[7]=f,pb(this,b),this.m&=-17,2===a&&(this.m|=this.i&16)));break;default:J(this,8)}}}}}}this.m&&(this.m&
|
||||
2?J(this,168):this.m&4?J(this,4):this.m&16&&J(this,12),this.m=0)}while(0<this.G)}return this.h.ra?this.J-this.G:void 0===this.h.ra?0:-1};v(function(){for(var a=D(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new nb(d);C(d,c)}});
|
||||
function W(a){w.call(this,"ROM",a,W);this.b=null;this.j=a.addr;this.c=a.size;this.l=a.writable;this.f=a.alias;this.g=a.file;this.m=ba(this.g);if(this.g){a=this.g;var b=ca(this.m);"json"!=b&&"hex"!=b&&(a=p()+"/api/v1/dump?file="+this.g+"&format=bytes&decimal=true");var c=this;r(a,null,!0,function(a,b,e){sb(c,a,b,e)})}}y(W);W.prototype.ga=function(a,b,c,d){this.u=b;this.a=c;this.B=d;tb(this)};W.prototype.Y=function(){this.i&&(this.B&&this.B.a(this.id,this.j,this.c,this.i),delete this.i);return!0};
|
||||
W.prototype.X=function(){return!0};
|
||||
function sb(a,b,c,d){if(d)a.A("Unable to load system ROM (error "+d+": "+b+")");else{Ba(a.Oa,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var f=eval("("+c+")"),e=f.bytes,h=f.data;if(e)a.b=e;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=f;a.i=f.symbols;if(!a.b.length){t("Empty ROM: "+b);return}if(1==a.b.length){t(a.b[0]);return}}catch(g){a.A("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),f=0;f<b.length;f++)a.b[f]=aa(b[f]);tb(a)}}
|
||||
function tb(a){if(!Ea(a))if(!a.g)E(a);else if(a.b&&a.u){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.h.da=!0;a.A(b)}else{b=a.j;if(Ka(a.u,b,a.c,a.l?1:Sa)){var c;for(c=0;c<a.b.length;c++){var d=a.u,f=b+c;d.b[(f&d.u)>>>d.f].Xa(f&d.m,a.b[c]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(c=0;c<b.length;c++){for(var e=a,d=b[c],f=e.u,h=e.c,g=[],k=e.j>>>f.f;0<h&&k<
|
||||
f.b.length;)g.push(f.b[k++]),h-=f.c;f=e.u;e=e.c;h=0;for(d>>>=f.f;0<e&&d<f.b.length;){k=g[h++];if(!k)break;f.b[d++]=k;e-=f.c}}delete a.b}}E(a)}}v(function(){for(var a=D(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new W(d);C(d,c)}});function ub(a){w.call(this,"RAM",a,ub);this.f=a.addr;this.c=a.size;this.b=!1}y(ub);m=ub.prototype;m.ga=function(a,b,c,d){this.u=b;this.a=c;this.B=d;E(this)};m.Y=function(a,b){b||this.reset();return!0};m.X=function(a){return a?this.save():!0};
|
||||
m.reset=function(){!this.b&&this.c&&Ka(this.u,this.f,this.c,1)&&(this.b=!0);this.b||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};v(function(){for(var a=D(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new ub(d);C(d,c)}});function vb(a){w.call(this,"Keyboard",a,vb);E(this)}y(vb);vb.prototype.L=function(){return!1};vb.prototype.ga=function(a,b,c,d){this.l=a;this.a=c;this.B=d;this.Z=null};
|
||||
v(function(){for(var a=D(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new vb(d);C(d,c)}});
|
||||
function wb(a,b,c){w.call(this,"Computer",a,wb);this.h.w=!1;xb(this,b);this.v=cb(this,"autoPower",a);this.f=0;this.H=a.busWidth||a.buswidth;this.b=X;this.m=null;this.j=this.F=!1;this.I=cb(this,"url")||"";(Math.random()+.1).toString(36);this.c=yb(this);if(this.a=Ca("CPU",this.id)){this.B=Ca("Debugger",this.id);this.u=new Ia({id:this.Oa+".bus",busWidth:this.H},this.a,this.B);var d,f=A(this.id);if((this.g=Ca("Panel",this.id))&&this.g.xa)for(b=0;b<f.length;b++)d=f[b],d.A=this.g.A,d.K=this.g.K,d.xa=this.g.xa;
|
||||
this.K("PDP11 v1.24.2\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<f.length;b++)d=f[b],d.ga&&d.ga(this,this.u,this.a,this.B);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.l=d:this.b=parseInt(d,10));var e;if(a=cb(this,"state")||(e=!0,a.state))b=this.C=a,e||(this.j=!0,this.b=X),this.b&&(this.s=new H(this,"1.24.2"),Y(this.s)?b=null:delete this.s);!b&&this.b&&(b=zb(this))&&(this.j=!0);if(b){var h=this;r(b,null,
|
||||
!0,function(a,b,c){c?(h.l=null,h.j=!1,h.A("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(h.m=b,h.F=!0);E(h)})}else E(this);this.o.power||(this.v=!0);!c&&this.v&&Ab(this,this.ja)}else t("Unable to find CPU component")}y(wb);var X=0;function xb(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){t(d.message+" ("+c+")")}}a.G=b}
|
||||
function cb(a,b,c){var d=b.toLowerCase(),d=va[b]||va[d];void 0===d&&a.G&&(d=a.G[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Ab(a,b,c){for(var d=A(a.id),f=0;f<=d.length;f++){var e=f<d.length?d[f]:a;if(!Ea(e)){Ea(e,function(){Ab(a,b,c)});return}}b.call(a,c)}
|
||||
function Bb(a,b){var c=new H(a,"1.24.2","validate");if(Y(c)&&Cb(c)){var d=Z(c,"timestamp"),f=b?Z(b,"timestamp"):"unknown";d!=f&&(a.A("Machine state may be out-of-date\n("+d+" vs. "+f+")\nCheck your browser's local storage limits"),b||c.clear())}}m=wb.prototype;
|
||||
m.ja=function(a){void 0===a&&(a=this.b||(this.m?1:X));if(!this.f){this.f++;var b=!1,c=!1;this.D=!1;var d=this.s||new H(this,"1.24.2");if(-1==a)b=!0;else if(a>X){if(Y(d,this.m)){this.i=new H(this,"1.24.2","failsafe");Y(this.i)&&(Db(this,d),a=2,Eb(this.i));I(this.i,"timestamp",ga());Fb(this.i);var f=this.b&&!this.j;if(1==a||ha("Click OK to restore the previous PDP11 machine state, or CANCEL to reset the machine.")){if(c=Cb(d)){var e=Z(d,"code"),h=Z(d,"data");e&&("ok"==e?Y(d,h):("error"==e&&"no machine state"!=
|
||||
h?(this.A("Error: "+h),"unable to verify user"==h&&(la("user",""),this.c=null)):this.K(e+": "+h),Eb(d),Y(d)?(c=Cb(d),f=!0):c=!1))}f&&Bb(this,c?d:null)}else 2==a&&d.clear()}else Bb(this);delete this.m;delete this.s}f=A(this.id);for(e=0;e<f.length;e++)h=f[e],h!==this&&h!=this.a&&(c=Gb(this,h,d,b,c));b=[d,a,c];-1!=a?Ab(this,this.Ha,b):this.Ha(b)}};
|
||||
function Gb(a,b,c,d,f){if(!b.h.w){b.h.w=!0;if(b.Y){var e=null;f&&((e=Z(c,b.id))||(e=Z(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof e&&(e=null);!b.Y(e,d)&&e&&(t("Unable to restore state for "+b.type),a.C&&!a.F?(c.clear(),a.b=X,window&&window.location.reload()):a.D=!0,b.Y(null),f=!1)}if(!d&&b.Na)for(a=b.Na.split("|"),c=0;c<a.length;c++)b.status(a[c])}return f}
|
||||
m.Ha=function(a){var b=a[0],c=0>a[1];a=a[2];this.J=!0;this.h.w=!0;var d=this.o.power;d&&(d.textContent="Shutdown");this.a&&(Gb(this,this.a,b,c,a),gb(this.a));this.D&&(Db(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0};
|
||||
function Db(a,b){if(ha("There may be a problem with your PDP11 machine.\n\nTo help us diagnose it, click OK to send this PDP11 machine state to http://www.pcjs.org.")){var c=a.c||"",d=b.toString(),f={app:"PDP11",ver:"1.24.2"};f.url=a.I;f.user=c;f.type="bug";f.data=d;r("http://www.pcjs.org/api/v1/report",f,!0)}}
|
||||
function Hb(a,b,c){var d,f="none";if(a.f)return null;a.f--;var e=new H(a,"1.24.2"),h=new H(a,"1.24.2","validate"),g=ga();I(h,"timestamp",g);I(e,"timestamp",g);I(e,"version","1.24.2");I(e,"url",window?window.location.href:null);I(e,"browser",window?window.navigator.userAgent:"");a.a&&a.a.X&&(c&&G(a.a),d=a.a.X(b,c),"object"===typeof d&&I(e,a.a.id,d),c&&(a.a.h.w=!1,!1===d&&(f=null)));for(var g=A(a.id),k=0;k<g.length;k++){var l=g[k];l.h.w&&(l.X&&(d=l.X(b,c),"object"===typeof d&&I(e,l.id,d)),c&&(l.h.w=
|
||||
!1,!1===d&&(f=null)))}f&&(c?(g=d=!1,b?(a.c&&Ib(a,a.c,e.toString()),Fb(h)&&Fb(e)||(f=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&e.clear(g)):f=e.toString());c&&(a.h.w=!1,b=a.o.power)&&(b.textContent="Power");a.f=0;return f}m.reset=function(){this.u&&this.u.reset&&this.u.reset();for(var a=A(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c.reset&&c.reset()}};m.start=function(a,b){for(var c=A(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.start&&f.start(a,b)}};
|
||||
m.stop=function(a,b){for(var c=A(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.stop&&f.stop(a,b)}};
|
||||
m.L=function(a,b,c){var d=this;switch(b){case "power":return this.o[b]=c,c.onclick=function(){d.f||(d.h.w?Hb(d,!1,!0):Ab(d,d.ja))},!0;case "reset":return this.o[b]=c,c.onclick=function(){if(d.h.w&&!d.f)if(d.b&&!d.l){var a=ha("Click OK to save changes to this PDP11 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Hb(d,a,!0);!a&&d.C?window&&window.location.reload():d.ja(X)}else d.reset(),d.a&&gb(d.a)},!0;case "save":if(da()){c.parentNode.removeChild(c);break}this.o[b]=c;c.onclick=
|
||||
function(){var a=yb(d,!0);if(a){var b=!!(d.b&&!d.l||d.C),c=Hb(d,b);b?Ib(d,a,c):d.A("Resume disabled, machine state not saved")}};return!0}return!1};function yb(a,b){var c=a.c;c||(c=ka("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=Jb(a,c))||a.A("The user ID is invalid."))):b&&a.A("Browser local storage is not available"));return c}
|
||||
function Jb(a,b){a.c=null;var c=r(p()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(la("user",c.data),a.c=c.data)}catch(f){t(f.message+" ("+d+")")}return a.c}function zb(a){var b=null;a.c&&(b=p()+"/api/v1/user?req=load&user="+a.c+"&state="+Kb(a,"1.24.2"));return b}
|
||||
function Ib(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Kb(a,"1.24.2");d.data=c;b=r(p()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var f=d.indexOf("\n");0<f&&(d=d.substr(0,f));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.A("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.A(c),la("user",""),a.c=null)}}
|
||||
m.ea=function(a){this.a&&this.a.ea(a);this.g&&this.g.ea(a)};v(function(){for(var a=D(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=B(c),c=D(c,"pdp11","computer"),f=0;f<c.length;f++){var e=c[f],h=B(e),h=new wb(h,d,!0);C(h,e);h.v&&Ab(h,h.ja)}});u.show.push(function(){for(var a=D(document,"pdp11","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=Ca("Computer",c.id))&&c.J&&!c.h.w&&c.ja(-1)}});
|
||||
u.exit.push(function(){for(var a=D(document,"pdp11","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=Ca("Computer",c.id))&&c.h.w&&Hb(c,!(!c.b||c.l),!0)}});function H(a,b,c){this.id=a.id;this.key=Kb(a,b,c);this.B=a.B;Eb(this,a.cb)}function Kb(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){Eb(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(f){}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(f){}b.splice(c,1);c=0}}};
|
||||
function Eb(a,b){a[a.id]={};b&&I(a,"parms",b);a.a=!1}function Fb(a){var b=!0;if(ja()){var c=JSON.stringify(a[a.id]);la(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Cb(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){t(c.message||c),b=!1}return b}function Y(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:ja()&&(b=ka(a.key))?(a[a.id]=b,a.a=!0):!1}function Z(a,b){return a[a.id][b]||null}function I(a,b,c){try{a[a.id][b]=c}catch(d){}}var Lb=0;
|
||||
function Mb(a,b,c,d,f,e){f("Loading "+a+"...");r(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),e(g,null)):Nb(g,a,b,c,d,f,e)})}
|
||||
function Nb(a,b,c,d,f,e,h){function g(a,e){if(e)h(e,null);else{if(c){Ba(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+'"':""))}f||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pdp11$2"));
|
||||
g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(z){g=null,a=z.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?Ob(a,e,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Ob(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");r(f,null,!0,function(e,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(e=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,Q=/( [a-z]+=)(['"])(.*?)\2/g;l=Q.exec(e);)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 "+f);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);Ob(a,b,c)}})}else c(a,null)}
|
||||
function Pb(a,b,c,d){function f(a){if(void 0===g){var b=h&&D(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=fa(a))}function e(a){f("Error: "+a);k&&(--Lb||sa(!0));k=!1}var h,g,k=!0;Lb++;Aa[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var Q=document.head||document.getElementsByTagName("head")[0],z=document.createElement("style");z.type="text/css";z.styleSheet?z.styleSheet.cssText=l:z.appendChild(document.createTextNode(l));Q.appendChild(z)}c||
|
||||
(c="/versions/pdp11/1.24.2/components.xsl");l=function(d,g){g?Mb(c,null,null,!1,f,function(d,k){if(k)if(Ba(a,c,d),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--Lb||sa(!0)):e("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),--Lb||sa(!0)):e("invalid machine element: "+
|
||||
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e(d)}):e(d)};"<"!=b.charAt(0)?Mb(b,a,d,!0,f,l):Nb(b,null,a,d,!1,f,l)}else e("missing machine element: "+a)}catch(Qb){e(Qb.message)}return k}window.embedPDP11=function(a,b,c,d){sa(!1);return Pb(a,b,c,d)};window.enableEvents=sa;window.sendEvent=ta;})();
|
||||
|
|
|
|||
Loading…
Reference in a new issue