Merge one change from next-release: enabling smooth scrolling by default

This commit is contained in:
Jeff Parsons 2016-08-19 16:15:21 -07:00
commit 95a5158225
17 changed files with 299 additions and 232 deletions

View file

@ -816,4 +816,4 @@ a):f("transformToFragment failed")):f("unable to transform XML: unsupported brow
function us(a,b,c,d){if(!c&&b){d.push(b);a=gb[d[0]];b=null;for(var e in a)if(ha(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?xa(b,null,!0,function(a,b){vs(b,d)}):vs(null,d)}else w("Error ("+c+") requesting "+a)}
function vs(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=gb[f],k={},l;for(l in h){var n=h[l],q=ga(l);if("xml"==q){for(q=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=q.exec(h[l]);){var p=d[2];p&&(h[p]||(n=n.replace(d[0],"")))}d=l=fa(l)}else"xsl"==q&&(e=l=fa(l));k[l]=n}a&&(k[l="css"]=a);b[2]&&(k[l="parms"]=b[2]);b[3]&&(k[l="state"]=b[3]);d&&e?(l=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+l+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),c=Ja(c,"javascript",!1,g),c=c+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('<div id="'+f+'"></div>\n'),c+="...\n",c+='<script type="text/javascript" src="'+g+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",w(c)):w("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=kb("Computer",a),e=kb("Debugger",a);if(d){var f=Nr(d,!0),g=d.U?JSON.stringify(d.U):null;b||(b="/versions/pcjs/1.24.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,jk:g}))return!0;xa(b,null,!0,function(c,d,e){us(c,d,e,[a,fa(b,!0),g,f])});return!0}w("Unable to identify machine '"+a+"'");return!1};})();
window.savePC=function(a,b,c){var d=kb("Computer",a),e=kb("Debugger",a);if(d){var f=Nr(d,!0),g=d.U?JSON.stringify(d.U):null;b||(b="/versions/pcx86/1.24.0/pcx86"+(e?"-dbg":"")+".js");if(c&&c({state:f,jk:g}))return!0;xa(b,null,!0,function(c,d,e){us(c,d,e,[a,fa(b,!0),g,f])});return!0}w("Unable to identify machine '"+a+"'");return!1};})();

View file

@ -636,4 +636,4 @@ a):f("transformToFragment failed")):f("unable to transform XML: unsupported brow
function In(a,b,c,d){if(!c&&b){d.push(b);a=Ua[d[0]];b=null;for(var e in a)if(ha(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?ra(b,null,!0,function(a,b){Jn(b,d)}):Jn(null,d)}else p("Error ("+c+") requesting "+a)}
function Jn(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=Ua[f],k={},m;for(m in h){var n=h[m],x=ga(m);if("xml"==x){for(x=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=x.exec(h[m]);){var r=d[2];r&&(h[r]||(n=n.replace(d[0],"")))}d=m=fa(m)}else"xsl"==x&&(e=m=fa(m));k[m]=n}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(m=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+m+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),c=Ba(c,"javascript",!1,g),c=c+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('<div id="'+f+'"></div>\n'),c+="...\n",c+='<script type="text/javascript" src="'+g+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",p(c)):p("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=Ya("Computer",a),e=Ya("Debugger",a);if(d){var f=yn(d,!0),g=d.L?JSON.stringify(d.L):null;b||(b="/versions/pcjs/1.24.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,ij:g}))return!0;ra(b,null,!0,function(c,d,e){In(c,d,e,[a,fa(b,!0),g,f])});return!0}p("Unable to identify machine '"+a+"'");return!1};})();
window.savePC=function(a,b,c){var d=Ya("Computer",a),e=Ya("Debugger",a);if(d){var f=yn(d,!0),g=d.L?JSON.stringify(d.L):null;b||(b="/versions/pcx86/1.24.0/pcx86"+(e?"-dbg":"")+".js");if(c&&c({state:f,ij:g}))return!0;ra(b,null,!0,function(c,d,e){In(c,d,e,[a,fa(b,!0),g,f])});return!0}p("Unable to identify machine '"+a+"'");return!1};})();

View file

@ -37,6 +37,7 @@ if (NODE) {
var web = require("../../shared/lib/weblib");
var Component = require("../../shared/lib/component");
var State = require("../../shared/lib/state");
var PC8080 = require("./defines");
var CPUDef8080 = require("./cpudef");
var Messages8080= require("./messages");
}
@ -428,6 +429,15 @@ ChipSet8080.prototype.initBus = function(cmp, bus, cpu, dbg)
this.video = /** @type {Video8080} */ (cmp.getMachineComponent("Video"));
bus.addPortInputTable(this, this.config.portsInput);
bus.addPortOutputTable(this, this.config.portsOutput);
if (DEBUGGER) {
if (dbg) {
var chipset = this;
dbg.messageDump(Messages8080.NVR, function onDumpNVR() {
chipset.dumpNVR();
});
}
}
};
/**
@ -490,12 +500,33 @@ ChipSet8080.VT100.INIT = [
[
0, 0, 0, 0,
[
0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80,
0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80,
0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80,
0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e00,
0x2e08, 0x2e8e, 0x2e00, 0x2e50, 0x2e30, 0x2e40, 0x2e20, 0x2e00, 0x2ee0, 0x2ee0,
0x2e51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
/*
* The following table contains the data we use to initialize all (100) words of NVR (Non-Volatile RAM).
* According the DEC Technical Manual:
*
* If the NVR fails, the bell sounds several times to inform the operator, and then default settings
* stored in the ROM allow the terminal to work.
*
* However, this behavior may be limited to only certain kinds of "failures", because if I deliberately
* stuff an invalid value in the table, there is indeed an attempt to beep (though sound isn't working yet),
* an error code (2) is displayed in the top-left corner of the screen, but the NVR still appears to contain
* all the same (invalid) data we started with. Perhaps all they meant to say is that the RAM copy of NVR
* settings is reset, not the NVR itself.
*
* Using a VT100 configuration with the Debugger attached, use the NVR dumper command ("d nvr") to see how
* other SET-UP changes affect the NVR (after you've saved your changes using SHIFT-S, of course).
*
* NVR Notes
* ---------
* After enabling smooth scrolling, the word in row 5, col 4 changes from 2E50 to 2ED0, and the final word
* changes from 2E51 to 2E71 (I'm guessing that the final word is an NVR checksum).
*/
0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80,
0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80,
0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80,
0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E80, 0x2E00,
0x2E08, 0x2E8E, 0x2E00, 0x2ED0, 0x2E30, 0x2E40, 0x2E20, 0x2E00, 0x2EE0, 0x2EE0,
0x2E71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@ -504,6 +535,25 @@ ChipSet8080.VT100.INIT = [
]
];
/**
* dumpNVR()
*
* @this {ChipSet8080}
*/
ChipSet8080.prototype.dumpNVR = function()
{
if (DEBUGGER) {
var sDump = "";
for (var iWord = 0; iWord < this.aNVRWords.length; iWord++) {
if (sDump) {
sDump += (iWord && (iWord % 10)? ", " : ",\n");
}
sDump += str.toHexWord(this.aNVRWords[iWord]);
}
this.dbg.println(sDump);
}
};
/**
* reset()
*

View file

@ -39,9 +39,6 @@ if (NODE) {
var ReportAPI = require("../../shared/lib/reportapi");
var Component = require("../../shared/lib/component");
var State = require("../../shared/lib/state");
/*
* TODO: I'm confused why WebStorm complains if the following require() is missing in THIS file but not other files.
*/
var PC8080 = require("./defines");
var Bus8080 = require("./bus");
var Messages8080= require("./messages");

View file

@ -36,6 +36,7 @@ if (NODE) {
var web = require("../../shared/lib/weblib");
var Component = require("../../shared/lib/component");
var State = require("../../shared/lib/state");
var PC8080 = require("./defines");
var CPUDef8080 = require("./cpudef");
var CPU8080 = require("./cpu");
var Messages8080= require("./messages");

View file

@ -665,47 +665,6 @@ if (DEBUGGER) {
/* 0xFF */ [Debugger8080.INS.RST, Debugger8080.TYPE_INT]
];
/*
* Message categories supported by the messageEnabled() function and other assorted message
* functions. Each category has a corresponding bit value that can be combined (ie, OR'ed) as
* needed. The Debugger's message command ("m") is used to turn message categories on and off,
* like so:
*
* m port on
* m port off
* ...
*
* NOTE: The order of these categories can be rearranged, alphabetized, etc, as desired; just be
* aware that changing the bit values could break saved Debugger states (not a huge concern, just
* something to be aware of).
*/
Debugger8080.MESSAGES = {
"cpu": Messages8080.CPU,
"bus": Messages8080.BUS,
"mem": Messages8080.MEM,
"port": Messages8080.PORT,
"chipset": Messages8080.CHIPSET,
"keyboard": Messages8080.KEYBOARD, // "kbd" is also allowed as shorthand for "keyboard"; see doMessages()
"key": Messages8080.KEYS, // using "key" instead of "keys", since the latter is a method on JavasScript objects
"video": Messages8080.VIDEO,
"fdc": Messages8080.FDC,
"disk": Messages8080.DISK,
"serial": Messages8080.SERIAL,
"speaker": Messages8080.SPEAKER,
"computer": Messages8080.COMPUTER,
"log": Messages8080.LOG,
"warn": Messages8080.WARN,
/*
* Now we turn to message actions rather than message types; for example, setting "halt"
* on or off doesn't enable "halt" messages, but rather halts the CPU on any message above.
*
* Similarly, "m buffer on" turns on message buffering, defering the display of all messages
* until "m buffer off" is issued.
*/
"buffer": Messages8080.BUFFER,
"halt": Messages8080.HALT
};
Debugger8080.HISTORY_LIMIT = DEBUG? 100000 : 1000;
/**
@ -1315,9 +1274,9 @@ if (DEBUGGER) {
*/
var aEnable = this.parseCommand(sEnable.replace("keys","key").replace("kbd","keyboard"), false, '|');
if (aEnable.length) {
for (var m in Debugger8080.MESSAGES) {
for (var m in Messages8080.CATEGORIES) {
if (usr.indexOf(aEnable, m) >= 0) {
this.bitsMessage |= Debugger8080.MESSAGES[m];
this.bitsMessage |= Messages8080.CATEGORIES[m];
this.println(m + " messages enabled");
}
}
@ -1334,8 +1293,8 @@ if (DEBUGGER) {
*/
Debugger8080.prototype.messageDump = function(bitMessage, fnDumper)
{
for (var m in Debugger8080.MESSAGES) {
if (bitMessage == Debugger8080.MESSAGES[m]) {
for (var m in Messages8080.CATEGORIES) {
if (bitMessage == Messages8080.CATEGORIES[m]) {
this.afnDumpers[m] = fnDumper;
return true;
}
@ -3504,7 +3463,7 @@ if (DEBUGGER) {
if (sAddr == '?') {
var sDumpers = "";
for (m in Debugger8080.MESSAGES) {
for (m in Messages8080.CATEGORIES) {
if (this.afnDumpers[m]) {
if (sDumpers) sDumpers += ',';
sDumpers = sDumpers + m;
@ -3549,7 +3508,7 @@ if (DEBUGGER) {
}
if (sCmd == "d") {
for (m in Debugger8080.MESSAGES) {
for (m in Messages8080.CATEGORIES) {
if (asArgs[1] == m) {
var fnDumper = this.afnDumpers[m];
if (fnDumper) {
@ -3933,9 +3892,9 @@ if (DEBUGGER) {
*/
if (sCategory == "keys") sCategory = "key";
if (sCategory == "kbd") sCategory = "keyboard";
for (m in Debugger8080.MESSAGES) {
for (m in Messages8080.CATEGORIES) {
if (sCategory == m) {
bitsMessage = Debugger8080.MESSAGES[m];
bitsMessage = Messages8080.CATEGORIES[m];
fCriteria = !!(this.bitsMessage & bitsMessage);
break;
}
@ -3968,9 +3927,9 @@ if (DEBUGGER) {
*/
var n = 0;
var sCategories = "";
for (m in Debugger8080.MESSAGES) {
for (m in Messages8080.CATEGORIES) {
if (!sCategory || sCategory == m) {
var bitMessage = Debugger8080.MESSAGES[m];
var bitMessage = Messages8080.CATEGORIES[m];
var fEnabled = !!(this.bitsMessage & bitMessage);
if (fCriteria !== null && fCriteria != fEnabled) continue;
if (sCategories) sCategories += ',';

View file

@ -35,6 +35,7 @@ if (NODE) {
var str = require("../../shared/lib/strlib");
var web = require("../../shared/lib/weblib");
var Component = require("../../shared/lib/component");
var PC8080 = require("./defines");
var ChipSet8080 = require("./chipset");
var Messages8080= require("./messages");
}

View file

@ -36,6 +36,7 @@ var Messages8080 = {
BUS: 0x00000040,
MEM: 0x00000080,
PORT: 0x00000100,
NVR: 0x00004000,
CHIPSET: 0x00008000,
KEYBOARD: 0x00010000,
KEYS: 0x00020000,
@ -51,4 +52,46 @@ var Messages8080 = {
HALT: 0x80000000|0
};
/*
* Message categories supported by the messageEnabled() function and other assorted message
* functions. Each category has a corresponding bit value that can be combined (ie, OR'ed) as
* needed. The Debugger's message command ("m") is used to turn message categories on and off,
* like so:
*
* m port on
* m port off
* ...
*
* NOTE: The order of these categories can be rearranged, alphabetized, etc, as desired; just be
* aware that changing the bit values could break saved Debugger states (not a huge concern, just
* something to be aware of).
*/
Messages8080.CATEGORIES = {
"cpu": Messages8080.CPU,
"bus": Messages8080.BUS,
"mem": Messages8080.MEM,
"port": Messages8080.PORT,
"nvr": Messages8080.NVR,
"chipset": Messages8080.CHIPSET,
"keyboard": Messages8080.KEYBOARD, // "kbd" is also allowed as shorthand for "keyboard"; see doMessages()
"key": Messages8080.KEYS, // using "key" instead of "keys", since the latter is a method on JavasScript objects
"video": Messages8080.VIDEO,
"fdc": Messages8080.FDC,
"disk": Messages8080.DISK,
"serial": Messages8080.SERIAL,
"speaker": Messages8080.SPEAKER,
"computer": Messages8080.COMPUTER,
"log": Messages8080.LOG,
"warn": Messages8080.WARN,
/*
* Now we turn to message actions rather than message types; for example, setting "halt"
* on or off doesn't enable "halt" messages, but rather halts the CPU on any message above.
*
* Similarly, "m buffer on" turns on message buffering, deferring the display of all messages
* until "m buffer off" is issued.
*/
"buffer": Messages8080.BUFFER,
"halt": Messages8080.HALT
};
if (NODE) module.exports = Messages8080;

View file

@ -36,6 +36,7 @@ if (NODE) {
var usr = require("../../shared/lib/usrlib");
var web = require("../../shared/lib/weblib");
var Component = require("../../shared/lib/component");
var PC8080 = require("./defines");
var Bus8080 = require("./bus");
var CPUDef8080 = require("./cpudef");
var Memory8080 = require("./memory");

View file

@ -36,6 +36,7 @@ if (NODE) {
var web = require("../../shared/lib/weblib");
var Component = require("../../shared/lib/component");
var State = require("../../shared/lib/state");
var PC8080 = require("./defines");
var Memory8080 = require("./memory");
var ROM8080 = require("./rom");
}

View file

@ -36,6 +36,7 @@ if (NODE) {
var web = require("../../shared/lib/weblib");
var DumpAPI = require("../../shared/lib/dumpapi");
var Component = require("../../shared/lib/component");
var PC8080 = require("./defines");
var CPUDef8080 = require("./cpudef");
var Memory8080 = require("./memory");
}

View file

@ -36,6 +36,7 @@ if (NODE) {
var web = require("../../shared/lib/weblib");
var Component = require("../../shared/lib/component");
var State = require("../../shared/lib/state");
var PC8080 = require("./defines");
var Messages8080= require("./messages");
}

View file

@ -37,6 +37,7 @@ if (NODE) {
var DumpAPI = require("../../shared/lib/dumpapi");
var Component = require("../../shared/lib/component");
var State = require("../../shared/lib/state");
var PC8080 = require("./defines");
var ChipSet8080 = require("./chipset");
var Memory8080 = require("./memory");
var Messages8080= require("./messages");
@ -1153,6 +1154,16 @@ Video8080.prototype.updateVT100 = function(fForced)
* cache entry, to guarantee that it's redrawn on the next update.
*/
this.assert(iCellUpdated >= 0);
/*
* TODO: If I change the RECV rate to 19200 and enable smooth scrolling, I sometimes see a spurious
* "H" on the bottom line after a long series of "HELLO WORLD!\r\n" tests. Dumping video memory shows
* "HELLO WORLD!" on 23 lines and an "H" on the 24th line, so it's really there. But strangely, if
* I then press SET-UP two times, the restored screen does NOT have the spurious "H". So somehow the
* firmware knows what should and shouldn't be on-screen.
*
* Possible VT100 firmware bug? I'm not sure. Anyway, this DEBUG-only code is here to help trap
* that scenario, until I figure it out.
*/
if (DEBUG && (this.aCellCache[iCellUpdated] & 0x7f) == 0x48) {
console.log("spurious character?");
}

View file

@ -5,7 +5,7 @@ var na={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9
function qa(){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 ra(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 sa(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 ha(){return"http://"+(window?window.location.host:"www.pcjs.org")}
function ta(){return window?window.navigator.userAgent:""}function u(a){window&&window.alert(a)}function va(a){var b=!1;window&&(b=window.confirm(a));return b}var wa=null;function xa(){if(null==wa){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}wa=a}return wa}
function ta(){return window?window.navigator.userAgent:""}function u(a){window&&window.alert(a)}function ua(a){var b=!1;window&&(b=window.confirm(a));return b}var wa=null;function xa(){if(null==wa){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}wa=a}return wa}
function ya(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function za(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Aa(a){if(window){var b=ta();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ba(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
function Ca(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var Da={init:[],show:[],exit:[]},Ia=!1,Ja=!1,Ka=!0;function La(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ma(a){Da.init.push(a)}
function Na(a){if(Ka)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Oa("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Pa(a){!Ka&&a?(Ka=!0,Ia&&Sa("init"),Ja&&Sa("show")):Ka=a}function Sa(a){Da[a]&&Na(Da[a])}La("onload",function(){Ia=!0;Na(Da.init)});La("onpageshow",function(){Ja=!0;Na(Da.show)});La(Aa("Opera")||Aa("iOS")?"onunload":"onbeforeunload",function(){Na(Da.exit)});
@ -19,220 +19,221 @@ w.prototype={constructor:w,parent:null,toString:function(){return this.name?this
this.ia=function(a){this.g(a,this.Ya)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.Ya+": "+a)},ia:function(a,b,c){Oa(a,b,c||this.type)},Da:function(){return this.D.va=!0},Ga:function(a,b){b&&(this.D.va=!1);return!0}};function D(a,b,c,d,e,f,h){a.I&&(!0===h?h=0:null==h&&(h=a.ra),ib(a.I,a,b,c,d,e,f,h))}function jb(a,b){a.I&&kb(a,0)&&a.I.message(b,void 0)}function kb(a,b){if(a.I){a===a.I?b|=0:b=b||a.ra;var c=a.I.ra&b;return!!b&&c===b||!!(c&a.I.vd)}return!1}
function lb(a,b){if(a.D.Vb)return a.D.kb&&(a.D.kb=!1),a.D.Vb=!1;if(a.D.mb)return a.g(a.toString()+" error"),!1;a.D.kb=b;return a.D.kb}function mb(a,b){a.D.kb&&(b?a.D.Vb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.D.kb}function E(a){if(!a.D.mb&&(a.D.La=!0,a.D.La)){var b=a.Ob;a.Ob=null;b&&b()}}function nb(a,b){b&&(a.D.La?b():a.Ob=b);return a.D.La}function qb(a,b){a.D.mb=!0;a.ia(b)}
var rb="undefined"!==typeof ArrayBuffer,sb=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
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 tb(a){w.call(this,"Panel",a,tb)}bb(tb);m=tb.prototype;m.la=function(a,b,c,d){return this.A&&this.A.la(a,b,c,d)||this.b&&this.b.la(a,b,c,d)||this.K&&this.K.la(a,b,c,d)||this.I&&this.I.la(a,b,c,d)?!0:this.parent.la.call(this,a,b,c,d)};m.Pa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.I=d;this.K=ub(a,"Keyboard")};m.Da=function(a,b){b||vb();return!0};m.Ga=function(){return!0};m.Ha=function(){};
function vb(){for(var a=!1,b=B(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f=fb(e.id);f||(a=!0,f=new tb(e));hb(f,d);a&&E(f)}}Ma(vb);
function wb(a,b,c){w.call(this,"Bus",a,wb);this.b=b;this.I=c;this.H=a.busWidth||16;this.M=Math.pow(2,this.H);this.B=this.M-1|0;this.pa=16>=this.H?10:20>=this.H?12:24>=this.H?14:15;this.Fa=1<<this.pa;this.O=this.Fa>>2;this.w=this.Fa-1;this.L=this.M/this.Fa|0;this.K=this.L-1;this.A=[];this.u=[];this.F=this.J=!1;this.R=[];this.S=[];a=new F;xb(a,this.I);this.Y=Array(this.L);for(b=0;b<this.L;b++)this.Y[b]=a;E(this)}bb(wb);m=wb.prototype;m.reset=function(){};m.Da=function(a,b){b||this.reset();return!0};
function yb(a,b,c,d){for(var e=b,f=c,h=e>>>a.pa;0<f&&h<a.Y.length;){var g=a.Y[h],k=h*a.Fa,l=a.Fa-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==d){if(e+f<=g.G)return g.Hb+=g.G-e,g.G=e,!0;if(e>=g.G+g.Hb){l=g.size-(e-k);l>f&&(l=f);g.Hb=e-g.G+l;e=k+a.Fa;f-=l;h++;continue}}return zb(1,e,f)}e=new F(e,l,a.Fa,d);xb(e,a.I,g);a.Y[h++]=e;e=k+a.Fa;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Ab[d]+" at "+t(b)),!0):zb(2,b,c)}m.$=function(a){return this.Y[(a&this.B)>>>this.pa].sb(a&this.w,a)};
function Bb(a,b){return a.Y[(b&a.B)>>>a.pa].Gb(b&a.w,b)}m.Ra=function(a){var b=a&this.w,c=(a&this.B)>>>this.pa;return b!=this.w?this.Y[c].Lc(b,a):this.Y[c++].sb(b,a)|this.Y[c&this.K].sb(0,a+1)<<8};function Cb(a,b){var c=b&a.w,d=(b&a.B)>>>a.pa;return c!=a.w?a.Y[d].dc(c,b):a.Y[d++].Gb(c,b)|a.Y[d&a.K].Gb(0,b+1)<<8}m.sa=function(a,b){this.Y[(a&this.B)>>>this.pa].ub(a&this.w,b&255,a)};function Db(a,b,c){a.Y[(b&a.B)>>>a.pa].Ib(b&a.w,c&255,b)}
m.Tb=function(a,b){var c=a&this.w,d=(a&this.B)>>>this.pa;c!=this.w?this.Y[d].Nc(c,b&65535,a):(this.Y[d++].ub(c,b&255,a),this.Y[d&this.K].ub(0,b>>8&255,a+1))};function Eb(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.A[b]&&(a.A[b]=[null,!1]);a.A[b][1]=!a.A[b][1];return a.A[b][1]}function Gb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.A[k]?u("Input port "+t(k)+" already registered"):f.A[k]=[g,!1]}}
function Hb(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.A[b],g=a.R[b]||1,k=1==g?255:2==g?65535:-1,l=k;void 0!==h?(h[0]&&(l=h[0](b,c),void 0===l?l=k:l&=k),a.I&&a.F!=h[1]&&Ib(a.I,b,l)):a.I&&(ib(a.I,a,b,null,c),a.F&&Ib(a.I,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Jb(a,b){if(void 0===b)return a.J=!a.J,a.J;void 0===a.u[b]&&(a.u[b]=[null,!1]);a.u[b][1]=!a.u[b][1];return a.u[b][1]}
function Sb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.u[k]?u("Output port "+t(k)+" already registered"):f.u[k]=[g,!1]}}function Tb(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.u[b],g=a.S[b]||1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h){if(h[0])h[0](b,k,d);a.I&&a.J!=h[1]&&Ub(a.I,b,k)}else a.I&&(ib(a.I,a,b,k,d),a.J&&Ub(a.I,b,k));f+=g<<3;b+=g;e-=g}}
function zb(a,b,c){u("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Vb;if(rb){var Wb=new ArrayBuffer(2);(new DataView(Wb)).setUint16(0,256,!0);Vb=256===(new Uint16Array(Wb))[0]}else Vb=!1;var Xb=Vb;
function F(a,b,c,d){this.id=Yb+=2;this.b=null;this.G=a;this.Hb=b;this.size=c||0;this.type=d||Zb;this.A=d==$b;xb(this);this.Na=this.uc=!1;if(c)if(rb)this.F=new ArrayBuffer(c),this.J=new DataView(this.F,0,c),this.w=new Uint8Array(this.F,0,c),this.K=new Uint16Array(this.F,0,c>>1),this.b=new Int32Array(this.F,0,c>>2),ac(this,Xb?bc:cc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;ac(this,dc)}else ac(this)}var Zb=0,$b=2,Ab=["NONE","RAM","ROM","VID","H/W"],Yb=0;
F.prototype={constructor:F,parent:null,save:function(){var a,b;if(rb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.J.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(rb)for(b=0;b<a.length;b++)this.J.setInt32(b<<2,a[b],!0);else this.b=a;return this.Na=!0}return!1},Za:function(a,b){b?0===this.u++&&ec(this,fc,!1):0===this.N++&&gc(this,fc,!1)},L:function(){this.I&&kb(this.I,129)&&this.I.message("attempt to read invalid block %"+n(this.G),!0);
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1],tb={cpu:1,bus:64,mem:128,port:256,nvr:16384,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function ub(a){w.call(this,"Panel",a,ub)}bb(ub);m=ub.prototype;
m.la=function(a,b,c,d){return this.A&&this.A.la(a,b,c,d)||this.b&&this.b.la(a,b,c,d)||this.K&&this.K.la(a,b,c,d)||this.I&&this.I.la(a,b,c,d)?!0:this.parent.la.call(this,a,b,c,d)};m.Pa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.I=d;this.K=vb(a,"Keyboard")};m.Da=function(a,b){b||wb();return!0};m.Ga=function(){return!0};m.Ha=function(){};function wb(){for(var a=!1,b=B(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f=fb(e.id);f||(a=!0,f=new ub(e));hb(f,d);a&&E(f)}}Ma(wb);
function xb(a,b,c){w.call(this,"Bus",a,xb);this.b=b;this.I=c;this.H=a.busWidth||16;this.M=Math.pow(2,this.H);this.B=this.M-1|0;this.pa=16>=this.H?10:20>=this.H?12:24>=this.H?14:15;this.Fa=1<<this.pa;this.O=this.Fa>>2;this.w=this.Fa-1;this.L=this.M/this.Fa|0;this.K=this.L-1;this.A=[];this.u=[];this.F=this.J=!1;this.R=[];this.S=[];a=new F;yb(a,this.I);this.Y=Array(this.L);for(b=0;b<this.L;b++)this.Y[b]=a;E(this)}bb(xb);m=xb.prototype;m.reset=function(){};m.Da=function(a,b){b||this.reset();return!0};
function zb(a,b,c,d){for(var e=b,f=c,h=e>>>a.pa;0<f&&h<a.Y.length;){var g=a.Y[h],k=h*a.Fa,l=a.Fa-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==d){if(e+f<=g.G)return g.Hb+=g.G-e,g.G=e,!0;if(e>=g.G+g.Hb){l=g.size-(e-k);l>f&&(l=f);g.Hb=e-g.G+l;e=k+a.Fa;f-=l;h++;continue}}return Ab(1,e,f)}e=new F(e,l,a.Fa,d);yb(e,a.I,g);a.Y[h++]=e;e=k+a.Fa;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Bb[d]+" at "+t(b)),!0):Ab(2,b,c)}m.$=function(a){return this.Y[(a&this.B)>>>this.pa].sb(a&this.w,a)};
function Cb(a,b){return a.Y[(b&a.B)>>>a.pa].Gb(b&a.w,b)}m.Ra=function(a){var b=a&this.w,c=(a&this.B)>>>this.pa;return b!=this.w?this.Y[c].Lc(b,a):this.Y[c++].sb(b,a)|this.Y[c&this.K].sb(0,a+1)<<8};function Db(a,b){var c=b&a.w,d=(b&a.B)>>>a.pa;return c!=a.w?a.Y[d].dc(c,b):a.Y[d++].Gb(c,b)|a.Y[d&a.K].Gb(0,b+1)<<8}m.sa=function(a,b){this.Y[(a&this.B)>>>this.pa].ub(a&this.w,b&255,a)};function Eb(a,b,c){a.Y[(b&a.B)>>>a.pa].Ib(b&a.w,c&255,b)}
m.Tb=function(a,b){var c=a&this.w,d=(a&this.B)>>>this.pa;c!=this.w?this.Y[d].Nc(c,b&65535,a):(this.Y[d++].ub(c,b&255,a),this.Y[d&this.K].ub(0,b>>8&255,a+1))};function Gb(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.A[b]&&(a.A[b]=[null,!1]);a.A[b][1]=!a.A[b][1];return a.A[b][1]}function 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.A[k]?u("Input port "+t(k)+" already registered"):f.A[k]=[g,!1]}}
function Ib(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.A[b],g=a.R[b]||1,k=1==g?255:2==g?65535:-1,l=k;void 0!==h?(h[0]&&(l=h[0](b,c),void 0===l?l=k:l&=k),a.I&&a.F!=h[1]&&Jb(a.I,b,l)):a.I&&(ib(a.I,a,b,null,c),a.F&&Jb(a.I,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Sb(a,b){if(void 0===b)return a.J=!a.J,a.J;void 0===a.u[b]&&(a.u[b]=[null,!1]);a.u[b][1]=!a.u[b][1];return a.u[b][1]}
function Tb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.u[k]?u("Output port "+t(k)+" already registered"):f.u[k]=[g,!1]}}function Ub(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.u[b],g=a.S[b]||1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h){if(h[0])h[0](b,k,d);a.I&&a.J!=h[1]&&Vb(a.I,b,k)}else a.I&&(ib(a.I,a,b,k,d),a.J&&Vb(a.I,b,k));f+=g<<3;b+=g;e-=g}}
function Ab(a,b,c){u("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Wb;if(rb){var Xb=new ArrayBuffer(2);(new DataView(Xb)).setUint16(0,256,!0);Wb=256===(new Uint16Array(Xb))[0]}else Wb=!1;var Yb=Wb;
function F(a,b,c,d){this.id=Zb+=2;this.b=null;this.G=a;this.Hb=b;this.size=c||0;this.type=d||$b;this.A=d==ac;yb(this);this.Na=this.uc=!1;if(c)if(rb)this.F=new ArrayBuffer(c),this.J=new DataView(this.F,0,c),this.w=new Uint8Array(this.F,0,c),this.K=new Uint16Array(this.F,0,c>>1),this.b=new Int32Array(this.F,0,c>>2),bc(this,Yb?cc:dc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;bc(this,ec)}else bc(this)}var $b=0,ac=2,Bb=["NONE","RAM","ROM","VID","H/W"],Zb=0;
F.prototype={constructor:F,parent:null,save:function(){var a,b;if(rb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.J.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(rb)for(b=0;b<a.length;b++)this.J.setInt32(b<<2,a[b],!0);else this.b=a;return this.Na=!0}return!1},Za:function(a,b){b?0===this.u++&&fc(this,gc,!1):0===this.N++&&hc(this,gc,!1)},L:function(){this.I&&kb(this.I,129)&&this.I.message("attempt to read invalid block %"+n(this.G),!0);
return 255},B:function(a,b){this.I&&kb(this.I,129)&&this.I.message("attempt to write "+t(b)+" to invalid block %"+n(this.G),!0)},M:function(a,b){return this.sb(a++,b++)|this.sb(a,b)<<8},H:function(a,b,c){this.ub(a++,b&255,c++);this.ub(a,b>>8,c)},aa:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ga:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},ta:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.Na=!0},Ca:function(a,
b){var c=a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.Na=!0},R:function(a,b){if(this.I&&null!=this.G){var c=this.I;hc(c,this.G+a,1,c.R)&&c.ma(!0)}return this.Gb(a,b)},da:function(a,b){if(this.I&&null!=this.G){var c=this.I;hc(c,this.G+a,2,c.R)&&c.ma(!0)}return this.dc(a,b)},na:function(a,b,c){if(this.I&&null!=this.G){var d=this.I;hc(d,this.G+a,1,d.J)&&d.ma(!0)}this.A?this.B(a,b,c):this.Ib(a,b,c)},Ya:function(a,
b,c){if(this.I&&null!=this.G){var d=this.I;hc(d,this.G+a,2,d.J)&&d.ma(!0)}this.A?this.B(a,b,c):this.gc(a,b,c)},O:function(a){return this.w[a]},S:function(a){return this.w[a]},ca:function(a){return this.J.getUint16(a,!0)},fa:function(a){return a&1?this.w[a]|this.w[a+1]<<8:this.K[a>>1]},ha:function(a,b){this.w[a]=b;this.Na=!0},qa:function(a,b){this.w[a]=b;this.Na=!0},ua:function(a,b){this.J.setUint16(a,b,!0);this.Na=!0},Ba:function(a,b){a&1?(this.w[a]=b,this.w[a+1]=b>>8):this.K[a>>1]=b;this.Na=!0}};
function xb(a,b,c){a.I=b;a.N=a.u=0;c&&((a.N=c.N)&&gc(a,fc,!1),(a.u=c.u)&&ec(a,fc,!1))}function ic(a,b){b?0===--a.u&&(a.ub=a.A?a.B:a.Ib,a.Nc=a.A?a.H:a.gc):0===--a.N&&(a.sb=a.Gb,a.Lc=a.dc)}function ec(a,b,c){c&&a.u||(a.ub=!a.A&&b[2]||a.B,a.Nc=!a.A&&b[3]||a.H);if(c||void 0===c)a.Ib=b[2]||a.B,a.gc=b[3]||a.H}function gc(a,b,c){c&&a.N||(a.sb=b[0]||a.L,a.Lc=b[1]||a.M);if(c||void 0===c)a.Gb=b[0]||a.L,a.dc=b[1]||a.M}function ac(a,b){b||(b=jc);gc(a,b,void 0);ec(a,b,void 0)}
var jc=[],dc=[F.prototype.aa,F.prototype.ga,F.prototype.ta,F.prototype.Ca],fc=[F.prototype.R,F.prototype.da,F.prototype.na,F.prototype.Ya];if(rb)var cc=[F.prototype.O,F.prototype.ca,F.prototype.ha,F.prototype.ua],bc=[F.prototype.S,F.prototype.fa,F.prototype.qa,F.prototype.Ba];
function kc(a,b){w.call(this,"CPU",a,kc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.eb=c;this.i.Qb=0;this.i.Sa=d;this.i.$b=Math.round(this.i.eb/1E4)/100;this.i.bb=this.i.$b*this.i.Sa;this.D.ya=!1;this.D.Wb=!1;this.D.tc=a.autoStart;this.D.vc=!1;this.D.lb=!1;this.i.Ab=this.i.pb=0;this.i.Bb=a.csStart;this.i.ob=a.csInterval;this.i.qb=a.csStop;this.F=[];this.aa=this.fb.bind(this);E(this)}bb(kc);var lc=["power","reset"];m=kc.prototype;
m.Pa=function(a,b,c,d){this.A=a;this.w=b;this.I=d;for(b=0;b<lc.length;b++)(c=this.N[lc[b]])&&this.A.la(null,lc[b],c);this.M=(b=ub(a,"Video"))&&Math.max(b.Zd,b.Xb)||60;this.J=ub(a,"ChipSet");a=mc(a,"autoStart");null!=a&&(this.D.tc="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){this.i.Qb=0};m.save=function(){return null};m.restore=function(){return!1};
m.Da=function(a,b){if(!b){if(a&&this.restore){nc(this);if(!this.restore(a))return!1;oc(this)}else this.reset();if(this.I){var c=this.I;c.g("Type ? for help with PC8080 Debugger commands");c.Ha();if(c.Ca){var d=c.Ca;c.Ca=null;Bc(c,d)}}else this.g("No debugger detected")}Cc(this);return!0};m.Ga=function(a){return a?this.save():!0};function Dc(a){(a.D.tc||!a.I&&void 0===a.N.run)&&a.fb(!0)}m.wc=function(){return 0};
function oc(a){void 0===a.i.Bb&&(a.i.Bb=0);void 0===a.i.ob&&(a.i.ob=-1);void 0===a.i.qb&&(a.i.qb=-1);a.D.lb=0<=a.i.Bb&&0<a.i.ob;a.D.lb&&(a.i.Ab=0,a.i.pb=a.i.Bb-a.K)}function Ec(a,b){if(a.D.lb){var c=!1;a.i.Ab=a.i.Ab+a.wc()|0;a.i.pb-=b;0>=a.i.pb&&(a.i.pb+=a.i.ob,c=!0);0<=a.i.qb&&a.i.qb<=Fc(a)&&(a.i.ob=a.i.qb=-1,oc(a),a.ma(),c=!0);c&&a.g(Fc(a)+" cycles: checksum="+n(a.i.Ab))}}
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},R:function(a,b){if(this.I&&null!=this.G){var c=this.I;ic(c,this.G+a,1,c.R)&&c.ma(!0)}return this.Gb(a,b)},da:function(a,b){if(this.I&&null!=this.G){var c=this.I;ic(c,this.G+a,2,c.R)&&c.ma(!0)}return this.dc(a,b)},na:function(a,b,c){if(this.I&&null!=this.G){var d=this.I;ic(d,this.G+a,1,d.J)&&d.ma(!0)}this.A?this.B(a,b,c):this.Ib(a,b,c)},Ya:function(a,
b,c){if(this.I&&null!=this.G){var d=this.I;ic(d,this.G+a,2,d.J)&&d.ma(!0)}this.A?this.B(a,b,c):this.gc(a,b,c)},O:function(a){return this.w[a]},S:function(a){return this.w[a]},ca:function(a){return this.J.getUint16(a,!0)},fa:function(a){return a&1?this.w[a]|this.w[a+1]<<8:this.K[a>>1]},ha:function(a,b){this.w[a]=b;this.Na=!0},qa:function(a,b){this.w[a]=b;this.Na=!0},ua:function(a,b){this.J.setUint16(a,b,!0);this.Na=!0},Ba:function(a,b){a&1?(this.w[a]=b,this.w[a+1]=b>>8):this.K[a>>1]=b;this.Na=!0}};
function yb(a,b,c){a.I=b;a.N=a.u=0;c&&((a.N=c.N)&&hc(a,gc,!1),(a.u=c.u)&&fc(a,gc,!1))}function jc(a,b){b?0===--a.u&&(a.ub=a.A?a.B:a.Ib,a.Nc=a.A?a.H:a.gc):0===--a.N&&(a.sb=a.Gb,a.Lc=a.dc)}function fc(a,b,c){c&&a.u||(a.ub=!a.A&&b[2]||a.B,a.Nc=!a.A&&b[3]||a.H);if(c||void 0===c)a.Ib=b[2]||a.B,a.gc=b[3]||a.H}function hc(a,b,c){c&&a.N||(a.sb=b[0]||a.L,a.Lc=b[1]||a.M);if(c||void 0===c)a.Gb=b[0]||a.L,a.dc=b[1]||a.M}function bc(a,b){b||(b=kc);hc(a,b,void 0);fc(a,b,void 0)}
var kc=[],ec=[F.prototype.aa,F.prototype.ga,F.prototype.ta,F.prototype.Ca],gc=[F.prototype.R,F.prototype.da,F.prototype.na,F.prototype.Ya];if(rb)var dc=[F.prototype.O,F.prototype.ca,F.prototype.ha,F.prototype.ua],cc=[F.prototype.S,F.prototype.fa,F.prototype.qa,F.prototype.Ba];
function lc(a,b){w.call(this,"CPU",a,lc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.eb=c;this.i.Qb=0;this.i.Sa=d;this.i.$b=Math.round(this.i.eb/1E4)/100;this.i.bb=this.i.$b*this.i.Sa;this.D.ya=!1;this.D.Wb=!1;this.D.tc=a.autoStart;this.D.vc=!1;this.D.lb=!1;this.i.Ab=this.i.pb=0;this.i.Bb=a.csStart;this.i.ob=a.csInterval;this.i.qb=a.csStop;this.F=[];this.aa=this.fb.bind(this);E(this)}bb(lc);var mc=["power","reset"];m=lc.prototype;
m.Pa=function(a,b,c,d){this.A=a;this.w=b;this.I=d;for(b=0;b<mc.length;b++)(c=this.N[mc[b]])&&this.A.la(null,mc[b],c);this.M=(b=vb(a,"Video"))&&Math.max(b.Zd,b.Xb)||60;this.J=vb(a,"ChipSet");a=nc(a,"autoStart");null!=a&&(this.D.tc="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){this.i.Qb=0};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.I){var c=this.I;c.g("Type ? for help with PC8080 Debugger commands");c.Ha();if(c.Ca){var d=c.Ca;c.Ca=null;Cc(c,d)}}else this.g("No debugger detected")}Dc(this);return!0};m.Ga=function(a){return a?this.save():!0};function Ec(a){(a.D.tc||!a.I&&void 0===a.N.run)&&a.fb(!0)}m.wc=function(){return 0};
function Bc(a){void 0===a.i.Bb&&(a.i.Bb=0);void 0===a.i.ob&&(a.i.ob=-1);void 0===a.i.qb&&(a.i.qb=-1);a.D.lb=0<=a.i.Bb&&0<a.i.ob;a.D.lb&&(a.i.Ab=0,a.i.pb=a.i.Bb-a.K)}function Fc(a,b){if(a.D.lb){var c=!1;a.i.Ab=a.i.Ab+a.wc()|0;a.i.pb-=b;0>=a.i.pb&&(a.i.pb+=a.i.ob,c=!0);0<=a.i.qb&&a.i.qb<=Gc(a)&&(a.i.ob=a.i.qb=-1,Bc(a),a.ma(),c=!0);c&&a.g(Gc(a)+" cycles: checksum="+n(a.i.Ab))}}
m.la=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.N[b]=c;a=!0;break;case "run":this.N[b]=c;c.onclick=function(){var a;if(a=d.A)if(a=d.A,a.D.va)a=!0;else{var b=null,c,g=eb(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.D.La);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.D.va);c++);c==g.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.D.La?"powered yet":"ready yet"+(b.Ob?" (waiting for notification)":""))+".");a=!1}a&&(d.D.ya?d.ma(!0):d.fb(!0))};a=
!0;break;case "speed":this.N[b]=c;a=!0;break;case "setSpeed":this.N[b]=c,c.onclick=function(){Gc(d,d.i.Sa<<1,!0)},c.textContent=this.i.bb.toFixed(2)+"Mhz",a=!0}return a};function Hc(a,b,c){a.K+=b;c&&(a.B=a.b=0)}
function Ic(a,b){var c=30;c<a.M&&(c=a.M);2>c&&(c=2);var d=1;b&&1<a.i.Sa&&a.i.ab&&(d=a.i.ab/a.i.$b);a.i.Dc=Math.round(1E3/30);a.i.Gd=Math.floor(a.i.eb/c*d);a.i.bc=Math.floor(a.i.eb/30*d);a.i.Fc=Math.floor(a.i.eb/a.M*d);a.i.Ec=Math.floor(a.i.eb/2*d);b||(a.i.rb=a.i.bc,a.i.Db=a.i.Fc,a.i.Cb=a.i.Ec);a.i.cc=0}function Fc(a){return a.K+a.H+a.B-a.b}function nc(a){a.i.ab=0;a.K=a.H=a.B=a.b=0;oc(a);Gc(a,1)}
function Gc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.ab/a.i.bb?b=1:d=!0;a.i.Sa=b;b=a.i.$b*a.i.Sa;if(a.i.bb!=b){a.i.bb=b;b=a.i.bb.toFixed(2)+"Mhz";var e=a.N.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.A&&a.A.gb()}Hc(a,a.H);a.H=0;a.i.nb=pa();a.i.cb=0;Ic(a);return d}function Jc(a,b){var c=a.F.length;a.F.push([-1,b]);return c}function Kc(a,b,c){var d=-1;0<=b&&b<a.F.length&&(d=a.i.eb*a.i.Sa/1E3*c,a.F[b][0]=d)}
m.fb=function(a){if(lb(this,!0)){if(!this.D.ya){Gc(this);this.A&&this.A.start(this.i.nb,Fc(this));this.D.ya=!0;this.D.Wb=!0;this.J&&this.J.start();var b=this.N.run;b&&(b.textContent="Halt");this.A&&(this.A.Ha(!0),a&&this.A.gb(!0))}this.i.cc>=this.i.eb&&Ic(this,!0);this.i.Eb=0;this.i.Pb=pa();this.i.cb&&(a=this.i.Pb-this.i.cb,a>this.i.Dc&&(this.i.nb+=a,this.i.nb>this.i.Pb&&(this.i.nb=this.i.Pb)));try{do{var c=this.D.lb?1:this.i.Gd;a=c;for(b=0;b<this.F.length;b++){var d=this.F[b];0>d[0]||a>d[0]&&(a=
d[0])}c=a;this.tb(c);var e=this.B-this.b;a=e;for(b=0;b<this.F.length;b++){var f=this.F[b];0>f[0]||(f[0]-=a,0>=f[0]&&(f[0]=-1,f[1]()))}this.i.Eb+=e;this.H+=e;Hc(this,0,!0);Ec(this,e);this.i.Db-=e;0>=this.i.Db&&(this.i.Db+=this.i.Fc,this.A&&Lc(this.A,this.i.Qb++),this.i.Qb>this.M&&(this.i.Qb=0));this.i.Cb-=e;0>=this.i.Cb&&(this.i.Cb+=this.i.Ec,this.A&&this.A.Ha());this.i.rb-=e;if(0>=this.i.rb){this.i.rb+=this.i.bc;break}}while(this.D.ya)}catch(h){this.ma();Cc(this);this.A&&this.A.stop(pa(),Fc(this));
lb(this,!1);qb(this,h.stack||h.message);return}c=setTimeout;d=this.aa;this.i.cb=pa();e=this.i.Dc;this.i.Eb&&(e=Math.round(e*this.i.Eb/this.i.bc));e-=this.i.cb-this.i.Pb;if(f=this.i.cb-this.i.nb)this.i.ab=Math.round(this.H/(10*f))/100,864E5<=f&&(this.K=0,Gc(this));if(0>e||this.i.ab<this.i.bb)e=0;this.i.cc+=this.i.Eb;this.i.cb+=e;c(d,e)}else Cc(this),this.A&&this.A.stop(pa(),Fc(this))};m.tb=function(){return 0};
m.ma=function(a){mb(this,!0);this.B-=this.b;this.b=0;Hc(this,this.H);this.H=0;if(this.D.ya){this.D.ya=!1;this.J&&this.J.stop();var b=this.N.run;b&&(b.textContent="Run")}this.D.Nb=a};function Cc(a,b){a.A&&(Lc(a.A,-1),a.A.Ha(b))}function Mc(a){this.Cc=+a.model||8080;kc.call(this,a,1E6);this.O=Nc;nc(this);this.D.Nb=this.D.wd=!1;this.S=0;this.L=[];this.R=0;Oc(this)}bb(Mc,kc);function Pc(a,b){a.L.push(b)}m=Mc.prototype;m.reset=function(){this.D.ya&&this.ma();Oc(this);nc(this);this.D.mb=!1;this.parent.reset.call(this)};
function Oc(a){a.j=0;a.T=0;a.U=0;a.V=0;a.W=0;a.X=0;a.Z=0;a.ka=0;G(a,a.R);Qc(a,0);a.u=0}function Rc(a,b){a.R=b;G(a,b)}m.wc=function(){var a=this.j+this.T+this.U+this.V+this.W+this.X+this.Z|0;return a=a+this.ka+this.P+Sc(this)|0};
m.save=function(){var a=new H(this);I(a,0,[this.j,this.T,this.U,this.V,this.W,this.X,this.Z,this.ka,this.P,Sc(this)]);I(a,1,[this.u,this.K,this.i.Sa]);for(var b=this.w,c=0,d=[],e=0;e<b.L;e++){var f=b.Y[e];if(f.Na||f.uc){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var p=f[g],q=g+1;q<f.length&&f[q]===p;)q++;l[k++]=q-g;l[k++]=p;g=q}if(l.length<f.length){f=l;break a}}d[h]=f}}I(a,2,d);return a.data()};
m.restore=function(a){var b=a[0];this.j=b[0];this.T=b[1];this.U=b[2];this.V=b[3];this.W=b[4];this.X=b[5];this.Z=b[6];this.ka=b[7]&65535;G(this,b[8]);Qc(this,b[9]);b=a[1];this.u=b[0];this.K=b[1];Gc(this,b[3]);a:{b=this.w;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.O){for(var f=0,h=Array(b.O),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.Y[d];if(!f||!f.restore(e)){u("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
m.la=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.N[b]=c;this.S++;d=!0;break;default:d=this.parent.la.call(this,a,b,c)}return d};function Tc(a){return a.T<<8|a.U}function Uc(a,b){a.T=b>>8&255;a.U=b&255}function Vc(a){return a.V<<8|a.W}function Wc(a,b){a.V=b>>8&255;a.W=b&255}function J(a){return a.X<<8|a.Z}
function Xc(a,b){a.X=b>>8&255;a.Z=b&255}function G(a,b){a.P=b&65535}function Yc(a){return a.ba&256?1:0}function Zc(a,b){a.ba=a.ba&255|b}function $c(a){return sb[a.ea&255]?4:0}function ad(a){return(a.ea^a.xa)&16?16:0}function bd(a){return a.ba&255?0:64}function cd(a){return a.ea&128?128:0}function Sc(a){return a.wa&-214|cd(a)|bd(a)|ad(a)|$c(a)|Yc(a)}function Qc(a,b){a.ba=a.ea=a.xa=0;b&1&&(a.ba|=256);b&4||(a.ea|=1);b&16&&(a.xa|=16);b&64||(a.ba|=255);b&128&&(a.ea^=192);a.wa=a.wa&-726|b&512|2}
function dd(a,b){a.xa=a.j^b;return a.ea=(a.ba=a.j+b)&255}function ed(a,b){a.xa=a.j^b;return a.ea=(a.ba=a.j+b+(a.ba&256?1:0))&255}function fd(a,b){a.ba=a.ea=a.xa=a.j&b;(a.j|b)&8&&(a.xa^=16);return a.ba}function gd(a,b){a.xa=b^255;b=a.ea=b+255&255;a.ba=a.ba&-256|b;return b}function Ad(a,b){a.xa=b;b=a.ea=b+1&255;a.ba=a.ba&-256|b;return b}function Bd(a,b){return a.ea=a.ba=a.xa=a.j|b}function K(a,b){b^=255;a.xa=a.j^b;return a.ea=(a.ba=a.j+b+1^256)&255}
function Cd(a,b){b^=255;a.xa=a.j^b;return a.ea=(a.ba=a.j+b+(a.ba&256?0:1)^256)&255}function Dd(a,b){return a.ea=a.ba=a.xa=a.j^b}m.$=function(a){return this.w.$(a)};m.sa=function(a,b){this.w.sa(a,b)};function L(a){var b=a.$(a.P);G(a,a.P+1);return b}function M(a){var b=a.w.Ra(a.P);G(a,a.P+2);return b}function O(a){var b=a.w.Ra(a.ka);a.ka=a.ka+2&65535;return b}function P(a,b){a.ka=a.ka-2&65535;a.w.Tb(a.ka,b)}function Ed(a,b){a.u|=1<<b}
!0;break;case "speed":this.N[b]=c;a=!0;break;case "setSpeed":this.N[b]=c,c.onclick=function(){Hc(d,d.i.Sa<<1,!0)},c.textContent=this.i.bb.toFixed(2)+"Mhz",a=!0}return a};function Ic(a,b,c){a.K+=b;c&&(a.B=a.b=0)}
function Jc(a,b){var c=30;c<a.M&&(c=a.M);2>c&&(c=2);var d=1;b&&1<a.i.Sa&&a.i.ab&&(d=a.i.ab/a.i.$b);a.i.Dc=Math.round(1E3/30);a.i.Gd=Math.floor(a.i.eb/c*d);a.i.bc=Math.floor(a.i.eb/30*d);a.i.Fc=Math.floor(a.i.eb/a.M*d);a.i.Ec=Math.floor(a.i.eb/2*d);b||(a.i.rb=a.i.bc,a.i.Db=a.i.Fc,a.i.Cb=a.i.Ec);a.i.cc=0}function Gc(a){return a.K+a.H+a.B-a.b}function oc(a){a.i.ab=0;a.K=a.H=a.B=a.b=0;Bc(a);Hc(a,1)}
function Hc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.ab/a.i.bb?b=1:d=!0;a.i.Sa=b;b=a.i.$b*a.i.Sa;if(a.i.bb!=b){a.i.bb=b;b=a.i.bb.toFixed(2)+"Mhz";var e=a.N.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.A&&a.A.gb()}Ic(a,a.H);a.H=0;a.i.nb=pa();a.i.cb=0;Jc(a);return d}function Kc(a,b){var c=a.F.length;a.F.push([-1,b]);return c}function Lc(a,b,c){var d=-1;0<=b&&b<a.F.length&&(d=a.i.eb*a.i.Sa/1E3*c,a.F[b][0]=d)}
m.fb=function(a){if(lb(this,!0)){if(!this.D.ya){Hc(this);this.A&&this.A.start(this.i.nb,Gc(this));this.D.ya=!0;this.D.Wb=!0;this.J&&this.J.start();var b=this.N.run;b&&(b.textContent="Halt");this.A&&(this.A.Ha(!0),a&&this.A.gb(!0))}this.i.cc>=this.i.eb&&Jc(this,!0);this.i.Eb=0;this.i.Pb=pa();this.i.cb&&(a=this.i.Pb-this.i.cb,a>this.i.Dc&&(this.i.nb+=a,this.i.nb>this.i.Pb&&(this.i.nb=this.i.Pb)));try{do{var c=this.D.lb?1:this.i.Gd;a=c;for(b=0;b<this.F.length;b++){var d=this.F[b];0>d[0]||a>d[0]&&(a=
d[0])}c=a;this.tb(c);var e=this.B-this.b;a=e;for(b=0;b<this.F.length;b++){var f=this.F[b];0>f[0]||(f[0]-=a,0>=f[0]&&(f[0]=-1,f[1]()))}this.i.Eb+=e;this.H+=e;Ic(this,0,!0);Fc(this,e);this.i.Db-=e;0>=this.i.Db&&(this.i.Db+=this.i.Fc,this.A&&Mc(this.A,this.i.Qb++),this.i.Qb>this.M&&(this.i.Qb=0));this.i.Cb-=e;0>=this.i.Cb&&(this.i.Cb+=this.i.Ec,this.A&&this.A.Ha());this.i.rb-=e;if(0>=this.i.rb){this.i.rb+=this.i.bc;break}}while(this.D.ya)}catch(h){this.ma();Dc(this);this.A&&this.A.stop(pa(),Gc(this));
lb(this,!1);qb(this,h.stack||h.message);return}c=setTimeout;d=this.aa;this.i.cb=pa();e=this.i.Dc;this.i.Eb&&(e=Math.round(e*this.i.Eb/this.i.bc));e-=this.i.cb-this.i.Pb;if(f=this.i.cb-this.i.nb)this.i.ab=Math.round(this.H/(10*f))/100,864E5<=f&&(this.K=0,Hc(this));if(0>e||this.i.ab<this.i.bb)e=0;this.i.cc+=this.i.Eb;this.i.cb+=e;c(d,e)}else Dc(this),this.A&&this.A.stop(pa(),Gc(this))};m.tb=function(){return 0};
m.ma=function(a){mb(this,!0);this.B-=this.b;this.b=0;Ic(this,this.H);this.H=0;if(this.D.ya){this.D.ya=!1;this.J&&this.J.stop();var b=this.N.run;b&&(b.textContent="Run")}this.D.Nb=a};function Dc(a,b){a.A&&(Mc(a.A,-1),a.A.Ha(b))}function Nc(a){this.Cc=+a.model||8080;lc.call(this,a,1E6);this.O=Oc;oc(this);this.D.Nb=this.D.wd=!1;this.S=0;this.L=[];this.R=0;Pc(this)}bb(Nc,lc);function Qc(a,b){a.L.push(b)}m=Nc.prototype;m.reset=function(){this.D.ya&&this.ma();Pc(this);oc(this);this.D.mb=!1;this.parent.reset.call(this)};
function Pc(a){a.j=0;a.T=0;a.U=0;a.V=0;a.W=0;a.X=0;a.Z=0;a.ka=0;G(a,a.R);Rc(a,0);a.u=0}function Sc(a,b){a.R=b;G(a,b)}m.wc=function(){var a=this.j+this.T+this.U+this.V+this.W+this.X+this.Z|0;return a=a+this.ka+this.P+Tc(this)|0};
m.save=function(){var a=new H(this);I(a,0,[this.j,this.T,this.U,this.V,this.W,this.X,this.Z,this.ka,this.P,Tc(this)]);I(a,1,[this.u,this.K,this.i.Sa]);for(var b=this.w,c=0,d=[],e=0;e<b.L;e++){var f=b.Y[e];if(f.Na||f.uc){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var p=f[g],q=g+1;q<f.length&&f[q]===p;)q++;l[k++]=q-g;l[k++]=p;g=q}if(l.length<f.length){f=l;break a}}d[h]=f}}I(a,2,d);return a.data()};
m.restore=function(a){var b=a[0];this.j=b[0];this.T=b[1];this.U=b[2];this.V=b[3];this.W=b[4];this.X=b[5];this.Z=b[6];this.ka=b[7]&65535;G(this,b[8]);Rc(this,b[9]);b=a[1];this.u=b[0];this.K=b[1];Hc(this,b[3]);a:{b=this.w;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.O){for(var f=0,h=Array(b.O),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.Y[d];if(!f||!f.restore(e)){u("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
m.la=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.N[b]=c;this.S++;d=!0;break;default:d=this.parent.la.call(this,a,b,c)}return d};function Uc(a){return a.T<<8|a.U}function Vc(a,b){a.T=b>>8&255;a.U=b&255}function Wc(a){return a.V<<8|a.W}function Xc(a,b){a.V=b>>8&255;a.W=b&255}function J(a){return a.X<<8|a.Z}
function Yc(a,b){a.X=b>>8&255;a.Z=b&255}function G(a,b){a.P=b&65535}function Zc(a){return a.ba&256?1:0}function $c(a,b){a.ba=a.ba&255|b}function ad(a){return sb[a.ea&255]?4:0}function bd(a){return(a.ea^a.xa)&16?16:0}function cd(a){return a.ba&255?0:64}function dd(a){return a.ea&128?128:0}function Tc(a){return a.wa&-214|dd(a)|cd(a)|bd(a)|ad(a)|Zc(a)}function Rc(a,b){a.ba=a.ea=a.xa=0;b&1&&(a.ba|=256);b&4||(a.ea|=1);b&16&&(a.xa|=16);b&64||(a.ba|=255);b&128&&(a.ea^=192);a.wa=a.wa&-726|b&512|2}
function ed(a,b){a.xa=a.j^b;return a.ea=(a.ba=a.j+b)&255}function fd(a,b){a.xa=a.j^b;return a.ea=(a.ba=a.j+b+(a.ba&256?1:0))&255}function gd(a,b){a.ba=a.ea=a.xa=a.j&b;(a.j|b)&8&&(a.xa^=16);return a.ba}function Ad(a,b){a.xa=b^255;b=a.ea=b+255&255;a.ba=a.ba&-256|b;return b}function Bd(a,b){a.xa=b;b=a.ea=b+1&255;a.ba=a.ba&-256|b;return b}function Cd(a,b){return a.ea=a.ba=a.xa=a.j|b}function K(a,b){b^=255;a.xa=a.j^b;return a.ea=(a.ba=a.j+b+1^256)&255}
function Dd(a,b){b^=255;a.xa=a.j^b;return a.ea=(a.ba=a.j+b+(a.ba&256?0:1)^256)&255}function Ed(a,b){return a.ea=a.ba=a.xa=a.j^b}m.$=function(a){return this.w.$(a)};m.sa=function(a,b){this.w.sa(a,b)};function L(a){var b=a.$(a.P);G(a,a.P+1);return b}function M(a){var b=a.w.Ra(a.P);G(a,a.P+2);return b}function O(a){var b=a.w.Ra(a.ka);a.ka=a.ka+2&65535;return b}function P(a,b){a.ka=a.ka-2&65535;a.w.Tb(a.ka,b)}function Fd(a,b){a.u|=1<<b}
function R(a,b,c,d){d=d||2;a.N[b]&&(void 0===c&&(qb(a,"Value for "+b+" is invalid"),a.ma()),c=!a.D.ya||a.D.vc?n(c,d):"--------".substr(0,d),a.N[b].textContent!=c&&(a.N[b].textContent=c))}
m.Ha=function(a){this.S&&(a||!this.D.ya||this.D.vc)&&(R(this,"A",this.j),R(this,"B",this.T),R(this,"C",this.U),R(this,"BC",Tc(this),4),R(this,"D",this.V),R(this,"E",this.W),R(this,"DE",Vc(this),4),R(this,"H",this.X),R(this,"L",this.Z),R(this,"HL",J(this),4),R(this,"SP",this.ka,4),R(this,"PC",this.P,4),a=Sc(this),R(this,"PS",a,4),R(this,"IF",a&512?1:0,1),R(this,"SF",a&128?1:0,1),R(this,"ZF",a&64?1:0,1),R(this,"AF",a&16?1:0,1),R(this,"PF",a&4?1:0,1),R(this,"CF",a&1?1:0,1));if(a=this.N.speed)a.textContent=
m.Ha=function(a){this.S&&(a||!this.D.ya||this.D.vc)&&(R(this,"A",this.j),R(this,"B",this.T),R(this,"C",this.U),R(this,"BC",Uc(this),4),R(this,"D",this.V),R(this,"E",this.W),R(this,"DE",Wc(this),4),R(this,"H",this.X),R(this,"L",this.Z),R(this,"HL",J(this),4),R(this,"SP",this.ka,4),R(this,"PC",this.P,4),a=Tc(this),R(this,"PS",a,4),R(this,"IF",a&512?1:0,1),R(this,"SF",a&128?1:0,1),R(this,"ZF",a&64?1:0,1),R(this,"AF",a&16?1:0,1),R(this,"PF",a&4?1:0,1),R(this,"CF",a&1?1:0,1));if(a=this.N.speed)a.textContent=
this.D.ya&&this.i.ab?this.i.ab.toFixed(2)+"Mhz":"Stopped"};
m.tb=function(a){this.D.Nb=!0;var b=this.D.wd=this.I&&Fd(this.I),c=a?this.D.Wb?0:1:-1;this.D.Wb=!1;this.B=this.b=a;do{if(this.u){if(a&&this.u&255&&this.wa&512){for(var d=0;8>d&&!(this.u&1<<d);d++);this.u&=~(0>d?255:1<<d);this.wa&=-513;this.u&=-257;this.O[199|d<<3].call(this)}if(this.u&256){this.b=0;break}}if(b){if(Gd(this.I,this.P,c)){this.ma();break}c=1}this.O[L(this)].call(this)}while(0<this.b);return this.D.Nb?this.B-this.b:void 0===this.D.Nb?0:-1};
Ma(function(){for(var a=B(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Mc(d);hb(d,c)}});function Hd(){this.b-=4}function Id(){G(this,M(this));this.b-=10}function Jd(){G(this,O(this));this.b-=10}function Kd(){var a=M(this);P(this,this.P);G(this,a);this.b-=17}
var Nc=[Hd,function(){Uc(this,M(this));this.b-=10},function(){this.sa(Tc(this),this.j);this.b-=7},function(){Uc(this,Tc(this)+1);this.b-=5},function(){this.T=Ad(this,this.T);this.b-=5},function(){this.T=gd(this,this.T);this.b-=5},function(){this.T=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|a>>8;Zc(this,a&256);this.b-=4},Hd,function(){var a;Xc(this,a=J(this)+Tc(this));Zc(this,a>>8&256);this.b-=10},function(){this.j=this.$(Tc(this));this.b-=7},function(){Uc(this,Tc(this)-1);this.b-=
5},function(){this.U=Ad(this,this.U);this.b-=5},function(){this.U=gd(this,this.U);this.b-=5},function(){this.U=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(a|this.j)>>1;Zc(this,a);this.b-=4},Hd,function(){Wc(this,M(this));this.b-=10},function(){this.sa(Vc(this),this.j);this.b-=7},function(){Wc(this,Vc(this)+1);this.b-=5},function(){this.V=Ad(this,this.V);this.b-=5},function(){this.V=gd(this,this.V);this.b-=5},function(){this.V=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|
Yc(this);Zc(this,a&256);this.b-=4},Hd,function(){var a;Xc(this,a=J(this)+Vc(this));Zc(this,a>>8&256);this.b-=10},function(){this.j=this.$(Vc(this));this.b-=7},function(){Wc(this,Vc(this)-1);this.b-=5},function(){this.W=Ad(this,this.W);this.b-=5},function(){this.W=gd(this,this.W);this.b-=5},function(){this.W=L(this);this.b-=7},function(){var a=this.j<<8;this.j=(Yc(this)<<8|this.j)>>1;Zc(this,a&256);this.b-=4},Hd,function(){Xc(this,M(this));this.b-=10},function(){var a=M(this);this.w.Tb(a,J(this));
this.b-=16},function(){Xc(this,J(this)+1);this.b-=5},function(){this.X=Ad(this,this.X);this.b-=5},function(){this.X=gd(this,this.X);this.b-=5},function(){this.X=L(this);this.b-=7},function(){var a=0,b=Yc(this);if(ad(this)||9<(this.j&15))a|=6;if(b||154<=this.j)a|=96,b=1;this.j=dd(this,a);Zc(this,b?256:0);this.b-=4},Hd,function(){var a;Xc(this,a=J(this)+J(this));Zc(this,a>>8&256);this.b-=10},function(){var a;a=M(this);a=this.w.Ra(a);Xc(this,a);this.b-=16},function(){Xc(this,J(this)-1);this.b-=5},function(){this.Z=
Ad(this,this.Z);this.b-=5},function(){this.Z=gd(this,this.Z);this.b-=5},function(){this.Z=L(this);this.b-=7},function(){this.j=~this.j&255;this.b-=4},Hd,function(){this.ka=M(this)&65535;this.b-=10},function(){this.sa(M(this),this.j);this.b-=13},function(){this.ka=this.ka+1&65535;this.b-=5},function(){var a=J(this);this.sa(a,Ad(this,this.$(a)));this.b-=10},function(){var a=J(this);this.sa(a,gd(this,this.$(a)));this.b-=10},function(){this.sa(J(this),L(this));this.b-=10},function(){this.ba|=256;this.b-=
4},Hd,function(){var a;Xc(this,a=J(this)+this.ka);Zc(this,a>>8&256);this.b-=10},function(){this.j=this.$(M(this));this.b-=13},function(){this.ka=this.ka-1&65535;this.b-=5},function(){this.j=Ad(this,this.j);this.b-=5},function(){this.j=gd(this,this.j);this.b-=5},function(){this.j=L(this);this.b-=7},function(){Zc(this,Yc(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.T=this.U;this.b-=5},function(){this.T=this.V;this.b-=5},function(){this.T=this.W;this.b-=5},function(){this.T=this.X;this.b-=
m.tb=function(a){this.D.Nb=!0;var b=this.D.wd=this.I&&Gd(this.I),c=a?this.D.Wb?0:1:-1;this.D.Wb=!1;this.B=this.b=a;do{if(this.u){if(a&&this.u&255&&this.wa&512){for(var d=0;8>d&&!(this.u&1<<d);d++);this.u&=~(0>d?255:1<<d);this.wa&=-513;this.u&=-257;this.O[199|d<<3].call(this)}if(this.u&256){this.b=0;break}}if(b){if(Hd(this.I,this.P,c)){this.ma();break}c=1}this.O[L(this)].call(this)}while(0<this.b);return this.D.Nb?this.B-this.b:void 0===this.D.Nb?0:-1};
Ma(function(){for(var a=B(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Nc(d);hb(d,c)}});function Id(){this.b-=4}function Jd(){G(this,M(this));this.b-=10}function Kd(){G(this,O(this));this.b-=10}function Ld(){var a=M(this);P(this,this.P);G(this,a);this.b-=17}
var Oc=[Id,function(){Vc(this,M(this));this.b-=10},function(){this.sa(Uc(this),this.j);this.b-=7},function(){Vc(this,Uc(this)+1);this.b-=5},function(){this.T=Bd(this,this.T);this.b-=5},function(){this.T=Ad(this,this.T);this.b-=5},function(){this.T=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|a>>8;$c(this,a&256);this.b-=4},Id,function(){var a;Yc(this,a=J(this)+Uc(this));$c(this,a>>8&256);this.b-=10},function(){this.j=this.$(Uc(this));this.b-=7},function(){Vc(this,Uc(this)-1);this.b-=
5},function(){this.U=Bd(this,this.U);this.b-=5},function(){this.U=Ad(this,this.U);this.b-=5},function(){this.U=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(a|this.j)>>1;$c(this,a);this.b-=4},Id,function(){Xc(this,M(this));this.b-=10},function(){this.sa(Wc(this),this.j);this.b-=7},function(){Xc(this,Wc(this)+1);this.b-=5},function(){this.V=Bd(this,this.V);this.b-=5},function(){this.V=Ad(this,this.V);this.b-=5},function(){this.V=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|
Zc(this);$c(this,a&256);this.b-=4},Id,function(){var a;Yc(this,a=J(this)+Wc(this));$c(this,a>>8&256);this.b-=10},function(){this.j=this.$(Wc(this));this.b-=7},function(){Xc(this,Wc(this)-1);this.b-=5},function(){this.W=Bd(this,this.W);this.b-=5},function(){this.W=Ad(this,this.W);this.b-=5},function(){this.W=L(this);this.b-=7},function(){var a=this.j<<8;this.j=(Zc(this)<<8|this.j)>>1;$c(this,a&256);this.b-=4},Id,function(){Yc(this,M(this));this.b-=10},function(){var a=M(this);this.w.Tb(a,J(this));
this.b-=16},function(){Yc(this,J(this)+1);this.b-=5},function(){this.X=Bd(this,this.X);this.b-=5},function(){this.X=Ad(this,this.X);this.b-=5},function(){this.X=L(this);this.b-=7},function(){var a=0,b=Zc(this);if(bd(this)||9<(this.j&15))a|=6;if(b||154<=this.j)a|=96,b=1;this.j=ed(this,a);$c(this,b?256:0);this.b-=4},Id,function(){var a;Yc(this,a=J(this)+J(this));$c(this,a>>8&256);this.b-=10},function(){var a;a=M(this);a=this.w.Ra(a);Yc(this,a);this.b-=16},function(){Yc(this,J(this)-1);this.b-=5},function(){this.Z=
Bd(this,this.Z);this.b-=5},function(){this.Z=Ad(this,this.Z);this.b-=5},function(){this.Z=L(this);this.b-=7},function(){this.j=~this.j&255;this.b-=4},Id,function(){this.ka=M(this)&65535;this.b-=10},function(){this.sa(M(this),this.j);this.b-=13},function(){this.ka=this.ka+1&65535;this.b-=5},function(){var a=J(this);this.sa(a,Bd(this,this.$(a)));this.b-=10},function(){var a=J(this);this.sa(a,Ad(this,this.$(a)));this.b-=10},function(){this.sa(J(this),L(this));this.b-=10},function(){this.ba|=256;this.b-=
4},Id,function(){var a;Yc(this,a=J(this)+this.ka);$c(this,a>>8&256);this.b-=10},function(){this.j=this.$(M(this));this.b-=13},function(){this.ka=this.ka-1&65535;this.b-=5},function(){this.j=Bd(this,this.j);this.b-=5},function(){this.j=Ad(this,this.j);this.b-=5},function(){this.j=L(this);this.b-=7},function(){$c(this,Zc(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.T=this.U;this.b-=5},function(){this.T=this.V;this.b-=5},function(){this.T=this.W;this.b-=5},function(){this.T=this.X;this.b-=
5},function(){this.T=this.Z;this.b-=5},function(){this.T=this.$(J(this));this.b-=7},function(){this.T=this.j;this.b-=5},function(){this.U=this.T;this.b-=5},function(){this.b-=5},function(){this.U=this.V;this.b-=5},function(){this.U=this.W;this.b-=5},function(){this.U=this.X;this.b-=5},function(){this.U=this.Z;this.b-=5},function(){this.U=this.$(J(this));this.b-=7},function(){this.U=this.j;this.b-=5},function(){this.V=this.T;this.b-=5},function(){this.V=this.U;this.b-=5},function(){this.b-=5},function(){this.V=
this.W;this.b-=5},function(){this.V=this.X;this.b-=5},function(){this.V=this.Z;this.b-=5},function(){this.V=this.$(J(this));this.b-=7},function(){this.V=this.j;this.b-=5},function(){this.W=this.T;this.b-=5},function(){this.W=this.U;this.b-=5},function(){this.W=this.V;this.b-=5},function(){this.b-=5},function(){this.W=this.X;this.b-=5},function(){this.W=this.Z;this.b-=5},function(){this.W=this.$(J(this));this.b-=7},function(){this.W=this.j;this.b-=5},function(){this.X=this.T;this.b-=5},function(){this.X=
this.U;this.b-=5},function(){this.X=this.V;this.b-=5},function(){this.X=this.W;this.b-=5},function(){this.b-=5},function(){this.X=this.Z;this.b-=5},function(){this.X=this.$(J(this));this.b-=7},function(){this.X=this.j;this.b-=5},function(){this.Z=this.T;this.b-=5},function(){this.Z=this.U;this.b-=5},function(){this.Z=this.V;this.b-=5},function(){this.Z=this.W;this.b-=5},function(){this.Z=this.X;this.b-=5},function(){this.b-=5},function(){this.Z=this.$(J(this));this.b-=7},function(){this.Z=this.j;
this.b-=5},function(){this.sa(J(this),this.T);this.b-=7},function(){this.sa(J(this),this.U);this.b-=7},function(){this.sa(J(this),this.V);this.b-=7},function(){this.sa(J(this),this.W);this.b-=7},function(){this.sa(J(this),this.X);this.b-=7},function(){this.sa(J(this),this.Z);this.b-=7},function(){var a=this.P-1;if(this.L.length)for(var b=0;b<this.L.length;b++)if(this.L[b](a))return;this.u|=256;this.b-=7;this.I&&kb(this,-2147483648)?(G(this,a),this.I.ma()):this.wa&512||(this.I&&G(this,a),this.ma())},
function(){this.sa(J(this),this.j);this.b-=7},function(){this.j=this.T;this.b-=5},function(){this.j=this.U;this.b-=5},function(){this.j=this.V;this.b-=5},function(){this.j=this.W;this.b-=5},function(){this.j=this.X;this.b-=5},function(){this.j=this.Z;this.b-=5},function(){this.j=this.$(J(this));this.b-=7},function(){this.b-=5},function(){this.j=dd(this,this.T);this.b-=4},function(){this.j=dd(this,this.U);this.b-=4},function(){this.j=dd(this,this.V);this.b-=4},function(){this.j=dd(this,this.W);this.b-=
4},function(){this.j=dd(this,this.X);this.b-=4},function(){this.j=dd(this,this.Z);this.b-=4},function(){this.j=dd(this,this.$(J(this)));this.b-=7},function(){this.j=dd(this,this.j);this.b-=4},function(){this.j=ed(this,this.T);this.b-=4},function(){this.j=ed(this,this.U);this.b-=4},function(){this.j=ed(this,this.V);this.b-=4},function(){this.j=ed(this,this.W);this.b-=4},function(){this.j=ed(this,this.X);this.b-=4},function(){this.j=ed(this,this.Z);this.b-=4},function(){this.j=ed(this,this.$(J(this)));
this.b-=7},function(){this.j=ed(this,this.j);this.b-=4},function(){this.j=K(this,this.T);this.b-=4},function(){this.j=K(this,this.U);this.b-=4},function(){this.j=K(this,this.V);this.b-=4},function(){this.j=K(this,this.W);this.b-=4},function(){this.j=K(this,this.X);this.b-=4},function(){this.j=K(this,this.Z);this.b-=4},function(){this.j=K(this,this.$(J(this)));this.b-=7},function(){this.j=K(this,this.j);this.b-=4},function(){this.j=Cd(this,this.T);this.b-=4},function(){this.j=Cd(this,this.U);this.b-=
4},function(){this.j=Cd(this,this.V);this.b-=4},function(){this.j=Cd(this,this.W);this.b-=4},function(){this.j=Cd(this,this.X);this.b-=4},function(){this.j=Cd(this,this.Z);this.b-=4},function(){this.j=Cd(this,this.$(J(this)));this.b-=7},function(){this.j=Cd(this,this.j);this.b-=4},function(){this.j=fd(this,this.T);this.b-=4},function(){this.j=fd(this,this.U);this.b-=4},function(){this.j=fd(this,this.V);this.b-=4},function(){this.j=fd(this,this.W);this.b-=4},function(){this.j=fd(this,this.X);this.b-=
4},function(){this.j=fd(this,this.Z);this.b-=4},function(){this.j=fd(this,this.$(J(this)));this.b-=7},function(){this.j=fd(this,this.j);this.b-=4},function(){this.j=Dd(this,this.T);this.b-=4},function(){this.j=Dd(this,this.U);this.b-=4},function(){this.j=Dd(this,this.V);this.b-=4},function(){this.j=Dd(this,this.W);this.b-=4},function(){this.j=Dd(this,this.X);this.b-=4},function(){this.j=Dd(this,this.Z);this.b-=4},function(){this.j=Dd(this,this.$(J(this)));this.b-=7},function(){this.j=Dd(this,this.j);
this.b-=4},function(){this.j=Bd(this,this.T);this.b-=4},function(){this.j=Bd(this,this.U);this.b-=4},function(){this.j=Bd(this,this.V);this.b-=4},function(){this.j=Bd(this,this.W);this.b-=4},function(){this.j=Bd(this,this.X);this.b-=4},function(){this.j=Bd(this,this.Z);this.b-=4},function(){this.j=Bd(this,this.$(J(this)));this.b-=7},function(){this.j=Bd(this,this.j);this.b-=4},function(){K(this,this.T);this.b-=4},function(){K(this,this.U);this.b-=4},function(){K(this,this.V);this.b-=4},function(){K(this,
this.W);this.b-=4},function(){K(this,this.X);this.b-=4},function(){K(this,this.Z);this.b-=4},function(){K(this,this.$(J(this)));this.b-=7},function(){K(this,this.j);this.b-=4},function(){bd(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){Uc(this,O(this));this.b-=10},function(){var a=M(this);bd(this)||G(this,a);this.b-=10},Id,function(){var a=M(this);bd(this)||(P(this,this.P),G(this,a),this.b-=6);this.b-=11},function(){P(this,Tc(this));this.b-=11},function(){this.j=dd(this,L(this));this.b-=
7},function(){P(this,this.P);G(this,0);this.b-=11},function(){bd(this)&&(G(this,O(this)),this.b-=6);this.b-=5},Jd,function(){var a=M(this);bd(this)&&G(this,a);this.b-=10},Id,function(){var a=M(this);bd(this)&&(P(this,this.P),G(this,a),this.b-=6);this.b-=11},Kd,function(){this.j=ed(this,L(this));this.b-=7},function(){P(this,this.P);G(this,8);this.b-=11},function(){Yc(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){Wc(this,O(this));this.b-=10},function(){var a=M(this);Yc(this)||G(this,a);this.b-=
10},function(){var a=L(this);Tb(this.w,a,this.j,this.P+-2&65535);this.b-=10},function(){var a=M(this);Yc(this)||(P(this,this.P),G(this,a),this.b-=6);this.b-=11},function(){P(this,Vc(this));this.b-=11},function(){this.j=K(this,L(this));this.b-=7},function(){P(this,this.P);G(this,16);this.b-=11},function(){Yc(this)&&(G(this,O(this)),this.b-=6);this.b-=5},Jd,function(){var a=M(this);Yc(this)&&G(this,a);this.b-=10},function(){var a=L(this);this.j=Hb(this.w,a,this.P+-2&65535)&255;this.b-=10},function(){var a=
M(this);Yc(this)&&(P(this,this.P),G(this,a),this.b-=6);this.b-=11},Kd,function(){this.j=Cd(this,L(this));this.b-=7},function(){P(this,this.P);G(this,24);this.b-=11},function(){$c(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){Xc(this,O(this));this.b-=10},function(){var a=M(this);$c(this)||G(this,a);this.b-=10},function(){var a=O(this);P(this,J(this));Xc(this,a);this.b-=18},function(){var a=M(this);$c(this)||(P(this,this.P),G(this,a),this.b-=6);this.b-=11},function(){P(this,J(this));this.b-=
11},function(){this.j=fd(this,L(this));this.b-=7},function(){P(this,this.P);G(this,32);this.b-=11},function(){$c(this)&&(G(this,O(this)),this.b-=6);this.b-=5},function(){G(this,J(this));this.b-=5},function(){var a=M(this);$c(this)&&G(this,a);this.b-=10},function(){var a=J(this);Xc(this,Vc(this));Wc(this,a);this.b-=5},function(){var a=M(this);$c(this)&&(P(this,this.P),G(this,a),this.b-=6);this.b-=11},Kd,function(){this.j=Dd(this,L(this));this.b-=7},function(){P(this,this.P);G(this,40);this.b-=11},
function(){cd(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){var a=O(this);Qc(this,a&255|this.wa&-256);this.j=a>>8;this.b-=10},function(){var a=M(this);cd(this)||G(this,a);this.b-=10},function(){this.wa&=-513;this.b-=4},function(){var a=M(this);cd(this)||(P(this,this.P),G(this,a),this.b-=6);this.b-=11},function(){P(this,Sc(this)&255|this.j<<8);this.b-=11},function(){this.j=Bd(this,L(this));this.b-=7},function(){P(this,this.P);G(this,48);this.b-=11},function(){cd(this)&&(G(this,O(this)),
this.b-=6);this.b-=5},function(){this.ka=J(this)&65535;this.b-=5},function(){var a=M(this);cd(this)&&G(this,a);this.b-=10},function(){this.wa|=512;this.b-=4},function(){var a=M(this);cd(this)&&(P(this,this.P),G(this,a),this.b-=6);this.b-=11},Kd,function(){K(this,L(this));this.b-=7},function(){P(this,this.P);G(this,56);this.b-=11}];
function S(a){w.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!Ld[b]&&Oa("Unrecognized ChipSet model: "+b);this.B=Ld[b]||{};a.sound&&(this.ga=null,window&&(this.ga=window.AudioContext||window.webkitAudioContext),this.ga&&new this.ga);E(this)}bb(S);
function(){this.sa(J(this),this.j);this.b-=7},function(){this.j=this.T;this.b-=5},function(){this.j=this.U;this.b-=5},function(){this.j=this.V;this.b-=5},function(){this.j=this.W;this.b-=5},function(){this.j=this.X;this.b-=5},function(){this.j=this.Z;this.b-=5},function(){this.j=this.$(J(this));this.b-=7},function(){this.b-=5},function(){this.j=ed(this,this.T);this.b-=4},function(){this.j=ed(this,this.U);this.b-=4},function(){this.j=ed(this,this.V);this.b-=4},function(){this.j=ed(this,this.W);this.b-=
4},function(){this.j=ed(this,this.X);this.b-=4},function(){this.j=ed(this,this.Z);this.b-=4},function(){this.j=ed(this,this.$(J(this)));this.b-=7},function(){this.j=ed(this,this.j);this.b-=4},function(){this.j=fd(this,this.T);this.b-=4},function(){this.j=fd(this,this.U);this.b-=4},function(){this.j=fd(this,this.V);this.b-=4},function(){this.j=fd(this,this.W);this.b-=4},function(){this.j=fd(this,this.X);this.b-=4},function(){this.j=fd(this,this.Z);this.b-=4},function(){this.j=fd(this,this.$(J(this)));
this.b-=7},function(){this.j=fd(this,this.j);this.b-=4},function(){this.j=K(this,this.T);this.b-=4},function(){this.j=K(this,this.U);this.b-=4},function(){this.j=K(this,this.V);this.b-=4},function(){this.j=K(this,this.W);this.b-=4},function(){this.j=K(this,this.X);this.b-=4},function(){this.j=K(this,this.Z);this.b-=4},function(){this.j=K(this,this.$(J(this)));this.b-=7},function(){this.j=K(this,this.j);this.b-=4},function(){this.j=Dd(this,this.T);this.b-=4},function(){this.j=Dd(this,this.U);this.b-=
4},function(){this.j=Dd(this,this.V);this.b-=4},function(){this.j=Dd(this,this.W);this.b-=4},function(){this.j=Dd(this,this.X);this.b-=4},function(){this.j=Dd(this,this.Z);this.b-=4},function(){this.j=Dd(this,this.$(J(this)));this.b-=7},function(){this.j=Dd(this,this.j);this.b-=4},function(){this.j=gd(this,this.T);this.b-=4},function(){this.j=gd(this,this.U);this.b-=4},function(){this.j=gd(this,this.V);this.b-=4},function(){this.j=gd(this,this.W);this.b-=4},function(){this.j=gd(this,this.X);this.b-=
4},function(){this.j=gd(this,this.Z);this.b-=4},function(){this.j=gd(this,this.$(J(this)));this.b-=7},function(){this.j=gd(this,this.j);this.b-=4},function(){this.j=Ed(this,this.T);this.b-=4},function(){this.j=Ed(this,this.U);this.b-=4},function(){this.j=Ed(this,this.V);this.b-=4},function(){this.j=Ed(this,this.W);this.b-=4},function(){this.j=Ed(this,this.X);this.b-=4},function(){this.j=Ed(this,this.Z);this.b-=4},function(){this.j=Ed(this,this.$(J(this)));this.b-=7},function(){this.j=Ed(this,this.j);
this.b-=4},function(){this.j=Cd(this,this.T);this.b-=4},function(){this.j=Cd(this,this.U);this.b-=4},function(){this.j=Cd(this,this.V);this.b-=4},function(){this.j=Cd(this,this.W);this.b-=4},function(){this.j=Cd(this,this.X);this.b-=4},function(){this.j=Cd(this,this.Z);this.b-=4},function(){this.j=Cd(this,this.$(J(this)));this.b-=7},function(){this.j=Cd(this,this.j);this.b-=4},function(){K(this,this.T);this.b-=4},function(){K(this,this.U);this.b-=4},function(){K(this,this.V);this.b-=4},function(){K(this,
this.W);this.b-=4},function(){K(this,this.X);this.b-=4},function(){K(this,this.Z);this.b-=4},function(){K(this,this.$(J(this)));this.b-=7},function(){K(this,this.j);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},Jd,function(){var a=M(this);cd(this)||(P(this,this.P),G(this,a),this.b-=6);this.b-=11},function(){P(this,Uc(this));this.b-=11},function(){this.j=ed(this,L(this));this.b-=
7},function(){P(this,this.P);G(this,0);this.b-=11},function(){cd(this)&&(G(this,O(this)),this.b-=6);this.b-=5},Kd,function(){var a=M(this);cd(this)&&G(this,a);this.b-=10},Jd,function(){var a=M(this);cd(this)&&(P(this,this.P),G(this,a),this.b-=6);this.b-=11},Ld,function(){this.j=fd(this,L(this));this.b-=7},function(){P(this,this.P);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.w,a,this.j,this.P+-2&65535);this.b-=10},function(){var a=M(this);Zc(this)||(P(this,this.P),G(this,a),this.b-=6);this.b-=11},function(){P(this,Wc(this));this.b-=11},function(){this.j=K(this,L(this));this.b-=7},function(){P(this,this.P);G(this,16);this.b-=11},function(){Zc(this)&&(G(this,O(this)),this.b-=6);this.b-=5},Kd,function(){var a=M(this);Zc(this)&&G(this,a);this.b-=10},function(){var a=L(this);this.j=Ib(this.w,a,this.P+-2&65535)&255;this.b-=10},function(){var a=
M(this);Zc(this)&&(P(this,this.P),G(this,a),this.b-=6);this.b-=11},Ld,function(){this.j=Dd(this,L(this));this.b-=7},function(){P(this,this.P);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.P),G(this,a),this.b-=6);this.b-=11},function(){P(this,J(this));this.b-=
11},function(){this.j=gd(this,L(this));this.b-=7},function(){P(this,this.P);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.P),G(this,a),this.b-=6);this.b-=11},Ld,function(){this.j=Ed(this,L(this));this.b-=7},function(){P(this,this.P);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.wa&-256);this.j=a>>8;this.b-=10},function(){var a=M(this);dd(this)||G(this,a);this.b-=10},function(){this.wa&=-513;this.b-=4},function(){var a=M(this);dd(this)||(P(this,this.P),G(this,a),this.b-=6);this.b-=11},function(){P(this,Tc(this)&255|this.j<<8);this.b-=11},function(){this.j=Cd(this,L(this));this.b-=7},function(){P(this,this.P);G(this,48);this.b-=11},function(){dd(this)&&(G(this,O(this)),
this.b-=6);this.b-=5},function(){this.ka=J(this)&65535;this.b-=5},function(){var a=M(this);dd(this)&&G(this,a);this.b-=10},function(){this.wa|=512;this.b-=4},function(){var a=M(this);dd(this)&&(P(this,this.P),G(this,a),this.b-=6);this.b-=11},Ld,function(){K(this,L(this));this.b-=7},function(){P(this,this.P);G(this,56);this.b-=11}];
function S(a){w.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!Md[b]&&Oa("Unrecognized ChipSet model: "+b);this.B=Md[b]||{};a.sound&&(this.ga=null,window&&(this.ga=window.AudioContext||window.webkitAudioContext),this.ga&&new this.ga);E(this)}bb(S);
var T={za:1978.1,rd:{Aa:0,ee:1,ie:16,pe:32,ye:64,xe:128,vb:14},Xa:{Aa:1,Sc:1,ld:2,gd:4,hd:16,jd:32,kd:64,vb:8},sd:{Aa:2,de:3,Ge:4,fe:8,te:16,ue:32,ve:64,ge:128,vb:0},Ce:{Aa:3},Ae:{Aa:2,qe:7},Ee:{Aa:3,He:1,De:2,we:4,ne:8,he:16,ae:32},Be:{Aa:4},Fe:{Aa:5,je:1,ke:2,le:4,me:8,Ie:16}},U={za:100,Ia:{Aa:66,qc:1,mc:2,fd:4,se:8,re:16,oc:32,nc:64,jc:128},Rc:{Aa:66,INIT:0},Va:{Aa:194,ce:0,ic:16,md:32,pc:48,Wc:0,Xc:32},Jb:{Aa:162,ze:0,Zc:0,Vc:0,Yc:0,Uc:0},Ja:{oe:{Aa:98},Ua:{Pc:0,Oc:1,od:2,td:4,Tc:5,nd:6,pd:7},
Kb:16383}},Ld={SI1978:T,VT100:U};S.prototype.la=function(){return!1};S.prototype.Pa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;this.A=a;this.K=ub(a,"Keyboard");this.Ma=ub(a,"SerialPort");this.video=ub(a,"Video");Gb(b,this,this.B.Rb);Sb(b,this,this.B.Sb)};S.prototype.Da=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};S.prototype.Ga=function(a){return a?this.save():!0};T.INIT=[[T.rd.vb,T.Xa.vb,T.sd.vb,0,0,0,0]];
U.INIT=[[U.Rc.INIT,U.Ia.mc|U.Ia.fd],[U.Va.Wc,U.Va.Xc],[U.Jb.Zc,U.Jb.Vc,U.Jb.Yc,U.Jb.Uc],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11856,11824,11840,11808,11776,12E3,12E3,11857,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];
m=S.prototype;m.reset=function(){this.B.INIT&&!this.restore(this.B.INIT)&&this.ia("reset error")};m.save=function(){var a=new H(this);switch(this.B.za){case T.za:I(a,0,[this.Ba,this.J,this.Ca,this.aa,this.fa,this.ta,this.ua]);break;case U.za:I(a,0,[this.ha,this.H]),I(a,1,[this.M,this.O]),I(a,2,[this.F,this.ca,this.qa,this.na]),I(a,3,[this.S,this.u,this.R,this.da,this.L])}return a.data()};
m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.B.za){case T.za:return this.Ba=b[0],this.J=b[1],this.Ca=b[2],this.aa=b[3],this.fa=b[4],this.ta=b[5],this.ua=b[6],!0;case U.za:return this.ha=b[0],this.H=b[1],b=a[1],this.M=b[0],this.O=b[1],b=a[2],this.F=b[0],this.ca=b[1],this.qa=b[2],this.na=b[3],b=a[3],this.S=b[0],this.u=b[1],this.R=b[2],this.da=b[3],this.L=b[4],!0}return!1};m.start=function(){};m.stop=function(){};m.Ad=function(a,b){var c=this.Ba;D(this,a,null,b,"STATUS0",c,!0);return c};
m.Bd=function(a,b){var c=this.J;D(this,a,null,b,"STATUS1",c,!0);return c};m.Cd=function(a,b){var c=this.Ca;D(this,a,null,b,"STATUS2",c,!0);return c};m.zd=function(a,b){var c=this.aa>>8-this.fa&255;D(this,a,null,b,"SHIFT.RESULT",c,!0);return c};m.Kd=function(a,b,c){D(this,a,b,c,"SHIFT.COUNT",null,!0);this.fa=b};m.Md=function(a,b,c){D(this,a,b,c,"SOUND1",null,!0);this.ta=b};m.Ld=function(a,b,c){D(this,a,b,c,"SHIFT.DATA",null,!0);this.aa=b<<8|this.aa>>8};
m.Nd=function(a,b,c){D(this,a,b,c,"SOUND2",null,!0);this.ua=b};m.Od=function(a,b,c){D(this,a,b,c,"WATCHDOG",null,!0)};function Md(a){var b=0,c=0,d=~a.S;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
m.Dd=function(a,b){var c=this.H,c=c&~U.Ia.nc;if((Fc(this.b)&64)<<1&&(c|=U.Ia.nc,c!=this.H)){var d,e;d=this.R&1;e=this.R>>1&7;switch(e){case U.Ja.Ua.pd:break;case U.Ja.Ua.Oc:this.S=this.S<<1|d;break;case U.Ja.Ua.Tc:d=Md(this);this.L[d]=U.Ja.Kb;jb(this,"doNVRCommand(): erase data at addr "+t(d));break;case U.Ja.Ua.Pc:this.u=this.u<<1|d;break;case U.Ja.Ua.td:d=Md(this);e=this.u&U.Ja.Kb;this.L[d]=e;jb(this,"doNVRCommand(): write data "+t(e)+" to addr "+t(d));break;case U.Ja.Ua.nd:d=Md(this);e=this.L[d];
null==e&&(e=U.Ja.Kb);this.u=e;jb(this,"doNVRCommand(): read data "+t(e)+" from addr "+t(d));break;case U.Ja.Ua.od:this.u<<=1;this.da=this.u&U.Ja.Kb+1;break;default:jb(this,"doNVRCommand(): unrecognized command "+da(e))}}c&=~U.Ia.oc;this.da&&(c|=U.Ia.oc);c&=~U.Ia.jc;this.K&&this.K.Zb()&&(c|=U.Ia.jc);c&=~U.Ia.qc;this.Ma&&this.Ma.Zb()&&(c|=U.Ia.qc);this.H=c;D(this,a,null,b,"FLAGS",c);return c};m.Pd=function(a,b,c){D(this,a,b,c,"BRIGHTNESS");this.ha=b};
m.Sd=function(a,b,c){D(this,a,b,c,"NVR.LATCH");this.R=b};m.Rd=function(a,b,c){D(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.F=this.F&-4|a;break;case 1:this.F=this.F&-13|a<<2;this.video&&(b=this.video,a=this.F,jb(b,"updateScrollOffset("+a+")"),b.hb!==a&&((b.hb=a)?Nd(b,-1):b.xb=!0));break;case 2:switch(a){case 0:this.ca=~this.ca;break;case 2:case 3:this.qa=3-a}break;case 3:this.na=a}};
m.Qd=function(a,b,c){D(this,a,b,c,"DC011");b&U.Va.md?(b&=U.Va.pc,this.O!=b&&(this.O=b,this.video&&(a=this.video,b=this.O==U.Va.pc?50:60,jb(a,"updateRate("+b+")"),a.Yb=b))):(b&=U.Va.ic,this.M!=b&&(this.M=b,this.video&&(a=this.M==U.Va.ic?132:80,b=this.video,jb(b,"updateDimensions("+a+","+(80<a&&this.H&U.Ia.mc?14:24)+")"),b.da=a,b.oa=b.zc,80<a&&b.oa--,Od(b)&&Pd(b))))};T.Rb={0:S.prototype.Ad,1:S.prototype.Bd,2:S.prototype.Cd,3:S.prototype.zd};
Kb:16383}},Md={SI1978:T,VT100:U};S.prototype.la=function(){return!1};S.prototype.Pa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;this.A=a;this.K=vb(a,"Keyboard");this.Ma=vb(a,"SerialPort");this.video=vb(a,"Video");Hb(b,this,this.B.Rb);Tb(b,this,this.B.Sb);if(d){var e=this;Nd(d,16384,function(){for(var a="",b=0;b<e.F.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=t(e.F[b]);e.I.g(a)})}};S.prototype.Da=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};
S.prototype.Ga=function(a){return a?this.save():!0};T.INIT=[[T.rd.vb,T.Xa.vb,T.sd.vb,0,0,0,0]];
U.INIT=[[U.Rc.INIT,U.Ia.mc|U.Ia.fd],[U.Va.Wc,U.Va.Xc],[U.Jb.Zc,U.Jb.Vc,U.Jb.Yc,U.Jb.Uc],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11824,11840,11808,11776,12E3,12E3,11889,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];
m=S.prototype;m.reset=function(){this.B.INIT&&!this.restore(this.B.INIT)&&this.ia("reset error")};m.save=function(){var a=new H(this);switch(this.B.za){case T.za:I(a,0,[this.Ba,this.H,this.Ca,this.aa,this.fa,this.ta,this.ua]);break;case U.za:I(a,0,[this.ha,this.L]),I(a,1,[this.M,this.O]),I(a,2,[this.J,this.ca,this.qa,this.na]),I(a,3,[this.S,this.u,this.R,this.da,this.F])}return a.data()};
m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.B.za){case T.za:return this.Ba=b[0],this.H=b[1],this.Ca=b[2],this.aa=b[3],this.fa=b[4],this.ta=b[5],this.ua=b[6],!0;case U.za:return this.ha=b[0],this.L=b[1],b=a[1],this.M=b[0],this.O=b[1],b=a[2],this.J=b[0],this.ca=b[1],this.qa=b[2],this.na=b[3],b=a[3],this.S=b[0],this.u=b[1],this.R=b[2],this.da=b[3],this.F=b[4],!0}return!1};m.start=function(){};m.stop=function(){};m.Ad=function(a,b){var c=this.Ba;D(this,a,null,b,"STATUS0",c,!0);return c};
m.Bd=function(a,b){var c=this.H;D(this,a,null,b,"STATUS1",c,!0);return c};m.Cd=function(a,b){var c=this.Ca;D(this,a,null,b,"STATUS2",c,!0);return c};m.zd=function(a,b){var c=this.aa>>8-this.fa&255;D(this,a,null,b,"SHIFT.RESULT",c,!0);return c};m.Kd=function(a,b,c){D(this,a,b,c,"SHIFT.COUNT",null,!0);this.fa=b};m.Md=function(a,b,c){D(this,a,b,c,"SOUND1",null,!0);this.ta=b};m.Ld=function(a,b,c){D(this,a,b,c,"SHIFT.DATA",null,!0);this.aa=b<<8|this.aa>>8};
m.Nd=function(a,b,c){D(this,a,b,c,"SOUND2",null,!0);this.ua=b};m.Od=function(a,b,c){D(this,a,b,c,"WATCHDOG",null,!0)};function Od(a){var b=0,c=0,d=~a.S;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
m.Dd=function(a,b){var c=this.L,c=c&~U.Ia.nc;if((Gc(this.b)&64)<<1&&(c|=U.Ia.nc,c!=this.L)){var d,e;d=this.R&1;e=this.R>>1&7;switch(e){case U.Ja.Ua.pd:break;case U.Ja.Ua.Oc:this.S=this.S<<1|d;break;case U.Ja.Ua.Tc:d=Od(this);this.F[d]=U.Ja.Kb;jb(this,"doNVRCommand(): erase data at addr "+t(d));break;case U.Ja.Ua.Pc:this.u=this.u<<1|d;break;case U.Ja.Ua.td:d=Od(this);e=this.u&U.Ja.Kb;this.F[d]=e;jb(this,"doNVRCommand(): write data "+t(e)+" to addr "+t(d));break;case U.Ja.Ua.nd:d=Od(this);e=this.F[d];
null==e&&(e=U.Ja.Kb);this.u=e;jb(this,"doNVRCommand(): read data "+t(e)+" from addr "+t(d));break;case U.Ja.Ua.od:this.u<<=1;this.da=this.u&U.Ja.Kb+1;break;default:jb(this,"doNVRCommand(): unrecognized command "+da(e))}}c&=~U.Ia.oc;this.da&&(c|=U.Ia.oc);c&=~U.Ia.jc;this.K&&this.K.Zb()&&(c|=U.Ia.jc);c&=~U.Ia.qc;this.Ma&&this.Ma.Zb()&&(c|=U.Ia.qc);this.L=c;D(this,a,null,b,"FLAGS",c);return c};m.Pd=function(a,b,c){D(this,a,b,c,"BRIGHTNESS");this.ha=b};
m.Sd=function(a,b,c){D(this,a,b,c,"NVR.LATCH");this.R=b};m.Rd=function(a,b,c){D(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.J=this.J&-4|a;break;case 1:this.J=this.J&-13|a<<2;this.video&&(b=this.video,a=this.J,jb(b,"updateScrollOffset("+a+")"),b.hb!==a&&((b.hb=a)?Pd(b,-1):b.xb=!0));break;case 2:switch(a){case 0:this.ca=~this.ca;break;case 2:case 3:this.qa=3-a}break;case 3:this.na=a}};
m.Qd=function(a,b,c){D(this,a,b,c,"DC011");b&U.Va.md?(b&=U.Va.pc,this.O!=b&&(this.O=b,this.video&&(a=this.video,b=this.O==U.Va.pc?50:60,jb(a,"updateRate("+b+")"),a.Yb=b))):(b&=U.Va.ic,this.M!=b&&(this.M=b,this.video&&(a=this.M==U.Va.ic?132:80,b=this.video,jb(b,"updateDimensions("+a+","+(80<a&&this.L&U.Ia.mc?14:24)+")"),b.da=a,b.oa=b.zc,80<a&&b.oa--,Qd(b)&&Rd(b))))};T.Rb={0:S.prototype.Ad,1:S.prototype.Bd,2:S.prototype.Cd,3:S.prototype.zd};
T.Sb={2:S.prototype.Kd,3:S.prototype.Md,4:S.prototype.Ld,5:S.prototype.Nd,6:S.prototype.Od};U.Rb={66:S.prototype.Dd};U.Sb={66:S.prototype.Pd,98:S.prototype.Sd,162:S.prototype.Rd,194:S.prototype.Qd};Ma(function(){for(var a=B(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new S(d);hb(d,c)}});
function Qd(a){w.call(this,"ROM",a,Qd);this.A=null;this.J=a.addr;this.u=a.size;this.H=a.writable;this.B=a.alias;this.F=a.file;this.K=ea(this.F);if(this.F){a=this.F;var b=fa(this.K);"json"!=b&&"hex"!=b&&(a=ha()+"/api/v1/dump?file="+this.F+"&format=bytes&decimal=true");var c=this;sa(a,null,!0,function(a,b,f){Rd(c,a,b,f)})}}bb(Qd);var Sd=[0,5];Qd.prototype.Pa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;Td(this)};
Qd.prototype.Da=function(){if(this.Qa){if(this.I){var a=this.I,b=this.id,c=this.J,d=this.u,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.H.push({Je:b,G:c,Fd:d,Qa:e,rc:f})}delete this.Qa}return!0};Qd.prototype.Ga=function(){return!0};
function Rd(a,b,c,d){if(d)a.ia("Unable to load system ROM (error "+d+": "+b+")");else{db(a.Lb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.A=f;else if(h)for(a.A=Array(4*h.length),d=c=0;c<h.length;c++)a.A[d++]=h[c]&255,a.A[d++]=h[c]>>8&255,a.A[d++]=h[c]>>16&255,a.A[d++]=h[c]>>24&255;else a.A=e;a.Qa=e.symbols;if(!a.A.length){u("Empty ROM: "+b);return}if(1==a.A.length){u(a.A[0]);return}}catch(g){a.ia("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.A=Array(b.length),e=0;e<b.length;e++)a.A[e]=ca(b[e],16);Td(a)}}
function Td(a){if(!nb(a))if(!a.F)E(a);else if(a.A&&a.w){a.u||(a.u=a.A.length);if(a.A.length!=a.u)qb(a,"ROM size (0x"+n(a.A.length)+") does not match specified size ("+("0x"+n(a.u))+")");else if(Ud(a,a.J)){var b=[];"number"==typeof a.B?b.push(a.B):null!=a.B&&a.B.length&&(b=a.B);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.w,h=d.u,g=[],k=d.J>>>f.pa;0<h&&k<f.Y.length;)g.push(f.Y[k++]),h-=f.Fa;f=d.w;d=d.u;h=0;for(e>>>=f.pa;0<d&&e<f.Y.length;){k=g[h++];if(!k)break;f.Y[e++]=k;d-=f.Fa}}delete a.A}E(a)}}
function Ud(a,b){if(yb(a.w,b,a.u,a.H?1:$b)){var c;for(c=0;c<a.A.length;c++)Db(a.w,b+c,a.A[c]);if(a.H&&256==b){for(c=0;c<Sd.length;c++)Db(a.w,Sd[c],118);Pc(a.b,function(a){return function(b){if(0<=Sd.indexOf(b)){var c=!1,h=a.b,g=a.I;if(5==b)switch(c=!0,h.U){case 2:Vd(a,String.fromCharCode(h.W));break;case 9:for(var k=Vc(h),l="",p=255;p--;){var q=a.b.$(k++);if(36==q)break;l+=String.fromCharCode(q)}Vd(a,l);break;default:c=!1}c?Jd.call(h):g&&(a.g("\nCP/M vector "+t(b)),G(h,b),g.ma());b=!0}else b=!1;return b}}(a));
Rc(a.b,b)}return!0}return!1}function Vd(a,b){b=b.replace(/\r/g,"");a.Ea&&(a.Ea.value+=b,a.Ea.scrollTop=a.Ea.scrollHeight)}Ma(function(){for(var a=B(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Qd(d);hb(d,c)}});function Wd(a){w.call(this,"RAM",a,Wd);this.B=a.addr;this.u=a.size;this.A=!1}bb(Wd);m=Wd.prototype;m.Pa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;E(this)};m.Da=function(a,b){b||this.reset();return!0};m.Ga=function(a){return a?this.save():!0};
m.reset=function(){!this.A&&this.u&&yb(this.w,this.B,this.u,1)&&(this.A=!0);this.A||u("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ma(function(){for(var a=B(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Wd(d);hb(d,c)}});function Xd(a){w.call(this,"Keyboard",a,Xd,65536);(a=a.model)&&!Yd[a]&&Oa("Unrecognized Keyboard8080 model: "+a);this.w=Yd[a]||{};this.reset();E(this)}bb(Xd);
var Zd={za:1978.1,C:{},hc:{65:37,68:39,76:32},wb:{},Wa:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},V={za:100,C:{},hc:{},wb:{},Wa:{setup:120},Qc:{Aa:130,INIT:127},Ka:{Aa:130,dd:1,cd:2,bd:4,ad:8,ed:16,lc:32,kc:63,qd:64,be:128,INIT:0},$c:127};V.C[46]=3;V.C[80]=5;V.C[79]=6;V.C[89]=7;V.C[84]=8;V.C[87]=9;V.C[81]=10;V.C[39]=16;V.C[221]=20;V.C[219]=21;V.C[73]=22;V.C[85]=23;V.C[82]=24;V.C[69]=25;V.C[49]=26;V.C[37]=32;V.C[40]=34;V.C[117]=35;V.C[19]=35;V.C[192]=36;V.C[189]=37;V.C[57]=38;V.C[55]=39;
function Sd(a){w.call(this,"ROM",a,Sd);this.A=null;this.J=a.addr;this.u=a.size;this.H=a.writable;this.B=a.alias;this.F=a.file;this.K=ea(this.F);if(this.F){a=this.F;var b=fa(this.K);"json"!=b&&"hex"!=b&&(a=ha()+"/api/v1/dump?file="+this.F+"&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.w=b;this.b=c;this.I=d;Vd(this)};
Sd.prototype.Da=function(){if(this.Qa){if(this.I){var a=this.I,b=this.id,c=this.J,d=this.u,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.H.push({Je:b,G:c,Fd:d,Qa:e,rc:f})}delete this.Qa}return!0};Sd.prototype.Ga=function(){return!0};
function Td(a,b,c,d){if(d)a.ia("Unable to load system ROM (error "+d+": "+b+")");else{db(a.Lb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.A=f;else if(h)for(a.A=Array(4*h.length),d=c=0;c<h.length;c++)a.A[d++]=h[c]&255,a.A[d++]=h[c]>>8&255,a.A[d++]=h[c]>>16&255,a.A[d++]=h[c]>>24&255;else a.A=e;a.Qa=e.symbols;if(!a.A.length){u("Empty ROM: "+b);return}if(1==a.A.length){u(a.A[0]);return}}catch(g){a.ia("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.A=Array(b.length),e=0;e<b.length;e++)a.A[e]=ca(b[e],16);Vd(a)}}
function Vd(a){if(!nb(a))if(!a.F)E(a);else if(a.A&&a.w){a.u||(a.u=a.A.length);if(a.A.length!=a.u)qb(a,"ROM size (0x"+n(a.A.length)+") does not match specified size ("+("0x"+n(a.u))+")");else if(Wd(a,a.J)){var b=[];"number"==typeof a.B?b.push(a.B):null!=a.B&&a.B.length&&(b=a.B);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.w,h=d.u,g=[],k=d.J>>>f.pa;0<h&&k<f.Y.length;)g.push(f.Y[k++]),h-=f.Fa;f=d.w;d=d.u;h=0;for(e>>>=f.pa;0<d&&e<f.Y.length;){k=g[h++];if(!k)break;f.Y[e++]=k;d-=f.Fa}}delete a.A}E(a)}}
function Wd(a,b){if(zb(a.w,b,a.u,a.H?1:ac)){var c;for(c=0;c<a.A.length;c++)Eb(a.w,b+c,a.A[c]);if(a.H&&256==b){for(c=0;c<Ud.length;c++)Eb(a.w,Ud[c],118);Qc(a.b,function(a){return function(b){if(0<=Ud.indexOf(b)){var c=!1,h=a.b,g=a.I;if(5==b)switch(c=!0,h.U){case 2:Xd(a,String.fromCharCode(h.W));break;case 9:for(var k=Wc(h),l="",p=255;p--;){var q=a.b.$(k++);if(36==q)break;l+=String.fromCharCode(q)}Xd(a,l);break;default:c=!1}c?Kd.call(h):g&&(a.g("\nCP/M vector "+t(b)),G(h,b),g.ma());b=!0}else b=!1;return b}}(a));
Sc(a.b,b)}return!0}return!1}function Xd(a,b){b=b.replace(/\r/g,"");a.Ea&&(a.Ea.value+=b,a.Ea.scrollTop=a.Ea.scrollHeight)}Ma(function(){for(var a=B(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Sd(d);hb(d,c)}});function Yd(a){w.call(this,"RAM",a,Yd);this.B=a.addr;this.u=a.size;this.A=!1}bb(Yd);m=Yd.prototype;m.Pa=function(a,b,c,d){this.w=b;this.b=c;this.I=d;E(this)};m.Da=function(a,b){b||this.reset();return!0};m.Ga=function(a){return a?this.save():!0};
m.reset=function(){!this.A&&this.u&&zb(this.w,this.B,this.u,1)&&(this.A=!0);this.A||u("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ma(function(){for(var a=B(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.w=$d[a]||{};this.reset();E(this)}bb(Zd);
var ae={za:1978.1,C:{},hc:{65:37,68:39,76:32},wb:{},Wa:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},V={za:100,C:{},hc:{},wb:{},Wa:{setup:120},Qc:{Aa:130,INIT:127},Ka:{Aa:130,dd:1,cd:2,bd:4,ad:8,ed:16,lc:32,kc:63,qd:64,be:128,INIT:0},$c:127};V.C[46]=3;V.C[80]=5;V.C[79]=6;V.C[89]=7;V.C[84]=8;V.C[87]=9;V.C[81]=10;V.C[39]=16;V.C[221]=20;V.C[219]=21;V.C[73]=22;V.C[85]=23;V.C[82]=24;V.C[69]=25;V.C[49]=26;V.C[37]=32;V.C[40]=34;V.C[117]=35;V.C[19]=35;V.C[192]=36;V.C[189]=37;V.C[57]=38;V.C[55]=39;
V.C[52]=40;V.C[51]=41;V.C[27]=42;V.C[38]=48;V.C[114]=49;V.C[112]=50;V.C[8]=51;V.C[187]=52;V.C[48]=53;V.C[56]=54;V.C[54]=55;V.C[53]=56;V.C[50]=57;V.C[9]=58;V.C[103]=64;V.C[115]=65;V.C[113]=66;V.C[96]=67;V.C[118]=68;V.C[220]=69;V.C[76]=70;V.C[75]=71;V.C[71]=72;V.C[70]=73;V.C[65]=74;V.C[104]=80;V.C[2013]=81;V.C[98]=82;V.C[97]=83;V.C[222]=85;V.C[186]=86;V.C[74]=87;V.C[72]=88;V.C[68]=89;V.C[83]=90;V.C[110]=96;V.C[116]=97;V.C[101]=98;V.C[100]=99;V.C[13]=100;V.C[190]=101;V.C[188]=102;V.C[78]=103;
V.C[66]=104;V.C[88]=105;V.C[119]=106;V.C[105]=112;V.C[99]=113;V.C[102]=114;V.C[109]=115;V.C[191]=117;V.C[77]=118;V.C[32]=119;V.C[86]=120;V.C[67]=121;V.C[90]=122;V.C[120]=123;V.C[17]=124;V.C[16]=125;V.C[20]=126;V.wb={l4:V.Ka.dd,l3:V.Ka.cd,l2:V.Ka.bd,l1:V.Ka.ad,locked:V.Ka.ed,local:V.Ka.lc,online:~V.Ka.lc};var Yd={SI1978:Zd,VT100:V};
Xd.prototype.la=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.N[e]){if("led"==a&&this.w.wb[b])return this.N[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return $d(d,a,!0)},c.onkeyup=function(a){return $d(d,a,!1)},!0;default:if(this.w.Wa&&void 0!==this.w.Wa[b])return this.N[e]=c,a=function(a,b){return function(){ae(a,b,!0)}}(this,this.w.Wa[b]),b=function(a,b){return function(){ae(a,b,!1);a.A&&a.A.gb()}}(this,this.w.Wa[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};Xd.prototype.Pa=function(a,b,c,d){this.A=a;this.b=c;this.I=d;this.J=ub(a,"ChipSet");Gb(b,this,this.w.Rb);Sb(b,this,this.w.Sb)};Xd.prototype.Da=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};Xd.prototype.Ga=function(a){return a?this.save():!0};V.INIT=[[V.Ka.INIT,V.Qc.INIT,-1]];m=Xd.prototype;m.reset=function(){this.u=[];this.w.INIT&&!this.restore(this.w.INIT)&&this.ia("reset error")};
m.save=function(){var a=new H(this);switch(this.w.za){case V.za:I(a,0,[this.H,this.F,-1])}return a.data()};m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.w.za){case Zd.za:return!0;case V.za:return this.H=b[0],be(this,this.H&V.Ka.kc),this.F=b[1],this.B=b[2],!0}return!1};function be(a,b){for(var c in a.w.wb){var d=a.N["led-"+c];if(d){var e=a.w.wb[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}
function $d(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.w.hc[e]||e,!a.w.C[e]){for(var f in a.w.Wa)if(a.w.Wa[f]===e){e=f;break a}e=null}e&&(d=ae(a,e,c),b.preventDefault());return d}
function ae(a,b,c){var d;a:{for(d=0;d<a.u.length;d++)if(a.u[d].fc==b)break a;d=-1}if(c)0>d?a.u.push({fc:b,ac:Date.now(),Mb:!1}):(a.u[d].ac=Date.now(),a.u[d].Mb=!1);else if(0<=d){if(!a.u[d].Mb){var e=a.u[d].ac;if(e&&100>Date.now()-e)return a.u[d].Mb=!0,ce(a),!0}a.u.splice(d,1)}if(a.J){d=0;switch(b){case "1p":d=T.Xa.gd;break;case "2p":d=T.Xa.ld;break;case "coin":d=T.Xa.Sc;break;case "left":d=T.Xa.jd;break;case "right":d=T.Xa.kd;break;case "fire":d=T.Xa.hd}d&&(a=a.J,b=d,a.J&=~b,c&&(a.J|=b))}return!0}
function ce(a){for(var b=0,c=-1;b<a.u.length;){if(a.u[b].Mb){var d=a.u[b].fc,e=100-(Date.now()-a.u[b].ac);if(0<e){if(0>c||c>e)c=e}else{ae(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){ce(a)},c)}m.Zb=function(){return!0};m.Ed=function(a,b){var c=this.F;0<=this.B&&(this.B<this.u.length?(c=this.u[this.B],this.B++,c=V.C[c.fc],c&128&&(c&=127)):(this.B=-1,c=V.$c),this.F=c,Ed(this.b,1));D(this,a,null,b,"KBDUART.ADDRESS",c);return c};
m.Td=function(a,b,c){D(this,a,b,c,"KBDUART.STATUS");this.H=b;be(this,b&V.Ka.kc);b&V.Ka.qd&&(this.B=0,Ed(this.b,1))};V.Rb={130:Xd.prototype.Ed};V.Sb={130:Xd.prototype.Td};Ma(function(){for(var a=B(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Xd(d);hb(d,c)}});
function de(a,b,c,d,e){var f=this;this.Hc=Aa("Gecko/");var h=["","moz","ms","webkit"];w.call(this,"Video",a,de,262144);this.aa=a.screenWidth;this.R=a.screenHeight;this.ta=a.bufferAddr;this.Wd=a.bufferRAM;var g=a.bufferFormat;this.fa=g&&ee[g.toUpperCase()]||fe;this.da=a.bufferCols;this.ga=a.bufferRows;this.zc=this.oa=a.cellWidth||1;this.ja=a.cellHeight||1;this.Ma=null;this.Gc=!1;this.$a=a.bufferBits||1;this.Xd=a.bufferLeft||0;if(this.B=a.bufferRotate)this.B=this.B%360,0<this.B&&(this.B-=360),-90!=
V.C[66]=104;V.C[88]=105;V.C[119]=106;V.C[105]=112;V.C[99]=113;V.C[102]=114;V.C[109]=115;V.C[191]=117;V.C[77]=118;V.C[32]=119;V.C[86]=120;V.C[67]=121;V.C[90]=122;V.C[120]=123;V.C[17]=124;V.C[16]=125;V.C[20]=126;V.wb={l4:V.Ka.dd,l3:V.Ka.cd,l2:V.Ka.bd,l1:V.Ka.ad,locked:V.Ka.ed,local:V.Ka.lc,online:~V.Ka.lc};var $d={SI1978:ae,VT100:V};
Zd.prototype.la=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.N[e]){if("led"==a&&this.w.wb[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.w.Wa&&void 0!==this.w.Wa[b])return this.N[e]=c,a=function(a,b){return function(){ce(a,b,!0)}}(this,this.w.Wa[b]),b=function(a,b){return function(){ce(a,b,!1);a.A&&a.A.gb()}}(this,this.w.Wa[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};Zd.prototype.Pa=function(a,b,c,d){this.A=a;this.b=c;this.I=d;this.J=vb(a,"ChipSet");Hb(b,this,this.w.Rb);Tb(b,this,this.w.Sb)};Zd.prototype.Da=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};Zd.prototype.Ga=function(a){return a?this.save():!0};V.INIT=[[V.Ka.INIT,V.Qc.INIT,-1]];m=Zd.prototype;m.reset=function(){this.u=[];this.w.INIT&&!this.restore(this.w.INIT)&&this.ia("reset error")};
m.save=function(){var a=new H(this);switch(this.w.za){case V.za:I(a,0,[this.H,this.F,-1])}return a.data()};m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.w.za){case ae.za:return!0;case V.za:return this.H=b[0],de(this,this.H&V.Ka.kc),this.F=b[1],this.B=b[2],!0}return!1};function de(a,b){for(var c in a.w.wb){var d=a.N["led-"+c];if(d){var e=a.w.wb[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.w.hc[e]||e,!a.w.C[e]){for(var f in a.w.Wa)if(a.w.Wa[f]===e){e=f;break a}e=null}e&&(d=ce(a,e,c),b.preventDefault());return d}
function ce(a,b,c){var d;a:{for(d=0;d<a.u.length;d++)if(a.u[d].fc==b)break a;d=-1}if(c)0>d?a.u.push({fc:b,ac:Date.now(),Mb:!1}):(a.u[d].ac=Date.now(),a.u[d].Mb=!1);else if(0<=d){if(!a.u[d].Mb){var e=a.u[d].ac;if(e&&100>Date.now()-e)return a.u[d].Mb=!0,ee(a),!0}a.u.splice(d,1)}if(a.J){d=0;switch(b){case "1p":d=T.Xa.gd;break;case "2p":d=T.Xa.ld;break;case "coin":d=T.Xa.Sc;break;case "left":d=T.Xa.jd;break;case "right":d=T.Xa.kd;break;case "fire":d=T.Xa.hd}d&&(a=a.J,b=d,a.H&=~b,c&&(a.H|=b))}return!0}
function ee(a){for(var b=0,c=-1;b<a.u.length;){if(a.u[b].Mb){var d=a.u[b].fc,e=100-(Date.now()-a.u[b].ac);if(0<e){if(0>c||c>e)c=e}else{ce(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){ee(a)},c)}m.Zb=function(){return!0};m.Ed=function(a,b){var c=this.F;0<=this.B&&(this.B<this.u.length?(c=this.u[this.B],this.B++,c=V.C[c.fc],c&128&&(c&=127)):(this.B=-1,c=V.$c),this.F=c,Fd(this.b,1));D(this,a,null,b,"KBDUART.ADDRESS",c);return c};
m.Td=function(a,b,c){D(this,a,b,c,"KBDUART.STATUS");this.H=b;de(this,b&V.Ka.kc);b&V.Ka.qd&&(this.B=0,Fd(this.b,1))};V.Rb={130:Zd.prototype.Ed};V.Sb={130:Zd.prototype.Td};Ma(function(){for(var a=B(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Zd(d);hb(d,c)}});
function fe(a,b,c,d,e){var f=this;this.Hc=Aa("Gecko/");var h=["","moz","ms","webkit"];w.call(this,"Video",a,fe,262144);this.aa=a.screenWidth;this.R=a.screenHeight;this.ta=a.bufferAddr;this.Wd=a.bufferRAM;var g=a.bufferFormat;this.fa=g&&ge[g.toUpperCase()]||he;this.da=a.bufferCols;this.ga=a.bufferRows;this.zc=this.oa=a.cellWidth||1;this.ja=a.cellHeight||1;this.Ma=null;this.Gc=!1;this.$a=a.bufferBits||1;this.Xd=a.bufferLeft||0;if(this.B=a.bufferRotate)this.B=this.B%360,0<this.B&&(this.B-=360),-90!=
this.B&&(this.ia("unsupported buffer rotation: "+this.B),this.B=0);this.Xb=a.interruptRate;this.Zd=a.refreshRate||60;this.O=b;this.F=c;this.Ba=(this.$d=d)||b||null;this.Ud=this.aa;this.Vd=this.R;this.Ac=this.aa/this.da|0;this.Bc=this.R/this.ga|0;1<this.ja&&(this.ga++,this.hb=0,this.xb=!1);b=a.smoothing;(c=Va.smoothing)&&(b="true"==c);if(null!=b)for(c=0;c<h.length;c++)if(d=(d=h[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.F[d]){this.F[d]=b;break}if(this.J=a.screenRotate)this.J=
this.J%360,0<this.J&&(this.J-=360),-90!=this.J?(this.ia("unsupported screen rotation: "+this.J),this.J=0):(this.F.translate(0,this.R),this.F.rotate(this.J*Math.PI/180),this.F.scale(this.R/this.aa,this.aa/this.R));if(this.u=e)if(this.u.jb=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.u.jb){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){ge(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(){ge(f,null)},!1);break}}if(this.ha=a.fontROM)"json"!=fa(this.ha)&&(this.ha=ha()+"/api/v1/dump?file="+this.ha+"&format=bytes"),sa(this.ha,null,!0,function(a,b,c){he(f,a,b,c)});this.zb={}}bb(de);var fe=0,ee={SI1978:1,VT100:2};
function Od(a){a.L=a.da*a.oa;a.ca=a.ga*a.ja;var b=a.L,c=a.ca;a.B&&(b=a.ca,c=a.L);a.S=0;if(!a.Wd&&(a.S=(a.L*a.$a>>3)*a.ca,!yb(a.w,a.ta,a.S,3)))return!1;a.S?(a.Ic=a.F.createImageData(b,c),a.Kc=16/a.$a|0,ie(a,a.S>>1)):ie(a,(a.da+1)*a.ga);a.M=document.createElement("canvas");a.M.width=b;a.M.height=c;a.ib=a.M.getContext("2d");a.na={};a.Ca=1<<a.$a;a.qa=Array(a.Ca+2);a.qa[0]=[0,0,0,255];a.qa[1]=[255,255,255,255];1==a.fa&&(a.qa[a.Ca+0]=[255,255,0,255],a.qa[a.Ca+1]=[0,255,0,255]);2==a.fa&&(a.Yb=60,a.yb=!1,
a.Ta=Array(a.da));return!0}de.prototype.Pa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.I=d;Od(this);if(this.K=ub(a,"Keyboard")){for(var e in this.zb)this.K.la("led",e,this.zb[e]);this.O&&this.K.la(this.$d?"textarea":"canvas","kbd",this.Ba)}this.ha||E(this)};
function he(a,b,c,d){if(d)a.ia("Unable to load font ROM (error "+d+": "+b+")");else{db(a.Lb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){u("Empty font ROM: "+b);return}if(1==f.length){u(f[0]);return}if(2048==f.length)a.Ma=f,Pd(a);else{a.ia("Unrecognized font data length ("+f.length+")");return}}catch(h){a.ia("Font ROM data error: "+h.message);return}(a.F||a.I)&&E(a)}}
function Pd(a){a.Ma&&(a.Gc=2==a.fa,a.na[96]=[je(a,a.oa,a.ja),je(a,a.oa,a.ja,a.yb)],a.na[64]=[je(a,2*a.oa,a.ja),je(a,2*a.oa,a.ja,a.yb)],a.na[32]=a.na[0]=[je(a,2*a.oa,2*a.ja),je(a,2*a.oa,2*a.ja,a.yb)])}
function je(a,b,c,d){var e=8>=a.zc?8:16,f=8<e?15:0,h=a.Ma.length/e,g=!1===d,k={oa:b,ja:c};k.canvas=document.createElement("canvas");k.canvas.width=16*b;k.canvas.height=h/16*c;k.context=k.canvas.getContext("2d");for(var l=k.context.createImageData(b,c),p=0;p<h;p++){for(var q=0,x=q;q<a.ja;q++)for(var v=p*e+(f+q&e-1),v=d&&8==q?255:a.Ma[v],r=0;r<c/a.ja;r++){for(var C=0,y=0,X=y;y<a.oa;y++){for(var A=v&128>>(7<y?7:y),C=a.Gc&&!A&&C?C:A,Q=0;Q<b/a.oa;Q++)g&&(C=!C),ke(a,l,X,x,C?1:0),X++;C=A}x++}k.context.putImageData(l,
this.J%360,0<this.J&&(this.J-=360),-90!=this.J?(this.ia("unsupported screen rotation: "+this.J),this.J=0):(this.F.translate(0,this.R),this.F.rotate(this.J*Math.PI/180),this.F.scale(this.R/this.aa,this.aa/this.R));if(this.u=e)if(this.u.jb=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.u.jb){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){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.ha=a.fontROM)"json"!=fa(this.ha)&&(this.ha=ha()+"/api/v1/dump?file="+this.ha+"&format=bytes"),sa(this.ha,null,!0,function(a,b,c){je(f,a,b,c)});this.zb={}}bb(fe);var he=0,ge={SI1978:1,VT100:2};
function Qd(a){a.L=a.da*a.oa;a.ca=a.ga*a.ja;var b=a.L,c=a.ca;a.B&&(b=a.ca,c=a.L);a.S=0;if(!a.Wd&&(a.S=(a.L*a.$a>>3)*a.ca,!zb(a.w,a.ta,a.S,3)))return!1;a.S?(a.Ic=a.F.createImageData(b,c),a.Kc=16/a.$a|0,ke(a,a.S>>1)):ke(a,(a.da+1)*a.ga);a.M=document.createElement("canvas");a.M.width=b;a.M.height=c;a.ib=a.M.getContext("2d");a.na={};a.Ca=1<<a.$a;a.qa=Array(a.Ca+2);a.qa[0]=[0,0,0,255];a.qa[1]=[255,255,255,255];1==a.fa&&(a.qa[a.Ca+0]=[255,255,0,255],a.qa[a.Ca+1]=[0,255,0,255]);2==a.fa&&(a.Yb=60,a.yb=!1,
a.Ta=Array(a.da));return!0}fe.prototype.Pa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.I=d;Qd(this);if(this.K=vb(a,"Keyboard")){for(var e in this.zb)this.K.la("led",e,this.zb[e]);this.O&&this.K.la(this.$d?"textarea":"canvas","kbd",this.Ba)}this.ha||E(this)};
function je(a,b,c,d){if(d)a.ia("Unable to load font ROM (error "+d+": "+b+")");else{db(a.Lb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){u("Empty font ROM: "+b);return}if(1==f.length){u(f[0]);return}if(2048==f.length)a.Ma=f,Rd(a);else{a.ia("Unrecognized font data length ("+f.length+")");return}}catch(h){a.ia("Font ROM data error: "+h.message);return}(a.F||a.I)&&E(a)}}
function Rd(a){a.Ma&&(a.Gc=2==a.fa,a.na[96]=[le(a,a.oa,a.ja),le(a,a.oa,a.ja,a.yb)],a.na[64]=[le(a,2*a.oa,a.ja),le(a,2*a.oa,a.ja,a.yb)],a.na[32]=a.na[0]=[le(a,2*a.oa,2*a.ja),le(a,2*a.oa,2*a.ja,a.yb)])}
function le(a,b,c,d){var e=8>=a.zc?8:16,f=8<e?15:0,h=a.Ma.length/e,g=!1===d,k={oa:b,ja:c};k.canvas=document.createElement("canvas");k.canvas.width=16*b;k.canvas.height=h/16*c;k.context=k.canvas.getContext("2d");for(var l=k.context.createImageData(b,c),p=0;p<h;p++){for(var q=0,x=q;q<a.ja;q++)for(var v=p*e+(f+q&e-1),v=d&&8==q?255:a.Ma[v],r=0;r<c/a.ja;r++){for(var C=0,y=0,X=y;y<a.oa;y++){for(var A=v&128>>(7<y?7:y),C=a.Gc&&!A&&C?C:A,Q=0;Q<b/a.oa;Q++)g&&(C=!C),me(a,l,X,x,C?1:0),X++;C=A}x++}k.context.putImageData(l,
(p&15)*b,(p>>4)*c)}return k}
de.prototype.Da=function(){if(2==this.fa){for(var a={0:[32,"SET-UP A"],2:[64,'TO EXIT PRESS "SET-UP"'],22:[96," T T T T T T T T T"],23:[96,"1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890"],24:[]},b=this.ta,c=-1,d=-1,e,f=-(60==this.Yb?2:5);f<this.ga;f++){var h=a[f];if(0<=c){var g=!1,c=b+2;h?h.length?d=h[0]:(c=b-1,g=!0):32==d&&(h=a[f-1],d=0);e=d&96|c>>8&15|16;Db(this.w,b++,e);Db(this.w,b++,
c&255);if(g)break}if(h)for(c=0,e=1;e<h.length;e++){for(var g=h[e],k=0;k<g.length;k++)Db(this.w,b++,g.charCodeAt(k)|c);c^=128}Db(this.w,b++,127);c=b}le(this)}return!0};de.prototype.la=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.zb[b]=c,!0;switch(b){case "fullScreen":return this.N[b]=c,this.u&&this.u.jb?c.onclick=function(){d.jb()}:c.parentNode.removeChild(c),!0}return!1};
de.prototype.jb=function(){var a=!1;if(this.u){if(this.u.jb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.aa/this.R;b>c&&(a=Math.round(c/b*100)+"%")}this.Hc?(this.O.style.width=a,this.O.style.width=a,this.O.style.display="block",this.O.style.margin="auto"):(this.u.style.width=a,this.u.style.height="auto");this.u.style.backgroundColor="black";this.u.jb();a=!0}this.Ba&&this.Ba.focus()}return a};
function ge(a,b){!b&&a.u&&(a.Hc?a.O.style.width=a.O.style.height="":a.u.style.width=a.u.style.height="");jb(a,"notifyFullScreen("+b+")")}function ie(a,b){a.Jc=b;a.ua=!1;if(void 0===a.H||a.H.length!=a.Jc)a.H=Array(a.Jc)}function ke(a,b,c,d,e){d=a.B?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.fa&&(208<=c&&236>c?e=a.Ca+0:28<=c&&72>c&&(e=a.Ca+1));a=a.qa[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function le(a,b){for(var c=a.ta,d=-1,e=0,f=60==a.Yb?2:5,h=0,g=0,k=-1;e<a.ga;){var l=0,p=c,q=d,x=a.da;for(96!=q&&(x>>=1);;){var v=Bb(a.w,p++);if(127==(v&127)){var r=Bb(a.w,p++),d=r&96,c=(r&15)<<8|Bb(a.w,p),c=c+(r&16?8192:16384);break}if(l<x)a.Ta[l++]=v;else break}if(f)f--;else{for(;l<a.Ta.length;)a.Ta[l++]=0;if(0<=q)for(p=a.ua&&a.H[h]==x,a.H[h++]=x,x=0;x<l;x++){v=a.Ta[x];if(!p||v!==a.H[h]){a.H[k=h]=v;var r=a,C=a.ib,y=v&127;if(v=r.na[q][v&128?1:0]){var X=(y&15)*v.oa,y=(y>>4)*v.ja,A=void 0,Q=void 0,
aa=void 0,Y=void 0,ua=v.oa,Fb=v.ja;C?(A=x*r.oa,Q=e*r.ja,aa=r.oa,Y=r.ja):(A=x*r.Ac,Q=e*r.Bc,aa=r.Ac,Y=r.Bc);v.oa>r.oa&&(A*=2,aa*=2);v.ja>r.ja&&(0==q&&(y+=r.ja),Fb=r.ja);C?C.drawImage(v.canvas,X,y,ua,Fb,A,Q,aa,Y):(A+=0,Q+=0,r.F.drawImage(v.canvas,X,y,ua,Fb,A,Q,aa,Y))}g++}h++}e++}}a.ua=!0;!b&&a.xb&&1==g&&(a.H[k]=-1,g=0);a.xb=!1;(g||b)&&a.ib&&a.F.drawImage(a.M,0,a.hb,a.L,a.ca-a.ja,0,0,a.Ud,a.Vd)}
function Nd(a,b){var c=!0,d=!0;if(0<=b){d=!1;a.Xb&&(120==a.Xb?b&1?(Ed(a.b,2),c=!1):Ed(a.b,1):Ed(a.b,4));var e;if(e=c&&a.ua&&a.S){e=a.w;for(var f=a.S,h=!0,g=a.ta>>>e.pa;0<f&&g<e.Y.length;)e.Y[g].Na&&(e.Y[g].Na=h=!1,e.Y[g].uc=!0),f-=e.Fa,g++;e=h}e&&(c=!1)}if(c)if(1<a.oa)switch(a.fa){case 2:le(a,d)}else{var f=a.ta,h=f+a.S,k=g=0,l=0,c=a.L,p=0,d=a.ca,q=e=0,x=a.$a,v=(1<<x)-1;a.Xd&&(x=-x,q=16+x);for(;f<h;){var r=Cb(a.w,f);if(a.ua&&r===a.H[g])k+=a.Kc;else{a.H[g]=r;var C=q;C&&(r=r>>8|(r&255)<<8);k<c&&(c=k);
for(var y=a.Kc;y--;){var X=r>>C&v;ke(a,a.Ic,k++,l,X);C+=x}k>p&&(p=k);l<d&&(d=l);l>=e&&(e=l+1)}f+=2;g++;if(k>=a.L&&(k=0,l++,l>a.ca))break}a.ua=!0;c<a.L&&(f=p-c,e-=d,a.B&&(h=c,g=f,c=d,f=e,d=a.L-(h+g),e=g),a.ib.putImageData(a.Ic,0,0,c,d,f,e),a.F.drawImage(a.M,0,0,a.M.width,a.M.height,0,0,a.aa,a.R))}}
fe.prototype.Da=function(){if(2==this.fa){for(var a={0:[32,"SET-UP A"],2:[64,'TO EXIT PRESS "SET-UP"'],22:[96," T T T T T T T T T"],23:[96,"1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890"],24:[]},b=this.ta,c=-1,d=-1,e,f=-(60==this.Yb?2:5);f<this.ga;f++){var h=a[f];if(0<=c){var g=!1,c=b+2;h?h.length?d=h[0]:(c=b-1,g=!0):32==d&&(h=a[f-1],d=0);e=d&96|c>>8&15|16;Eb(this.w,b++,e);Eb(this.w,b++,
c&255);if(g)break}if(h)for(c=0,e=1;e<h.length;e++){for(var g=h[e],k=0;k<g.length;k++)Eb(this.w,b++,g.charCodeAt(k)|c);c^=128}Eb(this.w,b++,127);c=b}ne(this)}return!0};fe.prototype.la=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.zb[b]=c,!0;switch(b){case "fullScreen":return this.N[b]=c,this.u&&this.u.jb?c.onclick=function(){d.jb()}:c.parentNode.removeChild(c),!0}return!1};
fe.prototype.jb=function(){var a=!1;if(this.u){if(this.u.jb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.aa/this.R;b>c&&(a=Math.round(c/b*100)+"%")}this.Hc?(this.O.style.width=a,this.O.style.width=a,this.O.style.display="block",this.O.style.margin="auto"):(this.u.style.width=a,this.u.style.height="auto");this.u.style.backgroundColor="black";this.u.jb();a=!0}this.Ba&&this.Ba.focus()}return a};
function ie(a,b){!b&&a.u&&(a.Hc?a.O.style.width=a.O.style.height="":a.u.style.width=a.u.style.height="");jb(a,"notifyFullScreen("+b+")")}function ke(a,b){a.Jc=b;a.ua=!1;if(void 0===a.H||a.H.length!=a.Jc)a.H=Array(a.Jc)}function me(a,b,c,d,e){d=a.B?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.fa&&(208<=c&&236>c?e=a.Ca+0:28<=c&&72>c&&(e=a.Ca+1));a=a.qa[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function ne(a,b){for(var c=a.ta,d=-1,e=0,f=60==a.Yb?2:5,h=0,g=0,k=-1;e<a.ga;){var l=0,p=c,q=d,x=a.da;for(96!=q&&(x>>=1);;){var v=Cb(a.w,p++);if(127==(v&127)){var r=Cb(a.w,p++),d=r&96,c=(r&15)<<8|Cb(a.w,p),c=c+(r&16?8192:16384);break}if(l<x)a.Ta[l++]=v;else break}if(f)f--;else{for(;l<a.Ta.length;)a.Ta[l++]=0;if(0<=q)for(p=a.ua&&a.H[h]==x,a.H[h++]=x,x=0;x<l;x++){v=a.Ta[x];if(!p||v!==a.H[h]){a.H[k=h]=v;var r=a,C=a.ib,y=v&127;if(v=r.na[q][v&128?1:0]){var X=(y&15)*v.oa,y=(y>>4)*v.ja,A=void 0,Q=void 0,
aa=void 0,Y=void 0,va=v.oa,Fb=v.ja;C?(A=x*r.oa,Q=e*r.ja,aa=r.oa,Y=r.ja):(A=x*r.Ac,Q=e*r.Bc,aa=r.Ac,Y=r.Bc);v.oa>r.oa&&(A*=2,aa*=2);v.ja>r.ja&&(0==q&&(y+=r.ja),Fb=r.ja);C?C.drawImage(v.canvas,X,y,va,Fb,A,Q,aa,Y):(A+=0,Q+=0,r.F.drawImage(v.canvas,X,y,va,Fb,A,Q,aa,Y))}g++}h++}e++}}a.ua=!0;!b&&a.xb&&1==g&&(a.H[k]=-1,g=0);a.xb=!1;(g||b)&&a.ib&&a.F.drawImage(a.M,0,a.hb,a.L,a.ca-a.ja,0,0,a.Ud,a.Vd)}
function Pd(a,b){var c=!0,d=!0;if(0<=b){d=!1;a.Xb&&(120==a.Xb?b&1?(Fd(a.b,2),c=!1):Fd(a.b,1):Fd(a.b,4));var e;if(e=c&&a.ua&&a.S){e=a.w;for(var f=a.S,h=!0,g=a.ta>>>e.pa;0<f&&g<e.Y.length;)e.Y[g].Na&&(e.Y[g].Na=h=!1,e.Y[g].uc=!0),f-=e.Fa,g++;e=h}e&&(c=!1)}if(c)if(1<a.oa)switch(a.fa){case 2:ne(a,d)}else{var f=a.ta,h=f+a.S,k=g=0,l=0,c=a.L,p=0,d=a.ca,q=e=0,x=a.$a,v=(1<<x)-1;a.Xd&&(x=-x,q=16+x);for(;f<h;){var r=Db(a.w,f);if(a.ua&&r===a.H[g])k+=a.Kc;else{a.H[g]=r;var C=q;C&&(r=r>>8|(r&255)<<8);k<c&&(c=k);
for(var y=a.Kc;y--;){var X=r>>C&v;me(a,a.Ic,k++,l,X);C+=x}k>p&&(p=k);l<d&&(d=l);l>=e&&(e=l+1)}f+=2;g++;if(k>=a.L&&(k=0,l++,l>a.ca))break}a.ua=!0;c<a.L&&(f=p-c,e-=d,a.B&&(h=c,g=f,c=d,f=e,d=a.L-(h+g),e=g),a.ib.putImageData(a.Ic,0,0,c,d,f,e),a.F.drawImage(a.M,0,0,a.M.width,a.M.height,0,0,a.aa,a.R))}}
Ma(function(){for(var a=B(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=z(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=ta().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=
(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 de(d,e,h,f,c);hb(d,c)}});
function me(a){this.ga=+a.adapter;switch(this.ga){case 0:this.ha=0;this.qa=2;break;default:u("Unrecognized serial adapter #"+this.ga);return}this.B=this.F=null;this.na=a.tabSize;this.fa=a.charBOL;this.H=0;this.ca=!1;w.call(this,"SerialPort",a,me,8388608);var b=a.binding;if("console"==b)this.F="";else{var c;a=ne;b&&(void 0===c&&(c="Panel"),(c=gb(c,this.id))&&(b=c.N[b])&&this.la(null,a,b))}this.K="";this.L=this.O=null;this.exports={connect:this.xc,receiveData:this.ec}}bb(me);
var oe=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],pe=[!1,0,0,133,142,39,238],ne="buffer";m=me.prototype;
m.la=function(a,b,c,d){var e=this;switch(b){case ne:return this.N[b]=this.B=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),qe(e,b);return!0},c.onkeypress=function(a){a=a||window.event;qe(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.N[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.ec(d);e.A&&e.A.gb();
return!0},!0}return!1};m.Pa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.I=d;var e=this;this.ta=Jc(this.b,function(){e.ec()});this.ua=Jc(this.b,function(){e.u|=5});this.J=ub(a,"ChipSet");Gb(b,this,re,this.ha);Sb(b,this,se,this.ha);E(this)};
m.xc=function(){if(!this.L){var a=mc(this.A,"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.L=fb(b)){var d=this.L.exports;if(d){var e=d.connect;e&&e.call(this.L);if(this.O=d.receiveData){this.status(this.Lb+"."+c+" connected to "+b);return}}}}this.status("Unable to establish connection: "+a)}}};m.Da=function(a,b){if(!b)if(this.xc(),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};
m.Ga=function(a){return a?this.save():!0};m.reset=function(){te(this)};m.save=function(){var a=new H(this),b=0,c=[];c[b++]=this.La;c[b++]=this.aa;c[b++]=this.da;c[b++]=this.u;c[b++]=this.M;c[b++]=this.S;c[b]=this.R;I(a,0,c);return a.data()};m.restore=function(a){return te(this,a[0])};function te(a,b){var c=0;void 0===b&&(b=pe);a.La=b[c++];a.aa=b[c++];a.da=b[c++];a.u=b[c++];a.M=b[c++];a.S=b[c++];a.R=b[c];return!0}
function ue(a,b){var c=a.R&b;b&15||(c>>=4);var c=oe[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 qe(a,b){jb(a,"receiveByte("+da(b)+"), status="+da(a.u));return a.ca||a.u&2?!1:(a.aa=b,a.u|=2,Ed(a.b,a.qa),!0)}m.ec=function(a){null!=a&&(this.K="number"!=typeof a?a:this.K+String.fromCharCode(a));this.K&&(qe(this,this.K.charCodeAt(0))&&(this.K=this.K.substr(1)),this.K&&this.b&&Kc(this.b,this.ta,ue(this,15)));return!0};m.Zb=function(){return!!(this.u&1)};
(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 oe(a){this.ga=+a.adapter;switch(this.ga){case 0:this.ha=0;this.qa=2;break;default:u("Unrecognized serial adapter #"+this.ga);return}this.B=this.F=null;this.na=a.tabSize;this.fa=a.charBOL;this.H=0;this.ca=!1;w.call(this,"SerialPort",a,oe,8388608);var b=a.binding;if("console"==b)this.F="";else{var c;a=pe;b&&(void 0===c&&(c="Panel"),(c=gb(c,this.id))&&(b=c.N[b])&&this.la(null,a,b))}this.K="";this.L=this.O=null;this.exports={connect:this.xc,receiveData:this.ec}}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.la=function(a,b,c,d){var e=this;switch(b){case pe:return this.N[b]=this.B=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),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.ec(d);e.A&&e.A.gb();
return!0},!0}return!1};m.Pa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.I=d;var e=this;this.ta=Kc(this.b,function(){e.ec()});this.ua=Kc(this.b,function(){e.u|=5});this.J=vb(a,"ChipSet");Hb(b,this,te,this.ha);Tb(b,this,ue,this.ha);E(this)};
m.xc=function(){if(!this.L){var a=nc(this.A,"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.L=fb(b)){var d=this.L.exports;if(d){var e=d.connect;e&&e.call(this.L);if(this.O=d.receiveData){this.status(this.Lb+"."+c+" connected to "+b);return}}}}this.status("Unable to establish connection: "+a)}}};m.Da=function(a,b){if(!b)if(this.xc(),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};
m.Ga=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.La;c[b++]=this.aa;c[b++]=this.da;c[b++]=this.u;c[b++]=this.M;c[b++]=this.S;c[b]=this.R;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.La=b[c++];a.aa=b[c++];a.da=b[c++];a.u=b[c++];a.M=b[c++];a.S=b[c++];a.R=b[c];return!0}
function we(a,b){var c=a.R&b;b&15||(c>>=4);var c=qe[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 se(a,b){jb(a,"receiveByte("+da(b)+"), status="+da(a.u));return a.ca||a.u&2?!1:(a.aa=b,a.u|=2,Fd(a.b,a.qa),!0)}m.ec=function(a){null!=a&&(this.K="number"!=typeof a?a:this.K+String.fromCharCode(a));this.K&&(se(this,this.K.charCodeAt(0))&&(this.K=this.K.substr(1)),this.K&&this.b&&Lc(this.b,this.ta,we(this,15)));return!0};m.Zb=function(){return!!(this.u&1)};
m.yd=function(a,b){var c=this.aa;D(this,a,null,b,"DATA",c);this.u&=-3;return c};m.xd=function(a,b){var c=this.u;D(this,a,null,b,"STATUS",c);return c};
m.Jd=function(a,b,c){D(this,a,b,c,"DATA");this.da=b;this.u&=-6;jb(this,"transmitByte("+da(b)+")");if(19==b)this.ca=!0;else if(17==b)this.ca=!1;else if(this.O&&this.O.call(this.L,b),this.B)8==b?(this.B.value=this.B.value.slice(0,-1),0<this.H&&this.H--):(a=(a=na[b])?"<"+a+">":String.fromCharCode(b),c=a.length,9==b?(b=this.na||8,c=b-this.H%b,this.na&&(a=la("",c))):13==b&&(this.H=c=0,a="\n"),this.fa&&!this.H&&c&&(a=String.fromCharCode(this.fa)+a),this.B.value+=a,this.B.scrollTop=this.B.scrollHeight,this.H+=
c);else if(null!=this.F){if(10==b||1024<=this.F.length)this.g(this.F),this.F="";10!=b&&(this.F+=String.fromCharCode(b))}this.b&&Kc(this.b,this.ua,ue(this,240))};m.Id=function(a,b,c){D(this,a,b,c,"CONTROL");this.La?(this.S=b,this.S&64&&(this.La=!1)):(this.M=b,this.La=!0)};m.Hd=function(a,b,c){D(this,a,b,c,"BAUDRATES");this.R=b};var re={0:me.prototype.yd,1:me.prototype.xd},se={0:me.prototype.Jd,1:me.prototype.Id,2:me.prototype.Hd};
Ma(function(){for(var a=B(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new me(d);hb(d,c)}});
function ve(a){w.call(this,"Debugger",a,ve);this.style=we;this.aa=this.ua=this.L=0;this.O=W();this.$a=W();this.F=-1;this.B=[];this.da=!1;this.ca=W();this.H=[];this.fa={};this.u=this.R=this.J=[];xe(this);this.na=0;ye(this);this.Ba=[];ze(this,a.messages);this.Ca=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Bc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Bc(b,a)})}bb(ve);
var Ae={"?":"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"},
we=8080,Be="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(" "),Ce="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(" "),
De="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),Ee=[[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.F){if(10==b||1024<=this.F.length)this.g(this.F),this.F="";10!=b&&(this.F+=String.fromCharCode(b))}this.b&&Lc(this.b,this.ua,we(this,240))};m.Id=function(a,b,c){D(this,a,b,c,"CONTROL");this.La?(this.S=b,this.S&64&&(this.La=!1)):(this.M=b,this.La=!0)};m.Hd=function(a,b,c){D(this,a,b,c,"BAUDRATES");this.R=b};var te={0:oe.prototype.yd,1:oe.prototype.xd},ue={0:oe.prototype.Jd,1:oe.prototype.Id,2:oe.prototype.Hd};
Ma(function(){for(var a=B(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new oe(d);hb(d,c)}});
function xe(a){w.call(this,"Debugger",a,xe);this.style=ye;this.aa=this.ua=this.L=0;this.O=W();this.$a=W();this.F=-1;this.B=[];this.da=!1;this.ca=W();this.H=[];this.fa={};this.u=this.R=this.J=[];ze(this);this.na=0;Ae(this);this.Ba=[];Be(this,a.messages);this.Ca=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Cc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Cc(b,a)})}bb(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]],Fe={cpu:1,bus:64,mem:128,port:256,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};m=ve.prototype;
m.Pa=function(a,b,c,d){this.w=b;this.b=c;this.A=a;(a=mc(a,"messages"))&&ze(this,a);this.Ma=Ee;Ge(this,function(a){a:{var b=d.w.Y,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.w.pa;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[g];p.type==c?l++||d.g("..."):(c=p.type,l=Ab[c],p&&d.g(n(p.id)+" %"+n(g<<d.w.pa)+" %%"+n(p.G)+" "+t(p.Hb)+" "+
t(p.size)+" "+l),c!=Zb&&(c=-1),l=0);a+=d.w.Fa;g++}}});E(this)};
m.la=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ha=this.N[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Bc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.F<d.B.length-1&&(b=d.B[++d.F]):40==a.keyCode&&(0<d.F?b=d.B[--d.F]:(b="",d.F=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.N[b]=c,Ca(c,function(){if(d.ha){var a=d.ha.value;d.ha.value=
"";Bc(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.tb(a?1:0),lb(d,!1));return b}),!0}return!1};m.gb=function(){this.ha&&this.ha.focus()};function He(a){a=a&&a.G;null==a&&(a=-1);return a}m.$=function(a,b){var c=255,d=He(a);-1!==d&&(c=Bb(this.w,d),b&&Je(a,b));return c};m.Ra=function(a,b){var c=65535,d=He(a);-1!==d&&(c=Cb(this.w,d),b&&Je(a,b));return c};m.sa=function(a,b,c){var d=He(a);-1!==d&&(Db(this.w,d,b),c&&Je(a,c),Cc(this.b,!0))};
m.Tb=function(a,b,c){var d=He(a);if(-1!==d){var e=this.w,f=d&e.w,h=(d&e.B)>>>e.pa;f!=e.w?e.Y[h].gc(f,b&65535,d):(e.Y[h++].Ib(f,b&255,d),e.Y[h&e.K].Ib(0,b>>8&255,d+1));c&&Je(a,c);Cc(this.b,!0)}};function W(a){return{G:a,Oa:!1}}function Ke(a){return[a.G,a.Oa]}function Le(a){return{G:a[0],Oa:a[1]}}
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.w=b;this.b=c;this.A=a;(a=nc(a,"messages"))&&Be(this,a);this.Ma=Ge;Nd(this,64,function(a){a:{var b=d.w.Y,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.w.pa;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[g];p.type==c?l++||d.g("..."):(c=p.type,l=Bb[c],p&&d.g(n(p.id)+" %"+n(g<<d.w.pa)+" %%"+n(p.G)+" "+t(p.Hb)+" "+
t(p.size)+" "+l),c!=$b&&(c=-1),l=0);a+=d.w.Fa;g++}}});E(this)};
m.la=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ha=this.N[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Cc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.F<d.B.length-1&&(b=d.B[++d.F]):40==a.keyCode&&(0<d.F?b=d.B[--d.F]:(b="",d.F=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.N[b]=c,Ca(c,function(){if(d.ha){var a=d.ha.value;d.ha.value=
"";Cc(d,a,!0);return!0}return!1}),!0;case "step":return this.N[b]=c,Ca(c,function(a){var b=!1;mb(d,!0)||(lb(d,!0),b=d.tb(a?1:0),lb(d,!1));return b}),!0}return!1};m.gb=function(){this.ha&&this.ha.focus()};function He(a){a=a&&a.G;null==a&&(a=-1);return a}m.$=function(a,b){var c=255,d=He(a);-1!==d&&(c=Cb(this.w,d),b&&Je(a,b));return c};m.Ra=function(a,b){var c=65535,d=He(a);-1!==d&&(c=Db(this.w,d),b&&Je(a,b));return c};m.sa=function(a,b,c){var d=He(a);-1!==d&&(Eb(this.w,d,b),c&&Je(a,c),Dc(this.b,!0))};
m.Tb=function(a,b,c){var d=He(a);if(-1!==d){var e=this.w,f=d&e.w,h=(d&e.B)>>>e.pa;f!=e.w?e.Y[h].gc(f,b&65535,d):(e.Y[h++].Ib(f,b&255,d),e.Y[h&e.K].Ib(0,b>>8&255,d+1));c&&Je(a,c);Dc(this.b,!0)}};function W(a){return{G:a,Oa:!1}}function Ke(a){return[a.G,a.Oa]}function Le(a){return{G:a[0],Oa:a[1]}}
function Ie(a,b,c){var d;c=(c?a.O:a.$a).G;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.H.length;c++){var f=a.H[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.ud=Pe(a,b.Mc=c[2]))}function Je(a,b){null!=a.G&&(a.G+=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 ze(a,b){a.I=a;a.ra=a.vd=536870912;a.qa=null;a.ta=[];var c=Pe(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in Fe)0<=ra(c,d)&&(a.ra|=Fe[d],a.g(d+" messages enabled"))}function Ge(a,b){for(var c in Fe)if(64==Fe[c]){a.Ba[c]=b;break}}
function Re(a,b){var c;a=a.toUpperCase();null==b?c=ra(De,a):(c=ra(De,a.substr(b,2)),0>c&&(c=ra(De,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.j;break;case 0:c=d.T;break;case 1:c=d.U;break;case 8:c=Tc(d);break;case 2:c=d.V;break;case 3:c=d.W;break;case 9:c=Vc(d);break;case 4:c=d.X;break;case 5:c=d.Z;break;case 10:c=J(d);break;case 6:c=d.$(J(d));break;case 11:c=d.ka;break;case 12:c=d.P;break;case 13:c=Sc(d);break;case 14:c=Sc(d)&255|d.j<<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+De[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.P).G));if(this.ra&1073741824)this.ta.push(a);else if(!this.qa||a!=this.qa)if(this.qa=a,this.ra&-2147483648&&(this.ma(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.rb=0;c.B-=c.b;c.b=0;Cc(c)}};
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.I=a;a.ra=a.vd=536870912;a.qa=null;a.ta=[];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.ra|=tb[d],a.g(d+" messages enabled"))}function Nd(a,b,c){for(var d in tb)if(b==tb[d]){a.Ba[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.j;break;case 0:c=d.T;break;case 1:c=d.U;break;case 8:c=Uc(d);break;case 2:c=d.V;break;case 3:c=d.W;break;case 9:c=Wc(d);break;case 4:c=d.X;break;case 5:c=d.Z;break;case 10:c=J(d);break;case 6:c=d.$(J(d));break;case 11:c=d.ka;break;case 12:c=d.P;break;case 13:c=Tc(d);break;case 14:c=Tc(d)&255|d.j<<8}}return c}
function Ue(a,b){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.P).G));if(this.ra&1073741824)this.ta.push(a);else if(!this.qa||a!=this.qa)if(this.qa=a,this.ra&-2147483648&&(this.ma(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.rb=0;c.B-=c.b;c.b=0;Dc(c)}};
function ib(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.ra&g)!=g||a.message(b.Ya+"."+(null!=d?"outPort":"inPort")+"("+t(c)+","+(f?f:"unknown")+(null!=d?","+da(d):"")+")"+(null!=h?": "+da(h):"")+(null!=e?" at "+Z(e):""))}
function ye(a){var b;if(Fd(a)){if(!a.M||!a.M.length){a.M=Array(1E3);for(b=0;b<a.M.length;b++)a.M[b]=W();a.ga=0;a.g("instruction history buffer allocated")}if(!a.K||!a.K.length)for(a.K=Array(256),b=0;b<a.K.length;b++)a.K[b]=[b,0]}else a.M&&a.M.length&&a.g("instruction history buffer freed"),a.ga=0,a.M=[],a.K=[]}m.fb=function(a){if(!Ve(this))return!1;this.b.fb(a);return!0};
m.tb=function(a,b,c){if(!Ve(this))return!1;this.L=0;a||Fd(this)&&Gd(this,this.b.P,0);try{var d=this.b.tb(a);0<d&&(this.L+=d,Hc(this.b,d,!0),Ec(this.b,d),this.aa++)}catch(e){"number"!=typeof e&&(this.L=0,qb(this.b,e.stack||e.message))}!1!==c&&Cc(this.b);this.Ha(b||!1);return 0<this.L};m.ma=function(a){this.b&&this.b.ma(a)};m.Ha=function(a){void 0===a&&(a=!0);this.O=W(this.b.P);a&&1!=this.S?uf(this):vf(this)};
function Ve(a){var b;if(b=a.b&&nb(a.b))b=a.b,b.D.va?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!mb(a.b)?(a=a.b,a.D.mb?(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.Ga=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){ye(this);this.aa=this.ua=0;this.qa=null;this.L=0;this.O=W(this.b.P);this.D.ya=!1;wf(this);a||this.Ha()};
function Ae(a){var b;if(Gd(a)){if(!a.M||!a.M.length){a.M=Array(1E3);for(b=0;b<a.M.length;b++)a.M[b]=W();a.ga=0;a.g("instruction history buffer allocated")}if(!a.K||!a.K.length)for(a.K=Array(256),b=0;b<a.K.length;b++)a.K[b]=[b,0]}else a.M&&a.M.length&&a.g("instruction history buffer freed"),a.ga=0,a.M=[],a.K=[]}m.fb=function(a){if(!Ve(this))return!1;this.b.fb(a);return!0};
m.tb=function(a,b,c){if(!Ve(this))return!1;this.L=0;a||Gd(this)&&Hd(this,this.b.P,0);try{var d=this.b.tb(a);0<d&&(this.L+=d,Ic(this.b,d,!0),Fc(this.b,d),this.aa++)}catch(e){"number"!=typeof e&&(this.L=0,qb(this.b,e.stack||e.message))}!1!==c&&Dc(this.b);this.Ha(b||!1);return 0<this.L};m.ma=function(a){this.b&&this.b.ma(a)};m.Ha=function(a){void 0===a&&(a=!0);this.O=W(this.b.P);a&&1!=this.S?We(this):vf(this)};
function Ve(a){var b;if(b=a.b&&nb(a.b))b=a.b,b.D.va?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!mb(a.b)?(a=a.b,a.D.mb?(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.Ga=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Ae(this);this.aa=this.ua=0;this.qa=null;this.L=0;this.O=W(this.b.P);this.D.ya=!1;wf(this);a||this.Ha()};
m.save=function(){var a=new H(this);I(a,0,Ke(this.O));I(a,1,Ke(this.ca));I(a,2,[this.B,this.da,this.ra]);I(a,3,this.H);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.O=Le(a[b++]),this.ca=Le(a[b++]),this.B=a[b][0],"string"==typeof this.B&&(this.B=[this.B]),this.da=a[b][1],this.ra|=a[b][2]);a[3]&&(this.H=a[3]);return!0};m.start=function(a,b){this.S||this.g("running");this.D.ya=!0;this.xb=a;this.yb=b};
m.stop=function(a,b){if(this.D.ya){this.D.ya=!1;this.L=b-this.yb;if(!this.S){var c="stopped";if(this.L){var d=a-this.xb,e=0<d?Math.round(1E3*this.L/d):0,c=c+" (";Fd(this)&&(c+=this.aa+" opcodes, ",this.ua-=this.aa,this.aa=0);c+=this.L+" cycles, "+d+" ms, "+e+" hz)"}else kb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.Ha(!0);this.gb();wf(this,this.b.P)}};function Fd(a){return 1<a.u.length||!!a.na}
function Gd(a,b,c){var d=a.b;if(0<c&&(a.na&&!--a.na||hc(a,b,1,a.u)))return!0;0<=c&&a.K.length&&(a.aa++,b=Bb(a.w,b),null!=b&&(a.K[b][1]++,b=a.M[a.ga],b.G=d.P,b.Oa=!1,++a.ga==a.M.length&&(a.ga=0)));return!1}function Ib(a,b,c){a.g("break on input from port "+t(b)+": "+n(c));a.ma(!0)}function Ub(a,b,c){a.g("break on output to port "+t(b)+": "+n(c));a.ma(!0)}
function xe(a){var b,c;a.u=["bp"];if(void 0!==a.R)for(b=1;b<a.R.length;b++){c=a.R[b];var d=a.w;ic(d.Y[He(c)>>>d.pa],!1)}a.R=["br"];if(void 0!==a.J)for(b=1;b<a.J.length;b++)c=a.J[b],d=a.w,ic(d.Y[He(c)>>>d.pa],!0);a.J=["bw"];a.hb=0}m.Za=function(a,b,c){var d=!0;c||xf(this,a,b,!1,!0);if(a!=this.u){var e=He(b);if(-1===e)this.g("invalid address: "+Z(b.G)),d=!1;else{var f=this.w;f.Y[e>>>f.pa].Za(e&f.w,a==this.J)}}d&&(a.push(b),c?b.Oa=!0:(yf(this,a,a.length-1,"set"),ye(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.u&&(d=a.w,ic(d.Y[c>>>d.pa],b==a.J));g.Oa||ye(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.G)+(d?" "+d:c.Mc?' "'+c.Mc+'"':""))}
function wf(a,b){if(void 0!==b)hc(a,b,1,a.u,!0),a.S=0;else for(var c=1;c<a.u.length;c++){var d=a.u[c];if(d.Oa){if(!xf(a,a.u,d,!0))break;c=0}}}
function hc(a,b,c,d,e){var f=!1;if(!a.hb++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.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.ud){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.D.ya||(f=!0)}if(f){e||yf(a,d,h,"hit");break}}}a.hb--;return f}
function Bf(a,b,c,d){for(var e=W(b.G),f=a.$(b,1),h=a.Ma[f],g="",k=(8086!=a.style?Be:Ce)[h[0]],l=h.length-1,p=0,q,x=1;x<=l;x++){var v="";q=h[x];if(void 0!==q&&!(q&16384&&a.style==we)){var r=q&240;if(r){var C=q&15;C?p=C:q|=p;q&61440||(q|=1==x?8192:4096);if(r&32)a:{var v=a,r=q,C=b,y=" ";switch(r&15){case 1:y=n(v.$(C,1),2);break;case 2:y=n(v.$(C,1)<<24>>24,4);break;case 3:y=n(v.Ra(C,2),4);break;default:v="imm("+t(r)+")";break a}8086==v.style&&r&64?y="["+y+"]":r&16||(y=(v.style==we?"$":"0x")+y);v=y}else r&
16?(v=(q&3840)>>8,r=De[v],8086==a.style&&q&64&&(6==v&&(r="HL"),r="["+r+"]"),v=r):r&128&&(v=(f>>3&7).toString());if(!v||!v.length){g="INVALID";break}0<g.length&&(g+=",");g+=v||"???"}}}f="";h=Z(e.G)+" ";if(-1!==e.G&&-1!==b.G){do if(f+=n(a.$(e,1),2),null==e.G)break;while(e.G!=b.G)}h+=la(f,10);h=h+(q&32768?"*":" ")+la(k,7);g&&(h+=" "+g);c&&(h=la(h,40)+";"+c,h=a.b.D.lb?h+("cycles="+Fc(a.b).toString()+" cs="+n(a.b.i.Ab)):h+(null!=d?"="+d.toString():""));return h}
function Cf(a,b){var c;switch(b){case "IF":c=a.b.wa&512;break;case "SF":c=cd(a.b);break;case "ZF":c=bd(a.b);break;case "AF":c=ad(a.b);break;case "PF":c=$c(a.b);break;case "CF":c=Yc(a.b);break;default:c=0}return b.charAt(0)+(c?"1":"0")+" "}function Df(a,b){return De[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")}
m.stop=function(a,b){if(this.D.ya){this.D.ya=!1;this.L=b-this.yb;if(!this.S){var c="stopped";if(this.L){var d=a-this.xb,e=0<d?Math.round(1E3*this.L/d):0,c=c+" (";Gd(this)&&(c+=this.aa+" opcodes, ",this.ua-=this.aa,this.aa=0);c+=this.L+" cycles, "+d+" ms, "+e+" hz)"}else kb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.Ha(!0);this.gb();wf(this,this.b.P)}};function Gd(a){return 1<a.u.length||!!a.na}
function Hd(a,b,c){var d=a.b;if(0<c&&(a.na&&!--a.na||ic(a,b,1,a.u)))return!0;0<=c&&a.K.length&&(a.aa++,b=Cb(a.w,b),null!=b&&(a.K[b][1]++,b=a.M[a.ga],b.G=d.P,b.Oa=!1,++a.ga==a.M.length&&(a.ga=0)));return!1}function Jb(a,b,c){a.g("break on input from port "+t(b)+": "+n(c));a.ma(!0)}function Vb(a,b,c){a.g("break on output to port "+t(b)+": "+n(c));a.ma(!0)}
function ze(a){var b,c;a.u=["bp"];if(void 0!==a.R)for(b=1;b<a.R.length;b++){c=a.R[b];var d=a.w;jc(d.Y[He(c)>>>d.pa],!1)}a.R=["br"];if(void 0!==a.J)for(b=1;b<a.J.length;b++)c=a.J[b],d=a.w,jc(d.Y[He(c)>>>d.pa],!0);a.J=["bw"];a.hb=0}m.Za=function(a,b,c){var d=!0;c||xf(this,a,b,!1,!0);if(a!=this.u){var e=He(b);if(-1===e)this.g("invalid address: "+Z(b.G)),d=!1;else{var f=this.w;f.Y[e>>>f.pa].Za(e&f.w,a==this.J)}}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.u&&(d=a.w,jc(d.Y[c>>>d.pa],b==a.J));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.G)+(d?" "+d:c.Mc?' "'+c.Mc+'"':""))}
function wf(a,b){if(void 0!==b)ic(a,b,1,a.u,!0),a.S=0;else for(var c=1;c<a.u.length;c++){var d=a.u[c];if(d.Oa){if(!xf(a,a.u,d,!0))break;c=0}}}
function ic(a,b,c,d,e){var f=!1;if(!a.hb++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.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.ud){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.D.ya||(f=!0)}if(f){e||yf(a,d,h,"hit");break}}}a.hb--;return f}
function Bf(a,b,c,d){for(var e=W(b.G),f=a.$(b,1),h=a.Ma[f],g="",k=(8086!=a.style?De:Ee)[h[0]],l=h.length-1,p=0,q,x=1;x<=l;x++){var v="";q=h[x];if(void 0!==q&&!(q&16384&&a.style==ye)){var r=q&240;if(r){var C=q&15;C?p=C:q|=p;q&61440||(q|=1==x?8192:4096);if(r&32)a:{var v=a,r=q,C=b,y=" ";switch(r&15){case 1:y=n(v.$(C,1),2);break;case 2:y=n(v.$(C,1)<<24>>24,4);break;case 3:y=n(v.Ra(C,2),4);break;default:v="imm("+t(r)+")";break a}8086==v.style&&r&64?y="["+y+"]":r&16||(y=(v.style==ye?"$":"0x")+y);v=y}else r&
16?(v=(q&3840)>>8,r=Fe[v],8086==a.style&&q&64&&(6==v&&(r="HL"),r="["+r+"]"),v=r):r&128&&(v=(f>>3&7).toString());if(!v||!v.length){g="INVALID";break}0<g.length&&(g+=",");g+=v||"???"}}}f="";h=Z(e.G)+" ";if(-1!==e.G&&-1!==b.G){do if(f+=n(a.$(e,1),2),null==e.G)break;while(e.G!=b.G)}h+=la(f,10);h=h+(q&32768?"*":" ")+la(k,7);g&&(h+=" "+g);c&&(h=la(h,40)+";"+c,h=a.b.D.lb?h+("cycles="+Gc(a.b).toString()+" cs="+n(a.b.i.Ab)):h+(null!=d?"="+d.toString():""));return h}
function Cf(a,b){var c;switch(b){case "IF":c=a.b.wa&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 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 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.Ra(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.aa-a.ua}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.fa[b],void 0===e&&(e=ca(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
function If(a,b,c){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.fa[b]);var c=0;for(b in a.fa)If(a,b,a.fa[b]),c++;return 0<c}ve.prototype.Ta=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
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.fa[b]);var c=0;for(b in a.fa)If(a,b,a.fa[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.H.length;b++){var f=a.H[b],h=f.G>>>0,g=f.Fd;if(e>=h&&e<h+g){e=oa(f.rc,[e-h],a.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.H[b].rc,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.H[b].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?Be:Ce;for(c=0;c<e.length;c++){var h=e[c][0],g=e[c][1];g&&(a.g((f[a.Ma[h][0]]+" ").substr(0,5)+" ("+da(h)+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}}
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.Ma[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.fa[c[1]],!0;var d=Ne(a,c[3]);return void 0!==d?(a.fa[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
function Of(a,b,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.G-e[1])&&(h=" + "+t(f)),f=e[0]+" ("+Z(e[1])+")"+h,c&&a.g(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.G)&&(h=" - "+t(f)),f=e[4]+" ("+Z(e[5])+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
function Pf(a,b){switch(b[1]){case "8080":a.style=we;break;case "8086":a.style=8086;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.b.i.ob=c;break;case "start":a.b.i.Bb=c;break;case "stop":a.b.i.qb=c;break;default:a.g("unknown cs option");return}void 0!==c&&oc(a.b);a.g("checksums "+(a.b.D.lb?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Gc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.bb.toFixed(2)+"Mhz")+
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.i.ob=c;break;case "start":a.b.i.Bb=c;break;case "stop":a.b.i.qb=c;break;default:a.g("unknown cs option");return}void 0!==c&&Bc(a.b);a.g("checksums "+(a.b.D.lb?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Hc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.bb.toFixed(2)+"Mhz")+
" ("+a.b.i.Sa+"x)");return;case "?":a.g("debugger options:");a.g("\t8080\t\tselect 8080-style mnemonics");a.g("\t8086\t\tselect 8086-style mnemonics");a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.g("unknown option: "+b[1]);return}}a.g(a.style+"-style mnemonics enabled")}
function uf(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.j=g&255;break;case "B":d.T=g&255;break;case "BC":d.T=g>>8&255;case "C":d.U=g&255;break;case "D":d.V=
g&255;break;case "DE":d.V=g>>8&255;case "E":d.W=g&255;break;case "H":d.X=g&255;break;case "HL":d.X=g>>8&255;case "L":d.Z=g&255;break;case "SP":d.ka=g&65535;break;case "PC":G(d,g);a.O=W(d.P);break;case "PS":Qc(d,g);break;case "PSW":Qc(d,g&255|d.wa&-256);d.j=g>>8;break;case "CF":d.ba=g?d.ba|256:d.ba&255;break;case "PF":g?$c(d)||(d.ea^=1):$c(d)&&(d.ea^=1);break;case "AF":d.xa=g?~d.ea&16|d.xa&-17:d.ea&16|d.xa&-17;break;case "ZF":d.ba=g?d.ba&-256:d.ba|255;break;case "SF":g?cd(d)||(d.ea^=192):cd(d)&&(d.ea^=
192);break;case "IF":d.wa=g?d.wa|512:d.wa&-513;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}Cc(d);a.g("updated registers:")}a.g(Ef(a));c&&(a.O=W(d.P),vf(a,Z(a.O.G)))}}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.tb(e,d,!1)},function(){Cc(a.b);lb(a,!1)})}
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.j=g&255;break;case "B":d.T=g&255;break;case "BC":d.T=g>>8&255;case "C":d.U=g&255;break;case "D":d.V=
g&255;break;case "DE":d.V=g>>8&255;case "E":d.W=g&255;break;case "H":d.X=g&255;break;case "HL":d.X=g>>8&255;case "L":d.Z=g&255;break;case "SP":d.ka=g&65535;break;case "PC":G(d,g);a.O=W(d.P);break;case "PS":Rc(d,g);break;case "PSW":Rc(d,g&255|d.wa&-256);d.j=g>>8;break;case "CF":d.ba=g?d.ba|256:d.ba&255;break;case "PF":g?ad(d)||(d.ea^=1):ad(d)&&(d.ea^=1);break;case "AF":d.xa=g?~d.ea&16|d.xa&-17:d.ea&16|d.xa&-17;break;case "ZF":d.ba=g?d.ba&-256:d.ba|255;break;case "SF":g?dd(d)||(d.ea^=192):dd(d)&&(d.ea^=
192);break;case "IF":d.wa=g?d.wa|512:d.wa&-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.O=W(d.P),vf(a,Z(a.O.G)))}}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.tb(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.G<b.G)return;e=d.G-b.G;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=mb(a,!1)||a.S?a.L:null;var h=null!=f?"cycles":null,g=Kf(a,b),k=b.G;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.g(l)}g[3]&&(h=g[3],f=null);f=Bf(a,b,h,f);a.g(f);a.O=b;e-=b.G-k;c++}}}
function Pe(a,b,c,d){if(c)if(b){0>a.F&&a.B.length&&(a.F=0);if(0>a.F||b!=a.B[a.F])a.B.splice(0,0,b),a.F=0;a.F--}else a.da?b="end":b=a.B[a.F+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(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.da&&(a.g("ended assemble at "+Z(a.ca.G)),a.O=a.ca,a.da=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.qa=null;if(nb(a)&&0<b.length){a.da&&(b="a "+Z(a.ca.G)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var p=Ie(a,f[1],!0);if(p)if(a.ca=
p,void 0===f[2])a.g("begin assemble at "+Z(p.G)),a.da=!0,Cc(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var x=0;x<q.length;x++)a.sa(p,q[x],1);a.g(Bf(a,a.ca))}}break;case "b":a:{var v=f[0],r=f[1],C=b;if("?"==r)a.g("breakpoint commands:"),a.g("\tbi [p]\ttoggle break on input port [p]"),a.g("\tbo [p]\ttoggle break on output port [p]"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),
a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");else{var y=v.charAt(1);if("l"==y){var X=0,X=X+zf(a,a.u),X=X+zf(a,a.R);(X+=zf(a,a.J))||a.g("no breakpoints")}else if("n"==y)a.na=Hf(a,r),a.g("break after "+a.na+" 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.G);"c"==y?null==A.G?(xe(a),a.g("all breakpoints cleared")):xf(a,a.u,A)||xf(a,a.R,A)||
xf(a,a.J,A)||a.g("breakpoint missing: "+Z(A.G)):"i"==y?a.g("breakpoint "+(Eb(a.w,A.G)?"enabled":"cleared")+": port "+r+" (input)"):"o"==y?a.g("breakpoint "+(Jb(a.w,A.G)?"enabled":"cleared")+": port "+r+" (output)"):null!=A.G&&(Oe(a,A,C),"p"==y?a.Za(a.u,A):"r"==y?a.Za(a.R,A):"w"==y?a.Za(a.J,A):a.g("unknown breakpoint command: "+y))}}}break;case "c":a.Ea&&(a.Ea.value="");break;case "d":a:{var Q,aa=f[0],Y=f[1],ua=f[2],Fb=f[3];if("?"==Y){var Ea="";for(Q in Fe)a.Ba[Q]&&(Ea&&(Ea+=","),Ea+=Q);Ea+=",state,symbols";
a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");Ea.length&&a.g("dump extension commands:\n\t"+Ea)}else if("state"==Y){var We=Sf(a.A,!0);"console"==ua?console.log(We):(a.Ea&&(a.Ea.value=""),a.g(We))}else if("symbols"==Y)for(var hd=0;hd<a.H.length;hd++){var id=a.H[hd],ob;for(ob in id.Qa)if("."!=ob.charAt(0)){var Xe=id.Qa[ob].o;
if(void 0!==Xe){var Ye=id.Qa[ob].l;Ye&&(ob=Ye);a.g(Z(Xe)+" "+ob)}}}else{if("d"==aa){for(Q in Fe)if(f[1]==Q){var Ze=a.Ba[Q];Ze?(f.shift(),f.shift(),Ze(f)):a.g("no dump registered for "+Y);break a}Y||(aa=a.zb||"db")}else a.zb=aa;if("dh"==aa){var $e=Y,af=ua,bf="",cf=0,ba=a.ga,Fa=a.M;if(Fa.length){var ia=+$e||a.ib,pb=+af||10;isNaN(ia)?ia=pb:bf="more ";ia>Fa.length&&(a.g("note: only "+Fa.length+" available"),ia=Fa.length);ba-=ia;0>ba&&(null==Fa[Fa.length-1].G?(ia=ba+ia,ba=0):ba+=Fa.length);var jd=[];"call"==
af&&(pb=1E5,jd=["CALL"]);for(void 0!==$e&&a.g(ia+" instructions earlier:");0<pb&&ba!=a.ga;){var df=Fa[ba++];if(null==df.G)break;var Kb=W(df.G),kg=ia--,ef=Bf(a,Kb,"history",kg);(!jd.length||0<=ef.indexOf(jd[0]))&&a.g(ef);Kb.Ub&&(ba+=Kb.Ub,pb-=Kb.Ub,ia-=Kb.Ub);ba>=Fa.length&&(ba=0);a.ib=ia;cf++;pb--}}cf||(a.g("no "+bf+"history available"),a.ib=void 0)}else{var pc=Ie(a,Y);if(pc){var qc=0;ua&&("l"==ua.charAt(0)&&(ua=ua.substr(1)||Fb),qc=Hf(a,ua)>>>0,65536<qc&&(qc=65536));for(var Ya="",rc="dd"==aa?4:"dw"==
aa?2:1,sc=rc*qc||128,lg=sc+15>>4||1;lg--&&0<sc;){var tc=0,kd=0,Lb,Mb="",ld="",Y=Z(pc.G);for(Lb=16;0<Lb&&0<sc;Lb--){var uc=a.$(pc,1),tc=tc|uc<<(kd++<<3);kd==rc&&(Mb+=n(tc,2*rc),Mb+=1==rc?9==Lb?"-":" ":" ",tc=kd=0);ld+=32<=uc&&128>uc?String.fromCharCode(uc):".";sc--}Ya&&(Ya+="\n");Ya+=Y+" "+Mb+(0==Lb?" "+ld:"")}Ya&&a.g(Ya);a.$a=pc}}}}break;case "e":if("else"==f[0])break;var vc=1,ff=255,gf=a.$,hf=a.sa;"ew"==f[0]&&(vc=2,ff=65535,gf=a.Ra,hf=a.Tb);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=Ie(a,kf);if(wc)for(var xc=2;xc<f.length;xc++){var Nb=Ne(a,f[xc]);if(void 0===Nb){a.g("unrecognized value: "+f[xc]);break}Nb&~ff&&a.g("warning: "+n(Nb)+" exceeds "+vc+"-byte value");var mg=gf.call(a,wc);a.g("changing "+Z(wc.G)+" from 0x"+n(mg,jf)+" to 0x"+n(Nb,jf));hf.call(a,wc,Nb,vc)}}break;case "f":Mf(a,f[1]);break;case "g":a:{var lf=f[1],ng=b;if(void 0!==lf){var md=Ie(a,lf,!0);if(!md)break a;
Oe(a,md,ng);a.Za(a.u,md,!0)}a.fb(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var nd;if(a.D.ya)nd="halting",a.ma();else{if(mb(a,!0))break a;nd="already halted"}c||a.g(nd)}break;case "i":if("if"==f[0]){var od;var Ob=b.substr(2),Ob=ma(Ob);Ne(a,Ob)?(c||a.g("true: "+Ob),od=!0):(c||a.g("false: "+Ob),od=!1);od||(d=!1);break}if("int"==f[0]){var yc;var og=f[1];if(a.b.wa&512){var pd=Ne(a,og);null==pd?yc=!1:(a.g("requesting interrupt level "+pd),Ed(a.b,pd),yc=!0)}else a.g("interrupts disabled (use rif=1 to enable)"),
yc=!1;yc||(d=!1);break}var qd=f[1];if(qd&&"?"!=qd){var rd=Hf(a,qd);if(void 0!==rd){var pg=Hb(a.w,rd);a.g(t(rd)+": "+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 sd=0,mf=W(),Pb=W(a.b.ka);for(a.g("stack trace for "+Z(Pb.G));10>sd;){for(var Za=null,rg=256;65536>Pb.G>>>0;){mf.G=
a.Ra(Pb,2);if(null==Pb.G||!rg--)break;for(var sg=a,zc=mf,nf=null,Qb=zc.G,of=Qb,td=1;6>=td&&Qb;td++){if(2<td){zc.G=Qb;var Ac=Bf(sg,zc);if(0<=Ac.indexOf("CALL")){var pf=Ac.indexOf(" ");if(Qb+(Ac.indexOf(" ",pf+1)-pf-1)/2==of){nf=Ac;break}}}Qb--}zc.G=of;if(Za=nf)break}if(!Za||null==Za)break;var qf=null;if("ks"==qg){var rf=Za.match(/[0-9A-F]+$/);rf&&(qf=Of(a,rf[0]))}Za=la(Za,50)+" ;"+(qf||"stack="+Z(Pb.G));a.g(Za);sd++}sd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Of(a,f[1],!0);
break}break;case "m":a:{var Ga,Ha=null,N=f[1];"?"==N&&(N=void 0);if(void 0!==N){var Qa=0;if("all"==N)Qa=1878917119,N=null;else if("on"==N)Ha=!0,N=null;else if("off"==N)Ha=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(Ga in Fe)if(N==Ga){Qa=Fe[Ga];Ha=!!(a.ra&Qa);break}if(!Qa){a.g("unknown message category: "+N);break a}}if(Qa)if("on"==f[2])a.ra|=Qa,Ha=!0;else if("off"==f[2]&&(a.ra&=~Qa,Ha=!1,1073741824==Qa)){for(var ud=0;ud<a.ta.length;ud++)a.g(a.ta[ud]);a.ta=[]}}var tg=0,Ra="";for(Ga in Fe)if(!N||
N==Ga){var ug=!!(a.ra&Fe[Ga]);if(null===Ha||Ha==ug)Ra&&(Ra+=","),++tg%10||(Ra+="\n\t"),"key"==Ga&&(Ga="keys"),Ra+=Ga}void 0===N&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ha?Ha?"messages on: ":"messages off: ":"message categories:\n\t")+(Ra||"none"));ye(a)}break;case "o":var vd=f[1],vg=f[2];if(vd&&"?"!=vd){var wd=Hf(a,vd,"port #"),xd=Hf(a,vg);void 0!==wd&&void 0!==xd&&(Tb(a.w,wd,xd),a.g(t(wd)+": "+da(xd)))}else a.g("output commands:"),a.g("\to [p] [b]\twrite byte [b] to port [p]"),
a.g("warning: port accesses can affect hardware state");break;case "p":if("print"==f[0]){Qf(a,b.substr(5));break}var sf="pr"==f[0]?1:0,wg=1+sf;if(a.S)a.g("step in progress");else{var yd=W(a.b.P);switch(a.$(yd)){case 205:a.S=wg,Je(yd,3)}a.S?(a.Za(a.u,yd,!0),a.fb()||(a.A&&a.A.gb(),a.S=0)):Rf(a,sf?"tr":"t")}break;case "r":if("reset"==b){a.A&&a.A.reset();break}uf(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.0 ("+a.b.Cc+",RELEASE"+(rb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(ta());break;case "?":if(f[1]){Qf(a,b.substr(1));break}var Rb="commands:",zd;for(zd in Ae)Rb+="\n"+la(zd,9)+Ae[zd];Fd(a)||(Rb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Rb);break;default:a.g("unknown command: "+b),d=!1}}}catch(tf){a.g("debugger error: "+(tf.stack||tf.message)),d=!1}return d}function Bc(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=B(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new ve(d);hb(d,c)}});
function Tf(a,b,c){w.call(this,"Computer",a,Tf,67108864);this.D.va=!1;Uf(this,b);this.R=mc(this,"autoPower",a);this.B=0;this.fa=a.busWidth||a.buswidth;this.A=Vf;this.M=null;this.K=this.ca=!1;this.ga=mc(this,"url")||"";(Math.random()+.1).toString(36);this.u=Wf(this);if(this.b=gb("CPU",this.id)){this.I=gb("Debugger",this.id);this.H=[];for(b=null;b=ub(this,"Video",b);)this.H.push(b);this.w=new wb({id:this.Lb+".bus",busWidth:this.fa},this.b,this.I);var d,e=eb(this.id);if((this.F=gb("Panel",this.id))&&
this.F.Ea)for(b=0;b<e.length;b++)d=e[b],d.ia=this.F.ia,d.g=this.F.g,d.Ea=this.F.Ea;this.g("PC8080 v1.24.0\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.w,this.b,this.I);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.L=d:this.A=parseInt(d,10));var f;if(a=mc(this,"state")||(f=!0,a.state))b=this.S=a,f||(this.K=!0,this.A=Vf),this.A&&(this.O=new H(this,"1.24.0"),Xf(this.O)?
p,void 0===f[2])a.g("begin assemble at "+Z(p.G)),a.da=!0,Dc(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var x=0;x<q.length;x++)a.sa(p,q[x],1);a.g(Bf(a,a.ca))}}break;case "b":a:{var v=f[0],r=f[1],C=b;if("?"==r)a.g("breakpoint commands:"),a.g("\tbi [p]\ttoggle break on input port [p]"),a.g("\tbo [p]\ttoggle break on output port [p]"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),
a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");else{var y=v.charAt(1);if("l"==y){var X=0,X=X+zf(a,a.u),X=X+zf(a,a.R);(X+=zf(a,a.J))||a.g("no breakpoints")}else if("n"==y)a.na=Hf(a,r),a.g("break after "+a.na+" 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.G);"c"==y?null==A.G?(ze(a),a.g("all breakpoints cleared")):xf(a,a.u,A)||xf(a,a.R,A)||
xf(a,a.J,A)||a.g("breakpoint missing: "+Z(A.G)):"i"==y?a.g("breakpoint "+(Gb(a.w,A.G)?"enabled":"cleared")+": port "+r+" (input)"):"o"==y?a.g("breakpoint "+(Sb(a.w,A.G)?"enabled":"cleared")+": port "+r+" (output)"):null!=A.G&&(Oe(a,A,C),"p"==y?a.Za(a.u,A):"r"==y?a.Za(a.R,A):"w"==y?a.Za(a.J,A):a.g("unknown breakpoint command: "+y))}}}break;case "c":a.Ea&&(a.Ea.value="");break;case "d":a:{var Q,aa=f[0],Y=f[1],va=f[2],Fb=f[3];if("?"==Y){var Ea="";for(Q in tb)a.Ba[Q]&&(Ea&&(Ea+=","),Ea+=Q);Ea+=",state,symbols";
a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");Ea.length&&a.g("dump extension commands:\n\t"+Ea)}else if("state"==Y){var Xe=Sf(a.A,!0);"console"==va?console.log(Xe):(a.Ea&&(a.Ea.value=""),a.g(Xe))}else if("symbols"==Y)for(var hd=0;hd<a.H.length;hd++){var id=a.H[hd],ob;for(ob in id.Qa)if("."!=ob.charAt(0)){var Ye=id.Qa[ob].o;
if(void 0!==Ye){var Ze=id.Qa[ob].l;Ze&&(ob=Ze);a.g(Z(Ye)+" "+ob)}}}else{if("d"==aa){for(Q in tb)if(f[1]==Q){var $e=a.Ba[Q];$e?(f.shift(),f.shift(),$e(f)):a.g("no dump registered for "+Y);break a}Y||(aa=a.zb||"db")}else a.zb=aa;if("dh"==aa){var af=Y,bf=va,cf="",df=0,ba=a.ga,Fa=a.M;if(Fa.length){var ia=+af||a.ib,pb=+bf||10;isNaN(ia)?ia=pb:cf="more ";ia>Fa.length&&(a.g("note: only "+Fa.length+" available"),ia=Fa.length);ba-=ia;0>ba&&(null==Fa[Fa.length-1].G?(ia=ba+ia,ba=0):ba+=Fa.length);var jd=[];"call"==
bf&&(pb=1E5,jd=["CALL"]);for(void 0!==af&&a.g(ia+" instructions earlier:");0<pb&&ba!=a.ga;){var ef=Fa[ba++];if(null==ef.G)break;var Kb=W(ef.G),kg=ia--,ff=Bf(a,Kb,"history",kg);(!jd.length||0<=ff.indexOf(jd[0]))&&a.g(ff);Kb.Ub&&(ba+=Kb.Ub,pb-=Kb.Ub,ia-=Kb.Ub);ba>=Fa.length&&(ba=0);a.ib=ia;df++;pb--}}df||(a.g("no "+cf+"history available"),a.ib=void 0)}else{var pc=Ie(a,Y);if(pc){var qc=0;va&&("l"==va.charAt(0)&&(va=va.substr(1)||Fb),qc=Hf(a,va)>>>0,65536<qc&&(qc=65536));for(var Ya="",rc="dd"==aa?4:"dw"==
aa?2:1,sc=rc*qc||128,lg=sc+15>>4||1;lg--&&0<sc;){var tc=0,kd=0,Lb,Mb="",ld="",Y=Z(pc.G);for(Lb=16;0<Lb&&0<sc;Lb--){var uc=a.$(pc,1),tc=tc|uc<<(kd++<<3);kd==rc&&(Mb+=n(tc,2*rc),Mb+=1==rc?9==Lb?"-":" ":" ",tc=kd=0);ld+=32<=uc&&128>uc?String.fromCharCode(uc):".";sc--}Ya&&(Ya+="\n");Ya+=Y+" "+Mb+(0==Lb?" "+ld:"")}Ya&&a.g(Ya);a.$a=pc}}}}break;case "e":if("else"==f[0])break;var vc=1,gf=255,hf=a.$,jf=a.sa;"ew"==f[0]&&(vc=2,gf=65535,hf=a.Ra,jf=a.Tb);var kf=vc<<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 wc=Ie(a,lf);if(wc)for(var xc=2;xc<f.length;xc++){var Nb=Ne(a,f[xc]);if(void 0===Nb){a.g("unrecognized value: "+f[xc]);break}Nb&~gf&&a.g("warning: "+n(Nb)+" exceeds "+vc+"-byte value");var mg=hf.call(a,wc);a.g("changing "+Z(wc.G)+" from 0x"+n(mg,kf)+" to 0x"+n(Nb,kf));jf.call(a,wc,Nb,vc)}}break;case "f":Mf(a,f[1]);break;case "g":a:{var mf=f[1],ng=b;if(void 0!==mf){var md=Ie(a,mf,!0);if(!md)break a;
Oe(a,md,ng);a.Za(a.u,md,!0)}a.fb(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var nd;if(a.D.ya)nd="halting",a.ma();else{if(mb(a,!0))break a;nd="already halted"}c||a.g(nd)}break;case "i":if("if"==f[0]){var od;var Ob=b.substr(2),Ob=ma(Ob);Ne(a,Ob)?(c||a.g("true: "+Ob),od=!0):(c||a.g("false: "+Ob),od=!1);od||(d=!1);break}if("int"==f[0]){var yc;var og=f[1];if(a.b.wa&512){var pd=Ne(a,og);null==pd?yc=!1:(a.g("requesting interrupt level "+pd),Fd(a.b,pd),yc=!0)}else a.g("interrupts disabled (use rif=1 to enable)"),
yc=!1;yc||(d=!1);break}var qd=f[1];if(qd&&"?"!=qd){var rd=Hf(a,qd);if(void 0!==rd){var pg=Ib(a.w,rd);a.g(t(rd)+": "+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 sd=0,nf=W(),Pb=W(a.b.ka);for(a.g("stack trace for "+Z(Pb.G));10>sd;){for(var Za=null,rg=256;65536>Pb.G>>>0;){nf.G=
a.Ra(Pb,2);if(null==Pb.G||!rg--)break;for(var sg=a,zc=nf,of=null,Qb=zc.G,pf=Qb,td=1;6>=td&&Qb;td++){if(2<td){zc.G=Qb;var Ac=Bf(sg,zc);if(0<=Ac.indexOf("CALL")){var qf=Ac.indexOf(" ");if(Qb+(Ac.indexOf(" ",qf+1)-qf-1)/2==pf){of=Ac;break}}}Qb--}zc.G=pf;if(Za=of)break}if(!Za||null==Za)break;var rf=null;if("ks"==qg){var sf=Za.match(/[0-9A-F]+$/);sf&&(rf=Of(a,sf[0]))}Za=la(Za,50)+" ;"+(rf||"stack="+Z(Pb.G));a.g(Za);sd++}sd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Of(a,f[1],!0);
break}break;case "m":a:{var Ga,Ha=null,N=f[1];"?"==N&&(N=void 0);if(void 0!==N){var Qa=0;if("all"==N)Qa=1878917119,N=null;else if("on"==N)Ha=!0,N=null;else if("off"==N)Ha=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(Ga in tb)if(N==Ga){Qa=tb[Ga];Ha=!!(a.ra&Qa);break}if(!Qa){a.g("unknown message category: "+N);break a}}if(Qa)if("on"==f[2])a.ra|=Qa,Ha=!0;else if("off"==f[2]&&(a.ra&=~Qa,Ha=!1,1073741824==Qa)){for(var ud=0;ud<a.ta.length;ud++)a.g(a.ta[ud]);a.ta=[]}}var tg=0,Ra="";for(Ga in tb)if(!N||
N==Ga){var ug=!!(a.ra&tb[Ga]);if(null===Ha||Ha==ug)Ra&&(Ra+=","),++tg%10||(Ra+="\n\t"),"key"==Ga&&(Ga="keys"),Ra+=Ga}void 0===N&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ha?Ha?"messages on: ":"messages off: ":"message categories:\n\t")+(Ra||"none"));Ae(a)}break;case "o":var vd=f[1],vg=f[2];if(vd&&"?"!=vd){var wd=Hf(a,vd,"port #"),xd=Hf(a,vg);void 0!==wd&&void 0!==xd&&(Ub(a.w,wd,xd),a.g(t(wd)+": "+da(xd)))}else a.g("output commands:"),a.g("\to [p] [b]\twrite byte [b] to port [p]"),
a.g("warning: port accesses can affect hardware state");break;case "p":if("print"==f[0]){Qf(a,b.substr(5));break}var tf="pr"==f[0]?1:0,wg=1+tf;if(a.S)a.g("step in progress");else{var yd=W(a.b.P);switch(a.$(yd)){case 205:a.S=wg,Je(yd,3)}a.S?(a.Za(a.u,yd,!0),a.fb()||(a.A&&a.A.gb(),a.S=0)):Rf(a,tf?"tr":"t")}break;case "r":if("reset"==b){a.A&&a.A.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.0 ("+a.b.Cc+",RELEASE"+(rb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(ta());break;case "?":if(f[1]){Qf(a,b.substr(1));break}var Rb="commands:",zd;for(zd in Ce)Rb+="\n"+la(zd,9)+Ce[zd];Gd(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=B(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.D.va=!1;Uf(this,b);this.R=nc(this,"autoPower",a);this.B=0;this.fa=a.busWidth||a.buswidth;this.A=Vf;this.M=null;this.K=this.ca=!1;this.ga=nc(this,"url")||"";(Math.random()+.1).toString(36);this.u=Wf(this);if(this.b=gb("CPU",this.id)){this.I=gb("Debugger",this.id);this.H=[];for(b=null;b=vb(this,"Video",b);)this.H.push(b);this.w=new xb({id:this.Lb+".bus",busWidth:this.fa},this.b,this.I);var d,e=eb(this.id);if((this.F=gb("Panel",this.id))&&
this.F.Ea)for(b=0;b<e.length;b++)d=e[b],d.ia=this.F.ia,d.g=this.F.g,d.Ea=this.F.Ea;this.g("PC8080 v1.24.0\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.w,this.b,this.I);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.L=d:this.A=parseInt(d,10));var f;if(a=nc(this,"state")||(f=!0,a.state))b=this.S=a,f||(this.K=!0,this.A=Vf),this.A&&(this.O=new H(this,"1.24.0"),Xf(this.O)?
b=null:delete this.O);!b&&this.A&&(b=Yf(this))&&(this.K=!0);if(b){var h=this;sa(b,null,!0,function(a,b,c){c?(h.L=null,h.K=!1,h.ia("Unable to load machine state from server (error "+c+(b?": "+ma(b):"")+")")):(h.M=b,h.ca=!0);E(h)})}else E(this);this.N.power||(this.R=!0);!c&&this.R&&Zf(this,this.Fb)}else u("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){u(d.message+" ("+c+")")}}a.da=b}
function mc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.da&&(d=a.da[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(!nb(f)){nb(f,function(){Zf(a,b,c)});return}}b.call(a,c)}
function nc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.da&&(d=a.da[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(!nb(f)){nb(f,function(){Zf(a,b,c)});return}}b.call(a,c)}
function $f(a,b){var c=new H(a,"1.24.0","validate");if(Xf(c)&&ag(c)){var d=bg(c,"timestamp"),e=b?bg(b,"timestamp"):"unknown";d!=e&&(a.ia("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.Fb=function(a){void 0===a&&(a=this.A||(this.M?1:Vf));if(!this.B){this.B++;var b=!1,c=!1;this.aa=!1;var d=this.O||new H(this,"1.24.0");if(-1==a)b=!0;else if(a>Vf){if(Xf(d,this.M)){this.J=new H(this,"1.24.0","failsafe");Xf(this.J)&&(cg(this,d),a=2,dg(this.J));I(this.J,"timestamp",qa());eg(this.J);var e=this.A&&!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&&
m.Fb=function(a){void 0===a&&(a=this.A||(this.M?1:Vf));if(!this.B){this.B++;var b=!1,c=!1;this.aa=!1;var d=this.O||new H(this,"1.24.0");if(-1==a)b=!0;else if(a>Vf){if(Xf(d,this.M)){this.J=new H(this,"1.24.0","failsafe");Xf(this.J)&&(cg(this,d),a=2,dg(this.J));I(this.J,"timestamp",qa());eg(this.J);var e=this.A&&!this.K;if(1==a||ua("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.ia("Error: "+h),"unable to verify user"==h&&(za("user",""),this.u=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.M;delete this.O}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.sc,b):this.sc(b)}};
function fg(a,b,c,d,e){if(!b.D.va){b.D.va=!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&&(u("Unable to restore state for "+b.type),a.S&&!a.ca?(c.clear(),a.A=Vf,window&&window.location.reload()):a.aa=!0,b.Da(null),e=!1)}if(!d&&b.yc)for(a=b.yc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
m.sc=function(a){var b=a[0],c=0>a[1];a=a[2];this.ha=!0;this.D.va=!0;var d=this.N.power;d&&(d.textContent="Shutdown");this.b&&(fg(this,this.b,b,c,a),Dc(this.b));this.aa&&(cg(this,b),b.clear());!c&&this.J&&(this.J.clear(),delete this.J);this.B=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.u||"",d=b.toString(),e={app:"PC8080",ver:"1.24.0"};e.url=a.ga;e.user=c;e.type="bug";e.data=d;sa("http://www.pcjs.org/api/v1/report",e,!0)}}
m.sc=function(a){var b=a[0],c=0>a[1];a=a[2];this.ha=!0;this.D.va=!0;var d=this.N.power;d&&(d.textContent="Shutdown");this.b&&(fg(this,this.b,b,c,a),Ec(this.b));this.aa&&(cg(this,b),b.clear());!c&&this.J&&(this.J.clear(),delete this.J);this.B=0};
function cg(a,b){if(ua("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.u||"",d=b.toString(),e={app:"PC8080",ver:"1.24.0"};e.url=a.ga;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.B)return null;a.B--;var f=new H(a,"1.24.0"),h=new H(a,"1.24.0","validate"),g=qa();I(h,"timestamp",g);I(f,"timestamp",g);I(f,"version","1.24.0");I(f,"url",window?window.location.href:null);I(f,"browser",ta());a.b&&a.b.Ga&&(c&&a.b.ma(),d=a.b.Ga(b,c),"object"===typeof d&&I(f,a.b.id,d),c&&(a.b.D.va=!1,!1===d&&(e=null)));for(var g=eb(a.id),k=0;k<g.length;k++){var l=g[k];l.D.va&&(l.Ga&&(d=l.Ga(b,c),"object"===typeof d&&I(f,l.id,d)),c&&(l.D.va=!1,!1===d&&(e=null)))}e&&
(c?(g=d=!1,b?(a.u&&gg(a,a.u,f.toString()),eg(h)&&eg(f)||(e=null,d=g=!0)):a.A&&(d=!0,g=3==a.A),d&&f.clear(g)):e=f.toString());c&&(a.D.va=!1,b=a.N.power)&&(b.textContent="Power");a.B=0;return e}m.reset=function(){this.w&&this.w.reset&&(jb(this,"Resetting "+this.w.type),this.w.reset());for(var a=eb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.w&&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.la=function(a,b,c){var d=this;switch(b){case "power":return this.N[b]=c,c.onclick=function(){d.B||(d.D.va?Sf(d,!1,!0):Zf(d,d.Fb))},!0;case "reset":return this.N[b]=c,c.onclick=function(){if(d.D.va&&!d.B)if(d.A&&!d.L){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.S?window&&window.location.reload():d.Fb(Vf)}else d.reset(),d.b&&Dc(d.b)},!0;case "save":if(ga()){c.parentNode.removeChild(c);break}this.N[b]=
m.la=function(a,b,c){var d=this;switch(b){case "power":return this.N[b]=c,c.onclick=function(){d.B||(d.D.va?Sf(d,!1,!0):Zf(d,d.Fb))},!0;case "reset":return this.N[b]=c,c.onclick=function(){if(d.D.va&&!d.B)if(d.A&&!d.L){var a=ua("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.S?window&&window.location.reload():d.Fb(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.A&&!d.L||d.S),c=Sf(d,b);b?gg(d,a,c):d.ia("Resume disabled, machine state not saved")}};return!0}return!1};
function Wf(a,b){var c=a.u;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.ia("The user ID is invalid."))):b&&a.ia("Browser local storage is not available"));return c}
function hg(a,b){a.u=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.u=c.data)}catch(e){u(e.message+" ("+d+")")}return a.u}function Yf(a){var b=null;a.u&&(b=ha()+"/api/v1/user?req=load&user="+a.u+"&state="+ig(a,"1.24.0"));return b}
function gg(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=ig(a,"1.24.0");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.ia("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.ia(c),za("user",""),a.u=null)}}
function ub(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.gb=function(a){if(this.H.length){var b=0,c=0;a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.H[0];d.Ba&&d.Ba.focus();a&&window&&window.scrollTo(b,c)}};m.Ha=function(a){this.b&&this.b.Ha(a);this.F&&this.F.Ha(a)};function Lc(a,b){for(var c=0;c<a.H.length;c++)Nd(a.H[c],b)}
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.gb=function(a){if(this.H.length){var b=0,c=0;a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.H[0];d.Ba&&d.Ba.focus();a&&window&&window.scrollTo(b,c)}};m.Ha=function(a){this.b&&this.b.Ha(a);this.F&&this.F.Ha(a)};function Mc(a,b){for(var c=0;c<a.H.length;c++)Pd(a.H[c],b)}
Ma(function(){for(var a=B(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=z(c),c=B(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=z(f),h=new Tf(h,d,!0);hb(h,f);h.R&&Zf(h,h.Fb)}});Da.show.push(function(){for(var a=B(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=gb("Computer",c.id))&&c.ha&&!c.D.va&&c.Fb(-1)}});
Da.exit.push(function(){for(var a=B(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=gb("Computer",c.id))&&c.D.va&&Sf(c,!(!c.A||c.L),!0)}});function H(a,b,c){this.id=a.id;this.key=ig(a,b,c);this.I=a.I;dg(this,a.Yd)}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}}};

View file

@ -77,7 +77,7 @@ Xb(this)&&(T(this,this.u),F(this,a),this.a-=6);this.a-=11},ic,function(){this.c=
function W(a){q.call(this,"ChipSet",a,W);var b=a.model;b&&!jc[b]&&Aa("Unrecognized ChipSet model: "+b);this.c=jc[b]||{};a.sound&&(this.I=null,window&&(this.I=window.AudioContext||window.webkitAudioContext),this.I&&new this.I);C(this)}v(W);
var X={Y:1978.1,Dc:{Z:0,qd:1,ud:16,Bd:32,Kd:64,Jd:128,Ca:14},qa:{Z:1,ec:1,yc:2,uc:4,vc:16,wc:32,xc:64,Ca:8},Ec:{Z:2,pd:3,Td:4,rd:8,Fd:16,Gd:32,Hd:64,sd:128,Ca:0},Od:{Z:3},Md:{Z:2,Cd:7},Qd:{Z:3,Ud:1,Pd:2,Id:4,zd:8,td:16,md:32},Nd:{Z:4},Rd:{Z:5,vd:1,wd:2,xd:4,yd:8,Vd:16}},Y={Y:100,ha:{Z:66,Fb:1,sc:2,tc:4,Ed:8,Dd:16,Db:32,Cb:64,zb:128},dc:{Z:66,INIT:0},oa:{Z:194,od:0,yb:16,zc:32,Eb:48,ic:0,jc:32},Pa:{Z:162,Ld:0,lc:0,hc:0,kc:0,gc:0},ia:{Ad:{Z:98},xa:{bc:0,ac:1,Bc:2,Fc:4,fc:5,Ac:6,Sd:7},Ta:16383}},jc=
{SI1978:X,VT100:Y};W.prototype.S=function(){return!1};W.prototype.la=function(a,b,c,d){this.o=b;this.a=c;this.O=d;this.l=a;this.m=D(a,"Keyboard");this.da=D(a,"SerialPort");this.video=D(a,"Video");fb(b,this,this.c.bb);gb(b,this,this.c.cb)};W.prototype.ca=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};W.prototype.ga=function(a){return a?this.save():!0};X.INIT=[[X.Dc.Ca,X.qa.Ca,X.Ec.Ca,0,0,0,0]];
Y.INIT=[[Y.dc.INIT,Y.ha.sc|Y.ha.tc],[Y.oa.ic,Y.oa.jc],[Y.Pa.lc,Y.Pa.hc,Y.Pa.kc,Y.Pa.gc],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11856,11824,11840,11808,11776,12E3,12E3,11857,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];
Y.INIT=[[Y.dc.INIT,Y.ha.sc|Y.ha.tc],[Y.oa.ic,Y.oa.jc],[Y.Pa.lc,Y.Pa.hc,Y.Pa.kc,Y.Pa.gc],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11824,11840,11808,11776,12E3,12E3,11889,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];
k=W.prototype;k.reset=function(){this.c.INIT&&!this.restore(this.c.INIT)&&this.M("reset error")};k.save=function(){var a=new G(this);switch(this.c.Y){case X.Y:I(a,0,[this.$,this.h,this.aa,this.C,this.L,this.U,this.W]);break;case Y.Y:I(a,0,[this.J,this.v]),I(a,1,[this.s,this.u]),I(a,2,[this.f,this.G,this.T,this.N]),I(a,3,[this.A,this.b,this.w,this.H,this.i])}return a.data()};
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.c.Y){case X.Y:return this.$=b[0],this.h=b[1],this.aa=b[2],this.C=b[3],this.L=b[4],this.U=b[5],this.W=b[6],!0;case Y.Y:return this.J=b[0],this.v=b[1],b=a[1],this.s=b[0],this.u=b[1],b=a[2],this.f=b[0],this.G=b[1],this.T=b[2],this.N=b[3],b=a[3],this.A=b[0],this.b=b[1],this.w=b[2],this.H=b[3],this.i=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.Lc=function(){return this.$};k.Mc=function(){return this.h};k.Nc=function(){return this.aa};
k.Kc=function(){return this.C>>8-this.L&255};k.$c=function(a,b){this.L=b};k.bd=function(a,b){this.U=b};k.ad=function(a,b){this.C=b<<8|this.C>>8};k.cd=function(a,b){this.W=b};k.dd=function(){};function kc(a){var b=0,c=0,d=~a.A;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}

View file

@ -816,4 +816,4 @@ a):f("transformToFragment failed")):f("unable to transform XML: unsupported brow
function us(a,b,c,d){if(!c&&b){d.push(b);a=gb[d[0]];b=null;for(var e in a)if(ha(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?xa(b,null,!0,function(a,b){vs(b,d)}):vs(null,d)}else w("Error ("+c+") requesting "+a)}
function vs(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=gb[f],k={},l;for(l in h){var n=h[l],q=ga(l);if("xml"==q){for(q=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=q.exec(h[l]);){var p=d[2];p&&(h[p]||(n=n.replace(d[0],"")))}d=l=fa(l)}else"xsl"==q&&(e=l=fa(l));k[l]=n}a&&(k[l="css"]=a);b[2]&&(k[l="parms"]=b[2]);b[3]&&(k[l="state"]=b[3]);d&&e?(l=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+l+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),c=Ja(c,"javascript",!1,g),c=c+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('<div id="'+f+'"></div>\n'),c+="...\n",c+='<script type="text/javascript" src="'+g+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",w(c)):w("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=kb("Computer",a),e=kb("Debugger",a);if(d){var f=Nr(d,!0),g=d.U?JSON.stringify(d.U):null;b||(b="/versions/pcjs/1.24.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,jk:g}))return!0;xa(b,null,!0,function(c,d,e){us(c,d,e,[a,fa(b,!0),g,f])});return!0}w("Unable to identify machine '"+a+"'");return!1};})();
window.savePC=function(a,b,c){var d=kb("Computer",a),e=kb("Debugger",a);if(d){var f=Nr(d,!0),g=d.U?JSON.stringify(d.U):null;b||(b="/versions/pcx86/1.24.0/pcx86"+(e?"-dbg":"")+".js");if(c&&c({state:f,jk:g}))return!0;xa(b,null,!0,function(c,d,e){us(c,d,e,[a,fa(b,!0),g,f])});return!0}w("Unable to identify machine '"+a+"'");return!1};})();

View file

@ -636,4 +636,4 @@ a):f("transformToFragment failed")):f("unable to transform XML: unsupported brow
function In(a,b,c,d){if(!c&&b){d.push(b);a=Ua[d[0]];b=null;for(var e in a)if(ha(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?ra(b,null,!0,function(a,b){Jn(b,d)}):Jn(null,d)}else p("Error ("+c+") requesting "+a)}
function Jn(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=Ua[f],k={},m;for(m in h){var n=h[m],x=ga(m);if("xml"==x){for(x=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=x.exec(h[m]);){var r=d[2];r&&(h[r]||(n=n.replace(d[0],"")))}d=m=fa(m)}else"xsl"==x&&(e=m=fa(m));k[m]=n}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(m=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+m+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),c=Ba(c,"javascript",!1,g),c=c+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('<div id="'+f+'"></div>\n'),c+="...\n",c+='<script type="text/javascript" src="'+g+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",p(c)):p("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=Ya("Computer",a),e=Ya("Debugger",a);if(d){var f=yn(d,!0),g=d.L?JSON.stringify(d.L):null;b||(b="/versions/pcjs/1.24.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,ij:g}))return!0;ra(b,null,!0,function(c,d,e){In(c,d,e,[a,fa(b,!0),g,f])});return!0}p("Unable to identify machine '"+a+"'");return!1};})();
window.savePC=function(a,b,c){var d=Ya("Computer",a),e=Ya("Debugger",a);if(d){var f=yn(d,!0),g=d.L?JSON.stringify(d.L):null;b||(b="/versions/pcx86/1.24.0/pcx86"+(e?"-dbg":"")+".js");if(c&&c({state:f,ij:g}))return!0;ra(b,null,!0,function(c,d,e){In(c,d,e,[a,fa(b,!0),g,f])});return!0}p("Unable to identify machine '"+a+"'");return!1};})();