iOS fixes for PC8080; specifically, the VT100

This commit is contained in:
Jeff Parsons 2017-01-30 13:15:27 -08:00 committed by Jeff Parsons
commit 28856674c2
11 changed files with 832 additions and 479 deletions

View file

@ -26,6 +26,7 @@
</video>
<chipset id="chipset" model="VT100"/>
<keyboard id="keyboard" model="VT100">
<control type="button" binding="caps-lock" padLeft="8px" padBottom="8px">CAPS LOCK</control>
<control type="button" binding="break" padLeft="8px" padBottom="8px">BREAK</control>
<control type="button" binding="ctrl" padLeft="8px" padBottom="8px">CTRL</control>
<control type="button" binding="esc" padLeft="8px" padBottom="8px">ESC</control>

View file

@ -26,6 +26,7 @@
</video>
<chipset id="chipset" model="VT100"/>
<keyboard id="keyboard" model="VT100">
<control type="button" binding="caps-lock" padLeft="8px" padBottom="8px">CAPS LOCK</control>
<control type="button" binding="break" padLeft="8px" padBottom="8px">BREAK</control>
<control type="button" binding="ctrl" padLeft="8px" padBottom="8px">CTRL</control>
<control type="button" binding="esc" padLeft="8px" padBottom="8px">ESC</control>

View file

@ -26,6 +26,7 @@
</video>
<chipset id="chipset" model="VT100"/>
<keyboard id="keyboard" model="VT100">
<control type="button" binding="caps-lock" padLeft="8px" padBottom="8px">CAPS LOCK</control>
<control type="button" binding="break" padLeft="8px" padBottom="8px">BREAK</control>
<control type="button" binding="ctrl" padLeft="8px" padBottom="8px">CTRL</control>
<control type="button" binding="esc" padLeft="8px" padBottom="8px">ESC</control>

View file

@ -28,6 +28,7 @@
<control type="button" binding="reset" padLeft="8px" padBottom="8px">RESET</control>
</cpu>
<keyboard id="keyboard" model="VT100">
<control type="button" binding="caps-lock" padLeft="8px" padBottom="8px">CAPS LOCK</control>
<control type="button" binding="break" padLeft="8px" padBottom="8px">BREAK</control>
<control type="button" binding="ctrl" padLeft="8px" padBottom="8px">CTRL</control>
<control type="button" binding="esc" padLeft="8px" padBottom="8px">ESC</control>

View file

@ -28,6 +28,7 @@
<control type="button" binding="reset">RESET</control>
</cpu>
<keyboard id="keyboard" model="VT100">
<control type="button" binding="caps-lock" padLeft="8px" padBottom="8px">CAPS LOCK</control>
<control type="button" binding="break" padLeft="8px" padBottom="8px">BREAK</control>
<control type="button" binding="ctrl" padLeft="8px" padBottom="8px">CTRL</control>
<control type="button" binding="esc" padLeft="8px" padBottom="8px">ESC</control>

View file

@ -28,6 +28,7 @@
<control type="button" binding="reset" padLeft="8px" padBottom="8px">RESET</control>
</cpu>
<keyboard id="keyboard" model="VT100">
<control type="button" binding="caps-lock" padLeft="8px" padBottom="8px">CAPS LOCK</control>
<control type="button" binding="break" padLeft="8px" padBottom="8px">BREAK</control>
<control type="button" binding="ctrl" padLeft="8px" padBottom="8px">CTRL</control>
<control type="button" binding="esc" padLeft="8px" padBottom="8px">ESC</control>

View file

@ -125,16 +125,57 @@ class Keyboard8080 extends Component {
*
* this.bindings[id] = control;
*/
control.onkeydown = function onKeyDown(event) {
return kbd.onKeyDown(event, true);
};
control.onkeyup = function onKeyUp(event) {
return kbd.onKeyDown(event, false);
};
control.onkeypress = function onKeyPress(event) {
return kbd.onKeyPress(event);
};
control.onpaste = function onKeyPaste(event) {
if (Web.isUserAgent("iOS")) {
/*
* For iOS devices, it's best to deal only with keypress events. The main reason is that we don't
* get shift-key events, so we have no way of distinguishing between certain keys, such as ':' and
* ';', unless we are monitoring key presses. Another reason is that, under certain poorly documented
* conditions, an iOS keyup event will not contain any keyCode; this is most easily reproduced with
* the iOS simulator and a physical keyboard (not the pop-up keyboard). When this happens, we think
* the key is stuck. Finally, certain other problems that we have tried to resolve when using a physical
* keyboard (eg, keeping the physical and virtual CAPS-LOCK states in sync) simply don't exist in the
* iOS environment.
*
* So, with all that mind, it seems best to have a separate iOS keypress handler and forego keydown
* and keyup events entirely. The iOS keypress handler must also perform some additional checks, such
* as watching for keys that can only be typed on the emulated device when a shift key is down, and
* simulating "fake" shift-key down and up events.
*
* Perhaps we can eventually standardize on this alternate keypress-centric approach for ALL devices,
* but until then, it's safer to have these two code paths.
*
* UPDATE: So much for the best laid plans. iOS won't deliver BACKSPACE events to the keypress handler,
* so we have to deal with keydown/keyup events after all.
*/
control.onkeypress = function oniOSKeyPress(event)
{
return kbd.oniOSKeyPress(event);
};
control.onkeydown = function oniOSKeyDown(event)
{
return kbd.oniOSKeyDown(event, true);
};
control.onkeyup = function oniOSKeyUp(event)
{
return kbd.oniOSKeyDown(event, false);
};
}
else {
control.onkeydown = function onKeyDown(event)
{
return kbd.onKeyDown(event, true);
};
control.onkeyup = function onKeyUp(event)
{
return kbd.onKeyDown(event, false);
};
control.onkeypress = function onKeyPress(event)
{
return kbd.onKeyPress(event);
};
}
control.onpaste = function onKeyPaste(event)
{
return kbd.onPaste(event);
};
return true;
@ -403,6 +444,7 @@ class Keyboard8080 extends Component {
* @param {number} keyCode (ie, either a keycode or string ID)
* @param {boolean} fDown (true if key going down, false if key going up)
* @param {boolean} [fRight] (true if key is on the right, false if not or unknown or n/a)
* @return {boolean} (fDown updated as needed for CAPS-LOCK weirdness)
*/
checkModifierKeys(keyCode, fDown, fRight)
{
@ -422,6 +464,16 @@ class Keyboard8080 extends Component {
break;
case Keys.KEYCODE.CAPS_LOCK:
bit = Keyboard8080.STATE.CAPS_LOCK;
/*
* WARNING: You have an entered a browser weirdness zone. In Chrome, pressing-and-releasing
* CAPS-LOCK generates a "down" event when it turns the lock on and an "up" event when it turns
* the lock off. Firefox, OTOH, generates only "down" events, so we have to "manufacture"
* the fDown parameter ourselves -- which means we also have to propagate it back to the caller.
*
* And, while this isn't necessary for Chrome, it doesn't appear to hurt anything in Chrome, so
* we're not going to bother making it browser-specific.
*/
fDown = !(this.bitsState & bit);
break;
}
if (bit) {
@ -431,6 +483,7 @@ class Keyboard8080 extends Component {
this.bitsState &= ~bit;
}
}
return fDown;
}
/**
@ -468,12 +521,19 @@ class Keyboard8080 extends Component {
var fPass = true;
var keyCode = event.keyCode;
/*
* A note about Firefox: it uses different keyCodes for certain keys; there's a logic to the differences
* (they use ASCII codes), but since other browsers didn't follow suit, we must use a mapping table to
* convert their keyCodes to the more traditional values.
*/
keyCode = Keys.FF_KEYCODES[keyCode] || keyCode;
/*
* We now keep track of physical keyboard modifier keys. This makes it possible for new services
* to eventually be implemented (simulateKeysDown() and simulateKeysUp()), to map special ALT-key
* combinations to VT100 keys, etc.
*/
this.checkModifierKeys(keyCode, fDown, event.location == Keys.LOCATION.RIGHT);
fDown = this.checkModifierKeys(keyCode, fDown, event.location == Keys.LOCATION.RIGHT);
var softCode = this.getSoftCode(keyCode);
if (softCode) {
@ -554,21 +614,125 @@ class Keyboard8080 extends Component {
*/
onKeyPress(event)
{
var keyCode = event.keyCode;
if (keyCode >= Keys.ASCII.A && keyCode <= Keys.ASCII.Z) {
/*
* A note about Firefox: the KeyboardEvent they pass to a keypress handler doesn't set 'keyCode', so
* we have to fallback to 'charCode' (or 'which'), both of which are deprecated but realistically can't
* really go away.
*
* TODO: Consider "upgrading" this code to use the new 'key' property. Note, however, that it's a string,
* not a number; for example; if the colon key is pressed, 'key' will be ":", whereas 'charCode' and 'which'
* will be 58.
*/
var charCode = event.keyCode || event.charCode;
if (charCode >= Keys.ASCII.A && charCode <= Keys.ASCII.Z) {
if (!(this.bitsState & (Keyboard8080.STATE.SHIFTS | Keyboard8080.STATE.CAPS_LOCK))) {
this.bitsState |= Keyboard8080.STATE.CAPS_LOCK;
this.onSoftKeyDown(Keys.KEYCODE.CAPS_LOCK, true);
this.updateLEDs();
}
}
else if (keyCode >= Keys.ASCII.a && keyCode <= Keys.ASCII.z) {
else if (charCode >= Keys.ASCII.a && charCode <= Keys.ASCII.z) {
if (this.bitsState & Keyboard8080.STATE.CAPS_LOCK) {
this.bitsState &= ~Keyboard8080.STATE.CAPS_LOCK;
this.onSoftKeyDown(Keys.KEYCODE.CAPS_LOCK, false);
this.updateLEDs();
}
}
if (!COMPILED && this.messageEnabled(Messages8080.KEYS)) {
this.printMessage("onKeyPress(" + charCode + ")", true);
}
return true;
}
/**
* oniOSKeyDown(event, fDown)
*
* @this {Keyboard8080}
* @param {Object} event
* @param {boolean} fDown is true for a keyDown event, false for up
* @return {boolean} true to pass the event along, false to consume it
*/
oniOSKeyDown(event, fDown)
{
var fPass = true;
/*
* Because keydown/keyup events on iOS are inherently "fake", they can be delivered so quickly that
* if we generated matching down/up events, then the emulated machine might not see the key transition.
* So we now deliver only down events, with fAutoRelease always set (see below).
*
* Also, because of iOS weirdness discussed in setBinding() when using a physical keyboard, the keyup
* event may not provide a valid keyCode, which is another reason we have no choice but to always deliver
* keys with fAutoRelease set to true.
*/
if (fDown) {
var keyCode = event.keyCode;
var bMapping = this.config.KEYMAP[keyCode];
if (bMapping) {
/*
* If this is a mappable key, but the mapping isn't in the CHARMAP table, then we have to process
* it now; the most common reason is that the key doesn't generate a keypress event (eg, BACKSPACE).
*/
if (!this.indexOfCharMap(bMapping)) {
fPass = this.onSoftKeyDown(keyCode, fDown, true);
if (!COMPILED && this.messageEnabled(Messages8080.KEYS)) {
this.printMessage("oniOSKey" + (fDown ? "Down" : "Up") + "(" + keyCode + "): pass=" + fPass, true);
}
}
}
}
return fPass;
}
/**
* oniOSKeyPress(event)
*
* @this {Keyboard8080}
* @param {Object} event
* @return {boolean} true to pass the event along, false to consume it
*/
oniOSKeyPress(event)
{
/*
* A note about Firefox: the KeyboardEvent they pass to a keypress handler doesn't set 'keyCode', so
* we have to fallback to 'charCode' (or 'which'), both of which are deprecated but realistically can't
* really go away.
*
* TODO: Consider "upgrading" this code to use the new 'key' property. Note, however, that it's a string,
* not a number; for example; if the colon key is pressed, 'key' will be ":", whereas 'charCode' and 'which'
* will be 58.
*/
var charCode = event.keyCode || event.charCode;
var fShifted = false;
var bMapping = this.config.CHARMAP[charCode];
if (bMapping) {
if (bMapping & 0x80) {
bMapping &= 0x7f;
fShifted = true;
}
/*
* Since the rest of our code was built around keyCodes, not charCodes, we look up the CHARMAP byte
* in the KEYMAP table to find a corresponding keyCode, and that's what we'll use to simulate the key
* press/release.
*/
var softCode = this.indexOfKeyMap(bMapping);
if (softCode) {
if (!fShifted) {
this.onSoftKeyDown(Keys.KEYCODE.SHIFT, false);
} else {
this.onSoftKeyDown(Keys.KEYCODE.SHIFT, true, true);
}
this.onSoftKeyDown(softCode, true, true);
}
}
if (!COMPILED && this.messageEnabled(Messages8080.KEYS)) {
this.printMessage("oniOSKeyPress(" + charCode + ")", true);
}
return true;
}
@ -606,6 +770,36 @@ class Keyboard8080 extends Component {
return true;
}
/**
* indexOfKeyMap(bMapping)
*
* @this {Keyboard8080}
* @param {number} bMapping
* @return {number}
*/
indexOfKeyMap(bMapping)
{
for (var keyCode in this.config.KEYMAP) {
if (this.config.KEYMAP[keyCode] == bMapping) return +keyCode;
}
return 0;
}
/**
* indexOfCharMap(bMapping)
*
* @this {Keyboard8080}
* @param {number} bMapping
* @return {number}
*/
indexOfCharMap(bMapping)
{
for (var charCode in this.config.CHARMAP) {
if (this.config.CHARMAP[charCode] == bMapping) return +charCode;
}
return 0;
}
/**
* indexOfSoftKey(softCode)
*
@ -935,6 +1129,7 @@ Keyboard8080.WASDCODES[Keys.ASCII.L] = Keys.KEYCODE.SPACE;
Keyboard8080.SI1978 = {
MODEL: 1978.1,
KEYMAP: {},
CHARMAP: {},
ALTCODES: Keyboard8080.WASDCODES,
LEDCODES: {},
SOFTCODES: {
@ -951,7 +1146,7 @@ Keyboard8080.VT100 = {
MODEL: 100.0,
KEYMAP: {
/*
* Map of host key codes to VT100 key addresses (7-bit values representing key positions on the VT100).
* Map of host keyCodes to VT100 key addresses (7-bit values representing key positions on the VT100).
*
* NOTE: The VT100 keyboard has both BACKSPACE and DELETE keys, whereas modern keyboards generally only
* have DELETE. And sadly, when you press DELETE, your modern keyboard and/or modern browser is reporting
@ -1048,15 +1243,125 @@ Keyboard8080.VT100 = {
[Keys.KEYCODE.F9]: 0x7B, // aka SET-UP
[Keys.KEYCODE.CTRL]: 0x7C,
[Keys.KEYCODE.SHIFT]: 0x7D, // either shift key (doesn't matter)
[Keys.KEYCODE.CAPS_LOCK]: 0x7E
[Keys.KEYCODE.CAPS_LOCK]:0x7E
},
CHARMAP: {
/*
* Map of host charCodes to VT100 key addresses (7-bit values representing key positions on the VT100);
* the 8th bit (0x80) is set for keys that need to be shifted.
*
* This is currently used only with the iOS keypress handler, which receives character codes rather than
* keyboard codes. As a result, this table is not as complete as the KEYMAP table, because certain keys
* are delivered as key presses and/or are simply not present on the iOS keyboard; the arrow keys are a
* good example.
*
* ES6 ALERT: As you can see below, I've finally started using computed property names.
*/
[Keys.ASCII.p]: 0x05,
[Keys.ASCII.o]: 0x06,
[Keys.ASCII.y]: 0x07,
[Keys.ASCII.t]: 0x08,
[Keys.ASCII.w]: 0x09,
[Keys.ASCII.q]: 0x0A,
[Keys.ASCII[']']]: 0x14,
[Keys.ASCII['[']]: 0x15,
[Keys.ASCII.i]: 0x16,
[Keys.ASCII.u]: 0x17,
[Keys.ASCII.r]: 0x18,
[Keys.ASCII.e]: 0x19,
[Keys.ASCII['1']]: 0x1A,
[Keys.ASCII['`']]: 0x24,
[Keys.ASCII['-']]: 0x25,
[Keys.ASCII['9']]: 0x26,
[Keys.ASCII['7']]: 0x27,
[Keys.ASCII['4']]: 0x28,
[Keys.ASCII['3']]: 0x29,
[Keys.ASCII['=']]: 0x34,
[Keys.ASCII['0']]: 0x35,
[Keys.ASCII['8']]: 0x36,
[Keys.ASCII['6']]: 0x37,
[Keys.ASCII['5']]: 0x38,
[Keys.ASCII['2']]: 0x39,
[Keys.ASCII['\\']]: 0x45,
[Keys.ASCII.l]: 0x46,
[Keys.ASCII.k]: 0x47,
[Keys.ASCII.g]: 0x48,
[Keys.ASCII.f]: 0x49,
[Keys.ASCII.a]: 0x4A,
[Keys.ASCII["'"]]: 0x55,
[Keys.ASCII[';']]: 0x56,
[Keys.ASCII.j]: 0x57,
[Keys.ASCII.h]: 0x58,
[Keys.ASCII.d]: 0x59,
[Keys.ASCII.s]: 0x5A,
[Keys.KEYCODE.CR]: 0x64, // TODO: Figure out why the Technical Manual lists CR at both 0x04 and 0x64
[Keys.ASCII['.']]: 0x65,
[Keys.ASCII[',']]: 0x66,
[Keys.ASCII.n]: 0x67,
[Keys.ASCII.b]: 0x68,
[Keys.ASCII.x]: 0x69,
[Keys.ASCII['/']]: 0x75,
[Keys.ASCII.m]: 0x76,
[Keys.ASCII[' ']]: 0x77,
[Keys.ASCII.v]: 0x78,
[Keys.ASCII.c]: 0x79,
[Keys.ASCII.z]: 0x7A,
[Keys.ASCII.P]: 0x85,
[Keys.ASCII.O]: 0x86,
[Keys.ASCII.Y]: 0x87,
[Keys.ASCII.T]: 0x88,
[Keys.ASCII.W]: 0x89,
[Keys.ASCII.Q]: 0x8A,
[Keys.ASCII['}']]: 0x94,
[Keys.ASCII['{']]: 0x95,
[Keys.ASCII.I]: 0x96,
[Keys.ASCII.U]: 0x97,
[Keys.ASCII.R]: 0x98,
[Keys.ASCII.E]: 0x99,
[Keys.ASCII['!']]: 0x9A,
[Keys.ASCII['~']]: 0xA4,
[Keys.ASCII['_']]: 0xA5,
[Keys.ASCII['(']]: 0xA6,
[Keys.ASCII['&']]: 0xA7,
[Keys.ASCII['$']]: 0xA8,
[Keys.ASCII['#']]: 0xA9,
[Keys.ASCII['+']]: 0xB4,
[Keys.ASCII[')']]: 0xB5,
[Keys.ASCII['*']]: 0xB6,
[Keys.ASCII['^']]: 0xB7,
[Keys.ASCII['%']]: 0xB8,
[Keys.ASCII['@']]: 0xB9,
[Keys.ASCII['|']]: 0xC5,
[Keys.ASCII.L]: 0xC6,
[Keys.ASCII.K]: 0xC7,
[Keys.ASCII.G]: 0xC8,
[Keys.ASCII.F]: 0xC9,
[Keys.ASCII.A]: 0xCA,
[Keys.ASCII['"']]: 0xD5,
[Keys.ASCII[':']]: 0xD6,
[Keys.ASCII.J]: 0xD7,
[Keys.ASCII.H]: 0xD8,
[Keys.ASCII.D]: 0xD9,
[Keys.ASCII.S]: 0xDA,
[Keys.ASCII['>']]: 0xE5,
[Keys.ASCII['<']]: 0xE6,
[Keys.ASCII.N]: 0xE7,
[Keys.ASCII.B]: 0xE8,
[Keys.ASCII.X]: 0xE9,
[Keys.ASCII['?']]: 0xF5,
[Keys.ASCII.M]: 0xF6,
[Keys.ASCII.V]: 0xF8,
[Keys.ASCII.C]: 0xF9,
[Keys.ASCII.Z]: 0xFA
},
ALTCODES: {},
LEDCODES: {},
SOFTCODES: {
'caps-lock': Keys.KEYCODE.CAPS_LOCK,
'ctrl': Keys.KEYCODE.CTRL,
'esc': Keys.KEYCODE.ESC,
'tab': Keys.KEYCODE.TAB,
'num-comma': Keys.KEYCODE.F5,// since modern keypads don't typically have a comma...
'num-comma': Keys.KEYCODE.F5, // since modern keypads don't typically have a comma...
'break': Keys.KEYCODE.F6,
'line-feed': Keys.KEYCODE.F7,
'no-scroll': Keys.KEYCODE.F8,

View file

@ -69,10 +69,10 @@ var Keys = {
* them using ASCII codes (eg, the LEFT arrow key uses the ASCII code for '%' or 37).
*/
KEYCODE: {
/* 0x08 */ BS: 8, // BACKSPACE
/* 0x09 */ TAB: 9,
/* 0x0A */ LF: 10, // LINE FEED (TODO: Determine if any key actually generates this)
/* 0x0D */ CR: 13, // CARRIAGE RETURN
/* 0x08 */ BS: 8, // BACKSPACE (ASCII.CTRL_H)
/* 0x09 */ TAB: 9, // TAB (ASCII.CTRL_I)
/* 0x0A */ LF: 10, // LINE FEED (ASCII.CTRL_J) (TODO: Determine if any key actually generates this)
/* 0x0D */ CR: 13, // CARRIAGE RETURN (ASCII.CTRL_M)
/* 0x10 */ SHIFT: 16,
/* 0x11 */ CTRL: 17,
/* 0x12 */ ALT: 18,
@ -153,17 +153,17 @@ var Keys = {
/* 0x90 */ NUM_LOCK: 144,
/* 0x91 */ SCROLL_LOCK: 145,
/* 0xAD */ FF_DASH: 173,
/* 0xBA */ SEMI: 186, // Firefox: 59
/* 0xBB */ EQUALS: 187, // Firefox: 61
/* 0xBC */ COMMA: 188, // Firefox: 44
/* 0xBD */ DASH: 189, // Firefox: 173
/* 0xBE */ PERIOD: 190, // Firefox: 46
/* 0xBF */ SLASH: 191, // Firefox: 47
/* 0xC0 */ BQUOTE: 192, // Firefox: 96
/* 0xDB */ LBRACK: 219, // Firefox: 91
/* 0xDC */ BSLASH: 220, // Firefox: 92
/* 0xDD */ RBRACK: 221, // Firefox: 93
/* 0xDE */ QUOTE: 222, // Firefox: 39
/* 0xBA */ SEMI: 186, // Firefox: 59 (FF_SEMI)
/* 0xBB */ EQUALS: 187, // Firefox: 61 (FF_EQUALS)
/* 0xBC */ COMMA: 188, // Firefox: 44 (FF_COMMA conflicts with PRTSC)
/* 0xBD */ DASH: 189, // Firefox: 173 (FF_DASH)
/* 0xBE */ PERIOD: 190, // Firefox: 46 (FF_PERIOD conflicts with DEL)
/* 0xBF */ SLASH: 191, // Firefox: 47 (FF_SLASH)
/* 0xC0 */ BQUOTE: 192, // Firefox: 96 (FF_BQUOTE conflicts with NUM_INS)
/* 0xDB */ LBRACK: 219, // Firefox: 91 (FF_LBRACK conflicts with CMD)
/* 0xDC */ BSLASH: 220, // Firefox: 92 (FF_BSLASH)
/* 0xDD */ RBRACK: 221, // Firefox: 93 (FF_RBRACK conflicts with RCMD)
/* 0xDE */ QUOTE: 222, // Firefox: 39 (FF_QUOTE conflicts with RIGHT)
/* 0xE0 */ FF_CMD: 224, // Firefox only (used for both CMD and RCMD)
//
// The following biases use what I'll call Decimal Coded Binary or DCB (the opposite of BCD),
@ -201,8 +201,25 @@ var Keys = {
*/
Keys.KEYCODE.NUM_CR = Keys.KEYCODE.CR + Keys.KEYCODE.ONRIGHT;
/*
* Maps "stupid" keyCodes to their "non-stupid" counterparts
* Maps Firefox keyCodes to their more common counterparts (the inverse of the STUPID_KEYCODES table)
*/
Keys.FF_KEYCODES = {};
Keys.FF_KEYCODES[Keys.ASCII[';']] = Keys.KEYCODE.SEMI; // 59 -> 186
Keys.FF_KEYCODES[Keys.ASCII['=']] = Keys.KEYCODE.EQUALS; // 61 -> 187
Keys.FF_KEYCODES[Keys.ASCII[',']] = Keys.KEYCODE.COMMA; // 44 -> 188
Keys.FF_KEYCODES[Keys.KEYCODE.FF_DASH] = Keys.KEYCODE.DASH; // 173 -> 189
Keys.FF_KEYCODES[Keys.ASCII['.']] = Keys.KEYCODE.PERIOD; // 46 -> 190
Keys.FF_KEYCODES[Keys.ASCII['/']] = Keys.KEYCODE.SLASH; // 47 -> 191
Keys.FF_KEYCODES[Keys.ASCII['`']] = Keys.KEYCODE.BQUOTE; // 96 -> 192
Keys.FF_KEYCODES[Keys.ASCII['[']] = Keys.KEYCODE.LBRACK; // 91 -> 219
Keys.FF_KEYCODES[Keys.ASCII['\\']] = Keys.KEYCODE.BSLASH; // 92 -> 220
Keys.FF_KEYCODES[Keys.ASCII[']']] = Keys.KEYCODE.RBRACK; // 93 -> 221
Keys.FF_KEYCODES[Keys.ASCII["'"]] = Keys.KEYCODE.QUOTE; // 39 -> 222
/*
* Maps "stupid" keyCodes to their "non-stupid" (Firefox) counterparts
*/
Keys.STUPID_KEYCODES = {};
Keys.STUPID_KEYCODES[Keys.KEYCODE.SEMI] = Keys.ASCII[';']; // 186 -> 59

View file

@ -69,10 +69,10 @@ var Keys = {
* them using ASCII codes (eg, the LEFT arrow key uses the ASCII code for '%' or 37).
*/
KEYCODE: {
/* 0x08 */ BS: 8, // BACKSPACE
/* 0x09 */ TAB: 9,
/* 0x0A */ LF: 10, // LINE FEED (TODO: Determine if any key actually generates this)
/* 0x0D */ CR: 13, // CARRIAGE RETURN
/* 0x08 */ BS: 8, // BACKSPACE (ASCII.CTRL_H)
/* 0x09 */ TAB: 9, // TAB (ASCII.CTRL_I)
/* 0x0A */ LF: 10, // LINE FEED (ASCII.CTRL_J) (TODO: Determine if any key actually generates this)
/* 0x0D */ CR: 13, // CARRIAGE RETURN (ASCII.CTRL_M)
/* 0x10 */ SHIFT: 16,
/* 0x11 */ CTRL: 17,
/* 0x12 */ ALT: 18,
@ -153,17 +153,17 @@ var Keys = {
/* 0x90 */ NUM_LOCK: 144,
/* 0x91 */ SCROLL_LOCK: 145,
/* 0xAD */ FF_DASH: 173,
/* 0xBA */ SEMI: 186, // Firefox: 59
/* 0xBB */ EQUALS: 187, // Firefox: 61
/* 0xBC */ COMMA: 188, // Firefox: 44
/* 0xBD */ DASH: 189, // Firefox: 173
/* 0xBE */ PERIOD: 190, // Firefox: 46
/* 0xBF */ SLASH: 191, // Firefox: 47
/* 0xC0 */ BQUOTE: 192, // Firefox: 96
/* 0xDB */ LBRACK: 219, // Firefox: 91
/* 0xDC */ BSLASH: 220, // Firefox: 92
/* 0xDD */ RBRACK: 221, // Firefox: 93
/* 0xDE */ QUOTE: 222, // Firefox: 39
/* 0xBA */ SEMI: 186, // Firefox: 59 (FF_SEMI)
/* 0xBB */ EQUALS: 187, // Firefox: 61 (FF_EQUALS)
/* 0xBC */ COMMA: 188, // Firefox: 44 (FF_COMMA conflicts with PRTSC)
/* 0xBD */ DASH: 189, // Firefox: 173 (FF_DASH)
/* 0xBE */ PERIOD: 190, // Firefox: 46 (FF_PERIOD conflicts with DEL)
/* 0xBF */ SLASH: 191, // Firefox: 47 (FF_SLASH)
/* 0xC0 */ BQUOTE: 192, // Firefox: 96 (FF_BQUOTE conflicts with NUM_INS)
/* 0xDB */ LBRACK: 219, // Firefox: 91 (FF_LBRACK conflicts with CMD)
/* 0xDC */ BSLASH: 220, // Firefox: 92 (FF_BSLASH)
/* 0xDD */ RBRACK: 221, // Firefox: 93 (FF_RBRACK conflicts with RCMD)
/* 0xDE */ QUOTE: 222, // Firefox: 39 (FF_QUOTE conflicts with RIGHT)
/* 0xE0 */ FF_CMD: 224, // Firefox only (used for both CMD and RCMD)
//
// The following biases use what I'll call Decimal Coded Binary or DCB (the opposite of BCD),
@ -202,7 +202,23 @@ var Keys = {
Keys.KEYCODE.NUM_CR = Keys.KEYCODE.CR + Keys.KEYCODE.ONRIGHT;
/*
* Maps "stupid" keyCodes to their "non-stupid" counterparts
* Maps Firefox keyCodes to their more common counterparts (the inverse of the STUPID_KEYCODES table)
*/
Keys.FF_KEYCODES = {};
Keys.FF_KEYCODES[Keys.ASCII[';']] = Keys.KEYCODE.SEMI; // 59 -> 186
Keys.FF_KEYCODES[Keys.ASCII['=']] = Keys.KEYCODE.EQUALS; // 61 -> 187
Keys.FF_KEYCODES[Keys.ASCII[',']] = Keys.KEYCODE.COMMA; // 44 -> 188
Keys.FF_KEYCODES[Keys.KEYCODE.FF_DASH] = Keys.KEYCODE.DASH; // 173 -> 189
Keys.FF_KEYCODES[Keys.ASCII['.']] = Keys.KEYCODE.PERIOD; // 46 -> 190
Keys.FF_KEYCODES[Keys.ASCII['/']] = Keys.KEYCODE.SLASH; // 47 -> 191
Keys.FF_KEYCODES[Keys.ASCII['`']] = Keys.KEYCODE.BQUOTE; // 96 -> 192
Keys.FF_KEYCODES[Keys.ASCII['[']] = Keys.KEYCODE.LBRACK; // 91 -> 219
Keys.FF_KEYCODES[Keys.ASCII['\\']] = Keys.KEYCODE.BSLASH; // 92 -> 220
Keys.FF_KEYCODES[Keys.ASCII[']']] = Keys.KEYCODE.RBRACK; // 93 -> 221
Keys.FF_KEYCODES[Keys.ASCII["'"]] = Keys.KEYCODE.QUOTE; // 39 -> 222
/*
* Maps "stupid" keyCodes to their "non-stupid" (Firefox) counterparts
*/
Keys.STUPID_KEYCODES = {};
Keys.STUPID_KEYCODES[Keys.KEYCODE.SEMI] = Keys.ASCII[';']; // 186 -> 59

View file

@ -29,263 +29,268 @@
http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/computer.js (C) Jeff Parsons 2012-2017
*/
var k;function ba(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}
var m={me:0,pe:1,qe:2,re:3,se:4,te:5,ue:6,ve:7,we:8,xe:9,ye:10,ze:11,Ae:12,Be:13,Ce:14,De:15,Ee:16,Fe:17,Ge:18,He:19,Ie:20,Je:21,Ke:22,Le:23,Me:24,Ne:25,Oe:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,qb:65,sc:66,uc:67,Sb:68,E:69,yc:70,zc:71,Ac:72,Bc:73,Ic:74,Jc:75,Vb:76,Qc:77,Rc:78,Tc:79,Uc:80,Q:81,$c:82,cd:83,jd:84,kd:85,ld:86,md:87,
od:88,pd:89,Eb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,qd:97,xf:98,yf:99,d:100,e:101,zf:102,Af:103,Bf:104,Cf:105,Df:106,k:107,Ef:108,Ff:109,n:110,Gf:111,p:112,q:113,r:114,Hf:115,t:116,Jf:117,Kf:118,Lf:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Pe:127};
function n(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.cc=b.comment;this.xd=b;this.exports={};this.P=this.bindings={};a=this.id.indexOf(".");0>a?this.ab=this.id:(this.bb=this.id.substr(0,a),this.ab=this.id.substr(a+1));this.G={ready:!1,kb:!1,Fb:!1,ja:!1,error:!1};this.wb=null;this.G.error=!1;this.ha=c||0;this.K=this.u=this.H=this.R=this.ta=null;ca.push(this)}function da(a,b,c){ea[a]&&b&&(ea[a][b]=c)}function fa(){return Date.now()||+new Date}
function ga(a,b,c){b||q((c?c+": ":"")+a)}function q(a){window&&window.alert(a)}function ha(a){var b=!1;window&&(b=window.confirm(a));return b}function ja(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<ca.length;b++){var d=ca[b];a&&d.id.indexOf(a)||c.push(d)}return c}function ka(a){if(void 0!==a){var b;for(b=0;b<ca.length;b++)if(ca[b].id===a)return ca[b]}return null}
function la(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<ca.length;d++)if(c)c==ca[d]&&(c=null);else if(!(a!=ca[d].type||b&&ca[d].id.indexOf(b)))return ca[d]}return null}function na(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){q(c.message+" ("+a+")")}return b}
function oa(a,b){b=pa(b.parentNode,"pc8080-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){var g=f.getAttribute("class");if(g)for(var h=g.split(" "),l=0;l<h.length;l++)switch(g=h[l],g){case "pc8080-binding":(g=na(f))&&g.binding&&a.ca(g.type,g.binding,f,g.value),l=h.length}}}}
function pa(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}k=n.prototype;k.toString=function(){return this.name?this.name:this.id||this.type};
k.ca=function(a,b,c){switch(b){case "clear":return this.P[b]||(this.P[b]=c,c.onclick=function(a){return function(){a.P.print&&(a.P.print.value="")}}(this)),!0;case "print":return this.P[b]||(this.ta=this.P[b]=c,c.value="",this.i=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),this.aa=function(a){this.i(a,this.ab)}),!0;default:return!1}};k.log=function(){};k.i=function(){};
k.status=function(a){this.i(this.ab+": "+a)};k.aa=function(a,b,c){ga(a,b,c||this.type)};function qa(a,b){a.G.error=!0;a.aa(b)}function ra(a,b){b&&(a.G.ready?b():a.wb=b);return a.G.ready}function sa(a){if(!a.G.error&&(a.G.ready=!0,a.G.ready)){var b=a.wb;a.wb=null;b&&b()}}function ua(a,b){a.G.kb&&(b?a.G.Fb=!0:void 0===b&&a.i(a.toString()+" busy"));return a.G.kb}function va(a,b){if(a.G.Fb)return a.G.kb=!1,a.G.Fb=!1;if(a.G.error)return a.i(a.toString()+" error"),!1;a.G.kb=b;return a.G.kb}
k.va=function(){return this.G.ja=!0};k.ua=function(a,b){b&&(this.G.ja=!1);return!0};function wa(a,b){if(a.K){a===a.K?b|=0:b=b||a.ha;var c=a.K.ha&b;return!!b&&c===b||!!(c&a.K.ud)}return!1}function xa(a,b){a.K&&wa(a,0)&&a.K.message(b,void 0)}function v(a,b,c,d,e,f,g){a.K&&(!0===g?g=0:null==g&&(g=a.ha),za(a.K,a,b,c,d,e,f,g))}window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]));
var ea=window?window.PCjs.Machines:{},ca=window?window.PCjs.Components:[];Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
var k;function aa(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}
var l={Be:0,Ee:1,Fe:2,Ge:3,He:4,Ie:5,Je:6,Ke:7,Le:8,Me:9,Ne:10,Oe:11,Pe:12,Qe:13,Re:14,Se:15,Te:16,Ue:17,Ve:18,We:19,Xe:20,Ye:21,Ze:22,$e:23,af:24,bf:25,cf:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,ab:65,Ub:66,Vb:67,Fb:68,E:69,Yb:70,Zb:71,$b:72,ac:73,bc:74,cc:75,Hb:76,gc:77,hc:78,lc:79,mc:80,Q:81,nc:82,pc:83,qc:84,rc:85,tc:86,uc:87,
wc:88,xc:89,wb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,yc:97,ud:98,xd:99,d:100,e:101,Bd:102,Dd:103,Ed:104,Fd:105,Od:106,k:107,Pd:108,Rd:109,n:110,Sd:111,p:112,q:113,r:114,oe:115,t:116,pe:117,qe:118,re:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,df:127},ca={};ca[l[";"]]=186;ca[l["="]]=187;ca[l[","]]=188;ca[173]=189;ca[l["."]]=190;ca[l["/"]]=191;ca[l["`"]]=192;ca[l["["]]=219;ca[l["\\"]]=220;ca[l["]"]]=221;ca[l["'"]]=222;
function n(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.vc=b.comment;this.Ad=b;this.exports={};this.P=this.bindings={};a=this.id.indexOf(".");0>a?this.cb=this.id:(this.eb=this.id.substr(0,a),this.cb=this.id.substr(a+1));this.G={ready:!1,mb:!1,Ib:!1,ja:!1,error:!1};this.zb=null;this.G.error=!1;this.ha=c||0;this.K=this.u=this.H=this.R=this.ta=null;da.push(this)}function ea(a,b,c){fa[a]&&b&&(fa[a][b]=c)}function ga(){return Date.now()||+new Date}
function ha(a,b,c){b||p((c?c+": ":"")+a)}function p(a){window&&window.alert(a)}function ia(a){var b=!1;window&&(b=window.confirm(a));return b}function ka(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<da.length;b++){var d=da[b];a&&d.id.indexOf(a)||c.push(d)}return c}function la(a){if(void 0!==a){var b;for(b=0;b<da.length;b++)if(da[b].id===a)return da[b]}return null}
function ma(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<da.length;d++)if(c)c==da[d]&&(c=null);else if(!(a!=da[d].type||b&&da[d].id.indexOf(b)))return da[d]}return null}function oa(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){p(c.message+" ("+a+")")}return b}
function pa(a,b){b=qa(b.parentNode,"pc8080-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){var g=f.getAttribute("class");if(g)for(var h=g.split(" "),m=0;m<h.length;m++)switch(g=h[m],g){case "pc8080-binding":(g=oa(f))&&g.binding&&a.ca(g.type,g.binding,f,g.value),m=h.length}}}}
function qa(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}k=n.prototype;k.toString=function(){return this.name?this.name:this.id||this.type};
k.ca=function(a,b,c){switch(b){case "clear":return this.P[b]||(this.P[b]=c,c.onclick=function(a){return function(){a.P.print&&(a.P.print.value="")}}(this)),!0;case "print":return this.P[b]||(this.ta=this.P[b]=c,c.value="",this.i=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),this.aa=function(a){this.i(a,this.cb)}),!0;default:return!1}};k.log=function(){};k.i=function(){};
k.status=function(a){this.i(this.cb+": "+a)};k.aa=function(a,b,c){ha(a,b,c||this.type)};function ra(a,b){a.G.error=!0;a.aa(b)}function sa(a,b){b&&(a.G.ready?b():a.zb=b);return a.G.ready}function ta(a){if(!a.G.error&&(a.G.ready=!0,a.G.ready)){var b=a.zb;a.zb=null;b&&b()}}function ua(a,b){a.G.mb&&(b?a.G.Ib=!0:void 0===b&&a.i(a.toString()+" busy"));return a.G.mb}function wa(a,b){if(a.G.Ib)return a.G.mb=!1,a.G.Ib=!1;if(a.G.error)return a.i(a.toString()+" error"),!1;a.G.mb=b;return a.G.mb}
k.va=function(){return this.G.ja=!0};k.ua=function(a,b){b&&(this.G.ja=!1);return!0};function xa(a,b){if(a.K){a===a.K?b|=0:b=b||a.ha;var c=a.K.ha&b;return!!b&&c===b||!!(c&a.K.wd)}return!1}function ya(a,b){a.K&&xa(a,0)&&a.K.message(b,void 0)}function q(a,b,c,d,e,f,g){a.K&&(!0===g?g=0:null==g&&(g=a.ha),za(a.K,a,b,c,d,e,f,g))}window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]));
var fa=window?window.PCjs.Machines:{},da=window?window.PCjs.Components:[];Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
Function.prototype.bind||(Function.prototype.bind=function(a){function b(){return e.apply(this instanceof c&&a?this:a,d.concat(Array.prototype.slice.call(arguments)))}function c(){}if("function"!=typeof this)throw new TypeError("Function.prototype.bind: non-callable object");var d=Array.prototype.slice.call(arguments,1),e=this;c.prototype=this.prototype;b.prototype=new c;return b});
function Ba(a,b){var c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var f,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):2==e&&
d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}function Ca(a,b,c){var d="";b?11<b&&(b=11):b=a&-16777216?11:a&-65536?8:6;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;)d=String.fromCharCode((a&7)+48)+d,a>>=3;return(c?"0o":"")+d}function x(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}
function Da(a){return x(a,2,!0)}function y(a){return x(a,4,!0)}function Ea(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function Fa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function Ga(){var a=Ha();return-1!==a.indexOf("pcjs.org",a.length-8)}function Ia(a){return a.replace(/[&<>"']/g,function(a){return Ja[a]})}function Ka(a,b){return(a+" ").slice(0,b)}
function Na(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Ja={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"},Oa={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"};
function Pa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var g=d+e>>1,h;h=c(b,a[g]);0<h?d=g+1:(e=g,f=!h)}return f?d:~d}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){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
f,e))});if(b&&"object"==typeof b){var l="",p;for(p in b)b.hasOwnProperty(p)&&(l&&(l+="&"),l+=p+"="+encodeURIComponent(b[p]));l=l.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(l)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g}
function Ta(a,b){var c,d={ma:null,ra:null,Qa:null,Ia:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Qa=g.load;d.Ia=g.exec;if(e=g.bytes)d.ma=e;else if(e=g.words)for(d.ma=Array(2*e.length),f=c=0;c<e.length;c++)d.ma[f++]=e[c]&255,d.ma[f++]=e[c]>>8&255;else if(e=g.data)for(d.ma=Array(4*e.length),f=c=0;c<e.length;c++)d.ma[f++]=
e[c]&255,d.ma[f++]=e[c]>>8&255,d.ma[f++]=e[c]>>16&255,d.ma[f++]=e[c]>>24&255;else d.ma=g;d.ra=g.symbols;d.ma.length?1==d.ma.length&&(q(d.ma[0]),d=null):(q("Empty resource: "+a),d=null)}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){q("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.ma=e)}return d}
function Ha(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Ua(){return window?window.navigator.userAgent:""}function Va(){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 $a(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function ab(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function bb(a){if(window){var b=Ua();return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1}function cb(a){if(!db){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}db=c}return db[a]}
function eb(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}function fb(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}function gb(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}
function hb(a){ib.init.push(a)}function kb(a){if(lb)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){ga("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function mb(a){!lb&&a?(lb=!0,nb&&ob("init"),pb&&ob("show")):lb=a}function ob(a){ib[a]&&kb(ib[a])}var db=null,ib={init:[],show:[],exit:[]},nb=!1,pb=!1,lb=!0,Wa=null;gb("onload",function(){nb=!0;kb(ib.init)});gb("onpageshow",function(){pb=!0;kb(ib.show)});
gb(bb("Opera")||bb("iOS")?"onunload":"onbeforeunload",function(){kb(ib.exit)});
var qb="undefined"!==typeof ArrayBuffer,rb=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1],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){n.call(this,"Panel",a)}ba(ub,n);
ub.prototype.ca=function(a,b,c,d){return this.R&&this.R.ca(a,b,c,d)||this.u&&this.u.ca(a,b,c,d)||this.B&&this.B.ca(a,b,c,d)||this.K&&this.K.ca(a,b,c,d)?!0:n.prototype.ca.call(this,a,b,c,d)};ub.prototype.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;this.B=vb(a,"Keyboard")};ub.prototype.va=function(a,b){b||wb();return!0};ub.prototype.ua=function(){return!0};
function wb(){for(var a=!1,b=pa(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=na(d),f=ka(e.id);f||(a=!0,f=new ub(e));oa(f,d);a&&sa(f)}}hb(wb);
function xb(a,b,c){n.call(this,"Bus",a);this.u=b;this.K=c;this.M=a.busWidth||16;this.N=Math.pow(2,this.M);this.C=this.N-1|0;this.g=(this.M>>1)+2;10>this.g&&(this.g=10);15<this.g&&(this.g=15);this.w=1<<this.g;this.O=this.w>>2;this.j=this.w-1;this.L=this.N/this.w|0;this.I=this.L-1;this.A=[];this.B=[];this.D=this.F=!1;this.S=[];this.T=[];a=new z;yb(a,this.K);this.b=Array(this.L);for(b=0;b<this.L;b++)this.b[b]=a;sa(this)}ba(xb,n);xb.prototype.reset=function(){};
xb.prototype.va=function(a,b){b||this.reset();return!0};function zb(a,b,c,d){for(var e=b,f=c,g=e>>>a.g;0<f&&g<a.b.length;){var h=a.b[g],l=g*a.w,p=a.w-(e-l);p>f&&(p=f);if(h&&h.size){if(h.type==d){if(e+f<=h.J)return h.nb+=h.J-e,h.J=e,!0;if(e>=h.J+h.nb){p=h.size-(e-l);p>f&&(p=f);h.nb=e-h.J+p;e=l+a.w;f-=p;g++;continue}}return Ab(Bb,e,f)}e=new z(e,p,a.w,d);yb(e,a.K,h);a.b[g++]=e;e=l+a.w;f-=p}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Cb[d]+" at "+y(b)),!0):Ab(Db,b,c)}
function Eb(a,b){return a.b[(b&a.C)>>>a.g].mb(b&a.j,b)}function Fb(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].lc(c,b):a.b[d++].Xa(c,b)|a.b[d&a.I].Xa(0,b+1)<<8}function Gb(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].Kb(c,b):a.b[d++].mb(c,b)|a.b[d&a.I].mb(0,b+1)<<8}function Hb(a,b,c){a.b[(b&a.C)>>>a.g].ob(b&a.j,c&255,b)}function Ib(a,b,c){var d=b&a.j,e=(b&a.C)>>>a.g;d!=a.j?a.b[e].oc(d,c&65535,b):(a.b[e++].Za(d,c&255,b),a.b[e&a.I].Za(0,c>>8&255,b+1))}
function Jb(a){for(var b=0,c=[],d=0;d<a.L;d++){var e=a.b[d];if(e.Ca||e.hc){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,l=[];g<e.length;){for(var p=e[g],r=g+1;r<e.length&&e[r]===p;)r++;l[h++]=r-g;l[h++]=p;g=r}l.length<e.length&&(e=l)}c[f]=e}}return c}function Mb(a,b){if(void 0===b)return a.D=!a.D,a.D;void 0===a.A[b]&&(a.A[b]=[null,!1]);a.A[b][1]=!a.A[b][1];return a.A[b][1]}
function Nb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var l=+e+d;l<=g;l++)void 0!==f.A[l]?q("Input port "+y(l)+" already registered"):f.A[l]=[h,!1]}}function Ob(a,b,c){for(var d=1,e=0,f=0;0<d;){var g=a.A[b],h=a.S[b]||1,l=1==h?255:2==h?65535:-1,p=l;void 0!==g?(g[0]&&(p=g[0](b,c),void 0===p?p=l:p&=l),a.K&&a.D!=g[1]&&Pb(a.K,b,p)):a.K&&(za(a.K,a,b,null,c),a.D&&Pb(a.K,b,p));e|=p<<f;f+=h<<3;b+=h;d-=h}return e}
function Qb(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function Rb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var l=+e+d;l<=g;l++)void 0!==f.B[l]?q("Output port "+y(l)+" already registered"):f.B[l]=[h,!1]}}
function Sb(a,b,c,d){for(var e=1,f=0;0<e;){var g=a.B[b],h=a.T[b]||1,l=1==h?255:2==h?65535:-1,l=(c>>>=f)&l;if(void 0!==g){if(g[0])g[0](b,l,d);a.K&&a.F!=g[1]&&Tb(a.K,b,l)}else a.K&&(za(a.K,a,b,l,d),a.F&&Tb(a.K,b,l));f+=h<<3;b+=h;e-=h}}function Ab(a,b,c){q("Memory block error ("+a+": "+x(b)+","+x(c)+")");return!1}var Bb=1,Db=2,Ub;if(qb){var Vb=new ArrayBuffer(2);(new DataView(Vb)).setUint16(0,256,!0);Ub=256===(new Uint16Array(Vb))[0]}else Ub=!1;var Wb=Ub;
function z(a,b,c,d){this.id=Xb+=2;this.b=null;this.J=a;this.nb=b;this.size=c||0;this.type=d||Yb;this.u=d==Zb;yb(this);this.Ca=this.hc=!1;if(c)if(qb)this.j=new ArrayBuffer(c),this.R=new DataView(this.j,0,c),this.g=new Uint8Array(this.j,0,c),this.w=new Uint16Array(this.j,0,c>>1),this.b=new Int32Array(this.j,0,c>>2),$b(this,Wb?ac:bc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;$b(this,dc)}else $b(this)}k=z.prototype;
k.save=function(){var a,b;if(qb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.R.getInt32(b<<2,!0);else a=this.b;return a};k.restore=function(a){if(a&&this.size==a.length<<2){var b;if(qb)for(b=0;b<a.length;b++)this.R.setInt32(b<<2,a[b],!0);else this.b=a;return this.Ca=!0}return!1};function $b(a,b){b||(b=ec);fc(a,b,void 0);gc(a,b,void 0)}function fc(a,b,c){c&&a.H||(a.Xa=b[0]||a.kc,a.lc=b[2]||a.mc);if(c||void 0===c)a.mb=b[0]||a.kc,a.Kb=b[2]||a.mc}
function gc(a,b,c){c&&a.P||(a.Za=!a.u&&b[1]||a.pb,a.oc=!a.u&&b[3]||a.Ob);if(c||void 0===c)a.ob=b[1]||a.pb,a.Pb=b[3]||a.Ob}k.Pa=function(a,b){b?this.P++||gc(this,qc,!1):this.H++||fc(this,qc,!1)};function rc(a,b){b?--a.P||(a.Za=a.u?a.pb:a.ob,a.oc=a.u?a.Ob:a.Pb):--a.H||(a.Xa=a.mb,a.lc=a.Kb)}function yb(a,b,c){a.K=b;a.H=a.P=0;c&&((a.H=c.H)&&fc(a,qc,!1),(a.P=c.P)&&gc(a,qc,!1))}k.kc=function(){this.K&&wa(this.K,129)&&this.K.message("attempt to read invalid block %"+x(this.J),!0);return 255};
k.pb=function(a,b){this.K&&wa(this.K,129)&&this.K.message("attempt to write "+y(b)+" to invalid block %"+x(this.J),!0)};k.mc=function(a,b){return this.Xa(a++,b++)|this.Xa(a,b)<<8};k.Ob=function(a,b,c){this.Za(a++,b&255,c++);this.Za(a,b>>8,c)};k.Yd=function(a){return this.b[a>>2]>>>((a&3)<<3)&255};k.be=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};k.ge=function(a,b){var c=a>>2;a=(a&3)<<3;this.b[c]=this.b[c]&~(255<<a)|b<<a;this.Ca=!0};
k.ke=function(a,b){var c=a>>2;a=(a&3)<<3;24>a?this.b[c]=this.b[c]&~(65535<<a)|b<<a:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.Ca=!0};k.Wd=function(a,b){if(this.K&&null!=this.J){var c=this.K;sc(c,this.J+a,1,c.I)&&c.da(!0)}return this.mb(a,b)};k.$d=function(a,b){if(this.K&&null!=this.J){var c=this.K;sc(c,this.J+a,2,c.I)&&c.da(!0)}return this.Kb(a,b)};
k.ee=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;sc(d,this.J+a,1,d.w)&&d.da(!0)}this.u?this.pb(0,b):this.ob(a,b,c)};k.ie=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;sc(d,this.J+a,2,d.w)&&d.da(!0)}this.u?this.pb(0,b):this.Pb(a,b,c)};k.Vd=function(a){return this.g[a]};k.Xd=function(a){return this.g[a]};k.Zd=function(a){return this.R.getUint16(a,!0)};k.ae=function(a){return a&1?this.g[a]|this.g[a+1]<<8:this.w[a>>1]};k.de=function(a,b){this.g[a]=b;this.Ca=!0};
k.fe=function(a,b){this.g[a]=b;this.Ca=!0};k.he=function(a,b){this.R.setUint16(a,b,!0);this.Ca=!0};k.je=function(a,b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.w[a>>1]=b;this.Ca=!0};var Yb=0,Zb=2,Cb=["NONE","RAM","ROM","VID","H/W"],Xb=0,ec=[],dc=[z.prototype.Yd,z.prototype.ge,z.prototype.be,z.prototype.ke],qc=[z.prototype.Wd,z.prototype.ee,z.prototype.$d,z.prototype.ie];if(qb)var bc=[z.prototype.Vd,z.prototype.de,z.prototype.Zd,z.prototype.he],ac=[z.prototype.Xd,z.prototype.fe,z.prototype.ae,z.prototype.je];
function tc(a,b){n.call(this,"CPU",a,1);var c=a.multiplier||1;this.Fa=a.cycles||b;this.U=c;this.Sa=Math.round(this.Fa/1E4)/100;this.Z=this.Sa*this.U;this.G.ka=!1;this.G.Nb=!1;this.G.jb=a.autoStart;this.G.fc=!1;this.G.Va=!1;this.ya=this.oa=0;this.za=a.csStart;this.na=a.csInterval;this.sa=a.csStop;this.T=[];this.Ab=this.rb.bind(this);sa(this)}ba(tc,n);k=tc.prototype;
k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.K=d;for(b=0;b<uc.length;b++)(c=this.P[uc[b]])&&this.R.ca(null,uc[b],c);this.W=vb(a,"ChipSet");a=vc(a,"autoStart");null!=a&&(this.G.jb="true"==a?!0:"false"==a?!1:!!a);sa(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
k.va=function(a,b){if(!b){if(a&&this.restore){wc(this);if(!this.restore(a))return!1;xc(this)}else this.reset();this.K?(a=this.K,a.i("Type ? for help with PC8080 Debugger commands"),yc(a),a.ea&&(b=a.ea,a.ea=null,zc(a,b))):this.i("No debugger detected")}Ac(this);return!0};k.ua=function(a){return a?this.save():!0};k.jb=function(){return this.G.jb||!this.K&&void 0===this.P.run?(this.rb(),!0):!1};k.ic=function(){return 0};
function xc(a){void 0===a.za&&(a.za=0);void 0===a.na&&(a.na=-1);void 0===a.sa&&(a.sa=-1);a.G.Va=0<=a.za&&0<a.na;a.G.Va&&(a.ya=0,a.oa=a.za-a.la)}function Bc(a,b){if(a.G.Va){var c=!1;a.ya=a.ya+a.ic()|0;a.oa-=b;0>=a.oa&&(a.oa+=a.na,c=!0);0<=a.sa&&a.sa<=Cc(a)&&(a.na=a.sa=-1,xc(a),a.da(),c=!0);c&&a.i(Cc(a)+" cycles: checksum="+x(a.ya))}}
k.ca=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.P[b]=c;a=!0;break;case "run":this.P[b]=c;c.onclick=function(){var a;if(a=d.R)if(a=d.R,a.G.ja)a=!0;else{var b=null,c,h=ja(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.G.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.G.ja);c++);c==h.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.G.ready?"powered yet":"ready yet"+(b.wb?" (waiting for notification)":""))+".");a=!1}a&&(d.G.ka?d.da():d.rb())};
a=!0;break;case "speed":this.P[b]=c;a=!0;break;case "setSpeed":this.P[b]=c,c.onclick=function(){Dc(d,d.U<<1,!0)},c.textContent=this.Z.toFixed(2)+"Mhz",a=!0}return a};function Ec(a,b,c){a.la+=b;c&&(a.ga=a.b=0)}function Fc(a,b){var c=1;b&&1<a.U&&a.Y&&(c=a.Y/a.Sa);a.hb=Math.round(1E3/Gc);a.Na=Math.floor(a.Fa/Gc*c);b||(a.wa=a.Na);a.Ua=0}function Cc(a){return a.la+a.X+a.ga-a.b}function wc(a){a.Y=0;a.ib=0;a.la=a.X=a.ga=a.b=0;xc(a);Dc(a,1)}
function Dc(a,b,c){var d=!1;if(void 0!==b){.8>a.Y/a.Z?b=1:d=!0;a.U=b;b=a.Sa*a.U;if(a.Z!=b){a.Z=b;b=a.Z.toFixed(2)+"Mhz";var e=a.P.setSpeed;e&&(e.textContent=b);a.i("target speed: "+b)}c&&a.R&&a.R.Ya()}Ec(a,a.X);a.X=0;a.V=fa();a.ea=0;Fc(a);return d}function Hc(a,b){var c=a.T.length;a.T.push([-1,b]);return c}function Ic(a,b,c){0<=b&&b<a.T.length&&0>a.T[b][0]&&(c*=a.Fa*a.U/1E3,a.T[b][0]=c+Jc(a))}function Jc(a,b){var c=a.ga-=a.b;a.b=0;b&&(a.ga=0);return c}
k.rb=function(a){if(va(this,!0)){if(!this.G.ka){Dc(this);this.R&&this.R.start(this.V,Cc(this));this.G.ka=!0;this.G.Nb=!0;this.W&&this.W.start();var b=this.P.run;b&&(b.textContent="Halt");this.R&&(Kc(this.R,!0),a&&this.R.Ya(!0))}this.Ua>=this.Fa&&Fc(this,!0);this.Ha=0;this.Ma=fa();this.ea&&(a=this.Ma-this.ea,a>this.hb&&(this.V+=a,this.V>this.Ma&&(this.V=this.Ma)));try{do{for(var c,d=this.G.Va?1:this.Na,e=this.T.length-1;0<=e;e--){var f=this.T[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.Bb(c);c=Jc(this,!0);
this.Ha+=c;this.X+=c;Bc(this,c);a=c;for(var g=this.T.length-1;0<=g;g--){var h=this.T[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.wa-=c;if(0>=this.wa){this.wa+=this.Na;++this.ib>=Lc&&(this.R&&Kc(this.R),this.ib=0);break}}while(this.G.ka)}catch(l){this.da();Ac(this);this.R&&this.R.stop(fa(),Cc(this));va(this,!1);qa(this,l.stack||l.message);return}c=setTimeout;d=this.Ab;this.ea=fa();e=this.hb;this.Ha&&(e=Math.round(e*this.Ha/this.Na));e-=this.ea-this.Ma;if(f=this.ea-this.V)this.Y=Math.round(this.X/
(10*f))/100,864E5<=f&&(this.la=0,Dc(this));if(0>e||this.Y<this.Z)-1E3>e&&(this.V-=e),e=0;this.Ua+=this.Ha;this.ea+=e;c(d,e)}else Ac(this),this.R&&this.R.stop(fa(),Cc(this))};k.Bb=function(){return 0};k.da=function(a){ua(this,!0);Jc(this);Ec(this,this.X);this.X=0;if(this.G.ka){this.G.ka=!1;this.W&&this.W.stop();var b=this.P.run;b&&(b.textContent="Run")}this.G.complete=a};function Ac(a,b){if(a.R){for(var c=a.R,d=0;d<c.A.length;d++)Mc(c.A[d],b);Kc(a.R,b)}}var Gc=30,Lc=15,uc=["power","reset"];
function Nc(a){var b=+a.model||8080;tc.call(this,a,1E6);this.ub=b;this.eb=Oc;wc(this);this.G.complete=this.G.wd=!1;this.gb=0;this.La=[];this.fb=0;Pc(this)}ba(Nc,tc);function Qc(a,b){a.La.push(b)}k=Nc.prototype;k.reset=function(){this.G.ka&&this.da();Pc(this);wc(this);this.G.error=!1;tc.prototype.reset.call(this)};function Pc(a){a.g=0;a.w=0;a.A=0;a.B=0;a.C=0;a.D=0;a.F=0;a.M=0;C(a,a.fb);Rc(a,0);a.S=0}function Sc(a,b){a.fb=b;C(a,b)}
k.ic=function(){var a=this.g+this.w+this.A+this.B+this.C+this.D+this.F|0;return a=a+this.M+this.j+Tc(this)|0};k.save=function(){var a=new Uc(this);a.set(0,[this.g,this.w,this.A,this.B,this.C,this.D,this.F,this.M,this.j,Tc(this)]);a.set(1,[this.S,this.la,this.U]);a.set(2,Jb(this.H));return a.data()};
k.restore=function(a){var b=a[0];this.g=b[0];this.w=b[1];this.A=b[2];this.B=b[3];this.C=b[4];this.D=b[5];this.F=b[6];this.M=b[7]&65535;C(this,b[8]);Rc(this,b[9]);b=a[1];this.S=b[0];this.la=b[1];Dc(this,b[3]);a:{b=this.H;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.O){for(var f=0,g=Array(b.O),h=0;h<e.length-1;)for(var l=e[h++],p=e[h++];l--;)g[f++]=p;e=g}f=b.b[d];if(!f||!f.restore(e)){q("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
k.ca=function(a,b,c){switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.P[b]=c;this.gb++;a=!0;break;default:a=tc.prototype.ca.call(this,a,b,c)}return a};function Vc(a){return a.w<<8|a.A}function hd(a,b){a.w=b>>8&255;a.A=b&255}function id(a){return a.B<<8|a.C}function jd(a,b){a.B=b>>8&255;a.C=b&255}function D(a){return a.D<<8|a.F}
function kd(a,b){a.D=b>>8&255;a.F=b&255}function C(a,b){a.j=b&65535}function ld(a){return a.I&256?1:0}function md(a,b){a.I=a.I&255|b}function nd(a){return rb[a.L&255]?4:0}function od(a){return(a.L^a.O)&16?16:0}function pd(a){return a.I&255?0:64}function qd(a){return a.L&128?128:0}function Tc(a){return a.N&-214|qd(a)|pd(a)|od(a)|nd(a)|ld(a)}function Rc(a,b){a.I=a.L=a.O=0;b&1&&(a.I|=256);b&4||(a.L|=1);b&16&&(a.O|=16);b&64||(a.I|=255);b&128&&(a.L^=192);a.N=a.N&-726|b&512|2}
function rd(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b)&255}function sd(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?1:0))&255}function td(a,b){a.I=a.L=a.O=a.g&b;(a.g|b)&8&&(a.O^=16);return a.I}function ud(a,b){a.O=b^255;b=a.L=b+255&255;a.I=a.I&-256|b;return b}function vd(a,b){a.O=b;b=a.L=b+1&255;a.I=a.I&-256|b;return b}function wd(a,b){return a.L=a.I=a.O=a.g|b}function E(a,b){b^=255;a.O=a.g^b;return a.L=(a.I=a.g+b+1^256)&255}
function xd(a,b){b^=255;a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?0:1)^256)&255}function yd(a,b){return a.L=a.I=a.O=a.g^b}function F(a,b){a=a.H;return a.b[(b&a.C)>>>a.g].Xa(b&a.j,b)}function zd(a,b,c){a=a.H;a.b[(b&a.C)>>>a.g].Za(b&a.j,c&255,b)}function G(a){var b=F(a,a.j);C(a,a.j+1);return b}function H(a){var b=Fb(a.H,a.j);C(a,a.j+2);return b}function Ad(a){var b=Fb(a.H,a.M);a.M=a.M+2&65535;return b}function I(a,b){a.M=a.M-2&65535;Ib(a.H,a.M,b)}
function Bd(a){if(a.b&&a.S&255&&a.N&512){for(var b=0;8>b&&!(a.S&1<<b);b++);a.S&=~(0>b?255:1<<b);a.N&=-513;a.S&=-257;a.eb[199|b<<3].call(a)}return a.S&256?(Jc(a),!1):!0}function Cd(a,b){a.S|=1<<b;a.N&512&&Jc(a)}function J(a,b,c,d){d=d||2;a.P[b]&&(void 0===c&&(qa(a,"Value for "+b+" is invalid"),a.da()),c=!a.G.ka||a.G.fc?x(c,d):"--------".substr(0,d),a.P[b].textContent!=c&&(a.P[b].textContent=c))}
k.Bb=function(a){this.G.complete=!0;var b=this.G.wd=this.K&&Dd(this.K),c=a?this.G.Nb?0:1:-1;this.G.Nb=!1;this.ga=this.b=a;if(Bd(this)){do{if(b){if(Ed(this.K,this.j,c)){this.da();break}c=1}this.eb[G(this)].call(this)}while(0<this.b)}return this.G.complete?this.ga-this.b:void 0===this.G.complete?0:-1};hb(function(){for(var a=pa(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=na(c),d=new Nc(d);oa(d,c)}});function Fd(){this.b-=4}function Gd(){C(this,H(this));this.b-=10}
function Hd(){C(this,Ad(this));this.b-=10}function Id(){var a=H(this);I(this,this.j);C(this,a);this.b-=17}
var Oc=[Fd,function(){hd(this,H(this));this.b-=10},function(){zd(this,Vc(this),this.g);this.b-=7},function(){hd(this,Vc(this)+1);this.b-=5},function(){this.w=vd(this,this.w);this.b-=5},function(){this.w=ud(this,this.w);this.b-=5},function(){this.w=G(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|a>>8;md(this,a&256);this.b-=4},Fd,function(){var a;kd(this,a=D(this)+Vc(this));md(this,a>>8&256);this.b-=10},function(){this.g=F(this,Vc(this));this.b-=7},function(){hd(this,Vc(this)-1);this.b-=
5},function(){this.A=vd(this,this.A);this.b-=5},function(){this.A=ud(this,this.A);this.b-=5},function(){this.A=G(this);this.b-=7},function(){var a=this.g<<8&256;this.g=(a|this.g)>>1;md(this,a);this.b-=4},Fd,function(){jd(this,H(this));this.b-=10},function(){zd(this,id(this),this.g);this.b-=7},function(){jd(this,id(this)+1);this.b-=5},function(){this.B=vd(this,this.B);this.b-=5},function(){this.B=ud(this,this.B);this.b-=5},function(){this.B=G(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|
ld(this);md(this,a&256);this.b-=4},Fd,function(){var a;kd(this,a=D(this)+id(this));md(this,a>>8&256);this.b-=10},function(){this.g=F(this,id(this));this.b-=7},function(){jd(this,id(this)-1);this.b-=5},function(){this.C=vd(this,this.C);this.b-=5},function(){this.C=ud(this,this.C);this.b-=5},function(){this.C=G(this);this.b-=7},function(){var a=this.g<<8;this.g=(ld(this)<<8|this.g)>>1;md(this,a&256);this.b-=4},Fd,function(){kd(this,H(this));this.b-=10},function(){var a=H(this);Ib(this.H,a,D(this));
this.b-=16},function(){kd(this,D(this)+1);this.b-=5},function(){this.D=vd(this,this.D);this.b-=5},function(){this.D=ud(this,this.D);this.b-=5},function(){this.D=G(this);this.b-=7},function(){var a=0,b=ld(this);if(od(this)||9<(this.g&15))a|=6;if(b||154<=this.g)a|=96,b=1;this.g=rd(this,a);md(this,b?256:0);this.b-=4},Fd,function(){var a;kd(this,a=D(this)+D(this));md(this,a>>8&256);this.b-=10},function(){var a;a=H(this);a=Fb(this.H,a);kd(this,a);this.b-=16},function(){kd(this,D(this)-1);this.b-=5},function(){this.F=
vd(this,this.F);this.b-=5},function(){this.F=ud(this,this.F);this.b-=5},function(){this.F=G(this);this.b-=7},function(){this.g=~this.g&255;this.b-=4},Fd,function(){this.M=H(this)&65535;this.b-=10},function(){zd(this,H(this),this.g);this.b-=13},function(){this.M=this.M+1&65535;this.b-=5},function(){var a=D(this);zd(this,a,vd(this,F(this,a)));this.b-=10},function(){var a=D(this);zd(this,a,ud(this,F(this,a)));this.b-=10},function(){zd(this,D(this),G(this));this.b-=10},function(){this.I|=256;this.b-=
4},Fd,function(){var a;kd(this,a=D(this)+this.M);md(this,a>>8&256);this.b-=10},function(){this.g=F(this,H(this));this.b-=13},function(){this.M=this.M-1&65535;this.b-=5},function(){this.g=vd(this,this.g);this.b-=5},function(){this.g=ud(this,this.g);this.b-=5},function(){this.g=G(this);this.b-=7},function(){md(this,ld(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.w=this.A;this.b-=5},function(){this.w=this.B;this.b-=5},function(){this.w=this.C;this.b-=5},function(){this.w=this.D;this.b-=
5},function(){this.w=this.F;this.b-=5},function(){this.w=F(this,D(this));this.b-=7},function(){this.w=this.g;this.b-=5},function(){this.A=this.w;this.b-=5},function(){this.b-=5},function(){this.A=this.B;this.b-=5},function(){this.A=this.C;this.b-=5},function(){this.A=this.D;this.b-=5},function(){this.A=this.F;this.b-=5},function(){this.A=F(this,D(this));this.b-=7},function(){this.A=this.g;this.b-=5},function(){this.B=this.w;this.b-=5},function(){this.B=this.A;this.b-=5},function(){this.b-=5},function(){this.B=
this.C;this.b-=5},function(){this.B=this.D;this.b-=5},function(){this.B=this.F;this.b-=5},function(){this.B=F(this,D(this));this.b-=7},function(){this.B=this.g;this.b-=5},function(){this.C=this.w;this.b-=5},function(){this.C=this.A;this.b-=5},function(){this.C=this.B;this.b-=5},function(){this.b-=5},function(){this.C=this.D;this.b-=5},function(){this.C=this.F;this.b-=5},function(){this.C=F(this,D(this));this.b-=7},function(){this.C=this.g;this.b-=5},function(){this.D=this.w;this.b-=5},function(){this.D=
this.A;this.b-=5},function(){this.D=this.B;this.b-=5},function(){this.D=this.C;this.b-=5},function(){this.b-=5},function(){this.D=this.F;this.b-=5},function(){this.D=F(this,D(this));this.b-=7},function(){this.D=this.g;this.b-=5},function(){this.F=this.w;this.b-=5},function(){this.F=this.A;this.b-=5},function(){this.F=this.B;this.b-=5},function(){this.F=this.C;this.b-=5},function(){this.F=this.D;this.b-=5},function(){this.b-=5},function(){this.F=F(this,D(this));this.b-=7},function(){this.F=this.g;
this.b-=5},function(){zd(this,D(this),this.w);this.b-=7},function(){zd(this,D(this),this.A);this.b-=7},function(){zd(this,D(this),this.B);this.b-=7},function(){zd(this,D(this),this.C);this.b-=7},function(){zd(this,D(this),this.D);this.b-=7},function(){zd(this,D(this),this.F);this.b-=7},function(){var a=this.j-1;if(this.La.length)for(var b=0;b<this.La.length;b++)if(this.La[b](a))return;this.b-=7;this.S|=256;Jc(this);this.K&&wa(this,-2147483648)?(C(this,a),this.K.da()):this.N&512||(this.K&&C(this,a),
this.da())},function(){zd(this,D(this),this.g);this.b-=7},function(){this.g=this.w;this.b-=5},function(){this.g=this.A;this.b-=5},function(){this.g=this.B;this.b-=5},function(){this.g=this.C;this.b-=5},function(){this.g=this.D;this.b-=5},function(){this.g=this.F;this.b-=5},function(){this.g=F(this,D(this));this.b-=7},function(){this.b-=5},function(){this.g=rd(this,this.w);this.b-=4},function(){this.g=rd(this,this.A);this.b-=4},function(){this.g=rd(this,this.B);this.b-=4},function(){this.g=rd(this,
this.C);this.b-=4},function(){this.g=rd(this,this.D);this.b-=4},function(){this.g=rd(this,this.F);this.b-=4},function(){this.g=rd(this,F(this,D(this)));this.b-=7},function(){this.g=rd(this,this.g);this.b-=4},function(){this.g=sd(this,this.w);this.b-=4},function(){this.g=sd(this,this.A);this.b-=4},function(){this.g=sd(this,this.B);this.b-=4},function(){this.g=sd(this,this.C);this.b-=4},function(){this.g=sd(this,this.D);this.b-=4},function(){this.g=sd(this,this.F);this.b-=4},function(){this.g=sd(this,
F(this,D(this)));this.b-=7},function(){this.g=sd(this,this.g);this.b-=4},function(){this.g=E(this,this.w);this.b-=4},function(){this.g=E(this,this.A);this.b-=4},function(){this.g=E(this,this.B);this.b-=4},function(){this.g=E(this,this.C);this.b-=4},function(){this.g=E(this,this.D);this.b-=4},function(){this.g=E(this,this.F);this.b-=4},function(){this.g=E(this,F(this,D(this)));this.b-=7},function(){this.g=E(this,this.g);this.b-=4},function(){this.g=xd(this,this.w);this.b-=4},function(){this.g=xd(this,
this.A);this.b-=4},function(){this.g=xd(this,this.B);this.b-=4},function(){this.g=xd(this,this.C);this.b-=4},function(){this.g=xd(this,this.D);this.b-=4},function(){this.g=xd(this,this.F);this.b-=4},function(){this.g=xd(this,F(this,D(this)));this.b-=7},function(){this.g=xd(this,this.g);this.b-=4},function(){this.g=td(this,this.w);this.b-=4},function(){this.g=td(this,this.A);this.b-=4},function(){this.g=td(this,this.B);this.b-=4},function(){this.g=td(this,this.C);this.b-=4},function(){this.g=td(this,
this.D);this.b-=4},function(){this.g=td(this,this.F);this.b-=4},function(){this.g=td(this,F(this,D(this)));this.b-=7},function(){this.g=td(this,this.g);this.b-=4},function(){this.g=yd(this,this.w);this.b-=4},function(){this.g=yd(this,this.A);this.b-=4},function(){this.g=yd(this,this.B);this.b-=4},function(){this.g=yd(this,this.C);this.b-=4},function(){this.g=yd(this,this.D);this.b-=4},function(){this.g=yd(this,this.F);this.b-=4},function(){this.g=yd(this,F(this,D(this)));this.b-=7},function(){this.g=
yd(this,this.g);this.b-=4},function(){this.g=wd(this,this.w);this.b-=4},function(){this.g=wd(this,this.A);this.b-=4},function(){this.g=wd(this,this.B);this.b-=4},function(){this.g=wd(this,this.C);this.b-=4},function(){this.g=wd(this,this.D);this.b-=4},function(){this.g=wd(this,this.F);this.b-=4},function(){this.g=wd(this,F(this,D(this)));this.b-=7},function(){this.g=wd(this,this.g);this.b-=4},function(){E(this,this.w);this.b-=4},function(){E(this,this.A);this.b-=4},function(){E(this,this.B);this.b-=
4},function(){E(this,this.C);this.b-=4},function(){E(this,this.D);this.b-=4},function(){E(this,this.F);this.b-=4},function(){E(this,F(this,D(this)));this.b-=7},function(){E(this,this.g);this.b-=4},function(){pd(this)||(C(this,Ad(this)),this.b-=6);this.b-=5},function(){hd(this,Ad(this));this.b-=10},function(){var a=H(this);pd(this)||C(this,a);this.b-=10},Gd,function(){var a=H(this);pd(this)||(I(this,this.j),C(this,a),this.b-=6);this.b-=11},function(){I(this,Vc(this));this.b-=11},function(){this.g=
rd(this,G(this));this.b-=7},function(){I(this,this.j);C(this,0);this.b-=11},function(){pd(this)&&(C(this,Ad(this)),this.b-=6);this.b-=5},Hd,function(){var a=H(this);pd(this)&&C(this,a);this.b-=10},Gd,function(){var a=H(this);pd(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Id,function(){this.g=sd(this,G(this));this.b-=7},function(){I(this,this.j);C(this,8);this.b-=11},function(){ld(this)||(C(this,Ad(this)),this.b-=6);this.b-=5},function(){jd(this,Ad(this));this.b-=10},function(){var a=H(this);
ld(this)||C(this,a);this.b-=10},function(){var a=G(this);Sb(this.H,a,this.g,this.j+-2&65535);this.b-=10},function(){var a=H(this);ld(this)||(I(this,this.j),C(this,a),this.b-=6);this.b-=11},function(){I(this,id(this));this.b-=11},function(){this.g=E(this,G(this));this.b-=7},function(){I(this,this.j);C(this,16);this.b-=11},function(){ld(this)&&(C(this,Ad(this)),this.b-=6);this.b-=5},Hd,function(){var a=H(this);ld(this)&&C(this,a);this.b-=10},function(){var a=G(this);this.g=Ob(this.H,a,this.j+-2&65535)&
255;this.b-=10},function(){var a=H(this);ld(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Id,function(){this.g=xd(this,G(this));this.b-=7},function(){I(this,this.j);C(this,24);this.b-=11},function(){nd(this)||(C(this,Ad(this)),this.b-=6);this.b-=5},function(){kd(this,Ad(this));this.b-=10},function(){var a=H(this);nd(this)||C(this,a);this.b-=10},function(){var a=Ad(this);I(this,D(this));kd(this,a);this.b-=18},function(){var a=H(this);nd(this)||(I(this,this.j),C(this,a),this.b-=6);this.b-=
11},function(){I(this,D(this));this.b-=11},function(){this.g=td(this,G(this));this.b-=7},function(){I(this,this.j);C(this,32);this.b-=11},function(){nd(this)&&(C(this,Ad(this)),this.b-=6);this.b-=5},function(){C(this,D(this));this.b-=5},function(){var a=H(this);nd(this)&&C(this,a);this.b-=10},function(){var a=D(this);kd(this,id(this));jd(this,a);this.b-=5},function(){var a=H(this);nd(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Id,function(){this.g=yd(this,G(this));this.b-=7},function(){I(this,
this.j);C(this,40);this.b-=11},function(){qd(this)||(C(this,Ad(this)),this.b-=6);this.b-=5},function(){var a=Ad(this);Rc(this,a&255|this.N&-256);this.g=a>>8;this.b-=10},function(){var a=H(this);qd(this)||C(this,a);this.b-=10},function(){this.N&=-513;this.b-=4},function(){var a=H(this);qd(this)||(I(this,this.j),C(this,a),this.b-=6);this.b-=11},function(){I(this,Tc(this)&255|this.g<<8);this.b-=11},function(){this.g=wd(this,G(this));this.b-=7},function(){I(this,this.j);C(this,48);this.b-=11},function(){qd(this)&&
(C(this,Ad(this)),this.b-=6);this.b-=5},function(){this.M=D(this)&65535;this.b-=5},function(){var a=H(this);qd(this)&&C(this,a);this.b-=10},function(){this.N|=512;this.b-=4;Bd(this)},function(){var a=H(this);qd(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Id,function(){E(this,G(this));this.b-=7},function(){I(this,this.j);C(this,56);this.b-=11}];
function Jd(a){n.call(this,"ChipSet",a,32768);var b=a.model;b&&!Kd[b]&&ga("Unrecognized ChipSet model: "+b);this.g=Kd[b]||{};a.sound&&(this.U=null,window&&(this.U=window.AudioContext||window.webkitAudioContext),this.U&&new this.U);sa(this)}ba(Jd,n);k=Jd.prototype;k.ca=function(){return!1};
k.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;this.R=a;this.B=vb(a,"Keyboard");this.C=vb(a,"SerialPort");this.video=vb(a,"Video");Nb(b,this,this.g.yb);Rb(b,this,this.g.zb);if(d){var e=this;Ld(d,16384,function(){for(var a="",b=0;b<e.j.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=y(e.j[b]);e.K.i(a)})}};k.va=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){this.g.INIT&&!this.restore(this.g.INIT)&&this.aa("reset error")};
k.save=function(){var a=new Uc(this);switch(this.g.pa){case Md.pa:a.set(0,[this.ea,this.A,this.ga,this.N,this.T,this.Y,this.Z]);break;case L.pa:a.set(0,[this.W,this.D]),a.set(1,[this.F,this.I]),a.set(2,[this.w,this.O,this.X,this.V]),a.set(3,[this.M,this.b,this.L,this.S,this.j])}return a.data()};
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.g.pa){case Md.pa:return this.ea=b[0],this.A=b[1],this.ga=b[2],this.N=b[3],this.T=b[4],this.Y=b[5],this.Z=b[6],!0;case L.pa:return this.W=b[0],this.D=b[1],b=a[1],this.F=b[0],this.I=b[1],b=a[2],this.w=b[0],this.O=b[1],this.X=b[2],this.V=b[3],b=a[3],this.M=b[0],this.b=b[1],this.L=b[2],this.S=b[3],this.j=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.Cd=function(a,b){var c=this.ea;v(this,a,null,b,"STATUS0",c,!0);return c};
k.Dd=function(a,b){var c=this.A;v(this,a,null,b,"STATUS1",c,!0);return c};k.Ed=function(a,b){var c=this.ga;v(this,a,null,b,"STATUS2",c,!0);return c};k.Bd=function(a,b){var c=this.N>>8-this.T&255;v(this,a,null,b,"SHIFT.RESULT",c,!0);return c};k.Ld=function(a,b,c){v(this,a,b,c,"SHIFT.COUNT",null,!0);this.T=b};k.Nd=function(a,b,c){v(this,a,b,c,"SOUND1",null,!0);this.Y=b};k.Md=function(a,b,c){v(this,a,b,c,"SHIFT.DATA",null,!0);this.N=b<<8|this.N>>8};
k.Od=function(a,b,c){v(this,a,b,c,"SOUND2",null,!0);this.Z=b};k.Pd=function(a,b,c){v(this,a,b,c,"WATCHDOG",null,!0)};function Nd(a){var b=0,c=0,d=~a.M;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
k.Fd=function(a,b){var c=this.D,c=c&~L.xa.Zb;if((Cc(this.u)&64)<<1&&(c|=L.xa.Zb,c!=this.D)){var d,e;d=this.L&1;e=this.L>>1&7;switch(e){case L.Aa.Ja.ed:break;case L.Aa.Ja.pc:this.M=this.M<<1|d;break;case L.Aa.Ja.xc:d=Nd(this);this.j[d]=L.Aa.tb;xa(this,"doNVRCommand(): erase data at addr "+y(d));break;case L.Aa.Ja.qc:this.b=this.b<<1|d;break;case L.Aa.Ja.nd:d=Nd(this);e=this.b&L.Aa.tb;this.j[d]=e;xa(this,"doNVRCommand(): write data "+y(e)+" to addr "+y(d));break;case L.Aa.Ja.bd:d=Nd(this);e=this.j[d];
null==e&&(e=L.Aa.tb);this.b=e;xa(this,"doNVRCommand(): read data "+y(e)+" from addr "+y(d));break;case L.Aa.Ja.dd:this.b<<=1;this.S=this.b&L.Aa.tb+1;break;default:xa(this,"doNVRCommand(): unrecognized command "+Da(e))}}c&=~L.xa.$b;this.S&&(c|=L.xa.$b);c&=~L.xa.Ub;if(d=this.B){d=this.B;if(e=d.A)e=d.u,e=Cc(d.u)>=d.F+e.Fa*e.U/1E3*1.2731488;e&&(d.A=!1);d=!d.A}d&&(c|=L.xa.Ub);c&=~L.xa.bc;this.C&&this.C.ia&Od&&(c|=L.xa.bc);this.D=c;v(this,a,null,b,"FLAGS",c);return c};
k.Qd=function(a,b,c){v(this,a,b,c,"BRIGHTNESS");this.W=b};k.Td=function(a,b,c){v(this,a,b,c,"NVR.LATCH");this.L=b};k.Sd=function(a,b,c){v(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.w=this.w&-4|a;break;case 1:this.w=this.w&-13|a<<2;this.video&&(b=this.video,a=this.w,xa(b,"updateScrollOffset("+a+")"),b.sa!==a&&((b.sa=a)?Mc(b,!0):b.ya=!0));break;case 2:switch(a){case 0:this.O=~this.O;break;case 2:case 3:this.X=3-a}break;case 3:this.V=a}};
k.Rd=function(a,b,c){v(this,a,b,c,"DC011");b&L.Ka.ad?(b&=L.Ka.ac,this.I!=b&&(this.I=b,this.video&&(a=this.video,b=this.I==L.Ka.ac?50:60,xa(a,"updateRate("+b+")"),a.hb=b))):(b&=L.Ka.Rb,this.F!=b&&(this.F=b,this.video&&(a=this.F==L.Ka.Rb?132:80,b=this.video,xa(b,"updateDimensions("+a+","+(80<a&&this.D&L.xa.Yb?14:24)+")"),b.O=a,b.fa=b.Ha,80<a&&b.fa--,Pd(b)&&Qd(b))))};
var Md={pa:1978.1,gd:{qa:0,Re:1,Ve:16,bf:32,lf:64,kf:128,$a:14},Oa:{qa:1,vc:1,Zc:2,Vc:4,Wc:16,Xc:32,Yc:64,$a:8},hd:{qa:2,Qe:3,uf:4,Se:8,ff:16,gf:32,hf:64,Te:128,$a:0},qf:{qa:3},nf:{qa:2,cf:7},sf:{qa:3,vf:1,rf:2,jf:4,$e:8,Ue:16,le:32},pf:{qa:4},tf:{qa:5,We:1,Xe:2,Ye:4,Ze:8,wf:16}},L={pa:100,xa:{qa:66,bc:1,Yb:2,Sc:4,ef:8,df:16,$b:32,Zb:64,Ub:128},tc:{qa:66,INIT:0},Ka:{qa:194,oe:0,Rb:16,ad:32,ac:48,Ec:0,Fc:32},sb:{qa:162,mf:0,Hc:0,Dc:0,Gc:0,Cc:0},Aa:{af:{qa:98},Ja:{qc:0,pc:1,dd:2,nd:4,xc:5,bd:6,ed:7},
tb:16383}},Kd={SI1978:Md,VT100:L};Md.INIT=[[Md.gd.$a,Md.Oa.$a,Md.hd.$a,0,0,0,0]];
L.INIT=[[L.tc.INIT,L.xa.Yb|L.xa.Sc],[L.Ka.Ec,L.Ka.Fc],[L.sb.Hc,L.sb.Dc,L.sb.Gc,L.sb.Cc],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];Md.yb={0:Jd.prototype.Cd,1:Jd.prototype.Dd,2:Jd.prototype.Ed,3:Jd.prototype.Bd};
Md.zb={2:Jd.prototype.Ld,3:Jd.prototype.Nd,4:Jd.prototype.Md,5:Jd.prototype.Od,6:Jd.prototype.Pd};L.yb={66:Jd.prototype.Fd};L.zb={66:Jd.prototype.Qd,98:Jd.prototype.Td,162:Jd.prototype.Sd,194:Jd.prototype.Rd};hb(function(){for(var a=pa(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=na(c),d=new Jd(d);oa(d,c)}});
function Rd(a){n.call(this,"ROM",a);this.b=null;this.A=a.addr;this.g=a.size;this.w=a.alias;this.j=a.file;this.B=Ea(this.j);if(this.j){a=this.j;var b=Fa(this.B);"json"!=b&&"hex"!=b&&(a=Ha()+"/api/v1/dump?file="+this.j+"&format=bytes&decimal=true");var c=this;Sa(a,null,!0,function(a,b,f){Sd(c,a,b,f)})}}ba(Rd,n);Rd.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;Td(this)};
Rd.prototype.va=function(){if(this.ra){if(this.K){var a=this.K,b=this.id,c=this.A,d=this.g,e=this.ra,f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var l=h.o,p=h.a;if(void 0!==l){var r=f,l=[l>>>0,g],t=Pa(r,l,a.ec);0>t&&r.splice(-(t+1),0,l)}p&&(h.a=p.replace(/''/g,'"'))}a.A.push({If:b,J:c,Hd:d,ra:e,dc:f})}delete this.ra}return!0};Rd.prototype.ua=function(){return!0};
function Sd(a,b,c,d){if(d)a.aa("Unable to load system ROM (error "+d+": "+b+")");else{da(a.bb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.data;if(f)a.b=f;else if(g)for(a.b=Array(4*g.length),d=c=0;c<g.length;c++)a.b[d++]=g[c]&255,a.b[d++]=g[c]>>8&255,a.b[d++]=g[c]>>16&255,a.b[d++]=g[c]>>24&255;else a.b=e;a.ra=e.symbols;if(!a.b.length){q("Empty ROM: "+b);return}if(1==a.b.length){q(a.b[0]);return}}catch(h){a.aa("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=Ba(b[e],16);Td(a)}}
function Td(a){if(!ra(a))if(!a.j)sa(a);else if(a.b&&a.H){a.g||(a.g=a.b.length);if(a.b.length!=a.g)qa(a,"ROM size ("+x(a.b.length,8,!0)+") does not match specified size ("+x(a.g,8,!0)+")");else{var b;b=a.A;if(zb(a.H,b,a.g,Zb)){var c;for(c=0;c<a.b.length;c++)Hb(a.H,b+c,a.b[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.H,g=d.g,h=[],l=d.A>>>f.g;0<g&&l<f.b.length;)h.push(f.b[l++]),g-=f.w;f=d.H;d=d.g;g=0;for(e>>>=
f.g;0<d&&e<f.b.length;){l=h[g++];if(!l)break;f.b[e++]=l;d-=f.w}}delete a.b}}sa(a)}}hb(function(){for(var a=pa(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=na(c),d=new Rd(d);oa(d,c)}});
function Ud(a){n.call(this,"RAM",a);this.ra=this.g=null;this.w=a.addr;this.A=a.size;this.Qa=a.load;this.Ia=a.exec;this.j=!1;this.b=a.file;this.B=Ea(this.b);if(this.b){a=this.b;var b=Fa(this.B);"json"!=b&&"hex"!=b&&(a=Ha()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;Sa(a,null,!0,function(a,b,f){f?c.aa("Unable to load RAM resource (error "+f+": "+a+")"):(da(c.bb,a,b),(a=Ta(a,b))?(c.g=a.ma,c.ra=a.ra,null==c.Qa&&(c.Qa=a.Qa),null==c.Ia&&(c.Ia=a.Ia)):c.b=null,Vd(c))})}}ba(Ud,n);
Ud.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;Vd(this)};Ud.prototype.va=function(){return!0};Ud.prototype.ua=function(){return!0};
function Vd(a){!a.j&&a.A&&zb(a.H,a.w,a.A,1)&&(a.j=!0);if(!ra(a)){if(!a.j)q("No RAM allocated");else if(a.b){if(!a.g||!a.H)return;var b=a.w;null!==a.Qa&&(b=a.Qa);for(var c=0;c<a.g.length;c++)Hb(a.H,b+c,a.g[c]);if(null!==a.Ia){if(a.Ia==Wd){for(c=0;c<Xd.length;c++)Hb(a.H,Xd[c],118);Qc(a.u,function(a){return function(b){if(0<=Xd.indexOf(b)){var c=!1,d=a.u,e=a.K;if(b==Yd)switch(c=!0,d.A){case Zd:$d(a,String.fromCharCode(d.C));break;case ae:for(var l=id(d),p="",r=255;r--;){var t=F(a.u,l++);if(36==t)break;
p+=String.fromCharCode(t)}$d(a,p);break;default:c=!1}c?Hd.call(d):e&&(a.i("\nCP/M vector "+y(b)),C(d,b),e.da());b=!0}else b=!1;return b}}(a))}Sc(a.u,a.Ia)}delete a.g}sa(a)}}Ud.prototype.reset=function(){};function $d(a,b){b=b.replace(/\r/g,"");a.ta&&(a.ta.value+=b,a.ta.scrollTop=a.ta.scrollHeight)}var Yd=5,Zd=2,ae=9,Wd=256,Xd=[0,Yd];hb(function(){for(var a=pa(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=na(c),d=new Ud(d);oa(d,c)}});
function be(a){n.call(this,"Keyboard",a,65536);(a=a.model)&&!ce[a]&&ga("Unrecognized Keyboard8080 model: "+a);this.b=ce[a]||{};this.reset();sa(this)}ba(be,n);k=be.prototype;
k.ca=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.P[e]){if("led"==a&&this.b.cb[b])return this.P[e]=c,!0;switch(b){case "kbd":case "screen":return c.onkeydown=function(a){return de(d,a,!0)},c.onkeyup=function(a){return de(d,a,!1)},c.onkeypress=function(a){a=a.keyCode;a>=m.qb&&a<=m.Eb?d.g&(ee|fe)||(d.g|=fe,ge(d,20,!0),Ce(d)):a>=m.qd&&a<=m.z&&d.g&fe&&(d.g&=~fe,ge(d,20,!1),Ce(d));return!0},c.onpaste=function(a){a:{if(d.C&&d.C.Ra&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),
a=a.clipboardData||window.clipboardData)){De(d.C,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.b.Ta&&void 0!==this.b.Ta[b])return this.P[e]=c,c.onclick=function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=17!=b;if(!e){c.style.fontWeight="normal";if(d=!(a.g&Ee))c.style.fontWeight="bold";Fe(a,b,d)}ge(a,b,d,e);a.R&&a.R.Ya()}}(this,this.b.Ta[b]),!0}}return!1};
k.Ea=function(a,b,c,d){this.R=a;this.u=c;this.K=d;var e=this;this.L=Hc(this.u,function(){Ge(e)});this.W=vb(a,"ChipSet");this.C=vb(a,"SerialPort");Nb(b,this,this.b.yb);Rb(b,this,this.b.zb)};k.va=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){this.j=[];this.g=0;this.b.INIT&&!this.restore(this.b.INIT)&&this.aa("reset error")};
k.save=function(){var a=new Uc(this);switch(this.b.pa){case M.pa:a.set(0,[this.D,this.B,this.A,this.F,-1])}return a.data()};k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.pa){case He.pa:return!0;case M.pa:return this.D=b[0],Ce(this,this.D&M.Ba.Wb),this.B=b[1],this.A=b[2],this.F=b[3],this.w=b[4],!0}return!1};
function Ce(a,b){var c;null!=b?a.I=b:b=a.I;for(var d in a.b.cb)if(c="led-"+d,c=a.P[c]){var e=a.b.cb[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+x(16711680,6):"#000000"}if(c=a.P["led-caps-lock"])c.style.backgroundColor=a.g&fe?"#"+x(65280,6):"#000000"}function Fe(a,b,c,d){var e=0;switch(b){case 16:e=d?Ie:Je;break;case 17:e=d?Ke:Ee;break;case 18:e=d?Le:Me;break;case 91:e=d?Ne:Oe;break;case 20:e=fe}e&&(a.g=c?a.g|e:a.g&~e)}
function de(a,b,c){var d=!0,e=b.keyCode;Fe(a,e,c,2==b.location);var f;a:if(e=a.b.Qb[e]||e,a.b.Db[e])f=e;else{for(f in a.b.Ta)if(a.b.Ta[f]===e)break a;f=null}f&&!b.metaKey&&(d=!1,a.g&(Pe|Qe)&&(13==f?(f=118,d=!0):8==f&&(f=46,d=!0),d&&(a.g=c?a.g|Qe:a.g&~Qe)),d=ge(a,f,c),(!(f>=m.qb&&f<=m.Eb)||a.g|Re)&&b.preventDefault&&b.preventDefault());return d}
function ge(a,b,c,d){var e;a:{for(e=0;e<a.j.length;e++)if(a.j[e].Mb==b)break a;e=-1}if(c)0>e?a.j.push({Mb:b,Jb:Date.now(),vb:d||!1}):(a.j[e].Jb=Date.now(),a.j[e].vb=d||!1),d&&Ge(a);else if(0<=e){if(!a.j[e].vb&&(d=a.j[e].Jb)&&Date.now()-d<Se)return a.j[e].vb=!0,Ge(a),!0;a.j.splice(e,1)}if(a.W){d=0;switch(b){case "1p":d=Md.Oa.Vc;break;case "2p":d=Md.Oa.Zc;break;case "coin":d=Md.Oa.vc;break;case "left":d=Md.Oa.Xc;break;case "right":d=Md.Oa.Yc;break;case "fire":d=Md.Oa.Wc}d&&(a=a.W,b=d,a.A&=~b,c&&(a.A|=
b))}return!0}function Ge(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].vb){var d=a.j[b].Mb,e=Se-(Date.now()-a.j[b].Jb);if(0<e){if(0>c||c>e)c=e}else{ge(a,d,!1);b=0;continue}}b++}0<=c&&Ic(a.u,a.L,c)}k.Gd=function(a,b){var c=this.B;0<=this.w&&(this.w<this.j.length?(c=this.j[this.w],this.w++,c=M.Db[c.Mb],c&128&&(c&=127)):(this.w=-1,c=M.Kc),this.B=c,Cd(this.u,1));v(this,a,null,b,"KBDUART.ADDRESS",c);return c};
k.Ud=function(a,b,c){v(this,a,b,c,"KBDUART.STATUS");this.D=b;this.A=!0;this.F=Cc(this.u);Ce(this,b&M.Ba.Wb);b&M.Ba.fd&&(this.w=0,Cd(this.u,1))};var Ie=1,Je=2,ee=3,Ke=4,Ee=8,Re=12,Le=16,Me=32,Pe=48,Ne=64,Oe=128,fe=512,Qe=4096,Se=50,Te={};Te[m.qb]=37;Te[m.Sb]=39;Te[m.Vb]=32;
var He={pa:1978.1,Db:{},Qb:Te,cb:{},Ta:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},N={},M={pa:100,Db:(N[8]=3,N[m.Uc]=5,N[m.Tc]=6,N[m.pd]=7,N[m.jd]=8,N[m.md]=9,N[m.Q]=10,N[39]=16,N[221]=20,N[219]=21,N[m.Bc]=22,N[m.kd]=23,N[m.$c]=24,N[m.E]=25,N[49]=26,N[37]=32,N[40]=34,N[117]=35,N[19]=35,N[192]=36,N[189]=37,N[57]=38,N[55]=39,N[52]=40,N[51]=41,N[27]=42,N[38]=48,N[114]=49,N[112]=50,N[46]=51,N[187]=52,N[48]=53,N[56]=54,N[54]=55,N[53]=56,N[50]=57,N[9]=58,N[103]=64,N[115]=65,N[113]=66,N[96]=67,N[118]=
68,N[220]=69,N[m.Vb]=70,N[m.Jc]=71,N[m.zc]=72,N[m.yc]=73,N[m.qb]=74,N[104]=80,N[2013]=81,N[98]=82,N[97]=83,N[222]=85,N[186]=86,N[m.Ic]=87,N[m.Ac]=88,N[m.Sb]=89,N[m.cd]=90,N[110]=96,N[116]=97,N[101]=98,N[100]=99,N[13]=100,N[190]=101,N[188]=102,N[m.Rc]=103,N[m.sc]=104,N[m.od]=105,N[119]=106,N[105]=112,N[99]=113,N[102]=114,N[109]=115,N[191]=117,N[m.Qc]=118,N[m[" "]]=119,N[m.ld]=120,N[m.uc]=121,N[m.Eb]=122,N[120]=123,N[17]=124,N[16]=125,N[20]=126,N),Qb:{},cb:{},Ta:{ctrl:17,esc:27,tab:9,"num-comma":116,
"break":117,"line-feed":118,"no-scroll":119,setup:120},rc:{qa:130,INIT:127},Ba:{qa:130,Oc:1,Nc:2,Mc:4,Lc:8,Pc:16,Xb:32,Wb:63,fd:64,ne:128,INIT:0},Kc:127};M.cb={l4:M.Ba.Oc,l3:M.Ba.Nc,l2:M.Ba.Mc,l1:M.Ba.Lc,locked:M.Ba.Pc,local:M.Ba.Xb,online:~M.Ba.Xb,"caps-lock":fe};var ce={SI1978:He,VT100:M};M.INIT=[[M.Ba.INIT,M.rc.INIT,!1,0,-1]];M.yb={130:be.prototype.Gd};M.zb={130:be.prototype.Ud};hb(function(){for(var a=pa(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=na(c),d=new be(d);oa(d,c)}});
function Ue(a,b,c,d,e){n.call(this,"Video",a,262144);var f=this;this.Sa=bb("Gecko/");var g=["","moz","ms","webkit"];this.M=a.screenWidth;this.I=a.screenHeight;this.la=a.bufferAddr;this.td=a.bufferRAM;var h=a.bufferFormat;this.Y=h&&Ve[h.toUpperCase()]||We;this.O=a.bufferCols;this.Z=a.bufferRows;this.Ha=this.fa=a.cellWidth||1;this.ba=a.cellHeight||1;this.ea=null;this.Na=!1;this.na=a.bufferBits||1;this.vd=a.bufferLeft||0;if(this.g=a.bufferRotate)this.g=this.g%360,0<this.g&&(this.g-=360),-90!=this.g&&
(this.aa("unsupported buffer rotation: "+this.g),this.g=0);this.oa=a.interruptRate;this.ib=a.refreshRate||60;this.F=b;this.j=c;this.V=(this.yd=d)||b||null;this.Ab=this.M;this.sd=this.I;this.La=this.M/this.O|0;this.Ma=this.I/this.Z|0;1<this.ba&&(this.Z++,this.sa=0,this.ya=!1);b=a.smoothing;(c=cb("smoothing"))&&(b="true"==c);if(null!=b)for(c=0;c<g.length;c++)if(d=(d=g[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.j[d]){this.j[d]=b;break}if(this.w=a.screenRotate)this.w=this.w%360,
0<this.w&&(this.w-=360),-90!=this.w?(this.aa("unsupported screen rotation: "+this.w),this.w=0):(this.j.translate(0,this.I),this.j.rotate(this.w*Math.PI/180),this.j.scale(this.I/this.M,this.M/this.I));if(this.b=e)if(this.b.Wa=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.Wa){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){Xe(f,!!(document.fullscreenElement||document.msFullscreenElement||
document.mozFullScreenElement||document.webkitFullscreenElement))},!1);break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){Xe(f,null)},!1);break}}if(this.S=a.fontROM)"json"!=Fa(this.S)&&(this.S=Ha()+"/api/v1/dump?file="+this.S+"&format=bytes"),Sa(this.S,null,!0,function(a,b,c){Ye(f,a,b,c)});this.Fa={}}ba(Ue,n);
function Pd(a){a.C=a.O*a.fa;a.N=a.Z*a.ba;var b=a.C,c=a.N;a.g&&(b=a.N,c=a.C);a.L=0;if(!a.td&&(a.L=(a.C*a.na>>3)*a.N,!zb(a.H,a.la,a.L,3)))return!1;a.L?(a.Ua=a.j.createImageData(b,c),a.fb=16/a.na|0,Ze(a,a.L>>1)):Ze(a,(a.O+1)*a.Z);a.D=document.createElement("canvas");a.D.width=b;a.D.height=c;a.wa=a.D.getContext("2d");a.T={};a.X=1<<a.na;a.U=Array(a.X+$e);a.U[0]=[0,0,0,255];a.U[1]=[255,255,255,255];a.Y==af&&(a.U[a.X+bf]=[255,255,0,255],a.U[a.X+cf]=[0,255,0,255]);a.Y==df&&(a.hb=60,a.za=!1,a.ga=Array(a.O));
return!0}k=Ue.prototype;k.ca=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Fa[b]=c,!0;switch(b){case "fullScreen":return this.P[b]=c,this.b&&this.b.Wa?c.onclick=function(){d.Wa()}:c.parentNode.removeChild(c),!0}return!1};
k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;Pd(this);if(this.B=vb(a,"Keyboard")){for(var e in this.Fa)this.B.ca("led",e,this.Fa[e]);this.F&&this.B.ca(this.yd?"textarea":"canvas","screen",this.V)}var f=this;this.ub=Hc(this.u,function(){Mc(f)});Ic(this.u,this.ub,1E3/Math.max(this.ib,this.oa));this.gb=0;this.S||sa(this)};
function Ye(a,b,c,d){if(d)a.aa("Unable to load font ROM (error "+d+": "+b+")");else{da(a.bb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){q("Empty font ROM: "+b);return}if(1==f.length){q(f[0]);return}if(2048==f.length)a.ea=f,Qd(a);else{a.aa("Unrecognized font data length ("+f.length+")");return}}catch(g){a.aa("Font ROM data error: "+g.message);return}(a.j||a.K)&&sa(a)}}
function Qd(a){a.ea&&(a.Na=a.Y==df,a.T[ef]=[ff(a,a.fa,a.ba),ff(a,a.fa,a.ba,a.za)],a.T[gf]=[ff(a,2*a.fa,a.ba),ff(a,2*a.fa,a.ba,a.za)],a.T[hf]=a.T[jf]=[ff(a,2*a.fa,2*a.ba),ff(a,2*a.fa,2*a.ba,a.za)])}
function ff(a,b,c,d){var e=8>=a.Ha?8:16,f=8<e?15:0,g=a.ea.length/e,h=!1===d,l={fa:b,ba:c};l.canvas=document.createElement("canvas");l.canvas.width=16*b;l.canvas.height=g/16*c;l.context=l.canvas.getContext("2d");for(var p=l.context.createImageData(b,c),r=0;r<g;r++){for(var t=0,A=t;t<a.ba;t++)for(var w=r*e+(f+t&e-1),w=d&&8==t?255:a.ea[w],u=0;u<c/a.ba;u++){for(var B=0,S=0,ya=S;S<a.fa;S++){for(var K=w&128>>(7<S?7:S),B=a.Na&&!K&&B?B:K,ia=0;ia<b/a.fa;ia++)h&&(B=!B),kf(a,p,ya,A,B?1:0),ya++;B=K}A++}l.context.putImageData(p,
(r&15)*b,(r>>4)*c)}return l}k.va=function(a,b){return b||!a||this.restore(a)?!0:!1};k.ua=function(a){return!a||this.save()};k.save=function(){var a=new Uc(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};
k.Wa=function(){var a=!1;if(this.b){if(this.b.Wa){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.M/this.I;b>c&&(a=Math.round(c/b*100)+"%")}this.Sa?(this.F.style.width=a,this.F.style.width=a,this.F.style.display="block",this.F.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.Wa();a=!0}this.V&&this.V.focus()}return a};
function Xe(a,b){!b&&a.b&&(a.Sa?a.F.style.width=a.F.style.height="":a.b.style.width=a.b.style.height="");xa(a,"notifyFullScreen("+b+")")}function Ze(a,b){a.eb=b;a.W=!1;if(void 0===a.A||a.A.length!=a.eb)a.A=Array(a.eb)}function kf(a,b,c,d,e){d=a.g?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.Y==af&&(208<=c&&236>c?e=a.X+bf:28<=c&&72>c&&(e=a.X+cf));a=a.U[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function Mc(a,b){var c=!0;if(!b){a.oa&&(120==a.oa?a.gb&1?(Cd(a.u,2),c=!1):Cd(a.u,1):Cd(a.u,4));if(c&&a.W&&a.L){for(var d=a.H,e=a.L,f=!0,g=a.la>>>d.g;0<e&&g<d.b.length;)d.b[g].Ca&&(d.b[g].Ca=f=!1,d.b[g].hc=!0),e-=d.w,g++;f&&(c=!1)}Ic(a.u,a.ub,1E3/Math.max(a.ib,a.oa));a.gb++}if(c)if(1<a.fa)switch(a.Y){case df:for(var c=a.la,d=-1,e=0,f=60==a.hb?2:5,h=g=0,l=-1;e<a.Z;){var p=0,r=c,t=d,A=a.O;for(t!=ef&&(A>>=1);;){var w=Eb(a.H,r++);if((w&lf)==lf){var u=Eb(a.H,r++),d=u&mf,c=(u&nf)<<8|Eb(a.H,r),c=c+(u&of?
pf:qf);break}if(p<A)a.ga[p++]=w;else break}if(f)f--;else{for(;p<a.ga.length;)a.ga[p++]=0;if(0<=t)for(r=a.W&&a.A[g]==A,a.A[g++]=A,A=0;A<p;A++){w=a.ga[A];if(!r||w!==a.A[g]){a.A[l=g]=w;var u=a,B=a.wa,S=w&127;if(w=u.T[t][w&128?1:0]){var ya=(S&15)*w.fa,S=(S>>4)*w.ba,K,ia,ta,ma,La=w.fa,cc=w.ba;B?(K=A*u.fa,ia=e*u.ba,ta=u.fa,ma=u.ba):(K=A*u.La,ia=e*u.Ma,ta=u.La,ma=u.Ma);w.fa>u.fa&&(K*=2,ta*=2);w.ba>u.ba&&(t==jf&&(S+=u.ba),cc=u.ba);B?B.drawImage(w.canvas,ya,S,La,cc,K,ia,ta,ma):(K+=0,ia+=0,u.j.drawImage(w.canvas,
ya,S,La,cc,K,ia,ta,ma))}h++}g++}e++}}a.W=!0;!b&&a.ya&&1==h&&(a.A[l]=-1,h=0);a.ya=!1;(h||b)&&a.wa&&a.j.drawImage(a.D,0,a.sa,a.C,a.N-a.ba,0,0,a.Ab,a.sd)}else{e=a.la;f=e+a.L;l=h=g=0;b=a.C;p=0;c=a.N;t=d=0;r=a.na;A=(1<<r)-1;a.vd&&(r=-r,t=16+r);for(;e<f;){u=Gb(a.H,e);if(a.W&&u===a.A[g])h+=a.fb;else{a.A[g]=u;(B=t)&&(u=u>>8|(u&255)<<8);h<b&&(b=h);for(w=a.fb;w--;)ya=u>>B&A,kf(a,a.Ua,h++,l,ya),B+=r;h>p&&(p=h);l<c&&(c=l);l>=d&&(d=l+1)}e+=2;g++;if(h>=a.C&&(h=0,l++,l>a.N))break}a.W=!0;b<a.C&&(e=p-b,d-=c,a.g&&
(f=b,g=e,b=c,e=d,c=a.C-(f+g),d=g),a.wa.putImageData(a.Ua,0,0,b,c,e,d),a.j.drawImage(a.D,0,0,a.D.width,a.D.height,0,0,a.M,a.I))}}var bf=0,cf=1,$e=2,We=0,af=1,df=2,Ve={SI1978:af,VT100:df},ef=96,gf=64,hf=32,jf=0,lf=127,nf=15,of=16,mf=96,pf=8192,qf=16384;
hb(function(){for(var a=pa(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=na(c),e=document.createElement("canvas");if(!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<=Ua().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||cb("aspect"));f&&.3<=f&&3.33>=f&&(gb("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");bb("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new Ue(d,e,g,f,c);oa(d,c)}});
function rf(a){n.call(this,"SerialPort",a,8388608);this.T=+a.adapter;switch(this.T){case 0:this.U=0;this.X=2;break;default:q("Unrecognized serial adapter #"+this.T);return}this.g=this.j=null;this.V=a.tabSize;this.S=a.charBOL;this.w=0;this.N=!1;this.D=!0;var b=a.binding;if("console"==b)this.j="";else{var c;a=sf;b&&(void 0===c&&(c="Panel"),(c=la(c,this.id))&&(b=c.P[b])&&this.ca(null,a,b))}this.A="";this.b=this.Ra=this.I=null;this.exports={connect:this.jc,receiveData:this.Lb,receiveStatus:this.ce}}
ba(rf,n);k=rf.prototype;
k.ca=function(a,b,c,d){var e=this;switch(b){case sf:return this.P[b]=this.g=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),tf(e,b);return!0},c.onkeypress=function(a){a=a||window.event;tf(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.P[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.Lb(d);return!0},
!0}return!1};k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;var e=this;this.Y=Hc(this.u,function(){e.Lb()});this.Z=Hc(this.u,function(){De(e)});this.W=vb(a,"ChipSet");Nb(b,this,uf,this.U);Rb(b,this,vf,this.U);sa(this)};
k.jc=function(a){if(!this.b){var b=vc(this.R,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Na(c[0]);if(d!=this.ab)return;c=Na(c[1]);if(this.b=ka(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.D);if(this.Ra=e.receiveData){this.D=a;this.I=e.receiveStatus;this.status("Connected "+this.bb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};
k.va=function(a,b){if(!b)if(this.jc(this.D),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){wf(this)};k.save=function(){var a=new Uc(this),b=0,c=[];c[b++]=this.F;c[b++]=this.M;c[b++]=this.O;c[b++]=this.ia;c[b++]=this.B;c[b++]=this.C;c[b]=this.L;a.set(0,c);return a.data()};k.restore=function(a){return wf(this,a[0])};
function wf(a,b){var c=0;b||(b=xf);a.F=b[c++];a.M=b[c++];a.O=b[c++];a.ia=b[c++];a.B=b[c++];a.C=b[c++];a.L=b[c];return!0}function yf(a,b){var c=a.L&b;b&15||(c>>=4);b=zf[c];c=((a.B&Af)>>2)+6;a.B&Bf&&c++;c+=((a.B&Cf)>>6)+1>>1;return 1E3/Math.round(b/c)}function tf(a,b){xa(a,"receiveByte("+Da(b)+"), status="+Da(a.ia));return a.N||a.ia&Df?!1:(a.M=b,a.ia|=Df,Cd(a.u,a.X),!0)}
k.Lb=function(a){null!=a&&(this.A="number"!=typeof a?a:this.A+String.fromCharCode(a));this.A&&(tf(this,this.A.charCodeAt(0))&&(this.A=this.A.substr(1)),this.A&&this.u&&Ic(this.u,this.Y,yf(this,Ef)));return!0};k.ce=function(a){this.ia&=~Ff;a&64&&(this.ia|=Ff)};function De(a,b){a.ia=a.ia|Od|Gf;b&&a.Ra&&a.Ra.call(a.b,b)}k.Ad=function(a,b){var c=this.M;v(this,a,null,b,"DATA",c);this.ia&=~Df;return c};k.zd=function(a,b){var c=this.ia;v(this,a,null,b,"STATUS",c);return c};
k.Kd=function(a,b,c){v(this,a,b,c,"DATA");this.O=b;this.ia&=~(Od|Gf);xa(this,"transmitByte("+Da(b)+")");if(19==b)this.N=!0;else if(17==b)this.N=!1;else if(this.Ra&&this.Ra.call(this.b,b),this.g)if(8==b)this.g.value=this.g.value.slice(0,-1),0<this.w&&this.w--;else{var d;13!=b&&10!=b&&(d=Oa[b]);a=d=d?"<"+d+">":String.fromCharCode(b);c=a.length;9==b?(b=this.V||8,c=b-this.w%b,this.V&&(a=Ka("",c))):13==b&&(this.w=c=0,a="\n");this.S&&!this.w&&c&&(a=String.fromCharCode(this.S)+a);this.g.value+=a;this.g.scrollTop=
this.g.scrollHeight;this.w+=c}else if(null!=this.j){if(10==b||1024<=this.j.length)this.i(this.j),this.j="";10!=b&&(this.j+=String.fromCharCode(b))}this.u&&Ic(this.u,this.Z,yf(this,Hf))};k.Jd=function(a,b,c){v(this,a,b,c,"CONTROL");this.F?(this.I&&(b^this.C)&(If|Jf)&&(a=0,this.D?(a|=b&If?32:0,a|=b&Jf?320:0):(a|=b&If?16:0,a|=b&Jf?1048576:0),this.I.call(this.b,a)),this.C=b,this.C&Kf&&(this.F=!1)):(this.B=b,this.F=!0)};k.Id=function(a,b,c){v(this,a,b,c,"BAUDRATES");this.L=b};
var Af=12,Bf=16,Cf=192,Jf=2,If=32,Kf=64,Od=1,Df=2,Gf=4,Ff=128,Ef=15,Hf=240,zf=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],xf=[!1,0,0,133,142,39,238],sf="buffer",uf={0:rf.prototype.Ad,1:rf.prototype.zd},vf={0:rf.prototype.Kd,1:rf.prototype.Jd,2:rf.prototype.Id};hb(function(){for(var a=pa(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=na(c),d=new rf(d);oa(d,c)}});
function Lf(a){n.call(this,"Debugger",a);this.na=+a.base||16;this.N=this.Y=this.C=0;this.L=!1;this.b=-1;this.g=[];this.S={}}ba(Lf,n);Lf.prototype.Hb=function(){return-1};Lf.prototype.Ib=function(){};
Lf.prototype.xb=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.L?a="end":a=this.g[this.b+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(Na(a.substring(d,f))),d=f+1}}return b};
function Mf(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;
d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}function Da(a,b,c){var d="";b?11<b&&(b=11):b=a&-16777216?11:a&-65536?8:6;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;)d=String.fromCharCode((a&7)+48)+d,a>>=3;return(c?"0o":"")+d}function t(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}
function Ea(a){return t(a,2,!0)}function x(a){return t(a,4,!0)}function Fa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function Ga(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function Ha(){var a=Ia();return-1!==a.indexOf("pcjs.org",a.length-8)}function Ja(a){return a.replace(/[&<>"']/g,function(a){return Ka[a]})}function La(a,b){return(a+" ").slice(0,b)}
function Ma(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Ka={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"},Pa={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"};
function Qa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var g=d+e>>1,h;h=c(b,a[g]);0<h?d=g+1:(e=g,f=!h)}return f?d:~d}function Ra(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
function Sa(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 Ta(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
f,e))});if(b&&"object"==typeof b){var m="",r;for(r in b)b.hasOwnProperty(r)&&(m&&(m+="&"),m+=r+"="+encodeURIComponent(b[r]));m=m.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(m)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g}
function Ua(a,b){var c,d={ma:null,ra:null,Qa:null,Ia:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Qa=g.load;d.Ia=g.exec;if(e=g.bytes)d.ma=e;else if(e=g.words)for(d.ma=Array(2*e.length),f=c=0;c<e.length;c++)d.ma[f++]=e[c]&255,d.ma[f++]=e[c]>>8&255;else if(e=g.data)for(d.ma=Array(4*e.length),f=c=0;c<e.length;c++)d.ma[f++]=
e[c]&255,d.ma[f++]=e[c]>>8&255,d.ma[f++]=e[c]>>16&255,d.ma[f++]=e[c]>>24&255;else d.ma=g;d.ra=g.symbols;d.ma.length?1==d.ma.length&&(p(d.ma[0]),d=null):(p("Empty resource: "+a),d=null)}catch(h){p("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){p("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.ma=e)}return d}
function Ia(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Va(){return window?window.navigator.userAgent:""}function Wa(){if(null==Xa){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}Xa=a}return Xa}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 cb(a){if(window){var b=Va();return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1}function db(a){if(!eb){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}eb=c}return eb[a]}
function fb(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}function gb(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}function hb(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}
function ib(a){jb.init.push(a)}function kb(a){if(lb)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){ha("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function nb(a){!lb&&a?(lb=!0,ob&&pb("init"),qb&&pb("show")):lb=a}function pb(a){jb[a]&&kb(jb[a])}var eb=null,jb={init:[],show:[],exit:[]},ob=!1,qb=!1,lb=!0,Xa=null;hb("onload",function(){ob=!0;kb(jb.init)});hb("onpageshow",function(){qb=!0;kb(jb.show)});
hb(cb("Opera")||cb("iOS")?"onunload":"onbeforeunload",function(){kb(jb.exit)});
var rb="undefined"!==typeof ArrayBuffer,sb=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1],tb={cpu:1,bus:64,mem:128,port:256,nvr:16384,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function ub(a){n.call(this,"Panel",a)}aa(ub,n);
ub.prototype.ca=function(a,b,c,d){return this.R&&this.R.ca(a,b,c,d)||this.u&&this.u.ca(a,b,c,d)||this.B&&this.B.ca(a,b,c,d)||this.K&&this.K.ca(a,b,c,d)?!0:n.prototype.ca.call(this,a,b,c,d)};ub.prototype.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;this.B=wb(a,"Keyboard")};ub.prototype.va=function(a,b){b||xb();return!0};ub.prototype.ua=function(){return!0};
function xb(){for(var a=!1,b=qa(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=oa(d),f=la(e.id);f||(a=!0,f=new ub(e));pa(f,d);a&&ta(f)}}ib(xb);
function yb(a,b,c){n.call(this,"Bus",a);this.u=b;this.K=c;this.M=a.busWidth||16;this.N=Math.pow(2,this.M);this.C=this.N-1|0;this.g=(this.M>>1)+2;10>this.g&&(this.g=10);15<this.g&&(this.g=15);this.w=1<<this.g;this.O=this.w>>2;this.j=this.w-1;this.L=this.N/this.w|0;this.I=this.L-1;this.A=[];this.B=[];this.D=this.F=!1;this.S=[];this.T=[];a=new z;zb(a,this.K);this.b=Array(this.L);for(b=0;b<this.L;b++)this.b[b]=a;ta(this)}aa(yb,n);yb.prototype.reset=function(){};
yb.prototype.va=function(a,b){b||this.reset();return!0};function Ab(a,b,c,d){for(var e=b,f=c,g=e>>>a.g;0<f&&g<a.b.length;){var h=a.b[g],m=g*a.w,r=a.w-(e-m);r>f&&(r=f);if(h&&h.size){if(h.type==d){if(e+f<=h.J)return h.pb+=h.J-e,h.J=e,!0;if(e>=h.J+h.pb){r=h.size-(e-m);r>f&&(r=f);h.pb=e-h.J+r;e=m+a.w;f-=r;g++;continue}}return Bb(Cb,e,f)}e=new z(e,r,a.w,d);zb(e,a.K,h);a.b[g++]=e;e=m+a.w;f-=r}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Db[d]+" at "+x(b)),!0):Bb(Eb,b,c)}
function Fb(a,b){return a.b[(b&a.C)>>>a.g].ob(b&a.j,b)}function Gb(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].Hc(c,b):a.b[d++].Ya(c,b)|a.b[d&a.I].Ya(0,b+1)<<8}function Hb(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].Nb(c,b):a.b[d++].ob(c,b)|a.b[d&a.I].ob(0,b+1)<<8}function Ib(a,b,c){a.b[(b&a.C)>>>a.g].qb(b&a.j,c&255,b)}function Jb(a,b,c){var d=b&a.j,e=(b&a.C)>>>a.g;d!=a.j?a.b[e].Kc(d,c&65535,b):(a.b[e++].$a(d,c&255,b),a.b[e&a.I].$a(0,c>>8&255,b+1))}
function Kb(a){for(var b=0,c=[],d=0;d<a.L;d++){var e=a.b[d];if(e.Ca||e.Dc){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,m=[];g<e.length;){for(var r=e[g],u=g+1;u<e.length&&e[u]===r;)u++;m[h++]=u-g;m[h++]=r;g=u}m.length<e.length&&(e=m)}c[f]=e}}return c}function Lb(a,b){if(void 0===b)return a.D=!a.D,a.D;void 0===a.A[b]&&(a.A[b]=[null,!1]);a.A[b][1]=!a.A[b][1];return a.A[b][1]}
function Mb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var m=+e+d;m<=g;m++)void 0!==f.A[m]?p("Input port "+x(m)+" already registered"):f.A[m]=[h,!1]}}function Pb(a,b,c){for(var d=1,e=0,f=0;0<d;){var g=a.A[b],h=a.S[b]||1,m=1==h?255:2==h?65535:-1,r=m;void 0!==g?(g[0]&&(r=g[0](b,c),void 0===r?r=m:r&=m),a.K&&a.D!=g[1]&&Qb(a.K,b,r)):a.K&&(za(a.K,a,b,null,c),a.D&&Qb(a.K,b,r));e|=r<<f;f+=h<<3;b+=h;d-=h}return e}
function Rb(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function Sb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var m=+e+d;m<=g;m++)void 0!==f.B[m]?p("Output port "+x(m)+" already registered"):f.B[m]=[h,!1]}}
function Tb(a,b,c,d){for(var e=1,f=0;0<e;){var g=a.B[b],h=a.T[b]||1,m=1==h?255:2==h?65535:-1,m=(c>>>=f)&m;if(void 0!==g){if(g[0])g[0](b,m,d);a.K&&a.F!=g[1]&&Ub(a.K,b,m)}else a.K&&(za(a.K,a,b,m,d),a.F&&Ub(a.K,b,m));f+=h<<3;b+=h;e-=h}}function Bb(a,b,c){p("Memory block error ("+a+": "+t(b)+","+t(c)+")");return!1}var Cb=1,Eb=2,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 z(a,b,c,d){this.id=Yb+=2;this.b=null;this.J=a;this.pb=b;this.size=c||0;this.type=d||Zb;this.u=d==$b;zb(this);this.Ca=this.Dc=!1;if(c)if(rb)this.j=new ArrayBuffer(c),this.R=new DataView(this.j,0,c),this.g=new Uint8Array(this.j,0,c),this.w=new Uint16Array(this.j,0,c>>1),this.b=new Int32Array(this.j,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)}k=z.prototype;
k.save=function(){var a,b;if(rb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.R.getInt32(b<<2,!0);else a=this.b;return a};k.restore=function(a){if(a&&this.size==a.length<<2){var b;if(rb)for(b=0;b<a.length;b++)this.R.setInt32(b<<2,a[b],!0);else this.b=a;return this.Ca=!0}return!1};function ac(a,b){b||(b=ec);gc(a,b,void 0);hc(a,b,void 0)}function gc(a,b,c){c&&a.H||(a.Ya=b[0]||a.Gc,a.Hc=b[2]||a.Ic);if(c||void 0===c)a.ob=b[0]||a.Gc,a.Nb=b[2]||a.Ic}
function hc(a,b,c){c&&a.P||(a.$a=!a.u&&b[1]||a.rb,a.Kc=!a.u&&b[3]||a.Rb);if(c||void 0===c)a.qb=b[1]||a.rb,a.Sb=b[3]||a.Rb}k.Pa=function(a,b){b?this.P++||hc(this,ic,!1):this.H++||gc(this,ic,!1)};function jc(a,b){b?--a.P||(a.$a=a.u?a.rb:a.qb,a.Kc=a.u?a.Rb:a.Sb):--a.H||(a.Ya=a.ob,a.Hc=a.Nb)}function zb(a,b,c){a.K=b;a.H=a.P=0;c&&((a.H=c.H)&&gc(a,ic,!1),(a.P=c.P)&&hc(a,ic,!1))}k.Gc=function(){this.K&&xa(this.K,129)&&this.K.message("attempt to read invalid block %"+t(this.J),!0);return 255};
k.rb=function(a,b){this.K&&xa(this.K,129)&&this.K.message("attempt to write "+x(b)+" to invalid block %"+t(this.J),!0)};k.Ic=function(a,b){return this.Ya(a++,b++)|this.Ya(a,b)<<8};k.Rb=function(a,b,c){this.$a(a++,b&255,c++);this.$a(a,b>>8,c)};k.ie=function(a){return this.b[a>>2]>>>((a&3)<<3)&255};k.me=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};k.ve=function(a,b){var c=a>>2;a=(a&3)<<3;this.b[c]=this.b[c]&~(255<<a)|b<<a;this.Ca=!0};
k.ze=function(a,b){var c=a>>2;a=(a&3)<<3;24>a?this.b[c]=this.b[c]&~(65535<<a)|b<<a:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.Ca=!0};k.ge=function(a,b){if(this.K&&null!=this.J){var c=this.K;tc(c,this.J+a,1,c.I)&&c.da(!0)}return this.ob(a,b)};k.ke=function(a,b){if(this.K&&null!=this.J){var c=this.K;tc(c,this.J+a,2,c.I)&&c.da(!0)}return this.Nb(a,b)};
k.te=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;tc(d,this.J+a,1,d.w)&&d.da(!0)}this.u?this.rb(0,b):this.qb(a,b,c)};k.xe=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;tc(d,this.J+a,2,d.w)&&d.da(!0)}this.u?this.rb(0,b):this.Sb(a,b,c)};k.fe=function(a){return this.g[a]};k.he=function(a){return this.g[a]};k.je=function(a){return this.R.getUint16(a,!0)};k.le=function(a){return a&1?this.g[a]|this.g[a+1]<<8:this.w[a>>1]};k.se=function(a,b){this.g[a]=b;this.Ca=!0};
k.ue=function(a,b){this.g[a]=b;this.Ca=!0};k.we=function(a,b){this.R.setUint16(a,b,!0);this.Ca=!0};k.ye=function(a,b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.w[a>>1]=b;this.Ca=!0};var Zb=0,$b=2,Db=["NONE","RAM","ROM","VID","H/W"],Yb=0,ec=[],dc=[z.prototype.ie,z.prototype.ve,z.prototype.me,z.prototype.ze],ic=[z.prototype.ge,z.prototype.te,z.prototype.ke,z.prototype.xe];if(rb)var cc=[z.prototype.fe,z.prototype.se,z.prototype.je,z.prototype.we],bc=[z.prototype.he,z.prototype.ue,z.prototype.le,z.prototype.ye];
function uc(a,b){n.call(this,"CPU",a,1);var c=a.multiplier||1;this.Fa=a.cycles||b;this.U=c;this.Ta=Math.round(this.Fa/1E4)/100;this.Z=this.Ta*this.U;this.G.ka=!1;this.G.Qb=!1;this.G.lb=a.autoStart;this.G.Bc=!1;this.G.Wa=!1;this.ya=this.oa=0;this.za=a.csStart;this.na=a.csInterval;this.sa=a.csStop;this.T=[];this.Db=this.tb.bind(this);ta(this)}aa(uc,n);k=uc.prototype;
k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.K=d;for(b=0;b<vc.length;b++)(c=this.P[vc[b]])&&this.R.ca(null,vc[b],c);this.W=wb(a,"ChipSet");a=wc(a,"autoStart");null!=a&&(this.G.lb="true"==a?!0:"false"==a?!1:!!a);ta(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
k.va=function(a,b){if(!b){if(a&&this.restore){xc(this);if(!this.restore(a))return!1;yc(this)}else this.reset();this.K?(a=this.K,a.i("Type ? for help with PC8080 Debugger commands"),zc(a),a.ea&&(b=a.ea,a.ea=null,Ac(a,b))):this.i("No debugger detected")}Bc(this);return!0};k.ua=function(a){return a?this.save():!0};k.lb=function(){return this.G.lb||!this.K&&void 0===this.P.run?(this.tb(),!0):!1};k.Ec=function(){return 0};
function yc(a){void 0===a.za&&(a.za=0);void 0===a.na&&(a.na=-1);void 0===a.sa&&(a.sa=-1);a.G.Wa=0<=a.za&&0<a.na;a.G.Wa&&(a.ya=0,a.oa=a.za-a.la)}function Cc(a,b){if(a.G.Wa){var c=!1;a.ya=a.ya+a.Ec()|0;a.oa-=b;0>=a.oa&&(a.oa+=a.na,c=!0);0<=a.sa&&a.sa<=Dc(a)&&(a.na=a.sa=-1,yc(a),a.da(),c=!0);c&&a.i(Dc(a)+" cycles: checksum="+t(a.ya))}}
k.ca=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.P[b]=c;a=!0;break;case "run":this.P[b]=c;c.onclick=function(){var a;if(a=d.R)if(a=d.R,a.G.ja)a=!0;else{var b=null,c,h=ka(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.G.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.G.ja);c++);c==h.length&&(b=a);p("The "+b.type+" component ("+b.id+") is not "+(b.G.ready?"powered yet":"ready yet"+(b.zb?" (waiting for notification)":""))+".");a=!1}a&&(d.G.ka?d.da():d.tb())};
a=!0;break;case "speed":this.P[b]=c;a=!0;break;case "setSpeed":this.P[b]=c,c.onclick=function(){Ec(d,d.U<<1,!0)},c.textContent=this.Z.toFixed(2)+"Mhz",a=!0}return a};function Fc(a,b,c){a.la+=b;c&&(a.ga=a.b=0)}function Gc(a,b){var c=1;b&&1<a.U&&a.Y&&(c=a.Y/a.Ta);a.jb=Math.round(1E3/Hc);a.Na=Math.floor(a.Fa/Hc*c);b||(a.wa=a.Na);a.Va=0}function Dc(a){return a.la+a.X+a.ga-a.b}function xc(a){a.Y=0;a.kb=0;a.la=a.X=a.ga=a.b=0;yc(a);Ec(a,1)}
function Ec(a,b,c){var d=!1;if(void 0!==b){.8>a.Y/a.Z?b=1:d=!0;a.U=b;b=a.Ta*a.U;if(a.Z!=b){a.Z=b;b=a.Z.toFixed(2)+"Mhz";var e=a.P.setSpeed;e&&(e.textContent=b);a.i("target speed: "+b)}c&&a.R&&a.R.Za()}Fc(a,a.X);a.X=0;a.V=ga();a.ea=0;Gc(a);return d}function Ic(a,b){var c=a.T.length;a.T.push([-1,b]);return c}function Jc(a,b,c){0<=b&&b<a.T.length&&0>a.T[b][0]&&(c*=a.Fa*a.U/1E3,a.T[b][0]=c+Kc(a))}function Kc(a,b){var c=a.ga-=a.b;a.b=0;b&&(a.ga=0);return c}
k.tb=function(a){if(wa(this,!0)){if(!this.G.ka){Ec(this);this.R&&this.R.start(this.V,Dc(this));this.G.ka=!0;this.G.Qb=!0;this.W&&this.W.start();var b=this.P.run;b&&(b.textContent="Halt");this.R&&(Lc(this.R,!0),a&&this.R.Za(!0))}this.Va>=this.Fa&&Gc(this,!0);this.Ha=0;this.Ma=ga();this.ea&&(a=this.Ma-this.ea,a>this.jb&&(this.V+=a,this.V>this.Ma&&(this.V=this.Ma)));try{do{for(var c,d=this.G.Wa?1:this.Na,e=this.T.length-1;0<=e;e--){var f=this.T[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.Eb(c);c=Kc(this,!0);
this.Ha+=c;this.X+=c;Cc(this,c);a=c;for(var g=this.T.length-1;0<=g;g--){var h=this.T[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.wa-=c;if(0>=this.wa){this.wa+=this.Na;++this.kb>=Mc&&(this.R&&Lc(this.R),this.kb=0);break}}while(this.G.ka)}catch(m){this.da();Bc(this);this.R&&this.R.stop(ga(),Dc(this));wa(this,!1);ra(this,m.stack||m.message);return}c=setTimeout;d=this.Db;this.ea=ga();e=this.jb;this.Ha&&(e=Math.round(e*this.Ha/this.Na));e-=this.ea-this.Ma;if(f=this.ea-this.V)this.Y=Math.round(this.X/
(10*f))/100,864E5<=f&&(this.la=0,Ec(this));if(0>e||this.Y<this.Z)-1E3>e&&(this.V-=e),e=0;this.Va+=this.Ha;this.ea+=e;c(d,e)}else Bc(this),this.R&&this.R.stop(ga(),Dc(this))};k.Eb=function(){return 0};k.da=function(a){ua(this,!0);Kc(this);Fc(this,this.X);this.X=0;if(this.G.ka){this.G.ka=!1;this.W&&this.W.stop();var b=this.P.run;b&&(b.textContent="Run")}this.G.complete=a};function Bc(a,b){if(a.R){for(var c=a.R,d=0;d<c.A.length;d++)Nc(c.A[d],b);Lc(a.R,b)}}var Hc=30,Mc=15,vc=["power","reset"];
function Oc(a){var b=+a.model||8080;uc.call(this,a,1E6);this.xb=b;this.gb=Pc;xc(this);this.G.complete=this.G.zd=!1;this.ib=0;this.La=[];this.hb=0;Qc(this)}aa(Oc,uc);function Rc(a,b){a.La.push(b)}k=Oc.prototype;k.reset=function(){this.G.ka&&this.da();Qc(this);xc(this);this.G.error=!1;uc.prototype.reset.call(this)};function Qc(a){a.g=0;a.w=0;a.A=0;a.B=0;a.C=0;a.D=0;a.F=0;a.M=0;A(a,a.hb);Sc(a,0);a.S=0}function Tc(a,b){a.hb=b;A(a,b)}
k.Ec=function(){var a=this.g+this.w+this.A+this.B+this.C+this.D+this.F|0;return a=a+this.M+this.j+Uc(this)|0};k.save=function(){var a=new Vc(this);a.set(0,[this.g,this.w,this.A,this.B,this.C,this.D,this.F,this.M,this.j,Uc(this)]);a.set(1,[this.S,this.la,this.U]);a.set(2,Kb(this.H));return a.data()};
k.restore=function(a){var b=a[0];this.g=b[0];this.w=b[1];this.A=b[2];this.B=b[3];this.C=b[4];this.D=b[5];this.F=b[6];this.M=b[7]&65535;A(this,b[8]);Sc(this,b[9]);b=a[1];this.S=b[0];this.la=b[1];Ec(this,b[3]);a:{b=this.H;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.O){for(var f=0,g=Array(b.O),h=0;h<e.length-1;)for(var m=e[h++],r=e[h++];m--;)g[f++]=r;e=g}f=b.b[d];if(!f||!f.restore(e)){p("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
k.ca=function(a,b,c){switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.P[b]=c;this.ib++;a=!0;break;default:a=uc.prototype.ca.call(this,a,b,c)}return a};function Wc(a){return a.w<<8|a.A}function Xc(a,b){a.w=b>>8&255;a.A=b&255}function jd(a){return a.B<<8|a.C}function kd(a,b){a.B=b>>8&255;a.C=b&255}function D(a){return a.D<<8|a.F}
function ld(a,b){a.D=b>>8&255;a.F=b&255}function A(a,b){a.j=b&65535}function md(a){return a.I&256?1:0}function nd(a,b){a.I=a.I&255|b}function od(a){return sb[a.L&255]?4:0}function pd(a){return(a.L^a.O)&16?16:0}function qd(a){return a.I&255?0:64}function rd(a){return a.L&128?128:0}function Uc(a){return a.N&-214|rd(a)|qd(a)|pd(a)|od(a)|md(a)}function Sc(a,b){a.I=a.L=a.O=0;b&1&&(a.I|=256);b&4||(a.L|=1);b&16&&(a.O|=16);b&64||(a.I|=255);b&128&&(a.L^=192);a.N=a.N&-726|b&512|2}
function sd(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b)&255}function td(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?1:0))&255}function ud(a,b){a.I=a.L=a.O=a.g&b;(a.g|b)&8&&(a.O^=16);return a.I}function vd(a,b){a.O=b^255;b=a.L=b+255&255;a.I=a.I&-256|b;return b}function wd(a,b){a.O=b;b=a.L=b+1&255;a.I=a.I&-256|b;return b}function xd(a,b){return a.L=a.I=a.O=a.g|b}function yd(a,b){b^=255;a.O=a.g^b;return a.L=(a.I=a.g+b+1^256)&255}
function zd(a,b){b^=255;a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?0:1)^256)&255}function Ad(a,b){return a.L=a.I=a.O=a.g^b}function E(a,b){a=a.H;return a.b[(b&a.C)>>>a.g].Ya(b&a.j,b)}function Bd(a,b,c){a=a.H;a.b[(b&a.C)>>>a.g].$a(b&a.j,c&255,b)}function F(a){var b=E(a,a.j);A(a,a.j+1);return b}function G(a){var b=Gb(a.H,a.j);A(a,a.j+2);return b}function Cd(a){var b=Gb(a.H,a.M);a.M=a.M+2&65535;return b}function H(a,b){a.M=a.M-2&65535;Jb(a.H,a.M,b)}
function Dd(a){if(a.b&&a.S&255&&a.N&512){for(var b=0;8>b&&!(a.S&1<<b);b++);a.S&=~(0>b?255:1<<b);a.N&=-513;a.S&=-257;a.gb[199|b<<3].call(a)}return a.S&256?(Kc(a),!1):!0}function Ed(a,b){a.S|=1<<b;a.N&512&&Kc(a)}function I(a,b,c,d){d=d||2;a.P[b]&&(void 0===c&&(ra(a,"Value for "+b+" is invalid"),a.da()),c=!a.G.ka||a.G.Bc?t(c,d):"--------".substr(0,d),a.P[b].textContent!=c&&(a.P[b].textContent=c))}
k.Eb=function(a){this.G.complete=!0;var b=this.G.zd=this.K&&Fd(this.K),c=a?this.G.Qb?0:1:-1;this.G.Qb=!1;this.ga=this.b=a;if(Dd(this)){do{if(b){if(Gd(this.K,this.j,c)){this.da();break}c=1}this.gb[F(this)].call(this)}while(0<this.b)}return this.G.complete?this.ga-this.b:void 0===this.G.complete?0:-1};ib(function(){for(var a=qa(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Oc(d);pa(d,c)}});function Hd(){this.b-=4}function Id(){A(this,G(this));this.b-=10}
function Jd(){A(this,Cd(this));this.b-=10}function Kd(){var a=G(this);H(this,this.j);A(this,a);this.b-=17}
var Pc=[Hd,function(){Xc(this,G(this));this.b-=10},function(){Bd(this,Wc(this),this.g);this.b-=7},function(){Xc(this,Wc(this)+1);this.b-=5},function(){this.w=wd(this,this.w);this.b-=5},function(){this.w=vd(this,this.w);this.b-=5},function(){this.w=F(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|a>>8;nd(this,a&256);this.b-=4},Hd,function(){var a;ld(this,a=D(this)+Wc(this));nd(this,a>>8&256);this.b-=10},function(){this.g=E(this,Wc(this));this.b-=7},function(){Xc(this,Wc(this)-1);this.b-=
5},function(){this.A=wd(this,this.A);this.b-=5},function(){this.A=vd(this,this.A);this.b-=5},function(){this.A=F(this);this.b-=7},function(){var a=this.g<<8&256;this.g=(a|this.g)>>1;nd(this,a);this.b-=4},Hd,function(){kd(this,G(this));this.b-=10},function(){Bd(this,jd(this),this.g);this.b-=7},function(){kd(this,jd(this)+1);this.b-=5},function(){this.B=wd(this,this.B);this.b-=5},function(){this.B=vd(this,this.B);this.b-=5},function(){this.B=F(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|
md(this);nd(this,a&256);this.b-=4},Hd,function(){var a;ld(this,a=D(this)+jd(this));nd(this,a>>8&256);this.b-=10},function(){this.g=E(this,jd(this));this.b-=7},function(){kd(this,jd(this)-1);this.b-=5},function(){this.C=wd(this,this.C);this.b-=5},function(){this.C=vd(this,this.C);this.b-=5},function(){this.C=F(this);this.b-=7},function(){var a=this.g<<8;this.g=(md(this)<<8|this.g)>>1;nd(this,a&256);this.b-=4},Hd,function(){ld(this,G(this));this.b-=10},function(){var a=G(this);Jb(this.H,a,D(this));
this.b-=16},function(){ld(this,D(this)+1);this.b-=5},function(){this.D=wd(this,this.D);this.b-=5},function(){this.D=vd(this,this.D);this.b-=5},function(){this.D=F(this);this.b-=7},function(){var a=0,b=md(this);if(pd(this)||9<(this.g&15))a|=6;if(b||154<=this.g)a|=96,b=1;this.g=sd(this,a);nd(this,b?256:0);this.b-=4},Hd,function(){var a;ld(this,a=D(this)+D(this));nd(this,a>>8&256);this.b-=10},function(){var a;a=G(this);a=Gb(this.H,a);ld(this,a);this.b-=16},function(){ld(this,D(this)-1);this.b-=5},function(){this.F=
wd(this,this.F);this.b-=5},function(){this.F=vd(this,this.F);this.b-=5},function(){this.F=F(this);this.b-=7},function(){this.g=~this.g&255;this.b-=4},Hd,function(){this.M=G(this)&65535;this.b-=10},function(){Bd(this,G(this),this.g);this.b-=13},function(){this.M=this.M+1&65535;this.b-=5},function(){var a=D(this);Bd(this,a,wd(this,E(this,a)));this.b-=10},function(){var a=D(this);Bd(this,a,vd(this,E(this,a)));this.b-=10},function(){Bd(this,D(this),F(this));this.b-=10},function(){this.I|=256;this.b-=
4},Hd,function(){var a;ld(this,a=D(this)+this.M);nd(this,a>>8&256);this.b-=10},function(){this.g=E(this,G(this));this.b-=13},function(){this.M=this.M-1&65535;this.b-=5},function(){this.g=wd(this,this.g);this.b-=5},function(){this.g=vd(this,this.g);this.b-=5},function(){this.g=F(this);this.b-=7},function(){nd(this,md(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.w=this.A;this.b-=5},function(){this.w=this.B;this.b-=5},function(){this.w=this.C;this.b-=5},function(){this.w=this.D;this.b-=
5},function(){this.w=this.F;this.b-=5},function(){this.w=E(this,D(this));this.b-=7},function(){this.w=this.g;this.b-=5},function(){this.A=this.w;this.b-=5},function(){this.b-=5},function(){this.A=this.B;this.b-=5},function(){this.A=this.C;this.b-=5},function(){this.A=this.D;this.b-=5},function(){this.A=this.F;this.b-=5},function(){this.A=E(this,D(this));this.b-=7},function(){this.A=this.g;this.b-=5},function(){this.B=this.w;this.b-=5},function(){this.B=this.A;this.b-=5},function(){this.b-=5},function(){this.B=
this.C;this.b-=5},function(){this.B=this.D;this.b-=5},function(){this.B=this.F;this.b-=5},function(){this.B=E(this,D(this));this.b-=7},function(){this.B=this.g;this.b-=5},function(){this.C=this.w;this.b-=5},function(){this.C=this.A;this.b-=5},function(){this.C=this.B;this.b-=5},function(){this.b-=5},function(){this.C=this.D;this.b-=5},function(){this.C=this.F;this.b-=5},function(){this.C=E(this,D(this));this.b-=7},function(){this.C=this.g;this.b-=5},function(){this.D=this.w;this.b-=5},function(){this.D=
this.A;this.b-=5},function(){this.D=this.B;this.b-=5},function(){this.D=this.C;this.b-=5},function(){this.b-=5},function(){this.D=this.F;this.b-=5},function(){this.D=E(this,D(this));this.b-=7},function(){this.D=this.g;this.b-=5},function(){this.F=this.w;this.b-=5},function(){this.F=this.A;this.b-=5},function(){this.F=this.B;this.b-=5},function(){this.F=this.C;this.b-=5},function(){this.F=this.D;this.b-=5},function(){this.b-=5},function(){this.F=E(this,D(this));this.b-=7},function(){this.F=this.g;
this.b-=5},function(){Bd(this,D(this),this.w);this.b-=7},function(){Bd(this,D(this),this.A);this.b-=7},function(){Bd(this,D(this),this.B);this.b-=7},function(){Bd(this,D(this),this.C);this.b-=7},function(){Bd(this,D(this),this.D);this.b-=7},function(){Bd(this,D(this),this.F);this.b-=7},function(){var a=this.j-1;if(this.La.length)for(var b=0;b<this.La.length;b++)if(this.La[b](a))return;this.b-=7;this.S|=256;Kc(this);this.K&&xa(this,-2147483648)?(A(this,a),this.K.da()):this.N&512||(this.K&&A(this,a),
this.da())},function(){Bd(this,D(this),this.g);this.b-=7},function(){this.g=this.w;this.b-=5},function(){this.g=this.A;this.b-=5},function(){this.g=this.B;this.b-=5},function(){this.g=this.C;this.b-=5},function(){this.g=this.D;this.b-=5},function(){this.g=this.F;this.b-=5},function(){this.g=E(this,D(this));this.b-=7},function(){this.b-=5},function(){this.g=sd(this,this.w);this.b-=4},function(){this.g=sd(this,this.A);this.b-=4},function(){this.g=sd(this,this.B);this.b-=4},function(){this.g=sd(this,
this.C);this.b-=4},function(){this.g=sd(this,this.D);this.b-=4},function(){this.g=sd(this,this.F);this.b-=4},function(){this.g=sd(this,E(this,D(this)));this.b-=7},function(){this.g=sd(this,this.g);this.b-=4},function(){this.g=td(this,this.w);this.b-=4},function(){this.g=td(this,this.A);this.b-=4},function(){this.g=td(this,this.B);this.b-=4},function(){this.g=td(this,this.C);this.b-=4},function(){this.g=td(this,this.D);this.b-=4},function(){this.g=td(this,this.F);this.b-=4},function(){this.g=td(this,
E(this,D(this)));this.b-=7},function(){this.g=td(this,this.g);this.b-=4},function(){this.g=yd(this,this.w);this.b-=4},function(){this.g=yd(this,this.A);this.b-=4},function(){this.g=yd(this,this.B);this.b-=4},function(){this.g=yd(this,this.C);this.b-=4},function(){this.g=yd(this,this.D);this.b-=4},function(){this.g=yd(this,this.F);this.b-=4},function(){this.g=yd(this,E(this,D(this)));this.b-=7},function(){this.g=yd(this,this.g);this.b-=4},function(){this.g=zd(this,this.w);this.b-=4},function(){this.g=
zd(this,this.A);this.b-=4},function(){this.g=zd(this,this.B);this.b-=4},function(){this.g=zd(this,this.C);this.b-=4},function(){this.g=zd(this,this.D);this.b-=4},function(){this.g=zd(this,this.F);this.b-=4},function(){this.g=zd(this,E(this,D(this)));this.b-=7},function(){this.g=zd(this,this.g);this.b-=4},function(){this.g=ud(this,this.w);this.b-=4},function(){this.g=ud(this,this.A);this.b-=4},function(){this.g=ud(this,this.B);this.b-=4},function(){this.g=ud(this,this.C);this.b-=4},function(){this.g=
ud(this,this.D);this.b-=4},function(){this.g=ud(this,this.F);this.b-=4},function(){this.g=ud(this,E(this,D(this)));this.b-=7},function(){this.g=ud(this,this.g);this.b-=4},function(){this.g=Ad(this,this.w);this.b-=4},function(){this.g=Ad(this,this.A);this.b-=4},function(){this.g=Ad(this,this.B);this.b-=4},function(){this.g=Ad(this,this.C);this.b-=4},function(){this.g=Ad(this,this.D);this.b-=4},function(){this.g=Ad(this,this.F);this.b-=4},function(){this.g=Ad(this,E(this,D(this)));this.b-=7},function(){this.g=
Ad(this,this.g);this.b-=4},function(){this.g=xd(this,this.w);this.b-=4},function(){this.g=xd(this,this.A);this.b-=4},function(){this.g=xd(this,this.B);this.b-=4},function(){this.g=xd(this,this.C);this.b-=4},function(){this.g=xd(this,this.D);this.b-=4},function(){this.g=xd(this,this.F);this.b-=4},function(){this.g=xd(this,E(this,D(this)));this.b-=7},function(){this.g=xd(this,this.g);this.b-=4},function(){yd(this,this.w);this.b-=4},function(){yd(this,this.A);this.b-=4},function(){yd(this,this.B);this.b-=
4},function(){yd(this,this.C);this.b-=4},function(){yd(this,this.D);this.b-=4},function(){yd(this,this.F);this.b-=4},function(){yd(this,E(this,D(this)));this.b-=7},function(){yd(this,this.g);this.b-=4},function(){qd(this)||(A(this,Cd(this)),this.b-=6);this.b-=5},function(){Xc(this,Cd(this));this.b-=10},function(){var a=G(this);qd(this)||A(this,a);this.b-=10},Id,function(){var a=G(this);qd(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=11},function(){H(this,Wc(this));this.b-=11},function(){this.g=
sd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,0);this.b-=11},function(){qd(this)&&(A(this,Cd(this)),this.b-=6);this.b-=5},Jd,function(){var a=G(this);qd(this)&&A(this,a);this.b-=10},Id,function(){var a=G(this);qd(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Kd,function(){this.g=td(this,F(this));this.b-=7},function(){H(this,this.j);A(this,8);this.b-=11},function(){md(this)||(A(this,Cd(this)),this.b-=6);this.b-=5},function(){kd(this,Cd(this));this.b-=10},function(){var a=G(this);
md(this)||A(this,a);this.b-=10},function(){var a=F(this);Tb(this.H,a,this.g,this.j+-2&65535);this.b-=10},function(){var a=G(this);md(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=11},function(){H(this,jd(this));this.b-=11},function(){this.g=yd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,16);this.b-=11},function(){md(this)&&(A(this,Cd(this)),this.b-=6);this.b-=5},Jd,function(){var a=G(this);md(this)&&A(this,a);this.b-=10},function(){var a=F(this);this.g=Pb(this.H,a,this.j+-2&65535)&
255;this.b-=10},function(){var a=G(this);md(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Kd,function(){this.g=zd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,24);this.b-=11},function(){od(this)||(A(this,Cd(this)),this.b-=6);this.b-=5},function(){ld(this,Cd(this));this.b-=10},function(){var a=G(this);od(this)||A(this,a);this.b-=10},function(){var a=Cd(this);H(this,D(this));ld(this,a);this.b-=18},function(){var a=G(this);od(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=
11},function(){H(this,D(this));this.b-=11},function(){this.g=ud(this,F(this));this.b-=7},function(){H(this,this.j);A(this,32);this.b-=11},function(){od(this)&&(A(this,Cd(this)),this.b-=6);this.b-=5},function(){A(this,D(this));this.b-=5},function(){var a=G(this);od(this)&&A(this,a);this.b-=10},function(){var a=D(this);ld(this,jd(this));kd(this,a);this.b-=5},function(){var a=G(this);od(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Kd,function(){this.g=Ad(this,F(this));this.b-=7},function(){H(this,
this.j);A(this,40);this.b-=11},function(){rd(this)||(A(this,Cd(this)),this.b-=6);this.b-=5},function(){var a=Cd(this);Sc(this,a&255|this.N&-256);this.g=a>>8;this.b-=10},function(){var a=G(this);rd(this)||A(this,a);this.b-=10},function(){this.N&=-513;this.b-=4},function(){var a=G(this);rd(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=11},function(){H(this,Uc(this)&255|this.g<<8);this.b-=11},function(){this.g=xd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,48);this.b-=11},function(){rd(this)&&
(A(this,Cd(this)),this.b-=6);this.b-=5},function(){this.M=D(this)&65535;this.b-=5},function(){var a=G(this);rd(this)&&A(this,a);this.b-=10},function(){this.N|=512;this.b-=4;Dd(this)},function(){var a=G(this);rd(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Kd,function(){yd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,56);this.b-=11}];
function Ld(a){n.call(this,"ChipSet",a,32768);var b=a.model;b&&!Md[b]&&ha("Unrecognized ChipSet model: "+b);this.g=Md[b]||{};a.sound&&(this.U=null,window&&(this.U=window.AudioContext||window.webkitAudioContext),this.U&&new this.U);ta(this)}aa(Ld,n);k=Ld.prototype;k.ca=function(){return!1};
k.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;this.R=a;this.B=wb(a,"Keyboard");this.C=wb(a,"SerialPort");this.video=wb(a,"Video");Mb(b,this,this.g.Bb);Sb(b,this,this.g.Cb);if(d){var e=this;Nd(d,16384,function(){for(var a="",b=0;b<e.j.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=x(e.j[b]);e.K.i(a)})}};k.va=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){this.g.INIT&&!this.restore(this.g.INIT)&&this.aa("reset error")};
k.save=function(){var a=new Vc(this);switch(this.g.pa){case Od.pa:a.set(0,[this.ea,this.A,this.ga,this.N,this.T,this.Y,this.Z]);break;case J.pa:a.set(0,[this.W,this.D]),a.set(1,[this.F,this.I]),a.set(2,[this.w,this.O,this.X,this.V]),a.set(3,[this.M,this.b,this.L,this.S,this.j])}return a.data()};
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.g.pa){case Od.pa:return this.ea=b[0],this.A=b[1],this.ga=b[2],this.N=b[3],this.T=b[4],this.Y=b[5],this.Z=b[6],!0;case J.pa:return this.W=b[0],this.D=b[1],b=a[1],this.F=b[0],this.I=b[1],b=a[2],this.w=b[0],this.O=b[1],this.X=b[2],this.V=b[3],b=a[3],this.M=b[0],this.b=b[1],this.L=b[2],this.S=b[3],this.j=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.Jd=function(a,b){var c=this.ea;q(this,a,null,b,"STATUS0",c,!0);return c};
k.Kd=function(a,b){var c=this.A;q(this,a,null,b,"STATUS1",c,!0);return c};k.Ld=function(a,b){var c=this.ga;q(this,a,null,b,"STATUS2",c,!0);return c};k.Id=function(a,b){var c=this.N>>8-this.T&255;q(this,a,null,b,"SHIFT.RESULT",c,!0);return c};k.Wd=function(a,b,c){q(this,a,b,c,"SHIFT.COUNT",null,!0);this.T=b};k.Yd=function(a,b,c){q(this,a,b,c,"SOUND1",null,!0);this.Y=b};k.Xd=function(a,b,c){q(this,a,b,c,"SHIFT.DATA",null,!0);this.N=b<<8|this.N>>8};
k.Zd=function(a,b,c){q(this,a,b,c,"SOUND2",null,!0);this.Z=b};k.$d=function(a,b,c){q(this,a,b,c,"WATCHDOG",null,!0)};function Pd(a){var b=0,c=0,d=~a.M;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
k.Md=function(a,b){var c=this.D,c=c&~J.xa.jc;if((Dc(this.u)&64)<<1&&(c|=J.xa.jc,c!=this.D)){var d,e;d=this.L&1;e=this.L>>1&7;switch(e){case J.Aa.Ja.nd:break;case J.Aa.Ja.Lc:this.M=this.M<<1|d;break;case J.Aa.Ja.Rc:d=Pd(this);this.j[d]=J.Aa.vb;ya(this,"doNVRCommand(): erase data at addr "+x(d));break;case J.Aa.Ja.Mc:this.b=this.b<<1|d;break;case J.Aa.Ja.rd:d=Pd(this);e=this.b&J.Aa.vb;this.j[d]=e;ya(this,"doNVRCommand(): write data "+x(e)+" to addr "+x(d));break;case J.Aa.Ja.ld:d=Pd(this);e=this.j[d];
null==e&&(e=J.Aa.vb);this.b=e;ya(this,"doNVRCommand(): read data "+x(e)+" from addr "+x(d));break;case J.Aa.Ja.md:this.b<<=1;this.S=this.b&J.Aa.vb+1;break;default:ya(this,"doNVRCommand(): unrecognized command "+Ea(e))}}c&=~J.xa.kc;this.S&&(c|=J.xa.kc);c&=~J.xa.dc;if(d=this.B){d=this.B;if(e=d.A)e=d.u,e=Dc(d.u)>=d.F+e.Fa*e.U/1E3*1.2731488;e&&(d.A=!1);d=!d.A}d&&(c|=J.xa.dc);c&=~J.xa.sc;this.C&&this.C.ia&Qd&&(c|=J.xa.sc);this.D=c;q(this,a,null,b,"FLAGS",c);return c};
k.ae=function(a,b,c){q(this,a,b,c,"BRIGHTNESS");this.W=b};k.de=function(a,b,c){q(this,a,b,c,"NVR.LATCH");this.L=b};k.ce=function(a,b,c){q(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.w=this.w&-4|a;break;case 1:this.w=this.w&-13|a<<2;this.video&&(b=this.video,a=this.w,ya(b,"updateScrollOffset("+a+")"),b.sa!==a&&((b.sa=a)?Nc(b,!0):b.ya=!0));break;case 2:switch(a){case 0:this.O=~this.O;break;case 2:case 3:this.X=3-a}break;case 3:this.V=a}};
k.be=function(a,b,c){q(this,a,b,c,"DC011");b&J.Ka.kd?(b&=J.Ka.oc,this.I!=b&&(this.I=b,this.video&&(a=this.video,b=this.I==J.Ka.oc?50:60,ya(a,"updateRate("+b+")"),a.jb=b))):(b&=J.Ka.Wb,this.F!=b&&(this.F=b,this.video&&(a=this.F==J.Ka.Wb?132:80,b=this.video,ya(b,"updateDimensions("+a+","+(80<a&&this.D&J.xa.ic?14:24)+")"),b.O=a,b.fa=b.Ha,80<a&&b.fa--,Rd(b)&&Sd(b))))};
var Od={pa:1978.1,pd:{qa:0,ff:1,kf:16,sf:32,Bf:64,Af:128,bb:14},Oa:{qa:1,Pc:1,jd:2,ed:4,fd:16,gd:32,hd:64,bb:8},qd:{qa:2,ef:3,Jf:4,gf:8,wf:16,xf:32,yf:64,hf:128,bb:0},Ff:{qa:3},Df:{qa:2,tf:7},Hf:{qa:3,Kf:1,Gf:2,zf:4,qf:8,jf:16,Ae:32},Ef:{qa:4},If:{qa:5,lf:1,mf:2,nf:4,pf:8,Lf:16}},J={pa:100,xa:{qa:66,sc:1,ic:2,dd:4,vf:8,uf:16,kc:32,jc:64,dc:128},Oc:{qa:66,INIT:0},Ka:{qa:194,De:0,Wb:16,kd:32,oc:48,Uc:0,Vc:32},ub:{qa:162,Cf:0,Xc:0,Tc:0,Wc:0,Sc:0},Aa:{rf:{qa:98},Ja:{Mc:0,Lc:1,md:2,rd:4,Rc:5,ld:6,nd:7},
vb:16383}},Md={SI1978:Od,VT100:J};Od.INIT=[[Od.pd.bb,Od.Oa.bb,Od.qd.bb,0,0,0,0]];
J.INIT=[[J.Oc.INIT,J.xa.ic|J.xa.dd],[J.Ka.Uc,J.Ka.Vc],[J.ub.Xc,J.ub.Tc,J.ub.Wc,J.ub.Sc],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];Od.Bb={0:Ld.prototype.Jd,1:Ld.prototype.Kd,2:Ld.prototype.Ld,3:Ld.prototype.Id};
Od.Cb={2:Ld.prototype.Wd,3:Ld.prototype.Yd,4:Ld.prototype.Xd,5:Ld.prototype.Zd,6:Ld.prototype.$d};J.Bb={66:Ld.prototype.Md};J.Cb={66:Ld.prototype.ae,98:Ld.prototype.de,162:Ld.prototype.ce,194:Ld.prototype.be};ib(function(){for(var a=qa(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Ld(d);pa(d,c)}});
function Td(a){n.call(this,"ROM",a);this.b=null;this.A=a.addr;this.g=a.size;this.w=a.alias;this.j=a.file;this.B=Fa(this.j);if(this.j){a=this.j;var b=Ga(this.B);"json"!=b&&"hex"!=b&&(a=Ia()+"/api/v1/dump?file="+this.j+"&format=bytes&decimal=true");var c=this;Ta(a,null,!0,function(a,b,f){Ud(c,a,b,f)})}}aa(Td,n);Td.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;Vd(this)};
Td.prototype.va=function(){if(this.ra){if(this.K){var a=this.K,b=this.id,c=this.A,d=this.g,e=this.ra,f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var m=h.o,r=h.a;if(void 0!==m){var u=f,m=[m>>>0,g],v=Qa(u,m,a.Ac);0>v&&u.splice(-(v+1),0,m)}r&&(h.a=r.replace(/''/g,'"'))}a.A.push({Mf:b,J:c,Qd:d,ra:e,zc:f})}delete this.ra}return!0};Td.prototype.ua=function(){return!0};
function Ud(a,b,c,d){if(d)a.aa("Unable to load system ROM (error "+d+": "+b+")");else{ea(a.eb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.data;if(f)a.b=f;else if(g)for(a.b=Array(4*g.length),d=c=0;c<g.length;c++)a.b[d++]=g[c]&255,a.b[d++]=g[c]>>8&255,a.b[d++]=g[c]>>16&255,a.b[d++]=g[c]>>24&255;else a.b=e;a.ra=e.symbols;if(!a.b.length){p("Empty ROM: "+b);return}if(1==a.b.length){p(a.b[0]);return}}catch(h){a.aa("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=Ba(b[e],16);Vd(a)}}
function Vd(a){if(!sa(a))if(!a.j)ta(a);else if(a.b&&a.H){a.g||(a.g=a.b.length);if(a.b.length!=a.g)ra(a,"ROM size ("+t(a.b.length,8,!0)+") does not match specified size ("+t(a.g,8,!0)+")");else{var b;b=a.A;if(Ab(a.H,b,a.g,$b)){var c;for(c=0;c<a.b.length;c++)Ib(a.H,b+c,a.b[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.H,g=d.g,h=[],m=d.A>>>f.g;0<g&&m<f.b.length;)h.push(f.b[m++]),g-=f.w;f=d.H;d=d.g;g=0;for(e>>>=
f.g;0<d&&e<f.b.length;){m=h[g++];if(!m)break;f.b[e++]=m;d-=f.w}}delete a.b}}ta(a)}}ib(function(){for(var a=qa(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Td(d);pa(d,c)}});
function Wd(a){n.call(this,"RAM",a);this.ra=this.g=null;this.w=a.addr;this.A=a.size;this.Qa=a.load;this.Ia=a.exec;this.j=!1;this.b=a.file;this.B=Fa(this.b);if(this.b){a=this.b;var b=Ga(this.B);"json"!=b&&"hex"!=b&&(a=Ia()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;Ta(a,null,!0,function(a,b,f){f?c.aa("Unable to load RAM resource (error "+f+": "+a+")"):(ea(c.eb,a,b),(a=Ua(a,b))?(c.g=a.ma,c.ra=a.ra,null==c.Qa&&(c.Qa=a.Qa),null==c.Ia&&(c.Ia=a.Ia)):c.b=null,Xd(c))})}}aa(Wd,n);
Wd.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;Xd(this)};Wd.prototype.va=function(){return!0};Wd.prototype.ua=function(){return!0};
function Xd(a){!a.j&&a.A&&Ab(a.H,a.w,a.A,1)&&(a.j=!0);if(!sa(a)){if(!a.j)p("No RAM allocated");else if(a.b){if(!a.g||!a.H)return;var b=a.w;null!==a.Qa&&(b=a.Qa);for(var c=0;c<a.g.length;c++)Ib(a.H,b+c,a.g[c]);if(null!==a.Ia){if(a.Ia==Yd){for(c=0;c<Zd.length;c++)Ib(a.H,Zd[c],118);Rc(a.u,function(a){return function(b){if(0<=Zd.indexOf(b)){var c=!1,d=a.u,e=a.K;if(b==$d)switch(c=!0,d.A){case ae:be(a,String.fromCharCode(d.C));break;case ce:for(var m=jd(d),r="",u=255;u--;){var v=E(a.u,m++);if(36==v)break;
r+=String.fromCharCode(v)}be(a,r);break;default:c=!1}c?Jd.call(d):e&&(a.i("\nCP/M vector "+x(b)),A(d,b),e.da());b=!0}else b=!1;return b}}(a))}Tc(a.u,a.Ia)}delete a.g}ta(a)}}Wd.prototype.reset=function(){};function be(a,b){b=b.replace(/\r/g,"");a.ta&&(a.ta.value+=b,a.ta.scrollTop=a.ta.scrollHeight)}var $d=5,ae=2,ce=9,Yd=256,Zd=[0,$d];ib(function(){for(var a=qa(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Wd(d);pa(d,c)}});
function de(a){n.call(this,"Keyboard",a,65536);(a=a.model)&&!ee[a]&&ha("Unrecognized Keyboard8080 model: "+a);this.b=ee[a]||{};this.reset();ta(this)}aa(de,n);k=de.prototype;
k.ca=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.P[e]){if("led"==a&&this.b.fb[b])return this.P[e]=c,!0;switch(b){case "kbd":case "screen":return cb("iOS")?(c.onkeypress=function(a){var b=!1;if(a=d.b.sb[a.keyCode||a.charCode]){a&128&&(a&=127,b=!0);var c;a:{for(c in d.b.Sa)if(d.b.Sa[c]==a){c=+c;break a}c=0}c&&(b?fe(d,16,!0,!0):fe(d,16,!1),fe(d,c,!0,!0))}return!0},c.onkeydown=function(a){return ge(d,a,!0)},c.onkeyup=function(a){return ge(d,a,!1)}):(c.onkeydown=function(a){return he(d,a,!0)},
c.onkeyup=function(a){return he(d,a,!1)},c.onkeypress=function(a){a=a.keyCode||a.charCode;a>=l.ab&&a<=l.wb?d.g&(ie|Ee)||(d.g|=Ee,fe(d,20,!0),Fe(d)):a>=l.yc&&a<=l.z&&d.g&Ee&&(d.g&=~Ee,fe(d,20,!1),Fe(d));return!0}),c.onpaste=function(a){a:{if(d.C&&d.C.Ra&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a=a.clipboardData||window.clipboardData)){Ge(d.C,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.b.Ua&&void 0!==this.b.Ua[b])return this.P[e]=c,c.onclick=
function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=17!=b;if(!e){c.style.fontWeight="normal";if(d=!(a.g&He))c.style.fontWeight="bold";Ie(a,b,d)}fe(a,b,d,e);a.R&&a.R.Za()}}(this,this.b.Ua[b]),!0}}return!1};k.Ea=function(a,b,c,d){this.R=a;this.u=c;this.K=d;var e=this;this.L=Ic(this.u,function(){Je(e)});this.W=wb(a,"ChipSet");this.C=wb(a,"SerialPort");Mb(b,this,this.b.Bb);Sb(b,this,this.b.Cb)};
k.va=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){this.j=[];this.g=0;this.b.INIT&&!this.restore(this.b.INIT)&&this.aa("reset error")};k.save=function(){var a=new Vc(this);switch(this.b.pa){case K.pa:a.set(0,[this.D,this.B,this.A,this.F,-1])}return a.data()};
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.pa){case Ke.pa:return!0;case K.pa:return this.D=b[0],Fe(this,this.D&K.Ba.ec),this.B=b[1],this.A=b[2],this.F=b[3],this.w=b[4],!0}return!1};function Fe(a,b){var c;null!=b?a.I=b:b=a.I;for(var d in a.b.fb)if(c="led-"+d,c=a.P[c]){var e=a.b.fb[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+t(16711680,6):"#000000"}if(c=a.P["led-caps-lock"])c.style.backgroundColor=a.g&Ee?"#"+t(65280,6):"#000000"}
function Ie(a,b,c,d){var e=0;switch(b){case 16:e=d?Le:Me;break;case 17:e=d?Ne:He;break;case 18:e=d?Oe:Pe;break;case 91:e=d?Qe:Re;break;case 20:e=Ee,c=!(a.g&e)}e&&(a.g=c?a.g|e:a.g&~e);return c}
function he(a,b,c){var d=!0,e=b.keyCode,e=ca[e]||e;c=Ie(a,e,c,2==b.location);var f;a:if(e=a.b.Tb[e]||e,a.b.Sa[e])f=e;else{for(f in a.b.Ua)if(a.b.Ua[f]===e)break a;f=null}f&&!b.metaKey&&(d=!1,a.g&(Se|Te)&&(13==f?(f=118,d=!0):8==f&&(f=46,d=!0),d&&(a.g=c?a.g|Te:a.g&~Te)),d=fe(a,f,c),(!(f>=l.ab&&f<=l.wb)||a.g|Ue)&&b.preventDefault&&b.preventDefault());return d}
function ge(a,b,c){var d=!0;if(c){b=b.keyCode;var e=a.b.Sa[b];if(e){var f;a:{for(f in a.b.sb)if(a.b.sb[f]==e){f=+f;break a}f=0}f||(d=fe(a,b,c,!0))}}return d}
function fe(a,b,c,d){var e;a:{for(e=0;e<a.j.length;e++)if(a.j[e].Pb==b)break a;e=-1}if(c)0>e?a.j.push({Pb:b,Mb:Date.now(),yb:d||!1}):(a.j[e].Mb=Date.now(),a.j[e].yb=d||!1),d&&Je(a);else if(0<=e){if(!a.j[e].yb&&(d=a.j[e].Mb)&&Date.now()-d<Ve)return a.j[e].yb=!0,Je(a),!0;a.j.splice(e,1)}if(a.W){d=0;switch(b){case "1p":d=Od.Oa.ed;break;case "2p":d=Od.Oa.jd;break;case "coin":d=Od.Oa.Pc;break;case "left":d=Od.Oa.gd;break;case "right":d=Od.Oa.hd;break;case "fire":d=Od.Oa.fd}d&&(a=a.W,b=d,a.A&=~b,c&&(a.A|=
b))}return!0}function Je(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].yb){var d=a.j[b].Pb,e=Ve-(Date.now()-a.j[b].Mb);if(0<e){if(0>c||c>e)c=e}else{fe(a,d,!1);b=0;continue}}b++}0<=c&&Jc(a.u,a.L,c)}k.Nd=function(a,b){var c=this.B;0<=this.w&&(this.w<this.j.length?(c=this.j[this.w],this.w++,c=K.Sa[c.Pb],c&128&&(c&=127)):(this.w=-1,c=K.Yc),this.B=c,Ed(this.u,1));q(this,a,null,b,"KBDUART.ADDRESS",c);return c};
k.ee=function(a,b,c){q(this,a,b,c,"KBDUART.STATUS");this.D=b;this.A=!0;this.F=Dc(this.u);Fe(this,b&K.Ba.ec);b&K.Ba.od&&(this.w=0,Ed(this.u,1))};var Le=1,Me=2,ie=3,Ne=4,He=8,Ue=12,Oe=16,Pe=32,Se=48,Qe=64,Re=128,Ee=512,Te=4096,Ve=50,We={};We[l.ab]=37;We[l.Fb]=39;We[l.Hb]=32;
var Ke={pa:1978.1,Sa:{},sb:{},Tb:We,fb:{},Ua:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},M={},N={},K={pa:100,Sa:(M[8]=3,M[l.mc]=5,M[l.lc]=6,M[l.xc]=7,M[l.qc]=8,M[l.uc]=9,M[l.Q]=10,M[39]=16,M[221]=20,M[219]=21,M[l.ac]=22,M[l.rc]=23,M[l.nc]=24,M[l.E]=25,M[49]=26,M[37]=32,M[40]=34,M[117]=35,M[19]=35,M[192]=36,M[189]=37,M[57]=38,M[55]=39,M[52]=40,M[51]=41,M[27]=42,M[38]=48,M[114]=49,M[112]=50,M[46]=51,M[187]=52,M[48]=53,M[56]=54,M[54]=55,M[53]=56,M[50]=57,M[9]=58,M[103]=64,M[115]=65,M[113]=66,
M[96]=67,M[118]=68,M[220]=69,M[l.Hb]=70,M[l.cc]=71,M[l.Zb]=72,M[l.Yb]=73,M[l.ab]=74,M[104]=80,M[2013]=81,M[98]=82,M[97]=83,M[222]=85,M[186]=86,M[l.bc]=87,M[l.$b]=88,M[l.Fb]=89,M[l.pc]=90,M[110]=96,M[116]=97,M[101]=98,M[100]=99,M[13]=100,M[190]=101,M[188]=102,M[l.hc]=103,M[l.Ub]=104,M[l.wc]=105,M[119]=106,M[105]=112,M[99]=113,M[102]=114,M[109]=115,M[191]=117,M[l.gc]=118,M[l[" "]]=119,M[l.tc]=120,M[l.Vb]=121,M[l.wb]=122,M[120]=123,M[17]=124,M[16]=125,M[20]=126,M),sb:(N[l.p]=5,N[l.Sd]=6,N[l.y]=7,N[l.t]=
8,N[l.re]=9,N[l.q]=10,N[l["]"]]=20,N[l["["]]=21,N[l.Fd]=22,N[l.pe]=23,N[l.r]=24,N[l.e]=25,N[l["1"]]=26,N[l["`"]]=36,N[l["-"]]=37,N[l["9"]]=38,N[l["7"]]=39,N[l["4"]]=40,N[l["3"]]=41,N[l["="]]=52,N[l["0"]]=53,N[l["8"]]=54,N[l["6"]]=55,N[l["5"]]=56,N[l["2"]]=57,N[l["\\"]]=69,N[l.Pd]=70,N[l.k]=71,N[l.Dd]=72,N[l.Bd]=73,N[l.yc]=74,N[l["'"]]=85,N[l[";"]]=86,N[l.Od]=87,N[l.Ed]=88,N[l.d]=89,N[l.oe]=90,N[13]=100,N[l["."]]=101,N[l[","]]=102,N[l.n]=103,N[l.ud]=104,N[l.x]=105,N[l["/"]]=117,N[l.Rd]=118,N[l[" "]]=
119,N[l.qe]=120,N[l.xd]=121,N[l.z]=122,N[l.mc]=133,N[l.lc]=134,N[l.xc]=135,N[l.qc]=136,N[l.uc]=137,N[l.Q]=138,N[l["}"]]=148,N[l["{"]]=149,N[l.ac]=150,N[l.rc]=151,N[l.nc]=152,N[l.E]=153,N[l["!"]]=154,N[l["~"]]=164,N[l._]=165,N[l["("]]=166,N[l["&"]]=167,N[l.$]=168,N[l["#"]]=169,N[l["+"]]=180,N[l[")"]]=181,N[l["*"]]=182,N[l["^"]]=183,N[l["%"]]=184,N[l["@"]]=185,N[l["|"]]=197,N[l.Hb]=198,N[l.cc]=199,N[l.Zb]=200,N[l.Yb]=201,N[l.ab]=202,N[l['"']]=213,N[l[":"]]=214,N[l.bc]=215,N[l.$b]=216,N[l.Fb]=217,N[l.pc]=
218,N[l[">"]]=229,N[l["<"]]=230,N[l.hc]=231,N[l.Ub]=232,N[l.wc]=233,N[l["?"]]=245,N[l.gc]=246,N[l.tc]=248,N[l.Vb]=249,N[l.wb]=250,N),Tb:{},fb:{},Ua:{"caps-lock":20,ctrl:17,esc:27,tab:9,"num-comma":116,"break":117,"line-feed":118,"no-scroll":119,setup:120},Nc:{qa:130,INIT:127},Ba:{qa:130,bd:1,ad:2,$c:4,Zc:8,cd:16,fc:32,ec:63,od:64,Ce:128,INIT:0},Yc:127};K.fb={l4:K.Ba.bd,l3:K.Ba.ad,l2:K.Ba.$c,l1:K.Ba.Zc,locked:K.Ba.cd,local:K.Ba.fc,online:~K.Ba.fc,"caps-lock":Ee};var ee={SI1978:Ke,VT100:K};
K.INIT=[[K.Ba.INIT,K.Nc.INIT,!1,0,-1]];K.Bb={130:de.prototype.Nd};K.Cb={130:de.prototype.ee};ib(function(){for(var a=qa(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new de(d);pa(d,c)}});
function Xe(a,b,c,d,e){n.call(this,"Video",a,262144);var f=this;this.Ta=cb("Gecko/");var g=["","moz","ms","webkit"];this.M=a.screenWidth;this.I=a.screenHeight;this.la=a.bufferAddr;this.vd=a.bufferRAM;var h=a.bufferFormat;this.Y=h&&Ye[h.toUpperCase()]||Ze;this.O=a.bufferCols;this.Z=a.bufferRows;this.Ha=this.fa=a.cellWidth||1;this.ba=a.cellHeight||1;this.ea=null;this.Na=!1;this.na=a.bufferBits||1;this.yd=a.bufferLeft||0;if(this.g=a.bufferRotate)this.g=this.g%360,0<this.g&&(this.g-=360),-90!=this.g&&
(this.aa("unsupported buffer rotation: "+this.g),this.g=0);this.oa=a.interruptRate;this.kb=a.refreshRate||60;this.F=b;this.j=c;this.V=(this.Cd=d)||b||null;this.Db=this.M;this.td=this.I;this.La=this.M/this.O|0;this.Ma=this.I/this.Z|0;1<this.ba&&(this.Z++,this.sa=0,this.ya=!1);b=a.smoothing;(c=db("smoothing"))&&(b="true"==c);if(null!=b)for(c=0;c<g.length;c++)if(d=(d=g[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.j[d]){this.j[d]=b;break}if(this.w=a.screenRotate)this.w=this.w%360,
0<this.w&&(this.w-=360),-90!=this.w?(this.aa("unsupported screen rotation: "+this.w),this.w=0):(this.j.translate(0,this.I),this.j.rotate(this.w*Math.PI/180),this.j.scale(this.I/this.M,this.M/this.I));if(this.b=e)if(this.b.Xa=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.Xa){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){$e(f,!!(document.fullscreenElement||document.msFullscreenElement||
document.mozFullScreenElement||document.webkitFullscreenElement))},!1);break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){$e(f,null)},!1);break}}if(this.S=a.fontROM)"json"!=Ga(this.S)&&(this.S=Ia()+"/api/v1/dump?file="+this.S+"&format=bytes"),Ta(this.S,null,!0,function(a,b,c){af(f,a,b,c)});this.Fa={}}aa(Xe,n);
function Rd(a){a.C=a.O*a.fa;a.N=a.Z*a.ba;var b=a.C,c=a.N;a.g&&(b=a.N,c=a.C);a.L=0;if(!a.vd&&(a.L=(a.C*a.na>>3)*a.N,!Ab(a.H,a.la,a.L,3)))return!1;a.L?(a.Va=a.j.createImageData(b,c),a.hb=16/a.na|0,bf(a,a.L>>1)):bf(a,(a.O+1)*a.Z);a.D=document.createElement("canvas");a.D.width=b;a.D.height=c;a.wa=a.D.getContext("2d");a.T={};a.X=1<<a.na;a.U=Array(a.X+cf);a.U[0]=[0,0,0,255];a.U[1]=[255,255,255,255];a.Y==df&&(a.U[a.X+ef]=[255,255,0,255],a.U[a.X+ff]=[0,255,0,255]);a.Y==gf&&(a.jb=60,a.za=!1,a.ga=Array(a.O));
return!0}k=Xe.prototype;k.ca=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Fa[b]=c,!0;switch(b){case "fullScreen":return this.P[b]=c,this.b&&this.b.Xa?c.onclick=function(){d.Xa()}:c.parentNode.removeChild(c),!0}return!1};
k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;Rd(this);if(this.B=wb(a,"Keyboard")){for(var e in this.Fa)this.B.ca("led",e,this.Fa[e]);this.F&&this.B.ca(this.Cd?"textarea":"canvas","screen",this.V)}var f=this;this.xb=Ic(this.u,function(){Nc(f)});Jc(this.u,this.xb,1E3/Math.max(this.kb,this.oa));this.ib=0;this.S||ta(this)};
function af(a,b,c,d){if(d)a.aa("Unable to load font ROM (error "+d+": "+b+")");else{ea(a.eb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){p("Empty font ROM: "+b);return}if(1==f.length){p(f[0]);return}if(2048==f.length)a.ea=f,Sd(a);else{a.aa("Unrecognized font data length ("+f.length+")");return}}catch(g){a.aa("Font ROM data error: "+g.message);return}(a.j||a.K)&&ta(a)}}
function Sd(a){a.ea&&(a.Na=a.Y==gf,a.T[hf]=[jf(a,a.fa,a.ba),jf(a,a.fa,a.ba,a.za)],a.T[kf]=[jf(a,2*a.fa,a.ba),jf(a,2*a.fa,a.ba,a.za)],a.T[lf]=a.T[mf]=[jf(a,2*a.fa,2*a.ba),jf(a,2*a.fa,2*a.ba,a.za)])}
function jf(a,b,c,d){var e=8>=a.Ha?8:16,f=8<e?15:0,g=a.ea.length/e,h=!1===d,m={fa:b,ba:c};m.canvas=document.createElement("canvas");m.canvas.width=16*b;m.canvas.height=g/16*c;m.context=m.canvas.getContext("2d");for(var r=m.context.createImageData(b,c),u=0;u<g;u++){for(var v=0,B=v;v<a.ba;v++)for(var y=u*e+(f+v&e-1),y=d&&8==v?255:a.ea[y],w=0;w<c/a.ba;w++){for(var C=0,T=0,Aa=T;T<a.fa;T++){for(var L=y&128>>(7<T?7:T),C=a.Na&&!L&&C?C:L,ja=0;ja<b/a.fa;ja++)h&&(C=!C),nf(a,r,Aa,B,C?1:0),Aa++;C=L}B++}m.context.putImageData(r,
(u&15)*b,(u>>4)*c)}return m}k.va=function(a,b){return b||!a||this.restore(a)?!0:!1};k.ua=function(a){return!a||this.save()};k.save=function(){var a=new Vc(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};
k.Xa=function(){var a=!1;if(this.b){if(this.b.Xa){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.M/this.I;b>c&&(a=Math.round(c/b*100)+"%")}this.Ta?(this.F.style.width=a,this.F.style.width=a,this.F.style.display="block",this.F.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.Xa();a=!0}this.V&&this.V.focus()}return a};
function $e(a,b){!b&&a.b&&(a.Ta?a.F.style.width=a.F.style.height="":a.b.style.width=a.b.style.height="");ya(a,"notifyFullScreen("+b+")")}function bf(a,b){a.gb=b;a.W=!1;if(void 0===a.A||a.A.length!=a.gb)a.A=Array(a.gb)}function nf(a,b,c,d,e){d=a.g?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.Y==df&&(208<=c&&236>c?e=a.X+ef:28<=c&&72>c&&(e=a.X+ff));a=a.U[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function Nc(a,b){var c=!0;if(!b){a.oa&&(120==a.oa?a.ib&1?(Ed(a.u,2),c=!1):Ed(a.u,1):Ed(a.u,4));if(c&&a.W&&a.L){for(var d=a.H,e=a.L,f=!0,g=a.la>>>d.g;0<e&&g<d.b.length;)d.b[g].Ca&&(d.b[g].Ca=f=!1,d.b[g].Dc=!0),e-=d.w,g++;f&&(c=!1)}Jc(a.u,a.xb,1E3/Math.max(a.kb,a.oa));a.ib++}if(c)if(1<a.fa)switch(a.Y){case gf:for(var c=a.la,d=-1,e=0,f=60==a.jb?2:5,h=g=0,m=-1;e<a.Z;){var r=0,u=c,v=d,B=a.O;for(v!=hf&&(B>>=1);;){var y=Fb(a.H,u++);if((y&of)==of){var w=Fb(a.H,u++),d=w&pf,c=(w&qf)<<8|Fb(a.H,u),c=c+(w&rf?
sf:tf);break}if(r<B)a.ga[r++]=y;else break}if(f)f--;else{for(;r<a.ga.length;)a.ga[r++]=0;if(0<=v)for(u=a.W&&a.A[g]==B,a.A[g++]=B,B=0;B<r;B++){y=a.ga[B];if(!u||y!==a.A[g]){a.A[m=g]=y;var w=a,C=a.wa,T=y&127;if(y=w.T[v][y&128?1:0]){var Aa=(T&15)*y.fa,T=(T>>4)*y.ba,L,ja,va,na,Na=y.fa,fc=y.ba;C?(L=B*w.fa,ja=e*w.ba,va=w.fa,na=w.ba):(L=B*w.La,ja=e*w.Ma,va=w.La,na=w.Ma);y.fa>w.fa&&(L*=2,va*=2);y.ba>w.ba&&(v==mf&&(T+=w.ba),fc=w.ba);C?C.drawImage(y.canvas,Aa,T,Na,fc,L,ja,va,na):(L+=0,ja+=0,w.j.drawImage(y.canvas,
Aa,T,Na,fc,L,ja,va,na))}h++}g++}e++}}a.W=!0;!b&&a.ya&&1==h&&(a.A[m]=-1,h=0);a.ya=!1;(h||b)&&a.wa&&a.j.drawImage(a.D,0,a.sa,a.C,a.N-a.ba,0,0,a.Db,a.td)}else{e=a.la;f=e+a.L;m=h=g=0;b=a.C;r=0;c=a.N;v=d=0;u=a.na;B=(1<<u)-1;a.yd&&(u=-u,v=16+u);for(;e<f;){w=Hb(a.H,e);if(a.W&&w===a.A[g])h+=a.hb;else{a.A[g]=w;(C=v)&&(w=w>>8|(w&255)<<8);h<b&&(b=h);for(y=a.hb;y--;)Aa=w>>C&B,nf(a,a.Va,h++,m,Aa),C+=u;h>r&&(r=h);m<c&&(c=m);m>=d&&(d=m+1)}e+=2;g++;if(h>=a.C&&(h=0,m++,m>a.N))break}a.W=!0;b<a.C&&(e=r-b,d-=c,a.g&&
(f=b,g=e,b=c,e=d,c=a.C-(f+g),d=g),a.wa.putImageData(a.Va,0,0,b,c,e,d),a.j.drawImage(a.D,0,0,a.D.width,a.D.height,0,0,a.M,a.I))}}var ef=0,ff=1,cf=2,Ze=0,df=1,gf=2,Ye={SI1978:df,VT100:gf},hf=96,kf=64,lf=32,mf=0,of=127,qf=15,rf=16,pf=96,sf=8192,tf=16384;
ib(function(){for(var a=qa(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=oa(c),e=document.createElement("canvas");if(!e||!e.getContext){c.innerHTML="<br/>Missing &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<=Va().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||db("aspect"));f&&.3<=f&&3.33>=f&&(hb("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");cb("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new Xe(d,e,g,f,c);pa(d,c)}});
function uf(a){n.call(this,"SerialPort",a,8388608);this.T=+a.adapter;switch(this.T){case 0:this.U=0;this.X=2;break;default:p("Unrecognized serial adapter #"+this.T);return}this.g=this.j=null;this.V=a.tabSize;this.S=a.charBOL;this.w=0;this.N=!1;this.D=!0;var b=a.binding;if("console"==b)this.j="";else{var c;a=vf;b&&(void 0===c&&(c="Panel"),(c=ma(c,this.id))&&(b=c.P[b])&&this.ca(null,a,b))}this.A="";this.b=this.Ra=this.I=null;this.exports={connect:this.Fc,receiveData:this.Ob,receiveStatus:this.ne}}
aa(uf,n);k=uf.prototype;
k.ca=function(a,b,c,d){var e=this;switch(b){case vf:return this.P[b]=this.g=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),wf(e,b);return!0},c.onkeypress=function(a){a=a||window.event;wf(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.P[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.Ob(d);return!0},
!0}return!1};k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;var e=this;this.Y=Ic(this.u,function(){e.Ob()});this.Z=Ic(this.u,function(){Ge(e)});this.W=wb(a,"ChipSet");Mb(b,this,xf,this.U);Sb(b,this,yf,this.U);ta(this)};
k.Fc=function(a){if(!this.b){var b=wc(this.R,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ma(c[0]);if(d!=this.cb)return;c=Ma(c[1]);if(this.b=la(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.D);if(this.Ra=e.receiveData){this.D=a;this.I=e.receiveStatus;this.status("Connected "+this.eb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};
k.va=function(a,b){if(!b)if(this.Fc(this.D),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){zf(this)};k.save=function(){var a=new Vc(this),b=0,c=[];c[b++]=this.F;c[b++]=this.M;c[b++]=this.O;c[b++]=this.ia;c[b++]=this.B;c[b++]=this.C;c[b]=this.L;a.set(0,c);return a.data()};k.restore=function(a){return zf(this,a[0])};
function zf(a,b){var c=0;b||(b=Af);a.F=b[c++];a.M=b[c++];a.O=b[c++];a.ia=b[c++];a.B=b[c++];a.C=b[c++];a.L=b[c];return!0}function Bf(a,b){var c=a.L&b;b&15||(c>>=4);b=Cf[c];c=((a.B&Df)>>2)+6;a.B&Ef&&c++;c+=((a.B&Ff)>>6)+1>>1;return 1E3/Math.round(b/c)}function wf(a,b){ya(a,"receiveByte("+Ea(b)+"), status="+Ea(a.ia));return a.N||a.ia&Gf?!1:(a.M=b,a.ia|=Gf,Ed(a.u,a.X),!0)}
k.Ob=function(a){null!=a&&(this.A="number"!=typeof a?a:this.A+String.fromCharCode(a));this.A&&(wf(this,this.A.charCodeAt(0))&&(this.A=this.A.substr(1)),this.A&&this.u&&Jc(this.u,this.Y,Bf(this,Hf)));return!0};k.ne=function(a){this.ia&=~If;a&64&&(this.ia|=If)};function Ge(a,b){a.ia=a.ia|Qd|Jf;b&&a.Ra&&a.Ra.call(a.b,b)}k.Hd=function(a,b){var c=this.M;q(this,a,null,b,"DATA",c);this.ia&=~Gf;return c};k.Gd=function(a,b){var c=this.ia;q(this,a,null,b,"STATUS",c);return c};
k.Vd=function(a,b,c){q(this,a,b,c,"DATA");this.O=b;this.ia&=~(Qd|Jf);ya(this,"transmitByte("+Ea(b)+")");if(19==b)this.N=!0;else if(17==b)this.N=!1;else if(this.Ra&&this.Ra.call(this.b,b),this.g)if(8==b)this.g.value=this.g.value.slice(0,-1),0<this.w&&this.w--;else{var d;13!=b&&10!=b&&(d=Pa[b]);a=d=d?"<"+d+">":String.fromCharCode(b);c=a.length;9==b?(b=this.V||8,c=b-this.w%b,this.V&&(a=La("",c))):13==b&&(this.w=c=0,a="\n");this.S&&!this.w&&c&&(a=String.fromCharCode(this.S)+a);this.g.value+=a;this.g.scrollTop=
this.g.scrollHeight;this.w+=c}else if(null!=this.j){if(10==b||1024<=this.j.length)this.i(this.j),this.j="";10!=b&&(this.j+=String.fromCharCode(b))}this.u&&Jc(this.u,this.Z,Bf(this,Kf))};k.Ud=function(a,b,c){q(this,a,b,c,"CONTROL");this.F?(this.I&&(b^this.C)&(Lf|Mf)&&(a=0,this.D?(a|=b&Lf?32:0,a|=b&Mf?320:0):(a|=b&Lf?16:0,a|=b&Mf?1048576:0),this.I.call(this.b,a)),this.C=b,this.C&Nf&&(this.F=!1)):(this.B=b,this.F=!0)};k.Td=function(a,b,c){q(this,a,b,c,"BAUDRATES");this.L=b};
var Df=12,Ef=16,Ff=192,Mf=2,Lf=32,Nf=64,Qd=1,Gf=2,Jf=4,If=128,Hf=15,Kf=240,Cf=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Af=[!1,0,0,133,142,39,238],vf="buffer",xf={0:uf.prototype.Hd,1:uf.prototype.Gd},yf={0:uf.prototype.Vd,1:uf.prototype.Ud,2:uf.prototype.Td};ib(function(){for(var a=qa(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new uf(d);pa(d,c)}});
function Of(a){n.call(this,"Debugger",a);this.na=+a.base||16;this.N=this.Y=this.C=0;this.L=!1;this.b=-1;this.g=[];this.S={}}aa(Of,n);Of.prototype.Kb=function(){return-1};Of.prototype.Lb=function(){};
Of.prototype.Ab=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.L?a="end":a=this.g[this.b+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(Ma(a.substring(d,f))),d=f+1}}return b};
function Pf(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 Nf(a,b,c){var d;if(b){b=Of(a,b);for(var e=0,f=!1,g=b,h=[],l=[],p=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<p.length;){var r=p[e++],t=r.length,r=Na(r);if(!r){f=!0;break}r=Pf(a,r,null,!1===c);if(void 0===r){f=!0;c=!1;break}h.push(r);if(e==p.length)break;var r=p[e++],A=r.length;l.length&&Qf[r]<Qf[l[l.length-1]]&&Mf(h,l,1);l.push(r);b=b.substr(t+A)}Mf(h,l)&&1==h.length||(f=!0);f?c&&a.i("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),c&&Rf(a,null,
d))}return d}function Of(a,b){for(var c,d=/\{(.*?)\}/;(c=b.match(d))&&!(0<=c[1].indexOf("{"));){var e=Nf(a,c[1]);b=b.replace("{"+c[1]+"}",null!=e?Sf(a,e):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)b=b.replace("["+c[1]+"]","unimplemented");for(;c=b.match(/\$([a-z]+)/i);){d=null;switch(c[1].toLowerCase()){case "ops":d=a.N-a.Y}if(null==d)break;b=b.replace(c[0],d.toString())}return b}
function Pf(a,b,c,d){var e;null!=b?(e=a.Hb(b),0<=e?e=a.Ib(e):(e=a.S[b],null==e&&(e=Ba(b,a.na))),null!=e||d||a.i("invalid "+(c?c:"value")+": "+b)):d||a.i("missing "+(c||"value"));return e}
function Rf(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f=4,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++){g&&(g=","+g);var l=d&255,p=void 0,r=8,t="";r?32<r&&(r=32):r=32;for(var A=null==l||isNaN(l),w=p=p||r;0<r--;)w||(t=","+t,w=p),t=(A?"?":l&1?"1":"0")+t,l>>=1,w--;g=t+g;d>>=8}d=x(c,0,!0)+" "+c+". "+Ca(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.i((null!=b?b+": ":"")+d);return e}
function Tf(a,b){if(b)return Rf(a,b,a.S[b]);var c=0;for(b in a.S)Rf(a,b,a.S[b]),c++;return 0<c}function Sf(a,b){switch(a.na){case 8:a=Ca(b,NaN);break;case 10:a=b.toString();break;default:a=x(b,NaN)}return a}var Qf={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function Uf(a){Lf.call(this,a);this.style=Vf;this.F=Wf();this.la=Wf();this.O=Wf();this.A=[];this.j=this.I=this.w=[];Xf(this);this.W=0;Yf(this);this.Z={};Zf(this,a.messages);this.ea=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return zc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return zc(b,a)})}ba(Uf,Lf);k=Uf.prototype;
k.Ea=function(a,b,c,d){this.H=b;this.u=c;this.R=a;(a=vc(a,"messages"))&&Zf(this,a);this.ga=$f;Ld(this,64,function(a){a:{var b=d.H.b,c=a[0],e=a=0,l=b.length;if(c){a=ag(bg(d,c));if(-1===a){d.i("invalid address: "+c);break a}e=a>>>d.H.g;l=1}d.i("blockid physical blockaddr used size type");d.i("-------- --------- ---------- ------ ------ ----");for(var c=-1,p=0;l--;){var r=b[e];r.type==c?p++||d.i("..."):(c=r.type,p=Cb[c],r&&d.i(x(r.id)+" %"+x(e<<d.H.g)+" %%"+x(r.J)+" "+y(r.nb)+" "+
y(r.size)+" "+p),c!=Yb&&(c=-1),p=0);a+=d.H.w;e++}}});sa(this)};
k.ca=function(a,b,c){var d=this;switch(b){case "debugInput":return this.U=this.P[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",zc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.b<d.g.length-1&&(b=d.g[++d.b])):40==a.keyCode&&(0<d.b?b=d.g[--d.b]:(b="",d.b=-1)),null!=b){var e=b.length;c.value=b;c.setSelectionRange(e,e)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.P[b]=c,fb(c,function(){if(d.U){var a=d.U.value;d.U.value=
"";zc(d,a,!0);return!0}return!1}),!0;case "step":return this.P[b]=c,fb(c,function(a){var b=!1;ua(d,!0)||(va(d,!0),b=cg(d,a?1:0),va(d,!1));return b}),!0}return!1};k.Ya=function(){this.U&&this.U.focus()};function ag(a){a=a&&a.J;null==a&&(a=-1);return a}k.Ga=function(a,b){var c=255,d=ag(a);-1!==d&&(c=Eb(this.H,d),b&&dg(a,b));return c};k.Cb=function(a,b){var c=65535,d=ag(a);-1!==d&&(c=Gb(this.H,d),b&&dg(a,b));return c};k.Tb=function(a,b,c){var d=ag(a);-1!==d&&(Hb(this.H,d,b),c&&dg(a,c),Ac(this.u,!0))};
k.wc=function(a,b,c){var d=ag(a);if(-1!==d){var e=this.H,f=d&e.j,g=(d&e.C)>>>e.g;f!=e.j?e.b[g].Pb(f,b&65535,d):(e.b[g++].ob(f,b&255,d),e.b[g&e.I].ob(0,b>>8&255,d+1));c&&dg(a,c);Ac(this.u,!0)}};function Wf(a){return{J:a,Da:!1}}function eg(a){return[a.J,a.Da]}function fg(a){return{J:a[0],Da:a[1]}}
function bg(a,b,c){var d;c=(c?a.F:a.la).J;if(void 0!==b){d=b=Of(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.A.length;c++){var f=a.A[c].ra[d];if(void 0!==f){d=f.o;void 0!==d&&(e=Wf(d));break}}if(d=e)return d;c=Nf(a,b,void 0)}null!=c&&(d=Wf(c));return d}function gg(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.rd=a.xb(b.nc=c[2]))}function dg(a,b){null!=a.J&&(a.J+=b||1)}function hg(a){return x(a,4)}
function ig(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.Ga(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Zf(a,b){a.K=a;a.ha=a.ud=536870912;a.V=null;a.X=[];b=a.xb(b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in tb)0<=Ra(b,c)&&(a.ha|=tb[c],a.i(c+" messages enabled"))}function Ld(a,b,c){for(var d in tb)if(b==tb[d]){a.Z[d]=c;break}}
k.Hb=function(a,b){var c;a=a.toUpperCase();null==b?c=Ra(jg,a):(c=Ra(jg,a.substr(b,2)),0>c&&(c=Ra(jg,a.substr(b,1))));return c};function Hg(a,b){var c=0;a=a.Ib(b);if(void 0!==a)switch(b){case Jg:case Kg:case Lg:case Mg:case Ng:case Og:case Pg:case Qg:c=2;break;case Rg:case Sg:case Tg:case Ug:case Vg:case Wg:case Xg:c=4}return c?x(a,c):"??"}
k.Ib=function(a){var b;if(0<=a){var c=this.u;switch(a){case Jg:b=c.g;break;case Kg:b=c.w;break;case Lg:b=c.A;break;case Rg:b=Vc(c);break;case Mg:b=c.B;break;case Ng:b=c.C;break;case Sg:b=id(c);break;case Og:b=c.D;break;case Pg:b=c.F;break;case Tg:b=D(c);break;case Qg:b=F(c,D(c));break;case Ug:b=c.M;break;case Vg:b=c.j;break;case Wg:b=Tc(c);break;case Xg:b=Tc(c)&255|c.g<<8}}return b};
function Yg(a,b){b=Of(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.Hb(b,c+1),0<=e&&(b=b.substr(0,c)+Hg(a,e)+b.substr(c+1+jg[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=Ba(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=bg(a,e))?(d=e+' "'+ig(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=bg(a,e))?(dg(d),d=e+
' "'+ig(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}k.message=function(a,b){b&&(a+=" at "+hg(Wf(this.u.j).J));this.ha&1073741824?this.X.push(a):this.V&&a==this.V||(this.V=a,this.ha&-2147483648&&(this.da(),a+=" (cpu halted)"),this.i(a),this.u&&(a=this.u,Jc(a),a.wa=0,Ac(a)))};
function za(a,b,c,d,e,f,g,h){h|=256;null!=f&&(a.ha&h)!=h||a.message(b.ab+"."+(null!=d?"outPort":"inPort")+"("+y(c)+","+(f?f:"unknown")+(null!=d?","+Da(d):"")+")"+(null!=g?": "+Da(g):"")+(null!=e?" at "+hg(e):""))}
function Yf(a){var b;if(Dd(a)){if(!a.D||!a.D.length){a.D=Array(Zg);for(b=0;b<a.D.length;b++)a.D[b]=Wf();a.T=0;a.i("instruction history buffer allocated")}if(!a.B||!a.B.length)for(a.B=Array(256),b=0;b<a.B.length;b++)a.B[b]=[b,0]}else a.D&&a.D.length&&a.i("instruction history buffer freed"),a.T=0,a.D=[],a.B=[]}function $g(a,b){if(!ah(a))return!1;a.u.rb(b);return!0}
function cg(a,b,c,d){if(!ah(a))return!1;a.C=0;b||Dd(a)&&Ed(a,a.u.j,0);try{var e=a.u.Bb(b);0<e&&(a.C+=e,Ec(a.u,e,!0),Bc(a.u,e),a.N++)}catch(f){"number"!=typeof f&&(a.C=0,qa(a.u,f.stack||f.message))}!1!==d&&Ac(a.u);yc(a,c||!1);return 0<a.C}k.da=function(a){this.u&&this.u.da(a)};function yc(a,b){void 0===b&&(b=!0);a.F=Wf(a.u.j);b&&1!=a.M?bh(a):ch(a)}
function ah(a){var b;if(b=a.u&&ra(a.u))b=a.u,b.G.ja?b=!0:(b.i(b.toString()+" not powered"),b=!1);b&&!ua(a.u)?(a=a.u,a.G.error?(a.i(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}k.va=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};k.ua=function(a,b){b&&this.i(a?"suspending":"shutting down");return a?this.save():!0};k.reset=function(a){Yf(this);this.N=this.Y=0;this.V=null;this.C=0;this.F=Wf(this.u.j);this.G.ka=!1;dh(this);a||yc(this)};
k.save=function(){var a=new Uc(this);a.set(0,eg(this.F));a.set(1,eg(this.O));a.set(2,[this.g,this.L,this.ha]);a.set(3,this.A);return a.data()};k.restore=function(a){var b=0;void 0!==a[2]&&(this.F=fg(a[b++]),this.O=fg(a[b++]),this.g=a[b][0],"string"==typeof this.g&&(this.g=[this.g]),this.L=a[b][1],this.ha|=a[b][2]);a[3]&&(this.A=a[3]);return!0};k.start=function(a,b){this.M||this.i("running");this.G.ka=!0;this.wa=a;this.ya=b};
k.stop=function(a,b){if(this.G.ka){this.G.ka=!1;this.C=b-this.ya;if(!this.M){b="stopped";if(this.C){a-=this.wa;var c=0<a?Math.round(1E3*this.C/a):0;b+=" (";Dd(this)&&(b+=this.N+" opcodes, ",this.Y-=this.N,this.N=0);b+=this.C+" cycles, "+a+" ms, "+c+" hz)"}else wa(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.i(b)}yc(this,!0);this.Ya();dh(this,this.u.j)}};function Dd(a){return 1<a.j.length||!!a.W}
function Ed(a,b,c){var d=a.u;if(0<c&&(a.W&&!--a.W||sc(a,b,1,a.j)))return!0;0<=c&&a.B.length&&(a.N++,b=Eb(a.H,b),null!=b&&(a.B[b][1]++,b=a.D[a.T],b.J=d.j,b.Da=!1,++a.T==a.D.length&&(a.T=0)));return!1}function Pb(a,b,c){a.i("break on input from port "+y(b)+": "+x(c));a.da(!0)}function Tb(a,b,c){a.i("break on output to port "+y(b)+": "+x(c));a.da(!0)}
function Xf(a){var b,c;a.j=["bp"];if(a.I)for(b=1;b<a.I.length;b++){c=a.I[b];var d=a.H;rc(d.b[ag(c)>>>d.g],!1)}a.I=["br"];if(a.w)for(b=1;b<a.w.length;b++)c=a.w[b],d=a.H,rc(d.b[ag(c)>>>d.g],!0);a.w=["bw"];a.oa=0}k.Pa=function(a,b,c){var d=!0;c||eh(this,a,b,!1,!0);if(a!=this.j){var e=ag(b);if(-1===e)this.i("invalid address: "+hg(b.J)),d=!1;else{var f=this.H;f.b[e>>>f.g].Pa(e&f.j,a==this.w)}}d&&(a.push(b),c?b.Da=!0:(fh(this,a,a.length-1,"set"),Yf(this)));return d};
function eh(a,b,c,d,e){var f=!1;c=ag(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==ag(h)&&(!d||h.Da)){f=!0;h.Da||e||fh(a,b,g,"cleared");b.splice(g,1);b!=a.j&&(d=a.H,rc(d.b[c>>>d.g],b==a.w));h.Da||Yf(a);break}}return f}function gh(a,b){for(var c=1;c<b.length;c++)fh(a,b,c);return b.length-1}function fh(a,b,c,d){c=b[c];a.i(b[0]+" "+hg(c.J)+(d?" "+d:c.nc?' "'+c.nc+'"':""))}
function dh(a,b){if(void 0!==b)sc(a,b,1,a.j,!0),a.M=0;else for(b=1;b<a.j.length;b++){var c=a.j[b];if(c.Da){if(!eh(a,a.j,c,!0))break;b=0}}}
function sc(a,b,c,d,e){var f=!1;if(!a.oa++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.Da)for(var l=ag(h),p=0;p<c;p++)if(b+p==l){var r,f=!0;h.Da&&(eh(a,d,h,!0),e=!0);if(r=h.rd){for(var f=!1,t=0;t<r.length;t++)if(!hh(a,r[t],!0)){if(r[t].indexOf("if")){f=!0;break}for(var A=t+1;A<r.length&&r[A].indexOf("else");A++)t++;if(A==r.length){f=!0;break}}a.u.G.ka||(f=!0)}if(f){e||fh(a,d,g,"hit");break}}}a.oa--;return f}
function ih(a,b,c,d){for(var e=Wf(b.J),f=a.Ga(b,1),g=a.ga[f],h="",l=(a.style!=jh?kh:lh)[g[0]],p=g.length-1,r=mh,t,A=1;A<=p;A++){var w="";t=g[A];if(void 0!==t&&!(t&O&&a.style==Vf)){var u=t&nh;if(u){var B=t&oh;B?r=B:t|=r;t&ph||(t|=1==A?qh:rh);if(u&P)a:{w=a;u=t;B=b;switch(u&oh){case Q:B=x(w.Ga(B,1),2);break;case sh:B=x(w.Ga(B,1)<<24>>24,4);break;case th:B=x(w.Cb(B,2),4);break;default:w="imm("+y(u)+")";break a}w.style==jh&&u&uh?B="["+B+"]":u&vh||(B=(w.style==Vf?"$":"0x")+B);w=B}else u&vh?(w=(t&wh)>>8,
u=jg[w],a.style==jh&&t&uh&&(w==Qg&&(u="HL"),u="["+u+"]"),w=u):u&xh&&(w=(f>>3&7).toString());if(!w||!w.length){h="INVALID";break}0<h.length&&(h+=",");h+=w||"???"}}}f="";g=hg(e.J)+" ";if(-1!==e.J&&-1!==b.J){do if(f+=x(a.Ga(e,1),2),null==e.J)break;while(e.J!=b.J)}g+=Ka(f,10);g+=t&yh?"*":" ";g+=Ka(l,7);h&&(g+=" "+h);c&&(g=Ka(g,40)+";"+c,g=a.u.G.Va?g+("cycles="+Cc(a.u).toString()+" cs="+x(a.u.ya)):g+(null!=d?"="+d.toString():""));return g}
function zh(a,b){switch(b){case "IF":a=a.u.N&512;break;case "SF":a=qd(a.u);break;case "ZF":a=pd(a.u);break;case "AF":a=od(a.u);break;case "PF":a=nd(a.u);break;case "CF":a=ld(a.u);break;default:a=0}return b.charAt(0)+(a?"1":"0")+" "}function Ah(a,b){return jg[b]+"="+Hg(a,b)+" "}function Bh(a){return Ah(a,Jg)+Ah(a,Rg)+Ah(a,Sg)+Ah(a,Tg)+Ah(a,Ug)+zh(a,"IF")+zh(a,"SF")+zh(a,"ZF")+zh(a,"AF")+zh(a,"PF")+zh(a,"CF")}k.ec=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function Ch(a,b,c){var d=[],e=ag(b)>>>0;for(b=0;b<a.A.length;b++){var f=a.A[b],g=f.J>>>0,h=f.Hd;if(e>=g&&e<g+h){e=Pa(f.dc,[e-g],a.ec);0<=e?Dh(a,b,e,d):c&&(e=~e,Dh(a,b,e-1,d),Dh(a,b,e,d));break}}return d}function Dh(a,b,c,d){var e={},f=a.A[b].dc,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.A[b].ra[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}
function Eh(a,b){if("?"==b)a.i("frequency commands:"),a.i("\tclear\tclear all frequency counts");else{var c=0;if(a.B)if("clear"==b){for(b=0;b<a.B.length;b++)a.B[b]=[b,0];a.i("frequency data cleared");c++}else if(void 0!==b)a.i("unknown frequency command: "+b),c++;else{var d=a.B.slice();d.sort(function(a,b){return b[1]-a[1]});var e=a.style!=jh?kh:lh;for(b=0;b<d.length;b++){var f=d[b][0],g=d[b][1];g&&(a.i((e[a.ga[f][0]]+" ").substr(0,5)+" ("+Da(f)+"): "+g+" times"),c++)}}c||a.i("no frequency data available")}}
function Fh(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Tf(a)||a.i("no variables"),!0;if(!c[2])return Tf(a,c[1]);if(!c[3])return delete a.S[c[1]],!0;b=Nf(a,c[3]);return void 0!==b?(a.S[c[1]]=b,!0):!1}a.i("invalid assignment:"+b);return!1}
function Gh(a,b,c){var d=null;if(b=bg(a,b,!0)){var e=Ch(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.J-e[1])&&(g=" + "+y(f)),f=e[0]+" ("+hg(e[1])+")"+g,c&&a.i(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.J)&&(g=" - "+y(f)),f=e[4]+" ("+hg(e[5])+")"+g,c&&a.i(f),d||(d=f))}else c&&a.i("no symbols")}return d}
function Hh(a,b){switch(b[1]){case "8080":a.style=Vf;break;case "8086":a.style=jh;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.u.na=c;break;case "start":a.u.za=c;break;case "stop":a.u.sa=c;break;default:a.i("unknown cs option");return}void 0!==c&&xc(a.u);a.i("checksums "+(a.u.G.Va?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Dc(a.u,+b[2])||a.i("warning: using 1x multiplier, previous target not reached"));a.i("target speed: "+(a.u.Z.toFixed(2)+"Mhz")+" ("+a.u.U+
function Qf(a,b,c){var d;if(b){b=Rf(a,b);for(var e=0,f=!1,g=b,h=[],m=[],r=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<r.length;){var u=r[e++],v=u.length,u=Ma(u);if(!u){f=!0;break}u=Sf(a,u,null,!1===c);if(void 0===u){f=!0;c=!1;break}h.push(u);if(e==r.length)break;var u=r[e++],B=u.length;m.length&&Tf[u]<Tf[m[m.length-1]]&&Pf(h,m,1);m.push(u);b=b.substr(v+B)}Pf(h,m)&&1==h.length||(f=!0);f?c&&a.i("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),c&&Uf(a,null,
d))}return d}function Rf(a,b){for(var c,d=/\{(.*?)\}/;(c=b.match(d))&&!(0<=c[1].indexOf("{"));){var e=Qf(a,c[1]);b=b.replace("{"+c[1]+"}",null!=e?Vf(a,e):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)b=b.replace("["+c[1]+"]","unimplemented");for(;c=b.match(/\$([a-z]+)/i);){d=null;switch(c[1].toLowerCase()){case "ops":d=a.N-a.Y}if(null==d)break;b=b.replace(c[0],d.toString())}return b}
function Sf(a,b,c,d){var e;null!=b?(e=a.Kb(b),0<=e?e=a.Lb(e):(e=a.S[b],null==e&&(e=Ba(b,a.na))),null!=e||d||a.i("invalid "+(c?c:"value")+": "+b)):d||a.i("missing "+(c||"value"));return e}
function Uf(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f=4,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++){g&&(g=","+g);var m=d&255,r=void 0,u=8,v="";u?32<u&&(u=32):u=32;for(var B=null==m||isNaN(m),y=r=r||u;0<u--;)y||(v=","+v,y=r),v=(B?"?":m&1?"1":"0")+v,m>>=1,y--;g=v+g;d>>=8}d=t(c,0,!0)+" "+c+". "+Da(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.i((null!=b?b+": ":"")+d);return e}
function Wf(a,b){if(b)return Uf(a,b,a.S[b]);var c=0;for(b in a.S)Uf(a,b,a.S[b]),c++;return 0<c}function Vf(a,b){switch(a.na){case 8:a=Da(b,NaN);break;case 10:a=b.toString();break;default:a=t(b,NaN)}return a}var Tf={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function Xf(a){Of.call(this,a);this.style=Yf;this.F=Zf();this.la=Zf();this.O=Zf();this.A=[];this.j=this.I=this.w=[];$f(this);this.W=0;ag(this);this.Z={};bg(this,a.messages);this.ea=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Ac(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Ac(b,a)})}aa(Xf,Of);k=Xf.prototype;
k.Ea=function(a,b,c,d){this.H=b;this.u=c;this.R=a;(a=wc(a,"messages"))&&bg(this,a);this.ga=cg;Nd(this,64,function(a){a:{var b=d.H.b,c=a[0],e=a=0,m=b.length;if(c){a=dg(eg(d,c));if(-1===a){d.i("invalid address: "+c);break a}e=a>>>d.H.g;m=1}d.i("blockid physical blockaddr used size type");d.i("-------- --------- ---------- ------ ------ ----");for(var c=-1,r=0;m--;){var u=b[e];u.type==c?r++||d.i("..."):(c=u.type,r=Db[c],u&&d.i(t(u.id)+" %"+t(e<<d.H.g)+" %%"+t(u.J)+" "+x(u.pb)+" "+
x(u.size)+" "+r),c!=Zb&&(c=-1),r=0);a+=d.H.w;e++}}});ta(this)};
k.ca=function(a,b,c){var d=this;switch(b){case "debugInput":return this.U=this.P[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Ac(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.b<d.g.length-1&&(b=d.g[++d.b])):40==a.keyCode&&(0<d.b?b=d.g[--d.b]:(b="",d.b=-1)),null!=b){var e=b.length;c.value=b;c.setSelectionRange(e,e)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.P[b]=c,gb(c,function(){if(d.U){var a=d.U.value;d.U.value=
"";Ac(d,a,!0);return!0}return!1}),!0;case "step":return this.P[b]=c,gb(c,function(a){var b=!1;ua(d,!0)||(wa(d,!0),b=fg(d,a?1:0),wa(d,!1));return b}),!0}return!1};k.Za=function(){this.U&&this.U.focus()};function dg(a){a=a&&a.J;null==a&&(a=-1);return a}k.Ga=function(a,b){var c=255,d=dg(a);-1!==d&&(c=Fb(this.H,d),b&&gg(a,b));return c};k.Gb=function(a,b){var c=65535,d=dg(a);-1!==d&&(c=Hb(this.H,d),b&&gg(a,b));return c};k.Xb=function(a,b,c){var d=dg(a);-1!==d&&(Ib(this.H,d,b),c&&gg(a,c),Bc(this.u,!0))};
k.Qc=function(a,b,c){var d=dg(a);if(-1!==d){var e=this.H,f=d&e.j,g=(d&e.C)>>>e.g;f!=e.j?e.b[g].Sb(f,b&65535,d):(e.b[g++].qb(f,b&255,d),e.b[g&e.I].qb(0,b>>8&255,d+1));c&&gg(a,c);Bc(this.u,!0)}};function Zf(a){return{J:a,Da:!1}}function hg(a){return[a.J,a.Da]}function ig(a){return{J:a[0],Da:a[1]}}
function eg(a,b,c){var d;c=(c?a.F:a.la).J;if(void 0!==b){d=b=Rf(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.A.length;c++){var f=a.A[c].ra[d];if(void 0!==f){d=f.o;void 0!==d&&(e=Zf(d));break}}if(d=e)return d;c=Qf(a,b,void 0)}null!=c&&(d=Zf(c));return d}function jg(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.sd=a.Ab(b.Jc=c[2]))}function gg(a,b){null!=a.J&&(a.J+=b||1)}function kg(a){return t(a,4)}
function lg(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.Ga(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function bg(a,b){a.K=a;a.ha=a.wd=536870912;a.V=null;a.X=[];b=a.Ab(b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in tb)0<=Sa(b,c)&&(a.ha|=tb[c],a.i(c+" messages enabled"))}function Nd(a,b,c){for(var d in tb)if(b==tb[d]){a.Z[d]=c;break}}
k.Kb=function(a,b){var c;a=a.toUpperCase();null==b?c=Sa(mg,a):(c=Sa(mg,a.substr(b,2)),0>c&&(c=Sa(mg,a.substr(b,1))));return c};function Kg(a,b){var c=0;a=a.Lb(b);if(void 0!==a)switch(b){case Mg:case Ng:case Og:case Pg:case Qg:case Rg:case Sg:case Tg:c=2;break;case Ug:case Vg:case Wg:case Xg:case Yg:case Zg:case $g:c=4}return c?t(a,c):"??"}
k.Lb=function(a){var b;if(0<=a){var c=this.u;switch(a){case Mg:b=c.g;break;case Ng:b=c.w;break;case Og:b=c.A;break;case Ug:b=Wc(c);break;case Pg:b=c.B;break;case Qg:b=c.C;break;case Vg:b=jd(c);break;case Rg:b=c.D;break;case Sg:b=c.F;break;case Wg:b=D(c);break;case Tg:b=E(c,D(c));break;case Xg:b=c.M;break;case Yg:b=c.j;break;case Zg:b=Uc(c);break;case $g:b=Uc(c)&255|c.g<<8}}return b};
function ah(a,b){b=Rf(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.Kb(b,c+1),0<=e&&(b=b.substr(0,c)+Kg(a,e)+b.substr(c+1+mg[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=Ba(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=eg(a,e))?(d=e+' "'+lg(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=eg(a,e))?(gg(d),d=e+
' "'+lg(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}k.message=function(a,b){b&&(a+=" at "+kg(Zf(this.u.j).J));this.ha&1073741824?this.X.push(a):this.V&&a==this.V||(this.V=a,this.ha&-2147483648&&(this.da(),a+=" (cpu halted)"),this.i(a),this.u&&(a=this.u,Kc(a),a.wa=0,Bc(a)))};
function za(a,b,c,d,e,f,g,h){h|=256;null!=f&&(a.ha&h)!=h||a.message(b.cb+"."+(null!=d?"outPort":"inPort")+"("+x(c)+","+(f?f:"unknown")+(null!=d?","+Ea(d):"")+")"+(null!=g?": "+Ea(g):"")+(null!=e?" at "+kg(e):""))}
function ag(a){var b;if(Fd(a)){if(!a.D||!a.D.length){a.D=Array(bh);for(b=0;b<a.D.length;b++)a.D[b]=Zf();a.T=0;a.i("instruction history buffer allocated")}if(!a.B||!a.B.length)for(a.B=Array(256),b=0;b<a.B.length;b++)a.B[b]=[b,0]}else a.D&&a.D.length&&a.i("instruction history buffer freed"),a.T=0,a.D=[],a.B=[]}function ch(a,b){if(!dh(a))return!1;a.u.tb(b);return!0}
function fg(a,b,c,d){if(!dh(a))return!1;a.C=0;b||Fd(a)&&Gd(a,a.u.j,0);try{var e=a.u.Eb(b);0<e&&(a.C+=e,Fc(a.u,e,!0),Cc(a.u,e),a.N++)}catch(f){"number"!=typeof f&&(a.C=0,ra(a.u,f.stack||f.message))}!1!==d&&Bc(a.u);zc(a,c||!1);return 0<a.C}k.da=function(a){this.u&&this.u.da(a)};function zc(a,b){void 0===b&&(b=!0);a.F=Zf(a.u.j);b&&1!=a.M?eh(a):fh(a)}
function dh(a){var b;if(b=a.u&&sa(a.u))b=a.u,b.G.ja?b=!0:(b.i(b.toString()+" not powered"),b=!1);b&&!ua(a.u)?(a=a.u,a.G.error?(a.i(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}k.va=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};k.ua=function(a,b){b&&this.i(a?"suspending":"shutting down");return a?this.save():!0};k.reset=function(a){ag(this);this.N=this.Y=0;this.V=null;this.C=0;this.F=Zf(this.u.j);this.G.ka=!1;gh(this);a||zc(this)};
k.save=function(){var a=new Vc(this);a.set(0,hg(this.F));a.set(1,hg(this.O));a.set(2,[this.g,this.L,this.ha]);a.set(3,this.A);return a.data()};k.restore=function(a){var b=0;void 0!==a[2]&&(this.F=ig(a[b++]),this.O=ig(a[b++]),this.g=a[b][0],"string"==typeof this.g&&(this.g=[this.g]),this.L=a[b][1],this.ha|=a[b][2]);a[3]&&(this.A=a[3]);return!0};k.start=function(a,b){this.M||this.i("running");this.G.ka=!0;this.wa=a;this.ya=b};
k.stop=function(a,b){if(this.G.ka){this.G.ka=!1;this.C=b-this.ya;if(!this.M){b="stopped";if(this.C){a-=this.wa;var c=0<a?Math.round(1E3*this.C/a):0;b+=" (";Fd(this)&&(b+=this.N+" opcodes, ",this.Y-=this.N,this.N=0);b+=this.C+" cycles, "+a+" ms, "+c+" hz)"}else xa(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.i(b)}zc(this,!0);this.Za();gh(this,this.u.j)}};function Fd(a){return 1<a.j.length||!!a.W}
function Gd(a,b,c){var d=a.u;if(0<c&&(a.W&&!--a.W||tc(a,b,1,a.j)))return!0;0<=c&&a.B.length&&(a.N++,b=Fb(a.H,b),null!=b&&(a.B[b][1]++,b=a.D[a.T],b.J=d.j,b.Da=!1,++a.T==a.D.length&&(a.T=0)));return!1}function Qb(a,b,c){a.i("break on input from port "+x(b)+": "+t(c));a.da(!0)}function Ub(a,b,c){a.i("break on output to port "+x(b)+": "+t(c));a.da(!0)}
function $f(a){var b,c;a.j=["bp"];if(a.I)for(b=1;b<a.I.length;b++){c=a.I[b];var d=a.H;jc(d.b[dg(c)>>>d.g],!1)}a.I=["br"];if(a.w)for(b=1;b<a.w.length;b++)c=a.w[b],d=a.H,jc(d.b[dg(c)>>>d.g],!0);a.w=["bw"];a.oa=0}k.Pa=function(a,b,c){var d=!0;c||hh(this,a,b,!1,!0);if(a!=this.j){var e=dg(b);if(-1===e)this.i("invalid address: "+kg(b.J)),d=!1;else{var f=this.H;f.b[e>>>f.g].Pa(e&f.j,a==this.w)}}d&&(a.push(b),c?b.Da=!0:(ih(this,a,a.length-1,"set"),ag(this)));return d};
function hh(a,b,c,d,e){var f=!1;c=dg(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==dg(h)&&(!d||h.Da)){f=!0;h.Da||e||ih(a,b,g,"cleared");b.splice(g,1);b!=a.j&&(d=a.H,jc(d.b[c>>>d.g],b==a.w));h.Da||ag(a);break}}return f}function jh(a,b){for(var c=1;c<b.length;c++)ih(a,b,c);return b.length-1}function ih(a,b,c,d){c=b[c];a.i(b[0]+" "+kg(c.J)+(d?" "+d:c.Jc?' "'+c.Jc+'"':""))}
function gh(a,b){if(void 0!==b)tc(a,b,1,a.j,!0),a.M=0;else for(b=1;b<a.j.length;b++){var c=a.j[b];if(c.Da){if(!hh(a,a.j,c,!0))break;b=0}}}
function tc(a,b,c,d,e){var f=!1;if(!a.oa++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.Da)for(var m=dg(h),r=0;r<c;r++)if(b+r==m){var u,f=!0;h.Da&&(hh(a,d,h,!0),e=!0);if(u=h.sd){for(var f=!1,v=0;v<u.length;v++)if(!kh(a,u[v],!0)){if(u[v].indexOf("if")){f=!0;break}for(var B=v+1;B<u.length&&u[B].indexOf("else");B++)v++;if(B==u.length){f=!0;break}}a.u.G.ka||(f=!0)}if(f){e||ih(a,d,g,"hit");break}}}a.oa--;return f}
function lh(a,b,c,d){for(var e=Zf(b.J),f=a.Ga(b,1),g=a.ga[f],h="",m=(a.style!=mh?nh:oh)[g[0]],r=g.length-1,u=ph,v,B=1;B<=r;B++){var y="";v=g[B];if(void 0!==v&&!(v&O&&a.style==Yf)){var w=v&qh;if(w){var C=v&rh;C?u=C:v|=u;v&sh||(v|=1==B?th:uh);if(w&P)a:{y=a;w=v;C=b;switch(w&rh){case Q:C=t(y.Ga(C,1),2);break;case vh:C=t(y.Ga(C,1)<<24>>24,4);break;case wh:C=t(y.Gb(C,2),4);break;default:y="imm("+x(w)+")";break a}y.style==mh&&w&xh?C="["+C+"]":w&yh||(C=(y.style==Yf?"$":"0x")+C);y=C}else w&yh?(y=(v&zh)>>8,
w=mg[y],a.style==mh&&v&xh&&(y==Tg&&(w="HL"),w="["+w+"]"),y=w):w&Ah&&(y=(f>>3&7).toString());if(!y||!y.length){h="INVALID";break}0<h.length&&(h+=",");h+=y||"???"}}}f="";g=kg(e.J)+" ";if(-1!==e.J&&-1!==b.J){do if(f+=t(a.Ga(e,1),2),null==e.J)break;while(e.J!=b.J)}g+=La(f,10);g+=v&Bh?"*":" ";g+=La(m,7);h&&(g+=" "+h);c&&(g=La(g,40)+";"+c,g=a.u.G.Wa?g+("cycles="+Dc(a.u).toString()+" cs="+t(a.u.ya)):g+(null!=d?"="+d.toString():""));return g}
function Ch(a,b){switch(b){case "IF":a=a.u.N&512;break;case "SF":a=rd(a.u);break;case "ZF":a=qd(a.u);break;case "AF":a=pd(a.u);break;case "PF":a=od(a.u);break;case "CF":a=md(a.u);break;default:a=0}return b.charAt(0)+(a?"1":"0")+" "}function Dh(a,b){return mg[b]+"="+Kg(a,b)+" "}function Eh(a){return Dh(a,Mg)+Dh(a,Ug)+Dh(a,Vg)+Dh(a,Wg)+Dh(a,Xg)+Ch(a,"IF")+Ch(a,"SF")+Ch(a,"ZF")+Ch(a,"AF")+Ch(a,"PF")+Ch(a,"CF")}k.Ac=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function Fh(a,b,c){var d=[],e=dg(b)>>>0;for(b=0;b<a.A.length;b++){var f=a.A[b],g=f.J>>>0,h=f.Qd;if(e>=g&&e<g+h){e=Qa(f.zc,[e-g],a.Ac);0<=e?Gh(a,b,e,d):c&&(e=~e,Gh(a,b,e-1,d),Gh(a,b,e,d));break}}return d}function Gh(a,b,c,d){var e={},f=a.A[b].zc,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.A[b].ra[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}
function Hh(a,b){if("?"==b)a.i("frequency commands:"),a.i("\tclear\tclear all frequency counts");else{var c=0;if(a.B)if("clear"==b){for(b=0;b<a.B.length;b++)a.B[b]=[b,0];a.i("frequency data cleared");c++}else if(void 0!==b)a.i("unknown frequency command: "+b),c++;else{var d=a.B.slice();d.sort(function(a,b){return b[1]-a[1]});var e=a.style!=mh?nh:oh;for(b=0;b<d.length;b++){var f=d[b][0],g=d[b][1];g&&(a.i((e[a.ga[f][0]]+" ").substr(0,5)+" ("+Ea(f)+"): "+g+" times"),c++)}}c||a.i("no frequency data available")}}
function Ih(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Wf(a)||a.i("no variables"),!0;if(!c[2])return Wf(a,c[1]);if(!c[3])return delete a.S[c[1]],!0;b=Qf(a,c[3]);return void 0!==b?(a.S[c[1]]=b,!0):!1}a.i("invalid assignment:"+b);return!1}
function Jh(a,b,c){var d=null;if(b=eg(a,b,!0)){var e=Fh(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.J-e[1])&&(g=" + "+x(f)),f=e[0]+" ("+kg(e[1])+")"+g,c&&a.i(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.J)&&(g=" - "+x(f)),f=e[4]+" ("+kg(e[5])+")"+g,c&&a.i(f),d||(d=f))}else c&&a.i("no symbols")}return d}
function Kh(a,b){switch(b[1]){case "8080":a.style=Yf;break;case "8086":a.style=mh;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.u.na=c;break;case "start":a.u.za=c;break;case "stop":a.u.sa=c;break;default:a.i("unknown cs option");return}void 0!==c&&yc(a.u);a.i("checksums "+(a.u.G.Wa?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Ec(a.u,+b[2])||a.i("warning: using 1x multiplier, previous target not reached"));a.i("target speed: "+(a.u.Z.toFixed(2)+"Mhz")+" ("+a.u.U+
"x)");return;case "?":a.i("debugger options:");a.i("\t8080\t\tselect 8080-style mnemonics");a.i("\t8086\t\tselect 8086-style mnemonics");a.i("\tcs int #\tset checksum cycle interval to #");a.i("\tcs start #\tset checksum cycle start count to #");a.i("\tcs stop #\tset checksum cycle stop count to #");a.i("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.i("unknown option: "+b[1]);return}}a.i(a.style+"-style mnemonics enabled")}
function bh(a,b){var c;if(b&&"?"==b[1])a.i("register commands:"),a.i("\tr\tdump registers"),a.i("\trx [#]\tset flag or register x to [#]");else{var d=a.u;null==c&&(c=!0);if(b&&1<b.length){var e=b[1],f=e.indexOf("=");if(0<f)b=e.substr(f+1),e=e.substr(0,f);else if(2<b.length)b=b[2];else{a.i("missing value for "+b[1]);return}f=Nf(a,b);if(void 0===f)return;switch(e.toUpperCase()){case "A":d.g=f&255;break;case "B":d.w=f&255;break;case "BC":d.w=f>>8&255;case "C":d.A=f&255;break;case "D":d.B=f&255;break;
case "DE":d.B=f>>8&255;case "E":d.C=f&255;break;case "H":d.D=f&255;break;case "HL":d.D=f>>8&255;case "L":d.F=f&255;break;case "SP":d.M=f&65535;break;case "PC":C(d,f);a.F=Wf(d.j);break;case "PS":Rc(d,f);break;case "PSW":Rc(d,f&255|d.N&-256);d.g=f>>8;break;case "CF":d.I=f?d.I|256:d.I&255;break;case "PF":f?nd(d)||(d.L^=1):nd(d)&&(d.L^=1);break;case "AF":d.O=f?~d.L&16|d.O&-17:d.L&16|d.O&-17;break;case "ZF":d.I=f?d.I&-256:d.I|255;break;case "SF":f?qd(d)||(d.L^=192):qd(d)&&(d.L^=192);break;case "IF":d.N=
f?d.N|512:d.N&-513;break;default:a.i("unknown register: "+e);return}Ac(d);a.i("updated registers:")}a.i(Bh(a));c&&(a.F=Wf(d.j),ch(a,hg(a.F.J)))}}function Ih(a,b){b=Na(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.i(Yg(a,c[2])):Nf(a,b,!0)}function Jh(a,b,c){var d="t"!=b;c=Pf(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);eb(c,function(){return va(a,!0)&&cg(a,e,d,!1)},function(){Ac(a.u);va(a,!1)})}
function ch(a,b,c,d){if(b=bg(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=bg(a,c,!0);if(!d||d.J<b.J)return;e=d.J-b.J;if(256<e){a.i("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=ua(a,!1)||a.M?a.C:null;var g=null!=f?"cycles":null,h=Ch(a,b),l=b.J;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var p=h[0]+":";h[2]&&(p+=" "+h[2]);a.i(p)}h[3]&&(g=h[3],f=null);f=ih(a,b,g,f);a.i(f);a.F=b;e-=b.J-l;c++}}}
k.xb=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.L?a="end":a=this.g[this.b+1];b=[];if(a){a=a.toLowerCase().replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(Na(a.substring(d,f))),d=f+1}}return b};
function hh(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.i(">> "+b):(a.L&&(a.i("ended assemble at "+hg(a.O.J)),a.F=a.O,a.L=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.V=null;if(ra(a)&&0<b.length){a.L&&(b="a "+hg(a.O.J)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var g=f[0],h=g.charAt(0),l=1;l<g.length;l++){var p=g.charAt(l);if("?"==h||"r"==h||"a">p||"z"<p){f[0]=g.substr(l);f.unshift(g.substr(0,l));break}}switch(f[0].charAt(0)){case "a":var r=bg(a,f[1],!0);if(r)if(a.O=
r,void 0===f[2])a.i("begin assemble at "+hg(r.J)),a.L=!0,Ac(a.u);else{var t;a.i("not supported yet");t=[];if(t.length){for(var A=0;A<t.length;A++)a.Tb(r,t[A],1);a.i(ih(a,a.O))}}break;case "b":a:{var w=f[0],u=f[1],B=b;if("?"==u)a.i("breakpoint commands:"),a.i("\tbi [p]\ttoggle break on input port [p]"),a.i("\tbo [p]\ttoggle break on output port [p]"),a.i("\tbp [a]\tset exec breakpoint at addr [a]"),a.i("\tbr [a]\tset read breakpoint at addr [a]"),a.i("\tbw [a]\tset write breakpoint at addr [a]"),a.i("\tbc [a]\tclear breakpoint at addr [a]"),
a.i("\tbl\tlist all breakpoints"),a.i("\tbn [n]\tbreak after [n] instruction(s)");else{var S=w.charAt(1);if("l"==S){var ya;ya=0+gh(a,a.j);ya+=gh(a,a.I);(ya+=gh(a,a.w))||a.i("no breakpoints")}else if("n"==S)a.W=Pf(a,u),a.i("break after "+a.W+" instruction(s)");else if(void 0===u)a.i("missing breakpoint address");else{var K=Wf();if("*"!=u&&(K=bg(a,u,!0),!K))break a;u=y(K.J);"c"==S?null==K.J?(Xf(a),a.i("all breakpoints cleared")):eh(a,a.j,K)||eh(a,a.I,K)||eh(a,a.w,K)||a.i("breakpoint missing: "+hg(K.J)):
"i"==S?a.i("breakpoint "+(Mb(a.H,K.J)?"enabled":"cleared")+": port "+u+" (input)"):"o"==S?a.i("breakpoint "+(Qb(a.H,K.J)?"enabled":"cleared")+": port "+u+" (output)"):null!=K.J&&(gg(a,K,B),"p"==S?a.Pa(a.j,K):"r"==S?a.Pa(a.I,K):"w"==S?a.Pa(a.w,K):a.i("unknown breakpoint command: "+S))}}}break;case "c":a.ta&&(a.ta.value="");break;case "d":a:{var ia,ta=f[0],ma=f[1],La=f[2],cc=f[3];if("?"==ma){var Kb="";for(ia in tb)a.Z[ia]&&(Kb&&(Kb+=","),Kb+=ia);Kb+=",state,symbols";a.i("dump memory commands:");a.i("\tdb [a] [#] dump # bytes at address a");
a.i("\tdw [a] [#] dump # words at address a");a.i("\tdd [a] [#] dump # dwords at address a");a.i("\tdh [#] [#] dump # instructions from history");Kb.length&&a.i("dump extension commands:\n\t"+Kb)}else if("state"==ma){var he=Kh(a.R,!0);"console"==La?console.log(he):(a.ta&&(a.ta.value=""),he&&a.i(he))}else if("symbols"==ma)for(var ie=0;ie<a.A.length;ie++){var je=a.A[ie],Lb;for(Lb in je.ra)if("."!=Lb.charAt(0)){var kg=je.ra[Lb].o;if(void 0!==kg){var lg=je.ra[Lb].l;lg&&(Lb=lg);a.i(hg(kg)+" "+
Lb)}}}else{if("d"==ta){for(ia in tb)if(f[1]==ia){var mg=a.Z[ia];mg?(f.shift(),f.shift(),mg(f)):a.i("no dump registered for "+ma);break a}ma||(ta=a.za||"db")}else a.za=ta;if("dh"==ta){var ng=ma,og=La,pg="",qg=0,Ma=a.T,Xa=a.D;if(Xa.length){var Aa=+ng||a.sa,hc=+og||10;isNaN(Aa)?Aa=hc:pg="more ";Aa>Xa.length&&(a.i("note: only "+Xa.length+" available"),Aa=Xa.length);Ma-=Aa;0>Ma&&(null==Xa[Xa.length-1].J?(Aa=Ma+Aa,Ma=0):Ma+=Xa.length);var ke=[];"call"==og&&(hc=1E5,ke=["CALL"]);for(void 0!==ng&&a.i(Aa+" instructions earlier:");0<
hc&&Ma!=a.T;){var rg=Xa[Ma++];if(null==rg.J)break;var ic=Wf(rg.J),ni=Aa--,sg=ih(a,ic,"history",ni);(!ke.length||0<=sg.indexOf(ke[0]))&&a.i(sg);ic.Gb&&(Ma+=ic.Gb,hc-=ic.Gb,Aa-=ic.Gb);Ma>=Xa.length&&(Ma=0);a.sa=Aa;qg++;hc--}}qg||(a.i("no "+pg+"history available"),a.sa=void 0)}else{var Wc=bg(a,ma);if(Wc){var Xc=0;La&&("l"==La.charAt(0)&&(La=La.substr(1)||cc),Xc=Pf(a,La)>>>0,65536<Xc&&(Xc=65536));for(var jc="",Yc="dd"==ta?4:"dw"==ta?2:1,Zc=Yc*Xc||128,oi=Zc+15>>4||1;oi--&&0<Zc;){var $c=0,le=0,kc,me="",
tg="",ma=hg(Wc.J);for(kc=16;0<kc&&0<Zc;kc--){var ad=a.Ga(Wc,1),$c=$c|ad<<(le++<<3);le==Yc&&(me+=x($c,2*Yc),me+=1==Yc?9==kc?"-":" ":" ",$c=le=0);tg+=32<=ad&&128>ad?String.fromCharCode(ad):".";Zc--}jc&&(jc+="\n");jc+=ma+" "+me+(kc?"":" "+tg)}jc&&a.i(jc);a.la=Wc}}}}break;case "e":if("else"==f[0])break;var bd=1,ug=255,vg=a.Ga,wg=a.Tb;"ew"==f[0]&&(bd=2,ug=65535,vg=a.Cb,wg=a.wc);var xg=bd<<1,yg=f[1];if(null==yg)a.i("edit memory commands:"),a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");
else{var cd=bg(a,yg);if(cd)for(var dd=2;dd<f.length;dd++){var lc=Nf(a,f[dd]);if(void 0===lc){a.i("unrecognized value: "+f[dd]);break}lc&~ug&&a.i("warning: "+x(lc)+" exceeds "+bd+"-byte value");var pi=vg.call(a,cd);a.i("changing "+hg(cd.J)+" from "+x(pi,xg,!0)+" to "+x(lc,xg,!0));wg.call(a,cd,lc,bd)}}break;case "f":Eh(a,f[1]);break;case "g":a:{var zg=f[1],qi=b;if(void 0!==zg){var ne=bg(a,zg,!0);if(!ne)break a;gg(a,ne,qi);a.Pa(a.j,ne,!0)}$g(a,!0)||c||a.i("cpu busy or unavailable, run command ignored")}break;
case "h":a:{var oe;if(a.G.ka)oe="halting",a.da();else{if(ua(a,!0))break a;oe="already halted"}c||a.i(oe)}break;case "i":if("if"==f[0]){var pe;var mc=b.substr(2),mc=Na(mc);Nf(a,mc)?(c||a.i("true: "+mc),pe=!0):(c||a.i("false: "+mc),pe=!1);pe||(d=!1);break}if("int"==f[0]){var ed;var ri=f[1];if(a.u.N&512){var qe=Nf(a,ri);null==qe?ed=!1:(a.i("requesting interrupt level "+qe),Cd(a.u,qe),ed=!0)}else a.i("interrupts disabled (use rif=1 to enable)"),ed=!1;ed||(d=!1);break}var re=f[1];if(re&&"?"!=re){var se=
Pf(a,re);if(void 0!==se){var si=Ob(a.H,se);a.i(y(se)+": "+Da(si))}}else a.i("input commands:"),a.i("\ti [p]\tread port [p]"),a.i("warning: port accesses can affect hardware state");break;case "k":var ti=f[0];if("?"==f[1])a.i("stack trace commands:"),a.i("\tk\tshow frame addresses"),a.i("\tks\tshow symbol information");else{var te=0,Ag=Wf(),nc=Wf(a.u.M);for(a.i("stack trace for "+hg(nc.J));10>te;){for(var sb=null,ui=256;65536>nc.J>>>0;){Ag.J=a.Cb(nc,2);if(null==nc.J||!ui--)break;for(var vi=a,fd=Ag,
Bg=null,oc=fd.J,Cg=oc,ue=1;6>=ue&&oc;ue++){if(2<ue){fd.J=oc;var gd=ih(vi,fd);if(0<=gd.indexOf("CALL")){var Dg=gd.indexOf(" ");if(oc+(gd.indexOf(" ",Dg+1)-Dg-1)/2==Cg){Bg=gd;break}}}oc--}fd.J=Cg;if(sb=Bg)break}if(!sb||null==sb)break;var Eg=null;if("ks"==ti){var Fg=sb.match(/[0-9A-F]+$/);Fg&&(Eg=Gh(a,Fg[0]))}sb=Ka(sb,50)+" ;"+(Eg||"stack="+hg(nc.J));a.i(sb);te++}te||a.i("no return addresses found")}break;case "l":"ln"==f[0]&&Gh(a,f[1],!0);break;case "m":a:{var Ya,Za=null,aa=f[1];"?"==aa&&(aa=void 0);
if(void 0!==aa){var jb=0;if("all"==aa)jb=1878917119,aa=null;else if("on"==aa)Za=!0,aa=null;else if("off"==aa)Za=!1,aa=null;else{"keys"==aa&&(aa="key");"kbd"==aa&&(aa="keyboard");for(Ya in tb)if(aa==Ya){jb=tb[Ya];Za=!!(a.ha&jb);break}if(!jb){a.i("unknown message category: "+aa);break a}}if(jb)if("on"==f[2])a.ha|=jb,Za=!0;else if("off"==f[2]&&(a.ha&=~jb,Za=!1,1073741824==jb)){for(var ve=0;ve<a.X.length;ve++)a.i(a.X[ve]);a.X=[]}}var wi=0,pc="";for(Ya in tb)if(!aa||aa==Ya){var xi=!!(a.ha&tb[Ya]);if(null===
Za||Za==xi)pc&&(pc+=","),++wi%10||(pc+="\n\t"),"key"==Ya&&(Ya="keys"),pc+=Ya}void 0===aa&&a.i("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.i((null!==Za?Za?"messages on: ":"messages off: ":"message categories:\n\t")+(pc||"none"));Yf(a)}break;case "o":var we=f[1],yi=f[2];if(we&&"?"!=we){var xe=Pf(a,we,"port #"),ye=Pf(a,yi);void 0!==xe&&void 0!==ye&&(Sb(a.H,xe,ye),a.i(y(xe)+": "+Da(ye)))}else a.i("output commands:"),a.i("\to [p] [b]\twrite byte [b] to port [p]"),a.i("warning: port accesses can affect hardware state");
break;case "p":if("print"==f[0]){Ih(a,b.substr(5));break}var Gg="pr"==f[0]?1:0,zi=1+Gg;if(a.M)a.i("step in progress");else{var ze=Wf(a.u.j);switch(a.Ga(ze)){case 205:a.M=zi,dg(ze,3)}a.M?(a.Pa(a.j,ze,!0),$g(a)||(a.R&&a.R.Ya(),a.M=0)):Jh(a,Gg?"tr":"t")}break;case "r":if("reset"==b){a.R&&a.R.reset();break}bh(a,f);break;case "s":Hh(a,f);break;case "t":Jh(a,f[0],f[1]);break;case "u":ch(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Fh(a,b.substr(3))||(d=!1);break}a.i("PC8080 version 1.32.2 ("+a.u.ub+",RELEASE"+
(qb?",TYPEDARRAYS":",LONGARRAYS")+")");a.i(Ua());break;case "?":if(f[1]){Ih(a,b.substr(1));break}var Ae="commands:",Be;for(Be in Lh)Ae+="\n"+Ka(Be,9)+Lh[Be];Dd(a)||(Ae+="\nnote: frequency/history disabled if no exec breakpoints");a.i(Ae);break;default:a.i("unknown command: "+b),d=!1}}}catch(Ig){a.i("debugger error: "+(Ig.stack||Ig.message)),d=!1}return d}function zc(a,b,c){b=a.xb(b,c);for(var d in b)if(!hh(a,b[+d]))return!1;return!0}
var Lh={"?":"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"},
Vf=8080,jh=8086,kh="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(" "),lh="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(" "),
Kg=0,Lg=1,Mg=2,Ng=3,Og=4,Pg=5,Qg=6,Jg=7,Rg=8,Sg=9,Tg=10,Ug=11,Vg=12,Wg=13,Xg=14,jg="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),oh=15,nh=240,wh=3840,ph=61440,mh=0,Q=1,sh=2,th=3,vh=16,P=32,uh=64,xh=128,R=Jg<<8|vh|Q,T=Kg<<8|vh|Q,U=Lg<<8|vh|Q,V=Mg<<8|vh|Q,W=Ng<<8|vh|Q,X=Og<<8|vh|Q,Y=Pg<<8|vh|Q,Z=Qg<<8|vh|Q|uh,Mh=Rg<<8|vh|th,Nh=Sg<<8|vh|th,Oh=Tg<<8|vh|th,Ph=Ug<<8|vh|th,Qh=Xg<<8|vh|th,rh=4096,qh=8192,O=16384,yh=32768,$f=[[45],[42,Mh,P],[71,Mh|uh,R|O],[29,Mh],[28,T],[22,T],[44,T,P],[63],[45,yh],[21,
Oh|O,Mh],[40,R|O,Mh|uh],[23,Mh],[28,U],[22,U],[44,U,P],[64],[45,yh],[42,Nh,P],[71,Nh|uh,R|O],[29,Nh],[28,V],[22,V],[44,V,P],[52],[45,yh],[21,Oh|O,Nh],[40,R|O,Nh|uh],[23,Nh],[28,W],[22,W],[44,W,P],[53],[45,yh],[42,Oh,P],[68,51|uh,Oh|O],[29,Oh],[28,X],[22,X],[44,X,P],[20],[45,yh],[21,Oh|O,Oh],[41,Oh|O,51|uh],[23,Oh],[28,Y],[22,Y],[44,Y,P],[16,R|O],[45,yh],[42,Ph,P],[70,51|uh,R|O],[29,Ph],[28,Z],[22,Z],[44,Z,P],[72],[45,yh],[21,Oh|O,Ph],[39,R|O,51|uh],[23,Ph],[28,R],[22,R],[44,R,P],[17],[43,T,T],[43,
T,U],[43,T,V],[43,T,W],[43,T,X],[43,T,Y],[43,T,Z],[43,T,R],[43,U,T],[43,U,U],[43,U,V],[43,U,W],[43,U,X],[43,U,Y],[43,U,Z],[43,U,R],[43,V,T],[43,V,U],[43,V,V],[43,V,W],[43,V,X],[43,V,Y],[43,V,Z],[43,V,R],[43,W,T],[43,W,U],[43,W,V],[43,W,W],[43,W,X],[43,W,Y],[43,W,Z],[43,W,R],[43,X,T],[43,X,U],[43,X,V],[43,X,W],[43,X,X],[43,X,Y],[43,X,Z],[43,X,R],[43,Y,T],[43,Y,U],[43,Y,V],[43,Y,W],[43,Y,X],[43,Y,Y],[43,Y,Z],[43,Y,R],[43,Z,T],[43,Z,U],[43,Z,V],[43,Z,W],[43,Z,X],[43,Z,Y],[26],[43,Z,R],[43,R,T],[43,R,
U],[43,R,V],[43,R,W],[43,R,X],[43,R,Y],[43,R,Z],[43,R,R],[3,R|O,T],[3,R|O,U],[3,R|O,V],[3,R|O,W],[3,R|O,X],[3,R|O,Y],[3,R|O,Z],[3,R|O,R],[2,R|O,T],[2,R|O,U],[2,R|O,V],[2,R|O,W],[2,R|O,X],[2,R|O,Y],[2,R|O,Z],[2,R|O,R],[73,R|O,T],[73,R|O,U],[73,R|O,V],[73,R|O,W],[73,R|O,X],[73,R|O,Y],[73,R|O,Z],[73,R|O,R],[66,R|O,T],[66,R|O,U],[66,R|O,V],[66,R|O,W],[66,R|O,X],[66,R|O,Y],[66,R|O,Z],[66,R|O,R],[5,R|O,T],[5,R|O,U],[5,R|O,V],[5,R|O,W],[5,R|O,X],[5,R|O,Y],[5,R|O,Z],[5,R|O,R],[76,R|O,T],[76,R|O,U],[76,R|
O,V],[76,R|O,W],[76,R|O,X],[76,R|O,Y],[76,R|O,Z],[76,R|O,R],[46,R|O,T],[46,R|O,U],[46,R|O,V],[46,R|O,W],[46,R|O,X],[46,R|O,Y],[46,R|O,Z],[46,R|O,R],[18,R|O,T],[18,R|O,U],[18,R|O,V],[18,R|O,W],[18,R|O,X],[18,R|O,Y],[18,R|O,Z],[18,R|O,R],[58],[50,Mh],[34,51],[30,51],[11,51],[51,Mh],[4,R|O,P|Q],[65,xh],[62],[54],[38,51],[30,51|yh],[15,51],[7,51],[1,R|O,P|Q],[65,xh],[57],[50,Nh],[33,51],[48,P|Q,R|O],[10,51],[51,Nh],[74,R|O,P|Q],[65,xh],[55],[54,yh],[31,51],[27,R|O,P|Q],[8,51],[7,51|yh],[67,R|O,P|Q],[65,
xh],[61],[50,Oh],[37,51],[78,Ph|uh|O,Oh|O],[14,51],[51,Oh],[6,R|O,P|Q],[65,xh],[60],[49,Oh],[36,51],[75,Oh|O,Nh|O],[13,51],[7,51|yh],[77,R|O,P|Q],[65,xh],[59],[50,Qh],[35,51],[24],[12,51],[51,Qh],[47,R|O,P|Q],[65,xh],[56],[69,Ph|O,Oh|O],[32,51],[25],[9,51],[7,51|yh],[19,R|O,P|Q],[65,xh]],Zg=1E3;hb(function(){for(var a=pa(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=na(c),d=new Uf(d);oa(d,c)}});
function Rh(a,b,c){n.call(this,"Computer",a,67108864);this.G.ja=!1;Sh(this,b);this.L=vc(this,"autoPower",a);this.j=0;this.T=a.busWidth||a.buswidth;this.b=Th;this.F=null;this.C=this.O=!1;this.U=vc(this,"url")||"";(Math.random()+.1).toString(36);this.g=Uh(this);if(this.u=la("CPU",this.id)){this.K=la("Debugger",this.id);this.A=[];for(b=null;b=vb(this,"Video",b);)this.A.push(b);this.H=new xb({id:this.bb+".bus",busWidth:this.T},this.u,this.K);var d,e=ja(this.id);if((this.B=la("Panel",this.id))&&this.B.ta)for(b=
0;b<e.length;b++)d=e[b],d.aa=this.B.aa,d.i=this.B.i,d.ta=this.B.ta;this.i("PC8080 v1.32.2\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Ea&&d.Ea(this,this.H,this.u,this.K);b=null;d=vc(this,"resume",a);void 0!==d&&(1<d.length?b=this.D=d:this.b=parseInt(d,10));var f;if(a=vc(this,"state")||(f=!0,a.state))b=this.M=a,f||(this.C=!0,this.b=Th),this.b&&(this.I=new Uc(this,"1.32.2"),Vh(this.I)?
b=null:delete this.I);!b&&this.b&&(b=Wh(this))&&(this.C=!0);if(b){var g=this;Sa(b,null,!0,function(a,b,c){c?(g.D=null,g.C=!1,g.aa("Unable to load machine state from server (error "+c+(b?": "+Na(b):"")+")")):(g.F=b,g.O=!0);sa(g)})}else sa(this);this.P.power||(this.L=!0);!c&&this.L&&Xh(this,this.lb)}else q("Unable to find CPU component")}ba(Rh,n);function Sh(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){q(d.message+" ("+c+")")}}a.S=b}
function vc(a,b,c){var d=b.toLowerCase(),d=cb(b)||cb(d);void 0===d&&a.S&&(d=a.S[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Xh(a,b,c){for(var d=ja(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ra(f)){ra(f,function(){Xh(a,b,c)});return}}b.call(a,c)}
function Yh(a,b){var c=new Uc(a,"1.32.2",Zh);if(Vh(c)&&$h(c)){var d=c.get(ai),e=b?b.get(ai):"unknown";d!=e&&(a.aa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=Rh.prototype;
k.lb=function(a){void 0===a&&(a=this.b||(this.F?bi:Th));if(!this.j){this.j++;var b=!1,c=!1;this.N=!1;var d=this.I||new Uc(this,"1.32.2");if(a==ci)b=!0;else if(a>Th){if(Vh(d,this.F)){this.w=new Uc(this,"1.32.2",di);Vh(this.w)&&(ei(this,d),a=fi,gi(this.w));this.w.set(ai,Qa());hi(this.w);var e=this.b&&!this.C;if(a==bi||ha("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=$h(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Vh(d,g):("error"==f&&"no machine state"!=
g?(this.aa("Error: "+g),"unable to verify user"==g&&(ab(ii,""),this.g=null)):this.i(f+": "+g),gi(d),Vh(d)?(c=$h(d),e=!0):c=!1))}e&&Yh(this,c?d:null)}else a==fi&&d.clear()}else Yh(this);delete this.F;delete this.I}e=ja(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.u&&(c=ji(this,g,d,b,c));b=[d,a,c];a!=ci?Xh(this,this.gc,b):this.gc(b)}};
function ji(a,b,c,d,e){if(!b.G.ja){b.G.ja=!0;if(b.va){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.va(f,d)&&f&&(q("Unable to restore state for "+b.type),a.M&&!a.O?(c.clear(),a.b=Th,window&&window.location.reload()):a.N=!0,b.va(null),e=!1)}if(!d&&b.cc)for(a=b.cc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
k.gc=function(a){var b=a[0],c=0>a[1];a=a[2];this.W=!0;this.G.ja=!0;var d=this.P.power;d&&(d.textContent="Shutdown");this.u&&(ji(this,this.u,b,c,a),this.u.jb());this.N&&(ei(this,b),b.clear());!c&&this.w&&(this.w.clear(),delete this.w);this.j=0};
function ei(a,b){if(ha("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.g||"";b=b.toString();var d={app:"PC8080",ver:"1.32.2"};d.url=a.U;d.user=c;d.type="bug";d.data=b;Sa("http://www.pcjs.org/api/v1/report",d,!0)}}
function Kh(a,b,c){var d,e="none";if(a.j)return null;a.j--;var f=new Uc(a,"1.32.2"),g=new Uc(a,"1.32.2",Zh),h=Qa();g.set(ai,h);f.set(ai,h);f.set(ki,"1.32.2");f.set(li,window?window.location.href:null);f.set(mi,Ua());a.u&&a.u.ua&&(c&&a.u.da(),d=a.u.ua(b,c),"object"===typeof d&&f.set(a.u.id,d),c&&(a.u.G.ja=!1,!1===d&&(e=null)));for(var h=ja(a.id),l=0;l<h.length;l++){var p=h[l];p.G.ja&&(p.ua&&(d=p.ua(b,c),"object"===typeof d&&f.set(p.id,d)),c&&(p.G.ja=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.g&&Ai(a,
a.g,f.toString()),hi(g)&&hi(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Bi),d&&f.clear(h)):e=f.toString());c&&(a.G.ja=!1,b=a.P.power)&&(b.textContent="Power");a.j=0;return e}k.reset=function(){this.H&&this.H.reset&&(xa(this,"Resetting "+this.H.type),this.H.reset());for(var a=ja(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.H&&c.reset&&(xa(this,"Resetting "+c.type),c.reset())}};
k.start=function(a,b){for(var c=ja(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};k.stop=function(a,b){for(var c=ja(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
k.ca=function(a,b,c){var d=this;switch(b){case "power":return this.P[b]=c,c.onclick=function(){d.j||(d.G.ja?Kh(d,!1,!0):Xh(d,d.lb))},!0;case "reset":return this.P[b]=c,c.onclick=function(){if(d.G.ja&&!d.j)if(d.b&&!d.D){var a=ha("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Kh(d,a,!0);!a&&d.M?window&&window.location.reload():d.lb(Th)}else d.reset(),d.u&&d.u.jb()},!0;case "save":if(Ga())c.parentNode.removeChild(c);else return this.P[b]=
c,c.onclick=function(){var a=Uh(d,!0);if(a){var b=!!(d.b&&!d.D||d.M),c=Kh(d,b);b?Ai(d,a,c):d.aa("Resume disabled, machine state not saved")}},!0}return!1};
function Uh(a,b){var c=a.g;c||((c=$a(ii),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Ci(a,c))||a.aa("The user ID is invalid.")):b&&a.aa("Browser local storage is not available"));return c}
function Ci(a,b){a.g=null;b=Sa(Ha()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(ab(ii,b.data),a.g=b.data)}catch(d){q(d.message+" ("+c+")")}return a.g}function Wh(a){var b=null;a.g&&(b=Ha()+"/api/v1/user?req=load&user="+a.g+"&state="+Di(a,"1.32.2"));return b}
function Ai(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Di(a,"1.32.2");d.data=c;b=Sa(Ha()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.aa("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.aa(c),ab(ii,""),a.g=null)}}
function vb(a,b,c){a=ja(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}k.Ya=function(a){if(this.A.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.A[0];d.V&&d.V.focus();!a&&window&&window.scrollTo(b,c)}};
function Kc(a,b){a.u&&(a=a.u,a.gb&&(b||!a.G.ka||a.G.fc)&&(J(a,"A",a.g),J(a,"B",a.w),J(a,"C",a.A),J(a,"BC",Vc(a),4),J(a,"D",a.B),J(a,"E",a.C),J(a,"DE",id(a),4),J(a,"H",a.D),J(a,"L",a.F),J(a,"HL",D(a),4),J(a,"SP",a.M,4),J(a,"PC",a.j,4),b=Tc(a),J(a,"PS",b,4),J(a,"IF",b&512?1:0,1),J(a,"SF",b&128?1:0,1),J(a,"ZF",b&64?1:0,1),J(a,"AF",b&16?1:0,1),J(a,"PF",b&4?1:0,1),J(a,"CF",b&1?1:0,1)),b=a.P.speed)&&(b.textContent=a.G.ka&&a.Y?a.Y.toFixed(2)+"Mhz":"Stopped")}
var di="failsafe",Zh="validate",ai="timestamp",ki="version",li="url",mi="browser",ii="user",ci=-1,Th=0,bi=1,fi=2,Bi=3;hb(function(){for(var a=pa(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=na(c),c=pa(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=na(f),g=new Rh(g,d,!0);oa(g,f);g.L&&Xh(g,g.lb)}});ib.show.push(function(){for(var a=pa(document,"pc8080","computer"),b=0;b<a.length;b++){var c=na(a[b]);(c=la("Computer",c.id))&&c.W&&!c.G.ja&&c.lb(ci)}});
ib.exit.push(function(){for(var a=pa(document,"pc8080","computer"),b=0;b<a.length;b++){var c=na(a[b]);(c=la("Computer",c.id))&&c.G.ja&&Kh(c,!(!c.b||c.D),!0)}});function Uc(a,b,c){this.id=a.id;this.K=a.K;this.g="";this.b={};this.u=this.H=!1;this.key=Di(a,b,c);gi(this,a.xd)}k=Uc.prototype;k.set=function(a,b){try{this.b[a]=b}catch(c){}};k.get=function(a){return this.b[a]||null};k.data=function(){return this.b};
function Vh(a,b){return b?(a.g=b,a.u=!0,a.H=!1,!0):a.u?!0:Va()&&(b=$a(a.key))?(a.g=b,a.u=!0):!1}function $h(a){var b=!0;if(!a.H)try{a.b=JSON.parse(a.g),a.H=!0}catch(c){q(c.message||c),b=!1}return b}function hi(a){var b=!0;if(Va()){var c=JSON.stringify(a.b);ab(a.key,c)||(q("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.b?JSON.stringify(this.b):this.g};function gi(a,b){a.g="";a.b={};a.u=a.H=!1;b&&a.set("parms",b)}
k.clear=function(a){gi(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function Di(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var Ei=0;
function Fi(a,b,c,d,e,f){e("Loading "+a+"...");Sa(a,null,!0,function(g,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),f(h,null)):Gi(h,a,b,c,d,e,f)})}
function Gi(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&(da(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{",d+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PC8080$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){f=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,f)}}a?e?Hi(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
function eh(a,b){var c;if(b&&"?"==b[1])a.i("register commands:"),a.i("\tr\tdump registers"),a.i("\trx [#]\tset flag or register x to [#]");else{var d=a.u;null==c&&(c=!0);if(b&&1<b.length){var e=b[1],f=e.indexOf("=");if(0<f)b=e.substr(f+1),e=e.substr(0,f);else if(2<b.length)b=b[2];else{a.i("missing value for "+b[1]);return}f=Qf(a,b);if(void 0===f)return;switch(e.toUpperCase()){case "A":d.g=f&255;break;case "B":d.w=f&255;break;case "BC":d.w=f>>8&255;case "C":d.A=f&255;break;case "D":d.B=f&255;break;
case "DE":d.B=f>>8&255;case "E":d.C=f&255;break;case "H":d.D=f&255;break;case "HL":d.D=f>>8&255;case "L":d.F=f&255;break;case "SP":d.M=f&65535;break;case "PC":A(d,f);a.F=Zf(d.j);break;case "PS":Sc(d,f);break;case "PSW":Sc(d,f&255|d.N&-256);d.g=f>>8;break;case "CF":d.I=f?d.I|256:d.I&255;break;case "PF":f?od(d)||(d.L^=1):od(d)&&(d.L^=1);break;case "AF":d.O=f?~d.L&16|d.O&-17:d.L&16|d.O&-17;break;case "ZF":d.I=f?d.I&-256:d.I|255;break;case "SF":f?rd(d)||(d.L^=192):rd(d)&&(d.L^=192);break;case "IF":d.N=
f?d.N|512:d.N&-513;break;default:a.i("unknown register: "+e);return}Bc(d);a.i("updated registers:")}a.i(Eh(a));c&&(a.F=Zf(d.j),fh(a,kg(a.F.J)))}}function Lh(a,b){b=Ma(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.i(ah(a,c[2])):Qf(a,b,!0)}function Mh(a,b,c){var d="t"!=b;c=Sf(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);fb(c,function(){return wa(a,!0)&&fg(a,e,d,!1)},function(){Bc(a.u);wa(a,!1)})}
function fh(a,b,c,d){if(b=eg(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=eg(a,c,!0);if(!d||d.J<b.J)return;e=d.J-b.J;if(256<e){a.i("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=ua(a,!1)||a.M?a.C:null;var g=null!=f?"cycles":null,h=Fh(a,b),m=b.J;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var r=h[0]+":";h[2]&&(r+=" "+h[2]);a.i(r)}h[3]&&(g=h[3],f=null);f=lh(a,b,g,f);a.i(f);a.F=b;e-=b.J-m;c++}}}
k.Ab=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.L?a="end":a=this.g[this.b+1];b=[];if(a){a=a.toLowerCase().replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(Ma(a.substring(d,f))),d=f+1}}return b};
function kh(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.i(">> "+b):(a.L&&(a.i("ended assemble at "+kg(a.O.J)),a.F=a.O,a.L=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.V=null;if(sa(a)&&0<b.length){a.L&&(b="a "+kg(a.O.J)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var g=f[0],h=g.charAt(0),m=1;m<g.length;m++){var r=g.charAt(m);if("?"==h||"r"==h||"a">r||"z"<r){f[0]=g.substr(m);f.unshift(g.substr(0,m));break}}switch(f[0].charAt(0)){case "a":var u=eg(a,f[1],!0);if(u)if(a.O=
u,void 0===f[2])a.i("begin assemble at "+kg(u.J)),a.L=!0,Bc(a.u);else{var v;a.i("not supported yet");v=[];if(v.length){for(var B=0;B<v.length;B++)a.Xb(u,v[B],1);a.i(lh(a,a.O))}}break;case "b":a:{var y=f[0],w=f[1],C=b;if("?"==w)a.i("breakpoint commands:"),a.i("\tbi [p]\ttoggle break on input port [p]"),a.i("\tbo [p]\ttoggle break on output port [p]"),a.i("\tbp [a]\tset exec breakpoint at addr [a]"),a.i("\tbr [a]\tset read breakpoint at addr [a]"),a.i("\tbw [a]\tset write breakpoint at addr [a]"),a.i("\tbc [a]\tclear breakpoint at addr [a]"),
a.i("\tbl\tlist all breakpoints"),a.i("\tbn [n]\tbreak after [n] instruction(s)");else{var T=y.charAt(1);if("l"==T){var Aa;Aa=0+jh(a,a.j);Aa+=jh(a,a.I);(Aa+=jh(a,a.w))||a.i("no breakpoints")}else if("n"==T)a.W=Sf(a,w),a.i("break after "+a.W+" instruction(s)");else if(void 0===w)a.i("missing breakpoint address");else{var L=Zf();if("*"!=w&&(L=eg(a,w,!0),!L))break a;w=x(L.J);"c"==T?null==L.J?($f(a),a.i("all breakpoints cleared")):hh(a,a.j,L)||hh(a,a.I,L)||hh(a,a.w,L)||a.i("breakpoint missing: "+kg(L.J)):
"i"==T?a.i("breakpoint "+(Lb(a.H,L.J)?"enabled":"cleared")+": port "+w+" (input)"):"o"==T?a.i("breakpoint "+(Rb(a.H,L.J)?"enabled":"cleared")+": port "+w+" (output)"):null!=L.J&&(jg(a,L,C),"p"==T?a.Pa(a.j,L):"r"==T?a.Pa(a.I,L):"w"==T?a.Pa(a.w,L):a.i("unknown breakpoint command: "+T))}}}break;case "c":a.ta&&(a.ta.value="");break;case "d":a:{var ja,va=f[0],na=f[1],Na=f[2],fc=f[3];if("?"==na){var Nb="";for(ja in tb)a.Z[ja]&&(Nb&&(Nb+=","),Nb+=ja);Nb+=",state,symbols";a.i("dump memory commands:");a.i("\tdb [a] [#] dump # bytes at address a");
a.i("\tdw [a] [#] dump # words at address a");a.i("\tdd [a] [#] dump # dwords at address a");a.i("\tdh [#] [#] dump # instructions from history");Nb.length&&a.i("dump extension commands:\n\t"+Nb)}else if("state"==na){var je=Nh(a.R,!0);"console"==Na?console.log(je):(a.ta&&(a.ta.value=""),je&&a.i(je))}else if("symbols"==na)for(var ke=0;ke<a.A.length;ke++){var le=a.A[ke],Ob;for(Ob in le.ra)if("."!=Ob.charAt(0)){var ng=le.ra[Ob].o;if(void 0!==ng){var og=le.ra[Ob].l;og&&(Ob=og);a.i(kg(ng)+" "+
Ob)}}}else{if("d"==va){for(ja in tb)if(f[1]==ja){var pg=a.Z[ja];pg?(f.shift(),f.shift(),pg(f)):a.i("no dump registered for "+na);break a}na||(va=a.za||"db")}else a.za=va;if("dh"==va){var qg=na,rg=Na,sg="",tg=0,Oa=a.T,$a=a.D;if($a.length){var Ca=+qg||a.sa,kc=+rg||10;isNaN(Ca)?Ca=kc:sg="more ";Ca>$a.length&&(a.i("note: only "+$a.length+" available"),Ca=$a.length);Oa-=Ca;0>Oa&&(null==$a[$a.length-1].J?(Ca=Oa+Ca,Oa=0):Oa+=$a.length);var me=[];"call"==rg&&(kc=1E5,me=["CALL"]);for(void 0!==qg&&a.i(Ca+" instructions earlier:");0<
kc&&Oa!=a.T;){var ug=$a[Oa++];if(null==ug.J)break;var lc=Zf(ug.J),qi=Ca--,vg=lh(a,lc,"history",qi);(!me.length||0<=vg.indexOf(me[0]))&&a.i(vg);lc.Jb&&(Oa+=lc.Jb,kc-=lc.Jb,Ca-=lc.Jb);Oa>=$a.length&&(Oa=0);a.sa=Ca;tg++;kc--}}tg||(a.i("no "+sg+"history available"),a.sa=void 0)}else{var Yc=eg(a,na);if(Yc){var Zc=0;Na&&("l"==Na.charAt(0)&&(Na=Na.substr(1)||fc),Zc=Sf(a,Na)>>>0,65536<Zc&&(Zc=65536));for(var mc="",$c="dd"==va?4:"dw"==va?2:1,ad=$c*Zc||128,ri=ad+15>>4||1;ri--&&0<ad;){var bd=0,ne=0,nc,oe="",
wg="",na=kg(Yc.J);for(nc=16;0<nc&&0<ad;nc--){var cd=a.Ga(Yc,1),bd=bd|cd<<(ne++<<3);ne==$c&&(oe+=t(bd,2*$c),oe+=1==$c?9==nc?"-":" ":" ",bd=ne=0);wg+=32<=cd&&128>cd?String.fromCharCode(cd):".";ad--}mc&&(mc+="\n");mc+=na+" "+oe+(nc?"":" "+wg)}mc&&a.i(mc);a.la=Yc}}}}break;case "e":if("else"==f[0])break;var dd=1,xg=255,yg=a.Ga,zg=a.Xb;"ew"==f[0]&&(dd=2,xg=65535,yg=a.Gb,zg=a.Qc);var Ag=dd<<1,Bg=f[1];if(null==Bg)a.i("edit memory commands:"),a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");
else{var ed=eg(a,Bg);if(ed)for(var fd=2;fd<f.length;fd++){var oc=Qf(a,f[fd]);if(void 0===oc){a.i("unrecognized value: "+f[fd]);break}oc&~xg&&a.i("warning: "+t(oc)+" exceeds "+dd+"-byte value");var si=yg.call(a,ed);a.i("changing "+kg(ed.J)+" from "+t(si,Ag,!0)+" to "+t(oc,Ag,!0));zg.call(a,ed,oc,dd)}}break;case "f":Hh(a,f[1]);break;case "g":a:{var Cg=f[1],ti=b;if(void 0!==Cg){var pe=eg(a,Cg,!0);if(!pe)break a;jg(a,pe,ti);a.Pa(a.j,pe,!0)}ch(a,!0)||c||a.i("cpu busy or unavailable, run command ignored")}break;
case "h":a:{var qe;if(a.G.ka)qe="halting",a.da();else{if(ua(a,!0))break a;qe="already halted"}c||a.i(qe)}break;case "i":if("if"==f[0]){var re;var pc=b.substr(2),pc=Ma(pc);Qf(a,pc)?(c||a.i("true: "+pc),re=!0):(c||a.i("false: "+pc),re=!1);re||(d=!1);break}if("int"==f[0]){var gd;var ui=f[1];if(a.u.N&512){var se=Qf(a,ui);null==se?gd=!1:(a.i("requesting interrupt level "+se),Ed(a.u,se),gd=!0)}else a.i("interrupts disabled (use rif=1 to enable)"),gd=!1;gd||(d=!1);break}var te=f[1];if(te&&"?"!=te){var ue=
Sf(a,te);if(void 0!==ue){var vi=Pb(a.H,ue);a.i(x(ue)+": "+Ea(vi))}}else a.i("input commands:"),a.i("\ti [p]\tread port [p]"),a.i("warning: port accesses can affect hardware state");break;case "k":var wi=f[0];if("?"==f[1])a.i("stack trace commands:"),a.i("\tk\tshow frame addresses"),a.i("\tks\tshow symbol information");else{var ve=0,Dg=Zf(),qc=Zf(a.u.M);for(a.i("stack trace for "+kg(qc.J));10>ve;){for(var vb=null,xi=256;65536>qc.J>>>0;){Dg.J=a.Gb(qc,2);if(null==qc.J||!xi--)break;for(var yi=a,hd=Dg,
Eg=null,rc=hd.J,Fg=rc,we=1;6>=we&&rc;we++){if(2<we){hd.J=rc;var id=lh(yi,hd);if(0<=id.indexOf("CALL")){var Gg=id.indexOf(" ");if(rc+(id.indexOf(" ",Gg+1)-Gg-1)/2==Fg){Eg=id;break}}}rc--}hd.J=Fg;if(vb=Eg)break}if(!vb||null==vb)break;var Hg=null;if("ks"==wi){var Ig=vb.match(/[0-9A-F]+$/);Ig&&(Hg=Jh(a,Ig[0]))}vb=La(vb,50)+" ;"+(Hg||"stack="+kg(qc.J));a.i(vb);ve++}ve||a.i("no return addresses found")}break;case "l":"ln"==f[0]&&Jh(a,f[1],!0);break;case "m":a:{var ab,bb=null,ba=f[1];"?"==ba&&(ba=void 0);
if(void 0!==ba){var mb=0;if("all"==ba)mb=1878917119,ba=null;else if("on"==ba)bb=!0,ba=null;else if("off"==ba)bb=!1,ba=null;else{"keys"==ba&&(ba="key");"kbd"==ba&&(ba="keyboard");for(ab in tb)if(ba==ab){mb=tb[ab];bb=!!(a.ha&mb);break}if(!mb){a.i("unknown message category: "+ba);break a}}if(mb)if("on"==f[2])a.ha|=mb,bb=!0;else if("off"==f[2]&&(a.ha&=~mb,bb=!1,1073741824==mb)){for(var xe=0;xe<a.X.length;xe++)a.i(a.X[xe]);a.X=[]}}var zi=0,sc="";for(ab in tb)if(!ba||ba==ab){var Ai=!!(a.ha&tb[ab]);if(null===
bb||bb==Ai)sc&&(sc+=","),++zi%10||(sc+="\n\t"),"key"==ab&&(ab="keys"),sc+=ab}void 0===ba&&a.i("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.i((null!==bb?bb?"messages on: ":"messages off: ":"message categories:\n\t")+(sc||"none"));ag(a)}break;case "o":var ye=f[1],Bi=f[2];if(ye&&"?"!=ye){var ze=Sf(a,ye,"port #"),Ae=Sf(a,Bi);void 0!==ze&&void 0!==Ae&&(Tb(a.H,ze,Ae),a.i(x(ze)+": "+Ea(Ae)))}else a.i("output commands:"),a.i("\to [p] [b]\twrite byte [b] to port [p]"),a.i("warning: port accesses can affect hardware state");
break;case "p":if("print"==f[0]){Lh(a,b.substr(5));break}var Jg="pr"==f[0]?1:0,Ci=1+Jg;if(a.M)a.i("step in progress");else{var Be=Zf(a.u.j);switch(a.Ga(Be)){case 205:a.M=Ci,gg(Be,3)}a.M?(a.Pa(a.j,Be,!0),ch(a)||(a.R&&a.R.Za(),a.M=0)):Mh(a,Jg?"tr":"t")}break;case "r":if("reset"==b){a.R&&a.R.reset();break}eh(a,f);break;case "s":Kh(a,f);break;case "t":Mh(a,f[0],f[1]);break;case "u":fh(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Ih(a,b.substr(3))||(d=!1);break}a.i("PC8080 version 1.32.2 ("+a.u.xb+",RELEASE"+
(rb?",TYPEDARRAYS":",LONGARRAYS")+")");a.i(Va());break;case "?":if(f[1]){Lh(a,b.substr(1));break}var Ce="commands:",De;for(De in Oh)Ce+="\n"+La(De,9)+Oh[De];Fd(a)||(Ce+="\nnote: frequency/history disabled if no exec breakpoints");a.i(Ce);break;default:a.i("unknown command: "+b),d=!1}}}catch(Lg){a.i("debugger error: "+(Lg.stack||Lg.message)),d=!1}return d}function Ac(a,b,c){b=a.Ab(b,c);for(var d in b)if(!kh(a,b[+d]))return!1;return!0}
var Oh={"?":"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"},
Yf=8080,mh=8086,nh="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(" "),oh="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(" "),
Ng=0,Og=1,Pg=2,Qg=3,Rg=4,Sg=5,Tg=6,Mg=7,Ug=8,Vg=9,Wg=10,Xg=11,Yg=12,Zg=13,$g=14,mg="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),rh=15,qh=240,zh=3840,sh=61440,ph=0,Q=1,vh=2,wh=3,yh=16,P=32,xh=64,Ah=128,R=Mg<<8|yh|Q,S=Ng<<8|yh|Q,U=Og<<8|yh|Q,V=Pg<<8|yh|Q,W=Qg<<8|yh|Q,X=Rg<<8|yh|Q,Y=Sg<<8|yh|Q,Z=Tg<<8|yh|Q|xh,Ph=Ug<<8|yh|wh,Qh=Vg<<8|yh|wh,Rh=Wg<<8|yh|wh,Sh=Xg<<8|yh|wh,Th=$g<<8|yh|wh,uh=4096,th=8192,O=16384,Bh=32768,cg=[[45],[42,Ph,P],[71,Ph|xh,R|O],[29,Ph],[28,S],[22,S],[44,S,P],[63],[45,Bh],[21,
Rh|O,Ph],[40,R|O,Ph|xh],[23,Ph],[28,U],[22,U],[44,U,P],[64],[45,Bh],[42,Qh,P],[71,Qh|xh,R|O],[29,Qh],[28,V],[22,V],[44,V,P],[52],[45,Bh],[21,Rh|O,Qh],[40,R|O,Qh|xh],[23,Qh],[28,W],[22,W],[44,W,P],[53],[45,Bh],[42,Rh,P],[68,51|xh,Rh|O],[29,Rh],[28,X],[22,X],[44,X,P],[20],[45,Bh],[21,Rh|O,Rh],[41,Rh|O,51|xh],[23,Rh],[28,Y],[22,Y],[44,Y,P],[16,R|O],[45,Bh],[42,Sh,P],[70,51|xh,R|O],[29,Sh],[28,Z],[22,Z],[44,Z,P],[72],[45,Bh],[21,Rh|O,Sh],[39,R|O,51|xh],[23,Sh],[28,R],[22,R],[44,R,P],[17],[43,S,S],[43,
S,U],[43,S,V],[43,S,W],[43,S,X],[43,S,Y],[43,S,Z],[43,S,R],[43,U,S],[43,U,U],[43,U,V],[43,U,W],[43,U,X],[43,U,Y],[43,U,Z],[43,U,R],[43,V,S],[43,V,U],[43,V,V],[43,V,W],[43,V,X],[43,V,Y],[43,V,Z],[43,V,R],[43,W,S],[43,W,U],[43,W,V],[43,W,W],[43,W,X],[43,W,Y],[43,W,Z],[43,W,R],[43,X,S],[43,X,U],[43,X,V],[43,X,W],[43,X,X],[43,X,Y],[43,X,Z],[43,X,R],[43,Y,S],[43,Y,U],[43,Y,V],[43,Y,W],[43,Y,X],[43,Y,Y],[43,Y,Z],[43,Y,R],[43,Z,S],[43,Z,U],[43,Z,V],[43,Z,W],[43,Z,X],[43,Z,Y],[26],[43,Z,R],[43,R,S],[43,R,
U],[43,R,V],[43,R,W],[43,R,X],[43,R,Y],[43,R,Z],[43,R,R],[3,R|O,S],[3,R|O,U],[3,R|O,V],[3,R|O,W],[3,R|O,X],[3,R|O,Y],[3,R|O,Z],[3,R|O,R],[2,R|O,S],[2,R|O,U],[2,R|O,V],[2,R|O,W],[2,R|O,X],[2,R|O,Y],[2,R|O,Z],[2,R|O,R],[73,R|O,S],[73,R|O,U],[73,R|O,V],[73,R|O,W],[73,R|O,X],[73,R|O,Y],[73,R|O,Z],[73,R|O,R],[66,R|O,S],[66,R|O,U],[66,R|O,V],[66,R|O,W],[66,R|O,X],[66,R|O,Y],[66,R|O,Z],[66,R|O,R],[5,R|O,S],[5,R|O,U],[5,R|O,V],[5,R|O,W],[5,R|O,X],[5,R|O,Y],[5,R|O,Z],[5,R|O,R],[76,R|O,S],[76,R|O,U],[76,R|
O,V],[76,R|O,W],[76,R|O,X],[76,R|O,Y],[76,R|O,Z],[76,R|O,R],[46,R|O,S],[46,R|O,U],[46,R|O,V],[46,R|O,W],[46,R|O,X],[46,R|O,Y],[46,R|O,Z],[46,R|O,R],[18,R|O,S],[18,R|O,U],[18,R|O,V],[18,R|O,W],[18,R|O,X],[18,R|O,Y],[18,R|O,Z],[18,R|O,R],[58],[50,Ph],[34,51],[30,51],[11,51],[51,Ph],[4,R|O,P|Q],[65,Ah],[62],[54],[38,51],[30,51|Bh],[15,51],[7,51],[1,R|O,P|Q],[65,Ah],[57],[50,Qh],[33,51],[48,P|Q,R|O],[10,51],[51,Qh],[74,R|O,P|Q],[65,Ah],[55],[54,Bh],[31,51],[27,R|O,P|Q],[8,51],[7,51|Bh],[67,R|O,P|Q],[65,
Ah],[61],[50,Rh],[37,51],[78,Sh|xh|O,Rh|O],[14,51],[51,Rh],[6,R|O,P|Q],[65,Ah],[60],[49,Rh],[36,51],[75,Rh|O,Qh|O],[13,51],[7,51|Bh],[77,R|O,P|Q],[65,Ah],[59],[50,Th],[35,51],[24],[12,51],[51,Th],[47,R|O,P|Q],[65,Ah],[56],[69,Sh|O,Rh|O],[32,51],[25],[9,51],[7,51|Bh],[19,R|O,P|Q],[65,Ah]],bh=1E3;ib(function(){for(var a=qa(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Xf(d);pa(d,c)}});
function Uh(a,b,c){n.call(this,"Computer",a,67108864);this.G.ja=!1;Vh(this,b);this.L=wc(this,"autoPower",a);this.j=0;this.T=a.busWidth||a.buswidth;this.b=Wh;this.F=null;this.C=this.O=!1;this.U=wc(this,"url")||"";(Math.random()+.1).toString(36);this.g=Xh(this);if(this.u=ma("CPU",this.id)){this.K=ma("Debugger",this.id);this.A=[];for(b=null;b=wb(this,"Video",b);)this.A.push(b);this.H=new yb({id:this.eb+".bus",busWidth:this.T},this.u,this.K);var d,e=ka(this.id);if((this.B=ma("Panel",this.id))&&this.B.ta)for(b=
0;b<e.length;b++)d=e[b],d.aa=this.B.aa,d.i=this.B.i,d.ta=this.B.ta;this.i("PC8080 v1.32.2\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Ea&&d.Ea(this,this.H,this.u,this.K);b=null;d=wc(this,"resume",a);void 0!==d&&(1<d.length?b=this.D=d:this.b=parseInt(d,10));var f;if(a=wc(this,"state")||(f=!0,a.state))b=this.M=a,f||(this.C=!0,this.b=Wh),this.b&&(this.I=new Vc(this,"1.32.2"),Yh(this.I)?
b=null:delete this.I);!b&&this.b&&(b=Zh(this))&&(this.C=!0);if(b){var g=this;Ta(b,null,!0,function(a,b,c){c?(g.D=null,g.C=!1,g.aa("Unable to load machine state from server (error "+c+(b?": "+Ma(b):"")+")")):(g.F=b,g.O=!0);ta(g)})}else ta(this);this.P.power||(this.L=!0);!c&&this.L&&$h(this,this.nb)}else p("Unable to find CPU component")}aa(Uh,n);function Vh(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){p(d.message+" ("+c+")")}}a.S=b}
function wc(a,b,c){var d=b.toLowerCase(),d=db(b)||db(d);void 0===d&&a.S&&(d=a.S[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function $h(a,b,c){for(var d=ka(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!sa(f)){sa(f,function(){$h(a,b,c)});return}}b.call(a,c)}
function ai(a,b){var c=new Vc(a,"1.32.2",bi);if(Yh(c)&&ci(c)){var d=c.get(di),e=b?b.get(di):"unknown";d!=e&&(a.aa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=Uh.prototype;
k.nb=function(a){void 0===a&&(a=this.b||(this.F?ei:Wh));if(!this.j){this.j++;var b=!1,c=!1;this.N=!1;var d=this.I||new Vc(this,"1.32.2");if(a==fi)b=!0;else if(a>Wh){if(Yh(d,this.F)){this.w=new Vc(this,"1.32.2",gi);Yh(this.w)&&(hi(this,d),a=ii,ji(this.w));this.w.set(di,Ra());ki(this.w);var e=this.b&&!this.C;if(a==ei||ia("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=ci(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Yh(d,g):("error"==f&&"no machine state"!=
g?(this.aa("Error: "+g),"unable to verify user"==g&&(Za(li,""),this.g=null)):this.i(f+": "+g),ji(d),Yh(d)?(c=ci(d),e=!0):c=!1))}e&&ai(this,c?d:null)}else a==ii&&d.clear()}else ai(this);delete this.F;delete this.I}e=ka(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.u&&(c=mi(this,g,d,b,c));b=[d,a,c];a!=fi?$h(this,this.Cc,b):this.Cc(b)}};
function mi(a,b,c,d,e){if(!b.G.ja){b.G.ja=!0;if(b.va){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.va(f,d)&&f&&(p("Unable to restore state for "+b.type),a.M&&!a.O?(c.clear(),a.b=Wh,window&&window.location.reload()):a.N=!0,b.va(null),e=!1)}if(!d&&b.vc)for(a=b.vc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
k.Cc=function(a){var b=a[0],c=0>a[1];a=a[2];this.W=!0;this.G.ja=!0;var d=this.P.power;d&&(d.textContent="Shutdown");this.u&&(mi(this,this.u,b,c,a),this.u.lb());this.N&&(hi(this,b),b.clear());!c&&this.w&&(this.w.clear(),delete this.w);this.j=0};
function hi(a,b){if(ia("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.g||"";b=b.toString();var d={app:"PC8080",ver:"1.32.2"};d.url=a.U;d.user=c;d.type="bug";d.data=b;Ta("http://www.pcjs.org/api/v1/report",d,!0)}}
function Nh(a,b,c){var d,e="none";if(a.j)return null;a.j--;var f=new Vc(a,"1.32.2"),g=new Vc(a,"1.32.2",bi),h=Ra();g.set(di,h);f.set(di,h);f.set(ni,"1.32.2");f.set(oi,window?window.location.href:null);f.set(pi,Va());a.u&&a.u.ua&&(c&&a.u.da(),d=a.u.ua(b,c),"object"===typeof d&&f.set(a.u.id,d),c&&(a.u.G.ja=!1,!1===d&&(e=null)));for(var h=ka(a.id),m=0;m<h.length;m++){var r=h[m];r.G.ja&&(r.ua&&(d=r.ua(b,c),"object"===typeof d&&f.set(r.id,d)),c&&(r.G.ja=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.g&&Di(a,
a.g,f.toString()),ki(g)&&ki(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Ei),d&&f.clear(h)):e=f.toString());c&&(a.G.ja=!1,b=a.P.power)&&(b.textContent="Power");a.j=0;return e}k.reset=function(){this.H&&this.H.reset&&(ya(this,"Resetting "+this.H.type),this.H.reset());for(var a=ka(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.H&&c.reset&&(ya(this,"Resetting "+c.type),c.reset())}};
k.start=function(a,b){for(var c=ka(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};k.stop=function(a,b){for(var c=ka(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
k.ca=function(a,b,c){var d=this;switch(b){case "power":return this.P[b]=c,c.onclick=function(){d.j||(d.G.ja?Nh(d,!1,!0):$h(d,d.nb))},!0;case "reset":return this.P[b]=c,c.onclick=function(){if(d.G.ja&&!d.j)if(d.b&&!d.D){var a=ia("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Nh(d,a,!0);!a&&d.M?window&&window.location.reload():d.nb(Wh)}else d.reset(),d.u&&d.u.lb()},!0;case "save":if(Ha())c.parentNode.removeChild(c);else return this.P[b]=
c,c.onclick=function(){var a=Xh(d,!0);if(a){var b=!!(d.b&&!d.D||d.M),c=Nh(d,b);b?Di(d,a,c):d.aa("Resume disabled, machine state not saved")}},!0}return!1};
function Xh(a,b){var c=a.g;c||((c=Ya(li),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Fi(a,c))||a.aa("The user ID is invalid.")):b&&a.aa("Browser local storage is not available"));return c}
function Fi(a,b){a.g=null;b=Ta(Ia()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Za(li,b.data),a.g=b.data)}catch(d){p(d.message+" ("+c+")")}return a.g}function Zh(a){var b=null;a.g&&(b=Ia()+"/api/v1/user?req=load&user="+a.g+"&state="+Gi(a,"1.32.2"));return b}
function Di(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Gi(a,"1.32.2");d.data=c;b=Ta(Ia()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.aa("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.aa(c),Za(li,""),a.g=null)}}
function wb(a,b,c){a=ka(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}k.Za=function(a){if(this.A.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.A[0];d.V&&d.V.focus();!a&&window&&window.scrollTo(b,c)}};
function Lc(a,b){a.u&&(a=a.u,a.ib&&(b||!a.G.ka||a.G.Bc)&&(I(a,"A",a.g),I(a,"B",a.w),I(a,"C",a.A),I(a,"BC",Wc(a),4),I(a,"D",a.B),I(a,"E",a.C),I(a,"DE",jd(a),4),I(a,"H",a.D),I(a,"L",a.F),I(a,"HL",D(a),4),I(a,"SP",a.M,4),I(a,"PC",a.j,4),b=Uc(a),I(a,"PS",b,4),I(a,"IF",b&512?1:0,1),I(a,"SF",b&128?1:0,1),I(a,"ZF",b&64?1:0,1),I(a,"AF",b&16?1:0,1),I(a,"PF",b&4?1:0,1),I(a,"CF",b&1?1:0,1)),b=a.P.speed)&&(b.textContent=a.G.ka&&a.Y?a.Y.toFixed(2)+"Mhz":"Stopped")}
var gi="failsafe",bi="validate",di="timestamp",ni="version",oi="url",pi="browser",li="user",fi=-1,Wh=0,ei=1,ii=2,Ei=3;ib(function(){for(var a=qa(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=oa(c),c=qa(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=oa(f),g=new Uh(g,d,!0);pa(g,f);g.L&&$h(g,g.nb)}});jb.show.push(function(){for(var a=qa(document,"pc8080","computer"),b=0;b<a.length;b++){var c=oa(a[b]);(c=ma("Computer",c.id))&&c.W&&!c.G.ja&&c.nb(fi)}});
jb.exit.push(function(){for(var a=qa(document,"pc8080","computer"),b=0;b<a.length;b++){var c=oa(a[b]);(c=ma("Computer",c.id))&&c.G.ja&&Nh(c,!(!c.b||c.D),!0)}});function Vc(a,b,c){this.id=a.id;this.K=a.K;this.g="";this.b={};this.u=this.H=!1;this.key=Gi(a,b,c);ji(this,a.Ad)}k=Vc.prototype;k.set=function(a,b){try{this.b[a]=b}catch(c){}};k.get=function(a){return this.b[a]||null};k.data=function(){return this.b};
function Yh(a,b){return b?(a.g=b,a.u=!0,a.H=!1,!0):a.u?!0:Wa()&&(b=Ya(a.key))?(a.g=b,a.u=!0):!1}function ci(a){var b=!0;if(!a.H)try{a.b=JSON.parse(a.g),a.H=!0}catch(c){p(c.message||c),b=!1}return b}function ki(a){var b=!0;if(Wa()){var c=JSON.stringify(a.b);Za(a.key,c)||(p("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.b?JSON.stringify(this.b):this.g};function ji(a,b){a.g="";a.b={};a.u=a.H=!1;b&&a.set("parms",b)}
k.clear=function(a){ji(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function Gi(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var Hi=0;
function Ii(a,b,c,d,e,f){e("Loading "+a+"...");Ta(a,null,!0,function(g,h,m){m?(h||(h="unable to load "+a+" ("+m+")"),f(h,null)):Ji(h,a,b,c,d,e,f)})}
function Ji(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&(ea(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{",d+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PC8080$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){f=null,a=u.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,f)}}a?e?Ki(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
null)}
function Hi(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Sa(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],p,r=/( [a-z]+=)(['"])(.*?)\2/g;p=r.exec(f);)l=0>l.indexOf(p[1])?l.replace(">",p[0]+">"):l.replace(new RegExp(p[1]+"(['\"])(.*?)\\1"),p[0]);h[0]!=l&&(g=g.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");
a=a.replace(d[0],g);Hi(a,b,c)}})}else c(a,null)}
function Ii(a,b,c,d){function e(a){if(void 0===h){var b=g&&pa(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=Ia(a))}function f(a){e("Error: "+a);l&&(--Ei||mb(!0));l=!1}var g,h,l=!0;Ei++;ea[a]={};try{if(g=document.getElementById(a)){var p;if("object"==typeof resources&&(p=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css";t.styleSheet?t.styleSheet.cssText=p:t.appendChild(document.createTextNode(p));r.appendChild(t)}c||
(c="/versions/pc8080/1.32.2/components.xsl");p=function(d,h){h?Fi(c,null,null,!1,e,function(d,l){l?(da(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=h.transformNode(l))?(g.outerHTML=l,--Ei||mb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(l),(l=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--Ei||mb(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?Fi(b,a,d,!0,e,p):Gi(b,null,a,d,!1,e,p)}else f("missing machine element: "+a)}catch(A){f(A.message)}return l}window.embedPC8080=function(a,b,c,d){mb(!1);return Ii(a,b,c,d)};window.findMachineComponent=function(a,b){return la(b,a+".machine")};window.enableEvents=mb;window.sendEvent=ob;})();
function Ki(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ta(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var m=h[0],r,u=/( [a-z]+=)(['"])(.*?)\2/g;r=u.exec(f);)m=0>m.indexOf(r[1])?m.replace(">",r[0]+">"):m.replace(new RegExp(r[1]+"(['\"])(.*?)\\1"),r[0]);h[0]!=m&&(g=g.replace(h[0],m))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");
a=a.replace(d[0],g);Ki(a,b,c)}})}else c(a,null)}
function Li(a,b,c,d){function e(a){if(void 0===h){var b=g&&qa(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=Ja(a))}function f(a){e("Error: "+a);m&&(--Hi||nb(!0));m=!1}var g,h,m=!0;Hi++;fa[a]={};try{if(g=document.getElementById(a)){var r;if("object"==typeof resources&&(r=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=r:v.appendChild(document.createTextNode(r));u.appendChild(v)}c||
(c="/versions/pc8080/1.32.2/components.xsl");r=function(d,h){h?Ii(c,null,null,!1,e,function(d,m){m?(ea(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(m=h.transformNode(m))?(g.outerHTML=m,--Hi||nb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(m),(m=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(m,g),--Hi||nb(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?Ii(b,a,d,!0,e,r):Ji(b,null,a,d,!1,e,r)}else f("missing machine element: "+a)}catch(B){f(B.message)}return m}window.embedPC8080=function(a,b,c,d){nb(!1);return Li(a,b,c,d)};window.findMachineComponent=function(a,b){return ma(b,a+".machine")};window.enableEvents=nb;window.sendEvent=pb;})();

View file

@ -29,183 +29,187 @@
http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/computer.js (C) Jeff Parsons 2012-2017
*/
var k;function m(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}
var p={Jd:0,Md:1,Nd:2,Od:3,Pd:4,Qd:5,Rd:6,Sd:7,Td:8,Ud:9,Vd:10,Wd:11,Xd:12,Yd:13,Zd:14,$d:15,ae:16,be:17,ce:18,de:19,ee:20,fe:21,ge:22,he:23,ie:24,je:25,ke:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Ua:65,Sb:66,Ub:67,rb:68,E:69,Xb:70,Yb:71,Zb:72,$b:73,gc:74,hc:75,tb:76,oc:77,pc:78,sc:79,tc:80,Q:81,zc:82,Cc:83,Hc:84,Ic:85,Jc:86,Kc:87,
Mc:88,Nc:89,ib:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Oc:97,Te:98,Ue:99,d:100,e:101,Ve:102,We:103,Xe:104,Ye:105,Ze:106,k:107,$e:108,af:109,n:110,bf:111,p:112,q:113,r:114,cf:115,t:116,df:117,ef:118,ff:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,le:127};
function q(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ab=b.comment;this.Rc=b;this.exports={};this.w=this.bindings={};a=this.id.indexOf(".");0>a?this.Wa=this.id:(this.Ia=this.id.substr(0,a),this.Wa=this.id.substr(a+1));this.i={ready:!1,Ya:!1,kb:!1,U:!1,error:!1};this.ab=null;this.i.error=!1;this.J=this.m=this.u=this.D=this.pa=null;r.push(this)}function aa(a,b,c){ba[a]&&b&&(ba[a][b]=c)}function da(){return Date.now()||+new Date}
function ea(a,b,c){b||u((c?c+": ":"")+a)}function u(a){window&&window.alert(a)}function fa(a){var b=!1;window&&(b=window.confirm(a));return b}function ga(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<r.length;b++){var d=r[b];a&&d.id.indexOf(a)||c.push(d)}return c}function ha(a){if(void 0!==a){var b;for(b=0;b<r.length;b++)if(r[b].id===a)return r[b]}return null}
function ia(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<r.length;d++)if(c)c==r[d]&&(c=null);else if(!(a!=r[d].type||b&&r[d].id.indexOf(b)))return r[d]}return null}function w(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}
function ja(a,b){b=y(b.parentNode,"pc8080-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){var g=f.getAttribute("class");if(g)for(var h=g.split(" "),l=0;l<h.length;l++)switch(g=h[l],g){case "pc8080-binding":(g=w(f))&&g.binding&&a.S(g.type,g.binding,f,g.value),l=h.length}}}}
function y(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}k=q.prototype;k.toString=function(){return this.name?this.name:this.id||this.type};
k.S=function(a,b,c){switch(b){case "clear":return this.w[b]||(this.w[b]=c,c.onclick=function(a){return function(){a.w.print&&(a.w.print.value="")}}(this)),!0;case "print":return this.w[b]||(this.pa=this.w[b]=c,c.value="",this.aa=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),this.G=function(a){this.aa(a,this.Wa)}),!0;default:return!1}};k.log=function(){};k.aa=function(){};
k.status=function(a){this.aa(this.Wa+": "+a)};k.G=function(a,b,c){ea(a,b,c||this.type)};function ka(a,b){b&&(a.i.ready?b():a.ab=b);return a.i.ready}function z(a){if(!a.i.error&&(a.i.ready=!0,a.i.ready)){var b=a.ab;a.ab=null;b&&b()}}function la(a,b){if(a.i.kb)return a.i.Ya=!1,a.i.kb=!1;if(a.i.error)return a.aa(a.toString()+" error"),!1;a.i.Ya=b;return a.i.Ya}k.ca=function(){return this.i.U=!0};k.ba=function(a,b){b&&(this.i.U=!1);return!0};
window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]));var ba=window?window.PCjs.Machines:{},r=window?window.PCjs.Components:[];Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
var h;function l(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}
var n={Yd:0,ae:1,be:2,ce:3,de:4,ee:5,fe:6,ge:7,he:8,ie:9,je:10,ke:11,le:12,me:13,ne:14,oe:15,pe:16,qe:17,re:18,se:19,te:20,ue:21,ve:22,we:23,xe:24,ye:25,ze:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Ia:65,sb:66,tb:67,kb:68,E:69,wb:70,xb:71,yb:72,zb:73,Ab:74,Bb:75,lb:76,Fb:77,Gb:78,Jb:79,Kb:80,Q:81,Lb:82,Nb:83,Ob:84,Pb:85,Rb:86,Sb:87,
Ub:88,Vb:89,$a:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Wb:97,Rc:98,Tc:99,d:100,e:101,Xc:102,Yc:103,Zc:104,$c:105,jd:106,k:107,kd:108,ld:109,n:110,md:111,p:112,q:113,r:114,Kd:115,t:116,Ld:117,Md:118,Nd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Ae:127},p={};p[n[";"]]=186;p[n["="]]=187;p[n[","]]=188;p[173]=189;p[n["."]]=190;p[n["/"]]=191;p[n["`"]]=192;p[n["["]]=219;p[n["\\"]]=220;p[n["]"]]=221;p[n["'"]]=222;
function r(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Tb=b.comment;this.Uc=b;this.exports={};this.w=this.bindings={};a=this.id.indexOf(".");0>a?this.Ya=this.id:(this.Ka=this.id.substr(0,a),this.Ya=this.id.substr(a+1));this.i={ready:!1,ab:!1,nb:!1,U:!1,error:!1};this.eb=null;this.i.error=!1;this.J=this.m=this.u=this.D=this.pa=null;t.push(this)}function ba(a,b,c){ca[a]&&b&&(ca[a][b]=c)}function da(){return Date.now()||+new Date}
function fa(a,b,c){b||u((c?c+": ":"")+a)}function u(a){window&&window.alert(a)}function ga(a){var b=!1;window&&(b=window.confirm(a));return b}function ha(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<t.length;b++){var d=t[b];a&&d.id.indexOf(a)||c.push(d)}return c}function ia(a){if(void 0!==a){var b;for(b=0;b<t.length;b++)if(t[b].id===a)return t[b]}return null}
function ja(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<t.length;d++)if(c)c==t[d]&&(c=null);else if(!(a!=t[d].type||b&&t[d].id.indexOf(b)))return t[d]}return null}function x(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}
function ka(a,b){b=z(b.parentNode,"pc8080-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){var g=f.getAttribute("class");if(g)for(var k=g.split(" "),m=0;m<k.length;m++)switch(g=k[m],g){case "pc8080-binding":(g=x(f))&&g.binding&&a.S(g.type,g.binding,f,g.value),m=k.length}}}}
function z(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}h=r.prototype;h.toString=function(){return this.name?this.name:this.id||this.type};
h.S=function(a,b,c){switch(b){case "clear":return this.w[b]||(this.w[b]=c,c.onclick=function(a){return function(){a.w.print&&(a.w.print.value="")}}(this)),!0;case "print":return this.w[b]||(this.pa=this.w[b]=c,c.value="",this.aa=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),this.G=function(a){this.aa(a,this.Ya)}),!0;default:return!1}};h.log=function(){};h.aa=function(){};
h.status=function(a){this.aa(this.Ya+": "+a)};h.G=function(a,b,c){fa(a,b,c||this.type)};function la(a,b){b&&(a.i.ready?b():a.eb=b);return a.i.ready}function A(a){if(!a.i.error&&(a.i.ready=!0,a.i.ready)){var b=a.eb;a.eb=null;b&&b()}}function ma(a,b){if(a.i.nb)return a.i.ab=!1,a.i.nb=!1;if(a.i.error)return a.aa(a.toString()+" error"),!1;a.i.ab=b;return a.i.ab}h.ca=function(){return this.i.U=!0};h.ba=function(a,b){b&&(this.i.U=!1);return!0};
window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]));var ca=window?window.PCjs.Machines:{},t=window?window.PCjs.Components:[];Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
Function.prototype.bind||(Function.prototype.bind=function(a){function b(){return e.apply(this instanceof c&&a?this:a,d.concat(Array.prototype.slice.call(arguments)))}function c(){}if("function"!=typeof this)throw new TypeError("Function.prototype.bind: non-callable object");var d=Array.prototype.slice.call(arguments,1),e=this;c.prototype=this.prototype;b.prototype=new c;return b});
function ma(a){var b=16,c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var f,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):2==
e&&d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}function B(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}function na(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function oa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
function pa(){var a=qa();return-1!==a.indexOf("pcjs.org",a.length-8)}function ra(a){return a.replace(/[&<>"']/g,function(a){return sa[a]})}function ua(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
var sa={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"},va={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"};
function wa(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
function xa(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
f,e))});if(b&&"object"==typeof b){var l="",n;for(n in b)b.hasOwnProperty(n)&&(l&&(l+="&"),l+=n+"="+encodeURIComponent(b[n]));l=l.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(l)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g}
function ya(a,b){var c,d={W:null,sa:null,Aa:null,ta:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Aa=g.load;d.ta=g.exec;if(e=g.bytes)d.W=e;else if(e=g.words)for(d.W=Array(2*e.length),f=c=0;c<e.length;c++)d.W[f++]=e[c]&255,d.W[f++]=e[c]>>8&255;else if(e=g.data)for(d.W=Array(4*e.length),f=c=0;c<e.length;c++)d.W[f++]=e[c]&
255,d.W[f++]=e[c]>>8&255,d.W[f++]=e[c]>>16&255,d.W[f++]=e[c]>>24&255;else d.W=g;d.sa=g.symbols;d.W.length?1==d.W.length&&(u(d.W[0]),d=null):(u("Empty resource: "+a),d=null)}catch(h){u("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){u("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.W=e)}return d}
function qa(){return"http://"+(window?window.location.host:"www.pcjs.org")}function za(){if(null==Aa){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}Aa=a}return Aa}function Ba(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function Ca(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Da(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1}
function Ea(a){if(!Fa){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}Fa=c}return Fa[a]}function Ga(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ha(a){Ia.init.push(a)}
function Ja(a){if(Ka)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){ea("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function La(a){!Ka&&a?(Ka=!0,Ma&&Na("init"),Oa&&Na("show")):Ka=a}function Na(a){Ia[a]&&Ja(Ia[a])}var Fa=null,Ia={init:[],show:[],exit:[]},Ma=!1,Oa=!1,Ka=!0,Aa=null;Ga("onload",function(){Ma=!0;Ja(Ia.init)});Ga("onpageshow",function(){Oa=!0;Ja(Ia.show)});
Ga(Da("Opera")||Da("iOS")?"onunload":"onbeforeunload",function(){Ja(Ia.exit)});
var Pa="undefined"!==typeof ArrayBuffer,Qa=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function Ra(a){q.call(this,"Panel",a)}m(Ra,q);Ra.prototype.S=function(a,b,c,d){return this.D&&this.D.S(a,b,c,d)||this.m&&this.m.S(a,b,c,d)||this.h&&this.h.S(a,b,c,d)?!0:q.prototype.S.call(this,a,b,c,d)};Ra.prototype.qa=function(a,b,c,d){this.D=a;this.u=b;this.m=c;this.J=d;this.h=C(a,"Keyboard")};Ra.prototype.ca=function(a,b){b||Sa();return!0};Ra.prototype.ba=function(){return!0};
function Sa(){for(var a=!1,b=y(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=w(d),f=ha(e.id);f||(a=!0,f=new Ra(e));ja(f,d);a&&z(f)}}Ha(Sa);
function Ua(a,b,c){q.call(this,"Bus",a);this.m=b;this.J=c;this.s=a.busWidth||16;this.v=Math.pow(2,this.s);this.g=this.v-1|0;this.b=(this.s>>1)+2;10>this.b&&(this.b=10);15<this.b&&(this.b=15);this.c=1<<this.b;this.A=this.c>>2;this.f=this.c-1;this.h=this.v/this.c|0;this.o=this.h-1;this.j=[];this.l=[];this.B=[];this.C=[];a=new D;Va(a,this.J);this.a=Array(this.h);for(b=0;b<this.h;b++)this.a[b]=a;z(this)}m(Ua,q);Ua.prototype.reset=function(){};Ua.prototype.ca=function(a,b){b||this.reset();return!0};
function Wa(a,b,c,d){for(var e=b,f=c,g=e>>>a.b;0<f&&g<a.a.length;){var h=a.a[g],l=g*a.c,n=a.c-(e-l);n>f&&(n=f);if(h&&h.size){if(h.type==d){if(e+f<=h.Pa)return h.fb+=h.Pa-e,h.Pa=e,!0;if(e>=h.Pa+h.fb){n=h.size-(e-l);n>f&&(n=f);h.fb=e-h.Pa+n;e=l+a.c;f-=n;g++;continue}}return Xa(Ya,e,f)}e=new D(e,n,a.c,d);Va(e,a.J,h);a.a[g++]=e;e=l+a.c;f-=n}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Za[d]+" at "+B(b,4,!0)),!0):Xa($a,b,c)}function ab(a,b){return a.a[(b&a.g)>>>a.b].eb(b&a.f,b)}
function bb(a,b){var c=b&a.f,d=(b&a.g)>>>a.b;return c!=a.f?a.a[d].td(c,b):a.a[d++].Sa(c,b)|a.a[d&a.o].Sa(0,b+1)<<8}function cb(a,b,c){a.a[(b&a.g)>>>a.b].Lb(b&a.f,c&255,b)}function db(a,b,c){var d=b&a.f,e=(b&a.g)>>>a.b;d!=a.f?a.a[e].Dd(d,c&65535,b):(a.a[e++].Ta(d,c&255,b),a.a[e&a.o].Ta(0,c>>8&255,b+1))}
function eb(a){for(var b=0,c=[],d=0;d<a.h;d++){var e=a.a[d];if(e.ja||e.Db){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,l=[];g<e.length;){for(var n=e[g],v=g+1;v<e.length&&e[v]===n;)v++;l[h++]=v-g;l[h++]=n;g=v}l.length<e.length&&(e=l)}c[f]=e}}return c}function fb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var l=+e+d;l<=g;l++)void 0!==f.j[l]?u("Input port "+B(l,4,!0)+" already registered"):f.j[l]=[h,!1]}}
function gb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var l=+e+d;l<=g;l++)void 0!==f.l[l]?u("Output port "+B(l,4,!0)+" already registered"):f.l[l]=[h,!1]}}function Xa(a,b,c){u("Memory block error ("+a+": "+B(b)+","+B(c)+")");return!1}var Ya=1,$a=2,hb;if(Pa){var ib=new ArrayBuffer(2);(new DataView(ib)).setUint16(0,256,!0);hb=256===(new Uint16Array(ib))[0]}else hb=!1;var jb=hb;
function D(a,b,c,d){this.id=kb+=2;this.a=null;this.Pa=a;this.fb=b;this.size=c||0;this.type=d||mb;this.w=d==nb;Va(this);this.ja=this.Db=!1;if(c)if(Pa)this.m=new ArrayBuffer(c),this.u=new DataView(this.m,0,c),this.b=new Uint8Array(this.m,0,c),this.g=new Uint16Array(this.m,0,c>>1),this.a=new Int32Array(this.m,0,c>>2),ob(this,jb?pb:qb);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;ob(this,rb)}else ob(this)}k=D.prototype;
k.save=function(){var a,b;if(Pa)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.u.getInt32(b<<2,!0);else a=this.a;return a};k.restore=function(a){if(a&&this.size==a.length<<2){var b;if(Pa)for(b=0;b<a.length;b++)this.u.setInt32(b<<2,a[b],!0);else this.a=a;return this.ja=!0}return!1};function ob(a,b){b||(b=sb);tb(a,b,void 0);ub(a,b,void 0)}function tb(a,b,c){c&&a.c||(a.Sa=b[0]||a.Hb,a.td=b[2]||a.Ib);if(c||void 0===c)a.eb=b[0]||a.Hb,a.Jb=b[2]||a.Ib}
function ub(a,b,c){c&&a.f||(a.Ta=!a.w&&b[1]||a.Mb,a.Dd=!a.w&&b[3]||a.Nb);if(c||void 0===c)a.Lb=b[1]||a.Mb,a.h=b[3]||a.Nb}function Va(a,b,c){a.J=b;a.c=a.f=0;c&&((a.c=c.c)&&tb(a,vb,!1),(a.f=c.f)&&ub(a,vb,!1))}k.Hb=function(){return 255};k.Mb=function(){};k.Ib=function(a,b){return this.Sa(a++,b++)|this.Sa(a,b)<<8};k.Nb=function(a,b,c){this.Ta(a++,b&255,c++);this.Ta(a,b>>8,c)};k.sd=function(a){return this.a[a>>2]>>>((a&3)<<3)&255};
k.xd=function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8};k.Cd=function(a,b){var c=a>>2;a=(a&3)<<3;this.a[c]=this.a[c]&~(255<<a)|b<<a;this.ja=!0};k.Hd=function(a,b){var c=a>>2;a=(a&3)<<3;24>a?this.a[c]=this.a[c]&~(65535<<a)|b<<a:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.ja=!0};k.qd=function(a,b){return this.eb(a,b)};k.vd=function(a,b){return this.Jb(a,b)};k.Ad=function(a,b,c){this.w||this.Lb(a,b,c)};
k.Fd=function(a,b,c){this.w||this.h(a,b,c)};k.pd=function(a){return this.b[a]};k.rd=function(a){return this.b[a]};k.ud=function(a){return this.u.getUint16(a,!0)};k.wd=function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.g[a>>1]};k.zd=function(a,b){this.b[a]=b;this.ja=!0};k.Bd=function(a,b){this.b[a]=b;this.ja=!0};k.Ed=function(a,b){this.u.setUint16(a,b,!0);this.ja=!0};k.Gd=function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.g[a>>1]=b;this.ja=!0};
var mb=0,nb=2,Za=["NONE","RAM","ROM","VID","H/W"],kb=0,sb=[],rb=[D.prototype.sd,D.prototype.Cd,D.prototype.xd,D.prototype.Hd],vb=[D.prototype.qd,D.prototype.Ad,D.prototype.vd,D.prototype.Fd];if(Pa)var qb=[D.prototype.pd,D.prototype.zd,D.prototype.ud,D.prototype.Ed],pb=[D.prototype.rd,D.prototype.Bd,D.prototype.wd,D.prototype.Gd];
function wb(a,b){q.call(this,"CPU",a);var c=a.multiplier||1;this.na=a.cycles||b;this.O=c;this.Da=Math.round(this.na/1E4)/100;this.X=this.Da*this.O;this.i.ka=!1;this.i.Kb=!1;this.i.Qa=a.autoStart;this.i.Bb=!1;this.i.Za=!1;this.wa=this.ea=0;this.xa=a.csStart;this.ha=a.csInterval;this.la=a.csStop;this.H=[];this.jb=this.gb.bind(this);z(this)}m(wb,q);k=wb.prototype;
k.qa=function(a,b,c,d){this.D=a;this.u=b;this.J=d;for(b=0;b<xb.length;b++)(c=this.w[xb[b]])&&this.D.S(null,xb[b],c);this.N=C(a,"ChipSet");a=yb(a,"autoStart");null!=a&&(this.i.Qa="true"==a?!0:"false"==a?!1:!!a);z(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};k.ca=function(a,b){if(!b){if(a&&this.restore){zb(this);if(!this.restore(a))return!1;Ab(this)}else this.reset();this.aa("No debugger detected")}Bb(this);return!0};
k.ba=function(a){return a?this.save():!0};k.Qa=function(){return this.i.Qa||void 0===this.w.run?(this.gb(),!0):!1};k.Eb=function(){return 0};function Ab(a){void 0===a.xa&&(a.xa=0);void 0===a.ha&&(a.ha=-1);void 0===a.la&&(a.la=-1);a.i.Za=0<=a.xa&&0<a.ha;a.i.Za&&(a.wa=0,a.ea=a.xa-a.I)}
k.S=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.w[b]=c;a=!0;break;case "run":this.w[b]=c;c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.i.U)a=!0;else{var b=null,c,h=ga(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.i.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.i.U);c++);c==h.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.i.ready?"powered yet":"ready yet"+(b.ab?" (waiting for notification)":""))+".");a=!1}a&&(d.i.ka?Cb(d):d.gb())};a=!0;
break;case "speed":this.w[b]=c;a=!0;break;case "setSpeed":this.w[b]=c,c.onclick=function(){Db(d,d.O<<1,!0)},c.textContent=this.X.toFixed(2)+"Mhz",a=!0}return a};function Eb(a,b){var c=1;b&&1<a.O&&a.R&&(c=a.R/a.Da);a.Na=Math.round(1E3/Fb);a.ya=Math.floor(a.na/Fb*c);b||(a.ma=a.ya);a.Fa=0}function Gb(a){return a.I+a.P+a.da-a.a}function zb(a){a.R=0;a.Oa=0;a.I=a.P=a.da=a.a=0;Ab(a);Db(a,1)}
function Db(a,b,c){if(void 0!==b){.8>a.R/a.X&&(b=1);a.O=b;b=a.Da*a.O;if(a.X!=b){a.X=b;b=a.X.toFixed(2)+"Mhz";var d=a.w.setSpeed;d&&(d.textContent=b);a.aa("target speed: "+b)}c&&a.D&&Hb(a.D)}a.I+=a.P;a.P=0;a.L=da();a.V=0;Eb(a)}function Ib(a,b){var c=a.H.length;a.H.push([-1,b]);return c}function Jb(a,b,c){0<=b&&b<a.H.length&&0>a.H[b][0]&&(c*=a.na*a.O/1E3,a.H[b][0]=c+Kb(a))}function Kb(a,b){var c=a.da-=a.a;a.a=0;b&&(a.da=0);return c}
k.gb=function(a){if(la(this,!0)){if(!this.i.ka){Db(this);this.D&&this.D.start(this.L,Gb(this));this.i.ka=!0;this.i.Kb=!0;this.N&&this.N.start();var b=this.w.run;b&&(b.textContent="Halt");this.D&&(Lb(this.D,!0),a&&Hb(this.D,!0))}this.Fa>=this.na&&Eb(this,!0);this.oa=0;this.va=da();this.V&&(a=this.va-this.V,a>this.Na&&(this.L+=a,this.L>this.va&&(this.L=this.va)));try{do{for(var c,d=this.i.Za?1:this.ya,e=this.H.length-1;0<=e;e--){var f=this.H[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.qb(c);c=Kb(this,!0);
this.oa+=c;this.P+=c;a=c;this.i.Za&&(b=!1,this.wa=this.wa+this.Eb()|0,this.ea-=a,0>=this.ea&&(this.ea+=this.ha,b=!0),0<=this.la&&this.la<=Gb(this)&&(this.ha=this.la=-1,Ab(this),Cb(this),b=!0),b&&this.aa(Gb(this)+" cycles: checksum="+B(this.wa)));a=c;for(var g=this.H.length-1;0<=g;g--){var h=this.H[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.ma-=c;if(0>=this.ma){this.ma+=this.ya;++this.Oa>=Mb&&(this.D&&Lb(this.D),this.Oa=0);break}}while(this.i.ka)}catch(l){Cb(this);Bb(this);this.D&&this.D.stop(da(),
Gb(this));la(this,!1);c=l.stack||l.message;this.i.error=!0;this.G(c);return}c=setTimeout;d=this.jb;this.V=da();e=this.Na;this.oa&&(e=Math.round(e*this.oa/this.ya));e-=this.V-this.va;if(f=this.V-this.L)this.R=Math.round(this.P/(10*f))/100,864E5<=f&&(this.I=0,Db(this));if(0>e||this.R<this.X)-1E3>e&&(this.L-=e),e=0;this.Fa+=this.oa;this.V+=e;c(d,e)}else Bb(this),this.D&&this.D.stop(da(),Gb(this))};k.qb=function(){return 0};
function Cb(a){a.i.Ya&&(a.i.kb=!0);Kb(a);a.I+=a.P;a.P=0;if(a.i.ka){a.i.ka=!1;a.N&&a.N.stop();var b=a.w.run;b&&(b.textContent="Run")}a.i.complete=void 0}function Bb(a){if(a.D){for(var b=a.D,c=0;c<b.g.length;c++)Nb(b.g[c],void 0);Lb(a.D,void 0)}}var Fb=30,Mb=15,xb=["power","reset"];function Ob(a){wb.call(this,a,1E6);this.Ka=Pb;zb(this);this.i.complete=this.i.Sc=!1;this.Ma=0;this.ra=[];this.La=0;Qb(this)}m(Ob,wb);function Rb(a,b){a.ra.push(b)}k=Ob.prototype;
k.reset=function(){this.i.ka&&Cb(this);Qb(this);zb(this);this.i.error=!1;wb.prototype.reset.call(this)};function Qb(a){a.b=0;a.g=0;a.c=0;a.h=0;a.f=0;a.j=0;a.l=0;a.A=0;F(a,a.La);Sb(a,0);a.C=0}function Tb(a,b){a.La=b;F(a,b)}k.Eb=function(){var a=this.b+this.g+this.c+this.h+this.f+this.j+this.l|0;return a=a+this.A+this.s+Ub(this)|0};
k.save=function(){var a=new G(this);a.set(0,[this.b,this.g,this.c,this.h,this.f,this.j,this.l,this.A,this.s,Ub(this)]);a.set(1,[this.C,this.I,this.O]);a.set(2,eb(this.u));return a.data()};
k.restore=function(a){var b=a[0];this.b=b[0];this.g=b[1];this.c=b[2];this.h=b[3];this.f=b[4];this.j=b[5];this.l=b[6];this.A=b[7]&65535;F(this,b[8]);Sb(this,b[9]);b=a[1];this.C=b[0];this.I=b[1];Db(this,b[3]);a:{b=this.u;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.A){for(var f=0,g=Array(b.A),h=0;h<e.length-1;)for(var l=e[h++],n=e[h++];l--;)g[f++]=n;e=g}f=b.a[d];if(!f||!f.restore(e)){u("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
k.S=function(a,b,c){switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.w[b]=c;this.Ma++;a=!0;break;default:a=wb.prototype.S.call(this,a,b,c)}return a};function Vb(a){return a.g<<8|a.c}function Wb(a,b){a.g=b>>8&255;a.c=b&255}function Yb(a){return a.h<<8|a.f}function Zb(a,b){a.h=b>>8&255;a.f=b&255}function H(a){return a.j<<8|a.l}
function I(a,b){a.j=b>>8&255;a.l=b&255}function F(a,b){a.s=b&65535}function J(a){return a.o&256?1:0}function $b(a,b){a.o=a.o&255|b}function ac(a){return Qa[a.v&255]?4:0}function Ub(a){return a.F&-214|(a.v&128?128:0)|(a.o&255?0:64)|((a.v^a.B)&16?16:0)|ac(a)|J(a)}function Sb(a,b){a.o=a.v=a.B=0;b&1&&(a.o|=256);b&4||(a.v|=1);b&16&&(a.B|=16);b&64||(a.o|=255);b&128&&(a.v^=192);a.F=a.F&-726|b&512|2}function bc(a,b){a.B=a.b^b;return a.v=(a.o=a.b+b)&255}
function cc(a,b){a.B=a.b^b;return a.v=(a.o=a.b+b+(a.o&256?1:0))&255}function dc(a,b){a.o=a.v=a.B=a.b&b;(a.b|b)&8&&(a.B^=16);return a.o}function ec(a,b){a.B=b^255;b=a.v=b+255&255;a.o=a.o&-256|b;return b}function fc(a,b){a.B=b;b=a.v=b+1&255;a.o=a.o&-256|b;return b}function gc(a,b){return a.v=a.o=a.B=a.b|b}function L(a,b){b^=255;a.B=a.b^b;return a.v=(a.o=a.b+b+1^256)&255}function hc(a,b){b^=255;a.B=a.b^b;return a.v=(a.o=a.b+b+(a.o&256?0:1)^256)&255}function ic(a,b){return a.v=a.o=a.B=a.b^b}
function M(a,b){a=a.u;return a.a[(b&a.g)>>>a.b].Sa(b&a.f,b)}function N(a,b,c){a=a.u;a.a[(b&a.g)>>>a.b].Ta(b&a.f,c&255,b)}function O(a){var b=M(a,a.s);F(a,a.s+1);return b}function P(a){var b=bb(a.u,a.s);F(a,a.s+2);return b}function Q(a){var b=bb(a.u,a.A);a.A=a.A+2&65535;return b}function R(a,b){a.A=a.A-2&65535;db(a.u,a.A,b)}function jc(a){if(a.a&&a.C&255&&a.F&512){for(var b=0;8>b&&!(a.C&1<<b);b++);a.C&=~(0>b?255:1<<b);a.F&=-513;a.C&=-257;a.Ka[199|b<<3].call(a)}return a.C&256?(Kb(a),!1):!0}
function kc(a,b){a.C|=1<<b;a.F&512&&Kb(a)}function S(a,b,c,d){d=d||2;a.w[b]&&(void 0===c&&(a.i.error=!0,a.G("Value for "+b+" is invalid"),Cb(a)),c=!a.i.ka||a.i.Bb?B(c,d):"--------".substr(0,d),a.w[b].textContent!=c&&(a.w[b].textContent=c))}k.qb=function(a){this.i.complete=!0;this.i.Sc=!1;this.i.Kb=!1;this.da=this.a=a;if(jc(this)){do this.Ka[O(this)].call(this);while(0<this.a)}return this.i.complete?this.da-this.a:void 0===this.i.complete?0:-1};
Ha(function(){for(var a=y(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Ob(d);ja(d,c)}});function lc(){this.a-=4}function mc(){F(this,P(this));this.a-=10}function nc(){F(this,Q(this));this.a-=10}function oc(){var a=P(this);R(this,this.s);F(this,a);this.a-=17}
var Pb=[lc,function(){Wb(this,P(this));this.a-=10},function(){N(this,Vb(this),this.b);this.a-=7},function(){Wb(this,Vb(this)+1);this.a-=5},function(){this.g=fc(this,this.g);this.a-=5},function(){this.g=ec(this,this.g);this.a-=5},function(){this.g=O(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|a>>8;$b(this,a&256);this.a-=4},lc,function(){var a;I(this,a=H(this)+Vb(this));$b(this,a>>8&256);this.a-=10},function(){this.b=M(this,Vb(this));this.a-=7},function(){Wb(this,Vb(this)-1);this.a-=5},
function(){this.c=fc(this,this.c);this.a-=5},function(){this.c=ec(this,this.c);this.a-=5},function(){this.c=O(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(a|this.b)>>1;$b(this,a);this.a-=4},lc,function(){Zb(this,P(this));this.a-=10},function(){N(this,Yb(this),this.b);this.a-=7},function(){Zb(this,Yb(this)+1);this.a-=5},function(){this.h=fc(this,this.h);this.a-=5},function(){this.h=ec(this,this.h);this.a-=5},function(){this.h=O(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|J(this);
$b(this,a&256);this.a-=4},lc,function(){var a;I(this,a=H(this)+Yb(this));$b(this,a>>8&256);this.a-=10},function(){this.b=M(this,Yb(this));this.a-=7},function(){Zb(this,Yb(this)-1);this.a-=5},function(){this.f=fc(this,this.f);this.a-=5},function(){this.f=ec(this,this.f);this.a-=5},function(){this.f=O(this);this.a-=7},function(){var a=this.b<<8;this.b=(J(this)<<8|this.b)>>1;$b(this,a&256);this.a-=4},lc,function(){I(this,P(this));this.a-=10},function(){var a=P(this);db(this.u,a,H(this));this.a-=16},
function(){I(this,H(this)+1);this.a-=5},function(){this.j=fc(this,this.j);this.a-=5},function(){this.j=ec(this,this.j);this.a-=5},function(){this.j=O(this);this.a-=7},function(){var a=0,b=J(this);if((this.v^this.B)&16||9<(this.b&15))a|=6;if(b||154<=this.b)a|=96,b=1;this.b=bc(this,a);$b(this,b?256:0);this.a-=4},lc,function(){var a;I(this,a=H(this)+H(this));$b(this,a>>8&256);this.a-=10},function(){var a;a=P(this);a=bb(this.u,a);I(this,a);this.a-=16},function(){I(this,H(this)-1);this.a-=5},function(){this.l=
fc(this,this.l);this.a-=5},function(){this.l=ec(this,this.l);this.a-=5},function(){this.l=O(this);this.a-=7},function(){this.b=~this.b&255;this.a-=4},lc,function(){this.A=P(this)&65535;this.a-=10},function(){N(this,P(this),this.b);this.a-=13},function(){this.A=this.A+1&65535;this.a-=5},function(){var a=H(this);N(this,a,fc(this,M(this,a)));this.a-=10},function(){var a=H(this);N(this,a,ec(this,M(this,a)));this.a-=10},function(){N(this,H(this),O(this));this.a-=10},function(){this.o|=256;this.a-=4},lc,
function(){var a;I(this,a=H(this)+this.A);$b(this,a>>8&256);this.a-=10},function(){this.b=M(this,P(this));this.a-=13},function(){this.A=this.A-1&65535;this.a-=5},function(){this.b=fc(this,this.b);this.a-=5},function(){this.b=ec(this,this.b);this.a-=5},function(){this.b=O(this);this.a-=7},function(){$b(this,J(this)?0:256);this.a-=4},function(){this.a-=5},function(){this.g=this.c;this.a-=5},function(){this.g=this.h;this.a-=5},function(){this.g=this.f;this.a-=5},function(){this.g=this.j;this.a-=5},function(){this.g=
function na(a){var b=16,c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var f,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):2==
e&&d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}function C(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}function oa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function pa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
function qa(){var a=ra();return-1!==a.indexOf("pcjs.org",a.length-8)}function sa(a){return a.replace(/[&<>"']/g,function(a){return ta[a]})}function ua(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
var ta={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"},va={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"};
function xa(){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 ya(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var k=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(k.onreadystatechange=function(){4===k.readyState&&(f=k.responseText,200==k.status||!k.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=k.status||-1),d&&d(a,
f,e))});if(b&&"object"==typeof b){var m="",q;for(q in b)b.hasOwnProperty(q)&&(m&&(m+="&"),m+=q+"="+encodeURIComponent(b[q]));m=m.replace(/%20/g,"+");k.open("POST",a,c);k.setRequestHeader("Content-type","application/x-www-form-urlencoded");k.send(m)}else k.open("GET",a,c),"bytes"==b&&k.overrideMimeType("text/plain; charset=x-user-defined"),k.send();c||(f=k.responseText,200!=k.status&&(e=k.status||-1),d&&d(a,f,e),g=[f,e]);return g}
function za(a,b){var c,d={W:null,sa:null,Aa:null,ta:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Aa=g.load;d.ta=g.exec;if(e=g.bytes)d.W=e;else if(e=g.words)for(d.W=Array(2*e.length),f=c=0;c<e.length;c++)d.W[f++]=e[c]&255,d.W[f++]=e[c]>>8&255;else if(e=g.data)for(d.W=Array(4*e.length),f=c=0;c<e.length;c++)d.W[f++]=e[c]&
255,d.W[f++]=e[c]>>8&255,d.W[f++]=e[c]>>16&255,d.W[f++]=e[c]>>24&255;else d.W=g;d.sa=g.symbols;d.W.length?1==d.W.length&&(u(d.W[0]),d=null):(u("Empty resource: "+a),d=null)}catch(k){u("Resource data error ("+a+"): "+k.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){u("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.W=e)}return d}
function ra(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Aa(){if(null==Ba){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}Ba=a}return Ba}function Ca(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function Da(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ea(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1}
function Fa(a){if(!Ga){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}Ga=c}return Ga[a]}function Ha(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ia(a){Ja.init.push(a)}
function Ka(a){if(La)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){fa("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Ma(a){!La&&a?(La=!0,Na&&Oa("init"),Pa&&Oa("show")):La=a}function Oa(a){Ja[a]&&Ka(Ja[a])}var Ga=null,Ja={init:[],show:[],exit:[]},Na=!1,Pa=!1,La=!0,Ba=null;Ha("onload",function(){Na=!0;Ka(Ja.init)});Ha("onpageshow",function(){Pa=!0;Ka(Ja.show)});
Ha(Ea("Opera")||Ea("iOS")?"onunload":"onbeforeunload",function(){Ka(Ja.exit)});
var Qa="undefined"!==typeof ArrayBuffer,Ra=[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 Sa(a){r.call(this,"Panel",a)}l(Sa,r);Sa.prototype.S=function(a,b,c,d){return this.D&&this.D.S(a,b,c,d)||this.m&&this.m.S(a,b,c,d)||this.h&&this.h.S(a,b,c,d)?!0:r.prototype.S.call(this,a,b,c,d)};Sa.prototype.qa=function(a,b,c,d){this.D=a;this.u=b;this.m=c;this.J=d;this.h=Ta(a,"Keyboard")};Sa.prototype.ca=function(a,b){b||Ua();return!0};Sa.prototype.ba=function(){return!0};
function Ua(){for(var a=!1,b=z(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=x(d),f=ia(e.id);f||(a=!0,f=new Sa(e));ka(f,d);a&&A(f)}}Ia(Ua);
function Va(a,b,c){r.call(this,"Bus",a);this.m=b;this.J=c;this.s=a.busWidth||16;this.v=Math.pow(2,this.s);this.g=this.v-1|0;this.b=(this.s>>1)+2;10>this.b&&(this.b=10);15<this.b&&(this.b=15);this.c=1<<this.b;this.A=this.c>>2;this.f=this.c-1;this.h=this.v/this.c|0;this.o=this.h-1;this.j=[];this.l=[];this.B=[];this.C=[];a=new D;Xa(a,this.J);this.a=Array(this.h);for(b=0;b<this.h;b++)this.a[b]=a;A(this)}l(Va,r);Va.prototype.reset=function(){};Va.prototype.ca=function(a,b){b||this.reset();return!0};
function Ya(a,b,c,d){for(var e=b,f=c,g=e>>>a.b;0<f&&g<a.a.length;){var k=a.a[g],m=g*a.c,q=a.c-(e-m);q>f&&(q=f);if(k&&k.size){if(k.type==d){if(e+f<=k.Ra)return k.ib+=k.Ra-e,k.Ra=e,!0;if(e>=k.Ra+k.ib){q=k.size-(e-m);q>f&&(q=f);k.ib=e-k.Ra+q;e=m+a.c;f-=q;g++;continue}}return Za($a,e,f)}e=new D(e,q,a.c,d);Xa(e,a.J,k);a.a[g++]=e;e=m+a.c;f-=q}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+ab[d]+" at "+C(b,4,!0)),!0):Za(bb,b,c)}function cb(a,b){return a.a[(b&a.g)>>>a.b].hb(b&a.f,b)}
function db(a,b){var c=b&a.f,d=(b&a.g)>>>a.b;return c!=a.f?a.a[d].Ed(c,b):a.a[d++].Ua(c,b)|a.a[d&a.o].Ua(0,b+1)<<8}function eb(a,b,c){a.a[(b&a.g)>>>a.b].gc(b&a.f,c&255,b)}function fb(a,b,c){var d=b&a.f,e=(b&a.g)>>>a.b;d!=a.f?a.a[e].Sd(d,c&65535,b):(a.a[e++].Va(d,c&255,b),a.a[e&a.o].Va(0,c>>8&255,b+1))}
function gb(a){for(var b=0,c=[],d=0;d<a.h;d++){var e=a.a[d];if(e.ja||e.Zb){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,k=0,m=[];g<e.length;){for(var q=e[g],w=g+1;w<e.length&&e[w]===q;)w++;m[k++]=w-g;m[k++]=q;g=w}m.length<e.length&&(e=m)}c[f]=e}}return c}function hb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,k=c[e].bind(b);if(k)for(var m=+e+d;m<=g;m++)void 0!==f.j[m]?u("Input port "+C(m,4,!0)+" already registered"):f.j[m]=[k,!1]}}
function ib(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,k=c[e].bind(b);if(k)for(var m=+e+d;m<=g;m++)void 0!==f.l[m]?u("Output port "+C(m,4,!0)+" already registered"):f.l[m]=[k,!1]}}function Za(a,b,c){u("Memory block error ("+a+": "+C(b)+","+C(c)+")");return!1}var $a=1,bb=2,jb;if(Qa){var kb=new ArrayBuffer(2);(new DataView(kb)).setUint16(0,256,!0);jb=256===(new Uint16Array(kb))[0]}else jb=!1;var lb=jb;
function D(a,b,c,d){this.id=mb+=2;this.a=null;this.Ra=a;this.ib=b;this.size=c||0;this.type=d||ob;this.w=d==pb;Xa(this);this.ja=this.Zb=!1;if(c)if(Qa)this.m=new ArrayBuffer(c),this.u=new DataView(this.m,0,c),this.b=new Uint8Array(this.m,0,c),this.g=new Uint16Array(this.m,0,c>>1),this.a=new Int32Array(this.m,0,c>>2),qb(this,lb?rb:sb);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;qb(this,tb)}else qb(this)}h=D.prototype;
h.save=function(){var a,b;if(Qa)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.u.getInt32(b<<2,!0);else a=this.a;return a};h.restore=function(a){if(a&&this.size==a.length<<2){var b;if(Qa)for(b=0;b<a.length;b++)this.u.setInt32(b<<2,a[b],!0);else this.a=a;return this.ja=!0}return!1};function qb(a,b){b||(b=ub);vb(a,b,void 0);wb(a,b,void 0)}function vb(a,b,c){c&&a.c||(a.Ua=b[0]||a.cc,a.Ed=b[2]||a.dc);if(c||void 0===c)a.hb=b[0]||a.cc,a.ec=b[2]||a.dc}
function wb(a,b,c){c&&a.f||(a.Va=!a.w&&b[1]||a.hc,a.Sd=!a.w&&b[3]||a.ic);if(c||void 0===c)a.gc=b[1]||a.hc,a.h=b[3]||a.ic}function Xa(a,b,c){a.J=b;a.c=a.f=0;c&&((a.c=c.c)&&vb(a,xb,!1),(a.f=c.f)&&wb(a,xb,!1))}h.cc=function(){return 255};h.hc=function(){};h.dc=function(a,b){return this.Ua(a++,b++)|this.Ua(a,b)<<8};h.ic=function(a,b,c){this.Va(a++,b&255,c++);this.Va(a,b>>8,c)};h.Dd=function(a){return this.a[a>>2]>>>((a&3)<<3)&255};
h.Id=function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8};h.Rd=function(a,b){var c=a>>2;a=(a&3)<<3;this.a[c]=this.a[c]&~(255<<a)|b<<a;this.ja=!0};h.Wd=function(a,b){var c=a>>2;a=(a&3)<<3;24>a?this.a[c]=this.a[c]&~(65535<<a)|b<<a:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.ja=!0};h.Bd=function(a,b){return this.hb(a,b)};h.Gd=function(a,b){return this.ec(a,b)};h.Pd=function(a,b,c){this.w||this.gc(a,b,c)};
h.Ud=function(a,b,c){this.w||this.h(a,b,c)};h.Ad=function(a){return this.b[a]};h.Cd=function(a){return this.b[a]};h.Fd=function(a){return this.u.getUint16(a,!0)};h.Hd=function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.g[a>>1]};h.Od=function(a,b){this.b[a]=b;this.ja=!0};h.Qd=function(a,b){this.b[a]=b;this.ja=!0};h.Td=function(a,b){this.u.setUint16(a,b,!0);this.ja=!0};h.Vd=function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.g[a>>1]=b;this.ja=!0};
var ob=0,pb=2,ab=["NONE","RAM","ROM","VID","H/W"],mb=0,ub=[],tb=[D.prototype.Dd,D.prototype.Rd,D.prototype.Id,D.prototype.Wd],xb=[D.prototype.Bd,D.prototype.Pd,D.prototype.Gd,D.prototype.Ud];if(Qa)var sb=[D.prototype.Ad,D.prototype.Od,D.prototype.Fd,D.prototype.Td],rb=[D.prototype.Cd,D.prototype.Qd,D.prototype.Hd,D.prototype.Vd];
function yb(a,b){r.call(this,"CPU",a);var c=a.multiplier||1;this.na=a.cycles||b;this.O=c;this.Ea=Math.round(this.na/1E4)/100;this.X=this.Ea*this.O;this.i.ka=!1;this.i.fc=!1;this.i.Sa=a.autoStart;this.i.Xb=!1;this.i.bb=!1;this.wa=this.ea=0;this.xa=a.csStart;this.ha=a.csInterval;this.la=a.csStop;this.H=[];this.mb=this.jb.bind(this);A(this)}l(yb,r);h=yb.prototype;
h.qa=function(a,b,c,d){this.D=a;this.u=b;this.J=d;for(b=0;b<zb.length;b++)(c=this.w[zb[b]])&&this.D.S(null,zb[b],c);this.N=Ta(a,"ChipSet");a=Ab(a,"autoStart");null!=a&&(this.i.Sa="true"==a?!0:"false"==a?!1:!!a);A(this)};h.reset=function(){};h.save=function(){return null};h.restore=function(){return!1};h.ca=function(a,b){if(!b){if(a&&this.restore){Bb(this);if(!this.restore(a))return!1;Cb(this)}else this.reset();this.aa("No debugger detected")}Db(this);return!0};
h.ba=function(a){return a?this.save():!0};h.Sa=function(){return this.i.Sa||void 0===this.w.run?(this.jb(),!0):!1};h.$b=function(){return 0};function Cb(a){void 0===a.xa&&(a.xa=0);void 0===a.ha&&(a.ha=-1);void 0===a.la&&(a.la=-1);a.i.bb=0<=a.xa&&0<a.ha;a.i.bb&&(a.wa=0,a.ea=a.xa-a.I)}
h.S=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.w[b]=c;a=!0;break;case "run":this.w[b]=c;c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.i.U)a=!0;else{var b=null,c,k=ha(a.id);for(c=0;c<k.length&&(b=k[c],b===a||b.i.ready);c++);if(c==k.length)for(c=0;c<k.length&&(b=k[c],b===a||b.i.U);c++);c==k.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.i.ready?"powered yet":"ready yet"+(b.eb?" (waiting for notification)":""))+".");a=!1}a&&(d.i.ka?Eb(d):d.jb())};a=!0;
break;case "speed":this.w[b]=c;a=!0;break;case "setSpeed":this.w[b]=c,c.onclick=function(){Fb(d,d.O<<1,!0)},c.textContent=this.X.toFixed(2)+"Mhz",a=!0}return a};function Gb(a,b){var c=1;b&&1<a.O&&a.R&&(c=a.R/a.Ea);a.Pa=Math.round(1E3/Hb);a.ya=Math.floor(a.na/Hb*c);b||(a.ma=a.ya);a.Ga=0}function Ib(a){return a.I+a.P+a.da-a.a}function Bb(a){a.R=0;a.Qa=0;a.I=a.P=a.da=a.a=0;Cb(a);Fb(a,1)}
function Fb(a,b,c){if(void 0!==b){.8>a.R/a.X&&(b=1);a.O=b;b=a.Ea*a.O;if(a.X!=b){a.X=b;b=a.X.toFixed(2)+"Mhz";var d=a.w.setSpeed;d&&(d.textContent=b);a.aa("target speed: "+b)}c&&a.D&&Jb(a.D)}a.I+=a.P;a.P=0;a.L=da();a.V=0;Gb(a)}function Kb(a,b){var c=a.H.length;a.H.push([-1,b]);return c}function Lb(a,b,c){0<=b&&b<a.H.length&&0>a.H[b][0]&&(c*=a.na*a.O/1E3,a.H[b][0]=c+Mb(a))}function Mb(a,b){var c=a.da-=a.a;a.a=0;b&&(a.da=0);return c}
h.jb=function(a){if(ma(this,!0)){if(!this.i.ka){Fb(this);this.D&&this.D.start(this.L,Ib(this));this.i.ka=!0;this.i.fc=!0;this.N&&this.N.start();var b=this.w.run;b&&(b.textContent="Halt");this.D&&(Nb(this.D,!0),a&&Jb(this.D,!0))}this.Ga>=this.na&&Gb(this,!0);this.oa=0;this.va=da();this.V&&(a=this.va-this.V,a>this.Pa&&(this.L+=a,this.L>this.va&&(this.L=this.va)));try{do{for(var c,d=this.i.bb?1:this.ya,e=this.H.length-1;0<=e;e--){var f=this.H[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.vb(c);c=Mb(this,!0);
this.oa+=c;this.P+=c;a=c;this.i.bb&&(b=!1,this.wa=this.wa+this.$b()|0,this.ea-=a,0>=this.ea&&(this.ea+=this.ha,b=!0),0<=this.la&&this.la<=Ib(this)&&(this.ha=this.la=-1,Cb(this),Eb(this),b=!0),b&&this.aa(Ib(this)+" cycles: checksum="+C(this.wa)));a=c;for(var g=this.H.length-1;0<=g;g--){var k=this.H[g];0>k[0]||(k[0]-=a,0>=k[0]&&(k[0]=-1,k[1]()))}this.ma-=c;if(0>=this.ma){this.ma+=this.ya;++this.Qa>=Ob&&(this.D&&Nb(this.D),this.Qa=0);break}}while(this.i.ka)}catch(m){Eb(this);Db(this);this.D&&this.D.stop(da(),
Ib(this));ma(this,!1);c=m.stack||m.message;this.i.error=!0;this.G(c);return}c=setTimeout;d=this.mb;this.V=da();e=this.Pa;this.oa&&(e=Math.round(e*this.oa/this.ya));e-=this.V-this.va;if(f=this.V-this.L)this.R=Math.round(this.P/(10*f))/100,864E5<=f&&(this.I=0,Fb(this));if(0>e||this.R<this.X)-1E3>e&&(this.L-=e),e=0;this.Ga+=this.oa;this.V+=e;c(d,e)}else Db(this),this.D&&this.D.stop(da(),Ib(this))};h.vb=function(){return 0};
function Eb(a){a.i.ab&&(a.i.nb=!0);Mb(a);a.I+=a.P;a.P=0;if(a.i.ka){a.i.ka=!1;a.N&&a.N.stop();var b=a.w.run;b&&(b.textContent="Run")}a.i.complete=void 0}function Db(a){if(a.D){for(var b=a.D,c=0;c<b.g.length;c++)Pb(b.g[c],void 0);Nb(a.D,void 0)}}var Hb=30,Ob=15,zb=["power","reset"];function Qb(a){yb.call(this,a,1E6);this.Ma=Rb;Bb(this);this.i.complete=this.i.Vc=!1;this.Oa=0;this.ra=[];this.Na=0;Sb(this)}l(Qb,yb);function Tb(a,b){a.ra.push(b)}h=Qb.prototype;
h.reset=function(){this.i.ka&&Eb(this);Sb(this);Bb(this);this.i.error=!1;yb.prototype.reset.call(this)};function Sb(a){a.b=0;a.g=0;a.c=0;a.h=0;a.f=0;a.j=0;a.l=0;a.A=0;E(a,a.Na);Ub(a,0);a.C=0}function Vb(a,b){a.Na=b;E(a,b)}h.$b=function(){var a=this.b+this.g+this.c+this.h+this.f+this.j+this.l|0;return a=a+this.A+this.s+Wb(this)|0};
h.save=function(){var a=new G(this);a.set(0,[this.b,this.g,this.c,this.h,this.f,this.j,this.l,this.A,this.s,Wb(this)]);a.set(1,[this.C,this.I,this.O]);a.set(2,gb(this.u));return a.data()};
h.restore=function(a){var b=a[0];this.b=b[0];this.g=b[1];this.c=b[2];this.h=b[3];this.f=b[4];this.j=b[5];this.l=b[6];this.A=b[7]&65535;E(this,b[8]);Ub(this,b[9]);b=a[1];this.C=b[0];this.I=b[1];Fb(this,b[3]);a:{b=this.u;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.A){for(var f=0,g=Array(b.A),k=0;k<e.length-1;)for(var m=e[k++],q=e[k++];m--;)g[f++]=q;e=g}f=b.a[d];if(!f||!f.restore(e)){u("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
h.S=function(a,b,c){switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.w[b]=c;this.Oa++;a=!0;break;default:a=yb.prototype.S.call(this,a,b,c)}return a};function Xb(a){return a.g<<8|a.c}function Yb(a,b){a.g=b>>8&255;a.c=b&255}function $b(a){return a.h<<8|a.f}function ac(a,b){a.h=b>>8&255;a.f=b&255}function H(a){return a.j<<8|a.l}
function I(a,b){a.j=b>>8&255;a.l=b&255}function E(a,b){a.s=b&65535}function J(a){return a.o&256?1:0}function bc(a,b){a.o=a.o&255|b}function cc(a){return Ra[a.v&255]?4:0}function Wb(a){return a.F&-214|(a.v&128?128:0)|(a.o&255?0:64)|((a.v^a.B)&16?16:0)|cc(a)|J(a)}function Ub(a,b){a.o=a.v=a.B=0;b&1&&(a.o|=256);b&4||(a.v|=1);b&16&&(a.B|=16);b&64||(a.o|=255);b&128&&(a.v^=192);a.F=a.F&-726|b&512|2}function dc(a,b){a.B=a.b^b;return a.v=(a.o=a.b+b)&255}
function ec(a,b){a.B=a.b^b;return a.v=(a.o=a.b+b+(a.o&256?1:0))&255}function fc(a,b){a.o=a.v=a.B=a.b&b;(a.b|b)&8&&(a.B^=16);return a.o}function gc(a,b){a.B=b^255;b=a.v=b+255&255;a.o=a.o&-256|b;return b}function hc(a,b){a.B=b;b=a.v=b+1&255;a.o=a.o&-256|b;return b}function ic(a,b){return a.v=a.o=a.B=a.b|b}function K(a,b){b^=255;a.B=a.b^b;return a.v=(a.o=a.b+b+1^256)&255}function jc(a,b){b^=255;a.B=a.b^b;return a.v=(a.o=a.b+b+(a.o&256?0:1)^256)&255}function kc(a,b){return a.v=a.o=a.B=a.b^b}
function M(a,b){a=a.u;return a.a[(b&a.g)>>>a.b].Ua(b&a.f,b)}function N(a,b,c){a=a.u;a.a[(b&a.g)>>>a.b].Va(b&a.f,c&255,b)}function O(a){var b=M(a,a.s);E(a,a.s+1);return b}function P(a){var b=db(a.u,a.s);E(a,a.s+2);return b}function Q(a){var b=db(a.u,a.A);a.A=a.A+2&65535;return b}function R(a,b){a.A=a.A-2&65535;fb(a.u,a.A,b)}function lc(a){if(a.a&&a.C&255&&a.F&512){for(var b=0;8>b&&!(a.C&1<<b);b++);a.C&=~(0>b?255:1<<b);a.F&=-513;a.C&=-257;a.Ma[199|b<<3].call(a)}return a.C&256?(Mb(a),!1):!0}
function mc(a,b){a.C|=1<<b;a.F&512&&Mb(a)}function S(a,b,c,d){d=d||2;a.w[b]&&(void 0===c&&(a.i.error=!0,a.G("Value for "+b+" is invalid"),Eb(a)),c=!a.i.ka||a.i.Xb?C(c,d):"--------".substr(0,d),a.w[b].textContent!=c&&(a.w[b].textContent=c))}h.vb=function(a){this.i.complete=!0;this.i.Vc=!1;this.i.fc=!1;this.da=this.a=a;if(lc(this)){do this.Ma[O(this)].call(this);while(0<this.a)}return this.i.complete?this.da-this.a:void 0===this.i.complete?0:-1};
Ia(function(){for(var a=z(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new Qb(d);ka(d,c)}});function nc(){this.a-=4}function oc(){E(this,P(this));this.a-=10}function pc(){E(this,Q(this));this.a-=10}function qc(){var a=P(this);R(this,this.s);E(this,a);this.a-=17}
var Rb=[nc,function(){Yb(this,P(this));this.a-=10},function(){N(this,Xb(this),this.b);this.a-=7},function(){Yb(this,Xb(this)+1);this.a-=5},function(){this.g=hc(this,this.g);this.a-=5},function(){this.g=gc(this,this.g);this.a-=5},function(){this.g=O(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|a>>8;bc(this,a&256);this.a-=4},nc,function(){var a;I(this,a=H(this)+Xb(this));bc(this,a>>8&256);this.a-=10},function(){this.b=M(this,Xb(this));this.a-=7},function(){Yb(this,Xb(this)-1);this.a-=5},
function(){this.c=hc(this,this.c);this.a-=5},function(){this.c=gc(this,this.c);this.a-=5},function(){this.c=O(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(a|this.b)>>1;bc(this,a);this.a-=4},nc,function(){ac(this,P(this));this.a-=10},function(){N(this,$b(this),this.b);this.a-=7},function(){ac(this,$b(this)+1);this.a-=5},function(){this.h=hc(this,this.h);this.a-=5},function(){this.h=gc(this,this.h);this.a-=5},function(){this.h=O(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|J(this);
bc(this,a&256);this.a-=4},nc,function(){var a;I(this,a=H(this)+$b(this));bc(this,a>>8&256);this.a-=10},function(){this.b=M(this,$b(this));this.a-=7},function(){ac(this,$b(this)-1);this.a-=5},function(){this.f=hc(this,this.f);this.a-=5},function(){this.f=gc(this,this.f);this.a-=5},function(){this.f=O(this);this.a-=7},function(){var a=this.b<<8;this.b=(J(this)<<8|this.b)>>1;bc(this,a&256);this.a-=4},nc,function(){I(this,P(this));this.a-=10},function(){var a=P(this);fb(this.u,a,H(this));this.a-=16},
function(){I(this,H(this)+1);this.a-=5},function(){this.j=hc(this,this.j);this.a-=5},function(){this.j=gc(this,this.j);this.a-=5},function(){this.j=O(this);this.a-=7},function(){var a=0,b=J(this);if((this.v^this.B)&16||9<(this.b&15))a|=6;if(b||154<=this.b)a|=96,b=1;this.b=dc(this,a);bc(this,b?256:0);this.a-=4},nc,function(){var a;I(this,a=H(this)+H(this));bc(this,a>>8&256);this.a-=10},function(){var a;a=P(this);a=db(this.u,a);I(this,a);this.a-=16},function(){I(this,H(this)-1);this.a-=5},function(){this.l=
hc(this,this.l);this.a-=5},function(){this.l=gc(this,this.l);this.a-=5},function(){this.l=O(this);this.a-=7},function(){this.b=~this.b&255;this.a-=4},nc,function(){this.A=P(this)&65535;this.a-=10},function(){N(this,P(this),this.b);this.a-=13},function(){this.A=this.A+1&65535;this.a-=5},function(){var a=H(this);N(this,a,hc(this,M(this,a)));this.a-=10},function(){var a=H(this);N(this,a,gc(this,M(this,a)));this.a-=10},function(){N(this,H(this),O(this));this.a-=10},function(){this.o|=256;this.a-=4},nc,
function(){var a;I(this,a=H(this)+this.A);bc(this,a>>8&256);this.a-=10},function(){this.b=M(this,P(this));this.a-=13},function(){this.A=this.A-1&65535;this.a-=5},function(){this.b=hc(this,this.b);this.a-=5},function(){this.b=gc(this,this.b);this.a-=5},function(){this.b=O(this);this.a-=7},function(){bc(this,J(this)?0:256);this.a-=4},function(){this.a-=5},function(){this.g=this.c;this.a-=5},function(){this.g=this.h;this.a-=5},function(){this.g=this.f;this.a-=5},function(){this.g=this.j;this.a-=5},function(){this.g=
this.l;this.a-=5},function(){this.g=M(this,H(this));this.a-=7},function(){this.g=this.b;this.a-=5},function(){this.c=this.g;this.a-=5},function(){this.a-=5},function(){this.c=this.h;this.a-=5},function(){this.c=this.f;this.a-=5},function(){this.c=this.j;this.a-=5},function(){this.c=this.l;this.a-=5},function(){this.c=M(this,H(this));this.a-=7},function(){this.c=this.b;this.a-=5},function(){this.h=this.g;this.a-=5},function(){this.h=this.c;this.a-=5},function(){this.a-=5},function(){this.h=this.f;
this.a-=5},function(){this.h=this.j;this.a-=5},function(){this.h=this.l;this.a-=5},function(){this.h=M(this,H(this));this.a-=7},function(){this.h=this.b;this.a-=5},function(){this.f=this.g;this.a-=5},function(){this.f=this.c;this.a-=5},function(){this.f=this.h;this.a-=5},function(){this.a-=5},function(){this.f=this.j;this.a-=5},function(){this.f=this.l;this.a-=5},function(){this.f=M(this,H(this));this.a-=7},function(){this.f=this.b;this.a-=5},function(){this.j=this.g;this.a-=5},function(){this.j=
this.c;this.a-=5},function(){this.j=this.h;this.a-=5},function(){this.j=this.f;this.a-=5},function(){this.a-=5},function(){this.j=this.l;this.a-=5},function(){this.j=M(this,H(this));this.a-=7},function(){this.j=this.b;this.a-=5},function(){this.l=this.g;this.a-=5},function(){this.l=this.c;this.a-=5},function(){this.l=this.h;this.a-=5},function(){this.l=this.f;this.a-=5},function(){this.l=this.j;this.a-=5},function(){this.a-=5},function(){this.l=M(this,H(this));this.a-=7},function(){this.l=this.b;
this.a-=5},function(){N(this,H(this),this.g);this.a-=7},function(){N(this,H(this),this.c);this.a-=7},function(){N(this,H(this),this.h);this.a-=7},function(){N(this,H(this),this.f);this.a-=7},function(){N(this,H(this),this.j);this.a-=7},function(){N(this,H(this),this.l);this.a-=7},function(){var a=this.s-1;if(this.ra.length)for(var b=0;b<this.ra.length;b++)if(this.ra[b](a))return;this.a-=7;this.C|=256;Kb(this);this.F&512||Cb(this)},function(){N(this,H(this),this.b);this.a-=7},function(){this.b=this.g;
this.a-=5},function(){this.b=this.c;this.a-=5},function(){this.b=this.h;this.a-=5},function(){this.b=this.f;this.a-=5},function(){this.b=this.j;this.a-=5},function(){this.b=this.l;this.a-=5},function(){this.b=M(this,H(this));this.a-=7},function(){this.a-=5},function(){this.b=bc(this,this.g);this.a-=4},function(){this.b=bc(this,this.c);this.a-=4},function(){this.b=bc(this,this.h);this.a-=4},function(){this.b=bc(this,this.f);this.a-=4},function(){this.b=bc(this,this.j);this.a-=4},function(){this.b=
bc(this,this.l);this.a-=4},function(){this.b=bc(this,M(this,H(this)));this.a-=7},function(){this.b=bc(this,this.b);this.a-=4},function(){this.b=cc(this,this.g);this.a-=4},function(){this.b=cc(this,this.c);this.a-=4},function(){this.b=cc(this,this.h);this.a-=4},function(){this.b=cc(this,this.f);this.a-=4},function(){this.b=cc(this,this.j);this.a-=4},function(){this.b=cc(this,this.l);this.a-=4},function(){this.b=cc(this,M(this,H(this)));this.a-=7},function(){this.b=cc(this,this.b);this.a-=4},function(){this.b=
L(this,this.g);this.a-=4},function(){this.b=L(this,this.c);this.a-=4},function(){this.b=L(this,this.h);this.a-=4},function(){this.b=L(this,this.f);this.a-=4},function(){this.b=L(this,this.j);this.a-=4},function(){this.b=L(this,this.l);this.a-=4},function(){this.b=L(this,M(this,H(this)));this.a-=7},function(){this.b=L(this,this.b);this.a-=4},function(){this.b=hc(this,this.g);this.a-=4},function(){this.b=hc(this,this.c);this.a-=4},function(){this.b=hc(this,this.h);this.a-=4},function(){this.b=hc(this,
this.f);this.a-=4},function(){this.b=hc(this,this.j);this.a-=4},function(){this.b=hc(this,this.l);this.a-=4},function(){this.b=hc(this,M(this,H(this)));this.a-=7},function(){this.b=hc(this,this.b);this.a-=4},function(){this.b=dc(this,this.g);this.a-=4},function(){this.b=dc(this,this.c);this.a-=4},function(){this.b=dc(this,this.h);this.a-=4},function(){this.b=dc(this,this.f);this.a-=4},function(){this.b=dc(this,this.j);this.a-=4},function(){this.b=dc(this,this.l);this.a-=4},function(){this.b=dc(this,
M(this,H(this)));this.a-=7},function(){this.b=dc(this,this.b);this.a-=4},function(){this.b=ic(this,this.g);this.a-=4},function(){this.b=ic(this,this.c);this.a-=4},function(){this.b=ic(this,this.h);this.a-=4},function(){this.b=ic(this,this.f);this.a-=4},function(){this.b=ic(this,this.j);this.a-=4},function(){this.b=ic(this,this.l);this.a-=4},function(){this.b=ic(this,M(this,H(this)));this.a-=7},function(){this.b=ic(this,this.b);this.a-=4},function(){this.b=gc(this,this.g);this.a-=4},function(){this.b=
gc(this,this.c);this.a-=4},function(){this.b=gc(this,this.h);this.a-=4},function(){this.b=gc(this,this.f);this.a-=4},function(){this.b=gc(this,this.j);this.a-=4},function(){this.b=gc(this,this.l);this.a-=4},function(){this.b=gc(this,M(this,H(this)));this.a-=7},function(){this.b=gc(this,this.b);this.a-=4},function(){L(this,this.g);this.a-=4},function(){L(this,this.c);this.a-=4},function(){L(this,this.h);this.a-=4},function(){L(this,this.f);this.a-=4},function(){L(this,this.j);this.a-=4},function(){L(this,
this.l);this.a-=4},function(){L(this,M(this,H(this)));this.a-=7},function(){L(this,this.b);this.a-=4},function(){this.o&255&&(F(this,Q(this)),this.a-=6);this.a-=5},function(){Wb(this,Q(this));this.a-=10},function(){var a=P(this);this.o&255&&F(this,a);this.a-=10},mc,function(){var a=P(this);this.o&255&&(R(this,this.s),F(this,a),this.a-=6);this.a-=11},function(){R(this,Vb(this));this.a-=11},function(){this.b=bc(this,O(this));this.a-=7},function(){R(this,this.s);F(this,0);this.a-=11},function(){this.o&
255||(F(this,Q(this)),this.a-=6);this.a-=5},nc,function(){var a=P(this);this.o&255||F(this,a);this.a-=10},mc,function(){var a=P(this);this.o&255||(R(this,this.s),F(this,a),this.a-=6);this.a-=11},oc,function(){this.b=cc(this,O(this));this.a-=7},function(){R(this,this.s);F(this,8);this.a-=11},function(){J(this)||(F(this,Q(this)),this.a-=6);this.a-=5},function(){Zb(this,Q(this));this.a-=10},function(){var a=P(this);J(this)||F(this,a);this.a-=10},function(){for(var a=O(this),b=this.u,c=this.b,d=this.s+
-2&65535,e=1,f=0;0<e;){var g=b.l[a],h=b.C[a]||1,l=1==h?255:2==h?65535:-1,l=(c>>>=f)&l;if(void 0!==g&&g[0])g[0](a,l,d);f+=h<<3;a+=h;e-=h}this.a-=10},function(){var a=P(this);J(this)||(R(this,this.s),F(this,a),this.a-=6);this.a-=11},function(){R(this,Yb(this));this.a-=11},function(){this.b=L(this,O(this));this.a-=7},function(){R(this,this.s);F(this,16);this.a-=11},function(){J(this)&&(F(this,Q(this)),this.a-=6);this.a-=5},nc,function(){var a=P(this);J(this)&&F(this,a);this.a-=10},function(){for(var a=
O(this),b=this.u,c=this.s+-2&65535,d=1,e=0,f=0;0<d;){var g=b.j[a],h=b.B[a]||1,l=1==h?255:2==h?65535:-1,n=l;void 0!==g&&g[0]&&(n=g[0](a,c),void 0===n?n=l:n&=l);e|=n<<f;f+=h<<3;a+=h;d-=h}this.b=e&255;this.a-=10},function(){var a=P(this);J(this)&&(R(this,this.s),F(this,a),this.a-=6);this.a-=11},oc,function(){this.b=hc(this,O(this));this.a-=7},function(){R(this,this.s);F(this,24);this.a-=11},function(){ac(this)||(F(this,Q(this)),this.a-=6);this.a-=5},function(){I(this,Q(this));this.a-=10},function(){var a=
P(this);ac(this)||F(this,a);this.a-=10},function(){var a=Q(this);R(this,H(this));I(this,a);this.a-=18},function(){var a=P(this);ac(this)||(R(this,this.s),F(this,a),this.a-=6);this.a-=11},function(){R(this,H(this));this.a-=11},function(){this.b=dc(this,O(this));this.a-=7},function(){R(this,this.s);F(this,32);this.a-=11},function(){ac(this)&&(F(this,Q(this)),this.a-=6);this.a-=5},function(){F(this,H(this));this.a-=5},function(){var a=P(this);ac(this)&&F(this,a);this.a-=10},function(){var a=H(this);
I(this,Yb(this));Zb(this,a);this.a-=5},function(){var a=P(this);ac(this)&&(R(this,this.s),F(this,a),this.a-=6);this.a-=11},oc,function(){this.b=ic(this,O(this));this.a-=7},function(){R(this,this.s);F(this,40);this.a-=11},function(){this.v&128||(F(this,Q(this)),this.a-=6);this.a-=5},function(){var a=Q(this);Sb(this,a&255|this.F&-256);this.b=a>>8;this.a-=10},function(){var a=P(this);this.v&128||F(this,a);this.a-=10},function(){this.F&=-513;this.a-=4},function(){var a=P(this);this.v&128||(R(this,this.s),
F(this,a),this.a-=6);this.a-=11},function(){R(this,Ub(this)&255|this.b<<8);this.a-=11},function(){this.b=gc(this,O(this));this.a-=7},function(){R(this,this.s);F(this,48);this.a-=11},function(){this.v&128&&(F(this,Q(this)),this.a-=6);this.a-=5},function(){this.A=H(this)&65535;this.a-=5},function(){var a=P(this);this.v&128&&F(this,a);this.a-=10},function(){this.F|=512;this.a-=4;jc(this)},function(){var a=P(this);this.v&128&&(R(this,this.s),F(this,a),this.a-=6);this.a-=11},oc,function(){L(this,O(this));
this.a-=7},function(){R(this,this.s);F(this,56);this.a-=11}];function U(a){q.call(this,"ChipSet",a);var b=a.model;b&&!pc[b]&&ea("Unrecognized ChipSet model: "+b);this.b=pc[b]||{};a.sound&&(this.I=null,window&&(this.I=window.AudioContext||window.webkitAudioContext),this.I&&new this.I);z(this)}m(U,q);k=U.prototype;k.S=function(){return!1};
k.qa=function(a,b,c,d){this.u=b;this.m=c;this.J=d;this.D=a;this.h=C(a,"Keyboard");this.g=C(a,"SerialPort");this.video=C(a,"Video");fb(b,this,this.b.bb);gb(b,this,this.b.cb)};k.ca=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ba=function(a){return a?this.save():!0};k.reset=function(){this.b.INIT&&!this.restore(this.b.INIT)&&this.G("reset error")};
k.save=function(){var a=new G(this);switch(this.b.Y){case V.Y:a.set(0,[this.V,this.f,this.X,this.B,this.H,this.P,this.R]);break;case W.Y:a.set(0,[this.N,this.s]),a.set(1,[this.l,this.o]),a.set(2,[this.c,this.C,this.O,this.L]),a.set(3,[this.A,this.a,this.v,this.F,this.j])}return a.data()};
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.Y){case V.Y:return this.V=b[0],this.f=b[1],this.X=b[2],this.B=b[3],this.H=b[4],this.P=b[5],this.R=b[6],!0;case W.Y:return this.N=b[0],this.s=b[1],b=a[1],this.l=b[0],this.o=b[1],b=a[2],this.c=b[0],this.C=b[1],this.O=b[2],this.L=b[3],b=a[3],this.A=b[0],this.a=b[1],this.v=b[2],this.F=b[3],this.j=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.Xc=function(){return this.V};k.Yc=function(){return this.f};k.Zc=function(){return this.X};
k.Wc=function(){return this.B>>8-this.H&255};k.ed=function(a,b){this.H=b};k.gd=function(a,b){this.P=b};k.fd=function(a,b){this.B=b<<8|this.B>>8};k.hd=function(a,b){this.R=b};k.jd=function(){};function qc(a){var b=0,c=0,d=~a.A;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
k.$c=function(){var a=this.s,a=a&~W.ga.wb;if((Gb(this.m)&64)<<1&&(a|=W.ga.wb,a!=this.s)){var b,c;b=this.v&1;switch(this.v>>1&7){case W.ia.Ca.Pb:this.A=this.A<<1|b;break;case W.ia.Ca.Wb:b=qc(this);this.j[b]=W.ia.Xa;break;case W.ia.Ca.Qb:this.a=this.a<<1|b;break;case W.ia.Ca.Lc:b=qc(this);c=this.a&W.ia.Xa;this.j[b]=c;break;case W.ia.Ca.Bc:b=qc(this);c=this.j[b];null==c&&(c=W.ia.Xa);this.a=c;break;case W.ia.Ca.Dc:this.a<<=1,this.F=this.a&W.ia.Xa+1}}a&=~W.ga.xb;this.F&&(a|=W.ga.xb);a&=~W.ga.sb;if(b=this.h){b=
this.h;if(c=b.h)c=b.m,c=Gb(b.m)>=b.o+c.na*c.O/1E3*1.2731488;c&&(b.h=!1);b=!b.h}b&&(a|=W.ga.sb);a&=~W.ga.zb;this.g&&this.g.T&rc&&(a|=W.ga.zb);return this.s=a};k.kd=function(a,b){this.N=b};k.nd=function(a,b){this.v=b};k.md=function(a,b){a=b&3;switch(b>>2&3){case 0:this.c=this.c&-4|a;break;case 1:this.c=this.c&-13|a<<2;this.video&&(b=this.video,a=this.c,b.la!==a&&((b.la=a)?Nb(b,!0):b.na=!0));break;case 2:switch(a){case 0:this.C=~this.C;break;case 2:case 3:this.O=3-a}break;case 3:this.L=a}};
k.ld=function(a,b){b&W.ua.Ac?(b&=W.ua.yb,this.o!=b&&(this.o=b,this.video&&(this.video.Gb=this.o==W.ua.yb?50:60))):(b&=W.ua.pb,this.l!=b&&(this.l=b,this.video&&(a=this.video,b=this.l==W.ua.pb?132:80,a.C=b,a.M=a.va,80<b&&a.M--,sc(a)&&tc(a))))};
var V={Y:1978.1,Fc:{Z:0,ne:1,re:16,ye:32,He:64,Ge:128,Ha:14},za:{Z:1,Vb:1,yc:2,uc:4,vc:16,wc:32,xc:64,Ha:8},Gc:{Z:2,me:3,Qe:4,oe:8,Ce:16,De:32,Ee:64,pe:128,Ha:0},Le:{Z:3},Je:{Z:2,ze:7},Ne:{Z:3,Re:1,Me:2,Fe:4,we:8,qe:16,Id:32},Ke:{Z:4},Oe:{Z:5,se:1,te:2,ue:4,ve:8,Se:16}},W={Y:100,ga:{Z:66,zb:1,qc:2,rc:4,Be:8,Ae:16,xb:32,wb:64,sb:128},Tb:{Z:66,INIT:0},ua:{Z:194,Ld:0,pb:16,Ac:32,yb:48,cc:0,dc:32},Va:{Z:162,Ie:0,fc:0,bc:0,ec:0,ac:0},ia:{xe:{Z:98},Ca:{Qb:0,Pb:1,Dc:2,Lc:4,Wb:5,Bc:6,Pe:7},Xa:16383}},pc=
{SI1978:V,VT100:W};V.INIT=[[V.Fc.Ha,V.za.Ha,V.Gc.Ha,0,0,0,0]];
W.INIT=[[W.Tb.INIT,W.ga.qc|W.ga.rc],[W.ua.cc,W.ua.dc],[W.Va.fc,W.Va.bc,W.Va.ec,W.Va.ac],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];V.bb={0:U.prototype.Xc,1:U.prototype.Yc,2:U.prototype.Zc,3:U.prototype.Wc};
V.cb={2:U.prototype.ed,3:U.prototype.gd,4:U.prototype.fd,5:U.prototype.hd,6:U.prototype.jd};W.bb={66:U.prototype.$c};W.cb={66:U.prototype.kd,98:U.prototype.nd,162:U.prototype.md,194:U.prototype.ld};Ha(function(){for(var a=y(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new U(d);ja(d,c)}});
function uc(a){q.call(this,"ROM",a);this.a=null;this.g=a.addr;this.b=a.size;this.f=a.alias;this.c=a.file;this.h=na(this.c);if(this.c){a=this.c;var b=oa(this.h);"json"!=b&&"hex"!=b&&(a=qa()+"/api/v1/dump?file="+this.c+"&format=bytes&decimal=true");var c=this;xa(a,null,!0,function(a,b,f){vc(c,a,b,f)})}}m(uc,q);uc.prototype.qa=function(a,b,c,d){this.u=b;this.m=c;this.J=d;wc(this)};uc.prototype.ca=function(){this.sa&&(this.J&&this.J.a(this.id,this.g,this.b,this.sa),delete this.sa);return!0};
uc.prototype.ba=function(){return!0};
function vc(a,b,c,d){if(d)a.G("Unable to load system ROM (error "+d+": "+b+")");else{aa(a.Ia,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.data;if(f)a.a=f;else if(g)for(a.a=Array(4*g.length),d=c=0;c<g.length;c++)a.a[d++]=g[c]&255,a.a[d++]=g[c]>>8&255,a.a[d++]=g[c]>>16&255,a.a[d++]=g[c]>>24&255;else a.a=e;a.sa=e.symbols;if(!a.a.length){u("Empty ROM: "+b);return}if(1==a.a.length){u(a.a[0]);return}}catch(h){a.G("ROM data error: "+h.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]=ma(b[e]);wc(a)}}
function wc(a){if(!ka(a))if(!a.c)z(a);else if(a.a&&a.u){a.b||(a.b=a.a.length);if(a.a.length!=a.b){var b="ROM size ("+B(a.a.length,8,!0)+") does not match specified size ("+B(a.b,8,!0)+")";a.i.error=!0;a.G(b)}else{b=a.g;if(Wa(a.u,b,a.b,nb)){var c;for(c=0;c<a.a.length;c++)cb(a.u,b+c,a.a[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.u,g=d.b,h=[],l=d.g>>>f.b;0<g&&l<f.a.length;)h.push(f.a[l++]),g-=f.c;f=d.u;
d=d.b;g=0;for(e>>>=f.b;0<d&&e<f.a.length;){l=h[g++];if(!l)break;f.a[e++]=l;d-=f.c}}delete a.a}}z(a)}}Ha(function(){for(var a=y(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new uc(d);ja(d,c)}});
function xc(a){q.call(this,"RAM",a);this.sa=this.b=null;this.f=a.addr;this.g=a.size;this.Aa=a.load;this.ta=a.exec;this.c=!1;this.a=a.file;this.h=na(this.a);if(this.a){a=this.a;var b=oa(this.h);"json"!=b&&"hex"!=b&&(a=qa()+"/api/v1/dump?file="+this.a+"&format=bytes&decimal=true");var c=this;xa(a,null,!0,function(a,b,f){f?c.G("Unable to load RAM resource (error "+f+": "+a+")"):(aa(c.Ia,a,b),(a=ya(a,b))?(c.b=a.W,c.sa=a.sa,null==c.Aa&&(c.Aa=a.Aa),null==c.ta&&(c.ta=a.ta)):c.a=null,yc(c))})}}m(xc,q);
xc.prototype.qa=function(a,b,c,d){this.u=b;this.m=c;this.J=d;yc(this)};xc.prototype.ca=function(){return!0};xc.prototype.ba=function(){return!0};
function yc(a){!a.c&&a.g&&Wa(a.u,a.f,a.g,1)&&(a.c=!0);if(!ka(a)){if(!a.c)u("No RAM allocated");else if(a.a){if(!a.b||!a.u)return;var b=a.f;null!==a.Aa&&(b=a.Aa);for(var c=0;c<a.b.length;c++)cb(a.u,b+c,a.b[c]);if(null!==a.ta){if(a.ta==zc){for(c=0;c<Ac.length;c++)cb(a.u,Ac[c],118);Rb(a.m,function(a){return function(b){if(0<=Ac.indexOf(b)){var c=!1,d=a.m,e=a.J;if(b==Bc)switch(c=!0,d.c){case Cc:Dc(a,String.fromCharCode(d.f));break;case Ec:for(var l=Yb(d),n="",v=255;v--;){var A=M(a.m,l++);if(36==A)break;
n+=String.fromCharCode(A)}Dc(a,n);break;default:c=!1}c?nc.call(d):e&&(a.aa("\nCP/M vector "+B(b,4,!0)),F(d,b),Cb(e));b=!0}else b=!1;return b}}(a))}Tb(a.m,a.ta)}delete a.b}z(a)}}xc.prototype.reset=function(){};function Dc(a,b){b=b.replace(/\r/g,"");a.pa&&(a.pa.value+=b,a.pa.scrollTop=a.pa.scrollHeight)}var Bc=5,Cc=2,Ec=9,zc=256,Ac=[0,Bc];Ha(function(){for(var a=y(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new xc(d);ja(d,c)}});
function Fc(a){q.call(this,"Keyboard",a);(a=a.model)&&!Gc[a]&&ea("Unrecognized Keyboard8080 model: "+a);this.a=Gc[a]||{};this.reset();z(this)}m(Fc,q);k=Fc.prototype;
k.S=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.w[e]){if("led"==a&&this.a.Ja[b])return this.w[e]=c,!0;switch(b){case "kbd":case "screen":return c.onkeydown=function(a){return Hc(d,a,!0)},c.onkeyup=function(a){return Hc(d,a,!1)},c.onkeypress=function(a){a=a.keyCode;a>=p.Ua&&a<=p.ib?d.b&(Ic|Jc)||(d.b|=Jc,Kc(d,20,!0),Lc(d)):a>=p.Oc&&a<=p.z&&d.b&Jc&&(d.b&=~Jc,Kc(d,20,!1),Lc(d));return!0},c.onpaste=function(a){a:{if(d.g&&d.g.Ba&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),
a=a.clipboardData||window.clipboardData)){Mc(d.g,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.a.Ea&&void 0!==this.a.Ea[b])return this.w[e]=c,c.onclick=function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=17!=b;if(!e){c.style.fontWeight="normal";if(d=!(a.b&Nc))c.style.fontWeight="bold";Oc(a,b,d)}Kc(a,b,d,e);a.D&&Hb(a.D)}}(this,this.a.Ea[b]),!0}}return!1};
k.qa=function(a,b,c,d){this.D=a;this.m=c;this.J=d;var e=this;this.v=Ib(this.m,function(){Pc(e)});this.N=C(a,"ChipSet");this.g=C(a,"SerialPort");fb(b,this,this.a.bb);gb(b,this,this.a.cb)};k.ca=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ba=function(a){return a?this.save():!0};k.reset=function(){this.c=[];this.b=0;this.a.INIT&&!this.restore(this.a.INIT)&&this.G("reset error")};
k.save=function(){var a=new G(this);switch(this.a.Y){case X.Y:a.set(0,[this.l,this.j,this.h,this.o,-1])}return a.data()};k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.a.Y){case Qc.Y:return!0;case X.Y:return this.l=b[0],Lc(this,this.l&X.fa.ub),this.j=b[1],this.h=b[2],this.o=b[3],this.f=b[4],!0}return!1};
function Lc(a,b){var c;null!=b?a.s=b:b=a.s;for(var d in a.a.Ja)if(c="led-"+d,c=a.w[c]){var e=a.a.Ja[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+B(16711680,6):"#000000"}if(c=a.w["led-caps-lock"])c.style.backgroundColor=a.b&Jc?"#"+B(65280,6):"#000000"}function Oc(a,b,c,d){var e=0;switch(b){case 16:e=d?Rc:Sc;break;case 17:e=d?Tc:Nc;break;case 18:e=d?Uc:Vc;break;case 91:e=d?Wc:Yc;break;case 20:e=Jc}e&&(a.b=c?a.b|e:a.b&~e)}
function Hc(a,b,c){var d=!0,e=b.keyCode;Oc(a,e,c,2==b.location);var f;a:if(e=a.a.ob[e]||e,a.a.hb[e])f=e;else{for(f in a.a.Ea)if(a.a.Ea[f]===e)break a;f=null}f&&!b.metaKey&&(d=!1,a.b&(Zc|$c)&&(13==f?(f=118,d=!0):8==f&&(f=46,d=!0),d&&(a.b=c?a.b|$c:a.b&~$c)),d=Kc(a,f,c),(!(f>=p.Ua&&f<=p.ib)||a.b|ad)&&b.preventDefault&&b.preventDefault());return d}
function Kc(a,b,c,d){var e;a:{for(e=0;e<a.c.length;e++)if(a.c[e].nb==b)break a;e=-1}if(c)0>e?a.c.push({nb:b,lb:Date.now(),$a:d||!1}):(a.c[e].lb=Date.now(),a.c[e].$a=d||!1),d&&Pc(a);else if(0<=e){if(!a.c[e].$a&&(d=a.c[e].lb)&&Date.now()-d<bd)return a.c[e].$a=!0,Pc(a),!0;a.c.splice(e,1)}if(a.N){d=0;switch(b){case "1p":d=V.za.uc;break;case "2p":d=V.za.yc;break;case "coin":d=V.za.Vb;break;case "left":d=V.za.wc;break;case "right":d=V.za.xc;break;case "fire":d=V.za.vc}d&&(a=a.N,b=d,a.f&=~b,c&&(a.f|=b))}return!0}
function Pc(a){for(var b=0,c=-1;b<a.c.length;){if(a.c[b].$a){var d=a.c[b].nb,e=bd-(Date.now()-a.c[b].lb);if(0<e){if(0>c||c>e)c=e}else{Kc(a,d,!1);b=0;continue}}b++}0<=c&&Jb(a.m,a.v,c)}k.ad=function(){var a=this.j;0<=this.f&&(this.f<this.c.length?(a=this.c[this.f],this.f++,a=X.hb[a.nb],a&128&&(a&=127)):(this.f=-1,a=X.ic),this.j=a,kc(this.m,1));return a};k.od=function(a,b){this.l=b;this.h=!0;this.o=Gb(this.m);Lc(this,b&X.fa.ub);b&X.fa.Ec&&(this.f=0,kc(this.m,1))};
var Rc=1,Sc=2,Ic=3,Tc=4,Nc=8,ad=12,Uc=16,Vc=32,Zc=48,Wc=64,Yc=128,Jc=512,$c=4096,bd=50,cd={};cd[p.Ua]=37;cd[p.rb]=39;cd[p.tb]=32;
var Qc={Y:1978.1,hb:{},ob:cd,Ja:{},Ea:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},Z={},X={Y:100,hb:(Z[8]=3,Z[p.tc]=5,Z[p.sc]=6,Z[p.Nc]=7,Z[p.Hc]=8,Z[p.Kc]=9,Z[p.Q]=10,Z[39]=16,Z[221]=20,Z[219]=21,Z[p.$b]=22,Z[p.Ic]=23,Z[p.zc]=24,Z[p.E]=25,Z[49]=26,Z[37]=32,Z[40]=34,Z[117]=35,Z[19]=35,Z[192]=36,Z[189]=37,Z[57]=38,Z[55]=39,Z[52]=40,Z[51]=41,Z[27]=42,Z[38]=48,Z[114]=49,Z[112]=50,Z[46]=51,Z[187]=52,Z[48]=53,Z[56]=54,Z[54]=55,Z[53]=56,Z[50]=57,Z[9]=58,Z[103]=64,Z[115]=65,Z[113]=66,Z[96]=67,Z[118]=
68,Z[220]=69,Z[p.tb]=70,Z[p.hc]=71,Z[p.Yb]=72,Z[p.Xb]=73,Z[p.Ua]=74,Z[104]=80,Z[2013]=81,Z[98]=82,Z[97]=83,Z[222]=85,Z[186]=86,Z[p.gc]=87,Z[p.Zb]=88,Z[p.rb]=89,Z[p.Cc]=90,Z[110]=96,Z[116]=97,Z[101]=98,Z[100]=99,Z[13]=100,Z[190]=101,Z[188]=102,Z[p.pc]=103,Z[p.Sb]=104,Z[p.Mc]=105,Z[119]=106,Z[105]=112,Z[99]=113,Z[102]=114,Z[109]=115,Z[191]=117,Z[p.oc]=118,Z[p[" "]]=119,Z[p.Jc]=120,Z[p.Ub]=121,Z[p.ib]=122,Z[120]=123,Z[17]=124,Z[16]=125,Z[20]=126,Z),ob:{},Ja:{},Ea:{ctrl:17,esc:27,tab:9,"num-comma":116,
"break":117,"line-feed":118,"no-scroll":119,setup:120},Rb:{Z:130,INIT:127},fa:{Z:130,mc:1,lc:2,kc:4,jc:8,nc:16,vb:32,ub:63,Ec:64,Kd:128,INIT:0},ic:127};X.Ja={l4:X.fa.mc,l3:X.fa.lc,l2:X.fa.kc,l1:X.fa.jc,locked:X.fa.nc,local:X.fa.vb,online:~X.fa.vb,"caps-lock":Jc};var Gc={SI1978:Qc,VT100:X};X.INIT=[[X.fa.INIT,X.Rb.INIT,!1,0,-1]];X.bb={130:Fc.prototype.ad};X.cb={130:Fc.prototype.od};Ha(function(){for(var a=y(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Fc(d);ja(d,c)}});
function dd(a,b,c,d,e){q.call(this,"Video",a);var f=this;this.Da=Da("Gecko/");var g=["","moz","ms","webkit"];this.A=a.screenWidth;this.s=a.screenHeight;this.da=a.bufferAddr;this.Pc=a.bufferRAM;var h=a.bufferFormat;this.P=h&&ed[h.toUpperCase()]||fd;this.C=a.bufferCols;this.R=a.bufferRows;this.va=this.M=a.cellWidth||1;this.K=a.cellHeight||1;this.V=null;this.ya=!1;this.ea=a.bufferBits||1;this.Qc=a.bufferLeft||0;if(this.b=a.bufferRotate)this.b=this.b%360,0<this.b&&(this.b-=360),-90!=this.b&&(this.G("unsupported buffer rotation: "+
this.b),this.b=0);this.ha=a.interruptRate;this.Na=a.refreshRate||60;this.o=b;this.c=c;this.L=(this.Tc=d)||b||null;this.jb=this.A;this.Ob=this.s;this.wa=this.A/this.C|0;this.xa=this.s/this.R|0;1<this.K&&(this.R++,this.la=0,this.na=!1);b=a.smoothing;(c=Ea("smoothing"))&&(b="true"==c);if(null!=b)for(c=0;c<g.length;c++)if(d=(d=g[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.c[d]){this.c[d]=b;break}if(this.f=a.screenRotate)this.f=this.f%360,0<this.f&&(this.f-=360),-90!=this.f?(this.G("unsupported screen rotation: "+
this.f),this.f=0):(this.c.translate(0,this.s),this.c.rotate(this.f*Math.PI/180),this.c.scale(this.s/this.A,this.A/this.s));if(this.a=e)if(this.a.Ga=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.a.Ga){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){gd(f,!!(document.fullscreenElement||document.msFullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement))},!1);
break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){gd(f,null)},!1);break}}if(this.F=a.fontROM)"json"!=oa(this.F)&&(this.F=qa()+"/api/v1/dump?file="+this.F+"&format=bytes"),xa(this.F,null,!0,function(a,b,c){hd(f,a,b,c)});this.ra={}}m(dd,q);
function sc(a){a.j=a.C*a.M;a.B=a.R*a.K;var b=a.j,c=a.B;a.b&&(b=a.B,c=a.j);a.v=0;if(!a.Pc&&(a.v=(a.j*a.ea>>3)*a.B,!Wa(a.u,a.da,a.v,3)))return!1;a.v?(a.Fa=a.c.createImageData(b,c),a.La=16/a.ea|0,id(a,a.v>>1)):id(a,(a.C+1)*a.R);a.l=document.createElement("canvas");a.l.width=b;a.l.height=c;a.ma=a.l.getContext("2d");a.H={};a.O=1<<a.ea;a.I=Array(a.O+jd);a.I[0]=[0,0,0,255];a.I[1]=[255,255,255,255];a.P==kd&&(a.I[a.O+ld]=[255,255,0,255],a.I[a.O+md]=[0,255,0,255]);a.P==nd&&(a.Gb=60,a.oa=!1,a.X=Array(a.C));
return!0}k=dd.prototype;k.S=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.ra[b]=c,!0;switch(b){case "fullScreen":return this.w[b]=c,this.a&&this.a.Ga?c.onclick=function(){d.Ga()}:c.parentNode.removeChild(c),!0}return!1};
k.qa=function(a,b,c,d){this.D=a;this.u=b;this.m=c;this.J=d;sc(this);if(this.h=C(a,"Keyboard")){for(var e in this.ra)this.h.S("led",e,this.ra[e]);this.o&&this.h.S(this.Tc?"textarea":"canvas","screen",this.L)}var f=this;this.Oa=Ib(this.m,function(){Nb(f)});Jb(this.m,this.Oa,1E3/Math.max(this.Na,this.ha));this.Ma=0;this.F||z(this)};
function hd(a,b,c,d){if(d)a.G("Unable to load font ROM (error "+d+": "+b+")");else{aa(a.Ia,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.V=f,tc(a);else{a.G("Unrecognized font data length ("+f.length+")");return}}catch(g){a.G("Font ROM data error: "+g.message);return}(a.c||a.J)&&z(a)}}
function tc(a){a.V&&(a.ya=a.P==nd,a.H[od]=[pd(a,a.M,a.K),pd(a,a.M,a.K,a.oa)],a.H[qd]=[pd(a,2*a.M,a.K),pd(a,2*a.M,a.K,a.oa)],a.H[rd]=a.H[sd]=[pd(a,2*a.M,2*a.K),pd(a,2*a.M,2*a.K,a.oa)])}
function pd(a,b,c,d){var e=8>=a.va?8:16,f=8<e?15:0,g=a.V.length/e,h=!1===d,l={M:b,K:c};l.canvas=document.createElement("canvas");l.canvas.width=16*b;l.canvas.height=g/16*c;l.context=l.canvas.getContext("2d");for(var n=l.context.createImageData(b,c),v=0;v<g;v++){for(var A=0,K=A;A<a.K;A++)for(var x=v*e+(f+A&e-1),x=d&&8==A?255:a.V[x],t=0;t<c/a.K;t++){for(var E=0,T=0,Y=T;T<a.M;T++){for(var ca=x&128>>(7<T?7:T),E=a.ya&&!ca&&E?E:ca,ta=0;ta<b/a.M;ta++)h&&(E=!E),td(a,n,Y,K,E?1:0),Y++;E=ca}K++}l.context.putImageData(n,
(v&15)*b,(v>>4)*c)}return l}k.ca=function(a,b){return b||!a||this.restore(a)?!0:!1};k.ba=function(a){return!a||this.save()};k.save=function(){var a=new G(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};
k.Ga=function(){var a=!1;if(this.a){if(this.a.Ga){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.A/this.s;b>c&&(a=Math.round(c/b*100)+"%")}this.Da?(this.o.style.width=a,this.o.style.width=a,this.o.style.display="block",this.o.style.margin="auto"):(this.a.style.width=a,this.a.style.height="auto");this.a.style.backgroundColor="black";this.a.Ga();a=!0}this.L&&this.L.focus()}return a};
function gd(a,b){!b&&a.a&&(a.Da?a.o.style.width=a.o.style.height="":a.a.style.width=a.a.style.height="")}function id(a,b){a.Ka=b;a.N=!1;if(void 0===a.g||a.g.length!=a.Ka)a.g=Array(a.Ka)}function td(a,b,c,d,e){d=a.b?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.P==kd&&(208<=c&&236>c?e=a.O+ld:28<=c&&72>c&&(e=a.O+md));a=a.I[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function Nb(a,b){var c=!0;if(!b){a.ha&&(120==a.ha?a.Ma&1?(kc(a.m,2),c=!1):kc(a.m,1):kc(a.m,4));if(c&&a.N&&a.v){for(var d=a.u,e=a.v,f=!0,g=a.da>>>d.b;0<e&&g<d.a.length;)d.a[g].ja&&(d.a[g].ja=f=!1,d.a[g].Db=!0),e-=d.c,g++;f&&(c=!1)}Jb(a.m,a.Oa,1E3/Math.max(a.Na,a.ha));a.Ma++}if(c)if(1<a.M)switch(a.P){case nd:for(var c=a.da,d=-1,e=0,f=60==a.Gb?2:5,h=g=0,l=-1;e<a.R;){var n=0,v=c,A=d,K=a.C;for(A!=od&&(K>>=1);;){var x=ab(a.u,v++);if((x&ud)==ud){var t=ab(a.u,v++),d=t&vd,c=(t&wd)<<8|ab(a.u,v),c=c+(t&xd?yd:
zd);break}if(n<K)a.X[n++]=x;else break}if(f)f--;else{for(;n<a.X.length;)a.X[n++]=0;if(0<=A)for(v=a.N&&a.g[g]==K,a.g[g++]=K,K=0;K<n;K++){x=a.X[K];if(!v||x!==a.g[g]){a.g[l=g]=x;var t=a,E=a.ma,T=x&127;if(x=t.H[A][x&128?1:0]){var Y=(T&15)*x.M,T=(T>>4)*x.K,ca,ta,Ta,lb,Xc=x.M,Xb=x.K;E?(ca=K*t.M,ta=e*t.K,Ta=t.M,lb=t.K):(ca=K*t.wa,ta=e*t.xa,Ta=t.wa,lb=t.xa);x.M>t.M&&(ca*=2,Ta*=2);x.K>t.K&&(A==sd&&(T+=t.K),Xb=t.K);E?E.drawImage(x.canvas,Y,T,Xc,Xb,ca,ta,Ta,lb):(ca+=0,ta+=0,t.c.drawImage(x.canvas,Y,T,Xc,Xb,
ca,ta,Ta,lb))}h++}g++}e++}}a.N=!0;!b&&a.na&&1==h&&(a.g[l]=-1,h=0);a.na=!1;(h||b)&&a.ma&&a.c.drawImage(a.l,0,a.la,a.j,a.B-a.K,0,0,a.jb,a.Ob)}else{e=a.da;f=e+a.v;l=h=g=0;b=a.j;n=0;c=a.B;A=d=0;v=a.ea;K=(1<<v)-1;a.Qc&&(v=-v,A=16+v);for(;e<f;){t=a.u;E=e;x=E&t.f;Y=(E&t.g)>>>t.b;t=x!=t.f?t.a[Y].Jb(x,E):t.a[Y++].eb(x,E)|t.a[Y&t.o].eb(0,E+1)<<8;if(a.N&&t===a.g[g])h+=a.La;else{a.g[g]=t;(E=A)&&(t=t>>8|(t&255)<<8);h<b&&(b=h);for(x=a.La;x--;)Y=t>>E&K,td(a,a.Fa,h++,l,Y),E+=v;h>n&&(n=h);l<c&&(c=l);l>=d&&(d=l+1)}e+=
2;g++;if(h>=a.j&&(h=0,l++,l>a.B))break}a.N=!0;b<a.j&&(e=n-b,d-=c,a.b&&(f=b,g=e,b=c,e=d,c=a.j-(f+g),d=g),a.ma.putImageData(a.Fa,0,0,b,c,e,d),a.c.drawImage(a.l,0,0,a.l.width,a.l.height,0,0,a.A,a.s))}}var ld=0,md=1,jd=2,fd=0,kd=1,nd=2,ed={SI1978:kd,VT100:nd},od=96,qd=64,rd=32,sd=0,ud=127,wd=15,xd=16,vd=96,yd=8192,zd=16384;
Ha(function(){for(var a=y(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=w(c),e=document.createElement("canvas");if(!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<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Ea("aspect"));f&&.3<=f&&3.33>=f&&(Ga("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");Da("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new dd(d,e,g,f,c);ja(d,c)}});
function Ad(a){q.call(this,"SerialPort",a);this.H=+a.adapter;switch(this.H){case 0:this.I=0;this.O=2;break;default:u("Unrecognized serial adapter #"+this.H);return}this.b=this.c=null;this.L=a.tabSize;this.F=a.charBOL;this.f=0;this.B=!1;this.l=!0;var b=a.binding;if("console"==b)this.c="";else{var c;a=Bd;b&&(void 0===c&&(c="Panel"),(c=ia(c,this.id))&&(b=c.w[b])&&this.S(null,a,b))}this.g="";this.a=this.Ba=this.s=null;this.exports={connect:this.Fb,receiveData:this.mb,receiveStatus:this.yd}}m(Ad,q);
k=Ad.prototype;
k.S=function(a,b,c,d){var e=this;switch(b){case Bd:return this.w[b]=this.b=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),Cd(e,b);return!0},c.onkeypress=function(a){a=a||window.event;Cd(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.w[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.mb(d);return!0},
!0}return!1};k.qa=function(a,b,c,d){this.D=a;this.u=b;this.m=c;this.J=d;var e=this;this.P=Ib(this.m,function(){e.mb()});this.R=Ib(this.m,function(){Mc(e)});this.N=C(a,"ChipSet");fb(b,this,Dd,this.I);gb(b,this,Ed,this.I);z(this)};
k.Fb=function(a){if(!this.a){var b=yb(this.D,"connection");if(b){var c=b.split("->");if(2==c.length){var d=ua(c[0]);if(d!=this.Wa)return;c=ua(c[1]);if(this.a=ha(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.l);if(this.Ba=e.receiveData){this.l=a;this.s=e.receiveStatus;this.status("Connected "+this.Ia+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};
k.ca=function(a,b){if(!b)if(this.Fb(this.l),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.ba=function(a){return a?this.save():!0};k.reset=function(){Fd(this)};k.save=function(){var a=new G(this),b=0,c=[];c[b++]=this.o;c[b++]=this.A;c[b++]=this.C;c[b++]=this.T;c[b++]=this.h;c[b++]=this.j;c[b]=this.v;a.set(0,c);return a.data()};k.restore=function(a){return Fd(this,a[0])};
function Fd(a,b){var c=0;b||(b=Gd);a.o=b[c++];a.A=b[c++];a.C=b[c++];a.T=b[c++];a.h=b[c++];a.j=b[c++];a.v=b[c];return!0}function Hd(a,b){var c=a.v&b;b&15||(c>>=4);b=Id[c];c=((a.h&Jd)>>2)+6;a.h&Kd&&c++;c+=((a.h&Ld)>>6)+1>>1;return 1E3/Math.round(b/c)}function Cd(a,b){return a.B||a.T&Md?!1:(a.A=b,a.T|=Md,kc(a.m,a.O),!0)}
k.mb=function(a){null!=a&&(this.g="number"!=typeof a?a:this.g+String.fromCharCode(a));this.g&&(Cd(this,this.g.charCodeAt(0))&&(this.g=this.g.substr(1)),this.g&&this.m&&Jb(this.m,this.P,Hd(this,Nd)));return!0};k.yd=function(a){this.T&=~Od;a&64&&(this.T|=Od)};function Mc(a,b){a.T=a.T|rc|Pd;b&&a.Ba&&a.Ba.call(a.a,b)}k.Vc=function(){var a=this.A;this.T&=~Md;return a};k.Uc=function(){return this.T};
k.dd=function(a,b){this.C=b;this.T&=~(rc|Pd);if(19==b)this.B=!0;else if(17==b)this.B=!1;else if(this.Ba&&this.Ba.call(this.a,b),this.b)if(8==b)this.b.value=this.b.value.slice(0,-1),0<this.f&&this.f--;else{var c;13!=b&&10!=b&&(c=va[b]);a=c=c?"<"+c+">":String.fromCharCode(b);c=a.length;9==b?(b=this.L||8,c=b-this.f%b,this.L&&(a=" ".slice(0,c))):13==b&&(this.f=c=0,a="\n");this.F&&!this.f&&c&&(a=String.fromCharCode(this.F)+a);this.b.value+=a;this.b.scrollTop=this.b.scrollHeight;
this.f+=c}else if(null!=this.c){if(10==b||1024<=this.c.length)this.aa(this.c),this.c="";10!=b&&(this.c+=String.fromCharCode(b))}this.m&&Jb(this.m,this.R,Hd(this,Qd))};k.cd=function(a,b){this.o?(this.s&&(b^this.j)&(Rd|Sd)&&(a=0,this.l?(a|=b&Rd?32:0,a|=b&Sd?320:0):(a|=b&Rd?16:0,a|=b&Sd?1048576:0),this.s.call(this.a,a)),this.j=b,this.j&Td&&(this.o=!1)):(this.h=b,this.o=!0)};k.bd=function(a,b){this.v=b};
var Jd=12,Kd=16,Ld=192,Sd=2,Rd=32,Td=64,rc=1,Md=2,Pd=4,Od=128,Nd=15,Qd=240,Id=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Gd=[!1,0,0,133,142,39,238],Bd="buffer",Dd={0:Ad.prototype.Vc,1:Ad.prototype.Uc},Ed={0:Ad.prototype.dd,1:Ad.prototype.cd,2:Ad.prototype.bd};Ha(function(){for(var a=y(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Ad(d);ja(d,c)}});
function Ud(a,b,c){q.call(this,"Computer",a);this.i.U=!1;Vd(this,b);this.v=yb(this,"autoPower",a);this.c=0;this.H=a.busWidth||a.buswidth;this.a=Wd;this.o=null;this.j=this.C=!1;this.I=yb(this,"url")||"";(Math.random()+.1).toString(36);this.b=Xd(this);if(this.m=ia("CPU",this.id)){this.J=ia("Debugger",this.id);this.g=[];for(b=null;b=C(this,"Video",b);)this.g.push(b);this.u=new Ua({id:this.Ia+".bus",busWidth:this.H},this.m,this.J);var d,e=ga(this.id);if((this.h=ia("Panel",this.id))&&this.h.pa)for(b=0;b<
e.length;b++)d=e[b],d.G=this.h.G,d.aa=this.h.aa,d.pa=this.h.pa;this.aa("PC8080 v1.32.2\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.qa&&d.qa(this,this.u,this.m,this.J);b=null;d=yb(this,"resume",a);void 0!==d&&(1<d.length?b=this.l=d:this.a=parseInt(d,10));var f;if(a=yb(this,"state")||(f=!0,a.state))b=this.A=a,f||(this.j=!0,this.a=Wd),this.a&&(this.s=new G(this,"1.32.2"),Yd(this.s)?b=null:
delete this.s);!b&&this.a&&(b=Zd(this))&&(this.j=!0);if(b){var g=this;xa(b,null,!0,function(a,b,c){c?(g.l=null,g.j=!1,g.G("Unable to load machine state from server (error "+c+(b?": "+ua(b):"")+")")):(g.o=b,g.C=!0);z(g)})}else z(this);this.w.power||(this.v=!0);!c&&this.v&&$d(this,this.Ra)}else u("Unable to find CPU component")}m(Ud,q);function Vd(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){u(d.message+" ("+c+")")}}a.F=b}
function yb(a,b,c){var d=b.toLowerCase(),d=Ea(b)||Ea(d);void 0===d&&a.F&&(d=a.F[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function $d(a,b,c){for(var d=ga(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ka(f)){ka(f,function(){$d(a,b,c)});return}}b.call(a,c)}
function ae(a,b){var c=new G(a,"1.32.2",be);if(Yd(c)&&ce(c)){var d=c.get(de),e=b?b.get(de):"unknown";d!=e&&(a.G("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=Ud.prototype;
k.Ra=function(a){void 0===a&&(a=this.a||(this.o?ee:Wd));if(!this.c){this.c++;var b=!1,c=!1;this.B=!1;var d=this.s||new G(this,"1.32.2");if(a==fe)b=!0;else if(a>Wd){if(Yd(d,this.o)){this.f=new G(this,"1.32.2",ge);Yd(this.f)&&(he(this,d),a=ie,je(this.f));this.f.set(de,wa());ke(this.f);var e=this.a&&!this.j;if(a==ee||fa("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=ce(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Yd(d,g):("error"==f&&"no machine state"!=
g?(this.G("Error: "+g),"unable to verify user"==g&&(Ca(le,""),this.b=null)):this.aa(f+": "+g),je(d),Yd(d)?(c=ce(d),e=!0):c=!1))}e&&ae(this,c?d:null)}else a==ie&&d.clear()}else ae(this);delete this.o;delete this.s}e=ga(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.m&&(c=me(this,g,d,b,c));b=[d,a,c];a!=fe?$d(this,this.Cb,b):this.Cb(b)}};
function me(a,b,c,d,e){if(!b.i.U){b.i.U=!0;if(b.ca){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ca(f,d)&&f&&(u("Unable to restore state for "+b.type),a.A&&!a.C?(c.clear(),a.a=Wd,window&&window.location.reload()):a.B=!0,b.ca(null),e=!1)}if(!d&&b.Ab)for(a=b.Ab.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
k.Cb=function(a){var b=a[0],c=0>a[1];a=a[2];this.N=!0;this.i.U=!0;var d=this.w.power;d&&(d.textContent="Shutdown");this.m&&(me(this,this.m,b,c,a),this.m.Qa());this.B&&(he(this,b),b.clear());!c&&this.f&&(this.f.clear(),delete this.f);this.c=0};
function he(a,b){if(fa("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.b||"";b=b.toString();var d={app:"PC8080",ver:"1.32.2"};d.url=a.I;d.user=c;d.type="bug";d.data=b;xa("http://www.pcjs.org/api/v1/report",d,!0)}}
function ne(a,b,c){var d,e="none";if(a.c)return null;a.c--;var f=new G(a,"1.32.2"),g=new G(a,"1.32.2",be),h=wa();g.set(de,h);f.set(de,h);f.set(oe,"1.32.2");f.set(pe,window?window.location.href:null);f.set(qe,window?window.navigator.userAgent:"");a.m&&a.m.ba&&(c&&Cb(a.m),d=a.m.ba(b,c),"object"===typeof d&&f.set(a.m.id,d),c&&(a.m.i.U=!1,!1===d&&(e=null)));for(var h=ga(a.id),l=0;l<h.length;l++){var n=h[l];n.i.U&&(n.ba&&(d=n.ba(b,c),"object"===typeof d&&f.set(n.id,d)),c&&(n.i.U=!1,!1===d&&(e=null)))}e&&
(c?(h=d=!1,b?(a.b&&re(a,a.b,f.toString()),ke(g)&&ke(f)||(e=null,d=h=!0)):a.a&&(d=!0,h=a.a==se),d&&f.clear(h)):e=f.toString());c&&(a.i.U=!1,b=a.w.power)&&(b.textContent="Power");a.c=0;return e}k.reset=function(){this.u&&this.u.reset&&this.u.reset();for(var a=ga(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c.reset&&c.reset()}};k.start=function(a,b){for(var c=ga(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
k.stop=function(a,b){for(var c=ga(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
k.S=function(a,b,c){var d=this;switch(b){case "power":return this.w[b]=c,c.onclick=function(){d.c||(d.i.U?ne(d,!1,!0):$d(d,d.Ra))},!0;case "reset":return this.w[b]=c,c.onclick=function(){if(d.i.U&&!d.c)if(d.a&&!d.l){var a=fa("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");ne(d,a,!0);!a&&d.A?window&&window.location.reload():d.Ra(Wd)}else d.reset(),d.m&&d.m.Qa()},!0;case "save":if(pa())c.parentNode.removeChild(c);else return this.w[b]=
c,c.onclick=function(){var a=Xd(d,!0);if(a){var b=!!(d.a&&!d.l||d.A),c=ne(d,b);b?re(d,a,c):d.G("Resume disabled, machine state not saved")}},!0}return!1};function Xd(a,b){var c=a.b;c||((c=Ba(le),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=te(a,c))||a.G("The user ID is invalid.")):b&&a.G("Browser local storage is not available"));return c}
function te(a,b){a.b=null;b=xa(qa()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ca(le,b.data),a.b=b.data)}catch(d){u(d.message+" ("+c+")")}return a.b}function Zd(a){var b=null;a.b&&(b=qa()+"/api/v1/user?req=load&user="+a.b+"&state="+ue(a,"1.32.2"));return b}
function re(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=ue(a,"1.32.2");d.data=c;b=xa(qa()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.G("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.G(c),Ca(le,""),a.b=null)}}
function C(a,b,c){a=ga(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}function Hb(a,b){if(a.g.length){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a=a.g[0];a.L&&a.L.focus();!b&&window&&window.scrollTo(c,d)}}
function Lb(a,b){a.m&&(a=a.m,a.Ma&&(b||!a.i.ka||a.i.Bb)&&(S(a,"A",a.b),S(a,"B",a.g),S(a,"C",a.c),S(a,"BC",Vb(a),4),S(a,"D",a.h),S(a,"E",a.f),S(a,"DE",Yb(a),4),S(a,"H",a.j),S(a,"L",a.l),S(a,"HL",H(a),4),S(a,"SP",a.A,4),S(a,"PC",a.s,4),b=Ub(a),S(a,"PS",b,4),S(a,"IF",b&512?1:0,1),S(a,"SF",b&128?1:0,1),S(a,"ZF",b&64?1:0,1),S(a,"AF",b&16?1:0,1),S(a,"PF",b&4?1:0,1),S(a,"CF",b&1?1:0,1)),b=a.w.speed)&&(b.textContent=a.i.ka&&a.R?a.R.toFixed(2)+"Mhz":"Stopped")}
var ge="failsafe",be="validate",de="timestamp",oe="version",pe="url",qe="browser",le="user",fe=-1,Wd=0,ee=1,ie=2,se=3;Ha(function(){for(var a=y(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=w(c),c=y(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=w(f),g=new Ud(g,d,!0);ja(g,f);g.v&&$d(g,g.Ra)}});Ia.show.push(function(){for(var a=y(document,"pc8080","computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=ia("Computer",c.id))&&c.N&&!c.i.U&&c.Ra(fe)}});
Ia.exit.push(function(){for(var a=y(document,"pc8080","computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=ia("Computer",c.id))&&c.i.U&&ne(c,!(!c.a||c.l),!0)}});function G(a,b,c){this.id=a.id;this.J=a.J;this.b="";this.a={};this.m=this.u=!1;this.key=ue(a,b,c);je(this,a.Rc)}k=G.prototype;k.set=function(a,b){try{this.a[a]=b}catch(c){}};k.get=function(a){return this.a[a]||null};k.data=function(){return this.a};
function Yd(a,b){return b?(a.b=b,a.m=!0,a.u=!1,!0):a.m?!0:za()&&(b=Ba(a.key))?(a.b=b,a.m=!0):!1}function ce(a){var b=!0;if(!a.u)try{a.a=JSON.parse(a.b),a.u=!0}catch(c){u(c.message||c),b=!1}return b}function ke(a){var b=!0;if(za()){var c=JSON.stringify(a.a);Ca(a.key,c)||(u("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.a?JSON.stringify(this.a):this.b};function je(a,b){a.b="";a.a={};a.m=a.u=!1;b&&a.set("parms",b)}
k.clear=function(a){je(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function ue(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var ve=0;
function we(a,b,c,d,e,f){e("Loading "+a+"...");xa(a,null,!0,function(g,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),f(h,null)):xe(h,a,b,c,d,e,f)})}
function xe(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&(aa(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{",d+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PC8080$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(v){f=null,a=v.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,f)}}a?e?ye(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
this.a-=5},function(){N(this,H(this),this.g);this.a-=7},function(){N(this,H(this),this.c);this.a-=7},function(){N(this,H(this),this.h);this.a-=7},function(){N(this,H(this),this.f);this.a-=7},function(){N(this,H(this),this.j);this.a-=7},function(){N(this,H(this),this.l);this.a-=7},function(){var a=this.s-1;if(this.ra.length)for(var b=0;b<this.ra.length;b++)if(this.ra[b](a))return;this.a-=7;this.C|=256;Mb(this);this.F&512||Eb(this)},function(){N(this,H(this),this.b);this.a-=7},function(){this.b=this.g;
this.a-=5},function(){this.b=this.c;this.a-=5},function(){this.b=this.h;this.a-=5},function(){this.b=this.f;this.a-=5},function(){this.b=this.j;this.a-=5},function(){this.b=this.l;this.a-=5},function(){this.b=M(this,H(this));this.a-=7},function(){this.a-=5},function(){this.b=dc(this,this.g);this.a-=4},function(){this.b=dc(this,this.c);this.a-=4},function(){this.b=dc(this,this.h);this.a-=4},function(){this.b=dc(this,this.f);this.a-=4},function(){this.b=dc(this,this.j);this.a-=4},function(){this.b=
dc(this,this.l);this.a-=4},function(){this.b=dc(this,M(this,H(this)));this.a-=7},function(){this.b=dc(this,this.b);this.a-=4},function(){this.b=ec(this,this.g);this.a-=4},function(){this.b=ec(this,this.c);this.a-=4},function(){this.b=ec(this,this.h);this.a-=4},function(){this.b=ec(this,this.f);this.a-=4},function(){this.b=ec(this,this.j);this.a-=4},function(){this.b=ec(this,this.l);this.a-=4},function(){this.b=ec(this,M(this,H(this)));this.a-=7},function(){this.b=ec(this,this.b);this.a-=4},function(){this.b=
K(this,this.g);this.a-=4},function(){this.b=K(this,this.c);this.a-=4},function(){this.b=K(this,this.h);this.a-=4},function(){this.b=K(this,this.f);this.a-=4},function(){this.b=K(this,this.j);this.a-=4},function(){this.b=K(this,this.l);this.a-=4},function(){this.b=K(this,M(this,H(this)));this.a-=7},function(){this.b=K(this,this.b);this.a-=4},function(){this.b=jc(this,this.g);this.a-=4},function(){this.b=jc(this,this.c);this.a-=4},function(){this.b=jc(this,this.h);this.a-=4},function(){this.b=jc(this,
this.f);this.a-=4},function(){this.b=jc(this,this.j);this.a-=4},function(){this.b=jc(this,this.l);this.a-=4},function(){this.b=jc(this,M(this,H(this)));this.a-=7},function(){this.b=jc(this,this.b);this.a-=4},function(){this.b=fc(this,this.g);this.a-=4},function(){this.b=fc(this,this.c);this.a-=4},function(){this.b=fc(this,this.h);this.a-=4},function(){this.b=fc(this,this.f);this.a-=4},function(){this.b=fc(this,this.j);this.a-=4},function(){this.b=fc(this,this.l);this.a-=4},function(){this.b=fc(this,
M(this,H(this)));this.a-=7},function(){this.b=fc(this,this.b);this.a-=4},function(){this.b=kc(this,this.g);this.a-=4},function(){this.b=kc(this,this.c);this.a-=4},function(){this.b=kc(this,this.h);this.a-=4},function(){this.b=kc(this,this.f);this.a-=4},function(){this.b=kc(this,this.j);this.a-=4},function(){this.b=kc(this,this.l);this.a-=4},function(){this.b=kc(this,M(this,H(this)));this.a-=7},function(){this.b=kc(this,this.b);this.a-=4},function(){this.b=ic(this,this.g);this.a-=4},function(){this.b=
ic(this,this.c);this.a-=4},function(){this.b=ic(this,this.h);this.a-=4},function(){this.b=ic(this,this.f);this.a-=4},function(){this.b=ic(this,this.j);this.a-=4},function(){this.b=ic(this,this.l);this.a-=4},function(){this.b=ic(this,M(this,H(this)));this.a-=7},function(){this.b=ic(this,this.b);this.a-=4},function(){K(this,this.g);this.a-=4},function(){K(this,this.c);this.a-=4},function(){K(this,this.h);this.a-=4},function(){K(this,this.f);this.a-=4},function(){K(this,this.j);this.a-=4},function(){K(this,
this.l);this.a-=4},function(){K(this,M(this,H(this)));this.a-=7},function(){K(this,this.b);this.a-=4},function(){this.o&255&&(E(this,Q(this)),this.a-=6);this.a-=5},function(){Yb(this,Q(this));this.a-=10},function(){var a=P(this);this.o&255&&E(this,a);this.a-=10},oc,function(){var a=P(this);this.o&255&&(R(this,this.s),E(this,a),this.a-=6);this.a-=11},function(){R(this,Xb(this));this.a-=11},function(){this.b=dc(this,O(this));this.a-=7},function(){R(this,this.s);E(this,0);this.a-=11},function(){this.o&
255||(E(this,Q(this)),this.a-=6);this.a-=5},pc,function(){var a=P(this);this.o&255||E(this,a);this.a-=10},oc,function(){var a=P(this);this.o&255||(R(this,this.s),E(this,a),this.a-=6);this.a-=11},qc,function(){this.b=ec(this,O(this));this.a-=7},function(){R(this,this.s);E(this,8);this.a-=11},function(){J(this)||(E(this,Q(this)),this.a-=6);this.a-=5},function(){ac(this,Q(this));this.a-=10},function(){var a=P(this);J(this)||E(this,a);this.a-=10},function(){for(var a=O(this),b=this.u,c=this.b,d=this.s+
-2&65535,e=1,f=0;0<e;){var g=b.l[a],k=b.C[a]||1,m=1==k?255:2==k?65535:-1,m=(c>>>=f)&m;if(void 0!==g&&g[0])g[0](a,m,d);f+=k<<3;a+=k;e-=k}this.a-=10},function(){var a=P(this);J(this)||(R(this,this.s),E(this,a),this.a-=6);this.a-=11},function(){R(this,$b(this));this.a-=11},function(){this.b=K(this,O(this));this.a-=7},function(){R(this,this.s);E(this,16);this.a-=11},function(){J(this)&&(E(this,Q(this)),this.a-=6);this.a-=5},pc,function(){var a=P(this);J(this)&&E(this,a);this.a-=10},function(){for(var a=
O(this),b=this.u,c=this.s+-2&65535,d=1,e=0,f=0;0<d;){var g=b.j[a],k=b.B[a]||1,m=1==k?255:2==k?65535:-1,q=m;void 0!==g&&g[0]&&(q=g[0](a,c),void 0===q?q=m:q&=m);e|=q<<f;f+=k<<3;a+=k;d-=k}this.b=e&255;this.a-=10},function(){var a=P(this);J(this)&&(R(this,this.s),E(this,a),this.a-=6);this.a-=11},qc,function(){this.b=jc(this,O(this));this.a-=7},function(){R(this,this.s);E(this,24);this.a-=11},function(){cc(this)||(E(this,Q(this)),this.a-=6);this.a-=5},function(){I(this,Q(this));this.a-=10},function(){var a=
P(this);cc(this)||E(this,a);this.a-=10},function(){var a=Q(this);R(this,H(this));I(this,a);this.a-=18},function(){var a=P(this);cc(this)||(R(this,this.s),E(this,a),this.a-=6);this.a-=11},function(){R(this,H(this));this.a-=11},function(){this.b=fc(this,O(this));this.a-=7},function(){R(this,this.s);E(this,32);this.a-=11},function(){cc(this)&&(E(this,Q(this)),this.a-=6);this.a-=5},function(){E(this,H(this));this.a-=5},function(){var a=P(this);cc(this)&&E(this,a);this.a-=10},function(){var a=H(this);
I(this,$b(this));ac(this,a);this.a-=5},function(){var a=P(this);cc(this)&&(R(this,this.s),E(this,a),this.a-=6);this.a-=11},qc,function(){this.b=kc(this,O(this));this.a-=7},function(){R(this,this.s);E(this,40);this.a-=11},function(){this.v&128||(E(this,Q(this)),this.a-=6);this.a-=5},function(){var a=Q(this);Ub(this,a&255|this.F&-256);this.b=a>>8;this.a-=10},function(){var a=P(this);this.v&128||E(this,a);this.a-=10},function(){this.F&=-513;this.a-=4},function(){var a=P(this);this.v&128||(R(this,this.s),
E(this,a),this.a-=6);this.a-=11},function(){R(this,Wb(this)&255|this.b<<8);this.a-=11},function(){this.b=ic(this,O(this));this.a-=7},function(){R(this,this.s);E(this,48);this.a-=11},function(){this.v&128&&(E(this,Q(this)),this.a-=6);this.a-=5},function(){this.A=H(this)&65535;this.a-=5},function(){var a=P(this);this.v&128&&E(this,a);this.a-=10},function(){this.F|=512;this.a-=4;lc(this)},function(){var a=P(this);this.v&128&&(R(this,this.s),E(this,a),this.a-=6);this.a-=11},qc,function(){K(this,O(this));
this.a-=7},function(){R(this,this.s);E(this,56);this.a-=11}];function T(a){r.call(this,"ChipSet",a);var b=a.model;b&&!rc[b]&&fa("Unrecognized ChipSet model: "+b);this.b=rc[b]||{};a.sound&&(this.I=null,window&&(this.I=window.AudioContext||window.webkitAudioContext),this.I&&new this.I);A(this)}l(T,r);h=T.prototype;h.S=function(){return!1};
h.qa=function(a,b,c,d){this.u=b;this.m=c;this.J=d;this.D=a;this.h=Ta(a,"Keyboard");this.g=Ta(a,"SerialPort");this.video=Ta(a,"Video");hb(b,this,this.b.fb);ib(b,this,this.b.gb)};h.ca=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};h.ba=function(a){return a?this.save():!0};h.reset=function(){this.b.INIT&&!this.restore(this.b.INIT)&&this.G("reset error")};
h.save=function(){var a=new G(this);switch(this.b.Y){case U.Y:a.set(0,[this.V,this.f,this.X,this.B,this.H,this.P,this.R]);break;case W.Y:a.set(0,[this.N,this.s]),a.set(1,[this.l,this.o]),a.set(2,[this.c,this.C,this.O,this.L]),a.set(3,[this.A,this.a,this.v,this.F,this.j])}return a.data()};
h.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.Y){case U.Y:return this.V=b[0],this.f=b[1],this.X=b[2],this.B=b[3],this.H=b[4],this.P=b[5],this.R=b[6],!0;case W.Y:return this.N=b[0],this.s=b[1],b=a[1],this.l=b[0],this.o=b[1],b=a[2],this.c=b[0],this.C=b[1],this.O=b[2],this.L=b[3],b=a[3],this.A=b[0],this.a=b[1],this.v=b[2],this.F=b[3],this.j=b[4],!0}return!1};h.start=function(){};h.stop=function(){};h.dd=function(){return this.V};h.ed=function(){return this.f};h.fd=function(){return this.X};
h.cd=function(){return this.B>>8-this.H&255};h.qd=function(a,b){this.H=b};h.sd=function(a,b){this.P=b};h.rd=function(a,b){this.B=b<<8|this.B>>8};h.td=function(a,b){this.R=b};h.ud=function(){};function sc(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}
h.gd=function(){var a=this.s,a=a&~W.ga.Hb;if((Ib(this.m)&64)<<1&&(a|=W.ga.Hb,a!=this.s)){var b,c;b=this.v&1;switch(this.v>>1&7){case W.ia.Ca.kc:this.A=this.A<<1|b;break;case W.ia.Ca.pc:b=sc(this);this.j[b]=W.ia.Za;break;case W.ia.Ca.lc:this.a=this.a<<1|b;break;case W.ia.Ca.Pc:b=sc(this);c=this.a&W.ia.Za;this.j[b]=c;break;case W.ia.Ca.Kc:b=sc(this);c=this.j[b];null==c&&(c=W.ia.Za);this.a=c;break;case W.ia.Ca.Lc:this.a<<=1,this.F=this.a&W.ia.Za+1}}a&=~W.ga.Ib;this.F&&(a|=W.ga.Ib);a&=~W.ga.Cb;if(b=this.h){b=
this.h;if(c=b.h)c=b.m,c=Ib(b.m)>=b.o+c.na*c.O/1E3*1.2731488;c&&(b.h=!1);b=!b.h}b&&(a|=W.ga.Cb);a&=~W.ga.Qb;this.g&&this.g.T&tc&&(a|=W.ga.Qb);return this.s=a};h.vd=function(a,b){this.N=b};h.yd=function(a,b){this.v=b};h.xd=function(a,b){a=b&3;switch(b>>2&3){case 0:this.c=this.c&-4|a;break;case 1:this.c=this.c&-13|a<<2;this.video&&(b=this.video,a=this.c,b.la!==a&&((b.la=a)?Pb(b,!0):b.na=!0));break;case 2:switch(a){case 0:this.C=~this.C;break;case 2:case 3:this.O=3-a}break;case 3:this.L=a}};
h.wd=function(a,b){b&W.ua.Jc?(b&=W.ua.Mb,this.o!=b&&(this.o=b,this.video&&(this.video.bc=this.o==W.ua.Mb?50:60))):(b&=W.ua.ub,this.l!=b&&(this.l=b,this.video&&(a=this.video,b=this.l==W.ua.ub?132:80,a.C=b,a.M=a.va,80<b&&a.M--,uc(a)&&vc(a))))};
var U={Y:1978.1,Nc:{Z:0,Ce:1,Ge:16,Ne:32,We:64,Ve:128,Ja:14},za:{Z:1,oc:1,Ic:2,Ec:4,Fc:16,Gc:32,Hc:64,Ja:8},Oc:{Z:2,Be:3,ef:4,De:8,Re:16,Se:32,Te:64,Ee:128,Ja:0},$e:{Z:3},Ye:{Z:2,Oe:7},bf:{Z:3,ff:1,af:2,Ue:4,Le:8,Fe:16,Xd:32},Ze:{Z:4},cf:{Z:5,He:1,Ie:2,Je:4,Ke:8,gf:16}},W={Y:100,ga:{Z:66,Qb:1,Cc:2,Dc:4,Qe:8,Pe:16,Ib:32,Hb:64,Cb:128},nc:{Z:66,INIT:0},ua:{Z:194,$d:0,ub:16,Jc:32,Mb:48,sc:0,tc:32},Xa:{Z:162,Xe:0,vc:0,rc:0,uc:0,qc:0},ia:{Me:{Z:98},Ca:{lc:0,kc:1,Lc:2,Pc:4,pc:5,Kc:6,df:7},Za:16383}},rc=
{SI1978:U,VT100:W};U.INIT=[[U.Nc.Ja,U.za.Ja,U.Oc.Ja,0,0,0,0]];
W.INIT=[[W.nc.INIT,W.ga.Cc|W.ga.Dc],[W.ua.sc,W.ua.tc],[W.Xa.vc,W.Xa.rc,W.Xa.uc,W.Xa.qc],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];U.fb={0:T.prototype.dd,1:T.prototype.ed,2:T.prototype.fd,3:T.prototype.cd};
U.gb={2:T.prototype.qd,3:T.prototype.sd,4:T.prototype.rd,5:T.prototype.td,6:T.prototype.ud};W.fb={66:T.prototype.gd};W.gb={66:T.prototype.vd,98:T.prototype.yd,162:T.prototype.xd,194:T.prototype.wd};Ia(function(){for(var a=z(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new T(d);ka(d,c)}});
function wc(a){r.call(this,"ROM",a);this.a=null;this.g=a.addr;this.b=a.size;this.f=a.alias;this.c=a.file;this.h=oa(this.c);if(this.c){a=this.c;var b=pa(this.h);"json"!=b&&"hex"!=b&&(a=ra()+"/api/v1/dump?file="+this.c+"&format=bytes&decimal=true");var c=this;ya(a,null,!0,function(a,b,f){xc(c,a,b,f)})}}l(wc,r);wc.prototype.qa=function(a,b,c,d){this.u=b;this.m=c;this.J=d;yc(this)};wc.prototype.ca=function(){this.sa&&(this.J&&this.J.a(this.id,this.g,this.b,this.sa),delete this.sa);return!0};
wc.prototype.ba=function(){return!0};
function xc(a,b,c,d){if(d)a.G("Unable to load system ROM (error "+d+": "+b+")");else{ba(a.Ka,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.data;if(f)a.a=f;else if(g)for(a.a=Array(4*g.length),d=c=0;c<g.length;c++)a.a[d++]=g[c]&255,a.a[d++]=g[c]>>8&255,a.a[d++]=g[c]>>16&255,a.a[d++]=g[c]>>24&255;else a.a=e;a.sa=e.symbols;if(!a.a.length){u("Empty ROM: "+b);return}if(1==a.a.length){u(a.a[0]);return}}catch(k){a.G("ROM data error: "+k.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]=na(b[e]);yc(a)}}
function yc(a){if(!la(a))if(!a.c)A(a);else if(a.a&&a.u){a.b||(a.b=a.a.length);if(a.a.length!=a.b){var b="ROM size ("+C(a.a.length,8,!0)+") does not match specified size ("+C(a.b,8,!0)+")";a.i.error=!0;a.G(b)}else{b=a.g;if(Ya(a.u,b,a.b,pb)){var c;for(c=0;c<a.a.length;c++)eb(a.u,b+c,a.a[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.u,g=d.b,k=[],m=d.g>>>f.b;0<g&&m<f.a.length;)k.push(f.a[m++]),g-=f.c;f=d.u;
d=d.b;g=0;for(e>>>=f.b;0<d&&e<f.a.length;){m=k[g++];if(!m)break;f.a[e++]=m;d-=f.c}}delete a.a}}A(a)}}Ia(function(){for(var a=z(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new wc(d);ka(d,c)}});
function zc(a){r.call(this,"RAM",a);this.sa=this.b=null;this.f=a.addr;this.g=a.size;this.Aa=a.load;this.ta=a.exec;this.c=!1;this.a=a.file;this.h=oa(this.a);if(this.a){a=this.a;var b=pa(this.h);"json"!=b&&"hex"!=b&&(a=ra()+"/api/v1/dump?file="+this.a+"&format=bytes&decimal=true");var c=this;ya(a,null,!0,function(a,b,f){f?c.G("Unable to load RAM resource (error "+f+": "+a+")"):(ba(c.Ka,a,b),(a=za(a,b))?(c.b=a.W,c.sa=a.sa,null==c.Aa&&(c.Aa=a.Aa),null==c.ta&&(c.ta=a.ta)):c.a=null,Ac(c))})}}l(zc,r);
zc.prototype.qa=function(a,b,c,d){this.u=b;this.m=c;this.J=d;Ac(this)};zc.prototype.ca=function(){return!0};zc.prototype.ba=function(){return!0};
function Ac(a){!a.c&&a.g&&Ya(a.u,a.f,a.g,1)&&(a.c=!0);if(!la(a)){if(!a.c)u("No RAM allocated");else if(a.a){if(!a.b||!a.u)return;var b=a.f;null!==a.Aa&&(b=a.Aa);for(var c=0;c<a.b.length;c++)eb(a.u,b+c,a.b[c]);if(null!==a.ta){if(a.ta==Bc){for(c=0;c<Cc.length;c++)eb(a.u,Cc[c],118);Tb(a.m,function(a){return function(b){if(0<=Cc.indexOf(b)){var c=!1,d=a.m,e=a.J;if(b==Dc)switch(c=!0,d.c){case Ec:Fc(a,String.fromCharCode(d.f));break;case Gc:for(var m=$b(d),q="",w=255;w--;){var B=M(a.m,m++);if(36==B)break;
q+=String.fromCharCode(B)}Fc(a,q);break;default:c=!1}c?pc.call(d):e&&(a.aa("\nCP/M vector "+C(b,4,!0)),E(d,b),Eb(e));b=!0}else b=!1;return b}}(a))}Vb(a.m,a.ta)}delete a.b}A(a)}}zc.prototype.reset=function(){};function Fc(a,b){b=b.replace(/\r/g,"");a.pa&&(a.pa.value+=b,a.pa.scrollTop=a.pa.scrollHeight)}var Dc=5,Ec=2,Gc=9,Bc=256,Cc=[0,Dc];Ia(function(){for(var a=z(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new zc(d);ka(d,c)}});
function Hc(a){r.call(this,"Keyboard",a);(a=a.model)&&!Ic[a]&&fa("Unrecognized Keyboard8080 model: "+a);this.a=Ic[a]||{};this.reset();A(this)}l(Hc,r);h=Hc.prototype;
h.S=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.w[e]){if("led"==a&&this.a.La[b])return this.w[e]=c,!0;switch(b){case "kbd":case "screen":return Ea("iOS")?(c.onkeypress=function(a){var b=!1;if(a=d.a.Wa[a.keyCode||a.charCode]){a&128&&(a&=127,b=!0);var c;a:{for(c in d.a.Da)if(d.a.Da[c]==a){c=+c;break a}c=0}c&&(b?Jc(d,16,!0,!0):Jc(d,16,!1),Jc(d,c,!0,!0))}return!0},c.onkeydown=function(a){return Kc(d,a,!0)},c.onkeyup=function(a){return Kc(d,a,!1)}):(c.onkeydown=function(a){return Lc(d,a,!0)},
c.onkeyup=function(a){return Lc(d,a,!1)},c.onkeypress=function(a){a=a.keyCode||a.charCode;a>=n.Ia&&a<=n.$a?d.b&(Mc|Nc)||(d.b|=Nc,Jc(d,20,!0),Oc(d)):a>=n.Wb&&a<=n.z&&d.b&Nc&&(d.b&=~Nc,Jc(d,20,!1),Oc(d));return!0}),c.onpaste=function(a){a:{if(d.g&&d.g.Ba&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a=a.clipboardData||window.clipboardData)){Pc(d.g,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.a.Fa&&void 0!==this.a.Fa[b])return this.w[e]=c,c.onclick=
function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=17!=b;if(!e){c.style.fontWeight="normal";if(d=!(a.b&Qc))c.style.fontWeight="bold";Rc(a,b,d)}Jc(a,b,d,e);a.D&&Jb(a.D)}}(this,this.a.Fa[b]),!0}}return!1};h.qa=function(a,b,c,d){this.D=a;this.m=c;this.J=d;var e=this;this.v=Kb(this.m,function(){Sc(e)});this.N=Ta(a,"ChipSet");this.g=Ta(a,"SerialPort");hb(b,this,this.a.fb);ib(b,this,this.a.gb)};h.ca=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};
h.ba=function(a){return a?this.save():!0};h.reset=function(){this.c=[];this.b=0;this.a.INIT&&!this.restore(this.a.INIT)&&this.G("reset error")};h.save=function(){var a=new G(this);switch(this.a.Y){case X.Y:a.set(0,[this.l,this.j,this.h,this.o,-1])}return a.data()};h.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.a.Y){case Tc.Y:return!0;case X.Y:return this.l=b[0],Oc(this,this.l&X.fa.Db),this.j=b[1],this.h=b[2],this.o=b[3],this.f=b[4],!0}return!1};
function Oc(a,b){var c;null!=b?a.s=b:b=a.s;for(var d in a.a.La)if(c="led-"+d,c=a.w[c]){var e=a.a.La[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+C(16711680,6):"#000000"}if(c=a.w["led-caps-lock"])c.style.backgroundColor=a.b&Nc?"#"+C(65280,6):"#000000"}function Rc(a,b,c,d){var e=0;switch(b){case 16:e=d?Uc:Vc;break;case 17:e=d?Wc:Qc;break;case 18:e=d?Xc:Yc;break;case 91:e=d?Zc:ad;break;case 20:e=Nc,c=!(a.b&e)}e&&(a.b=c?a.b|e:a.b&~e);return c}
function Lc(a,b,c){var d=!0,e=b.keyCode,e=p[e]||e;c=Rc(a,e,c,2==b.location);var f;a:if(e=a.a.rb[e]||e,a.a.Da[e])f=e;else{for(f in a.a.Fa)if(a.a.Fa[f]===e)break a;f=null}f&&!b.metaKey&&(d=!1,a.b&(bd|cd)&&(13==f?(f=118,d=!0):8==f&&(f=46,d=!0),d&&(a.b=c?a.b|cd:a.b&~cd)),d=Jc(a,f,c),(!(f>=n.Ia&&f<=n.$a)||a.b|dd)&&b.preventDefault&&b.preventDefault());return d}
function Kc(a,b,c){var d=!0;if(c){b=b.keyCode;var e=a.a.Da[b];if(e){var f;a:{for(f in a.a.Wa)if(a.a.Wa[f]==e){f=+f;break a}f=0}f||(d=Jc(a,b,c,!0))}}return d}
function Jc(a,b,c,d){var e;a:{for(e=0;e<a.c.length;e++)if(a.c[e].qb==b)break a;e=-1}if(c)0>e?a.c.push({qb:b,ob:Date.now(),cb:d||!1}):(a.c[e].ob=Date.now(),a.c[e].cb=d||!1),d&&Sc(a);else if(0<=e){if(!a.c[e].cb&&(d=a.c[e].ob)&&Date.now()-d<ed)return a.c[e].cb=!0,Sc(a),!0;a.c.splice(e,1)}if(a.N){d=0;switch(b){case "1p":d=U.za.Ec;break;case "2p":d=U.za.Ic;break;case "coin":d=U.za.oc;break;case "left":d=U.za.Gc;break;case "right":d=U.za.Hc;break;case "fire":d=U.za.Fc}d&&(a=a.N,b=d,a.f&=~b,c&&(a.f|=b))}return!0}
function Sc(a){for(var b=0,c=-1;b<a.c.length;){if(a.c[b].cb){var d=a.c[b].qb,e=ed-(Date.now()-a.c[b].ob);if(0<e){if(0>c||c>e)c=e}else{Jc(a,d,!1);b=0;continue}}b++}0<=c&&Lb(a.m,a.v,c)}h.hd=function(){var a=this.j;0<=this.f&&(this.f<this.c.length?(a=this.c[this.f],this.f++,a=X.Da[a.qb],a&128&&(a&=127)):(this.f=-1,a=X.wc),this.j=a,mc(this.m,1));return a};h.zd=function(a,b){this.l=b;this.h=!0;this.o=Ib(this.m);Oc(this,b&X.fa.Db);b&X.fa.Mc&&(this.f=0,mc(this.m,1))};
var Uc=1,Vc=2,Mc=3,Wc=4,Qc=8,dd=12,Xc=16,Yc=32,bd=48,Zc=64,ad=128,Nc=512,cd=4096,ed=50,fd={};fd[n.Ia]=37;fd[n.kb]=39;fd[n.lb]=32;
var Tc={Y:1978.1,Da:{},Wa:{},rb:fd,La:{},Fa:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},Y={},Z={},X={Y:100,Da:(Y[8]=3,Y[n.Kb]=5,Y[n.Jb]=6,Y[n.Vb]=7,Y[n.Ob]=8,Y[n.Sb]=9,Y[n.Q]=10,Y[39]=16,Y[221]=20,Y[219]=21,Y[n.zb]=22,Y[n.Pb]=23,Y[n.Lb]=24,Y[n.E]=25,Y[49]=26,Y[37]=32,Y[40]=34,Y[117]=35,Y[19]=35,Y[192]=36,Y[189]=37,Y[57]=38,Y[55]=39,Y[52]=40,Y[51]=41,Y[27]=42,Y[38]=48,Y[114]=49,Y[112]=50,Y[46]=51,Y[187]=52,Y[48]=53,Y[56]=54,Y[54]=55,Y[53]=56,Y[50]=57,Y[9]=58,Y[103]=64,Y[115]=65,Y[113]=66,Y[96]=
67,Y[118]=68,Y[220]=69,Y[n.lb]=70,Y[n.Bb]=71,Y[n.xb]=72,Y[n.wb]=73,Y[n.Ia]=74,Y[104]=80,Y[2013]=81,Y[98]=82,Y[97]=83,Y[222]=85,Y[186]=86,Y[n.Ab]=87,Y[n.yb]=88,Y[n.kb]=89,Y[n.Nb]=90,Y[110]=96,Y[116]=97,Y[101]=98,Y[100]=99,Y[13]=100,Y[190]=101,Y[188]=102,Y[n.Gb]=103,Y[n.sb]=104,Y[n.Ub]=105,Y[119]=106,Y[105]=112,Y[99]=113,Y[102]=114,Y[109]=115,Y[191]=117,Y[n.Fb]=118,Y[n[" "]]=119,Y[n.Rb]=120,Y[n.tb]=121,Y[n.$a]=122,Y[120]=123,Y[17]=124,Y[16]=125,Y[20]=126,Y),Wa:(Z[n.p]=5,Z[n.md]=6,Z[n.y]=7,Z[n.t]=8,
Z[n.Nd]=9,Z[n.q]=10,Z[n["]"]]=20,Z[n["["]]=21,Z[n.$c]=22,Z[n.Ld]=23,Z[n.r]=24,Z[n.e]=25,Z[n["1"]]=26,Z[n["`"]]=36,Z[n["-"]]=37,Z[n["9"]]=38,Z[n["7"]]=39,Z[n["4"]]=40,Z[n["3"]]=41,Z[n["="]]=52,Z[n["0"]]=53,Z[n["8"]]=54,Z[n["6"]]=55,Z[n["5"]]=56,Z[n["2"]]=57,Z[n["\\"]]=69,Z[n.kd]=70,Z[n.k]=71,Z[n.Yc]=72,Z[n.Xc]=73,Z[n.Wb]=74,Z[n["'"]]=85,Z[n[";"]]=86,Z[n.jd]=87,Z[n.Zc]=88,Z[n.d]=89,Z[n.Kd]=90,Z[13]=100,Z[n["."]]=101,Z[n[","]]=102,Z[n.n]=103,Z[n.Rc]=104,Z[n.x]=105,Z[n["/"]]=117,Z[n.ld]=118,Z[n[" "]]=
119,Z[n.Md]=120,Z[n.Tc]=121,Z[n.z]=122,Z[n.Kb]=133,Z[n.Jb]=134,Z[n.Vb]=135,Z[n.Ob]=136,Z[n.Sb]=137,Z[n.Q]=138,Z[n["}"]]=148,Z[n["{"]]=149,Z[n.zb]=150,Z[n.Pb]=151,Z[n.Lb]=152,Z[n.E]=153,Z[n["!"]]=154,Z[n["~"]]=164,Z[n._]=165,Z[n["("]]=166,Z[n["&"]]=167,Z[n.$]=168,Z[n["#"]]=169,Z[n["+"]]=180,Z[n[")"]]=181,Z[n["*"]]=182,Z[n["^"]]=183,Z[n["%"]]=184,Z[n["@"]]=185,Z[n["|"]]=197,Z[n.lb]=198,Z[n.Bb]=199,Z[n.xb]=200,Z[n.wb]=201,Z[n.Ia]=202,Z[n['"']]=213,Z[n[":"]]=214,Z[n.Ab]=215,Z[n.yb]=216,Z[n.kb]=217,Z[n.Nb]=
218,Z[n[">"]]=229,Z[n["<"]]=230,Z[n.Gb]=231,Z[n.sb]=232,Z[n.Ub]=233,Z[n["?"]]=245,Z[n.Fb]=246,Z[n.Rb]=248,Z[n.tb]=249,Z[n.$a]=250,Z),rb:{},La:{},Fa:{"caps-lock":20,ctrl:17,esc:27,tab:9,"num-comma":116,"break":117,"line-feed":118,"no-scroll":119,setup:120},mc:{Z:130,INIT:127},fa:{Z:130,Ac:1,zc:2,yc:4,xc:8,Bc:16,Eb:32,Db:63,Mc:64,Zd:128,INIT:0},wc:127};X.La={l4:X.fa.Ac,l3:X.fa.zc,l2:X.fa.yc,l1:X.fa.xc,locked:X.fa.Bc,local:X.fa.Eb,online:~X.fa.Eb,"caps-lock":Nc};var Ic={SI1978:Tc,VT100:X};
X.INIT=[[X.fa.INIT,X.mc.INIT,!1,0,-1]];X.fb={130:Hc.prototype.hd};X.gb={130:Hc.prototype.zd};Ia(function(){for(var a=z(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new Hc(d);ka(d,c)}});
function gd(a,b,c,d,e){r.call(this,"Video",a);var f=this;this.Ea=Ea("Gecko/");var g=["","moz","ms","webkit"];this.A=a.screenWidth;this.s=a.screenHeight;this.da=a.bufferAddr;this.Qc=a.bufferRAM;var k=a.bufferFormat;this.P=k&&hd[k.toUpperCase()]||id;this.C=a.bufferCols;this.R=a.bufferRows;this.va=this.M=a.cellWidth||1;this.K=a.cellHeight||1;this.V=null;this.ya=!1;this.ea=a.bufferBits||1;this.Sc=a.bufferLeft||0;if(this.b=a.bufferRotate)this.b=this.b%360,0<this.b&&(this.b-=360),-90!=this.b&&(this.G("unsupported buffer rotation: "+
this.b),this.b=0);this.ha=a.interruptRate;this.Pa=a.refreshRate||60;this.o=b;this.c=c;this.L=(this.Wc=d)||b||null;this.mb=this.A;this.jc=this.s;this.wa=this.A/this.C|0;this.xa=this.s/this.R|0;1<this.K&&(this.R++,this.la=0,this.na=!1);b=a.smoothing;(c=Fa("smoothing"))&&(b="true"==c);if(null!=b)for(c=0;c<g.length;c++)if(d=(d=g[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.c[d]){this.c[d]=b;break}if(this.f=a.screenRotate)this.f=this.f%360,0<this.f&&(this.f-=360),-90!=this.f?(this.G("unsupported screen rotation: "+
this.f),this.f=0):(this.c.translate(0,this.s),this.c.rotate(this.f*Math.PI/180),this.c.scale(this.s/this.A,this.A/this.s));if(this.a=e)if(this.a.Ha=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.a.Ha){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){jd(f,!!(document.fullscreenElement||document.msFullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement))},!1);
break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){jd(f,null)},!1);break}}if(this.F=a.fontROM)"json"!=pa(this.F)&&(this.F=ra()+"/api/v1/dump?file="+this.F+"&format=bytes"),ya(this.F,null,!0,function(a,b,c){kd(f,a,b,c)});this.ra={}}l(gd,r);
function uc(a){a.j=a.C*a.M;a.B=a.R*a.K;var b=a.j,c=a.B;a.b&&(b=a.B,c=a.j);a.v=0;if(!a.Qc&&(a.v=(a.j*a.ea>>3)*a.B,!Ya(a.u,a.da,a.v,3)))return!1;a.v?(a.Ga=a.c.createImageData(b,c),a.Na=16/a.ea|0,ld(a,a.v>>1)):ld(a,(a.C+1)*a.R);a.l=document.createElement("canvas");a.l.width=b;a.l.height=c;a.ma=a.l.getContext("2d");a.H={};a.O=1<<a.ea;a.I=Array(a.O+md);a.I[0]=[0,0,0,255];a.I[1]=[255,255,255,255];a.P==nd&&(a.I[a.O+od]=[255,255,0,255],a.I[a.O+pd]=[0,255,0,255]);a.P==qd&&(a.bc=60,a.oa=!1,a.X=Array(a.C));
return!0}h=gd.prototype;h.S=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.ra[b]=c,!0;switch(b){case "fullScreen":return this.w[b]=c,this.a&&this.a.Ha?c.onclick=function(){d.Ha()}:c.parentNode.removeChild(c),!0}return!1};
h.qa=function(a,b,c,d){this.D=a;this.u=b;this.m=c;this.J=d;uc(this);if(this.h=Ta(a,"Keyboard")){for(var e in this.ra)this.h.S("led",e,this.ra[e]);this.o&&this.h.S(this.Wc?"textarea":"canvas","screen",this.L)}var f=this;this.Qa=Kb(this.m,function(){Pb(f)});Lb(this.m,this.Qa,1E3/Math.max(this.Pa,this.ha));this.Oa=0;this.F||A(this)};
function kd(a,b,c,d){if(d)a.G("Unable to load font ROM (error "+d+": "+b+")");else{ba(a.Ka,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){u("Empty font ROM: "+b);return}if(1==f.length){u(f[0]);return}if(2048==f.length)a.V=f,vc(a);else{a.G("Unrecognized font data length ("+f.length+")");return}}catch(g){a.G("Font ROM data error: "+g.message);return}(a.c||a.J)&&A(a)}}
function vc(a){a.V&&(a.ya=a.P==qd,a.H[rd]=[sd(a,a.M,a.K),sd(a,a.M,a.K,a.oa)],a.H[td]=[sd(a,2*a.M,a.K),sd(a,2*a.M,a.K,a.oa)],a.H[ud]=a.H[vd]=[sd(a,2*a.M,2*a.K),sd(a,2*a.M,2*a.K,a.oa)])}
function sd(a,b,c,d){var e=8>=a.va?8:16,f=8<e?15:0,g=a.V.length/e,k=!1===d,m={M:b,K:c};m.canvas=document.createElement("canvas");m.canvas.width=16*b;m.canvas.height=g/16*c;m.context=m.canvas.getContext("2d");for(var q=m.context.createImageData(b,c),w=0;w<g;w++){for(var B=0,L=B;B<a.K;B++)for(var y=w*e+(f+B&e-1),y=d&&8==B?255:a.V[y],v=0;v<c/a.K;v++){for(var F=0,V=0,aa=V;V<a.M;V++){for(var ea=y&128>>(7<V?7:V),F=a.ya&&!ea&&F?F:ea,wa=0;wa<b/a.M;wa++)k&&(F=!F),wd(a,q,aa,L,F?1:0),aa++;F=ea}L++}m.context.putImageData(q,
(w&15)*b,(w>>4)*c)}return m}h.ca=function(a,b){return b||!a||this.restore(a)?!0:!1};h.ba=function(a){return!a||this.save()};h.save=function(){var a=new G(this);a.set(0,[]);return a.data()};h.restore=function(){return!0};
h.Ha=function(){var a=!1;if(this.a){if(this.a.Ha){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.A/this.s;b>c&&(a=Math.round(c/b*100)+"%")}this.Ea?(this.o.style.width=a,this.o.style.width=a,this.o.style.display="block",this.o.style.margin="auto"):(this.a.style.width=a,this.a.style.height="auto");this.a.style.backgroundColor="black";this.a.Ha();a=!0}this.L&&this.L.focus()}return a};
function jd(a,b){!b&&a.a&&(a.Ea?a.o.style.width=a.o.style.height="":a.a.style.width=a.a.style.height="")}function ld(a,b){a.Ma=b;a.N=!1;if(void 0===a.g||a.g.length!=a.Ma)a.g=Array(a.Ma)}function wd(a,b,c,d,e){d=a.b?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.P==nd&&(208<=c&&236>c?e=a.O+od:28<=c&&72>c&&(e=a.O+pd));a=a.I[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function Pb(a,b){var c=!0;if(!b){a.ha&&(120==a.ha?a.Oa&1?(mc(a.m,2),c=!1):mc(a.m,1):mc(a.m,4));if(c&&a.N&&a.v){for(var d=a.u,e=a.v,f=!0,g=a.da>>>d.b;0<e&&g<d.a.length;)d.a[g].ja&&(d.a[g].ja=f=!1,d.a[g].Zb=!0),e-=d.c,g++;f&&(c=!1)}Lb(a.m,a.Qa,1E3/Math.max(a.Pa,a.ha));a.Oa++}if(c)if(1<a.M)switch(a.P){case qd:for(var c=a.da,d=-1,e=0,f=60==a.bc?2:5,k=g=0,m=-1;e<a.R;){var q=0,w=c,B=d,L=a.C;for(B!=rd&&(L>>=1);;){var y=cb(a.u,w++);if((y&xd)==xd){var v=cb(a.u,w++),d=v&yd,c=(v&zd)<<8|cb(a.u,w),c=c+(v&Ad?Bd:
Cd);break}if(q<L)a.X[q++]=y;else break}if(f)f--;else{for(;q<a.X.length;)a.X[q++]=0;if(0<=B)for(w=a.N&&a.g[g]==L,a.g[g++]=L,L=0;L<q;L++){y=a.X[L];if(!w||y!==a.g[g]){a.g[m=g]=y;var v=a,F=a.ma,V=y&127;if(y=v.H[B][y&128?1:0]){var aa=(V&15)*y.M,V=(V>>4)*y.K,ea,wa,Wa,nb,$c=y.M,Zb=y.K;F?(ea=L*v.M,wa=e*v.K,Wa=v.M,nb=v.K):(ea=L*v.wa,wa=e*v.xa,Wa=v.wa,nb=v.xa);y.M>v.M&&(ea*=2,Wa*=2);y.K>v.K&&(B==vd&&(V+=v.K),Zb=v.K);F?F.drawImage(y.canvas,aa,V,$c,Zb,ea,wa,Wa,nb):(ea+=0,wa+=0,v.c.drawImage(y.canvas,aa,V,$c,
Zb,ea,wa,Wa,nb))}k++}g++}e++}}a.N=!0;!b&&a.na&&1==k&&(a.g[m]=-1,k=0);a.na=!1;(k||b)&&a.ma&&a.c.drawImage(a.l,0,a.la,a.j,a.B-a.K,0,0,a.mb,a.jc)}else{e=a.da;f=e+a.v;m=k=g=0;b=a.j;q=0;c=a.B;B=d=0;w=a.ea;L=(1<<w)-1;a.Sc&&(w=-w,B=16+w);for(;e<f;){v=a.u;F=e;y=F&v.f;aa=(F&v.g)>>>v.b;v=y!=v.f?v.a[aa].ec(y,F):v.a[aa++].hb(y,F)|v.a[aa&v.o].hb(0,F+1)<<8;if(a.N&&v===a.g[g])k+=a.Na;else{a.g[g]=v;(F=B)&&(v=v>>8|(v&255)<<8);k<b&&(b=k);for(y=a.Na;y--;)aa=v>>F&L,wd(a,a.Ga,k++,m,aa),F+=w;k>q&&(q=k);m<c&&(c=m);m>=d&&
(d=m+1)}e+=2;g++;if(k>=a.j&&(k=0,m++,m>a.B))break}a.N=!0;b<a.j&&(e=q-b,d-=c,a.b&&(f=b,g=e,b=c,e=d,c=a.j-(f+g),d=g),a.ma.putImageData(a.Ga,0,0,b,c,e,d),a.c.drawImage(a.l,0,0,a.l.width,a.l.height,0,0,a.A,a.s))}}var od=0,pd=1,md=2,id=0,nd=1,qd=2,hd={SI1978:nd,VT100:qd},rd=96,td=64,ud=32,vd=0,xd=127,zd=15,Ad=16,yd=96,Bd=8192,Cd=16384;
Ia(function(){for(var a=z(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=x(c),e=document.createElement("canvas");if(!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<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Fa("aspect"));f&&.3<=f&&3.33>=f&&(Ha("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");Ea("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new gd(d,e,g,f,c);ka(d,c)}});
function Dd(a){r.call(this,"SerialPort",a);this.H=+a.adapter;switch(this.H){case 0:this.I=0;this.O=2;break;default:u("Unrecognized serial adapter #"+this.H);return}this.b=this.c=null;this.L=a.tabSize;this.F=a.charBOL;this.f=0;this.B=!1;this.l=!0;var b=a.binding;if("console"==b)this.c="";else{var c;a=Ed;b&&(void 0===c&&(c="Panel"),(c=ja(c,this.id))&&(b=c.w[b])&&this.S(null,a,b))}this.g="";this.a=this.Ba=this.s=null;this.exports={connect:this.ac,receiveData:this.pb,receiveStatus:this.Jd}}l(Dd,r);
h=Dd.prototype;
h.S=function(a,b,c,d){var e=this;switch(b){case Ed:return this.w[b]=this.b=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),Fd(e,b);return!0},c.onkeypress=function(a){a=a||window.event;Fd(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.w[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.pb(d);return!0},
!0}return!1};h.qa=function(a,b,c,d){this.D=a;this.u=b;this.m=c;this.J=d;var e=this;this.P=Kb(this.m,function(){e.pb()});this.R=Kb(this.m,function(){Pc(e)});this.N=Ta(a,"ChipSet");hb(b,this,Gd,this.I);ib(b,this,Hd,this.I);A(this)};
h.ac=function(a){if(!this.a){var b=Ab(this.D,"connection");if(b){var c=b.split("->");if(2==c.length){var d=ua(c[0]);if(d!=this.Ya)return;c=ua(c[1]);if(this.a=ia(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.l);if(this.Ba=e.receiveData){this.l=a;this.s=e.receiveStatus;this.status("Connected "+this.Ka+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};
h.ca=function(a,b){if(!b)if(this.ac(this.l),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};h.ba=function(a){return a?this.save():!0};h.reset=function(){Id(this)};h.save=function(){var a=new G(this),b=0,c=[];c[b++]=this.o;c[b++]=this.A;c[b++]=this.C;c[b++]=this.T;c[b++]=this.h;c[b++]=this.j;c[b]=this.v;a.set(0,c);return a.data()};h.restore=function(a){return Id(this,a[0])};
function Id(a,b){var c=0;b||(b=Jd);a.o=b[c++];a.A=b[c++];a.C=b[c++];a.T=b[c++];a.h=b[c++];a.j=b[c++];a.v=b[c];return!0}function Kd(a,b){var c=a.v&b;b&15||(c>>=4);b=Ld[c];c=((a.h&Md)>>2)+6;a.h&Nd&&c++;c+=((a.h&Od)>>6)+1>>1;return 1E3/Math.round(b/c)}function Fd(a,b){return a.B||a.T&Pd?!1:(a.A=b,a.T|=Pd,mc(a.m,a.O),!0)}
h.pb=function(a){null!=a&&(this.g="number"!=typeof a?a:this.g+String.fromCharCode(a));this.g&&(Fd(this,this.g.charCodeAt(0))&&(this.g=this.g.substr(1)),this.g&&this.m&&Lb(this.m,this.P,Kd(this,Qd)));return!0};h.Jd=function(a){this.T&=~Rd;a&64&&(this.T|=Rd)};function Pc(a,b){a.T=a.T|tc|Sd;b&&a.Ba&&a.Ba.call(a.a,b)}h.bd=function(){var a=this.A;this.T&=~Pd;return a};h.ad=function(){return this.T};
h.pd=function(a,b){this.C=b;this.T&=~(tc|Sd);if(19==b)this.B=!0;else if(17==b)this.B=!1;else if(this.Ba&&this.Ba.call(this.a,b),this.b)if(8==b)this.b.value=this.b.value.slice(0,-1),0<this.f&&this.f--;else{var c;13!=b&&10!=b&&(c=va[b]);a=c=c?"<"+c+">":String.fromCharCode(b);c=a.length;9==b?(b=this.L||8,c=b-this.f%b,this.L&&(a=" ".slice(0,c))):13==b&&(this.f=c=0,a="\n");this.F&&!this.f&&c&&(a=String.fromCharCode(this.F)+a);this.b.value+=a;this.b.scrollTop=this.b.scrollHeight;
this.f+=c}else if(null!=this.c){if(10==b||1024<=this.c.length)this.aa(this.c),this.c="";10!=b&&(this.c+=String.fromCharCode(b))}this.m&&Lb(this.m,this.R,Kd(this,Td))};h.od=function(a,b){this.o?(this.s&&(b^this.j)&(Ud|Vd)&&(a=0,this.l?(a|=b&Ud?32:0,a|=b&Vd?320:0):(a|=b&Ud?16:0,a|=b&Vd?1048576:0),this.s.call(this.a,a)),this.j=b,this.j&Wd&&(this.o=!1)):(this.h=b,this.o=!0)};h.nd=function(a,b){this.v=b};
var Md=12,Nd=16,Od=192,Vd=2,Ud=32,Wd=64,tc=1,Pd=2,Sd=4,Rd=128,Qd=15,Td=240,Ld=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Jd=[!1,0,0,133,142,39,238],Ed="buffer",Gd={0:Dd.prototype.bd,1:Dd.prototype.ad},Hd={0:Dd.prototype.pd,1:Dd.prototype.od,2:Dd.prototype.nd};Ia(function(){for(var a=z(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new Dd(d);ka(d,c)}});
function Xd(a,b,c){r.call(this,"Computer",a);this.i.U=!1;Yd(this,b);this.v=Ab(this,"autoPower",a);this.c=0;this.H=a.busWidth||a.buswidth;this.a=Zd;this.o=null;this.j=this.C=!1;this.I=Ab(this,"url")||"";(Math.random()+.1).toString(36);this.b=$d(this);if(this.m=ja("CPU",this.id)){this.J=ja("Debugger",this.id);this.g=[];for(b=null;b=Ta(this,"Video",b);)this.g.push(b);this.u=new Va({id:this.Ka+".bus",busWidth:this.H},this.m,this.J);var d,e=ha(this.id);if((this.h=ja("Panel",this.id))&&this.h.pa)for(b=
0;b<e.length;b++)d=e[b],d.G=this.h.G,d.aa=this.h.aa,d.pa=this.h.pa;this.aa("PC8080 v1.32.2\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.qa&&d.qa(this,this.u,this.m,this.J);b=null;d=Ab(this,"resume",a);void 0!==d&&(1<d.length?b=this.l=d:this.a=parseInt(d,10));var f;if(a=Ab(this,"state")||(f=!0,a.state))b=this.A=a,f||(this.j=!0,this.a=Zd),this.a&&(this.s=new G(this,"1.32.2"),ae(this.s)?
b=null:delete this.s);!b&&this.a&&(b=be(this))&&(this.j=!0);if(b){var g=this;ya(b,null,!0,function(a,b,c){c?(g.l=null,g.j=!1,g.G("Unable to load machine state from server (error "+c+(b?": "+ua(b):"")+")")):(g.o=b,g.C=!0);A(g)})}else A(this);this.w.power||(this.v=!0);!c&&this.v&&ce(this,this.Ta)}else u("Unable to find CPU component")}l(Xd,r);function Yd(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){u(d.message+" ("+c+")")}}a.F=b}
function Ab(a,b,c){var d=b.toLowerCase(),d=Fa(b)||Fa(d);void 0===d&&a.F&&(d=a.F[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function ce(a,b,c){for(var d=ha(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!la(f)){la(f,function(){ce(a,b,c)});return}}b.call(a,c)}
function de(a,b){var c=new G(a,"1.32.2",ee);if(ae(c)&&fe(c)){var d=c.get(ge),e=b?b.get(ge):"unknown";d!=e&&(a.G("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}h=Xd.prototype;
h.Ta=function(a){void 0===a&&(a=this.a||(this.o?he:Zd));if(!this.c){this.c++;var b=!1,c=!1;this.B=!1;var d=this.s||new G(this,"1.32.2");if(a==ie)b=!0;else if(a>Zd){if(ae(d,this.o)){this.f=new G(this,"1.32.2",je);ae(this.f)&&(ke(this,d),a=le,me(this.f));this.f.set(ge,xa());ne(this.f);var e=this.a&&!this.j;if(a==he||ga("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=fe(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?ae(d,g):("error"==f&&"no machine state"!=
g?(this.G("Error: "+g),"unable to verify user"==g&&(Da(oe,""),this.b=null)):this.aa(f+": "+g),me(d),ae(d)?(c=fe(d),e=!0):c=!1))}e&&de(this,c?d:null)}else a==le&&d.clear()}else de(this);delete this.o;delete this.s}e=ha(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.m&&(c=pe(this,g,d,b,c));b=[d,a,c];a!=ie?ce(this,this.Yb,b):this.Yb(b)}};
function pe(a,b,c,d,e){if(!b.i.U){b.i.U=!0;if(b.ca){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ca(f,d)&&f&&(u("Unable to restore state for "+b.type),a.A&&!a.C?(c.clear(),a.a=Zd,window&&window.location.reload()):a.B=!0,b.ca(null),e=!1)}if(!d&&b.Tb)for(a=b.Tb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
h.Yb=function(a){var b=a[0],c=0>a[1];a=a[2];this.N=!0;this.i.U=!0;var d=this.w.power;d&&(d.textContent="Shutdown");this.m&&(pe(this,this.m,b,c,a),this.m.Sa());this.B&&(ke(this,b),b.clear());!c&&this.f&&(this.f.clear(),delete this.f);this.c=0};
function ke(a,b){if(ga("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.b||"";b=b.toString();var d={app:"PC8080",ver:"1.32.2"};d.url=a.I;d.user=c;d.type="bug";d.data=b;ya("http://www.pcjs.org/api/v1/report",d,!0)}}
function qe(a,b,c){var d,e="none";if(a.c)return null;a.c--;var f=new G(a,"1.32.2"),g=new G(a,"1.32.2",ee),k=xa();g.set(ge,k);f.set(ge,k);f.set(re,"1.32.2");f.set(se,window?window.location.href:null);f.set(te,window?window.navigator.userAgent:"");a.m&&a.m.ba&&(c&&Eb(a.m),d=a.m.ba(b,c),"object"===typeof d&&f.set(a.m.id,d),c&&(a.m.i.U=!1,!1===d&&(e=null)));for(var k=ha(a.id),m=0;m<k.length;m++){var q=k[m];q.i.U&&(q.ba&&(d=q.ba(b,c),"object"===typeof d&&f.set(q.id,d)),c&&(q.i.U=!1,!1===d&&(e=null)))}e&&
(c?(k=d=!1,b?(a.b&&ue(a,a.b,f.toString()),ne(g)&&ne(f)||(e=null,d=k=!0)):a.a&&(d=!0,k=a.a==ve),d&&f.clear(k)):e=f.toString());c&&(a.i.U=!1,b=a.w.power)&&(b.textContent="Power");a.c=0;return e}h.reset=function(){this.u&&this.u.reset&&this.u.reset();for(var a=ha(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c.reset&&c.reset()}};h.start=function(a,b){for(var c=ha(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
h.stop=function(a,b){for(var c=ha(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
h.S=function(a,b,c){var d=this;switch(b){case "power":return this.w[b]=c,c.onclick=function(){d.c||(d.i.U?qe(d,!1,!0):ce(d,d.Ta))},!0;case "reset":return this.w[b]=c,c.onclick=function(){if(d.i.U&&!d.c)if(d.a&&!d.l){var a=ga("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");qe(d,a,!0);!a&&d.A?window&&window.location.reload():d.Ta(Zd)}else d.reset(),d.m&&d.m.Sa()},!0;case "save":if(qa())c.parentNode.removeChild(c);else return this.w[b]=
c,c.onclick=function(){var a=$d(d,!0);if(a){var b=!!(d.a&&!d.l||d.A),c=qe(d,b);b?ue(d,a,c):d.G("Resume disabled, machine state not saved")}},!0}return!1};function $d(a,b){var c=a.b;c||((c=Ca(oe),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=we(a,c))||a.G("The user ID is invalid.")):b&&a.G("Browser local storage is not available"));return c}
function we(a,b){a.b=null;b=ya(ra()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Da(oe,b.data),a.b=b.data)}catch(d){u(d.message+" ("+c+")")}return a.b}function be(a){var b=null;a.b&&(b=ra()+"/api/v1/user?req=load&user="+a.b+"&state="+xe(a,"1.32.2"));return b}
function ue(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=xe(a,"1.32.2");d.data=c;b=ya(ra()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.G("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.G(c),Da(oe,""),a.b=null)}}
function Ta(a,b,c){a=ha(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}function Jb(a,b){if(a.g.length){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a=a.g[0];a.L&&a.L.focus();!b&&window&&window.scrollTo(c,d)}}
function Nb(a,b){a.m&&(a=a.m,a.Oa&&(b||!a.i.ka||a.i.Xb)&&(S(a,"A",a.b),S(a,"B",a.g),S(a,"C",a.c),S(a,"BC",Xb(a),4),S(a,"D",a.h),S(a,"E",a.f),S(a,"DE",$b(a),4),S(a,"H",a.j),S(a,"L",a.l),S(a,"HL",H(a),4),S(a,"SP",a.A,4),S(a,"PC",a.s,4),b=Wb(a),S(a,"PS",b,4),S(a,"IF",b&512?1:0,1),S(a,"SF",b&128?1:0,1),S(a,"ZF",b&64?1:0,1),S(a,"AF",b&16?1:0,1),S(a,"PF",b&4?1:0,1),S(a,"CF",b&1?1:0,1)),b=a.w.speed)&&(b.textContent=a.i.ka&&a.R?a.R.toFixed(2)+"Mhz":"Stopped")}
var je="failsafe",ee="validate",ge="timestamp",re="version",se="url",te="browser",oe="user",ie=-1,Zd=0,he=1,le=2,ve=3;Ia(function(){for(var a=z(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=x(c),c=z(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=x(f),g=new Xd(g,d,!0);ka(g,f);g.v&&ce(g,g.Ta)}});Ja.show.push(function(){for(var a=z(document,"pc8080","computer"),b=0;b<a.length;b++){var c=x(a[b]);(c=ja("Computer",c.id))&&c.N&&!c.i.U&&c.Ta(ie)}});
Ja.exit.push(function(){for(var a=z(document,"pc8080","computer"),b=0;b<a.length;b++){var c=x(a[b]);(c=ja("Computer",c.id))&&c.i.U&&qe(c,!(!c.a||c.l),!0)}});function G(a,b,c){this.id=a.id;this.J=a.J;this.b="";this.a={};this.m=this.u=!1;this.key=xe(a,b,c);me(this,a.Uc)}h=G.prototype;h.set=function(a,b){try{this.a[a]=b}catch(c){}};h.get=function(a){return this.a[a]||null};h.data=function(){return this.a};
function ae(a,b){return b?(a.b=b,a.m=!0,a.u=!1,!0):a.m?!0:Aa()&&(b=Ca(a.key))?(a.b=b,a.m=!0):!1}function fe(a){var b=!0;if(!a.u)try{a.a=JSON.parse(a.b),a.u=!0}catch(c){u(c.message||c),b=!1}return b}function ne(a){var b=!0;if(Aa()){var c=JSON.stringify(a.a);Da(a.key,c)||(u("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}h.toString=function(){return this.a?JSON.stringify(this.a):this.b};function me(a,b){a.b="";a.a={};a.m=a.u=!1;b&&a.set("parms",b)}
h.clear=function(a){me(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function xe(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var ye=0;
function ze(a,b,c,d,e,f){e("Loading "+a+"...");ya(a,null,!0,function(g,k,m){m?(k||(k="unable to load "+a+" ("+m+")"),f(k,null)):Ae(k,a,b,c,d,e,f)})}
function Ae(a,b,c,d,e,f,g){function k(a,f){if(f)g(f,null);else{c&&(ba(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{",d+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PC8080$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(w){f=null,a=w.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,f)}}a?e?Be(a,f,k):k(a,null):g("no data"+(b?" for file: "+b:""),
null)}
function ye(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");xa(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],n,v=/( [a-z]+=)(['"])(.*?)\2/g;n=v.exec(f);)l=0>l.indexOf(n[1])?l.replace(">",n[0]+">"):l.replace(new RegExp(n[1]+"(['\"])(.*?)\\1"),n[0]);h[0]!=l&&(g=g.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");
a=a.replace(d[0],g);ye(a,b,c)}})}else c(a,null)}
function ze(a,b,c,d){function e(a){if(void 0===h){var b=g&&y(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ra(a))}function f(a){e("Error: "+a);l&&(--ve||La(!0));l=!1}var g,h,l=!0;ve++;ba[a]={};try{if(g=document.getElementById(a)){var n;if("object"==typeof resources&&(n=resources.css)){var v=document.head||document.getElementsByTagName("head")[0],A=document.createElement("style");A.type="text/css";A.styleSheet?A.styleSheet.cssText=n:A.appendChild(document.createTextNode(n));v.appendChild(A)}c||
(c="/versions/pc8080/1.32.2/components.xsl");n=function(d,h){h?we(c,null,null,!1,e,function(d,l){l?(aa(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=h.transformNode(l))?(g.outerHTML=l,--ve||La(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(l),(l=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--ve||La(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?we(b,a,d,!0,e,n):xe(b,null,a,d,!1,e,n)}else f("missing machine element: "+a)}catch(K){f(K.message)}return l}window.embedPC8080=function(a,b,c,d){La(!1);return ze(a,b,c,d)};window.findMachineComponent=function(a,b){return ia(b,a+".machine")};window.enableEvents=La;window.sendEvent=Na;})();
function Be(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");ya(e,null,!0,function(f,g,k){if(k||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+k+")");else{if(f=d[3])if(k=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var m=k[0],q,w=/( [a-z]+=)(['"])(.*?)\2/g;q=w.exec(f);)m=0>m.indexOf(q[1])?m.replace(">",q[0]+">"):m.replace(new RegExp(q[1]+"(['\"])(.*?)\\1"),q[0]);k[0]!=m&&(g=g.replace(k[0],m))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");
a=a.replace(d[0],g);Be(a,b,c)}})}else c(a,null)}
function Ce(a,b,c,d){function e(a){if(void 0===k){var b=g&&z(g,"machine-warning");k=b&&b[0]||g}k&&(k.innerHTML=sa(a))}function f(a){e("Error: "+a);m&&(--ye||Ma(!0));m=!1}var g,k,m=!0;ye++;ca[a]={};try{if(g=document.getElementById(a)){var q;if("object"==typeof resources&&(q=resources.css)){var w=document.head||document.getElementsByTagName("head")[0],B=document.createElement("style");B.type="text/css";B.styleSheet?B.styleSheet.cssText=q:B.appendChild(document.createTextNode(q));w.appendChild(B)}c||
(c="/versions/pc8080/1.32.2/components.xsl");q=function(d,k){k?ze(c,null,null,!1,e,function(d,m){m?(ba(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(m=k.transformNode(m))?(g.outerHTML=m,--ye||Ma(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(m),(m=d.transformToFragment(k,document))?g.parentNode?(g.parentNode.replaceChild(m,g),--ye||Ma(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?ze(b,a,d,!0,e,q):Ae(b,null,a,d,!1,e,q)}else f("missing machine element: "+a)}catch(L){f(L.message)}return m}window.embedPC8080=function(a,b,c,d){Ma(!1);return Ce(a,b,c,d)};window.findMachineComponent=function(a,b){return ja(b,a+".machine")};window.enableEvents=Ma;window.sendEvent=Oa;})();