First stab at factoring some common Debugger functionality into a shared component
This commit is contained in:
parent
5969514c7e
commit
a8bb0c7841
42 changed files with 3721 additions and 4457 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -68,7 +68,7 @@ if (NODE) {
|
||||||
* @extends Component
|
* @extends Component
|
||||||
* @param {Object} parmsBus
|
* @param {Object} parmsBus
|
||||||
* @param {CPUState} cpu
|
* @param {CPUState} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {Debugger6502} dbg
|
||||||
*/
|
*/
|
||||||
function Bus(parmsBus, cpu, dbg)
|
function Bus(parmsBus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,7 @@ function Computer(parmsComputer, parmsMachine, fSuspended) {
|
||||||
Component.error("Unable to find CPU component");
|
Component.error("Unable to find CPU component");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.dbg = /** @type {Debugger} */ (Component.getComponentByType("Debugger", this.id));
|
this.dbg = /** @type {Debugger6502} */ (Component.getComponentByType("Debugger", this.id));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enumerate all Video components for future updateVideo() calls.
|
* Enumerate all Video components for future updateVideo() calls.
|
||||||
|
|
|
||||||
|
|
@ -160,7 +160,7 @@ CPU.BUTTONS = ["power", "reset"];
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {CPU} cpu
|
* @param {CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {Debugger6502} dbg
|
||||||
*/
|
*/
|
||||||
CPU.prototype.initBus = function(cmp, bus, cpu, dbg)
|
CPU.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -34,7 +34,12 @@
|
||||||
/**
|
/**
|
||||||
* @define {string}
|
* @define {string}
|
||||||
*/
|
*/
|
||||||
var APPCLASS = "pc8080"; // this @define is the default application class (formerly APPCLASS) to use
|
var APPCLASS = "pc6502"; // this @define is the default application class (eg, "pcx86", "c1pjs")
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @define {string}
|
||||||
|
*/
|
||||||
|
var APPNAME = "PC6502"; // this @define is the default application name (eg, "PCx86", "C1Pjs")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @define {boolean}
|
* @define {boolean}
|
||||||
|
|
@ -69,6 +74,26 @@ var BYTEARRAYS = false;
|
||||||
*/
|
*/
|
||||||
var TYPEDARRAYS = (typeof ArrayBuffer !== 'undefined');
|
var TYPEDARRAYS = (typeof ArrayBuffer !== 'undefined');
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Combine all the shared globals and machine-specific globals into one machine-specific global object,
|
||||||
|
* which all machine components should start using; eg: "if (PCX86.DEBUG) ..." instead of "if (DEBUG) ...".
|
||||||
|
*/
|
||||||
|
var PC6502 = {
|
||||||
|
APPCLASS: APPCLASS,
|
||||||
|
APPNAME: APPNAME,
|
||||||
|
APPVERSION: APPVERSION, // shared
|
||||||
|
BYTEARRAYS: BYTEARRAYS,
|
||||||
|
COMPILED: COMPILED, // shared
|
||||||
|
CSSCLASS: CSSCLASS, // shared
|
||||||
|
DEBUG: DEBUG, // shared
|
||||||
|
DEBUGGER: DEBUGGER,
|
||||||
|
MAXDEBUG: MAXDEBUG, // shared
|
||||||
|
PRIVATE: PRIVATE, // shared
|
||||||
|
TYPEDARRAYS: TYPEDARRAYS,
|
||||||
|
SITEHOST: SITEHOST, // shared
|
||||||
|
XMLVERSION: XMLVERSION // shared
|
||||||
|
};
|
||||||
|
|
||||||
if (NODE) {
|
if (NODE) {
|
||||||
global.APPCLASS = APPCLASS;
|
global.APPCLASS = APPCLASS;
|
||||||
global.DEBUGGER = DEBUGGER;
|
global.DEBUGGER = DEBUGGER;
|
||||||
|
|
|
||||||
|
|
@ -237,7 +237,7 @@ Memory.prototype = {
|
||||||
* @this {Memory}
|
* @this {Memory}
|
||||||
* @param {Memory} mem
|
* @param {Memory} mem
|
||||||
* @param {number} [type]
|
* @param {number} [type]
|
||||||
* @param {Debugger} [dbg]
|
* @param {Debugger6502} [dbg]
|
||||||
*/
|
*/
|
||||||
clone: function(mem, type, dbg) {
|
clone: function(mem, type, dbg) {
|
||||||
/*
|
/*
|
||||||
|
|
@ -485,7 +485,7 @@ Memory.prototype = {
|
||||||
* copyBreakpoints(dbg, mem)
|
* copyBreakpoints(dbg, mem)
|
||||||
*
|
*
|
||||||
* @this {Memory}
|
* @this {Memory}
|
||||||
* @param {Debugger} [dbg]
|
* @param {Debugger6502} [dbg]
|
||||||
* @param {Memory} [mem] (outgoing Memory block to copy breakpoints from, if any)
|
* @param {Memory} [mem] (outgoing Memory block to copy breakpoints from, if any)
|
||||||
*/
|
*/
|
||||||
copyBreakpoints: function(dbg, mem) {
|
copyBreakpoints: function(dbg, mem) {
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ Panel.prototype.setBinding = function(sHTMLType, sBinding, control, sValue)
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {CPUState} cpu
|
* @param {CPUState} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {Debugger6502} dbg
|
||||||
*/
|
*/
|
||||||
Panel.prototype.initBus = function(cmp, bus, cpu, dbg)
|
Panel.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ Component.subclass(RAM);
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {CPUState} cpu
|
* @param {CPUState} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {Debugger6502} dbg
|
||||||
*/
|
*/
|
||||||
RAM.prototype.initBus = function(cmp, bus, cpu, dbg)
|
RAM.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@ Component.subclass(ROM);
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {CPUState} cpu
|
* @param {CPUState} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {Debugger6502} dbg
|
||||||
*/
|
*/
|
||||||
ROM.prototype.initBus = function(cmp, bus, cpu, dbg)
|
ROM.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -223,7 +223,7 @@ Video.COLORS = {
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {CPUState} cpu
|
* @param {CPUState} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {Debugger6502} dbg
|
||||||
*/
|
*/
|
||||||
Video.prototype.initBus = function(cmp, bus, cpu, dbg)
|
Video.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ if (DEBUGGER) {
|
||||||
var usr = require("../../shared/lib/usrlib");
|
var usr = require("../../shared/lib/usrlib");
|
||||||
var web = require("../../shared/lib/weblib");
|
var web = require("../../shared/lib/weblib");
|
||||||
var Component = require("../../shared/lib/component");
|
var Component = require("../../shared/lib/component");
|
||||||
|
var Debugger = require("../../shared/lib/debugger");
|
||||||
var State = require("../../shared/lib/state");
|
var State = require("../../shared/lib/state");
|
||||||
var PC8080 = require("./defines");
|
var PC8080 = require("./defines");
|
||||||
var CPUDef8080 = require("./cpudef");
|
var CPUDef8080 = require("./cpudef");
|
||||||
|
|
@ -68,7 +69,7 @@ var DbgAddr8080;
|
||||||
* Debugger8080(parmsDbg)
|
* Debugger8080(parmsDbg)
|
||||||
*
|
*
|
||||||
* @constructor
|
* @constructor
|
||||||
* @extends Component
|
* @extends Debugger
|
||||||
* @param {Object} parmsDbg
|
* @param {Object} parmsDbg
|
||||||
*
|
*
|
||||||
* The Debugger8080 component supports the following optional (parmsDbg) properties:
|
* The Debugger8080 component supports the following optional (parmsDbg) properties:
|
||||||
|
|
@ -89,17 +90,6 @@ function Debugger8080(parmsDbg)
|
||||||
|
|
||||||
this.style = Debugger8080.STYLE_8080;
|
this.style = Debugger8080.STYLE_8080;
|
||||||
|
|
||||||
/*
|
|
||||||
* These keep track of instruction activity, but only when tracing or when Debugger8080 checks
|
|
||||||
* have been enabled (eg, one or more breakpoints have been set).
|
|
||||||
*
|
|
||||||
* They are zeroed by the reset() notification handler. cInstructions is advanced by
|
|
||||||
* stepCPU() and checkInstruction() calls. nCycles is updated by every stepCPU() or stop()
|
|
||||||
* call and simply represents the number of cycles performed by the last run of instructions.
|
|
||||||
*/
|
|
||||||
this.nCycles = 0;
|
|
||||||
this.cOpcodes = this.cOpcodesStart = 0;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Most commands that require an address call parseAddr(), which defaults to dbgAddrNextCode
|
* Most commands that require an address call parseAddr(), which defaults to dbgAddrNextCode
|
||||||
* or dbgAddrNextData when no address has been given. doDump() and doUnassemble(), in turn,
|
* or dbgAddrNextData when no address has been given. doDump() and doUnassemble(), in turn,
|
||||||
|
|
@ -111,13 +101,6 @@ function Debugger8080(parmsDbg)
|
||||||
this.dbgAddrNextCode = this.newAddr();
|
this.dbgAddrNextCode = this.newAddr();
|
||||||
this.dbgAddrNextData = this.newAddr();
|
this.dbgAddrNextData = this.newAddr();
|
||||||
|
|
||||||
/*
|
|
||||||
* This maintains command history. New commands are inserted at index 0 of the array.
|
|
||||||
* When Enter is pressed on an empty input buffer, we default to the command at aPrevCmds[0].
|
|
||||||
*/
|
|
||||||
this.iPrevCmd = -1;
|
|
||||||
this.aPrevCmds = [];
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* fAssemble is true when "assemble mode" is active, false when not.
|
* fAssemble is true when "assemble mode" is active, false when not.
|
||||||
*/
|
*/
|
||||||
|
|
@ -138,21 +121,6 @@ function Debugger8080(parmsDbg)
|
||||||
*/
|
*/
|
||||||
this.aSymbolTable = [];
|
this.aSymbolTable = [];
|
||||||
|
|
||||||
/*
|
|
||||||
* aVariables is an object with properties that grows as setVariable() assigns more variables;
|
|
||||||
* each property corresponds to one variable, where the property name is the variable name (ie,
|
|
||||||
* a string beginning with a letter or underscore, followed by zero or more additional letters,
|
|
||||||
* digits, or underscores) and the property value is the variable's numeric value. See doVar()
|
|
||||||
* and setVariable() for details.
|
|
||||||
*
|
|
||||||
* Note that parseValue(), through its reliance on str.parseInt(), assumes a default base of 16
|
|
||||||
* if no base is explicitly indicated (eg, a trailing decimal period), and if you define variable
|
|
||||||
* names containing exclusively hex alpha characters (a-f), those variables will take precedence
|
|
||||||
* over the corresponding hex values. In other words, if you define variables "a" and "b", you
|
|
||||||
* will no longer be able to simply type "a" or "b" to specify the decimal values 10 or 11.
|
|
||||||
*/
|
|
||||||
this.aVariables = {};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* clearBreakpoints() initializes the breakpoints lists: aBreakExec is a list of addresses
|
* clearBreakpoints() initializes the breakpoints lists: aBreakExec is a list of addresses
|
||||||
* to halt on whenever attempting to execute an instruction at the corresponding address,
|
* to halt on whenever attempting to execute an instruction at the corresponding address,
|
||||||
|
|
@ -214,7 +182,7 @@ function Debugger8080(parmsDbg)
|
||||||
|
|
||||||
if (DEBUGGER) {
|
if (DEBUGGER) {
|
||||||
|
|
||||||
Component.subclass(Debugger8080);
|
Component.subclass(Debugger8080, Debugger);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* NOTE: Every Debugger8080 property from here to the first prototype function definition (initBus()) is a
|
* NOTE: Every Debugger8080 property from here to the first prototype function definition (initBus()) is a
|
||||||
|
|
@ -2622,380 +2590,7 @@ if (DEBUGGER) {
|
||||||
return s;
|
return s;
|
||||||
};
|
};
|
||||||
|
|
||||||
Debugger8080.aBinOpPrecedence = {
|
/**
|
||||||
'||': 0, // logical OR
|
|
||||||
'&&': 1, // logical AND
|
|
||||||
'|': 2, // bitwise OR
|
|
||||||
'^': 3, // bitwise XOR
|
|
||||||
'&': 4, // bitwise AND
|
|
||||||
'!=': 5, // inequality
|
|
||||||
'==': 5, // equality
|
|
||||||
'>=': 6, // greater than or equal to
|
|
||||||
'>': 6, // greater than
|
|
||||||
'<=': 6, // less than or equal to
|
|
||||||
'<': 6, // less than
|
|
||||||
'>>>': 7, // unsigned bitwise right shift
|
|
||||||
'>>': 7, // bitwise right shift
|
|
||||||
'<<': 7, // bitwise left shift
|
|
||||||
'-': 8, // subtraction
|
|
||||||
'+': 8, // addition
|
|
||||||
'%': 9, // remainder
|
|
||||||
'/': 9, // division
|
|
||||||
'*': 9 // multiplication
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* evalExpression(aVals, aOps, cOps)
|
|
||||||
*
|
|
||||||
* In Node, if you set a variable to 0x80000001; ie:
|
|
||||||
*
|
|
||||||
* foo=0x80000001|0
|
|
||||||
*
|
|
||||||
* and then calculate foo*foo using "(foo*foo).toString(2)", the result is:
|
|
||||||
*
|
|
||||||
* '11111111111111111111111111111100000000000000000000000000000000'
|
|
||||||
*
|
|
||||||
* which is slightly incorrect because it has overflowed JavaScript's floating-point precision.
|
|
||||||
*
|
|
||||||
* 0x80000001 in decimal is -2147483647, so the product is 4611686014132420609, which is 0x3FFFFFFF00000001.
|
|
||||||
*
|
|
||||||
* @this {Debugger8080}
|
|
||||||
* @param {Array.<number>} aVals
|
|
||||||
* @param {Array.<string>} aOps
|
|
||||||
* @param {number} [cOps] (default is all)
|
|
||||||
* @return {boolean} true if successful, false if error
|
|
||||||
*/
|
|
||||||
Debugger8080.prototype.evalExpression = function(aVals, aOps, cOps)
|
|
||||||
{
|
|
||||||
cOps = cOps || -1;
|
|
||||||
while (cOps-- && aOps.length) {
|
|
||||||
var chOp = aOps.pop();
|
|
||||||
if (aVals.length < 2) return false;
|
|
||||||
var valNew;
|
|
||||||
var val2 = aVals.pop();
|
|
||||||
var val1 = aVals.pop();
|
|
||||||
switch(chOp) {
|
|
||||||
case '*':
|
|
||||||
valNew = val1 * val2;
|
|
||||||
break;
|
|
||||||
case '/':
|
|
||||||
if (!val2) return false;
|
|
||||||
valNew = val1 / val2;
|
|
||||||
break;
|
|
||||||
case '%':
|
|
||||||
if (!val2) return false;
|
|
||||||
valNew = val1 % val2;
|
|
||||||
break;
|
|
||||||
case '+':
|
|
||||||
valNew = val1 + val2;
|
|
||||||
break;
|
|
||||||
case '-':
|
|
||||||
valNew = val1 - val2;
|
|
||||||
break;
|
|
||||||
case '<<':
|
|
||||||
valNew = val1 << val2;
|
|
||||||
break;
|
|
||||||
case '>>':
|
|
||||||
valNew = val1 >> val2;
|
|
||||||
break;
|
|
||||||
case '>>>':
|
|
||||||
valNew = val1 >>> val2;
|
|
||||||
break;
|
|
||||||
case '<':
|
|
||||||
valNew = (val1 < val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
case '<=':
|
|
||||||
valNew = (val1 <= val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
case '>':
|
|
||||||
valNew = (val1 > val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
case '>=':
|
|
||||||
valNew = (val1 >= val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
case '==':
|
|
||||||
valNew = (val1 == val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
case '!=':
|
|
||||||
valNew = (val1 != val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
case '&':
|
|
||||||
valNew = val1 & val2;
|
|
||||||
break;
|
|
||||||
case '^':
|
|
||||||
valNew = val1 ^ val2;
|
|
||||||
break;
|
|
||||||
case '|':
|
|
||||||
valNew = val1 | val2;
|
|
||||||
break;
|
|
||||||
case '&&':
|
|
||||||
valNew = (val1 && val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
case '||':
|
|
||||||
valNew = (val1 || val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
aVals.push(valNew|0);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* parseExpression(sExp, fPrint)
|
|
||||||
*
|
|
||||||
* A quick-and-dirty expression parser. It takes an expression like:
|
|
||||||
*
|
|
||||||
* EDX+EDX*4+12345678
|
|
||||||
*
|
|
||||||
* and builds a value stack in aVals and a "binop" (binary operator) stack in aOps:
|
|
||||||
*
|
|
||||||
* aVals aOps
|
|
||||||
* ----- ----
|
|
||||||
* EDX +
|
|
||||||
* EDX *
|
|
||||||
* 4 +
|
|
||||||
* ...
|
|
||||||
*
|
|
||||||
* We pop 1 "binop" from aOps and 2 values from aVals whenever a "binop" of lower priority than its
|
|
||||||
* predecessor is encountered, evaluate, and push the result back onto aVals.
|
|
||||||
*
|
|
||||||
* Unary operators like '~' and ternary operators like '?:' are not supported; neither are parentheses.
|
|
||||||
*
|
|
||||||
* However, parseReference() now makes it possible to write parenthetical-style sub-expressions by using
|
|
||||||
* {...} (braces), as well as address references by using [...] (brackets).
|
|
||||||
*
|
|
||||||
* Why am I using braces instead of parentheses for sub-expressions? Because parseReference() serves
|
|
||||||
* multiple purposes, the other being reference replacement in message strings passing through replaceRegs(),
|
|
||||||
* and I didn't want parentheses taking on a new meaning in message strings.
|
|
||||||
*
|
|
||||||
* @this {Debugger8080}
|
|
||||||
* @param {string|undefined} sExp
|
|
||||||
* @param {boolean} [fPrint] is true to print all resolved values, false for quiet parsing
|
|
||||||
* @return {number|undefined} numeric value, or undefined if sExp contains any undefined or invalid values
|
|
||||||
*/
|
|
||||||
Debugger8080.prototype.parseExpression = function(sExp, fPrint)
|
|
||||||
{
|
|
||||||
var value;
|
|
||||||
|
|
||||||
if (sExp) {
|
|
||||||
/*
|
|
||||||
* First process (and eliminate) any references, aka sub-expressions.
|
|
||||||
*/
|
|
||||||
sExp = this.parseReference(sExp);
|
|
||||||
|
|
||||||
var i = 0;
|
|
||||||
var fError = false;
|
|
||||||
var sExpOrig = sExp;
|
|
||||||
var aVals = [], aOps = [];
|
|
||||||
/*
|
|
||||||
* All browsers (including, I believe, IE9 and up) support the following idiosyncrasy of a regexp split():
|
|
||||||
* when the regexp uses a capturing pattern, the resulting array will include entries for all the pattern
|
|
||||||
* matches along with the non-matches. This effectively means that, in the set of expressions that we
|
|
||||||
* support, all even entries in asValues will contain "values" and all odd entries will contain "operators".
|
|
||||||
*
|
|
||||||
* And although I tried to list the supported operators in "precedential" order, bitwise operators must
|
|
||||||
* be out-of-order so that we don't mistakenly match either '>' or '<' when they're part of '>>' or '<<'.
|
|
||||||
*/
|
|
||||||
var regExp = /(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/;
|
|
||||||
var asValues = sExp.split(regExp);
|
|
||||||
while (i < asValues.length) {
|
|
||||||
var sValue = asValues[i++];
|
|
||||||
var cchValue = sValue.length;
|
|
||||||
var s = str.trim(sValue);
|
|
||||||
if (!s) {
|
|
||||||
fError = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
var v = this.parseValue(s, null, fPrint === false);
|
|
||||||
if (v === undefined) {
|
|
||||||
fError = true;
|
|
||||||
fPrint = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
aVals.push(v);
|
|
||||||
if (i == asValues.length) break;
|
|
||||||
var sOp = asValues[i++], cchOp = sOp.length;
|
|
||||||
this.assert(Debugger8080.aBinOpPrecedence[sOp] != null);
|
|
||||||
if (aOps.length && Debugger8080.aBinOpPrecedence[sOp] < Debugger8080.aBinOpPrecedence[aOps[aOps.length-1]]) {
|
|
||||||
this.evalExpression(aVals, aOps, 1);
|
|
||||||
}
|
|
||||||
aOps.push(sOp);
|
|
||||||
sExp = sExp.substr(cchValue + cchOp);
|
|
||||||
}
|
|
||||||
if (!this.evalExpression(aVals, aOps) || aVals.length != 1) {
|
|
||||||
fError = true;
|
|
||||||
}
|
|
||||||
if (!fError) {
|
|
||||||
value = aVals.pop();
|
|
||||||
if (fPrint) this.printValue(null, value);
|
|
||||||
} else {
|
|
||||||
if (fPrint) this.println("error parsing '" + sExpOrig + "' at character " + (sExpOrig.length - sExp.length));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* parseReference(s)
|
|
||||||
*
|
|
||||||
* Returns the given string with any "{expression}" sequences replaced with the value of the expression,
|
|
||||||
* and any "[address]" references replaced with the contents of the address. Expressions are parsed BEFORE
|
|
||||||
* addresses. Owing to this function's simplistic parsing, nested braces/brackets are not supported
|
|
||||||
* (define intermediate variables if needed).
|
|
||||||
*
|
|
||||||
* @this {Debugger8080}
|
|
||||||
* @param {string} s
|
|
||||||
* @return {string}
|
|
||||||
*/
|
|
||||||
Debugger8080.prototype.parseReference = function(s)
|
|
||||||
{
|
|
||||||
var a;
|
|
||||||
while (a = s.match(/\{(.*?)}/)) {
|
|
||||||
if (a[1].indexOf('{') >= 0) break; // unsupported nested brace(s)
|
|
||||||
var value = this.parseExpression(a[1]);
|
|
||||||
s = s.replace('{' + a[1] + '}', value != null? str.toHex(value) : "undefined");
|
|
||||||
}
|
|
||||||
while (a = s.match(/\[(.*?)]/)) {
|
|
||||||
if (a[1].indexOf('[') >= 0) break; // unsupported nested bracket(s)
|
|
||||||
var dbgAddr = this.parseAddr(a[1]);
|
|
||||||
s = s.replace('[' + a[1] + ']', dbgAddr? str.toHex(this.getWord(dbgAddr), 4) : "undefined");
|
|
||||||
}
|
|
||||||
return this.parseSysVars(s);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* parseSysVars(s)
|
|
||||||
*
|
|
||||||
* Returns the given string with any recognized "$var" replaced with its value; eg:
|
|
||||||
*
|
|
||||||
* $ops: the number of opcodes executed since the last time it was displayed (or reset)
|
|
||||||
*
|
|
||||||
* @this {Debugger8080}
|
|
||||||
* @param {string} s
|
|
||||||
* @return {string}
|
|
||||||
*/
|
|
||||||
Debugger8080.prototype.parseSysVars = function(s)
|
|
||||||
{
|
|
||||||
var a;
|
|
||||||
while (a = s.match(/\$([a-z]+)/i)) {
|
|
||||||
var v = null;
|
|
||||||
switch(a[1].toLowerCase()) {
|
|
||||||
case "ops":
|
|
||||||
v = this.cOpcodes - this.cOpcodesStart;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (v == null) break;
|
|
||||||
s = s.replace(a[0], v.toString());
|
|
||||||
}
|
|
||||||
return s;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* parseValue(sValue, sName, fQuiet)
|
|
||||||
*
|
|
||||||
* @this {Debugger8080}
|
|
||||||
* @param {string|undefined} sValue
|
|
||||||
* @param {string|null} [sName] is the name of the value, if any
|
|
||||||
* @param {boolean} [fQuiet]
|
|
||||||
* @return {number|undefined} numeric value, or undefined if sValue is either undefined or invalid
|
|
||||||
*/
|
|
||||||
Debugger8080.prototype.parseValue = function(sValue, sName, fQuiet)
|
|
||||||
{
|
|
||||||
var value;
|
|
||||||
if (sValue !== undefined) {
|
|
||||||
var iReg = this.getRegIndex(sValue);
|
|
||||||
if (iReg >= 0) {
|
|
||||||
value = this.getRegValue(iReg);
|
|
||||||
} else {
|
|
||||||
value = this.getVariable(sValue);
|
|
||||||
if (value === undefined) value = str.parseInt(sValue);
|
|
||||||
}
|
|
||||||
if (value === undefined && !fQuiet) this.println("invalid " + (sName? sName : "value") + ": " + sValue);
|
|
||||||
} else {
|
|
||||||
if (!fQuiet) this.println("missing " + (sName || "value"));
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* printValue(sVar, value)
|
|
||||||
*
|
|
||||||
* @this {Debugger8080}
|
|
||||||
* @param {string|null} sVar
|
|
||||||
* @param {number|undefined} value
|
|
||||||
* @return {boolean} true if value defined, false if not
|
|
||||||
*/
|
|
||||||
Debugger8080.prototype.printValue = function(sVar, value)
|
|
||||||
{
|
|
||||||
var sValue;
|
|
||||||
var fDefined = false;
|
|
||||||
if (value !== undefined) {
|
|
||||||
fDefined = true;
|
|
||||||
sValue = str.toHexLong(value) + " " + value + ". (" + str.toBinBytes(value) + ")";
|
|
||||||
}
|
|
||||||
sVar = (sVar != null? (sVar + ": ") : "");
|
|
||||||
this.println(sVar + sValue);
|
|
||||||
return fDefined;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* printVariable(sVar)
|
|
||||||
*
|
|
||||||
* @this {Debugger8080}
|
|
||||||
* @param {string} [sVar]
|
|
||||||
* @return {boolean} true if all value(s) defined, false if not
|
|
||||||
*/
|
|
||||||
Debugger8080.prototype.printVariable = function(sVar)
|
|
||||||
{
|
|
||||||
if (sVar) {
|
|
||||||
return this.printValue(sVar, this.aVariables[sVar]);
|
|
||||||
}
|
|
||||||
var cVariables = 0;
|
|
||||||
for (sVar in this.aVariables) {
|
|
||||||
this.printValue(sVar, this.aVariables[sVar]);
|
|
||||||
cVariables++;
|
|
||||||
}
|
|
||||||
return cVariables > 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* delVariable(sVar)
|
|
||||||
*
|
|
||||||
* @this {Debugger8080}
|
|
||||||
* @param {string} sVar
|
|
||||||
*/
|
|
||||||
Debugger8080.prototype.delVariable = function(sVar)
|
|
||||||
{
|
|
||||||
delete this.aVariables[sVar];
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* getVariable(sVar)
|
|
||||||
*
|
|
||||||
* @this {Debugger8080}
|
|
||||||
* @param {string} sVar
|
|
||||||
* @return {number|undefined}
|
|
||||||
*/
|
|
||||||
Debugger8080.prototype.getVariable = function(sVar)
|
|
||||||
{
|
|
||||||
return this.aVariables[sVar];
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* setVariable(sVar, value)
|
|
||||||
*
|
|
||||||
* @this {Debugger8080}
|
|
||||||
* @param {string} sVar
|
|
||||||
* @param {number} value
|
|
||||||
*/
|
|
||||||
Debugger8080.prototype.setVariable = function(sVar, value)
|
|
||||||
{
|
|
||||||
this.aVariables[sVar] = value;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* comparePairs(p1, p2)
|
* comparePairs(p1, p2)
|
||||||
*
|
*
|
||||||
* @this {Debugger8080}
|
* @this {Debugger8080}
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,8 @@ try {
|
||||||
* Create is the constructor returned by require(). The only bit of fudging we do is
|
* Create is the constructor returned by require(). The only bit of fudging we do is
|
||||||
* overriding the constructor for component "cpu" with the constructor for "x86cpu",
|
* overriding the constructor for component "cpu" with the constructor for "x86cpu",
|
||||||
* because when a "cpu" definition is encountered, it's the "x86cpu" subclass that we
|
* because when a "cpu" definition is encountered, it's the "x86cpu" subclass that we
|
||||||
* actually want to create, not the "cpu" superclass.
|
* actually want to create, not the "cpu" superclass. See aSubClasses for the complete
|
||||||
|
* list of subclassed components we manage like that.
|
||||||
*
|
*
|
||||||
* TODO: Update the list of ignored (ie, ignorable) components.
|
* TODO: Update the list of ignored (ie, ignorable) components.
|
||||||
*/
|
*/
|
||||||
|
|
@ -84,7 +85,11 @@ var Component;
|
||||||
var dbg;
|
var dbg;
|
||||||
var aComponents = [];
|
var aComponents = [];
|
||||||
var asComponentsIgnore = ["embed","save"];
|
var asComponentsIgnore = ["embed","save"];
|
||||||
|
var aSubClasses = {
|
||||||
|
"pcx86/lib/x86cpu": "pcx86/lib/cpu",
|
||||||
|
"pcx86/lib/debugger": "shared/lib/debugger"
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* loadComponents(asFiles)
|
* loadComponents(asFiles)
|
||||||
*
|
*
|
||||||
|
|
@ -106,9 +111,17 @@ function loadComponents(asFiles)
|
||||||
* we'll want to access later (eg, "component" in getComponentByType()).
|
* we'll want to access later (eg, "component" in getComponentByType()).
|
||||||
*/
|
*/
|
||||||
var fn = require(lib + "../../../" + sFile);
|
var fn = require(lib + "../../../" + sFile);
|
||||||
if (sName == "x86cpu") {
|
var sSuperClass = null;
|
||||||
|
for (var s in aSubClasses) {
|
||||||
|
if (sFile.indexOf(s) >= 0) {
|
||||||
|
sSuperClass = aSubClasses[s];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sSuperClass) {
|
||||||
for (var j = 0; j < aComponents.length; j++) {
|
for (var j = 0; j < aComponents.length; j++) {
|
||||||
if (aComponents[j].name == "cpu") {
|
if (aComponents[j].path.indexOf(sSuperClass) >= 0) {
|
||||||
|
if (fDebug) console.log("updating superclass " + aComponents[j].path + " with subclass " + sFile);
|
||||||
aComponents[j].Create = fn;
|
aComponents[j].Create = fn;
|
||||||
sName = null;
|
sName = null;
|
||||||
break;
|
break;
|
||||||
|
|
@ -121,7 +134,7 @@ function loadComponents(asFiles)
|
||||||
}; // jshint ignore:line
|
}; // jshint ignore:line
|
||||||
}
|
}
|
||||||
if (sName) {
|
if (sName) {
|
||||||
aComponents.push({name: sName, Create: fn, objects: []});
|
aComponents.push({name: sName, path: sFile, Create: fn, objects: []});
|
||||||
}
|
}
|
||||||
if (sName == "defines") {
|
if (sName == "defines") {
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ if (NODE) {
|
||||||
* @extends Component
|
* @extends Component
|
||||||
* @param {Object} parmsBus
|
* @param {Object} parmsBus
|
||||||
* @param {X86CPU} cpu
|
* @param {X86CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {DebuggerX86} dbg
|
||||||
*/
|
*/
|
||||||
function Bus(parmsBus, cpu, dbg)
|
function Bus(parmsBus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1294,7 +1294,7 @@ ChipSet.prototype.setBinding = function(sHTMLType, sBinding, control, sValue)
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {X86CPU} cpu
|
* @param {X86CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {DebuggerX86} dbg
|
||||||
*/
|
*/
|
||||||
ChipSet.prototype.initBus = function(cmp, bus, cpu, dbg)
|
ChipSet.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -182,7 +182,7 @@ function Computer(parmsComputer, parmsMachine, fSuspended) {
|
||||||
Component.error("Unable to find CPU component");
|
Component.error("Unable to find CPU component");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.dbg = /** @type {Debugger} */ (Component.getComponentByType("Debugger", this.id));
|
this.dbg = /** @type {DebuggerX86} */ (Component.getComponentByType("Debugger", this.id));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enumerate all Video components for future updateVideo() calls.
|
* Enumerate all Video components for future updateVideo() calls.
|
||||||
|
|
|
||||||
|
|
@ -159,7 +159,7 @@ CPU.BUTTONS = ["power", "reset"];
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {CPU} cpu
|
* @param {CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {DebuggerX86} dbg
|
||||||
*/
|
*/
|
||||||
CPU.prototype.initBus = function(cmp, bus, cpu, dbg)
|
CPU.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -34,12 +34,12 @@
|
||||||
/**
|
/**
|
||||||
* @define {string}
|
* @define {string}
|
||||||
*/
|
*/
|
||||||
var APPCLASS = "pcx86"; // this @define is the default application class (eg, "pcx86", "c1pjs")
|
var APPCLASS = "pcx86"; // this @define is the default application class (eg, "pcx86", "c1pjs")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @define {string}
|
* @define {string}
|
||||||
*/
|
*/
|
||||||
var APPNAME = "PCx86"; // this @define is the default application name (eg, "PCx86", "C1Pjs")
|
var APPNAME = "PCx86"; // this @define is the default application name (eg, "PCx86", "C1Pjs")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @define {boolean}
|
* @define {boolean}
|
||||||
|
|
|
||||||
|
|
@ -811,7 +811,7 @@ var SectorInfo;
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {X86CPU} cpu
|
* @param {X86CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {DebuggerX86} dbg
|
||||||
*/
|
*/
|
||||||
Disk.prototype.initBus = function(cmp, bus, cpu, dbg) {
|
Disk.prototype.initBus = function(cmp, bus, cpu, dbg) {
|
||||||
this.dbg = dbg;
|
this.dbg = dbg;
|
||||||
|
|
|
||||||
|
|
@ -623,7 +623,7 @@ FDC.prototype.setBinding = function(sHTMLType, sBinding, control, sValue)
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {X86CPU} cpu
|
* @param {X86CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {DebuggerX86} dbg
|
||||||
*/
|
*/
|
||||||
FDC.prototype.initBus = function(cmp, bus, cpu, dbg)
|
FDC.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -594,7 +594,7 @@ HDC.prototype.setBinding = function(sHTMLType, sBinding, control, sValue)
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {X86CPU} cpu
|
* @param {X86CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {DebuggerX86} dbg
|
||||||
*/
|
*/
|
||||||
HDC.prototype.initBus = function(cmp, bus, cpu, dbg)
|
HDC.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -31,22 +31,6 @@
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
/*
|
|
||||||
* Components that previously used Debugger interrupt definitions by including:
|
|
||||||
*
|
|
||||||
* var Debugger = require("./debugger");
|
|
||||||
*
|
|
||||||
* and using:
|
|
||||||
*
|
|
||||||
* Debugger.INT.FOO
|
|
||||||
*
|
|
||||||
* must now instead include:
|
|
||||||
*
|
|
||||||
* var Interrupts = require("./interrupts");
|
|
||||||
*
|
|
||||||
* and then replace all occurrences of "Debugger.INT.FOO" with "Interrupts.FOO".
|
|
||||||
*/
|
|
||||||
|
|
||||||
var Interrupts = {
|
var Interrupts = {
|
||||||
VIDEO: 0x10,
|
VIDEO: 0x10,
|
||||||
DISK: 0x13,
|
DISK: 0x13,
|
||||||
|
|
@ -184,7 +168,7 @@ if (DEBUGGER) {
|
||||||
0x4A8: ["SAVE_PTR",4] // POINTER TO EGA PARAMETER CONTROL BLOCK
|
0x4A8: ["SAVE_PTR",4] // POINTER TO EGA PARAMETER CONTROL BLOCK
|
||||||
},
|
},
|
||||||
/*
|
/*
|
||||||
* See Debugger.prototype.replaceRegs() for the rules governing how register contents are replaced in the strings below.
|
* See DebuggerX86.prototype.replaceRegs() for the rules governing how register contents are replaced in the strings below.
|
||||||
*
|
*
|
||||||
* Replacements occur in the following order:
|
* Replacements occur in the following order:
|
||||||
*
|
*
|
||||||
|
|
@ -1546,7 +1530,7 @@ if (DEBUGGER) {
|
||||||
* INT 2E Execute command (*) (2.0+)
|
* INT 2E Execute command (*) (2.0+)
|
||||||
* Entry: DS:SI->command string-1 followed by a carriage return
|
* Entry: DS:SI->command string-1 followed by a carriage return
|
||||||
* Exit: All registers except CS and IP are destroyed
|
* Exit: All registers except CS and IP are destroyed
|
||||||
* Note: This function is not re-enterant and should not be issued from a
|
* Note: This function is not re-entrant and should not be issued from a
|
||||||
* batch file.
|
* batch file.
|
||||||
*
|
*
|
||||||
* INT 2F Multiplex (3.0+)
|
* INT 2F Multiplex (3.0+)
|
||||||
|
|
@ -1922,7 +1906,7 @@ if (DEBUGGER) {
|
||||||
*
|
*
|
||||||
* Stacks descriptor (8 bytes)
|
* Stacks descriptor (8 bytes)
|
||||||
* 00 Flag (0=free,1=in use)
|
* 00 Flag (0=free,1=in use)
|
||||||
* 02 Savearea for SS:SP
|
* 02 Save area for SS:SP
|
||||||
* 06 Offset of end of stack
|
* 06 Offset of end of stack
|
||||||
*
|
*
|
||||||
* Device driver header (12h bytes)
|
* Device driver header (12h bytes)
|
||||||
|
|
|
||||||
|
|
@ -1324,7 +1324,7 @@ Keyboard.prototype.findBinding = function(simCode, sType, fDown)
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {X86CPU} cpu
|
* @param {X86CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {DebuggerX86} dbg
|
||||||
*/
|
*/
|
||||||
Keyboard.prototype.initBus = function(cmp, bus, cpu, dbg)
|
Keyboard.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -288,7 +288,7 @@ Memory.prototype = {
|
||||||
* @this {Memory}
|
* @this {Memory}
|
||||||
* @param {Memory} mem
|
* @param {Memory} mem
|
||||||
* @param {number} [type]
|
* @param {number} [type]
|
||||||
* @param {Debugger} [dbg]
|
* @param {DebuggerX86} [dbg]
|
||||||
*/
|
*/
|
||||||
clone: function(mem, type, dbg) {
|
clone: function(mem, type, dbg) {
|
||||||
/*
|
/*
|
||||||
|
|
@ -620,7 +620,7 @@ Memory.prototype = {
|
||||||
* copyBreakpoints(dbg, mem)
|
* copyBreakpoints(dbg, mem)
|
||||||
*
|
*
|
||||||
* @this {Memory}
|
* @this {Memory}
|
||||||
* @param {Debugger} [dbg]
|
* @param {DebuggerX86} [dbg]
|
||||||
* @param {Memory} [mem] (outgoing Memory block to copy breakpoints from, if any)
|
* @param {Memory} [mem] (outgoing Memory block to copy breakpoints from, if any)
|
||||||
*/
|
*/
|
||||||
copyBreakpoints: function(dbg, mem) {
|
copyBreakpoints: function(dbg, mem) {
|
||||||
|
|
|
||||||
|
|
@ -31,22 +31,6 @@
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
/*
|
|
||||||
* Components that previously used Debugger messages definitions by including:
|
|
||||||
*
|
|
||||||
* var Debugger = require("./debugger");
|
|
||||||
*
|
|
||||||
* and using:
|
|
||||||
*
|
|
||||||
* Debugger.MESSAGE.FOO
|
|
||||||
*
|
|
||||||
* must now instead include:
|
|
||||||
*
|
|
||||||
* var Messages = require("./messages");
|
|
||||||
*
|
|
||||||
* and then replace all occurrences of "Debugger.MESSAGE.FOO" with "Messages.FOO".
|
|
||||||
*/
|
|
||||||
|
|
||||||
var Messages = {
|
var Messages = {
|
||||||
CPU: 0x00000001,
|
CPU: 0x00000001,
|
||||||
SEG: 0x00000002,
|
SEG: 0x00000002,
|
||||||
|
|
|
||||||
|
|
@ -181,7 +181,7 @@ Mouse.BUTTON = {
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {X86CPU} cpu
|
* @param {X86CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {DebuggerX86} dbg
|
||||||
*/
|
*/
|
||||||
Mouse.prototype.initBus = function(cmp, bus, cpu, dbg)
|
Mouse.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -341,7 +341,7 @@ Panel.prototype.setBinding = function(sHTMLType, sBinding, control, sValue)
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {X86CPU} cpu
|
* @param {X86CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {DebuggerX86} dbg
|
||||||
*/
|
*/
|
||||||
Panel.prototype.initBus = function(cmp, bus, cpu, dbg)
|
Panel.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -230,7 +230,7 @@ ParallelPort.prototype.setBinding = function(sHTMLType, sBinding, control, sValu
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {X86CPU} cpu
|
* @param {X86CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {DebuggerX86} dbg
|
||||||
*/
|
*/
|
||||||
ParallelPort.prototype.initBus = function(cmp, bus, cpu, dbg)
|
ParallelPort.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,7 @@ Component.subclass(RAM);
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {X86CPU} cpu
|
* @param {X86CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {DebuggerX86} dbg
|
||||||
*/
|
*/
|
||||||
RAM.prototype.initBus = function(cmp, bus, cpu, dbg)
|
RAM.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -162,7 +162,7 @@ ROM.BIOS.RESET_FLAG_WARMBOOT = 0x1234; // value stored at ROM.BIOS.RESET_FLAG t
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {X86CPU} cpu
|
* @param {X86CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {DebuggerX86} dbg
|
||||||
*/
|
*/
|
||||||
ROM.prototype.initBus = function(cmp, bus, cpu, dbg)
|
ROM.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -456,7 +456,7 @@ SerialPort.prototype.setBinding = function(sHTMLType, sBinding, control, sValue)
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {X86CPU} cpu
|
* @param {X86CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {DebuggerX86} dbg
|
||||||
*/
|
*/
|
||||||
SerialPort.prototype.initBus = function(cmp, bus, cpu, dbg)
|
SerialPort.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2899,7 +2899,7 @@ Video.TOUCH = {
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {X86CPU} cpu
|
* @param {X86CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {DebuggerX86} dbg
|
||||||
*/
|
*/
|
||||||
Video.prototype.initBus = function(cmp, bus, cpu, dbg)
|
Video.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -163,7 +163,7 @@ Component.subclass(X86FPU);
|
||||||
* @param {Computer} cmp
|
* @param {Computer} cmp
|
||||||
* @param {Bus} bus
|
* @param {Bus} bus
|
||||||
* @param {X86CPU} cpu
|
* @param {X86CPU} cpu
|
||||||
* @param {Debugger} dbg
|
* @param {DebuggerX86} dbg
|
||||||
*/
|
*/
|
||||||
X86FPU.prototype.initBus = function(cmp, bus, cpu, dbg)
|
X86FPU.prototype.initBus = function(cmp, bus, cpu, dbg)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ if (DEBUGGER) {
|
||||||
var usr = require("../../shared/lib/usrlib");
|
var usr = require("../../shared/lib/usrlib");
|
||||||
var web = require("../../shared/lib/weblib");
|
var web = require("../../shared/lib/weblib");
|
||||||
var Component = require("../../shared/lib/component");
|
var Component = require("../../shared/lib/component");
|
||||||
|
var Debugger = require("../../shared/lib/debugger");
|
||||||
var State = require("../../shared/lib/state");
|
var State = require("../../shared/lib/state");
|
||||||
var PDP11 = require("./defines");
|
var PDP11 = require("./defines");
|
||||||
var CPUPDP11 = require("./cpu");
|
var CPUPDP11 = require("./cpu");
|
||||||
|
|
@ -69,7 +70,7 @@ var DbgAddrPDP11;
|
||||||
* DebuggerPDP11(parmsDbg)
|
* DebuggerPDP11(parmsDbg)
|
||||||
*
|
*
|
||||||
* @constructor
|
* @constructor
|
||||||
* @extends Component
|
* @extends Debugger
|
||||||
* @param {Object} parmsDbg
|
* @param {Object} parmsDbg
|
||||||
*
|
*
|
||||||
* The DebuggerPDP11 component supports the following optional (parmsDbg) properties:
|
* The DebuggerPDP11 component supports the following optional (parmsDbg) properties:
|
||||||
|
|
@ -86,18 +87,7 @@ function DebuggerPDP11(parmsDbg)
|
||||||
{
|
{
|
||||||
if (DEBUGGER) {
|
if (DEBUGGER) {
|
||||||
|
|
||||||
Component.call(this, "Debugger", parmsDbg, DebuggerPDP11);
|
Debugger.call(this, parmsDbg);
|
||||||
|
|
||||||
/*
|
|
||||||
* These keep track of instruction activity, but only when tracing or when DebuggerPDP11 checks
|
|
||||||
* have been enabled (eg, one or more breakpoints have been set).
|
|
||||||
*
|
|
||||||
* They are zeroed by the reset() notification handler. cInstructions is advanced by
|
|
||||||
* stepCPU() and checkInstruction() calls. nCycles is updated by every stepCPU() or stop()
|
|
||||||
* call and simply represents the number of cycles performed by the last run of instructions.
|
|
||||||
*/
|
|
||||||
this.nCycles = 0;
|
|
||||||
this.cOpcodes = this.cOpcodesStart = 0;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Most commands that require an address call parseAddr(), which defaults to dbgAddrNextCode
|
* Most commands that require an address call parseAddr(), which defaults to dbgAddrNextCode
|
||||||
|
|
@ -110,13 +100,6 @@ function DebuggerPDP11(parmsDbg)
|
||||||
this.dbgAddrNextCode = this.newAddr();
|
this.dbgAddrNextCode = this.newAddr();
|
||||||
this.dbgAddrNextData = this.newAddr();
|
this.dbgAddrNextData = this.newAddr();
|
||||||
|
|
||||||
/*
|
|
||||||
* This maintains command history. New commands are inserted at index 0 of the array.
|
|
||||||
* When Enter is pressed on an empty input buffer, we default to the command at aPrevCmds[0].
|
|
||||||
*/
|
|
||||||
this.iPrevCmd = -1;
|
|
||||||
this.aPrevCmds = [];
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* fAssemble is true when "assemble mode" is active, false when not.
|
* fAssemble is true when "assemble mode" is active, false when not.
|
||||||
*/
|
*/
|
||||||
|
|
@ -137,21 +120,6 @@ function DebuggerPDP11(parmsDbg)
|
||||||
*/
|
*/
|
||||||
this.aSymbolTable = [];
|
this.aSymbolTable = [];
|
||||||
|
|
||||||
/*
|
|
||||||
* aVariables is an object with properties that grows as setVariable() assigns more variables;
|
|
||||||
* each property corresponds to one variable, where the property name is the variable name (ie,
|
|
||||||
* a string beginning with a letter or underscore, followed by zero or more additional letters,
|
|
||||||
* digits, or underscores) and the property value is the variable's numeric value. See doVar()
|
|
||||||
* and setVariable() for details.
|
|
||||||
*
|
|
||||||
* Note that parseValue(), through its reliance on str.parseInt(), assumes a default base of 16
|
|
||||||
* if no base is explicitly indicated (eg, a trailing decimal period), and if you define variable
|
|
||||||
* names containing exclusively hex alpha characters (a-f), those variables will take precedence
|
|
||||||
* over the corresponding hex values. In other words, if you define variables "a" and "b", you
|
|
||||||
* will no longer be able to simply type "a" or "b" to specify the decimal values 10 or 11.
|
|
||||||
*/
|
|
||||||
this.aVariables = {};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* clearBreakpoints() initializes the breakpoints lists: aBreakExec is a list of addresses
|
* clearBreakpoints() initializes the breakpoints lists: aBreakExec is a list of addresses
|
||||||
* to halt on whenever attempting to execute an instruction at the corresponding address,
|
* to halt on whenever attempting to execute an instruction at the corresponding address,
|
||||||
|
|
@ -213,7 +181,7 @@ function DebuggerPDP11(parmsDbg)
|
||||||
|
|
||||||
if (DEBUGGER) {
|
if (DEBUGGER) {
|
||||||
|
|
||||||
Component.subclass(DebuggerPDP11);
|
Component.subclass(DebuggerPDP11, Debugger);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* NOTE: Every DebuggerPDP11 property from here to the first prototype function definition (initBus()) is a
|
* NOTE: Every DebuggerPDP11 property from here to the first prototype function definition (initBus()) is a
|
||||||
|
|
@ -2138,379 +2106,6 @@ if (DEBUGGER) {
|
||||||
return "no regs";
|
return "no regs";
|
||||||
};
|
};
|
||||||
|
|
||||||
DebuggerPDP11.aBinOpPrecedence = {
|
|
||||||
'||': 0, // logical OR
|
|
||||||
'&&': 1, // logical AND
|
|
||||||
'|': 2, // bitwise OR
|
|
||||||
'^': 3, // bitwise XOR
|
|
||||||
'&': 4, // bitwise AND
|
|
||||||
'!=': 5, // inequality
|
|
||||||
'==': 5, // equality
|
|
||||||
'>=': 6, // greater than or equal to
|
|
||||||
'>': 6, // greater than
|
|
||||||
'<=': 6, // less than or equal to
|
|
||||||
'<': 6, // less than
|
|
||||||
'>>>': 7, // unsigned bitwise right shift
|
|
||||||
'>>': 7, // bitwise right shift
|
|
||||||
'<<': 7, // bitwise left shift
|
|
||||||
'-': 8, // subtraction
|
|
||||||
'+': 8, // addition
|
|
||||||
'%': 9, // remainder
|
|
||||||
'/': 9, // division
|
|
||||||
'*': 9 // multiplication
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* evalExpression(aVals, aOps, cOps)
|
|
||||||
*
|
|
||||||
* In Node, if you set a variable to 0x80000001; ie:
|
|
||||||
*
|
|
||||||
* foo=0x80000001|0
|
|
||||||
*
|
|
||||||
* and then calculate foo*foo using "(foo*foo).toString(2)", the result is:
|
|
||||||
*
|
|
||||||
* '11111111111111111111111111111100000000000000000000000000000000'
|
|
||||||
*
|
|
||||||
* which is slightly incorrect because it has overflowed JavaScript's floating-point precision.
|
|
||||||
*
|
|
||||||
* 0x80000001 in decimal is -2147483647, so the product is 4611686014132420609, which is 0x3FFFFFFF00000001.
|
|
||||||
*
|
|
||||||
* @this {DebuggerPDP11}
|
|
||||||
* @param {Array.<number>} aVals
|
|
||||||
* @param {Array.<string>} aOps
|
|
||||||
* @param {number} [cOps] (default is all)
|
|
||||||
* @return {boolean} true if successful, false if error
|
|
||||||
*/
|
|
||||||
DebuggerPDP11.prototype.evalExpression = function(aVals, aOps, cOps)
|
|
||||||
{
|
|
||||||
cOps = cOps || -1;
|
|
||||||
while (cOps-- && aOps.length) {
|
|
||||||
var chOp = aOps.pop();
|
|
||||||
if (aVals.length < 2) return false;
|
|
||||||
var valNew;
|
|
||||||
var val2 = aVals.pop();
|
|
||||||
var val1 = aVals.pop();
|
|
||||||
switch(chOp) {
|
|
||||||
case '*':
|
|
||||||
valNew = val1 * val2;
|
|
||||||
break;
|
|
||||||
case '/':
|
|
||||||
if (!val2) return false;
|
|
||||||
valNew = val1 / val2;
|
|
||||||
break;
|
|
||||||
case '%':
|
|
||||||
if (!val2) return false;
|
|
||||||
valNew = val1 % val2;
|
|
||||||
break;
|
|
||||||
case '+':
|
|
||||||
valNew = val1 + val2;
|
|
||||||
break;
|
|
||||||
case '-':
|
|
||||||
valNew = val1 - val2;
|
|
||||||
break;
|
|
||||||
case '<<':
|
|
||||||
valNew = val1 << val2;
|
|
||||||
break;
|
|
||||||
case '>>':
|
|
||||||
valNew = val1 >> val2;
|
|
||||||
break;
|
|
||||||
case '>>>':
|
|
||||||
valNew = val1 >>> val2;
|
|
||||||
break;
|
|
||||||
case '<':
|
|
||||||
valNew = (val1 < val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
case '<=':
|
|
||||||
valNew = (val1 <= val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
case '>':
|
|
||||||
valNew = (val1 > val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
case '>=':
|
|
||||||
valNew = (val1 >= val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
case '==':
|
|
||||||
valNew = (val1 == val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
case '!=':
|
|
||||||
valNew = (val1 != val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
case '&':
|
|
||||||
valNew = val1 & val2;
|
|
||||||
break;
|
|
||||||
case '^':
|
|
||||||
valNew = val1 ^ val2;
|
|
||||||
break;
|
|
||||||
case '|':
|
|
||||||
valNew = val1 | val2;
|
|
||||||
break;
|
|
||||||
case '&&':
|
|
||||||
valNew = (val1 && val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
case '||':
|
|
||||||
valNew = (val1 || val2? 1 : 0);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
aVals.push(valNew|0);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* parseExpression(sExp, fPrint)
|
|
||||||
*
|
|
||||||
* A quick-and-dirty expression parser. It takes an expression like:
|
|
||||||
*
|
|
||||||
* EDX+EDX*4+12345678
|
|
||||||
*
|
|
||||||
* and builds a value stack in aVals and a "binop" (binary operator) stack in aOps:
|
|
||||||
*
|
|
||||||
* aVals aOps
|
|
||||||
* ----- ----
|
|
||||||
* EDX +
|
|
||||||
* EDX *
|
|
||||||
* 4 +
|
|
||||||
* ...
|
|
||||||
*
|
|
||||||
* We pop 1 "binop" from aOps and 2 values from aVals whenever a "binop" of lower priority than its
|
|
||||||
* predecessor is encountered, evaluate, and push the result back onto aVals.
|
|
||||||
*
|
|
||||||
* Unary operators like '~' and ternary operators like '?:' are not supported; neither are parentheses.
|
|
||||||
*
|
|
||||||
* However, parseReference() now makes it possible to write parenthetical-style sub-expressions by using
|
|
||||||
* {...} (braces), as well as address references by using [...] (brackets).
|
|
||||||
*
|
|
||||||
* Why am I using braces instead of parentheses for sub-expressions? Because parseReference() serves
|
|
||||||
* multiple purposes, the other being reference replacement in message strings passing through replaceRegs(),
|
|
||||||
* and I didn't want parentheses taking on a new meaning in message strings.
|
|
||||||
*
|
|
||||||
* @this {DebuggerPDP11}
|
|
||||||
* @param {string|undefined} sExp
|
|
||||||
* @param {boolean} [fPrint] is true to print all resolved values, false for quiet parsing
|
|
||||||
* @return {number|undefined} numeric value, or undefined if sExp contains any undefined or invalid values
|
|
||||||
*/
|
|
||||||
DebuggerPDP11.prototype.parseExpression = function(sExp, fPrint)
|
|
||||||
{
|
|
||||||
var value;
|
|
||||||
|
|
||||||
if (sExp) {
|
|
||||||
/*
|
|
||||||
* First process (and eliminate) any references, aka sub-expressions.
|
|
||||||
*/
|
|
||||||
sExp = this.parseReference(sExp);
|
|
||||||
|
|
||||||
var i = 0;
|
|
||||||
var fError = false;
|
|
||||||
var sExpOrig = sExp;
|
|
||||||
var aVals = [], aOps = [];
|
|
||||||
/*
|
|
||||||
* All browsers (including, I believe, IE9 and up) support the following idiosyncrasy of a regexp split():
|
|
||||||
* when the regexp uses a capturing pattern, the resulting array will include entries for all the pattern
|
|
||||||
* matches along with the non-matches. This effectively means that, in the set of expressions that we
|
|
||||||
* support, all even entries in asValues will contain "values" and all odd entries will contain "operators".
|
|
||||||
*
|
|
||||||
* And although I tried to list the supported operators in "precedential" order, bitwise operators must
|
|
||||||
* be out-of-order so that we don't mistakenly match either '>' or '<' when they're part of '>>' or '<<'.
|
|
||||||
*/
|
|
||||||
var regExp = /(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/;
|
|
||||||
var asValues = sExp.split(regExp);
|
|
||||||
while (i < asValues.length) {
|
|
||||||
var sValue = asValues[i++];
|
|
||||||
var cchValue = sValue.length;
|
|
||||||
var s = str.trim(sValue);
|
|
||||||
if (!s) {
|
|
||||||
fError = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
var v = this.parseValue(s, null, fPrint === false);
|
|
||||||
if (v === undefined) {
|
|
||||||
fError = true;
|
|
||||||
fPrint = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
aVals.push(v);
|
|
||||||
if (i == asValues.length) break;
|
|
||||||
var sOp = asValues[i++], cchOp = sOp.length;
|
|
||||||
this.assert(DebuggerPDP11.aBinOpPrecedence[sOp] != null);
|
|
||||||
if (aOps.length && DebuggerPDP11.aBinOpPrecedence[sOp] < DebuggerPDP11.aBinOpPrecedence[aOps[aOps.length-1]]) {
|
|
||||||
this.evalExpression(aVals, aOps, 1);
|
|
||||||
}
|
|
||||||
aOps.push(sOp);
|
|
||||||
sExp = sExp.substr(cchValue + cchOp);
|
|
||||||
}
|
|
||||||
if (!this.evalExpression(aVals, aOps) || aVals.length != 1) {
|
|
||||||
fError = true;
|
|
||||||
}
|
|
||||||
if (!fError) {
|
|
||||||
value = aVals.pop();
|
|
||||||
if (fPrint) this.printValue(null, value);
|
|
||||||
} else {
|
|
||||||
if (fPrint) this.println("error parsing '" + sExpOrig + "' at character " + (sExpOrig.length - sExp.length));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* parseReference(s)
|
|
||||||
*
|
|
||||||
* Returns the given string with any "{expression}" sequences replaced with the value of the expression,
|
|
||||||
* and any "[address]" references replaced with the contents of the address. Expressions are parsed BEFORE
|
|
||||||
* addresses. Owing to this function's simplistic parsing, nested braces/brackets are not supported
|
|
||||||
* (define intermediate variables if needed).
|
|
||||||
*
|
|
||||||
* @this {DebuggerPDP11}
|
|
||||||
* @param {string} s
|
|
||||||
* @return {string}
|
|
||||||
*/
|
|
||||||
DebuggerPDP11.prototype.parseReference = function(s)
|
|
||||||
{
|
|
||||||
var a;
|
|
||||||
while (a = s.match(/\{(.*?)}/)) {
|
|
||||||
if (a[1].indexOf('{') >= 0) break; // unsupported nested brace(s)
|
|
||||||
var value = this.parseExpression(a[1]);
|
|
||||||
s = s.replace('{' + a[1] + '}', value != null? str.toHex(value) : "undefined");
|
|
||||||
}
|
|
||||||
while (a = s.match(/\[(.*?)]/)) {
|
|
||||||
if (a[1].indexOf('[') >= 0) break; // unsupported nested bracket(s)
|
|
||||||
var dbgAddr = this.parseAddr(a[1]);
|
|
||||||
s = s.replace('[' + a[1] + ']', dbgAddr? str.toHex(this.getWord(dbgAddr), 4) : "undefined");
|
|
||||||
}
|
|
||||||
return this.parseSysVars(s);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* parseSysVars(s)
|
|
||||||
*
|
|
||||||
* Returns the given string with any recognized "$var" replaced with its value; eg:
|
|
||||||
*
|
|
||||||
* $ops: the number of opcodes executed since the last time it was displayed (or reset)
|
|
||||||
*
|
|
||||||
* @this {DebuggerPDP11}
|
|
||||||
* @param {string} s
|
|
||||||
* @return {string}
|
|
||||||
*/
|
|
||||||
DebuggerPDP11.prototype.parseSysVars = function(s)
|
|
||||||
{
|
|
||||||
var a;
|
|
||||||
while (a = s.match(/\$([a-z]+)/i)) {
|
|
||||||
var v = null;
|
|
||||||
switch(a[1].toLowerCase()) {
|
|
||||||
case "ops":
|
|
||||||
v = this.cOpcodes - this.cOpcodesStart;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (v == null) break;
|
|
||||||
s = s.replace(a[0], v.toString());
|
|
||||||
}
|
|
||||||
return s;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* parseValue(sValue, sName, fQuiet)
|
|
||||||
*
|
|
||||||
* @this {DebuggerPDP11}
|
|
||||||
* @param {string|undefined} sValue
|
|
||||||
* @param {string|null} [sName] is the name of the value, if any
|
|
||||||
* @param {boolean} [fQuiet]
|
|
||||||
* @return {number|undefined} numeric value, or undefined if sValue is either undefined or invalid
|
|
||||||
*/
|
|
||||||
DebuggerPDP11.prototype.parseValue = function(sValue, sName, fQuiet)
|
|
||||||
{
|
|
||||||
var value;
|
|
||||||
if (sValue !== undefined) {
|
|
||||||
var iReg = this.getRegIndex(sValue);
|
|
||||||
if (iReg >= 0) {
|
|
||||||
value = this.getRegValue(iReg);
|
|
||||||
} else {
|
|
||||||
value = this.getVariable(sValue);
|
|
||||||
if (value === undefined) value = str.parseInt(sValue);
|
|
||||||
}
|
|
||||||
if (value === undefined && !fQuiet) this.println("invalid " + (sName? sName : "value") + ": " + sValue);
|
|
||||||
} else {
|
|
||||||
if (!fQuiet) this.println("missing " + (sName || "value"));
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* printValue(sVar, value)
|
|
||||||
*
|
|
||||||
* @this {DebuggerPDP11}
|
|
||||||
* @param {string|null} sVar
|
|
||||||
* @param {number|undefined} value
|
|
||||||
* @return {boolean} true if value defined, false if not
|
|
||||||
*/
|
|
||||||
DebuggerPDP11.prototype.printValue = function(sVar, value)
|
|
||||||
{
|
|
||||||
var sValue;
|
|
||||||
var fDefined = false;
|
|
||||||
if (value !== undefined) {
|
|
||||||
fDefined = true;
|
|
||||||
sValue = str.toHexLong(value) + " " + value + ". (" + str.toBinBytes(value) + ")";
|
|
||||||
}
|
|
||||||
sVar = (sVar != null? (sVar + ": ") : "");
|
|
||||||
this.println(sVar + sValue);
|
|
||||||
return fDefined;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* printVariable(sVar)
|
|
||||||
*
|
|
||||||
* @this {DebuggerPDP11}
|
|
||||||
* @param {string} [sVar]
|
|
||||||
* @return {boolean} true if all value(s) defined, false if not
|
|
||||||
*/
|
|
||||||
DebuggerPDP11.prototype.printVariable = function(sVar)
|
|
||||||
{
|
|
||||||
if (sVar) {
|
|
||||||
return this.printValue(sVar, this.aVariables[sVar]);
|
|
||||||
}
|
|
||||||
var cVariables = 0;
|
|
||||||
for (sVar in this.aVariables) {
|
|
||||||
this.printValue(sVar, this.aVariables[sVar]);
|
|
||||||
cVariables++;
|
|
||||||
}
|
|
||||||
return cVariables > 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* delVariable(sVar)
|
|
||||||
*
|
|
||||||
* @this {DebuggerPDP11}
|
|
||||||
* @param {string} sVar
|
|
||||||
*/
|
|
||||||
DebuggerPDP11.prototype.delVariable = function(sVar)
|
|
||||||
{
|
|
||||||
delete this.aVariables[sVar];
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* getVariable(sVar)
|
|
||||||
*
|
|
||||||
* @this {DebuggerPDP11}
|
|
||||||
* @param {string} sVar
|
|
||||||
* @return {number|undefined}
|
|
||||||
*/
|
|
||||||
DebuggerPDP11.prototype.getVariable = function(sVar)
|
|
||||||
{
|
|
||||||
return this.aVariables[sVar];
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* setVariable(sVar, value)
|
|
||||||
*
|
|
||||||
* @this {DebuggerPDP11}
|
|
||||||
* @param {string} sVar
|
|
||||||
* @param {number} value
|
|
||||||
*/
|
|
||||||
DebuggerPDP11.prototype.setVariable = function(sVar, value)
|
|
||||||
{
|
|
||||||
this.aVariables[sVar] = value;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* comparePairs(p1, p2)
|
* comparePairs(p1, p2)
|
||||||
*
|
*
|
||||||
|
|
|
||||||
473
modules/shared/lib/debugger.js
Normal file
473
modules/shared/lib/debugger.js
Normal file
|
|
@ -0,0 +1,473 @@
|
||||||
|
/**
|
||||||
|
* @fileoverview Common PCjs Debugger support.
|
||||||
|
* @author <a href="mailto:Jeff@pcjs.org">Jeff Parsons</a>
|
||||||
|
* @version 1.0
|
||||||
|
* Created 2012-Jun-21
|
||||||
|
*
|
||||||
|
* Copyright © 2012-2016 Jeff Parsons <Jeff@pcjs.org>
|
||||||
|
*
|
||||||
|
* This file is part of PCjs, a computer emulation software project at <http://pcjs.org/>.
|
||||||
|
*
|
||||||
|
* PCjs is free software: you can redistribute it and/or modify it under the terms of the
|
||||||
|
* GNU General Public License as published by the Free Software Foundation, either version 3
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* PCjs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
|
||||||
|
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with PCjs. If not,
|
||||||
|
* see <http://www.gnu.org/licenses/gpl.html>.
|
||||||
|
*
|
||||||
|
* You are required to include the above copyright notice in every source code file of every
|
||||||
|
* copy or modified version of this work, and to display that copyright notice on every screen
|
||||||
|
* that loads or runs any version of this software (see COPYRIGHT in /modules/shared/lib/defines.js).
|
||||||
|
*
|
||||||
|
* Some PCjs files also attempt to load external resource files, such as character-image files,
|
||||||
|
* ROM files, and disk image files. Those external resource files are not considered part of PCjs
|
||||||
|
* for purposes of the GNU General Public License, and the author does not claim any copyright
|
||||||
|
* as to their contents.
|
||||||
|
*/
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
if (DEBUGGER) {
|
||||||
|
if (NODE) {
|
||||||
|
var str = require("../../shared/lib/strlib");
|
||||||
|
var Component = require("../../shared/lib/component");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Debugger(parmsDbg)
|
||||||
|
*
|
||||||
|
* @constructor
|
||||||
|
* @extends Component
|
||||||
|
* @param {Object} parmsDbg
|
||||||
|
*
|
||||||
|
* The Debugger component is a shared component containing a subset of functionality used by
|
||||||
|
* the other CPU-specific Debuggers (eg, DebuggerX86). Over time, the goal is to factor out as
|
||||||
|
* much common debugging support from those components into this one.
|
||||||
|
*/
|
||||||
|
function Debugger(parmsDbg)
|
||||||
|
{
|
||||||
|
if (DEBUGGER) {
|
||||||
|
|
||||||
|
Component.call(this, "Debugger", parmsDbg, Debugger);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These keep track of instruction activity, but only when tracing or when Debugger checks
|
||||||
|
* have been enabled (eg, one or more breakpoints have been set).
|
||||||
|
*
|
||||||
|
* They are zeroed by the reset() notification handler. cInstructions is advanced by
|
||||||
|
* stepCPU() and checkInstruction() calls. nCycles is updated by every stepCPU() or stop()
|
||||||
|
* call and simply represents the number of cycles performed by the last run of instructions.
|
||||||
|
*/
|
||||||
|
this.nCycles = 0;
|
||||||
|
this.cOpcodes = this.cOpcodesStart = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This maintains command history. New commands are inserted at index 0 of the array.
|
||||||
|
* When Enter is pressed on an empty input buffer, we default to the command at aPrevCmds[0].
|
||||||
|
*/
|
||||||
|
this.iPrevCmd = -1;
|
||||||
|
this.aPrevCmds = [];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* aVariables is an object with properties that grows as setVariable() assigns more variables;
|
||||||
|
* each property corresponds to one variable, where the property name is the variable name (ie,
|
||||||
|
* a string beginning with a letter or underscore, followed by zero or more additional letters,
|
||||||
|
* digits, or underscores) and the property value is the variable's numeric value. See doVar()
|
||||||
|
* and setVariable() for details.
|
||||||
|
*
|
||||||
|
* Note that parseValue(), through its reliance on str.parseInt(), assumes a default base of 16
|
||||||
|
* if no base is explicitly indicated (eg, a trailing decimal period), and if you define variable
|
||||||
|
* names containing exclusively hex alpha characters (a-f), those variables will take precedence
|
||||||
|
* over the corresponding hex values. In other words, if you define variables "a" and "b", you
|
||||||
|
* will no longer be able to simply type "a" or "b" to specify the decimal values 10 or 11.
|
||||||
|
*/
|
||||||
|
this.aVariables = {};
|
||||||
|
|
||||||
|
} // endif DEBUGGER
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DEBUGGER) {
|
||||||
|
|
||||||
|
Component.subclass(Debugger);
|
||||||
|
|
||||||
|
Debugger.aBinOpPrecedence = {
|
||||||
|
'||': 0, // logical OR
|
||||||
|
'&&': 1, // logical AND
|
||||||
|
'|': 2, // bitwise OR
|
||||||
|
'^': 3, // bitwise XOR
|
||||||
|
'&': 4, // bitwise AND
|
||||||
|
'!=': 5, // inequality
|
||||||
|
'==': 5, // equality
|
||||||
|
'>=': 6, // greater than or equal to
|
||||||
|
'>': 6, // greater than
|
||||||
|
'<=': 6, // less than or equal to
|
||||||
|
'<': 6, // less than
|
||||||
|
'>>>': 7, // unsigned bitwise right shift
|
||||||
|
'>>': 7, // bitwise right shift
|
||||||
|
'<<': 7, // bitwise left shift
|
||||||
|
'-': 8, // subtraction
|
||||||
|
'+': 8, // addition
|
||||||
|
'%': 9, // remainder
|
||||||
|
'/': 9, // division
|
||||||
|
'*': 9 // multiplication
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* evalExpression(aVals, aOps, cOps)
|
||||||
|
*
|
||||||
|
* In Node, if you set a variable to 0x80000001; ie:
|
||||||
|
*
|
||||||
|
* foo=0x80000001|0
|
||||||
|
*
|
||||||
|
* and then calculate foo*foo using "(foo*foo).toString(2)", the result is:
|
||||||
|
*
|
||||||
|
* '11111111111111111111111111111100000000000000000000000000000000'
|
||||||
|
*
|
||||||
|
* which is slightly incorrect because it has overflowed JavaScript's floating-point precision.
|
||||||
|
*
|
||||||
|
* 0x80000001 in decimal is -2147483647, so the product is 4611686014132420609, which is 0x3FFFFFFF00000001.
|
||||||
|
*
|
||||||
|
* @this {Debugger}
|
||||||
|
* @param {Array.<number>} aVals
|
||||||
|
* @param {Array.<string>} aOps
|
||||||
|
* @param {number} [cOps] (default is all)
|
||||||
|
* @return {boolean} true if successful, false if error
|
||||||
|
*/
|
||||||
|
Debugger.prototype.evalExpression = function(aVals, aOps, cOps)
|
||||||
|
{
|
||||||
|
cOps = cOps || -1;
|
||||||
|
while (cOps-- && aOps.length) {
|
||||||
|
var chOp = aOps.pop();
|
||||||
|
if (aVals.length < 2) return false;
|
||||||
|
var valNew;
|
||||||
|
var val2 = aVals.pop();
|
||||||
|
var val1 = aVals.pop();
|
||||||
|
switch(chOp) {
|
||||||
|
case '*':
|
||||||
|
valNew = val1 * val2;
|
||||||
|
break;
|
||||||
|
case '/':
|
||||||
|
if (!val2) return false;
|
||||||
|
valNew = val1 / val2;
|
||||||
|
break;
|
||||||
|
case '%':
|
||||||
|
if (!val2) return false;
|
||||||
|
valNew = val1 % val2;
|
||||||
|
break;
|
||||||
|
case '+':
|
||||||
|
valNew = val1 + val2;
|
||||||
|
break;
|
||||||
|
case '-':
|
||||||
|
valNew = val1 - val2;
|
||||||
|
break;
|
||||||
|
case '<<':
|
||||||
|
valNew = val1 << val2;
|
||||||
|
break;
|
||||||
|
case '>>':
|
||||||
|
valNew = val1 >> val2;
|
||||||
|
break;
|
||||||
|
case '>>>':
|
||||||
|
valNew = val1 >>> val2;
|
||||||
|
break;
|
||||||
|
case '<':
|
||||||
|
valNew = (val1 < val2? 1 : 0);
|
||||||
|
break;
|
||||||
|
case '<=':
|
||||||
|
valNew = (val1 <= val2? 1 : 0);
|
||||||
|
break;
|
||||||
|
case '>':
|
||||||
|
valNew = (val1 > val2? 1 : 0);
|
||||||
|
break;
|
||||||
|
case '>=':
|
||||||
|
valNew = (val1 >= val2? 1 : 0);
|
||||||
|
break;
|
||||||
|
case '==':
|
||||||
|
valNew = (val1 == val2? 1 : 0);
|
||||||
|
break;
|
||||||
|
case '!=':
|
||||||
|
valNew = (val1 != val2? 1 : 0);
|
||||||
|
break;
|
||||||
|
case '&':
|
||||||
|
valNew = val1 & val2;
|
||||||
|
break;
|
||||||
|
case '^':
|
||||||
|
valNew = val1 ^ val2;
|
||||||
|
break;
|
||||||
|
case '|':
|
||||||
|
valNew = val1 | val2;
|
||||||
|
break;
|
||||||
|
case '&&':
|
||||||
|
valNew = (val1 && val2? 1 : 0);
|
||||||
|
break;
|
||||||
|
case '||':
|
||||||
|
valNew = (val1 || val2? 1 : 0);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
aVals.push(valNew|0);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* parseExpression(sExp, fPrint)
|
||||||
|
*
|
||||||
|
* A quick-and-dirty expression parser. It takes an expression like:
|
||||||
|
*
|
||||||
|
* EDX+EDX*4+12345678
|
||||||
|
*
|
||||||
|
* and builds a value stack in aVals and a "binop" (binary operator) stack in aOps:
|
||||||
|
*
|
||||||
|
* aVals aOps
|
||||||
|
* ----- ----
|
||||||
|
* EDX +
|
||||||
|
* EDX *
|
||||||
|
* 4 +
|
||||||
|
* ...
|
||||||
|
*
|
||||||
|
* We pop 1 "binop" from aOps and 2 values from aVals whenever a "binop" of lower priority than its
|
||||||
|
* predecessor is encountered, evaluate, and push the result back onto aVals.
|
||||||
|
*
|
||||||
|
* Unary operators like '~' and ternary operators like '?:' are not supported; neither are parentheses.
|
||||||
|
*
|
||||||
|
* However, parseReference() now makes it possible to write parenthetical-style sub-expressions by using
|
||||||
|
* {...} (braces), as well as address references by using [...] (brackets).
|
||||||
|
*
|
||||||
|
* Why am I using braces instead of parentheses for sub-expressions? Because parseReference() serves
|
||||||
|
* multiple purposes, the other being reference replacement in message strings passing through replaceRegs(),
|
||||||
|
* and I didn't want parentheses taking on a new meaning in message strings.
|
||||||
|
*
|
||||||
|
* @this {Debugger}
|
||||||
|
* @param {string|undefined} sExp
|
||||||
|
* @param {boolean} [fPrint] is true to print all resolved values, false for quiet parsing
|
||||||
|
* @return {number|undefined} numeric value, or undefined if sExp contains any undefined or invalid values
|
||||||
|
*/
|
||||||
|
Debugger.prototype.parseExpression = function(sExp, fPrint)
|
||||||
|
{
|
||||||
|
var value;
|
||||||
|
|
||||||
|
if (sExp) {
|
||||||
|
/*
|
||||||
|
* First process (and eliminate) any references, aka sub-expressions.
|
||||||
|
*/
|
||||||
|
sExp = this.parseReference(sExp);
|
||||||
|
|
||||||
|
var i = 0;
|
||||||
|
var fError = false;
|
||||||
|
var sExpOrig = sExp;
|
||||||
|
var aVals = [], aOps = [];
|
||||||
|
/*
|
||||||
|
* All browsers (including, I believe, IE9 and up) support the following idiosyncrasy of a regexp split():
|
||||||
|
* when the regexp uses a capturing pattern, the resulting array will include entries for all the pattern
|
||||||
|
* matches along with the non-matches. This effectively means that, in the set of expressions that we
|
||||||
|
* support, all even entries in asValues will contain "values" and all odd entries will contain "operators".
|
||||||
|
*
|
||||||
|
* And although I tried to list the supported operators in "precedential" order, bitwise operators must
|
||||||
|
* be out-of-order so that we don't mistakenly match either '>' or '<' when they're part of '>>' or '<<'.
|
||||||
|
*/
|
||||||
|
var regExp = /(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/;
|
||||||
|
var asValues = sExp.split(regExp);
|
||||||
|
while (i < asValues.length) {
|
||||||
|
var sValue = asValues[i++];
|
||||||
|
var cchValue = sValue.length;
|
||||||
|
var s = str.trim(sValue);
|
||||||
|
if (!s) {
|
||||||
|
fError = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
var v = this.parseValue(s, null, fPrint === false);
|
||||||
|
if (v === undefined) {
|
||||||
|
fError = true;
|
||||||
|
fPrint = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
aVals.push(v);
|
||||||
|
if (i == asValues.length) break;
|
||||||
|
var sOp = asValues[i++], cchOp = sOp.length;
|
||||||
|
this.assert(Debugger.aBinOpPrecedence[sOp] != null);
|
||||||
|
if (aOps.length && Debugger.aBinOpPrecedence[sOp] < Debugger.aBinOpPrecedence[aOps[aOps.length-1]]) {
|
||||||
|
this.evalExpression(aVals, aOps, 1);
|
||||||
|
}
|
||||||
|
aOps.push(sOp);
|
||||||
|
sExp = sExp.substr(cchValue + cchOp);
|
||||||
|
}
|
||||||
|
if (!this.evalExpression(aVals, aOps) || aVals.length != 1) {
|
||||||
|
fError = true;
|
||||||
|
}
|
||||||
|
if (!fError) {
|
||||||
|
value = aVals.pop();
|
||||||
|
if (fPrint) this.printValue(null, value);
|
||||||
|
} else {
|
||||||
|
if (fPrint) this.println("error parsing '" + sExpOrig + "' at character " + (sExpOrig.length - sExp.length));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* parseReference(s)
|
||||||
|
*
|
||||||
|
* Returns the given string with any "{expression}" sequences replaced with the value of the expression,
|
||||||
|
* and any "[address]" references replaced with the contents of the address. Expressions are parsed BEFORE
|
||||||
|
* addresses. Owing to this function's simplistic parsing, nested braces/brackets are not supported
|
||||||
|
* (define intermediate variables if needed).
|
||||||
|
*
|
||||||
|
* @this {Debugger}
|
||||||
|
* @param {string} s
|
||||||
|
* @return {string}
|
||||||
|
*/
|
||||||
|
Debugger.prototype.parseReference = function(s)
|
||||||
|
{
|
||||||
|
var a;
|
||||||
|
while (a = s.match(/\{(.*?)}/)) {
|
||||||
|
if (a[1].indexOf('{') >= 0) break; // unsupported nested brace(s)
|
||||||
|
var value = this.parseExpression(a[1]);
|
||||||
|
s = s.replace('{' + a[1] + '}', value != null? str.toHex(value) : "undefined");
|
||||||
|
}
|
||||||
|
while (a = s.match(/\[(.*?)]/)) {
|
||||||
|
if (a[1].indexOf('[') >= 0) break; // unsupported nested bracket(s)
|
||||||
|
var dbgAddr = this.parseAddr(a[1]);
|
||||||
|
s = s.replace('[' + a[1] + ']', dbgAddr? str.toHex(this.getWord(dbgAddr), dbgAddr.fData32? 8 : 4) : "undefined");
|
||||||
|
}
|
||||||
|
return this.parseSysVars(s);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* parseSysVars(s)
|
||||||
|
*
|
||||||
|
* Returns the given string with any recognized "$var" replaced with its value; eg:
|
||||||
|
*
|
||||||
|
* $ops: the number of opcodes executed since the last time it was displayed (or reset)
|
||||||
|
*
|
||||||
|
* @this {Debugger}
|
||||||
|
* @param {string} s
|
||||||
|
* @return {string}
|
||||||
|
*/
|
||||||
|
Debugger.prototype.parseSysVars = function(s)
|
||||||
|
{
|
||||||
|
var a;
|
||||||
|
while (a = s.match(/\$([a-z]+)/i)) {
|
||||||
|
var v = null;
|
||||||
|
switch(a[1].toLowerCase()) {
|
||||||
|
case "ops":
|
||||||
|
v = this.cOpcodes - this.cOpcodesStart;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (v == null) break;
|
||||||
|
s = s.replace(a[0], v.toString());
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* parseValue(sValue, sName, fQuiet)
|
||||||
|
*
|
||||||
|
* @this {Debugger}
|
||||||
|
* @param {string|undefined} sValue
|
||||||
|
* @param {string|null} [sName] is the name of the value, if any
|
||||||
|
* @param {boolean} [fQuiet]
|
||||||
|
* @return {number|undefined} numeric value, or undefined if sValue is either undefined or invalid
|
||||||
|
*/
|
||||||
|
Debugger.prototype.parseValue = function(sValue, sName, fQuiet)
|
||||||
|
{
|
||||||
|
var value;
|
||||||
|
if (sValue !== undefined) {
|
||||||
|
var iReg = this.getRegIndex(sValue);
|
||||||
|
if (iReg >= 0) {
|
||||||
|
value = this.getRegValue(iReg);
|
||||||
|
} else {
|
||||||
|
value = this.getVariable(sValue);
|
||||||
|
if (value === undefined) value = str.parseInt(sValue);
|
||||||
|
}
|
||||||
|
if (value === undefined && !fQuiet) this.println("invalid " + (sName? sName : "value") + ": " + sValue);
|
||||||
|
} else {
|
||||||
|
if (!fQuiet) this.println("missing " + (sName || "value"));
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* printValue(sVar, value)
|
||||||
|
*
|
||||||
|
* @this {Debugger}
|
||||||
|
* @param {string|null} sVar
|
||||||
|
* @param {number|undefined} value
|
||||||
|
* @return {boolean} true if value defined, false if not
|
||||||
|
*/
|
||||||
|
Debugger.prototype.printValue = function(sVar, value)
|
||||||
|
{
|
||||||
|
var sValue;
|
||||||
|
var fDefined = false;
|
||||||
|
if (value !== undefined) {
|
||||||
|
fDefined = true;
|
||||||
|
sValue = str.toHexLong(value) + " " + value + ". (" + str.toBinBytes(value) + ")";
|
||||||
|
}
|
||||||
|
sVar = (sVar != null? (sVar + ": ") : "");
|
||||||
|
this.println(sVar + sValue);
|
||||||
|
return fDefined;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* printVariable(sVar)
|
||||||
|
*
|
||||||
|
* @this {Debugger}
|
||||||
|
* @param {string} [sVar]
|
||||||
|
* @return {boolean} true if all value(s) defined, false if not
|
||||||
|
*/
|
||||||
|
Debugger.prototype.printVariable = function(sVar)
|
||||||
|
{
|
||||||
|
if (sVar) {
|
||||||
|
return this.printValue(sVar, this.aVariables[sVar]);
|
||||||
|
}
|
||||||
|
var cVariables = 0;
|
||||||
|
for (sVar in this.aVariables) {
|
||||||
|
this.printValue(sVar, this.aVariables[sVar]);
|
||||||
|
cVariables++;
|
||||||
|
}
|
||||||
|
return cVariables > 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* delVariable(sVar)
|
||||||
|
*
|
||||||
|
* @this {Debugger}
|
||||||
|
* @param {string} sVar
|
||||||
|
*/
|
||||||
|
Debugger.prototype.delVariable = function(sVar)
|
||||||
|
{
|
||||||
|
delete this.aVariables[sVar];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* getVariable(sVar)
|
||||||
|
*
|
||||||
|
* @this {Debugger}
|
||||||
|
* @param {string} sVar
|
||||||
|
* @return {number|undefined}
|
||||||
|
*/
|
||||||
|
Debugger.prototype.getVariable = function(sVar)
|
||||||
|
{
|
||||||
|
return this.aVariables[sVar];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* setVariable(sVar, value)
|
||||||
|
*
|
||||||
|
* @this {Debugger}
|
||||||
|
* @param {string} sVar
|
||||||
|
* @param {number} value
|
||||||
|
*/
|
||||||
|
Debugger.prototype.setVariable = function(sVar, value)
|
||||||
|
{
|
||||||
|
this.aVariables[sVar] = value;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // endif DEBUGGER
|
||||||
|
|
||||||
|
if (NODE) module.exports = Debugger;
|
||||||
|
|
@ -35,13 +35,9 @@
|
||||||
* @define {string}
|
* @define {string}
|
||||||
*/
|
*/
|
||||||
var APPVERSION = "1.x.x"; // this @define is overridden by the Closure Compiler with the version in package.json
|
var APPVERSION = "1.x.x"; // this @define is overridden by the Closure Compiler with the version in package.json
|
||||||
|
|
||||||
var XMLVERSION = null; // this is set in non-COMPILED builds by embedMachine() if a version number was found in the machine XML
|
var XMLVERSION = null; // this is set in non-COMPILED builds by embedMachine() if a version number was found in the machine XML
|
||||||
|
|
||||||
var COPYRIGHT = "Copyright © 2012-2016 Jeff Parsons <Jeff@pcjs.org>";
|
var COPYRIGHT = "Copyright © 2012-2016 Jeff Parsons <Jeff@pcjs.org>";
|
||||||
|
|
||||||
var LICENSE = "License: GPL version 3 or later <http://gnu.org/licenses/gpl.html>";
|
var LICENSE = "License: GPL version 3 or later <http://gnu.org/licenses/gpl.html>";
|
||||||
|
|
||||||
var CSSCLASS = "pcjs";
|
var CSSCLASS = "pcjs";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ var str = {};
|
||||||
* So use this function to validate the entire string.
|
* So use this function to validate the entire string.
|
||||||
*
|
*
|
||||||
* @param {string} s is the string representation of some number
|
* @param {string} s is the string representation of some number
|
||||||
* @param {number} [base] is the radix of the number represented above (only 2, 10 and 16 are supported)
|
* @param {number} [base] is the radix of the number represented above; 10 is the default (only 2, 8, 10 and 16 are supported)
|
||||||
* @return {boolean} true if valid, false if invalid (or the specified base isn't supported)
|
* @return {boolean} true if valid, false if invalid (or the specified base isn't supported)
|
||||||
*/
|
*/
|
||||||
str.isValidInt = function(s, base)
|
str.isValidInt = function(s, base)
|
||||||
|
|
|
||||||
|
|
@ -135,6 +135,7 @@
|
||||||
"./modules/pcx86/lib/disk.js",
|
"./modules/pcx86/lib/disk.js",
|
||||||
"./modules/pcx86/lib/fdc.js",
|
"./modules/pcx86/lib/fdc.js",
|
||||||
"./modules/pcx86/lib/hdc.js",
|
"./modules/pcx86/lib/hdc.js",
|
||||||
|
"./modules/shared/lib/debugger.js",
|
||||||
"./modules/pcx86/lib/debugger.js",
|
"./modules/pcx86/lib/debugger.js",
|
||||||
"./modules/pcx86/lib/computer.js",
|
"./modules/pcx86/lib/computer.js",
|
||||||
"./modules/shared/lib/state.js",
|
"./modules/shared/lib/state.js",
|
||||||
|
|
@ -165,6 +166,7 @@
|
||||||
"./modules/pc8080/lib/keyboard.js",
|
"./modules/pc8080/lib/keyboard.js",
|
||||||
"./modules/pc8080/lib/video.js",
|
"./modules/pc8080/lib/video.js",
|
||||||
"./modules/pc8080/lib/serialport.js",
|
"./modules/pc8080/lib/serialport.js",
|
||||||
|
"./modules/shared/lib/debugger.js",
|
||||||
"./modules/pc8080/lib/debugger.js",
|
"./modules/pc8080/lib/debugger.js",
|
||||||
"./modules/pc8080/lib/computer.js",
|
"./modules/pc8080/lib/computer.js",
|
||||||
"./modules/shared/lib/state.js",
|
"./modules/shared/lib/state.js",
|
||||||
|
|
@ -190,6 +192,7 @@
|
||||||
"./modules/pdp11/lib/rom.js",
|
"./modules/pdp11/lib/rom.js",
|
||||||
"./modules/pdp11/lib/ram.js",
|
"./modules/pdp11/lib/ram.js",
|
||||||
"./modules/pdp11/lib/keyboard.js",
|
"./modules/pdp11/lib/keyboard.js",
|
||||||
|
"./modules/shared/lib/debugger.js",
|
||||||
"./modules/pdp11/lib/debugger.js",
|
"./modules/pdp11/lib/debugger.js",
|
||||||
"./modules/pdp11/lib/computer.js",
|
"./modules/pdp11/lib/computer.js",
|
||||||
"./modules/shared/lib/state.js",
|
"./modules/shared/lib/state.js",
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
(function(){var m;function ca(a,b){var c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c}
|
(function(){var m;function aa(a,b){var c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c}
|
||||||
function n(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function da(a){return"0x"+n(a,2)}function t(a){return"0x"+n(a,4)}function ea(a){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 n(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function da(a){return"0x"+n(a,2)}function t(a){return"0x"+n(a,4)}function ea(a){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)}var ja={"&":"&","<":"<",">":">",'"':""","'":"'"};function ka(a){return a.replace(/[&<>"']/g,function(a){return ja[a]})}function la(a,b){return(a+" ").slice(0,b)}function ma(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
|
function ga(){var a=ha();return-1!==a.indexOf("pcjs.org",a.length-8)}var ja={"&":"&","<":"<",">":">",'"':""","'":"'"};function ka(a){return a.replace(/[&<>"']/g,function(a){return ja[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 na={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",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 oa(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var h=d+e>>1,g;g=c(b,a[h]);0<g?d=h+1:(e=h,f=!g)}return f?d:~d}var pa=Date.now||function(){return+new Date};
|
var na={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",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 oa(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var h=d+e>>1,g;g=c(b,a[h]);0<g?d=h+1:(e=h,f=!g)}return f?d:~d}var pa=Date.now||function(){return+new Date};
|
||||||
|
|
@ -9,238 +9,237 @@ function ta(){return window?window.navigator.userAgent:""}function v(a){window&&
|
||||||
function ya(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function za(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Aa(a){if(window){var b=ta();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ba(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
function ya(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function za(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Aa(a){if(window){var b=ta();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ba(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||||
function Ca(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var Da={init:[],show:[],exit:[]},Ea=!1,Ja=!1,Ka=!0;function La(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ma(a){Da.init.push(a)}
|
function Ca(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var Da={init:[],show:[],exit:[]},Ea=!1,Ja=!1,Ka=!0;function La(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ma(a){Da.init.push(a)}
|
||||||
function Na(a){if(Ka)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Oa("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Pa(a){!Ka&&a?(Ka=!0,Ea&&Qa("init"),Ja&&Qa("show")):Ka=a}function Qa(a){Da[a]&&Na(Da[a])}La("onload",function(){Ea=!0;Na(Da.init)});La("onpageshow",function(){Ja=!0;Na(Da.show)});La(Aa("Opera")||Aa("iOS")?"onunload":"onbeforeunload",function(){Na(Da.exit)});
|
function Na(a){if(Ka)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Oa("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Pa(a){!Ka&&a?(Ka=!0,Ea&&Qa("init"),Ja&&Qa("show")):Ka=a}function Qa(a){Da[a]&&Na(Da[a])}La("onload",function(){Ea=!0;Na(Da.init)});La("onpageshow",function(){Ja=!0;Na(Da.show)});La(Aa("Opera")||Aa("iOS")?"onunload":"onbeforeunload",function(){Na(Da.exit)});
|
||||||
function w(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.ec=b.comment;this.Gd=b;b=this.id.indexOf(".");0>b?this.Xa=this.id:(this.Bb=this.id.substr(0,b),this.Xa=this.id.substr(b+1));this[a]=c;this.C={ready:!1,cb:!1,Hb:!1,wa:!1,error:!1};this.Db=null;this.C.error=!1;this.N={};this.H=null;this.sa=d||0;Ta.push(this)}var Ua=void 0,Va={};
|
function w(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.fc=b.comment;this.Hd=b;b=this.id.indexOf(".");0>b?this.Xa=this.id:(this.Ab=this.id.substr(0,b),this.Xa=this.id.substr(b+1));this[a]=c;this.C={ready:!1,cb:!1,Gb:!1,wa:!1,error:!1};this.Cb=null;this.C.error=!1;this.N={};this.H=null;this.sa=d||0;Ta.push(this)}var Ua=void 0,Va={};
|
||||||
if(window){Ua||(Ua=window.location.search.substr(1));for(var Wa,Za=/\+/g,$a=/([^&=]+)=?([^&]*)/g;Wa=$a.exec(Ua);)Va[decodeURIComponent(Wa[1].replace(Za," "))]=decodeURIComponent(Wa[2].replace(Za," "))}function ab(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
if(window){Ua||(Ua=window.location.search.substr(1));for(var Wa,Za=/\+/g,$a=/([^&=]+)=?([^&]*)/g;Wa=$a.exec(Ua);)Va[decodeURIComponent(Wa[1].replace(Za," "))]=decodeURIComponent(Wa[2].replace(Za," "))}function ab(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
||||||
function bb(a,b){b||(b=w);a.prototype=ab(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var cb=window.PCjs.Machines||(window.PCjs.Machines={}),Ta=window.PCjs.Components||(window.PCjs.Components=[])}else cb={},Ta=[];function db(a,b,c){cb[a]&&b&&(cb[a][b]=c)}function Oa(a,b,c){b||v((c?c+": ":"")+a)}
|
function z(a,b){b||(b=w);a.prototype=ab(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var bb=window.PCjs.Machines||(window.PCjs.Machines={}),Ta=window.PCjs.Components||(window.PCjs.Components=[])}else bb={},Ta=[];function cb(a,b,c){bb[a]&&b&&(bb[a][b]=c)}function Oa(a,b,c){b||v((c?c+": ":"")+a)}
|
||||||
function eb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Ta.length;b++){var d=Ta[b];a&&d.id.indexOf(a)||c.push(d)}return c}function fb(a){if(void 0!==a){var b;for(b=0;b<Ta.length;b++)if(Ta[b].id===a)return Ta[b]}return null}function gb(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<Ta.length;d++)if(c)c==Ta[d]&&(c=null);else if(!(a!=Ta[d].type||b&&Ta[d].id.indexOf(b)))return Ta[d]}return null}
|
function db(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Ta.length;b++){var d=Ta[b];a&&d.id.indexOf(a)||c.push(d)}return c}function eb(a){if(void 0!==a){var b;for(b=0;b<Ta.length;b++)if(Ta[b].id===a)return Ta[b]}return null}function fb(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<Ta.length;d++)if(c)c==Ta[d]&&(c=null);else if(!(a!=Ta[d].type||b&&Ta[d].id.indexOf(b)))return Ta[d]}return null}
|
||||||
function z(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){v(c.message+" ("+a+")")}return b}function hb(a,b){for(var c=C(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pc8080-binding":(g=z(h))&&g.binding&&a.oa(g.type,g.binding,h,g.value),l=k.length}}}}
|
function C(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){v(c.message+" ("+a+")")}return b}function gb(a,b){for(var c=D(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pc8080-binding":(g=C(h))&&g.binding&&a.oa(g.type,g.binding,h,g.value),l=k.length}}}}
|
||||||
function C(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
function D(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
||||||
w.prototype={constructor:w,parent:null,toString:function(){return this.name?this.name:this.id||this.type},oa:function(a,b,c){switch(b){case "clear":return this.N[b]||(this.N[b]=c,c.onclick=function(a){return function(){a.N.print&&(a.N.print.value="")}}(this)),!0;case "print":return this.N[b]||(this.Fa=this.N[b]=c,c.value="",this.g=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
w.prototype={constructor:w,parent:null,toString:function(){return this.name?this.name:this.id||this.type},oa:function(a,b,c){switch(b){case "clear":return this.N[b]||(this.N[b]=c,c.onclick=function(a){return function(){a.N.print&&(a.N.print.value="")}}(this)),!0;case "print":return this.N[b]||(this.Fa=this.N[b]=c,c.value="",this.g=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||||
this.ja=function(a){this.g(a,this.Xa)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.Xa+": "+a)},ja:function(a,b,c){Oa(a,b,c||this.type)},Da:function(){return this.C.wa=!0},Ha:function(a,b){b&&(this.C.wa=!1);return!0}};function D(a,b,c,d,e,f,h){a.H&&(!0===h?h=0:null==h&&(h=a.sa),ib(a.H,a,b,c,d,e,f,h))}function jb(a,b){a.H&&kb(a,0)&&a.H.message(b,void 0)}function kb(a,b){if(a.H){a===a.H?b|=0:b=b||a.sa;var c=a.H.sa&b;return!!b&&c===b||!!(c&a.H.dd)}return!1}
|
this.ja=function(a){this.g(a,this.Xa)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.Xa+": "+a)},ja:function(a,b,c){Oa(a,b,c||this.type)},Da:function(){return this.C.wa=!0},Ha:function(a,b){b&&(this.C.wa=!1);return!0}};function E(a,b,c,d,e,f,h){a.H&&(!0===h?h=0:null==h&&(h=a.sa),hb(a.H,a,b,c,d,e,f,h))}function ib(a,b){a.H&&jb(a,0)&&a.H.message(b,void 0)}function jb(a,b){if(a.H){a===a.H?b|=0:b=b||a.sa;var c=a.H.sa&b;return!!b&&c===b||!!(c&a.H.ed)}return!1}
|
||||||
function lb(a,b){if(a.C.Hb)return a.C.cb&&(a.C.cb=!1),a.C.Hb=!1;if(a.C.error)return a.g(a.toString()+" error"),!1;a.C.cb=b;return a.C.cb}function mb(a,b){a.C.cb&&(b?a.C.Hb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.C.cb}function E(a){if(!a.C.error&&(a.C.ready=!0,a.C.ready)){var b=a.Db;a.Db=null;b&&b()}}function pb(a,b){b&&(a.C.ready?b():a.Db=b);return a.C.ready}function qb(a,b){a.C.error=!0;a.ja(b)}
|
function kb(a,b){if(a.C.Gb)return a.C.cb&&(a.C.cb=!1),a.C.Gb=!1;if(a.C.error)return a.g(a.toString()+" error"),!1;a.C.cb=b;return a.C.cb}function lb(a,b){a.C.cb&&(b?a.C.Gb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.C.cb}function F(a){if(!a.C.error&&(a.C.ready=!0,a.C.ready)){var b=a.Cb;a.Cb=null;b&&b()}}function mb(a,b){b&&(a.C.ready?b():a.Cb=b);return a.C.ready}function pb(a,b){a.C.error=!0;a.ja(b)}
|
||||||
var rb="undefined"!==typeof ArrayBuffer,sb=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
|
var 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){w.call(this,"Panel",a,ub)}bb(ub);m=ub.prototype;
|
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1],sb={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 tb(a){w.call(this,"Panel",a,tb)}z(tb);m=tb.prototype;
|
||||||
m.oa=function(a,b,c,d){return this.B&&this.B.oa(a,b,c,d)||this.b&&this.b.oa(a,b,c,d)||this.K&&this.K.oa(a,b,c,d)||this.H&&this.H.oa(a,b,c,d)?!0:this.parent.oa.call(this,a,b,c,d)};m.Oa=function(a,b,c,d){this.B=a;this.u=b;this.b=c;this.H=d;this.K=vb(a,"Keyboard")};m.Da=function(a,b){b||wb();return!0};m.Ha=function(){return!0};m.Ia=function(){};function wb(){for(var a=!1,b=C(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f=fb(e.id);f||(a=!0,f=new ub(e));hb(f,d);a&&E(f)}}Ma(wb);
|
m.oa=function(a,b,c,d){return this.B&&this.B.oa(a,b,c,d)||this.b&&this.b.oa(a,b,c,d)||this.K&&this.K.oa(a,b,c,d)||this.H&&this.H.oa(a,b,c,d)?!0:this.parent.oa.call(this,a,b,c,d)};m.Oa=function(a,b,c,d){this.B=a;this.u=b;this.b=c;this.H=d;this.K=ub(a,"Keyboard")};m.Da=function(a,b){b||vb();return!0};m.Ha=function(){return!0};m.Ia=function(){};function vb(){for(var a=!1,b=D(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=C(d),f=eb(e.id);f||(a=!0,f=new tb(e));gb(f,d);a&&F(f)}}Ma(vb);
|
||||||
function xb(a,b,c){w.call(this,"Bus",a,xb);this.b=b;this.H=c;this.G=a.busWidth||16;this.L=Math.pow(2,this.G);this.w=this.L-1|0;this.ra=16>=this.G?10:20>=this.G?12:24>=this.G?14:15;this.Ga=1<<this.ra;this.M=this.Ga>>2;this.u=this.Ga-1;this.J=this.L/this.Ga|0;this.K=this.J-1;this.B=[];this.j=[];this.I=this.D=!1;this.O=[];this.P=[];a=new F;yb(a,this.H);this.X=Array(this.J);for(b=0;b<this.J;b++)this.X[b]=a;E(this)}bb(xb);m=xb.prototype;m.reset=function(){};m.Da=function(a,b){b||this.reset();return!0};
|
function wb(a,b,c){w.call(this,"Bus",a,wb);this.b=b;this.H=c;this.G=a.busWidth||16;this.L=Math.pow(2,this.G);this.w=this.L-1|0;this.ra=16>=this.G?10:20>=this.G?12:24>=this.G?14:15;this.Ga=1<<this.ra;this.M=this.Ga>>2;this.u=this.Ga-1;this.J=this.L/this.Ga|0;this.K=this.J-1;this.B=[];this.j=[];this.I=this.D=!1;this.O=[];this.P=[];a=new G;xb(a,this.H);this.X=Array(this.J);for(b=0;b<this.J;b++)this.X[b]=a;F(this)}z(wb);m=wb.prototype;m.reset=function(){};m.Da=function(a,b){b||this.reset();return!0};
|
||||||
function zb(a,b,c,d){for(var e=b,f=c,h=e>>>a.ra;0<f&&h<a.X.length;){var g=a.X[h],k=h*a.Ga,l=a.Ga-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==d){if(e+f<=g.F)return g.xb+=g.F-e,g.F=e,!0;if(e>=g.F+g.xb){l=g.size-(e-k);l>f&&(l=f);g.xb=e-g.F+l;e=k+a.Ga;f-=l;h++;continue}}return Ab(1,e,f)}e=new F(e,l,a.Ga,d);yb(e,a.H,g);a.X[h++]=e;e=k+a.Ga;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Bb[d]+" at "+t(b)),!0):Ab(2,b,c)}m.$=function(a){return this.X[(a&this.w)>>>this.ra].jb(a&this.u,a)};
|
function yb(a,b,c,d){for(var e=b,f=c,h=e>>>a.ra;0<f&&h<a.X.length;){var g=a.X[h],k=h*a.Ga,l=a.Ga-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==d){if(e+f<=g.F)return g.wb+=g.F-e,g.F=e,!0;if(e>=g.F+g.wb){l=g.size-(e-k);l>f&&(l=f);g.wb=e-g.F+l;e=k+a.Ga;f-=l;h++;continue}}return zb(1,e,f)}e=new G(e,l,a.Ga,d);xb(e,a.H,g);a.X[h++]=e;e=k+a.Ga;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Ab[d]+" at "+t(b)),!0):zb(2,b,c)}m.$=function(a){return this.X[(a&this.w)>>>this.ra].ib(a&this.u,a)};
|
||||||
function Cb(a,b){return a.X[(b&a.w)>>>a.ra].vb(b&a.u,b)}m.Ra=function(a){var b=a&this.u,c=(a&this.w)>>>this.ra;return b!=this.u?this.X[c].qc(b,a):this.X[c++].jb(b,a)|this.X[c&this.K].jb(0,a+1)<<8};function Db(a,b){var c=b&a.u,d=(b&a.w)>>>a.ra;return c!=a.u?a.X[d].Lb(c,b):a.X[d++].vb(c,b)|a.X[d&a.K].vb(0,b+1)<<8}m.ua=function(a,b){this.X[(a&this.w)>>>this.ra].lb(a&this.u,b&255,a)};function Eb(a,b,c){a.X[(b&a.w)>>>a.ra].yb(b&a.u,c&255,b)}
|
function Bb(a,b){return a.X[(b&a.w)>>>a.ra].ub(b&a.u,b)}m.Ra=function(a){var b=a&this.u,c=(a&this.w)>>>this.ra;return b!=this.u?this.X[c].rc(b,a):this.X[c++].ib(b,a)|this.X[c&this.K].ib(0,a+1)<<8};function Cb(a,b){var c=b&a.u,d=(b&a.w)>>>a.ra;return c!=a.u?a.X[d].Lb(c,b):a.X[d++].ub(c,b)|a.X[d&a.K].ub(0,b+1)<<8}m.ua=function(a,b){this.X[(a&this.w)>>>this.ra].kb(a&this.u,b&255,a)};function Db(a,b,c){a.X[(b&a.w)>>>a.ra].xb(b&a.u,c&255,b)}
|
||||||
m.Gb=function(a,b){var c=a&this.u,d=(a&this.w)>>>this.ra;c!=this.u?this.X[d].vc(c,b&65535,a):(this.X[d++].lb(c,b&255,a),this.X[d&this.K].lb(0,b>>8&255,a+1))};function Gb(a,b){if(void 0===b)return a.I=!a.I,a.I;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function Hb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.B[k]?v("Input port "+t(k)+" already registered"):f.B[k]=[g,!1]}}
|
m.Fb=function(a,b){var c=a&this.u,d=(a&this.w)>>>this.ra;c!=this.u?this.X[d].wc(c,b&65535,a):(this.X[d++].kb(c,b&255,a),this.X[d&this.K].kb(0,b>>8&255,a+1))};function Eb(a,b){if(void 0===b)return a.I=!a.I,a.I;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function Gb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.B[k]?v("Input port "+t(k)+" already registered"):f.B[k]=[g,!1]}}
|
||||||
function Ib(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.B[b],g=a.O[b]||1,k=1==g?255:2==g?65535:-1,l=k;void 0!==h?(h[0]&&(l=h[0](b,c),void 0===l?l=k:l&=k),a.H&&a.I!=h[1]&&Jb(a.H,b,l)):a.H&&(ib(a.H,a,b,null,c),a.I&&Jb(a.H,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Sb(a,b){if(void 0===b)return a.D=!a.D,a.D;void 0===a.j[b]&&(a.j[b]=[null,!1]);a.j[b][1]=!a.j[b][1];return a.j[b][1]}
|
function Hb(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.B[b],g=a.O[b]||1,k=1==g?255:2==g?65535:-1,l=k;void 0!==h?(h[0]&&(l=h[0](b,c),void 0===l?l=k:l&=k),a.H&&a.I!=h[1]&&Ib(a.H,b,l)):a.H&&(hb(a.H,a,b,null,c),a.I&&Ib(a.H,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Rb(a,b){if(void 0===b)return a.D=!a.D,a.D;void 0===a.j[b]&&(a.j[b]=[null,!1]);a.j[b][1]=!a.j[b][1];return a.j[b][1]}
|
||||||
function Tb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.j[k]?v("Output port "+t(k)+" already registered"):f.j[k]=[g,!1]}}function Ub(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.j[b],g=a.P[b]||1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h){if(h[0])h[0](b,k,d);a.H&&a.D!=h[1]&&Vb(a.H,b,k)}else a.H&&(ib(a.H,a,b,k,d),a.D&&Vb(a.H,b,k));f+=g<<3;b+=g;e-=g}}
|
function Sb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.j[k]?v("Output port "+t(k)+" already registered"):f.j[k]=[g,!1]}}function Tb(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.j[b],g=a.P[b]||1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h){if(h[0])h[0](b,k,d);a.H&&a.D!=h[1]&&Ub(a.H,b,k)}else a.H&&(hb(a.H,a,b,k,d),a.D&&Ub(a.H,b,k));f+=g<<3;b+=g;e-=g}}
|
||||||
function Ab(a,b,c){v("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Wb;if(rb){var Xb=new ArrayBuffer(2);(new DataView(Xb)).setUint16(0,256,!0);Wb=256===(new Uint16Array(Xb))[0]}else Wb=!1;var Yb=Wb;
|
function zb(a,b,c){v("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Vb;if(qb){var Wb=new ArrayBuffer(2);(new DataView(Wb)).setUint16(0,256,!0);Vb=256===(new Uint16Array(Wb))[0]}else Vb=!1;var Xb=Vb;
|
||||||
function F(a,b,c,d){this.id=Zb+=2;this.b=null;this.F=a;this.xb=b;this.size=c||0;this.type=d||$b;this.N=d==ac;yb(this);this.Ma=this.cc=!1;if(c)if(rb)this.I=new ArrayBuffer(c),this.D=new DataView(this.I,0,c),this.u=new Uint8Array(this.I,0,c),this.K=new Uint16Array(this.I,0,c>>1),this.b=new Int32Array(this.I,0,c>>2),bc(this,Yb?cc:dc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;bc(this,ec)}else bc(this)}var $b=0,ac=2,Bb=["NONE","RAM","ROM","VID","H/W"],Zb=0;
|
function G(a,b,c,d){this.id=Yb+=2;this.b=null;this.F=a;this.wb=b;this.size=c||0;this.type=d||Zb;this.N=d==$b;xb(this);this.Ma=this.dc=!1;if(c)if(qb)this.I=new ArrayBuffer(c),this.D=new DataView(this.I,0,c),this.u=new Uint8Array(this.I,0,c),this.K=new Uint16Array(this.I,0,c>>1),this.b=new Int32Array(this.I,0,c>>2),ac(this,Xb?bc:cc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;ac(this,dc)}else ac(this)}var Zb=0,$b=2,Ab=["NONE","RAM","ROM","VID","H/W"],Yb=0;
|
||||||
F.prototype={constructor:F,parent:null,save:function(){var a,b;if(rb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.D.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(rb)for(b=0;b<a.length;b++)this.D.setInt32(b<<2,a[b],!0);else this.b=a;return this.Ma=!0}return!1},Ya:function(a,b){b?0===this.j++&&fc(this,gc,!1):0===this.B++&&hc(this,gc,!1)},J:function(){this.H&&kb(this.H,129)&&this.H.message("attempt to read invalid block %"+n(this.F),!0);
|
G.prototype={constructor:G,parent:null,save:function(){var a,b;if(qb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.D.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(qb)for(b=0;b<a.length;b++)this.D.setInt32(b<<2,a[b],!0);else this.b=a;return this.Ma=!0}return!1},Ya:function(a,b){b?0===this.j++&&ec(this,fc,!1):0===this.B++&&gc(this,fc,!1)},J:function(){this.H&&jb(this.H,129)&&this.H.message("attempt to read invalid block %"+n(this.F),!0);
|
||||||
return 255},w:function(a,b){this.H&&kb(this.H,129)&&this.H.message("attempt to write "+t(b)+" to invalid block %"+n(this.F),!0)},L:function(a,b){return this.jb(a++,b++)|this.jb(a,b)<<8},G:function(a,b,c){this.lb(a++,b&255,c++);this.lb(a,b>>8,c)},Z:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ea:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},ia:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.Ma=!0},ya:function(a,
|
return 255},w:function(a,b){this.H&&jb(this.H,129)&&this.H.message("attempt to write "+t(b)+" to invalid block %"+n(this.F),!0)},L:function(a,b){return this.ib(a++,b++)|this.ib(a,b)<<8},G:function(a,b,c){this.kb(a++,b&255,c++);this.kb(a,b>>8,c)},Z:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ea:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},ia:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.Ma=!0},ya:function(a,
|
||||||
b){var c=a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.Ma=!0},O:function(a,b){if(this.H&&null!=this.F){var c=this.H;ic(c,this.F+a,1,c.O)&&c.pa(!0)}return this.vb(a,b)},ba:function(a,b){if(this.H&&null!=this.F){var c=this.H;ic(c,this.F+a,2,c.O)&&c.pa(!0)}return this.Lb(a,b)},ha:function(a,b,c){if(this.H&&null!=this.F){var d=this.H;ic(d,this.F+a,1,d.D)&&d.pa(!0)}this.N?this.w(a,b,c):this.yb(a,b,c)},la:function(a,
|
b){var c=a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.Ma=!0},O:function(a,b){if(this.H&&null!=this.F){var c=this.H;hc(c,this.F+a,1,c.O)&&c.pa(!0)}return this.ub(a,b)},ba:function(a,b){if(this.H&&null!=this.F){var c=this.H;hc(c,this.F+a,2,c.O)&&c.pa(!0)}return this.Lb(a,b)},ha:function(a,b,c){if(this.H&&null!=this.F){var d=this.H;hc(d,this.F+a,1,d.D)&&d.pa(!0)}this.N?this.w(a,b,c):this.xb(a,b,c)},la:function(a,
|
||||||
b,c){if(this.H&&null!=this.F){var d=this.H;ic(d,this.F+a,2,d.D)&&d.pa(!0)}this.N?this.w(a,b,c):this.Pb(a,b,c)},M:function(a){return this.u[a]},P:function(a){return this.u[a]},aa:function(a){return this.D.getUint16(a,!0)},da:function(a){return a&1?this.u[a]|this.u[a+1]<<8:this.K[a>>1]},ga:function(a,b){this.u[a]=b;this.Ma=!0},Xa:function(a,b){this.u[a]=b;this.Ma=!0},ka:function(a,b){this.D.setUint16(a,b,!0);this.Ma=!0},va:function(a,b){a&1?(this.u[a]=b,this.u[a+1]=b>>8):this.K[a>>1]=b;this.Ma=!0}};
|
b,c){if(this.H&&null!=this.F){var d=this.H;hc(d,this.F+a,2,d.D)&&d.pa(!0)}this.N?this.w(a,b,c):this.Pb(a,b,c)},M:function(a){return this.u[a]},P:function(a){return this.u[a]},aa:function(a){return this.D.getUint16(a,!0)},da:function(a){return a&1?this.u[a]|this.u[a+1]<<8:this.K[a>>1]},ga:function(a,b){this.u[a]=b;this.Ma=!0},Xa:function(a,b){this.u[a]=b;this.Ma=!0},ka:function(a,b){this.D.setUint16(a,b,!0);this.Ma=!0},va:function(a,b){a&1?(this.u[a]=b,this.u[a+1]=b>>8):this.K[a>>1]=b;this.Ma=!0}};
|
||||||
function yb(a,b,c){a.H=b;a.B=a.j=0;c&&((a.B=c.B)&&hc(a,gc,!1),(a.j=c.j)&&fc(a,gc,!1))}function jc(a,b){b?0===--a.j&&(a.lb=a.N?a.w:a.yb,a.vc=a.N?a.G:a.Pb):0===--a.B&&(a.jb=a.vb,a.qc=a.Lb)}function fc(a,b,c){c&&a.j||(a.lb=!a.N&&b[2]||a.w,a.vc=!a.N&&b[3]||a.G);if(c||void 0===c)a.yb=b[2]||a.w,a.Pb=b[3]||a.G}function hc(a,b,c){c&&a.B||(a.jb=b[0]||a.J,a.qc=b[1]||a.L);if(c||void 0===c)a.vb=b[0]||a.J,a.Lb=b[1]||a.L}function bc(a,b){b||(b=kc);hc(a,b,void 0);fc(a,b,void 0)}
|
function xb(a,b,c){a.H=b;a.B=a.j=0;c&&((a.B=c.B)&&gc(a,fc,!1),(a.j=c.j)&&ec(a,fc,!1))}function ic(a,b){b?0===--a.j&&(a.kb=a.N?a.w:a.xb,a.wc=a.N?a.G:a.Pb):0===--a.B&&(a.ib=a.ub,a.rc=a.Lb)}function ec(a,b,c){c&&a.j||(a.kb=!a.N&&b[2]||a.w,a.wc=!a.N&&b[3]||a.G);if(c||void 0===c)a.xb=b[2]||a.w,a.Pb=b[3]||a.G}function gc(a,b,c){c&&a.B||(a.ib=b[0]||a.J,a.rc=b[1]||a.L);if(c||void 0===c)a.ub=b[0]||a.J,a.Lb=b[1]||a.L}function ac(a,b){b||(b=jc);gc(a,b,void 0);ec(a,b,void 0)}
|
||||||
var kc=[],ec=[F.prototype.Z,F.prototype.ea,F.prototype.ia,F.prototype.ya],gc=[F.prototype.O,F.prototype.ba,F.prototype.ha,F.prototype.la];if(rb)var dc=[F.prototype.M,F.prototype.aa,F.prototype.ga,F.prototype.ka],cc=[F.prototype.P,F.prototype.da,F.prototype.Xa,F.prototype.va];
|
var jc=[],dc=[G.prototype.Z,G.prototype.ea,G.prototype.ia,G.prototype.ya],fc=[G.prototype.O,G.prototype.ba,G.prototype.ha,G.prototype.la];if(qb)var cc=[G.prototype.M,G.prototype.aa,G.prototype.ga,G.prototype.ka],bc=[G.prototype.P,G.prototype.da,G.prototype.Xa,G.prototype.va];
|
||||||
function lc(a,b){w.call(this,"CPU",a,lc,1);var c=a.multiplier||1;this.Z=a.cycles||b;this.Qa=c;this.ga=Math.round(this.Z/1E4)/100;this.ab=this.ga*this.Qa;this.C.za=!1;this.C.Ob=!1;this.C.ob=a.autoStart;this.C.ac=!1;this.C.eb=!1;this.sb=this.O=0;this.tb=a.csStart;this.hb=a.csInterval;this.ib=a.csStop;this.w=[];this.Ea=this.bb.bind(this);E(this)}bb(lc);var mc=["power","reset"];m=lc.prototype;
|
function kc(a,b){w.call(this,"CPU",a,kc,1);var c=a.multiplier||1;this.Z=a.cycles||b;this.Qa=c;this.ga=Math.round(this.Z/1E4)/100;this.ab=this.ga*this.Qa;this.C.za=!1;this.C.Ob=!1;this.C.nb=a.autoStart;this.C.bc=!1;this.C.eb=!1;this.rb=this.O=0;this.sb=a.csStart;this.gb=a.csInterval;this.hb=a.csStop;this.w=[];this.Ea=this.bb.bind(this);F(this)}z(kc);var lc=["power","reset"];m=kc.prototype;
|
||||||
m.Oa=function(a,b,c,d){this.B=a;this.u=b;this.H=d;for(b=0;b<mc.length;b++)(c=this.N[mc[b]])&&this.B.oa(null,mc[b],c);this.I=vb(a,"ChipSet");a=nc(a,"autoStart");null!=a&&(this.C.ob="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
|
m.Oa=function(a,b,c,d){this.B=a;this.u=b;this.H=d;for(b=0;b<lc.length;b++)(c=this.N[lc[b]])&&this.B.oa(null,lc[b],c);this.I=ub(a,"ChipSet");a=mc(a,"autoStart");null!=a&&(this.C.nb="true"==a?!0:"false"==a?!1:!!a);F(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
|
||||||
m.Da=function(a,b){if(!b){if(a&&this.restore){oc(this);if(!this.restore(a))return!1;pc(this)}else this.reset();if(this.H){var c=this.H;c.g("Type ? for help with PC8080 Debugger commands");c.Ia();if(c.ya){var d=c.ya;c.ya=null;Cc(c,d)}}else this.g("No debugger detected")}Dc(this);return!0};m.Ha=function(a){return a?this.save():!0};m.ob=function(){return this.C.ob||!this.H&&void 0===this.N.run?(this.bb(!0),!0):!1};m.dc=function(){return 0};
|
m.Da=function(a,b){if(!b){if(a&&this.restore){nc(this);if(!this.restore(a))return!1;oc(this)}else this.reset();if(this.H){var c=this.H;c.g("Type ? for help with PC8080 Debugger commands");c.Ia();if(c.ya){var d=c.ya;c.ya=null;pc(c,d)}}else this.g("No debugger detected")}Cc(this);return!0};m.Ha=function(a){return a?this.save():!0};m.nb=function(){return this.C.nb||!this.H&&void 0===this.N.run?(this.bb(!0),!0):!1};m.ec=function(){return 0};
|
||||||
function pc(a){void 0===a.tb&&(a.tb=0);void 0===a.hb&&(a.hb=-1);void 0===a.ib&&(a.ib=-1);a.C.eb=0<=a.tb&&0<a.hb;a.C.eb&&(a.sb=0,a.O=a.tb-a.M)}function Ec(a,b){if(a.C.eb){var c=!1;a.sb=a.sb+a.dc()|0;a.O-=b;0>=a.O&&(a.O+=a.hb,c=!0);0<=a.ib&&a.ib<=Fc(a)&&(a.hb=a.ib=-1,pc(a),a.pa(),c=!0);c&&a.g(Fc(a)+" cycles: checksum="+n(a.sb))}}
|
function oc(a){void 0===a.sb&&(a.sb=0);void 0===a.gb&&(a.gb=-1);void 0===a.hb&&(a.hb=-1);a.C.eb=0<=a.sb&&0<a.gb;a.C.eb&&(a.rb=0,a.O=a.sb-a.M)}function Dc(a,b){if(a.C.eb){var c=!1;a.rb=a.rb+a.ec()|0;a.O-=b;0>=a.O&&(a.O+=a.gb,c=!0);0<=a.hb&&a.hb<=Ec(a)&&(a.gb=a.hb=-1,oc(a),a.pa(),c=!0);c&&a.g(Ec(a)+" cycles: checksum="+n(a.rb))}}
|
||||||
m.oa=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.N[b]=c;a=!0;break;case "run":this.N[b]=c;c.onclick=function(){var a;if(a=d.B)if(a=d.B,a.C.wa)a=!0;else{var b=null,c,g=eb(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.C.ready);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.C.wa);c++);c==g.length&&(b=a);v("The "+b.type+" component ("+b.id+") is not "+(b.C.ready?"powered yet":"ready yet"+(b.Db?" (waiting for notification)":""))+".");a=!1}a&&(d.C.za?d.pa():d.bb())};
|
m.oa=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.N[b]=c;a=!0;break;case "run":this.N[b]=c;c.onclick=function(){var a;if(a=d.B)if(a=d.B,a.C.wa)a=!0;else{var b=null,c,g=db(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.C.ready);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.C.wa);c++);c==g.length&&(b=a);v("The "+b.type+" component ("+b.id+") is not "+(b.C.ready?"powered yet":"ready yet"+(b.Cb?" (waiting for notification)":""))+".");a=!1}a&&(d.C.za?d.pa():d.bb())};
|
||||||
a=!0;break;case "speed":this.N[b]=c;a=!0;break;case "setSpeed":this.N[b]=c,c.onclick=function(){Gc(d,d.Qa<<1,!0)},c.textContent=this.ab.toFixed(2)+"Mhz",a=!0}return a};function Hc(a,b,c){a.M+=b;c&&(a.L=a.b=0)}function Ic(a,b){var c=1;b&&1<a.Qa&&a.K&&(c=a.K/a.ga);a.va=Math.round(1E3/30);a.ea=Math.floor(a.Z/30*c);b||(a.P=a.ea);a.ha=0}function Fc(a){return a.M+a.G+a.L-a.b}function oc(a){a.K=0;a.ya=0;a.M=a.G=a.L=a.b=0;pc(a);Gc(a,1)}
|
a=!0;break;case "speed":this.N[b]=c;a=!0;break;case "setSpeed":this.N[b]=c,c.onclick=function(){Fc(d,d.Qa<<1,!0)},c.textContent=this.ab.toFixed(2)+"Mhz",a=!0}return a};function Gc(a,b,c){a.M+=b;c&&(a.L=a.b=0)}function Hc(a,b){var c=1;b&&1<a.Qa&&a.K&&(c=a.K/a.ga);a.va=Math.round(1E3/30);a.ea=Math.floor(a.Z/30*c);b||(a.P=a.ea);a.ha=0}function Ec(a){return a.M+a.G+a.L-a.b}function nc(a){a.K=0;a.ya=0;a.M=a.G=a.L=a.b=0;oc(a);Fc(a,1)}
|
||||||
function Gc(a,b,c){var d=!1;if(void 0!==b){.8>a.K/a.ab?b=1:d=!0;a.Qa=b;b=a.ga*a.Qa;if(a.ab!=b){a.ab=b;b=a.ab.toFixed(2)+"Mhz";var e=a.N.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.B&&a.B.wb()}Hc(a,a.G);a.G=0;a.D=pa();a.J=0;Ic(a);return d}function Jc(a,b){var c=a.w.length;a.w.push([-1,b]);return c}function Kc(a,b,c){var d=-1;0<=b&&b<a.w.length&&(d=a.Z*a.Qa/1E3*c,a.w[b][0]=d)}function Lc(a){a.L-=a.b;a.b=0}
|
function Fc(a,b,c){var d=!1;if(void 0!==b){.8>a.K/a.ab?b=1:d=!0;a.Qa=b;b=a.ga*a.Qa;if(a.ab!=b){a.ab=b;b=a.ab.toFixed(2)+"Mhz";var e=a.N.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.B&&a.B.vb()}Gc(a,a.G);a.G=0;a.D=pa();a.J=0;Hc(a);return d}function Ic(a,b){var c=a.w.length;a.w.push([-1,b]);return c}function Jc(a,b,c){var d=-1;0<=b&&b<a.w.length&&(d=a.Z*a.Qa/1E3*c,a.w[b][0]=d)}function Kc(a){a.L-=a.b;a.b=0}
|
||||||
m.bb=function(a){if(lb(this,!0)){if(!this.C.za){Gc(this);this.B&&this.B.start(this.D,Fc(this));this.C.za=!0;this.C.Ob=!0;this.I&&this.I.start();var b=this.N.run;b&&(b.textContent="Halt");this.B&&(this.B.Ia(!0),a&&this.B.wb(!0))}this.ha>=this.Z&&Ic(this,!0);this.aa=0;this.da=pa();this.J&&(a=this.da-this.J,a>this.va&&(this.D+=a,this.D>this.da&&(this.D=this.da)));try{do{for(var c=this.C.eb?1:this.ea,d=this.w.length-1;0<=d;d--){var e=this.w[d];0>e[0]||c>e[0]&&(c=e[0])}this.kb(c);var f=this.L-this.b;a=
|
m.bb=function(a){if(kb(this,!0)){if(!this.C.za){Fc(this);this.B&&this.B.start(this.D,Ec(this));this.C.za=!0;this.C.Ob=!0;this.I&&this.I.start();var b=this.N.run;b&&(b.textContent="Halt");this.B&&(this.B.Ia(!0),a&&this.B.vb(!0))}this.ha>=this.Z&&Hc(this,!0);this.aa=0;this.da=pa();this.J&&(a=this.da-this.J,a>this.va&&(this.D+=a,this.D>this.da&&(this.D=this.da)));try{do{for(var c=this.C.eb?1:this.ea,d=this.w.length-1;0<=d;d--){var e=this.w[d];0>e[0]||c>e[0]&&(c=e[0])}this.jb(c);var f=this.L-this.b;a=
|
||||||
f;for(var h=this.w.length-1;0<=h;h--){var g=this.w[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.aa+=f;this.G+=f;Hc(this,0,!0);Ec(this,f);this.P-=f;if(0>=this.P){this.P+=this.ea;15<=++this.ya&&(this.B&&this.B.Ia(),this.ya=0);break}}while(this.C.za)}catch(k){this.pa();Dc(this);this.B&&this.B.stop(pa(),Fc(this));lb(this,!1);qb(this,k.stack||k.message);return}c=setTimeout;d=this.Ea;this.J=pa();e=this.va;this.aa&&(e=Math.round(e*this.aa/this.ea));e=e-(this.J-this.da);if(f=this.J-this.D)this.K=Math.round(this.G/
|
f;for(var h=this.w.length-1;0<=h;h--){var g=this.w[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.aa+=f;this.G+=f;Gc(this,0,!0);Dc(this,f);this.P-=f;if(0>=this.P){this.P+=this.ea;15<=++this.ya&&(this.B&&this.B.Ia(),this.ya=0);break}}while(this.C.za)}catch(k){this.pa();Cc(this);this.B&&this.B.stop(pa(),Ec(this));kb(this,!1);pb(this,k.stack||k.message);return}c=setTimeout;d=this.Ea;this.J=pa();e=this.va;this.aa&&(e=Math.round(e*this.aa/this.ea));e=e-(this.J-this.da);if(f=this.J-this.D)this.K=Math.round(this.G/
|
||||||
(10*f))/100,864E5<=f&&(this.M=0,Gc(this));if(0>e||this.K<this.ab)-1E3>e&&(this.D-=e),e=0;this.ha+=this.aa;this.J+=e;c(d,e)}else Dc(this),this.B&&this.B.stop(pa(),Fc(this))};m.kb=function(){return 0};m.pa=function(a){mb(this,!0);Lc(this);Hc(this,this.G);this.G=0;if(this.C.za){this.C.za=!1;this.I&&this.I.stop();var b=this.N.run;b&&(b.textContent="Run")}this.C.complete=a};function Dc(a,b){if(a.B){for(var c=a.B,d=0;d<c.G.length;d++)Mc(c.G[d],b);a.B.Ia(b)}}
|
(10*f))/100,864E5<=f&&(this.M=0,Fc(this));if(0>e||this.K<this.ab)-1E3>e&&(this.D-=e),e=0;this.ha+=this.aa;this.J+=e;c(d,e)}else Cc(this),this.B&&this.B.stop(pa(),Ec(this))};m.jb=function(){return 0};m.pa=function(a){lb(this,!0);Kc(this);Gc(this,this.G);this.G=0;if(this.C.za){this.C.za=!1;this.I&&this.I.stop();var b=this.N.run;b&&(b.textContent="Run")}this.C.complete=a};function Cc(a,b){if(a.B){for(var c=a.B,d=0;d<c.G.length;d++)Lc(c.G[d],b);a.B.Ia(b)}}
|
||||||
function Nc(a){this.kc=+a.model||8080;lc.call(this,a,1E6);this.ia=Oc;oc(this);this.C.complete=this.C.ed=!1;this.la=0;this.ba=[];this.ka=0;Pc(this)}bb(Nc,lc);function Qc(a,b){a.ba.push(b)}m=Nc.prototype;m.reset=function(){this.C.za&&this.pa();Pc(this);oc(this);this.C.error=!1;this.parent.reset.call(this)};function Pc(a){a.i=0;a.S=0;a.T=0;a.U=0;a.V=0;a.W=0;a.Y=0;a.na=0;G(a,a.ka);Rc(a,0);a.j=0}function Sc(a,b){a.ka=b;G(a,b)}
|
function Mc(a){this.lc=+a.model||8080;kc.call(this,a,1E6);this.ia=Nc;nc(this);this.C.complete=this.C.fd=!1;this.la=0;this.ba=[];this.ka=0;Oc(this)}z(Mc,kc);function Pc(a,b){a.ba.push(b)}m=Mc.prototype;m.reset=function(){this.C.za&&this.pa();Oc(this);nc(this);this.C.error=!1;this.parent.reset.call(this)};function Oc(a){a.i=0;a.S=0;a.T=0;a.U=0;a.V=0;a.W=0;a.Y=0;a.na=0;H(a,a.ka);Qc(a,0);a.j=0}function Rc(a,b){a.ka=b;H(a,b)}
|
||||||
m.dc=function(){var a=this.i+this.S+this.T+this.U+this.V+this.W+this.Y|0;return a=a+this.na+this.R+Tc(this)|0};
|
m.ec=function(){var a=this.i+this.S+this.T+this.U+this.V+this.W+this.Y|0;return a=a+this.na+this.R+Sc(this)|0};
|
||||||
m.save=function(){var a=new H(this);I(a,0,[this.i,this.S,this.T,this.U,this.V,this.W,this.Y,this.na,this.R,Tc(this)]);I(a,1,[this.j,this.M,this.Qa]);for(var b=this.u,c=0,d=[],e=0;e<b.J;e++){var f=b.X[e];if(f.Ma||f.cc){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var p=f[g],q=g+1;q<f.length&&f[q]===p;)q++;l[k++]=q-g;l[k++]=p;g=q}if(l.length<f.length){f=l;break a}}d[h]=f}}I(a,2,d);return a.data()};
|
m.save=function(){var a=new Tc(this);I(a,0,[this.i,this.S,this.T,this.U,this.V,this.W,this.Y,this.na,this.R,Sc(this)]);I(a,1,[this.j,this.M,this.Qa]);for(var b=this.u,c=0,d=[],e=0;e<b.J;e++){var f=b.X[e];if(f.Ma||f.dc){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var p=f[g],q=g+1;q<f.length&&f[q]===p;)q++;l[k++]=q-g;l[k++]=p;g=q}if(l.length<f.length){f=l;break a}}d[h]=f}}I(a,2,d);return a.data()};
|
||||||
m.restore=function(a){var b=a[0];this.i=b[0];this.S=b[1];this.T=b[2];this.U=b[3];this.V=b[4];this.W=b[5];this.Y=b[6];this.na=b[7]&65535;G(this,b[8]);Rc(this,b[9]);b=a[1];this.j=b[0];this.M=b[1];Gc(this,b[3]);a:{b=this.u;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.M){for(var f=0,h=Array(b.M),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.X[d];if(!f||!f.restore(e)){v("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
m.restore=function(a){var b=a[0];this.i=b[0];this.S=b[1];this.T=b[2];this.U=b[3];this.V=b[4];this.W=b[5];this.Y=b[6];this.na=b[7]&65535;H(this,b[8]);Qc(this,b[9]);b=a[1];this.j=b[0];this.M=b[1];Fc(this,b[3]);a:{b=this.u;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.M){for(var f=0,h=Array(b.M),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.X[d];if(!f||!f.restore(e)){v("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||||
m.oa=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.N[b]=c;this.la++;d=!0;break;default:d=this.parent.oa.call(this,a,b,c)}return d};function Uc(a){return a.S<<8|a.T}function Vc(a,b){a.S=b>>8&255;a.T=b&255}function Wc(a){return a.U<<8|a.V}function Xc(a,b){a.U=b>>8&255;a.V=b&255}function J(a){return a.W<<8|a.Y}
|
m.oa=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.N[b]=c;this.la++;d=!0;break;default:d=this.parent.oa.call(this,a,b,c)}return d};function Uc(a){return a.S<<8|a.T}function Vc(a,b){a.S=b>>8&255;a.T=b&255}function Wc(a){return a.U<<8|a.V}function Xc(a,b){a.U=b>>8&255;a.V=b&255}function J(a){return a.W<<8|a.Y}
|
||||||
function Yc(a,b){a.W=b>>8&255;a.Y=b&255}function G(a,b){a.R=b&65535}function Zc(a){return a.ca&256?1:0}function $c(a,b){a.ca=a.ca&255|b}function ad(a){return sb[a.fa&255]?4:0}function bd(a){return(a.fa^a.xa)&16?16:0}function cd(a){return a.ca&255?0:64}function dd(a){return a.fa&128?128:0}function Tc(a){return a.ta&-214|dd(a)|cd(a)|bd(a)|ad(a)|Zc(a)}function Rc(a,b){a.ca=a.fa=a.xa=0;b&1&&(a.ca|=256);b&4||(a.fa|=1);b&16&&(a.xa|=16);b&64||(a.ca|=255);b&128&&(a.fa^=192);a.ta=a.ta&-726|b&512|2}
|
function Yc(a,b){a.W=b>>8&255;a.Y=b&255}function H(a,b){a.R=b&65535}function Zc(a){return a.ca&256?1:0}function $c(a,b){a.ca=a.ca&255|b}function ad(a){return rb[a.fa&255]?4:0}function bd(a){return(a.fa^a.xa)&16?16:0}function cd(a){return a.ca&255?0:64}function dd(a){return a.fa&128?128:0}function Sc(a){return a.ta&-214|dd(a)|cd(a)|bd(a)|ad(a)|Zc(a)}function Qc(a,b){a.ca=a.fa=a.xa=0;b&1&&(a.ca|=256);b&4||(a.fa|=1);b&16&&(a.xa|=16);b&64||(a.ca|=255);b&128&&(a.fa^=192);a.ta=a.ta&-726|b&512|2}
|
||||||
function ed(a,b){a.xa=a.i^b;return a.fa=(a.ca=a.i+b)&255}function fd(a,b){a.xa=a.i^b;return a.fa=(a.ca=a.i+b+(a.ca&256?1:0))&255}function gd(a,b){a.ca=a.fa=a.xa=a.i&b;(a.i|b)&8&&(a.xa^=16);return a.ca}function hd(a,b){a.xa=b^255;b=a.fa=b+255&255;a.ca=a.ca&-256|b;return b}function id(a,b){a.xa=b;b=a.fa=b+1&255;a.ca=a.ca&-256|b;return b}function jd(a,b){return a.fa=a.ca=a.xa=a.i|b}function K(a,b){b^=255;a.xa=a.i^b;return a.fa=(a.ca=a.i+b+1^256)&255}
|
function ed(a,b){a.xa=a.i^b;return a.fa=(a.ca=a.i+b)&255}function fd(a,b){a.xa=a.i^b;return a.fa=(a.ca=a.i+b+(a.ca&256?1:0))&255}function gd(a,b){a.ca=a.fa=a.xa=a.i&b;(a.i|b)&8&&(a.xa^=16);return a.ca}function hd(a,b){a.xa=b^255;b=a.fa=b+255&255;a.ca=a.ca&-256|b;return b}function id(a,b){a.xa=b;b=a.fa=b+1&255;a.ca=a.ca&-256|b;return b}function jd(a,b){return a.fa=a.ca=a.xa=a.i|b}function K(a,b){b^=255;a.xa=a.i^b;return a.fa=(a.ca=a.i+b+1^256)&255}
|
||||||
function kd(a,b){b^=255;a.xa=a.i^b;return a.fa=(a.ca=a.i+b+(a.ca&256?0:1)^256)&255}function Ed(a,b){return a.fa=a.ca=a.xa=a.i^b}m.$=function(a){return this.u.$(a)};m.ua=function(a,b){this.u.ua(a,b)};function L(a){var b=a.$(a.R);G(a,a.R+1);return b}function M(a){var b=a.u.Ra(a.R);G(a,a.R+2);return b}function O(a){var b=a.u.Ra(a.na);a.na=a.na+2&65535;return b}function P(a,b){a.na=a.na-2&65535;a.u.Gb(a.na,b)}
|
function kd(a,b){b^=255;a.xa=a.i^b;return a.fa=(a.ca=a.i+b+(a.ca&256?0:1)^256)&255}function ld(a,b){return a.fa=a.ca=a.xa=a.i^b}m.$=function(a){return this.u.$(a)};m.ua=function(a,b){this.u.ua(a,b)};function L(a){var b=a.$(a.R);H(a,a.R+1);return b}function M(a){var b=a.u.Ra(a.R);H(a,a.R+2);return b}function O(a){var b=a.u.Ra(a.na);a.na=a.na+2&65535;return b}function P(a,b){a.na=a.na-2&65535;a.u.Fb(a.na,b)}
|
||||||
function Fd(a){if(a.b&&a.j&255&&a.ta&512){for(var b=0;8>b&&!(a.j&1<<b);b++);a.j&=~(0>b?255:1<<b);a.ta&=-513;a.j&=-257;a.ia[199|b<<3].call(a)}return a.j&256?(Lc(a),!1):!0}function Gd(a,b){a.j|=1<<b;a.ta&512&&Lc(a)}function R(a,b,c,d){d=d||2;a.N[b]&&(void 0===c&&(qb(a,"Value for "+b+" is invalid"),a.pa()),c=!a.C.za||a.C.ac?n(c,d):"--------".substr(0,d),a.N[b].textContent!=c&&(a.N[b].textContent=c))}
|
function Fd(a){if(a.b&&a.j&255&&a.ta&512){for(var b=0;8>b&&!(a.j&1<<b);b++);a.j&=~(0>b?255:1<<b);a.ta&=-513;a.j&=-257;a.ia[199|b<<3].call(a)}return a.j&256?(Kc(a),!1):!0}function Gd(a,b){a.j|=1<<b;a.ta&512&&Kc(a)}function R(a,b,c,d){d=d||2;a.N[b]&&(void 0===c&&(pb(a,"Value for "+b+" is invalid"),a.pa()),c=!a.C.za||a.C.bc?n(c,d):"--------".substr(0,d),a.N[b].textContent!=c&&(a.N[b].textContent=c))}
|
||||||
m.Ia=function(a){this.la&&(a||!this.C.za||this.C.ac)&&(R(this,"A",this.i),R(this,"B",this.S),R(this,"C",this.T),R(this,"BC",Uc(this),4),R(this,"D",this.U),R(this,"E",this.V),R(this,"DE",Wc(this),4),R(this,"H",this.W),R(this,"L",this.Y),R(this,"HL",J(this),4),R(this,"SP",this.na,4),R(this,"PC",this.R,4),a=Tc(this),R(this,"PS",a,4),R(this,"IF",a&512?1:0,1),R(this,"SF",a&128?1:0,1),R(this,"ZF",a&64?1:0,1),R(this,"AF",a&16?1:0,1),R(this,"PF",a&4?1:0,1),R(this,"CF",a&1?1:0,1));if(a=this.N.speed)a.textContent=
|
m.Ia=function(a){this.la&&(a||!this.C.za||this.C.bc)&&(R(this,"A",this.i),R(this,"B",this.S),R(this,"C",this.T),R(this,"BC",Uc(this),4),R(this,"D",this.U),R(this,"E",this.V),R(this,"DE",Wc(this),4),R(this,"H",this.W),R(this,"L",this.Y),R(this,"HL",J(this),4),R(this,"SP",this.na,4),R(this,"PC",this.R,4),a=Sc(this),R(this,"PS",a,4),R(this,"IF",a&512?1:0,1),R(this,"SF",a&128?1:0,1),R(this,"ZF",a&64?1:0,1),R(this,"AF",a&16?1:0,1),R(this,"PF",a&4?1:0,1),R(this,"CF",a&1?1:0,1));if(a=this.N.speed)a.textContent=
|
||||||
this.C.za&&this.K?this.K.toFixed(2)+"Mhz":"Stopped"};m.kb=function(a){this.C.complete=!0;var b=this.C.ed=this.H&&Hd(this.H),c=a?this.C.Ob?0:1:-1;this.C.Ob=!1;this.L=this.b=a;if(Fd(this)){do{if(b){if(Id(this.H,this.R,c)){this.pa();break}c=1}this.ia[L(this)].call(this)}while(0<this.b)}return this.C.complete?this.L-this.b:void 0===this.C.complete?0:-1};Ma(function(){for(var a=C(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Nc(d);hb(d,c)}});function Jd(){this.b-=4}
|
this.C.za&&this.K?this.K.toFixed(2)+"Mhz":"Stopped"};m.jb=function(a){this.C.complete=!0;var b=this.C.fd=this.H&&Hd(this.H),c=a?this.C.Ob?0:1:-1;this.C.Ob=!1;this.L=this.b=a;if(Fd(this)){do{if(b){if(Id(this.H,this.R,c)){this.pa();break}c=1}this.ia[L(this)].call(this)}while(0<this.b)}return this.C.complete?this.L-this.b:void 0===this.C.complete?0:-1};Ma(function(){for(var a=D(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=C(c),d=new Mc(d);gb(d,c)}});function Jd(){this.b-=4}
|
||||||
function Kd(){G(this,M(this));this.b-=10}function Ld(){G(this,O(this));this.b-=10}function Md(){var a=M(this);P(this,this.R);G(this,a);this.b-=17}
|
function Kd(){H(this,M(this));this.b-=10}function Ld(){H(this,O(this));this.b-=10}function Md(){var a=M(this);P(this,this.R);H(this,a);this.b-=17}
|
||||||
var Oc=[Jd,function(){Vc(this,M(this));this.b-=10},function(){this.ua(Uc(this),this.i);this.b-=7},function(){Vc(this,Uc(this)+1);this.b-=5},function(){this.S=id(this,this.S);this.b-=5},function(){this.S=hd(this,this.S);this.b-=5},function(){this.S=L(this);this.b-=7},function(){var a=this.i<<1;this.i=a&255|a>>8;$c(this,a&256);this.b-=4},Jd,function(){var a;Yc(this,a=J(this)+Uc(this));$c(this,a>>8&256);this.b-=10},function(){this.i=this.$(Uc(this));this.b-=7},function(){Vc(this,Uc(this)-1);this.b-=
|
var Nc=[Jd,function(){Vc(this,M(this));this.b-=10},function(){this.ua(Uc(this),this.i);this.b-=7},function(){Vc(this,Uc(this)+1);this.b-=5},function(){this.S=id(this,this.S);this.b-=5},function(){this.S=hd(this,this.S);this.b-=5},function(){this.S=L(this);this.b-=7},function(){var a=this.i<<1;this.i=a&255|a>>8;$c(this,a&256);this.b-=4},Jd,function(){var a;Yc(this,a=J(this)+Uc(this));$c(this,a>>8&256);this.b-=10},function(){this.i=this.$(Uc(this));this.b-=7},function(){Vc(this,Uc(this)-1);this.b-=
|
||||||
5},function(){this.T=id(this,this.T);this.b-=5},function(){this.T=hd(this,this.T);this.b-=5},function(){this.T=L(this);this.b-=7},function(){var a=this.i<<8&256;this.i=(a|this.i)>>1;$c(this,a);this.b-=4},Jd,function(){Xc(this,M(this));this.b-=10},function(){this.ua(Wc(this),this.i);this.b-=7},function(){Xc(this,Wc(this)+1);this.b-=5},function(){this.U=id(this,this.U);this.b-=5},function(){this.U=hd(this,this.U);this.b-=5},function(){this.U=L(this);this.b-=7},function(){var a=this.i<<1;this.i=a&255|
|
5},function(){this.T=id(this,this.T);this.b-=5},function(){this.T=hd(this,this.T);this.b-=5},function(){this.T=L(this);this.b-=7},function(){var a=this.i<<8&256;this.i=(a|this.i)>>1;$c(this,a);this.b-=4},Jd,function(){Xc(this,M(this));this.b-=10},function(){this.ua(Wc(this),this.i);this.b-=7},function(){Xc(this,Wc(this)+1);this.b-=5},function(){this.U=id(this,this.U);this.b-=5},function(){this.U=hd(this,this.U);this.b-=5},function(){this.U=L(this);this.b-=7},function(){var a=this.i<<1;this.i=a&255|
|
||||||
Zc(this);$c(this,a&256);this.b-=4},Jd,function(){var a;Yc(this,a=J(this)+Wc(this));$c(this,a>>8&256);this.b-=10},function(){this.i=this.$(Wc(this));this.b-=7},function(){Xc(this,Wc(this)-1);this.b-=5},function(){this.V=id(this,this.V);this.b-=5},function(){this.V=hd(this,this.V);this.b-=5},function(){this.V=L(this);this.b-=7},function(){var a=this.i<<8;this.i=(Zc(this)<<8|this.i)>>1;$c(this,a&256);this.b-=4},Jd,function(){Yc(this,M(this));this.b-=10},function(){var a=M(this);this.u.Gb(a,J(this));
|
Zc(this);$c(this,a&256);this.b-=4},Jd,function(){var a;Yc(this,a=J(this)+Wc(this));$c(this,a>>8&256);this.b-=10},function(){this.i=this.$(Wc(this));this.b-=7},function(){Xc(this,Wc(this)-1);this.b-=5},function(){this.V=id(this,this.V);this.b-=5},function(){this.V=hd(this,this.V);this.b-=5},function(){this.V=L(this);this.b-=7},function(){var a=this.i<<8;this.i=(Zc(this)<<8|this.i)>>1;$c(this,a&256);this.b-=4},Jd,function(){Yc(this,M(this));this.b-=10},function(){var a=M(this);this.u.Fb(a,J(this));
|
||||||
this.b-=16},function(){Yc(this,J(this)+1);this.b-=5},function(){this.W=id(this,this.W);this.b-=5},function(){this.W=hd(this,this.W);this.b-=5},function(){this.W=L(this);this.b-=7},function(){var a=0,b=Zc(this);if(bd(this)||9<(this.i&15))a|=6;if(b||154<=this.i)a|=96,b=1;this.i=ed(this,a);$c(this,b?256:0);this.b-=4},Jd,function(){var a;Yc(this,a=J(this)+J(this));$c(this,a>>8&256);this.b-=10},function(){var a;a=M(this);a=this.u.Ra(a);Yc(this,a);this.b-=16},function(){Yc(this,J(this)-1);this.b-=5},function(){this.Y=
|
this.b-=16},function(){Yc(this,J(this)+1);this.b-=5},function(){this.W=id(this,this.W);this.b-=5},function(){this.W=hd(this,this.W);this.b-=5},function(){this.W=L(this);this.b-=7},function(){var a=0,b=Zc(this);if(bd(this)||9<(this.i&15))a|=6;if(b||154<=this.i)a|=96,b=1;this.i=ed(this,a);$c(this,b?256:0);this.b-=4},Jd,function(){var a;Yc(this,a=J(this)+J(this));$c(this,a>>8&256);this.b-=10},function(){var a;a=M(this);a=this.u.Ra(a);Yc(this,a);this.b-=16},function(){Yc(this,J(this)-1);this.b-=5},function(){this.Y=
|
||||||
id(this,this.Y);this.b-=5},function(){this.Y=hd(this,this.Y);this.b-=5},function(){this.Y=L(this);this.b-=7},function(){this.i=~this.i&255;this.b-=4},Jd,function(){this.na=M(this)&65535;this.b-=10},function(){this.ua(M(this),this.i);this.b-=13},function(){this.na=this.na+1&65535;this.b-=5},function(){var a=J(this);this.ua(a,id(this,this.$(a)));this.b-=10},function(){var a=J(this);this.ua(a,hd(this,this.$(a)));this.b-=10},function(){this.ua(J(this),L(this));this.b-=10},function(){this.ca|=256;this.b-=
|
id(this,this.Y);this.b-=5},function(){this.Y=hd(this,this.Y);this.b-=5},function(){this.Y=L(this);this.b-=7},function(){this.i=~this.i&255;this.b-=4},Jd,function(){this.na=M(this)&65535;this.b-=10},function(){this.ua(M(this),this.i);this.b-=13},function(){this.na=this.na+1&65535;this.b-=5},function(){var a=J(this);this.ua(a,id(this,this.$(a)));this.b-=10},function(){var a=J(this);this.ua(a,hd(this,this.$(a)));this.b-=10},function(){this.ua(J(this),L(this));this.b-=10},function(){this.ca|=256;this.b-=
|
||||||
4},Jd,function(){var a;Yc(this,a=J(this)+this.na);$c(this,a>>8&256);this.b-=10},function(){this.i=this.$(M(this));this.b-=13},function(){this.na=this.na-1&65535;this.b-=5},function(){this.i=id(this,this.i);this.b-=5},function(){this.i=hd(this,this.i);this.b-=5},function(){this.i=L(this);this.b-=7},function(){$c(this,Zc(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.S=this.T;this.b-=5},function(){this.S=this.U;this.b-=5},function(){this.S=this.V;this.b-=5},function(){this.S=this.W;this.b-=
|
4},Jd,function(){var a;Yc(this,a=J(this)+this.na);$c(this,a>>8&256);this.b-=10},function(){this.i=this.$(M(this));this.b-=13},function(){this.na=this.na-1&65535;this.b-=5},function(){this.i=id(this,this.i);this.b-=5},function(){this.i=hd(this,this.i);this.b-=5},function(){this.i=L(this);this.b-=7},function(){$c(this,Zc(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.S=this.T;this.b-=5},function(){this.S=this.U;this.b-=5},function(){this.S=this.V;this.b-=5},function(){this.S=this.W;this.b-=
|
||||||
5},function(){this.S=this.Y;this.b-=5},function(){this.S=this.$(J(this));this.b-=7},function(){this.S=this.i;this.b-=5},function(){this.T=this.S;this.b-=5},function(){this.b-=5},function(){this.T=this.U;this.b-=5},function(){this.T=this.V;this.b-=5},function(){this.T=this.W;this.b-=5},function(){this.T=this.Y;this.b-=5},function(){this.T=this.$(J(this));this.b-=7},function(){this.T=this.i;this.b-=5},function(){this.U=this.S;this.b-=5},function(){this.U=this.T;this.b-=5},function(){this.b-=5},function(){this.U=
|
5},function(){this.S=this.Y;this.b-=5},function(){this.S=this.$(J(this));this.b-=7},function(){this.S=this.i;this.b-=5},function(){this.T=this.S;this.b-=5},function(){this.b-=5},function(){this.T=this.U;this.b-=5},function(){this.T=this.V;this.b-=5},function(){this.T=this.W;this.b-=5},function(){this.T=this.Y;this.b-=5},function(){this.T=this.$(J(this));this.b-=7},function(){this.T=this.i;this.b-=5},function(){this.U=this.S;this.b-=5},function(){this.U=this.T;this.b-=5},function(){this.b-=5},function(){this.U=
|
||||||
this.V;this.b-=5},function(){this.U=this.W;this.b-=5},function(){this.U=this.Y;this.b-=5},function(){this.U=this.$(J(this));this.b-=7},function(){this.U=this.i;this.b-=5},function(){this.V=this.S;this.b-=5},function(){this.V=this.T;this.b-=5},function(){this.V=this.U;this.b-=5},function(){this.b-=5},function(){this.V=this.W;this.b-=5},function(){this.V=this.Y;this.b-=5},function(){this.V=this.$(J(this));this.b-=7},function(){this.V=this.i;this.b-=5},function(){this.W=this.S;this.b-=5},function(){this.W=
|
this.V;this.b-=5},function(){this.U=this.W;this.b-=5},function(){this.U=this.Y;this.b-=5},function(){this.U=this.$(J(this));this.b-=7},function(){this.U=this.i;this.b-=5},function(){this.V=this.S;this.b-=5},function(){this.V=this.T;this.b-=5},function(){this.V=this.U;this.b-=5},function(){this.b-=5},function(){this.V=this.W;this.b-=5},function(){this.V=this.Y;this.b-=5},function(){this.V=this.$(J(this));this.b-=7},function(){this.V=this.i;this.b-=5},function(){this.W=this.S;this.b-=5},function(){this.W=
|
||||||
this.T;this.b-=5},function(){this.W=this.U;this.b-=5},function(){this.W=this.V;this.b-=5},function(){this.b-=5},function(){this.W=this.Y;this.b-=5},function(){this.W=this.$(J(this));this.b-=7},function(){this.W=this.i;this.b-=5},function(){this.Y=this.S;this.b-=5},function(){this.Y=this.T;this.b-=5},function(){this.Y=this.U;this.b-=5},function(){this.Y=this.V;this.b-=5},function(){this.Y=this.W;this.b-=5},function(){this.b-=5},function(){this.Y=this.$(J(this));this.b-=7},function(){this.Y=this.i;
|
this.T;this.b-=5},function(){this.W=this.U;this.b-=5},function(){this.W=this.V;this.b-=5},function(){this.b-=5},function(){this.W=this.Y;this.b-=5},function(){this.W=this.$(J(this));this.b-=7},function(){this.W=this.i;this.b-=5},function(){this.Y=this.S;this.b-=5},function(){this.Y=this.T;this.b-=5},function(){this.Y=this.U;this.b-=5},function(){this.Y=this.V;this.b-=5},function(){this.Y=this.W;this.b-=5},function(){this.b-=5},function(){this.Y=this.$(J(this));this.b-=7},function(){this.Y=this.i;
|
||||||
this.b-=5},function(){this.ua(J(this),this.S);this.b-=7},function(){this.ua(J(this),this.T);this.b-=7},function(){this.ua(J(this),this.U);this.b-=7},function(){this.ua(J(this),this.V);this.b-=7},function(){this.ua(J(this),this.W);this.b-=7},function(){this.ua(J(this),this.Y);this.b-=7},function(){var a=this.R-1;if(this.ba.length)for(var b=0;b<this.ba.length;b++)if(this.ba[b](a))return;this.b-=7;this.j|=256;Lc(this);this.H&&kb(this,-2147483648)?(G(this,a),this.H.pa()):this.ta&512||(this.H&&G(this,
|
this.b-=5},function(){this.ua(J(this),this.S);this.b-=7},function(){this.ua(J(this),this.T);this.b-=7},function(){this.ua(J(this),this.U);this.b-=7},function(){this.ua(J(this),this.V);this.b-=7},function(){this.ua(J(this),this.W);this.b-=7},function(){this.ua(J(this),this.Y);this.b-=7},function(){var a=this.R-1;if(this.ba.length)for(var b=0;b<this.ba.length;b++)if(this.ba[b](a))return;this.b-=7;this.j|=256;Kc(this);this.H&&jb(this,-2147483648)?(H(this,a),this.H.pa()):this.ta&512||(this.H&&H(this,
|
||||||
a),this.pa())},function(){this.ua(J(this),this.i);this.b-=7},function(){this.i=this.S;this.b-=5},function(){this.i=this.T;this.b-=5},function(){this.i=this.U;this.b-=5},function(){this.i=this.V;this.b-=5},function(){this.i=this.W;this.b-=5},function(){this.i=this.Y;this.b-=5},function(){this.i=this.$(J(this));this.b-=7},function(){this.b-=5},function(){this.i=ed(this,this.S);this.b-=4},function(){this.i=ed(this,this.T);this.b-=4},function(){this.i=ed(this,this.U);this.b-=4},function(){this.i=ed(this,
|
a),this.pa())},function(){this.ua(J(this),this.i);this.b-=7},function(){this.i=this.S;this.b-=5},function(){this.i=this.T;this.b-=5},function(){this.i=this.U;this.b-=5},function(){this.i=this.V;this.b-=5},function(){this.i=this.W;this.b-=5},function(){this.i=this.Y;this.b-=5},function(){this.i=this.$(J(this));this.b-=7},function(){this.b-=5},function(){this.i=ed(this,this.S);this.b-=4},function(){this.i=ed(this,this.T);this.b-=4},function(){this.i=ed(this,this.U);this.b-=4},function(){this.i=ed(this,
|
||||||
this.V);this.b-=4},function(){this.i=ed(this,this.W);this.b-=4},function(){this.i=ed(this,this.Y);this.b-=4},function(){this.i=ed(this,this.$(J(this)));this.b-=7},function(){this.i=ed(this,this.i);this.b-=4},function(){this.i=fd(this,this.S);this.b-=4},function(){this.i=fd(this,this.T);this.b-=4},function(){this.i=fd(this,this.U);this.b-=4},function(){this.i=fd(this,this.V);this.b-=4},function(){this.i=fd(this,this.W);this.b-=4},function(){this.i=fd(this,this.Y);this.b-=4},function(){this.i=fd(this,
|
this.V);this.b-=4},function(){this.i=ed(this,this.W);this.b-=4},function(){this.i=ed(this,this.Y);this.b-=4},function(){this.i=ed(this,this.$(J(this)));this.b-=7},function(){this.i=ed(this,this.i);this.b-=4},function(){this.i=fd(this,this.S);this.b-=4},function(){this.i=fd(this,this.T);this.b-=4},function(){this.i=fd(this,this.U);this.b-=4},function(){this.i=fd(this,this.V);this.b-=4},function(){this.i=fd(this,this.W);this.b-=4},function(){this.i=fd(this,this.Y);this.b-=4},function(){this.i=fd(this,
|
||||||
this.$(J(this)));this.b-=7},function(){this.i=fd(this,this.i);this.b-=4},function(){this.i=K(this,this.S);this.b-=4},function(){this.i=K(this,this.T);this.b-=4},function(){this.i=K(this,this.U);this.b-=4},function(){this.i=K(this,this.V);this.b-=4},function(){this.i=K(this,this.W);this.b-=4},function(){this.i=K(this,this.Y);this.b-=4},function(){this.i=K(this,this.$(J(this)));this.b-=7},function(){this.i=K(this,this.i);this.b-=4},function(){this.i=kd(this,this.S);this.b-=4},function(){this.i=kd(this,
|
this.$(J(this)));this.b-=7},function(){this.i=fd(this,this.i);this.b-=4},function(){this.i=K(this,this.S);this.b-=4},function(){this.i=K(this,this.T);this.b-=4},function(){this.i=K(this,this.U);this.b-=4},function(){this.i=K(this,this.V);this.b-=4},function(){this.i=K(this,this.W);this.b-=4},function(){this.i=K(this,this.Y);this.b-=4},function(){this.i=K(this,this.$(J(this)));this.b-=7},function(){this.i=K(this,this.i);this.b-=4},function(){this.i=kd(this,this.S);this.b-=4},function(){this.i=kd(this,
|
||||||
this.T);this.b-=4},function(){this.i=kd(this,this.U);this.b-=4},function(){this.i=kd(this,this.V);this.b-=4},function(){this.i=kd(this,this.W);this.b-=4},function(){this.i=kd(this,this.Y);this.b-=4},function(){this.i=kd(this,this.$(J(this)));this.b-=7},function(){this.i=kd(this,this.i);this.b-=4},function(){this.i=gd(this,this.S);this.b-=4},function(){this.i=gd(this,this.T);this.b-=4},function(){this.i=gd(this,this.U);this.b-=4},function(){this.i=gd(this,this.V);this.b-=4},function(){this.i=gd(this,
|
this.T);this.b-=4},function(){this.i=kd(this,this.U);this.b-=4},function(){this.i=kd(this,this.V);this.b-=4},function(){this.i=kd(this,this.W);this.b-=4},function(){this.i=kd(this,this.Y);this.b-=4},function(){this.i=kd(this,this.$(J(this)));this.b-=7},function(){this.i=kd(this,this.i);this.b-=4},function(){this.i=gd(this,this.S);this.b-=4},function(){this.i=gd(this,this.T);this.b-=4},function(){this.i=gd(this,this.U);this.b-=4},function(){this.i=gd(this,this.V);this.b-=4},function(){this.i=gd(this,
|
||||||
this.W);this.b-=4},function(){this.i=gd(this,this.Y);this.b-=4},function(){this.i=gd(this,this.$(J(this)));this.b-=7},function(){this.i=gd(this,this.i);this.b-=4},function(){this.i=Ed(this,this.S);this.b-=4},function(){this.i=Ed(this,this.T);this.b-=4},function(){this.i=Ed(this,this.U);this.b-=4},function(){this.i=Ed(this,this.V);this.b-=4},function(){this.i=Ed(this,this.W);this.b-=4},function(){this.i=Ed(this,this.Y);this.b-=4},function(){this.i=Ed(this,this.$(J(this)));this.b-=7},function(){this.i=
|
this.W);this.b-=4},function(){this.i=gd(this,this.Y);this.b-=4},function(){this.i=gd(this,this.$(J(this)));this.b-=7},function(){this.i=gd(this,this.i);this.b-=4},function(){this.i=ld(this,this.S);this.b-=4},function(){this.i=ld(this,this.T);this.b-=4},function(){this.i=ld(this,this.U);this.b-=4},function(){this.i=ld(this,this.V);this.b-=4},function(){this.i=ld(this,this.W);this.b-=4},function(){this.i=ld(this,this.Y);this.b-=4},function(){this.i=ld(this,this.$(J(this)));this.b-=7},function(){this.i=
|
||||||
Ed(this,this.i);this.b-=4},function(){this.i=jd(this,this.S);this.b-=4},function(){this.i=jd(this,this.T);this.b-=4},function(){this.i=jd(this,this.U);this.b-=4},function(){this.i=jd(this,this.V);this.b-=4},function(){this.i=jd(this,this.W);this.b-=4},function(){this.i=jd(this,this.Y);this.b-=4},function(){this.i=jd(this,this.$(J(this)));this.b-=7},function(){this.i=jd(this,this.i);this.b-=4},function(){K(this,this.S);this.b-=4},function(){K(this,this.T);this.b-=4},function(){K(this,this.U);this.b-=
|
ld(this,this.i);this.b-=4},function(){this.i=jd(this,this.S);this.b-=4},function(){this.i=jd(this,this.T);this.b-=4},function(){this.i=jd(this,this.U);this.b-=4},function(){this.i=jd(this,this.V);this.b-=4},function(){this.i=jd(this,this.W);this.b-=4},function(){this.i=jd(this,this.Y);this.b-=4},function(){this.i=jd(this,this.$(J(this)));this.b-=7},function(){this.i=jd(this,this.i);this.b-=4},function(){K(this,this.S);this.b-=4},function(){K(this,this.T);this.b-=4},function(){K(this,this.U);this.b-=
|
||||||
4},function(){K(this,this.V);this.b-=4},function(){K(this,this.W);this.b-=4},function(){K(this,this.Y);this.b-=4},function(){K(this,this.$(J(this)));this.b-=7},function(){K(this,this.i);this.b-=4},function(){cd(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){Vc(this,O(this));this.b-=10},function(){var a=M(this);cd(this)||G(this,a);this.b-=10},Kd,function(){var a=M(this);cd(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,Uc(this));this.b-=11},function(){this.i=ed(this,
|
4},function(){K(this,this.V);this.b-=4},function(){K(this,this.W);this.b-=4},function(){K(this,this.Y);this.b-=4},function(){K(this,this.$(J(this)));this.b-=7},function(){K(this,this.i);this.b-=4},function(){cd(this)||(H(this,O(this)),this.b-=6);this.b-=5},function(){Vc(this,O(this));this.b-=10},function(){var a=M(this);cd(this)||H(this,a);this.b-=10},Kd,function(){var a=M(this);cd(this)||(P(this,this.R),H(this,a),this.b-=6);this.b-=11},function(){P(this,Uc(this));this.b-=11},function(){this.i=ed(this,
|
||||||
L(this));this.b-=7},function(){P(this,this.R);G(this,0);this.b-=11},function(){cd(this)&&(G(this,O(this)),this.b-=6);this.b-=5},Ld,function(){var a=M(this);cd(this)&&G(this,a);this.b-=10},Kd,function(){var a=M(this);cd(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Md,function(){this.i=fd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,8);this.b-=11},function(){Zc(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){Xc(this,O(this));this.b-=10},function(){var a=M(this);Zc(this)||
|
L(this));this.b-=7},function(){P(this,this.R);H(this,0);this.b-=11},function(){cd(this)&&(H(this,O(this)),this.b-=6);this.b-=5},Ld,function(){var a=M(this);cd(this)&&H(this,a);this.b-=10},Kd,function(){var a=M(this);cd(this)&&(P(this,this.R),H(this,a),this.b-=6);this.b-=11},Md,function(){this.i=fd(this,L(this));this.b-=7},function(){P(this,this.R);H(this,8);this.b-=11},function(){Zc(this)||(H(this,O(this)),this.b-=6);this.b-=5},function(){Xc(this,O(this));this.b-=10},function(){var a=M(this);Zc(this)||
|
||||||
G(this,a);this.b-=10},function(){var a=L(this);Ub(this.u,a,this.i,this.R+-2&65535);this.b-=10},function(){var a=M(this);Zc(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,Wc(this));this.b-=11},function(){this.i=K(this,L(this));this.b-=7},function(){P(this,this.R);G(this,16);this.b-=11},function(){Zc(this)&&(G(this,O(this)),this.b-=6);this.b-=5},Ld,function(){var a=M(this);Zc(this)&&G(this,a);this.b-=10},function(){var a=L(this);this.i=Ib(this.u,a,this.R+-2&65535)&255;this.b-=
|
H(this,a);this.b-=10},function(){var a=L(this);Tb(this.u,a,this.i,this.R+-2&65535);this.b-=10},function(){var a=M(this);Zc(this)||(P(this,this.R),H(this,a),this.b-=6);this.b-=11},function(){P(this,Wc(this));this.b-=11},function(){this.i=K(this,L(this));this.b-=7},function(){P(this,this.R);H(this,16);this.b-=11},function(){Zc(this)&&(H(this,O(this)),this.b-=6);this.b-=5},Ld,function(){var a=M(this);Zc(this)&&H(this,a);this.b-=10},function(){var a=L(this);this.i=Hb(this.u,a,this.R+-2&65535)&255;this.b-=
|
||||||
10},function(){var a=M(this);Zc(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Md,function(){this.i=kd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,24);this.b-=11},function(){ad(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){Yc(this,O(this));this.b-=10},function(){var a=M(this);ad(this)||G(this,a);this.b-=10},function(){var a=O(this);P(this,J(this));Yc(this,a);this.b-=18},function(){var a=M(this);ad(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,
|
10},function(){var a=M(this);Zc(this)&&(P(this,this.R),H(this,a),this.b-=6);this.b-=11},Md,function(){this.i=kd(this,L(this));this.b-=7},function(){P(this,this.R);H(this,24);this.b-=11},function(){ad(this)||(H(this,O(this)),this.b-=6);this.b-=5},function(){Yc(this,O(this));this.b-=10},function(){var a=M(this);ad(this)||H(this,a);this.b-=10},function(){var a=O(this);P(this,J(this));Yc(this,a);this.b-=18},function(){var a=M(this);ad(this)||(P(this,this.R),H(this,a),this.b-=6);this.b-=11},function(){P(this,
|
||||||
J(this));this.b-=11},function(){this.i=gd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,32);this.b-=11},function(){ad(this)&&(G(this,O(this)),this.b-=6);this.b-=5},function(){G(this,J(this));this.b-=5},function(){var a=M(this);ad(this)&&G(this,a);this.b-=10},function(){var a=J(this);Yc(this,Wc(this));Xc(this,a);this.b-=5},function(){var a=M(this);ad(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Md,function(){this.i=Ed(this,L(this));this.b-=7},function(){P(this,this.R);G(this,
|
J(this));this.b-=11},function(){this.i=gd(this,L(this));this.b-=7},function(){P(this,this.R);H(this,32);this.b-=11},function(){ad(this)&&(H(this,O(this)),this.b-=6);this.b-=5},function(){H(this,J(this));this.b-=5},function(){var a=M(this);ad(this)&&H(this,a);this.b-=10},function(){var a=J(this);Yc(this,Wc(this));Xc(this,a);this.b-=5},function(){var a=M(this);ad(this)&&(P(this,this.R),H(this,a),this.b-=6);this.b-=11},Md,function(){this.i=ld(this,L(this));this.b-=7},function(){P(this,this.R);H(this,
|
||||||
40);this.b-=11},function(){dd(this)||(G(this,O(this)),this.b-=6);this.b-=5},function(){var a=O(this);Rc(this,a&255|this.ta&-256);this.i=a>>8;this.b-=10},function(){var a=M(this);dd(this)||G(this,a);this.b-=10},function(){this.ta&=-513;this.b-=4},function(){var a=M(this);dd(this)||(P(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){P(this,Tc(this)&255|this.i<<8);this.b-=11},function(){this.i=jd(this,L(this));this.b-=7},function(){P(this,this.R);G(this,48);this.b-=11},function(){dd(this)&&(G(this,
|
40);this.b-=11},function(){dd(this)||(H(this,O(this)),this.b-=6);this.b-=5},function(){var a=O(this);Qc(this,a&255|this.ta&-256);this.i=a>>8;this.b-=10},function(){var a=M(this);dd(this)||H(this,a);this.b-=10},function(){this.ta&=-513;this.b-=4},function(){var a=M(this);dd(this)||(P(this,this.R),H(this,a),this.b-=6);this.b-=11},function(){P(this,Sc(this)&255|this.i<<8);this.b-=11},function(){this.i=jd(this,L(this));this.b-=7},function(){P(this,this.R);H(this,48);this.b-=11},function(){dd(this)&&(H(this,
|
||||||
O(this)),this.b-=6);this.b-=5},function(){this.na=J(this)&65535;this.b-=5},function(){var a=M(this);dd(this)&&G(this,a);this.b-=10},function(){this.ta|=512;this.b-=4;Fd(this)},function(){var a=M(this);dd(this)&&(P(this,this.R),G(this,a),this.b-=6);this.b-=11},Md,function(){K(this,L(this));this.b-=7},function(){P(this,this.R);G(this,56);this.b-=11}];
|
O(this)),this.b-=6);this.b-=5},function(){this.na=J(this)&65535;this.b-=5},function(){var a=M(this);dd(this)&&H(this,a);this.b-=10},function(){this.ta|=512;this.b-=4;Fd(this)},function(){var a=M(this);dd(this)&&(P(this,this.R),H(this,a),this.b-=6);this.b-=11},Md,function(){K(this,L(this));this.b-=7},function(){P(this,this.R);H(this,56);this.b-=11}];
|
||||||
function S(a){w.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!Nd[b]&&Oa("Unrecognized ChipSet model: "+b);this.w=Nd[b]||{};a.sound&&(this.ea=null,window&&(this.ea=window.AudioContext||window.webkitAudioContext),this.ea&&new this.ea);E(this)}bb(S);
|
function S(a){w.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!Nd[b]&&Oa("Unrecognized ChipSet model: "+b);this.w=Nd[b]||{};a.sound&&(this.ea=null,window&&(this.ea=window.AudioContext||window.webkitAudioContext),this.ea&&new this.ea);F(this)}z(S);
|
||||||
var T={Aa:1978.1,$c:{Ba:0,Ld:1,Pd:16,Wd:32,ee:64,de:128,mb:14},Wa:{Ba:1,Bc:1,Uc:2,Qc:4,Rc:16,Sc:32,Tc:64,mb:8},ad:{Ba:2,Kd:3,me:4,Md:8,$d:16,ae:32,be:64,Nd:128,mb:0},ie:{Ba:3},ge:{Ba:2,Xd:7},ke:{Ba:3,ne:1,je:2,ce:4,Ud:8,Od:16,Hd:32},he:{Ba:4},le:{Ba:5,Qd:1,Rd:2,Sd:4,Td:8,oe:16}},U={Aa:100,Ja:{Ba:66,Zb:1,Vb:2,Pc:4,Zd:8,Yd:16,Xb:32,Wb:64,Sb:128},Ac:{Ba:66,INIT:0},Ua:{Ba:194,Jd:0,Rb:16,Vc:32,Yb:48,Fc:0,Gc:32},zb:{Ba:162,fe:0,Ic:0,Ec:0,Hc:0,Dc:0},Ka:{Vd:{Ba:98},Ta:{xc:0,wc:1,Xc:2,bd:4,Cc:5,Wc:6,Yc:7},
|
var T={Aa:1978.1,ad:{Ba:0,Md:1,Qd:16,Xd:32,fe:64,ee:128,lb:14},Wa:{Ba:1,Cc:1,Vc:2,Rc:4,Sc:16,Tc:32,Uc:64,lb:8},bd:{Ba:2,Ld:3,ne:4,Nd:8,ae:16,be:32,ce:64,Od:128,lb:0},je:{Ba:3},he:{Ba:2,Yd:7},le:{Ba:3,oe:1,ke:2,de:4,Vd:8,Pd:16,Id:32},ie:{Ba:4},me:{Ba:5,Rd:1,Sd:2,Td:4,Ud:8,pe:16}},U={Aa:100,Ja:{Ba:66,Zb:1,Vb:2,Qc:4,$d:8,Zd:16,Xb:32,Wb:64,Sb:128},Bc:{Ba:66,INIT:0},Ua:{Ba:194,Kd:0,Rb:16,Wc:32,Yb:48,Gc:0,Hc:32},yb:{Ba:162,ge:0,Jc:0,Fc:0,Ic:0,Ec:0},Ka:{Wd:{Ba:98},Ta:{yc:0,xc:1,Yc:2,cd:4,Dc:5,Xc:6,Zc:7},
|
||||||
Ab:16383}},Nd={SI1978:T,VT100:U};S.prototype.oa=function(){return!1};S.prototype.Oa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;this.B=a;this.K=vb(a,"Keyboard");this.Ea=vb(a,"SerialPort");this.video=vb(a,"Video");Hb(b,this,this.w.Eb);Tb(b,this,this.w.Fb);if(d){var e=this;Od(d,16384,function(){for(var a="",b=0;b<e.I.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=t(e.I[b]);e.H.g(a)})}};S.prototype.Da=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};
|
zb:16383}},Nd={SI1978:T,VT100:U};S.prototype.oa=function(){return!1};S.prototype.Oa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;this.B=a;this.K=ub(a,"Keyboard");this.Ea=ub(a,"SerialPort");this.video=ub(a,"Video");Gb(b,this,this.w.Db);Sb(b,this,this.w.Eb);if(d){var e=this;Od(d,16384,function(){for(var a="",b=0;b<e.I.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=t(e.I[b]);e.H.g(a)})}};S.prototype.Da=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};
|
||||||
S.prototype.Ha=function(a){return a?this.save():!0};T.INIT=[[T.$c.mb,T.Wa.mb,T.ad.mb,0,0,0,0]];
|
S.prototype.Ha=function(a){return a?this.save():!0};T.INIT=[[T.ad.lb,T.Wa.lb,T.bd.lb,0,0,0,0]];
|
||||||
U.INIT=[[U.Ac.INIT,U.Ja.Vb|U.Ja.Pc],[U.Ua.Fc,U.Ua.Gc],[U.zb.Ic,U.zb.Ec,U.zb.Hc,U.zb.Dc],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
U.INIT=[[U.Bc.INIT,U.Ja.Vb|U.Ja.Qc],[U.Ua.Gc,U.Ua.Hc],[U.yb.Jc,U.yb.Fc,U.yb.Ic,U.yb.Ec],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||||
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];m=S.prototype;m.reset=function(){this.w.INIT&&!this.restore(this.w.INIT)&&this.ja("reset error")};
|
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];m=S.prototype;m.reset=function(){this.w.INIT&&!this.restore(this.w.INIT)&&this.ja("reset error")};
|
||||||
m.save=function(){var a=new H(this);switch(this.w.Aa){case T.Aa:I(a,0,[this.va,this.G,this.ya,this.Z,this.da,this.ka,this.la]);break;case U.Aa:I(a,0,[this.ga,this.J]),I(a,1,[this.L,this.M]),I(a,2,[this.D,this.aa,this.ia,this.ha]),I(a,3,[this.P,this.j,this.O,this.ba,this.I])}return a.data()};
|
m.save=function(){var a=new Tc(this);switch(this.w.Aa){case T.Aa:I(a,0,[this.va,this.G,this.ya,this.Z,this.da,this.ka,this.la]);break;case U.Aa:I(a,0,[this.ga,this.J]),I(a,1,[this.L,this.M]),I(a,2,[this.D,this.aa,this.ia,this.ha]),I(a,3,[this.P,this.j,this.O,this.ba,this.I])}return a.data()};
|
||||||
m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.w.Aa){case T.Aa:return this.va=b[0],this.G=b[1],this.ya=b[2],this.Z=b[3],this.da=b[4],this.ka=b[5],this.la=b[6],!0;case U.Aa:return this.ga=b[0],this.J=b[1],b=a[1],this.L=b[0],this.M=b[1],b=a[2],this.D=b[0],this.aa=b[1],this.ia=b[2],this.ha=b[3],b=a[3],this.P=b[0],this.j=b[1],this.O=b[2],this.ba=b[3],this.I=b[4],!0}return!1};m.start=function(){};m.stop=function(){};m.jd=function(a,b){var c=this.va;D(this,a,null,b,"STATUS0",c,!0);return c};
|
m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.w.Aa){case T.Aa:return this.va=b[0],this.G=b[1],this.ya=b[2],this.Z=b[3],this.da=b[4],this.ka=b[5],this.la=b[6],!0;case U.Aa:return this.ga=b[0],this.J=b[1],b=a[1],this.L=b[0],this.M=b[1],b=a[2],this.D=b[0],this.aa=b[1],this.ia=b[2],this.ha=b[3],b=a[3],this.P=b[0],this.j=b[1],this.O=b[2],this.ba=b[3],this.I=b[4],!0}return!1};m.start=function(){};m.stop=function(){};m.kd=function(a,b){var c=this.va;E(this,a,null,b,"STATUS0",c,!0);return c};
|
||||||
m.kd=function(a,b){var c=this.G;D(this,a,null,b,"STATUS1",c,!0);return c};m.ld=function(a,b){var c=this.ya;D(this,a,null,b,"STATUS2",c,!0);return c};m.hd=function(a,b){var c=this.Z>>8-this.da&255;D(this,a,null,b,"SHIFT.RESULT",c,!0);return c};m.sd=function(a,b,c){D(this,a,b,c,"SHIFT.COUNT",null,!0);this.da=b};m.ud=function(a,b,c){D(this,a,b,c,"SOUND1",null,!0);this.ka=b};m.td=function(a,b,c){D(this,a,b,c,"SHIFT.DATA",null,!0);this.Z=b<<8|this.Z>>8};
|
m.ld=function(a,b){var c=this.G;E(this,a,null,b,"STATUS1",c,!0);return c};m.md=function(a,b){var c=this.ya;E(this,a,null,b,"STATUS2",c,!0);return c};m.jd=function(a,b){var c=this.Z>>8-this.da&255;E(this,a,null,b,"SHIFT.RESULT",c,!0);return c};m.td=function(a,b,c){E(this,a,b,c,"SHIFT.COUNT",null,!0);this.da=b};m.vd=function(a,b,c){E(this,a,b,c,"SOUND1",null,!0);this.ka=b};m.ud=function(a,b,c){E(this,a,b,c,"SHIFT.DATA",null,!0);this.Z=b<<8|this.Z>>8};
|
||||||
m.vd=function(a,b,c){D(this,a,b,c,"SOUND2",null,!0);this.la=b};m.wd=function(a,b,c){D(this,a,b,c,"WATCHDOG",null,!0)};function Pd(a){var b=0,c=0,d=~a.P;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
|
m.wd=function(a,b,c){E(this,a,b,c,"SOUND2",null,!0);this.la=b};m.xd=function(a,b,c){E(this,a,b,c,"WATCHDOG",null,!0)};function Pd(a){var b=0,c=0,d=~a.P;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
|
||||||
m.md=function(a,b){var c=this.J,c=c&~U.Ja.Wb;if((Fc(this.b)&64)<<1&&(c|=U.Ja.Wb,c!=this.J)){var d,e;d=this.O&1;e=this.O>>1&7;switch(e){case U.Ka.Ta.Yc:break;case U.Ka.Ta.wc:this.P=this.P<<1|d;break;case U.Ka.Ta.Cc:d=Pd(this);this.I[d]=U.Ka.Ab;jb(this,"doNVRCommand(): erase data at addr "+t(d));break;case U.Ka.Ta.xc:this.j=this.j<<1|d;break;case U.Ka.Ta.bd:d=Pd(this);e=this.j&U.Ka.Ab;this.I[d]=e;jb(this,"doNVRCommand(): write data "+t(e)+" to addr "+t(d));break;case U.Ka.Ta.Wc:d=Pd(this);e=this.I[d];
|
m.nd=function(a,b){var c=this.J,c=c&~U.Ja.Wb;if((Ec(this.b)&64)<<1&&(c|=U.Ja.Wb,c!=this.J)){var d,e;d=this.O&1;e=this.O>>1&7;switch(e){case U.Ka.Ta.Zc:break;case U.Ka.Ta.xc:this.P=this.P<<1|d;break;case U.Ka.Ta.Dc:d=Pd(this);this.I[d]=U.Ka.zb;ib(this,"doNVRCommand(): erase data at addr "+t(d));break;case U.Ka.Ta.yc:this.j=this.j<<1|d;break;case U.Ka.Ta.cd:d=Pd(this);e=this.j&U.Ka.zb;this.I[d]=e;ib(this,"doNVRCommand(): write data "+t(e)+" to addr "+t(d));break;case U.Ka.Ta.Xc:d=Pd(this);e=this.I[d];
|
||||||
null==e&&(e=U.Ka.Ab);this.j=e;jb(this,"doNVRCommand(): read data "+t(e)+" from addr "+t(d));break;case U.Ka.Ta.Xc:this.j<<=1;this.ba=this.j&U.Ka.Ab+1;break;default:jb(this,"doNVRCommand(): unrecognized command "+da(e))}}c&=~U.Ja.Xb;this.ba&&(c|=U.Ja.Xb);c&=~U.Ja.Sb;if(d=this.K){d=this.K;if(e=d.D)e=d.b,e=Fc(d.b)>=d.J+e.Z*e.Qa/1E3*1.2731488;e&&(d.D=!1);d=!d.D}d&&(c|=U.Ja.Sb);c&=~U.Ja.Zb;this.Ea&&this.Ea.Ca&1&&(c|=U.Ja.Zb);this.J=c;D(this,a,null,b,"FLAGS",c);return c};
|
null==e&&(e=U.Ka.zb);this.j=e;ib(this,"doNVRCommand(): read data "+t(e)+" from addr "+t(d));break;case U.Ka.Ta.Yc:this.j<<=1;this.ba=this.j&U.Ka.zb+1;break;default:ib(this,"doNVRCommand(): unrecognized command "+da(e))}}c&=~U.Ja.Xb;this.ba&&(c|=U.Ja.Xb);c&=~U.Ja.Sb;if(d=this.K){d=this.K;if(e=d.D)e=d.b,e=Ec(d.b)>=d.J+e.Z*e.Qa/1E3*1.2731488;e&&(d.D=!1);d=!d.D}d&&(c|=U.Ja.Sb);c&=~U.Ja.Zb;this.Ea&&this.Ea.Ca&1&&(c|=U.Ja.Zb);this.J=c;E(this,a,null,b,"FLAGS",c);return c};
|
||||||
m.xd=function(a,b,c){D(this,a,b,c,"BRIGHTNESS");this.ga=b};m.Ad=function(a,b,c){D(this,a,b,c,"NVR.LATCH");this.O=b};m.zd=function(a,b,c){D(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.D=this.D&-4|a;break;case 1:this.D=this.D&-13|a<<2;this.video&&(b=this.video,a=this.D,jb(b,"updateScrollOffset("+a+")"),b.fb!==a&&((b.fb=a)?Mc(b,!0):b.qb=!0));break;case 2:switch(a){case 0:this.aa=~this.aa;break;case 2:case 3:this.ia=3-a}break;case 3:this.ha=a}};
|
m.yd=function(a,b,c){E(this,a,b,c,"BRIGHTNESS");this.ga=b};m.Bd=function(a,b,c){E(this,a,b,c,"NVR.LATCH");this.O=b};m.Ad=function(a,b,c){E(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.D=this.D&-4|a;break;case 1:this.D=this.D&-13|a<<2;this.video&&(b=this.video,a=this.D,ib(b,"updateScrollOffset("+a+")"),b.ob!==a&&((b.ob=a)?Lc(b,!0):b.qb=!0));break;case 2:switch(a){case 0:this.aa=~this.aa;break;case 2:case 3:this.ia=3-a}break;case 3:this.ha=a}};
|
||||||
m.yd=function(a,b,c){D(this,a,b,c,"DC011");b&U.Ua.Vc?(b&=U.Ua.Yb,this.M!=b&&(this.M=b,this.video&&(a=this.video,b=this.M==U.Ua.Yb?50:60,jb(a,"updateRate("+b+")"),a.sc=b))):(b&=U.Ua.Rb,this.L!=b&&(this.L=b,this.video&&(a=this.L==U.Ua.Rb?132:80,b=this.video,jb(b,"updateDimensions("+a+","+(80<a&&this.J&U.Ja.Vb?14:24)+")"),b.ba=a,b.qa=b.gc,80<a&&b.qa--,Qd(b)&&Rd(b))))};T.Eb={0:S.prototype.jd,1:S.prototype.kd,2:S.prototype.ld,3:S.prototype.hd};
|
m.zd=function(a,b,c){E(this,a,b,c,"DC011");b&U.Ua.Wc?(b&=U.Ua.Yb,this.M!=b&&(this.M=b,this.video&&(a=this.video,b=this.M==U.Ua.Yb?50:60,ib(a,"updateRate("+b+")"),a.tc=b))):(b&=U.Ua.Rb,this.L!=b&&(this.L=b,this.video&&(a=this.L==U.Ua.Rb?132:80,b=this.video,ib(b,"updateDimensions("+a+","+(80<a&&this.J&U.Ja.Vb?14:24)+")"),b.ba=a,b.qa=b.hc,80<a&&b.qa--,Qd(b)&&Rd(b))))};T.Db={0:S.prototype.kd,1:S.prototype.ld,2:S.prototype.md,3:S.prototype.jd};
|
||||||
T.Fb={2:S.prototype.sd,3:S.prototype.ud,4:S.prototype.td,5:S.prototype.vd,6:S.prototype.wd};U.Eb={66:S.prototype.md};U.Fb={66:S.prototype.xd,98:S.prototype.Ad,162:S.prototype.zd,194:S.prototype.yd};Ma(function(){for(var a=C(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new S(d);hb(d,c)}});
|
T.Eb={2:S.prototype.td,3:S.prototype.vd,4:S.prototype.ud,5:S.prototype.wd,6:S.prototype.xd};U.Db={66:S.prototype.nd};U.Eb={66:S.prototype.yd,98:S.prototype.Bd,162:S.prototype.Ad,194:S.prototype.zd};Ma(function(){for(var a=D(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=C(c),d=new S(d);gb(d,c)}});
|
||||||
function Sd(a){w.call(this,"ROM",a,Sd);this.B=null;this.D=a.addr;this.j=a.size;this.G=a.writable;this.w=a.alias;this.I=a.file;this.K=ea(this.I);if(this.I){a=this.I;var b=fa(this.K);"json"!=b&&"hex"!=b&&(a=ha()+"/api/v1/dump?file="+this.I+"&format=bytes&decimal=true");var c=this;sa(a,null,!0,function(a,b,f){Td(c,a,b,f)})}}bb(Sd);var Ud=[0,5];Sd.prototype.Oa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;Vd(this)};
|
function Sd(a){w.call(this,"ROM",a,Sd);this.B=null;this.D=a.addr;this.j=a.size;this.G=a.writable;this.w=a.alias;this.I=a.file;this.K=ea(this.I);if(this.I){a=this.I;var b=fa(this.K);"json"!=b&&"hex"!=b&&(a=ha()+"/api/v1/dump?file="+this.I+"&format=bytes&decimal=true");var c=this;sa(a,null,!0,function(a,b,f){Td(c,a,b,f)})}}z(Sd);var Ud=[0,5];Sd.prototype.Oa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;Vd(this)};
|
||||||
Sd.prototype.Da=function(){if(this.Pa){if(this.H){var a=this.H,b=this.id,c=this.D,d=this.j,e=this.Pa,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var p=f,k=[k>>>0,h],q=oa(p,k,a.Sa);0>q&&p.splice(-(q+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.G.push({pe:b,F:c,od:d,Pa:e,$b:f})}delete this.Pa}return!0};Sd.prototype.Ha=function(){return!0};
|
Sd.prototype.Da=function(){if(this.Pa){if(this.H){var a=this.H,b=this.id,c=this.D,d=this.j,e=this.Pa,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var p=f,k=[k>>>0,h],q=oa(p,k,a.ac);0>q&&p.splice(-(q+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.G.push({re:b,F:c,pd:d,Pa:e,$b:f})}delete this.Pa}return!0};Sd.prototype.Ha=function(){return!0};
|
||||||
function Td(a,b,c,d){if(d)a.ja("Unable to load system ROM (error "+d+": "+b+")");else{db(a.Bb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.B=f;else if(h)for(a.B=Array(4*h.length),d=c=0;c<h.length;c++)a.B[d++]=h[c]&255,a.B[d++]=h[c]>>8&255,a.B[d++]=h[c]>>16&255,a.B[d++]=h[c]>>24&255;else a.B=e;a.Pa=e.symbols;if(!a.B.length){v("Empty ROM: "+b);return}if(1==a.B.length){v(a.B[0]);return}}catch(g){a.ja("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
function Td(a,b,c,d){if(d)a.ja("Unable to load system ROM (error "+d+": "+b+")");else{cb(a.Ab,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.B=f;else if(h)for(a.B=Array(4*h.length),d=c=0;c<h.length;c++)a.B[d++]=h[c]&255,a.B[d++]=h[c]>>8&255,a.B[d++]=h[c]>>16&255,a.B[d++]=h[c]>>24&255;else a.B=e;a.Pa=e.symbols;if(!a.B.length){v("Empty ROM: "+b);return}if(1==a.B.length){v(a.B[0]);return}}catch(g){a.ja("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||||
" ").replace(/ +$/,"").split(" "),a.B=Array(b.length),e=0;e<b.length;e++)a.B[e]=ca(b[e],16);Vd(a)}}
|
" ").replace(/ +$/,"").split(" "),a.B=Array(b.length),e=0;e<b.length;e++)a.B[e]=aa(b[e],16);Vd(a)}}
|
||||||
function Vd(a){if(!pb(a))if(!a.I)E(a);else if(a.B&&a.u){a.j||(a.j=a.B.length);if(a.B.length!=a.j)qb(a,"ROM size (0x"+n(a.B.length)+") does not match specified size ("+("0x"+n(a.j))+")");else if(Wd(a,a.D)){var b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.u,h=d.j,g=[],k=d.D>>>f.ra;0<h&&k<f.X.length;)g.push(f.X[k++]),h-=f.Ga;f=d.u;d=d.j;h=0;for(e>>>=f.ra;0<d&&e<f.X.length;){k=g[h++];if(!k)break;f.X[e++]=k;d-=f.Ga}}delete a.B}E(a)}}
|
function Vd(a){if(!mb(a))if(!a.I)F(a);else if(a.B&&a.u){a.j||(a.j=a.B.length);if(a.B.length!=a.j)pb(a,"ROM size (0x"+n(a.B.length)+") does not match specified size ("+("0x"+n(a.j))+")");else if(Wd(a,a.D)){var b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.u,h=d.j,g=[],k=d.D>>>f.ra;0<h&&k<f.X.length;)g.push(f.X[k++]),h-=f.Ga;f=d.u;d=d.j;h=0;for(e>>>=f.ra;0<d&&e<f.X.length;){k=g[h++];if(!k)break;f.X[e++]=k;d-=f.Ga}}delete a.B}F(a)}}
|
||||||
function Wd(a,b){if(zb(a.u,b,a.j,a.G?1:ac)){var c;for(c=0;c<a.B.length;c++)Eb(a.u,b+c,a.B[c]);if(a.G&&256==b){for(c=0;c<Ud.length;c++)Eb(a.u,Ud[c],118);Qc(a.b,function(a){return function(b){if(0<=Ud.indexOf(b)){var c=!1,h=a.b,g=a.H;if(5==b)switch(c=!0,h.T){case 2:Xd(a,String.fromCharCode(h.V));break;case 9:for(var k=Wc(h),l="",p=255;p--;){var q=a.b.$(k++);if(36==q)break;l+=String.fromCharCode(q)}Xd(a,l);break;default:c=!1}c?Ld.call(h):g&&(a.g("\nCP/M vector "+t(b)),G(h,b),g.pa());b=!0}else b=!1;return b}}(a));
|
function Wd(a,b){if(yb(a.u,b,a.j,a.G?1:$b)){var c;for(c=0;c<a.B.length;c++)Db(a.u,b+c,a.B[c]);if(a.G&&256==b){for(c=0;c<Ud.length;c++)Db(a.u,Ud[c],118);Pc(a.b,function(a){return function(b){if(0<=Ud.indexOf(b)){var c=!1,h=a.b,g=a.H;if(5==b)switch(c=!0,h.T){case 2:Xd(a,String.fromCharCode(h.V));break;case 9:for(var k=Wc(h),l="",p=255;p--;){var q=a.b.$(k++);if(36==q)break;l+=String.fromCharCode(q)}Xd(a,l);break;default:c=!1}c?Ld.call(h):g&&(a.g("\nCP/M vector "+t(b)),H(h,b),g.pa());b=!0}else b=!1;return b}}(a));
|
||||||
Sc(a.b,b)}return!0}return!1}function Xd(a,b){b=b.replace(/\r/g,"");a.Fa&&(a.Fa.value+=b,a.Fa.scrollTop=a.Fa.scrollHeight)}Ma(function(){for(var a=C(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Sd(d);hb(d,c)}});function Yd(a){w.call(this,"RAM",a,Yd);this.w=a.addr;this.j=a.size;this.B=!1}bb(Yd);m=Yd.prototype;m.Oa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;E(this)};m.Da=function(a,b){b||this.reset();return!0};m.Ha=function(a){return a?this.save():!0};
|
Rc(a.b,b)}return!0}return!1}function Xd(a,b){b=b.replace(/\r/g,"");a.Fa&&(a.Fa.value+=b,a.Fa.scrollTop=a.Fa.scrollHeight)}Ma(function(){for(var a=D(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=C(c),d=new Sd(d);gb(d,c)}});function Yd(a){w.call(this,"RAM",a,Yd);this.w=a.addr;this.j=a.size;this.B=!1}z(Yd);m=Yd.prototype;m.Oa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;F(this)};m.Da=function(a,b){b||this.reset();return!0};m.Ha=function(a){return a?this.save():!0};
|
||||||
m.reset=function(){!this.B&&this.j&&zb(this.u,this.w,this.j,1)&&(this.B=!0);this.B||v("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ma(function(){for(var a=C(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Yd(d);hb(d,c)}});function Zd(a){w.call(this,"Keyboard",a,Zd,65536);(a=a.model)&&!$d[a]&&Oa("Unrecognized Keyboard8080 model: "+a);this.u=$d[a]||{};this.reset();E(this)}bb(Zd);
|
m.reset=function(){!this.B&&this.j&&yb(this.u,this.w,this.j,1)&&(this.B=!0);this.B||v("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ma(function(){for(var a=D(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=C(c),d=new Yd(d);gb(d,c)}});function Zd(a){w.call(this,"Keyboard",a,Zd,65536);(a=a.model)&&!$d[a]&&Oa("Unrecognized Keyboard8080 model: "+a);this.u=$d[a]||{};this.reset();F(this)}z(Zd);
|
||||||
var ae={Aa:1978.1,A:{},Qb:{65:37,68:39,76:32},nb:{},Va:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},V={Aa:100,A:{},Qb:{},nb:{},Va:{setup:120},yc:{Ba:130,INIT:127},La:{Ba:130,Nc:1,Mc:2,Lc:4,Kc:8,Oc:16,Ub:32,Tb:63,Zc:64,Id:128,INIT:0},Jc:127};V.A[46]=3;V.A[80]=5;V.A[79]=6;V.A[89]=7;V.A[84]=8;V.A[87]=9;V.A[81]=10;V.A[39]=16;V.A[221]=20;V.A[219]=21;V.A[73]=22;V.A[85]=23;V.A[82]=24;V.A[69]=25;V.A[49]=26;V.A[37]=32;V.A[40]=34;V.A[117]=35;V.A[19]=35;V.A[192]=36;V.A[189]=37;V.A[57]=38;V.A[55]=39;
|
var ae={Aa:1978.1,A:{},Qb:{65:37,68:39,76:32},mb:{},Va:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},V={Aa:100,A:{},Qb:{},mb:{},Va:{setup:120},zc:{Ba:130,INIT:127},La:{Ba:130,Oc:1,Nc:2,Mc:4,Lc:8,Pc:16,Ub:32,Tb:63,$c:64,Jd:128,INIT:0},Kc:127};V.A[46]=3;V.A[80]=5;V.A[79]=6;V.A[89]=7;V.A[84]=8;V.A[87]=9;V.A[81]=10;V.A[39]=16;V.A[221]=20;V.A[219]=21;V.A[73]=22;V.A[85]=23;V.A[82]=24;V.A[69]=25;V.A[49]=26;V.A[37]=32;V.A[40]=34;V.A[117]=35;V.A[19]=35;V.A[192]=36;V.A[189]=37;V.A[57]=38;V.A[55]=39;
|
||||||
V.A[52]=40;V.A[51]=41;V.A[27]=42;V.A[38]=48;V.A[114]=49;V.A[112]=50;V.A[8]=51;V.A[187]=52;V.A[48]=53;V.A[56]=54;V.A[54]=55;V.A[53]=56;V.A[50]=57;V.A[9]=58;V.A[103]=64;V.A[115]=65;V.A[113]=66;V.A[96]=67;V.A[118]=68;V.A[220]=69;V.A[76]=70;V.A[75]=71;V.A[71]=72;V.A[70]=73;V.A[65]=74;V.A[104]=80;V.A[2013]=81;V.A[98]=82;V.A[97]=83;V.A[222]=85;V.A[186]=86;V.A[74]=87;V.A[72]=88;V.A[68]=89;V.A[83]=90;V.A[110]=96;V.A[116]=97;V.A[101]=98;V.A[100]=99;V.A[13]=100;V.A[190]=101;V.A[188]=102;V.A[78]=103;
|
V.A[52]=40;V.A[51]=41;V.A[27]=42;V.A[38]=48;V.A[114]=49;V.A[112]=50;V.A[8]=51;V.A[187]=52;V.A[48]=53;V.A[56]=54;V.A[54]=55;V.A[53]=56;V.A[50]=57;V.A[9]=58;V.A[103]=64;V.A[115]=65;V.A[113]=66;V.A[96]=67;V.A[118]=68;V.A[220]=69;V.A[76]=70;V.A[75]=71;V.A[71]=72;V.A[70]=73;V.A[65]=74;V.A[104]=80;V.A[2013]=81;V.A[98]=82;V.A[97]=83;V.A[222]=85;V.A[186]=86;V.A[74]=87;V.A[72]=88;V.A[68]=89;V.A[83]=90;V.A[110]=96;V.A[116]=97;V.A[101]=98;V.A[100]=99;V.A[13]=100;V.A[190]=101;V.A[188]=102;V.A[78]=103;
|
||||||
V.A[66]=104;V.A[88]=105;V.A[119]=106;V.A[105]=112;V.A[99]=113;V.A[102]=114;V.A[109]=115;V.A[191]=117;V.A[77]=118;V.A[32]=119;V.A[86]=120;V.A[67]=121;V.A[90]=122;V.A[120]=123;V.A[17]=124;V.A[16]=125;V.A[20]=126;V.nb={l4:V.La.Nc,l3:V.La.Mc,l2:V.La.Lc,l1:V.La.Kc,locked:V.La.Oc,local:V.La.Ub,online:~V.La.Ub};var $d={SI1978:ae,VT100:V};
|
V.A[66]=104;V.A[88]=105;V.A[119]=106;V.A[105]=112;V.A[99]=113;V.A[102]=114;V.A[109]=115;V.A[191]=117;V.A[77]=118;V.A[32]=119;V.A[86]=120;V.A[67]=121;V.A[90]=122;V.A[120]=123;V.A[17]=124;V.A[16]=125;V.A[20]=126;V.mb={l4:V.La.Oc,l3:V.La.Nc,l2:V.La.Mc,l1:V.La.Lc,locked:V.La.Pc,local:V.La.Ub,online:~V.La.Ub};var $d={SI1978:ae,VT100:V};
|
||||||
Zd.prototype.oa=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.N[e]){if("led"==a&&this.u.nb[b])return this.N[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return be(d,a,!0)},c.onkeyup=function(a){return be(d,a,!1)},!0;default:if(this.u.Va&&void 0!==this.u.Va[b])return this.N[e]=c,a=function(a,b){return function(c){c.preventDefault();ce(a,b,!0)}}(this,this.u.Va[b]),b=function(a,b){return function(){ce(a,b,!1)}}(this,this.u.Va[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
|
Zd.prototype.oa=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.N[e]){if("led"==a&&this.u.mb[b])return this.N[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return be(d,a,!0)},c.onkeyup=function(a){return be(d,a,!1)},!0;default:if(this.u.Va&&void 0!==this.u.Va[b])return this.N[e]=c,a=function(a,b){return function(c){c.preventDefault();ce(a,b,!0)}}(this,this.u.Va[b]),b=function(a,b){return function(){ce(a,b,!1)}}(this,this.u.Va[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
|
||||||
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};Zd.prototype.Oa=function(a,b,c,d){this.B=a;this.b=c;this.H=d;this.I=vb(a,"ChipSet");Hb(b,this,this.u.Eb);Tb(b,this,this.u.Fb)};Zd.prototype.Da=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};Zd.prototype.Ha=function(a){return a?this.save():!0};V.INIT=[[V.La.INIT,V.yc.INIT,!1,0,-1]];m=Zd.prototype;m.reset=function(){this.j=[];this.u.INIT&&!this.restore(this.u.INIT)&&this.ja("reset error")};
|
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};Zd.prototype.Oa=function(a,b,c,d){this.B=a;this.b=c;this.H=d;this.I=ub(a,"ChipSet");Gb(b,this,this.u.Db);Sb(b,this,this.u.Eb)};Zd.prototype.Da=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};Zd.prototype.Ha=function(a){return a?this.save():!0};V.INIT=[[V.La.INIT,V.zc.INIT,!1,0,-1]];m=Zd.prototype;m.reset=function(){this.j=[];this.u.INIT&&!this.restore(this.u.INIT)&&this.ja("reset error")};
|
||||||
m.save=function(){var a=new H(this);switch(this.u.Aa){case V.Aa:I(a,0,[this.K,this.G,this.D,this.J,-1])}return a.data()};m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.u.Aa){case ae.Aa:return!0;case V.Aa:return this.K=b[0],de(this,this.K&V.La.Tb),this.G=b[1],this.D=b[2],this.J=b[3],this.w=b[4],!0}return!1};function de(a,b){for(var c in a.u.nb){var d=a.N["led-"+c];if(d){var e=a.u.nb[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}
|
m.save=function(){var a=new Tc(this);switch(this.u.Aa){case V.Aa:I(a,0,[this.K,this.G,this.D,this.J,-1])}return a.data()};m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.u.Aa){case ae.Aa:return!0;case V.Aa:return this.K=b[0],de(this,this.K&V.La.Tb),this.G=b[1],this.D=b[2],this.J=b[3],this.w=b[4],!0}return!1};function de(a,b){for(var c in a.u.mb){var d=a.N["led-"+c];if(d){var e=a.u.mb[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}
|
||||||
function be(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.u.Qb[e]||e,!a.u.A[e]){for(var f in a.u.Va)if(a.u.Va[f]===e){e=f;break a}e=null}e&&(d=ce(a,e,c),b.preventDefault());return d}
|
function be(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.u.Qb[e]||e,!a.u.A[e]){for(var f in a.u.Va)if(a.u.Va[f]===e){e=f;break a}e=null}e&&(d=ce(a,e,c),b.preventDefault());return d}
|
||||||
function ce(a,b,c){var d;a:{for(d=0;d<a.j.length;d++)if(a.j[d].Nb==b)break a;d=-1}if(c)0>d?a.j.push({Nb:b,Kb:Date.now(),Cb:!1}):(a.j[d].Kb=Date.now(),a.j[d].Cb=!1);else if(0<=d){if(!a.j[d].Cb){var e=a.j[d].Kb;if(e&&100>Date.now()-e)return a.j[d].Cb=!0,ee(a),!0}a.j.splice(d,1)}if(a.I){d=0;switch(b){case "1p":d=T.Wa.Qc;break;case "2p":d=T.Wa.Uc;break;case "coin":d=T.Wa.Bc;break;case "left":d=T.Wa.Sc;break;case "right":d=T.Wa.Tc;break;case "fire":d=T.Wa.Rc}d&&(a=a.I,b=d,a.G&=~b,c&&(a.G|=b))}return!0}
|
function ce(a,b,c){var d;a:{for(d=0;d<a.j.length;d++)if(a.j[d].Nb==b)break a;d=-1}if(c)0>d?a.j.push({Nb:b,Kb:Date.now(),Bb:!1}):(a.j[d].Kb=Date.now(),a.j[d].Bb=!1);else if(0<=d){if(!a.j[d].Bb){var e=a.j[d].Kb;if(e&&100>Date.now()-e)return a.j[d].Bb=!0,ee(a),!0}a.j.splice(d,1)}if(a.I){d=0;switch(b){case "1p":d=T.Wa.Rc;break;case "2p":d=T.Wa.Vc;break;case "coin":d=T.Wa.Cc;break;case "left":d=T.Wa.Tc;break;case "right":d=T.Wa.Uc;break;case "fire":d=T.Wa.Sc}d&&(a=a.I,b=d,a.G&=~b,c&&(a.G|=b))}return!0}
|
||||||
function ee(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].Cb){var d=a.j[b].Nb,e=100-(Date.now()-a.j[b].Kb);if(0<e){if(0>c||c>e)c=e}else{ce(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){ee(a)},c)}m.nd=function(a,b){var c=this.G;0<=this.w&&(this.w<this.j.length?(c=this.j[this.w],this.w++,c=V.A[c.Nb],c&128&&(c&=127)):(this.w=-1,c=V.Jc),this.G=c,Gd(this.b,1));D(this,a,null,b,"KBDUART.ADDRESS",c);return c};
|
function ee(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].Bb){var d=a.j[b].Nb,e=100-(Date.now()-a.j[b].Kb);if(0<e){if(0>c||c>e)c=e}else{ce(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){ee(a)},c)}m.od=function(a,b){var c=this.G;0<=this.w&&(this.w<this.j.length?(c=this.j[this.w],this.w++,c=V.A[c.Nb],c&128&&(c&=127)):(this.w=-1,c=V.Kc),this.G=c,Gd(this.b,1));E(this,a,null,b,"KBDUART.ADDRESS",c);return c};
|
||||||
m.Bd=function(a,b,c){D(this,a,b,c,"KBDUART.STATUS");this.K=b;this.D=!0;this.J=Fc(this.b);de(this,b&V.La.Tb);b&V.La.Zc&&(this.w=0,Gd(this.b,1))};V.Eb={130:Zd.prototype.nd};V.Fb={130:Zd.prototype.Bd};Ma(function(){for(var a=C(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Zd(d);hb(d,c)}});
|
m.Cd=function(a,b,c){E(this,a,b,c,"KBDUART.STATUS");this.K=b;this.D=!0;this.J=Ec(this.b);de(this,b&V.La.Tb);b&V.La.$c&&(this.w=0,Gd(this.b,1))};V.Db={130:Zd.prototype.od};V.Eb={130:Zd.prototype.Cd};Ma(function(){for(var a=D(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=C(c),d=new Zd(d);gb(d,c)}});
|
||||||
function fe(a,b,c,d,e){var f=this;this.lc=Aa("Gecko/");var h=["","moz","ms","webkit"];w.call(this,"Video",a,fe,262144);this.Z=a.screenWidth;this.O=a.screenHeight;this.Sa=a.bufferAddr;this.Ed=a.bufferRAM;var g=a.bufferFormat;this.la=g&&ge[g.toUpperCase()]||he;this.ba=a.bufferCols;this.va=a.bufferRows;this.gc=this.qa=a.cellWidth||1;this.ma=a.cellHeight||1;this.ya=null;this.jc=!1;this.Za=a.bufferBits||1;this.Fd=a.bufferLeft||0;if(this.w=a.bufferRotate)this.w=this.w%360,0<this.w&&(this.w-=360),-90!=this.w&&
|
function fe(a,b,c,d,e){var f=this;this.mc=Aa("Gecko/");var h=["","moz","ms","webkit"];w.call(this,"Video",a,fe,262144);this.Z=a.screenWidth;this.O=a.screenHeight;this.Sa=a.bufferAddr;this.Fd=a.bufferRAM;var g=a.bufferFormat;this.la=g&&ge[g.toUpperCase()]||he;this.ba=a.bufferCols;this.va=a.bufferRows;this.hc=this.qa=a.cellWidth||1;this.ma=a.cellHeight||1;this.ya=null;this.kc=!1;this.Za=a.bufferBits||1;this.Gd=a.bufferLeft||0;if(this.w=a.bufferRotate)this.w=this.w%360,0<this.w&&(this.w-=360),-90!=this.w&&
|
||||||
(this.ja("unsupported buffer rotation: "+this.w),this.w=0);this.$a=a.interruptRate;this.tc=a.refreshRate||60;this.M=b;this.I=c;this.ia=(this.zc=d)||b||null;this.Cd=this.Z;this.Dd=this.O;this.hc=this.Z/this.ba|0;this.ic=this.O/this.va|0;1<this.ma&&(this.va++,this.fb=0,this.qb=!1);b=a.smoothing;(c=Va.smoothing)&&(b="true"==c);if(null!=b)for(c=0;c<h.length;c++)if(d=(d=h[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.I[d]){this.I[d]=b;break}if(this.D=a.screenRotate)this.D=this.D%
|
(this.ja("unsupported buffer rotation: "+this.w),this.w=0);this.$a=a.interruptRate;this.uc=a.refreshRate||60;this.M=b;this.I=c;this.ia=(this.Ac=d)||b||null;this.Dd=this.Z;this.Ed=this.O;this.ic=this.Z/this.ba|0;this.jc=this.O/this.va|0;1<this.ma&&(this.va++,this.ob=0,this.qb=!1);b=a.smoothing;(c=Va.smoothing)&&(b="true"==c);if(null!=b)for(c=0;c<h.length;c++)if(d=(d=h[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.I[d]){this.I[d]=b;break}if(this.D=a.screenRotate)this.D=this.D%
|
||||||
360,0<this.D&&(this.D-=360),-90!=this.D?(this.ja("unsupported screen rotation: "+this.D),this.D=0):(this.I.translate(0,this.O),this.I.rotate(this.D*Math.PI/180),this.I.scale(this.O/this.Z,this.Z/this.O));if(this.j=e)if(this.j.gb=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.j.gb){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){ie(f,document.fullscreenElement||document.msFullscreenElement||
|
360,0<this.D&&(this.D-=360),-90!=this.D?(this.ja("unsupported screen rotation: "+this.D),this.D=0):(this.I.translate(0,this.O),this.I.rotate(this.D*Math.PI/180),this.I.scale(this.O/this.Z,this.Z/this.O));if(this.j=e)if(this.j.fb=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.j.fb){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){ie(f,document.fullscreenElement||document.msFullscreenElement||
|
||||||
document.mozFullScreenElement||document.webkitFullscreenElement?!0:!1)},!1);break}for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){ie(f,null)},!1);break}}if(this.da=a.fontROM)"json"!=fa(this.da)&&(this.da=ha()+"/api/v1/dump?file="+this.da+"&format=bytes"),sa(this.da,null,!0,function(a,b,c){je(f,a,b,c)});this.Jb={}}bb(fe);var he=0,ge={SI1978:1,VT100:2};
|
document.mozFullScreenElement||document.webkitFullscreenElement?!0:!1)},!1);break}for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){ie(f,null)},!1);break}}if(this.da=a.fontROM)"json"!=fa(this.da)&&(this.da=ha()+"/api/v1/dump?file="+this.da+"&format=bytes"),sa(this.da,null,!0,function(a,b,c){je(f,a,b,c)});this.Jb={}}z(fe);var he=0,ge={SI1978:1,VT100:2};
|
||||||
function Qd(a){a.J=a.ba*a.qa;a.aa=a.va*a.ma;var b=a.J,c=a.aa;a.w&&(b=a.aa,c=a.J);a.P=0;if(!a.Ed&&(a.P=(a.J*a.Za>>3)*a.aa,!zb(a.u,a.Sa,a.P,3)))return!1;a.P?(a.mc=a.I.createImageData(b,c),a.oc=16/a.Za|0,ke(a,a.P>>1)):ke(a,(a.ba+1)*a.va);a.L=document.createElement("canvas");a.L.width=b;a.L.height=c;a.pb=a.L.getContext("2d");a.ea={};a.ka=1<<a.Za;a.ga=Array(a.ka+2);a.ga[0]=[0,0,0,255];a.ga[1]=[255,255,255,255];1==a.la&&(a.ga[a.ka+0]=[255,255,0,255],a.ga[a.ka+1]=[0,255,0,255]);2==a.la&&(a.sc=60,a.rb=!1,
|
function Qd(a){a.J=a.ba*a.qa;a.aa=a.va*a.ma;var b=a.J,c=a.aa;a.w&&(b=a.aa,c=a.J);a.P=0;if(!a.Fd&&(a.P=(a.J*a.Za>>3)*a.aa,!yb(a.u,a.Sa,a.P,3)))return!1;a.P?(a.nc=a.I.createImageData(b,c),a.pc=16/a.Za|0,ke(a,a.P>>1)):ke(a,(a.ba+1)*a.va);a.L=document.createElement("canvas");a.L.width=b;a.L.height=c;a.pb=a.L.getContext("2d");a.ea={};a.ka=1<<a.Za;a.ga=Array(a.ka+2);a.ga[0]=[0,0,0,255];a.ga[1]=[255,255,255,255];1==a.la&&(a.ga[a.ka+0]=[255,255,0,255],a.ga[a.ka+1]=[0,255,0,255]);2==a.la&&(a.tc=60,a.Ib=!1,
|
||||||
a.Ea=Array(a.ba));return!0}fe.prototype.Oa=function(a,b,c,d){this.B=a;this.u=b;this.b=c;this.H=d;Qd(this);if(this.K=vb(a,"Keyboard")){for(var e in this.Jb)this.K.oa("led",e,this.Jb[e]);this.M&&this.K.oa(this.zc?"textarea":"canvas","kbd",this.ia)}var f=this;this.uc=Jc(this.b,function(){Mc(f)});Kc(this.b,this.uc,1E3/Math.max(this.tc,this.$a));this.pc=0;this.da||E(this)};
|
a.Ea=Array(a.ba));return!0}fe.prototype.Oa=function(a,b,c,d){this.B=a;this.u=b;this.b=c;this.H=d;Qd(this);if(this.K=ub(a,"Keyboard")){for(var e in this.Jb)this.K.oa("led",e,this.Jb[e]);this.M&&this.K.oa(this.Ac?"textarea":"canvas","kbd",this.ia)}var f=this;this.vc=Ic(this.b,function(){Lc(f)});Jc(this.b,this.vc,1E3/Math.max(this.uc,this.$a));this.qc=0;this.da||F(this)};
|
||||||
function je(a,b,c,d){if(d)a.ja("Unable to load font ROM (error "+d+": "+b+")");else{db(a.Bb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){v("Empty font ROM: "+b);return}if(1==f.length){v(f[0]);return}if(2048==f.length)a.ya=f,Rd(a);else{a.ja("Unrecognized font data length ("+f.length+")");return}}catch(h){a.ja("Font ROM data error: "+h.message);return}(a.I||a.H)&&E(a)}}
|
function je(a,b,c,d){if(d)a.ja("Unable to load font ROM (error "+d+": "+b+")");else{cb(a.Ab,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){v("Empty font ROM: "+b);return}if(1==f.length){v(f[0]);return}if(2048==f.length)a.ya=f,Rd(a);else{a.ja("Unrecognized font data length ("+f.length+")");return}}catch(h){a.ja("Font ROM data error: "+h.message);return}(a.I||a.H)&&F(a)}}
|
||||||
function Rd(a){a.ya&&(a.jc=2==a.la,a.ea[96]=[le(a,a.qa,a.ma),le(a,a.qa,a.ma,a.rb)],a.ea[64]=[le(a,2*a.qa,a.ma),le(a,2*a.qa,a.ma,a.rb)],a.ea[32]=a.ea[0]=[le(a,2*a.qa,2*a.ma),le(a,2*a.qa,2*a.ma,a.rb)])}
|
function Rd(a){a.ya&&(a.kc=2==a.la,a.ea[96]=[le(a,a.qa,a.ma),le(a,a.qa,a.ma,a.Ib)],a.ea[64]=[le(a,2*a.qa,a.ma),le(a,2*a.qa,a.ma,a.Ib)],a.ea[32]=a.ea[0]=[le(a,2*a.qa,2*a.ma),le(a,2*a.qa,2*a.ma,a.Ib)])}
|
||||||
function le(a,b,c,d){var e=8>=a.gc?8:16,f=8<e?15:0,h=a.ya.length/e,g=!1===d,k={qa:b,ma:c};k.canvas=document.createElement("canvas");k.canvas.width=16*b;k.canvas.height=h/16*c;k.context=k.canvas.getContext("2d");for(var l=k.context.createImageData(b,c),p=0;p<h;p++){for(var q=0,x=q;q<a.ma;q++)for(var u=p*e+(f+q&e-1),u=d&&8==q?255:a.ya[u],r=0;r<c/a.ma;r++){for(var B=0,y=0,X=y;y<a.qa;y++){for(var A=u&128>>(7<y?7:y),B=a.jc&&!A&&B?B:A,Q=0;Q<b/a.qa;Q++)g&&(B=!B),me(a,l,X,x,B?1:0),X++;B=A}x++}k.context.putImageData(l,
|
function le(a,b,c,d){var e=8>=a.hc?8:16,f=8<e?15:0,h=a.ya.length/e,g=!1===d,k={qa:b,ma:c};k.canvas=document.createElement("canvas");k.canvas.width=16*b;k.canvas.height=h/16*c;k.context=k.canvas.getContext("2d");for(var l=k.context.createImageData(b,c),p=0;p<h;p++){for(var q=0,x=q;q<a.ma;q++)for(var u=p*e+(f+q&e-1),u=d&&8==q?255:a.ya[u],r=0;r<c/a.ma;r++){for(var B=0,y=0,X=y;y<a.qa;y++){for(var A=u&128>>(7<y?7:y),B=a.kc&&!A&&B?B:A,Q=0;Q<b/a.qa;Q++)g&&(B=!B),me(a,l,X,x,B?1:0),X++;B=A}x++}k.context.putImageData(l,
|
||||||
(p&15)*b,(p>>4)*c)}return k}fe.prototype.Da=function(){return!0};fe.prototype.oa=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Jb[b]=c,!0;switch(b){case "fullScreen":return this.N[b]=c,this.j&&this.j.gb?c.onclick=function(){d.gb()}:c.parentNode.removeChild(c),!0}return!1};
|
(p&15)*b,(p>>4)*c)}return k}fe.prototype.Da=function(){return!0};fe.prototype.oa=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Jb[b]=c,!0;switch(b){case "fullScreen":return this.N[b]=c,this.j&&this.j.fb?c.onclick=function(){d.fb()}:c.parentNode.removeChild(c),!0}return!1};
|
||||||
fe.prototype.gb=function(){var a=!1;if(this.j){if(this.j.gb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.Z/this.O;b>c&&(a=Math.round(c/b*100)+"%")}this.lc?(this.M.style.width=a,this.M.style.width=a,this.M.style.display="block",this.M.style.margin="auto"):(this.j.style.width=a,this.j.style.height="auto");this.j.style.backgroundColor="black";this.j.gb();a=!0}this.ia&&this.ia.focus()}return a};
|
fe.prototype.fb=function(){var a=!1;if(this.j){if(this.j.fb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.Z/this.O;b>c&&(a=Math.round(c/b*100)+"%")}this.mc?(this.M.style.width=a,this.M.style.width=a,this.M.style.display="block",this.M.style.margin="auto"):(this.j.style.width=a,this.j.style.height="auto");this.j.style.backgroundColor="black";this.j.fb();a=!0}this.ia&&this.ia.focus()}return a};
|
||||||
function ie(a,b){!b&&a.j&&(a.lc?a.M.style.width=a.M.style.height="":a.j.style.width=a.j.style.height="");jb(a,"notifyFullScreen("+b+")")}function ke(a,b){a.nc=b;a.ha=!1;if(void 0===a.G||a.G.length!=a.nc)a.G=Array(a.nc)}function me(a,b,c,d,e){d=a.w?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.la&&(208<=c&&236>c?e=a.ka+0:28<=c&&72>c&&(e=a.ka+1));a=a.ga[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
|
function ie(a,b){!b&&a.j&&(a.mc?a.M.style.width=a.M.style.height="":a.j.style.width=a.j.style.height="");ib(a,"notifyFullScreen("+b+")")}function ke(a,b){a.oc=b;a.ha=!1;if(void 0===a.G||a.G.length!=a.oc)a.G=Array(a.oc)}function me(a,b,c,d,e){d=a.w?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.la&&(208<=c&&236>c?e=a.ka+0:28<=c&&72>c&&(e=a.ka+1));a=a.ga[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
|
||||||
function Mc(a,b){var c=!0;if(!b){a.$a&&(120==a.$a?a.pc&1?(Gd(a.b,2),c=!1):Gd(a.b,1):Gd(a.b,4));if(c&&a.ha&&a.P){for(var d=a.u,e=a.P,f=!0,h=a.Sa>>>d.ra;0<e&&h<d.X.length;)d.X[h].Ma&&(d.X[h].Ma=f=!1,d.X[h].cc=!0),e-=d.Ga,h++;f&&(c=!1)}Kc(a.b,a.uc,1E3/Math.max(a.tc,a.$a));a.pc++}if(c)if(1<a.qa)switch(a.la){case 2:for(var c=a.Sa,d=-1,e=0,f=60==a.sc?2:5,g=h=0,k=-1;e<a.va;){var l=0,p=c,q=d,x=a.ba;for(96!=q&&(x>>=1);;){var u=Cb(a.u,p++);if(127==(u&127)){var r=Cb(a.u,p++),d=r&96,c=(r&15)<<8|Cb(a.u,p),c=c+
|
function Lc(a,b){var c=!0;if(!b){a.$a&&(120==a.$a?a.qc&1?(Gd(a.b,2),c=!1):Gd(a.b,1):Gd(a.b,4));if(c&&a.ha&&a.P){for(var d=a.u,e=a.P,f=!0,h=a.Sa>>>d.ra;0<e&&h<d.X.length;)d.X[h].Ma&&(d.X[h].Ma=f=!1,d.X[h].dc=!0),e-=d.Ga,h++;f&&(c=!1)}Jc(a.b,a.vc,1E3/Math.max(a.uc,a.$a));a.qc++}if(c)if(1<a.qa)switch(a.la){case 2:for(var c=a.Sa,d=-1,e=0,f=60==a.tc?2:5,g=h=0,k=-1;e<a.va;){var l=0,p=c,q=d,x=a.ba;for(96!=q&&(x>>=1);;){var u=Bb(a.u,p++);if(127==(u&127)){var r=Bb(a.u,p++),d=r&96,c=(r&15)<<8|Bb(a.u,p),c=c+
|
||||||
(r&16?8192:16384);break}if(l<x)a.Ea[l++]=u;else break}if(f)f--;else{for(;l<a.Ea.length;)a.Ea[l++]=0;if(0<=q)for(p=a.ha&&a.G[h]==x,a.G[h++]=x,x=0;x<l;x++){u=a.Ea[x];if(!p||u!==a.G[h]){a.G[k=h]=u;var r=a,B=a.pb,y=u&127;if(u=r.ea[q][u&128?1:0]){var X=(y&15)*u.qa,y=(y>>4)*u.ma,A=void 0,Q=void 0,aa=void 0,Y=void 0,ua=u.qa,Fb=u.ma;B?(A=x*r.qa,Q=e*r.ma,aa=r.qa,Y=r.ma):(A=x*r.hc,Q=e*r.ic,aa=r.hc,Y=r.ic);u.qa>r.qa&&(A*=2,aa*=2);u.ma>r.ma&&(0==q&&(y+=r.ma),Fb=r.ma);B?B.drawImage(u.canvas,X,y,ua,Fb,A,Q,aa,Y):
|
(r&16?8192:16384);break}if(l<x)a.Ea[l++]=u;else break}if(f)f--;else{for(;l<a.Ea.length;)a.Ea[l++]=0;if(0<=q)for(p=a.ha&&a.G[h]==x,a.G[h++]=x,x=0;x<l;x++){u=a.Ea[x];if(!p||u!==a.G[h]){a.G[k=h]=u;var r=a,B=a.pb,y=u&127;if(u=r.ea[q][u&128?1:0]){var X=(y&15)*u.qa,y=(y>>4)*u.ma,A=void 0,Q=void 0,ba=void 0,Y=void 0,ua=u.qa,Fb=u.ma;B?(A=x*r.qa,Q=e*r.ma,ba=r.qa,Y=r.ma):(A=x*r.ic,Q=e*r.jc,ba=r.ic,Y=r.jc);u.qa>r.qa&&(A*=2,ba*=2);u.ma>r.ma&&(0==q&&(y+=r.ma),Fb=r.ma);B?B.drawImage(u.canvas,X,y,ua,Fb,A,Q,ba,Y):
|
||||||
(A+=0,Q+=0,r.I.drawImage(u.canvas,X,y,ua,Fb,A,Q,aa,Y))}g++}h++}e++}}a.ha=!0;!b&&a.qb&&1==g&&(a.G[k]=-1,g=0);a.qb=!1;(g||b)&&a.pb&&a.I.drawImage(a.L,0,a.fb,a.J,a.aa-a.ma,0,0,a.Cd,a.Dd)}else{f=a.Sa;h=f+a.P;l=k=g=0;c=a.J;q=0;d=a.aa;p=e=0;x=a.Za;r=(1<<x)-1;a.Fd&&(x=-x,p=16+x);for(;f<h;){B=Db(a.u,f);if(a.ha&&B===a.G[g])k+=a.oc;else{a.G[g]=B;(u=p)&&(B=B>>8|(B&255)<<8);k<c&&(c=k);for(X=a.oc;X--;)y=B>>u&r,me(a,a.mc,k++,l,y),u+=x;k>q&&(q=k);l<d&&(d=l);l>=e&&(e=l+1)}f+=2;g++;if(k>=a.J&&(k=0,l++,l>a.aa))break}a.ha=
|
(A+=0,Q+=0,r.I.drawImage(u.canvas,X,y,ua,Fb,A,Q,ba,Y))}g++}h++}e++}}a.ha=!0;!b&&a.qb&&1==g&&(a.G[k]=-1,g=0);a.qb=!1;(g||b)&&a.pb&&a.I.drawImage(a.L,0,a.ob,a.J,a.aa-a.ma,0,0,a.Dd,a.Ed)}else{f=a.Sa;h=f+a.P;l=k=g=0;c=a.J;q=0;d=a.aa;p=e=0;x=a.Za;r=(1<<x)-1;a.Gd&&(x=-x,p=16+x);for(;f<h;){B=Cb(a.u,f);if(a.ha&&B===a.G[g])k+=a.pc;else{a.G[g]=B;(u=p)&&(B=B>>8|(B&255)<<8);k<c&&(c=k);for(X=a.pc;X--;)y=B>>u&r,me(a,a.nc,k++,l,y),u+=x;k>q&&(q=k);l<d&&(d=l);l>=e&&(e=l+1)}f+=2;g++;if(k>=a.J&&(k=0,l++,l>a.aa))break}a.ha=
|
||||||
!0;c<a.J&&(f=q-c,e-=d,a.w&&(h=c,g=f,c=d,f=e,d=a.J-(h+g),e=g),a.pb.putImageData(a.mc,0,0,c,d,f,e),a.I.drawImage(a.L,0,0,a.L.width,a.L.height,0,0,a.Z,a.O))}}
|
!0;c<a.J&&(f=q-c,e-=d,a.w&&(h=c,g=f,c=d,f=e,d=a.J-(h+g),e=g),a.pb.putImageData(a.nc,0,0,c,d,f,e),a.I.drawImage(a.L,0,0,a.L.width,a.L.height,0,0,a.Z,a.O))}}
|
||||||
Ma(function(){for(var a=C(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=z(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=ta().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=
|
Ma(function(){for(var a=D(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=C(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=ta().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=
|
||||||
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Va.aspect);f&&.3<=f&&3.33>=f&&(La("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Aa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new fe(d,e,h,f,c);hb(d,c)}});
|
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Va.aspect);f&&.3<=f&&3.33>=f&&(La("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Aa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new fe(d,e,h,f,c);gb(d,c)}});
|
||||||
function ne(a){this.ea=+a.adapter;switch(this.ea){case 0:this.ga=0;this.ia=2;break;default:v("Unrecognized serial adapter #"+this.ea);return}this.j=this.w=null;this.ha=a.tabSize;this.da=a.charBOL;this.D=0;this.aa=!1;w.call(this,"SerialPort",a,ne,8388608);var b=a.binding;if("console"==b)this.w="";else{var c;a=oe;b&&(void 0===c&&(c="Panel"),(c=gb(c,this.id))&&(b=c.N[b])&&this.oa(null,a,b))}this.G="";this.K=this.M=null;this.exports={connect:this.fc,receiveData:this.Mb}}bb(ne);
|
function ne(a){this.ea=+a.adapter;switch(this.ea){case 0:this.ga=0;this.ia=2;break;default:v("Unrecognized serial adapter #"+this.ea);return}this.j=this.w=null;this.ha=a.tabSize;this.da=a.charBOL;this.D=0;this.aa=!1;w.call(this,"SerialPort",a,ne,8388608);var b=a.binding;if("console"==b)this.w="";else{var c;a=oe;b&&(void 0===c&&(c="Panel"),(c=fb(c,this.id))&&(b=c.N[b])&&this.oa(null,a,b))}this.G="";this.K=this.M=null;this.exports={connect:this.gc,receiveData:this.Mb}}z(ne);
|
||||||
var pe=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],qe=[!1,0,0,133,142,39,238],oe="buffer";m=ne.prototype;
|
var pe=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],qe=[!1,0,0,133,142,39,238],oe="buffer";m=ne.prototype;
|
||||||
m.oa=function(a,b,c,d){var e=this;switch(b){case oe:return this.N[b]=this.j=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),re(e,b);return!0},c.onkeypress=function(a){a=a||window.event;re(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.N[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.Mb(d);return!0},
|
m.oa=function(a,b,c,d){var e=this;switch(b){case oe:return this.N[b]=this.j=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),re(e,b);return!0},c.onkeypress=function(a){a=a||window.event;re(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.N[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.Mb(d);return!0},
|
||||||
!0}return!1};m.Oa=function(a,b,c,d){this.B=a;this.u=b;this.b=c;this.H=d;var e=this;this.ka=Jc(this.b,function(){e.Mb()});this.la=Jc(this.b,function(){e.Ca|=5});this.I=vb(a,"ChipSet");Hb(b,this,se,this.ga);Tb(b,this,te,this.ga);E(this)};
|
!0}return!1};m.Oa=function(a,b,c,d){this.B=a;this.u=b;this.b=c;this.H=d;var e=this;this.ka=Ic(this.b,function(){e.Mb()});this.la=Ic(this.b,function(){e.Ca|=5});this.I=ub(a,"ChipSet");Gb(b,this,se,this.ga);Sb(b,this,te,this.ga);F(this)};
|
||||||
m.fc=function(){if(!this.K){var a=nc(this.B,"connection");if(a){var b=a.split("->");if(2==b.length){var c=ma(b[0]);if(c!=this.Xa)return;b=ma(b[1]);if(this.K=fb(b)){var d=this.K.exports;if(d){var e=d.connect;e&&e.call(this.K);if(this.M=d.receiveData){this.status(this.Bb+"."+c+" connected to "+b);return}}}}this.status("Unable to establish connection: "+a)}}};m.Da=function(a,b){if(!b)if(this.fc(),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};
|
m.gc=function(){if(!this.K){var a=mc(this.B,"connection");if(a){var b=a.split("->");if(2==b.length){var c=ma(b[0]);if(c!=this.Xa)return;b=ma(b[1]);if(this.K=eb(b)){var d=this.K.exports;if(d){var e=d.connect;e&&e.call(this.K);if(this.M=d.receiveData){this.status(this.Ab+"."+c+" connected to "+b);return}}}}this.status("Unable to establish connection: "+a)}}};m.Da=function(a,b){if(!b)if(this.gc(),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};
|
||||||
m.Ha=function(a){return a?this.save():!0};m.reset=function(){ue(this)};m.save=function(){var a=new H(this),b=0,c=[];c[b++]=this.L;c[b++]=this.Z;c[b++]=this.ba;c[b++]=this.Ca;c[b++]=this.J;c[b++]=this.P;c[b]=this.O;I(a,0,c);return a.data()};m.restore=function(a){return ue(this,a[0])};function ue(a,b){var c=0;void 0===b&&(b=qe);a.L=b[c++];a.Z=b[c++];a.ba=b[c++];a.Ca=b[c++];a.J=b[c++];a.P=b[c++];a.O=b[c];return!0}
|
m.Ha=function(a){return a?this.save():!0};m.reset=function(){ue(this)};m.save=function(){var a=new Tc(this),b=0,c=[];c[b++]=this.L;c[b++]=this.Z;c[b++]=this.ba;c[b++]=this.Ca;c[b++]=this.J;c[b++]=this.P;c[b]=this.O;I(a,0,c);return a.data()};m.restore=function(a){return ue(this,a[0])};function ue(a,b){var c=0;void 0===b&&(b=qe);a.L=b[c++];a.Z=b[c++];a.ba=b[c++];a.Ca=b[c++];a.J=b[c++];a.P=b[c++];a.O=b[c];return!0}
|
||||||
function ve(a,b){var c=a.O&b;b&15||(c>>=4);var c=pe[c],d=((a.J&12)>>2)+6;a.J&16&&d++;d+=((a.J&192)>>6)+1>>1;return 1E3/Math.round(c/d)}function re(a,b){jb(a,"receiveByte("+da(b)+"), status="+da(a.Ca));return a.aa||a.Ca&2?!1:(a.Z=b,a.Ca|=2,Gd(a.b,a.ia),!0)}m.Mb=function(a){null!=a&&(this.G="number"!=typeof a?a:this.G+String.fromCharCode(a));this.G&&(re(this,this.G.charCodeAt(0))&&(this.G=this.G.substr(1)),this.G&&this.b&&Kc(this.b,this.ka,ve(this,15)));return!0};
|
function ve(a,b){var c=a.O&b;b&15||(c>>=4);var c=pe[c],d=((a.J&12)>>2)+6;a.J&16&&d++;d+=((a.J&192)>>6)+1>>1;return 1E3/Math.round(c/d)}function re(a,b){ib(a,"receiveByte("+da(b)+"), status="+da(a.Ca));return a.aa||a.Ca&2?!1:(a.Z=b,a.Ca|=2,Gd(a.b,a.ia),!0)}m.Mb=function(a){null!=a&&(this.G="number"!=typeof a?a:this.G+String.fromCharCode(a));this.G&&(re(this,this.G.charCodeAt(0))&&(this.G=this.G.substr(1)),this.G&&this.b&&Jc(this.b,this.ka,ve(this,15)));return!0};
|
||||||
m.gd=function(a,b){var c=this.Z;D(this,a,null,b,"DATA",c);this.Ca&=-3;return c};m.fd=function(a,b){var c=this.Ca;D(this,a,null,b,"STATUS",c);return c};
|
m.hd=function(a,b){var c=this.Z;E(this,a,null,b,"DATA",c);this.Ca&=-3;return c};m.gd=function(a,b){var c=this.Ca;E(this,a,null,b,"STATUS",c);return c};
|
||||||
m.rd=function(a,b,c){D(this,a,b,c,"DATA");this.ba=b;this.Ca&=-6;jb(this,"transmitByte("+da(b)+")");if(19==b)this.aa=!0;else if(17==b)this.aa=!1;else if(this.M&&this.M.call(this.K,b),this.j)8==b?(this.j.value=this.j.value.slice(0,-1),0<this.D&&this.D--):(a=(a=na[b])?"<"+a+">":String.fromCharCode(b),c=a.length,9==b?(b=this.ha||8,c=b-this.D%b,this.ha&&(a=la("",c))):13==b&&(this.D=c=0,a="\n"),this.da&&!this.D&&c&&(a=String.fromCharCode(this.da)+a),this.j.value+=a,this.j.scrollTop=this.j.scrollHeight,
|
m.sd=function(a,b,c){E(this,a,b,c,"DATA");this.ba=b;this.Ca&=-6;ib(this,"transmitByte("+da(b)+")");if(19==b)this.aa=!0;else if(17==b)this.aa=!1;else if(this.M&&this.M.call(this.K,b),this.j)8==b?(this.j.value=this.j.value.slice(0,-1),0<this.D&&this.D--):(a=(a=na[b])?"<"+a+">":String.fromCharCode(b),c=a.length,9==b?(b=this.ha||8,c=b-this.D%b,this.ha&&(a=la("",c))):13==b&&(this.D=c=0,a="\n"),this.da&&!this.D&&c&&(a=String.fromCharCode(this.da)+a),this.j.value+=a,this.j.scrollTop=this.j.scrollHeight,
|
||||||
this.D+=c);else if(null!=this.w){if(10==b||1024<=this.w.length)this.g(this.w),this.w="";10!=b&&(this.w+=String.fromCharCode(b))}this.b&&Kc(this.b,this.la,ve(this,240))};m.qd=function(a,b,c){D(this,a,b,c,"CONTROL");this.L?(this.P=b,this.P&64&&(this.L=!1)):(this.J=b,this.L=!0)};m.pd=function(a,b,c){D(this,a,b,c,"BAUDRATES");this.O=b};var se={0:ne.prototype.gd,1:ne.prototype.fd},te={0:ne.prototype.rd,1:ne.prototype.qd,2:ne.prototype.pd};
|
this.D+=c);else if(null!=this.w){if(10==b||1024<=this.w.length)this.g(this.w),this.w="";10!=b&&(this.w+=String.fromCharCode(b))}this.b&&Jc(this.b,this.la,ve(this,240))};m.rd=function(a,b,c){E(this,a,b,c,"CONTROL");this.L?(this.P=b,this.P&64&&(this.L=!1)):(this.J=b,this.L=!0)};m.qd=function(a,b,c){E(this,a,b,c,"BAUDRATES");this.O=b};var se={0:ne.prototype.hd,1:ne.prototype.gd},te={0:ne.prototype.sd,1:ne.prototype.rd,2:ne.prototype.qd};
|
||||||
Ma(function(){for(var a=C(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new ne(d);hb(d,c)}});
|
Ma(function(){for(var a=D(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=C(c),d=new ne(d);gb(d,c)}});function we(a){w.call(this,"Debugger",a,we);this.Z=this.la=this.J=0;this.I=-1;this.w=[];this.da={}}z(we);var xe={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||||
function we(a){w.call(this,"Debugger",a,we);this.style=xe;this.Z=this.la=this.J=0;this.M=W();this.Za=W();this.I=-1;this.w=[];this.ba=!1;this.aa=W();this.G=[];this.da={};this.j=this.O=this.D=[];ye(this);this.ha=0;ze(this);this.va=[];Ae(this,a.messages);this.ya=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Cc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Cc(b,a)})}bb(we);
|
function ye(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;
|
||||||
var Be={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},
|
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}
|
||||||
xe=8080,Ce="NONE ACI ADC ADD ADI ANA ANI CALL CC CM CNC CNZ CP CPE CPO CZ CMA CMC CMP CPI DAA DAD DCR DCX DI EI HLT IN INR INX JMP JC JM JNC JNZ JP JPE JPO JZ LDA LDAX LHLD LXI MOV MVI NOP ORA ORI OUT PCHL POP PUSH RAL RAR RET RC RM RNC RNZ RP RPE RPO RZ RLC RRC RST SBB SBI SHLD SPHL STA STAX STC SUB SUI XCHG XRA XRI XTHL".split(" "),De="NONE ADC ADC ADD ADD AND AND CALL CALLC CALLS CALLNC CALLNZ CALLNS CALLP CALLNP CALLZ NOT CMC CMP CMP DAA ADD DEC DEC CLI STI HLT IN INC INC JMP JC JS JNC JNZ JNS JP JNP JZ MOV MOV MOV MOV MOV MOV NOP OR OR OUT JMP POP PUSH RCL RCR RET RETC RETS RETNC RETNZ RETNS RETP RETNP RETZ ROL ROR RST SBB SBB MOV MOV MOV MOV STC SUB SUB XCHG XOR XOR XCHG".split(" "),
|
function ze(a,b,c){var d;if(b){b=Ae(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var p=l[e++],q=p.length,p=ma(p);if(!p){f=!0;break}p=Be(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}g.push(p);if(e==l.length)break;var p=l[e++],x=p.length;k.length&&xe[p]<xe[k[k.length-1]]&&ye(g,k,1);k.push(p);b=b.substr(q+x)}ye(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&Ce(a,null,
|
||||||
Ee="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),Fe=[[45],[42,2067,32],[71,2131,18193],[29,2067],[28,17],[22,17],[44,17,32],[63],[45,32768],[21,18963,2067],[40,18193,2131],[23,2067],[28,273],[22,273],[44,273,32],[64],[45,32768],[42,2323,32],[71,2387,18193],[29,2323],[28,529],[22,529],[44,529,32],[52],[45,32768],[21,18963,2323],[40,18193,2387],[23,2323],[28,785],[22,785],[44,785,32],[53],[45,32768],[42,2579,32],[68,115,18963],[29,2579],[28,1041],[22,1041],[44,1041,32],[20],[45,32768],[21,18963,
|
d))}return d}function Ae(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=ze(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?n(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=De(a,c[1]),b=b.replace("["+c[1]+"]",d?n(a.Ra(d,0),d.qe?8:4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.Z-a.la}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
||||||
|
function Be(a,b,c,d){var e;void 0!==b?(e=Ee(b),0<=e?e=Fe(a,e):(e=a.da[b],void 0===e&&(e=aa(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
|
||||||
|
function Ce(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=d&255,l=8,p="";void 0===l?l=32:32<l&&(l=32);if(null==k||isNaN(k))for(;0<l--;)p="?"+p;else for(;0<l--;)p=(k&1?"1":"0")+p,k>>=1;h=p+"b"+h;d>>=8}d="0x"+n(c)+" "+c+". ("+h+")"}a.g((null!=b?b+": ":"")+d);return e}function Ge(a,b){if(b)return Ce(a,b,a.da[b]);var c=0;for(b in a.da)Ce(a,b,a.da[b]),c++;return 0<c}
|
||||||
|
function He(a){w.call(this,"Debugger",a,He);this.style=Ie;this.M=W();this.Sa=W();this.ba=!1;this.aa=W();this.G=[];this.j=this.O=this.D=[];Je(this);this.ha=0;Ke(this);this.va=[];Le(this,a.messages);this.ya=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return pc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return pc(b,a)})}z(He,we);
|
||||||
|
var Me={"?":"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"},
|
||||||
|
Ie=8080,Ne="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(" "),Oe="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(" "),
|
||||||
|
Pe="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),Qe=[[45],[42,2067,32],[71,2131,18193],[29,2067],[28,17],[22,17],[44,17,32],[63],[45,32768],[21,18963,2067],[40,18193,2131],[23,2067],[28,273],[22,273],[44,273,32],[64],[45,32768],[42,2323,32],[71,2387,18193],[29,2323],[28,529],[22,529],[44,529,32],[52],[45,32768],[21,18963,2323],[40,18193,2387],[23,2323],[28,785],[22,785],[44,785,32],[53],[45,32768],[42,2579,32],[68,115,18963],[29,2579],[28,1041],[22,1041],[44,1041,32],[20],[45,32768],[21,18963,
|
||||||
2579],[41,18963,115],[23,2579],[28,1297],[22,1297],[44,1297,32],[16,18193],[45,32768],[42,2835,32],[70,115,18193],[29,2835],[28,1617],[22,1617],[44,1617,32],[72],[45,32768],[21,18963,2835],[39,18193,115],[23,2835],[28,1809],[22,1809],[44,1809,32],[17],[43,17,17],[43,17,273],[43,17,529],[43,17,785],[43,17,1041],[43,17,1297],[43,17,1617],[43,17,1809],[43,273,17],[43,273,273],[43,273,529],[43,273,785],[43,273,1041],[43,273,1297],[43,273,1617],[43,273,1809],[43,529,17],[43,529,273],[43,529,529],[43,529,
|
2579],[41,18963,115],[23,2579],[28,1297],[22,1297],[44,1297,32],[16,18193],[45,32768],[42,2835,32],[70,115,18193],[29,2835],[28,1617],[22,1617],[44,1617,32],[72],[45,32768],[21,18963,2835],[39,18193,115],[23,2835],[28,1809],[22,1809],[44,1809,32],[17],[43,17,17],[43,17,273],[43,17,529],[43,17,785],[43,17,1041],[43,17,1297],[43,17,1617],[43,17,1809],[43,273,17],[43,273,273],[43,273,529],[43,273,785],[43,273,1041],[43,273,1297],[43,273,1617],[43,273,1809],[43,529,17],[43,529,273],[43,529,529],[43,529,
|
||||||
785],[43,529,1041],[43,529,1297],[43,529,1617],[43,529,1809],[43,785,17],[43,785,273],[43,785,529],[43,785,785],[43,785,1041],[43,785,1297],[43,785,1617],[43,785,1809],[43,1041,17],[43,1041,273],[43,1041,529],[43,1041,785],[43,1041,1041],[43,1041,1297],[43,1041,1617],[43,1041,1809],[43,1297,17],[43,1297,273],[43,1297,529],[43,1297,785],[43,1297,1041],[43,1297,1297],[43,1297,1617],[43,1297,1809],[43,1617,17],[43,1617,273],[43,1617,529],[43,1617,785],[43,1617,1041],[43,1617,1297],[26],[43,1617,1809],
|
785],[43,529,1041],[43,529,1297],[43,529,1617],[43,529,1809],[43,785,17],[43,785,273],[43,785,529],[43,785,785],[43,785,1041],[43,785,1297],[43,785,1617],[43,785,1809],[43,1041,17],[43,1041,273],[43,1041,529],[43,1041,785],[43,1041,1041],[43,1041,1297],[43,1041,1617],[43,1041,1809],[43,1297,17],[43,1297,273],[43,1297,529],[43,1297,785],[43,1297,1041],[43,1297,1297],[43,1297,1617],[43,1297,1809],[43,1617,17],[43,1617,273],[43,1617,529],[43,1617,785],[43,1617,1041],[43,1617,1297],[26],[43,1617,1809],
|
||||||
[43,1809,17],[43,1809,273],[43,1809,529],[43,1809,785],[43,1809,1041],[43,1809,1297],[43,1809,1617],[43,1809,1809],[3,18193,17],[3,18193,273],[3,18193,529],[3,18193,785],[3,18193,1041],[3,18193,1297],[3,18193,1617],[3,18193,1809],[2,18193,17],[2,18193,273],[2,18193,529],[2,18193,785],[2,18193,1041],[2,18193,1297],[2,18193,1617],[2,18193,1809],[73,18193,17],[73,18193,273],[73,18193,529],[73,18193,785],[73,18193,1041],[73,18193,1297],[73,18193,1617],[73,18193,1809],[66,18193,17],[66,18193,273],[66,
|
[43,1809,17],[43,1809,273],[43,1809,529],[43,1809,785],[43,1809,1041],[43,1809,1297],[43,1809,1617],[43,1809,1809],[3,18193,17],[3,18193,273],[3,18193,529],[3,18193,785],[3,18193,1041],[3,18193,1297],[3,18193,1617],[3,18193,1809],[2,18193,17],[2,18193,273],[2,18193,529],[2,18193,785],[2,18193,1041],[2,18193,1297],[2,18193,1617],[2,18193,1809],[73,18193,17],[73,18193,273],[73,18193,529],[73,18193,785],[73,18193,1041],[73,18193,1297],[73,18193,1617],[73,18193,1809],[66,18193,17],[66,18193,273],[66,
|
||||||
18193,529],[66,18193,785],[66,18193,1041],[66,18193,1297],[66,18193,1617],[66,18193,1809],[5,18193,17],[5,18193,273],[5,18193,529],[5,18193,785],[5,18193,1041],[5,18193,1297],[5,18193,1617],[5,18193,1809],[76,18193,17],[76,18193,273],[76,18193,529],[76,18193,785],[76,18193,1041],[76,18193,1297],[76,18193,1617],[76,18193,1809],[46,18193,17],[46,18193,273],[46,18193,529],[46,18193,785],[46,18193,1041],[46,18193,1297],[46,18193,1617],[46,18193,1809],[18,18193,17],[18,18193,273],[18,18193,529],[18,18193,
|
18193,529],[66,18193,785],[66,18193,1041],[66,18193,1297],[66,18193,1617],[66,18193,1809],[5,18193,17],[5,18193,273],[5,18193,529],[5,18193,785],[5,18193,1041],[5,18193,1297],[5,18193,1617],[5,18193,1809],[76,18193,17],[76,18193,273],[76,18193,529],[76,18193,785],[76,18193,1041],[76,18193,1297],[76,18193,1617],[76,18193,1809],[46,18193,17],[46,18193,273],[46,18193,529],[46,18193,785],[46,18193,1041],[46,18193,1297],[46,18193,1617],[46,18193,1809],[18,18193,17],[18,18193,273],[18,18193,529],[18,18193,
|
||||||
785],[18,18193,1041],[18,18193,1297],[18,18193,1617],[18,18193,1809],[58],[50,2067],[34,51],[30,51],[11,51],[51,2067],[4,18193,33],[65,128],[62],[54],[38,51],[30,32819],[15,51],[7,51],[1,18193,33],[65,128],[57],[50,2323],[33,51],[48,33,18193],[10,51],[51,2323],[74,18193,33],[65,128],[55],[54,32768],[31,51],[27,18193,33],[8,51],[7,32819],[67,18193,33],[65,128],[61],[50,2579],[37,51],[78,19283,18963],[14,51],[51,2579],[6,18193,33],[65,128],[60],[49,2579],[36,51],[75,18963,18707],[13,51],[7,32819],[77,
|
785],[18,18193,1041],[18,18193,1297],[18,18193,1617],[18,18193,1809],[58],[50,2067],[34,51],[30,51],[11,51],[51,2067],[4,18193,33],[65,128],[62],[54],[38,51],[30,32819],[15,51],[7,51],[1,18193,33],[65,128],[57],[50,2323],[33,51],[48,33,18193],[10,51],[51,2323],[74,18193,33],[65,128],[55],[54,32768],[31,51],[27,18193,33],[8,51],[7,32819],[67,18193,33],[65,128],[61],[50,2579],[37,51],[78,19283,18963],[14,51],[51,2579],[6,18193,33],[65,128],[60],[49,2579],[36,51],[75,18963,18707],[13,51],[7,32819],[77,
|
||||||
18193,33],[65,128],[59],[50,3603],[35,51],[24],[12,51],[51,3603],[47,18193,33],[65,128],[56],[69,19219,18963],[32,51],[25],[9,51],[7,32819],[19,18193,33],[65,128]];m=we.prototype;
|
18193,33],[65,128],[59],[50,3603],[35,51],[24],[12,51],[51,3603],[47,18193,33],[65,128],[56],[69,19219,18963],[32,51],[25],[9,51],[7,32819],[19,18193,33],[65,128]];m=He.prototype;
|
||||||
m.Oa=function(a,b,c,d){this.u=b;this.b=c;this.B=a;(a=nc(a,"messages"))&&Ae(this,a);this.Ea=Fe;Od(this,64,function(a){a:{var b=d.u.X,c=a[0],g=a=0,k=b.length;if(c){a=Ge(He(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.u.ra;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[g];p.type==c?l++||d.g("..."):(c=p.type,l=Bb[c],p&&d.g(n(p.id)+" %"+n(g<<d.u.ra)+" %%"+n(p.F)+" "+t(p.xb)+" "+
|
m.Oa=function(a,b,c,d){this.u=b;this.b=c;this.B=a;(a=mc(a,"messages"))&&Le(this,a);this.Ea=Qe;Od(this,64,function(a){a:{var b=d.u.X,c=a[0],g=a=0,k=b.length;if(c){a=Re(De(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.u.ra;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[g];p.type==c?l++||d.g("..."):(c=p.type,l=Ab[c],p&&d.g(n(p.id)+" %"+n(g<<d.u.ra)+" %%"+n(p.F)+" "+t(p.wb)+" "+
|
||||||
t(p.size)+" "+l),c!=$b&&(c=-1),l=0);a+=d.u.Ga;g++}}});E(this)};
|
t(p.size)+" "+l),c!=Zb&&(c=-1),l=0);a+=d.u.Ga;g++}}});F(this)};
|
||||||
m.oa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ga=this.N[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Cc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.I<d.w.length-1&&(b=d.w[++d.I]):40==a.keyCode&&(0<d.I?b=d.w[--d.I]:(b="",d.I=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.N[b]=c,Ca(c,function(){if(d.ga){var a=d.ga.value;d.ga.value=
|
m.oa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ga=this.N[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",pc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.I<d.w.length-1&&(b=d.w[++d.I]):40==a.keyCode&&(0<d.I?b=d.w[--d.I]:(b="",d.I=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.N[b]=c,Ca(c,function(){if(d.ga){var a=d.ga.value;d.ga.value=
|
||||||
"";Cc(d,a,!0);return!0}return!1}),!0;case "step":return this.N[b]=c,Ca(c,function(a){var b=!1;mb(d,!0)||(lb(d,!0),b=d.kb(a?1:0),lb(d,!1));return b}),!0}return!1};m.wb=function(){this.ga&&this.ga.focus()};function Ge(a){a=a&&a.F;null==a&&(a=-1);return a}m.$=function(a,b){var c=255,d=Ge(a);-1!==d&&(c=Cb(this.u,d),b&&Ie(a,b));return c};m.Ra=function(a,b){var c=65535,d=Ge(a);-1!==d&&(c=Db(this.u,d),b&&Ie(a,b));return c};m.ua=function(a,b,c){var d=Ge(a);-1!==d&&(Eb(this.u,d,b),c&&Ie(a,c),Dc(this.b,!0))};
|
"";pc(d,a,!0);return!0}return!1}),!0;case "step":return this.N[b]=c,Ca(c,function(a){var b=!1;lb(d,!0)||(kb(d,!0),b=d.jb(a?1:0),kb(d,!1));return b}),!0}return!1};m.vb=function(){this.ga&&this.ga.focus()};function Re(a){a=a&&a.F;null==a&&(a=-1);return a}m.$=function(a,b){var c=255,d=Re(a);-1!==d&&(c=Bb(this.u,d),b&&Se(a,b));return c};m.Ra=function(a,b){var c=65535,d=Re(a);-1!==d&&(c=Cb(this.u,d),b&&Se(a,b));return c};m.ua=function(a,b,c){var d=Re(a);-1!==d&&(Db(this.u,d,b),c&&Se(a,c),Cc(this.b,!0))};
|
||||||
m.Gb=function(a,b,c){var d=Ge(a);if(-1!==d){var e=this.u,f=d&e.u,h=(d&e.w)>>>e.ra;f!=e.u?e.X[h].Pb(f,b&65535,d):(e.X[h++].yb(f,b&255,d),e.X[h&e.K].yb(0,b>>8&255,d+1));c&&Ie(a,c);Dc(this.b,!0)}};function W(a){return{F:a,Na:!1}}function Je(a){return[a.F,a.Na]}function Ke(a){return{F:a[0],Na:a[1]}}
|
m.Fb=function(a,b,c){var d=Re(a);if(-1!==d){var e=this.u,f=d&e.u,h=(d&e.w)>>>e.ra;f!=e.u?e.X[h].Pb(f,b&65535,d):(e.X[h++].xb(f,b&255,d),e.X[h&e.K].xb(0,b>>8&255,d+1));c&&Se(a,c);Cc(this.b,!0)}};function W(a){return{F:a,Na:!1}}function Te(a){return[a.F,a.Na]}function Ue(a){return{F:a[0],Na:a[1]}}
|
||||||
function He(a,b,c){var d;c=(c?a.M:a.Za).F;if(void 0!==b){d=b=Le(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.G.length;c++){var f=a.G[c].Pa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=W(d));break}}if(d=e)return d;c=Me(a,b,void 0)}null!=c&&(d=W(c));return d}function Ne(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.cd=Oe(a,b.rc=c[2]))}function Ie(a,b){null!=a.F&&(a.F+=b||1)}function Z(a){return n(a,4)}
|
function De(a,b,c){var d;c=(c?a.M:a.Sa).F;if(void 0!==b){d=b=Ae(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.G.length;c++){var f=a.G[c].Pa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=W(d));break}}if(d=e)return d;c=ze(a,b,void 0)}null!=c&&(d=W(c));return d}function Ve(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.dd=We(a,b.sc=c[2]))}function Se(a,b){null!=a.F&&(a.F+=b||1)}function Z(a){return n(a,4)}
|
||||||
function Pe(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.$(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Ae(a,b){a.H=a;a.sa=a.dd=536870912;a.ia=null;a.ka=[];var c=Oe(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in tb)0<=ra(c,d)&&(a.sa|=tb[d],a.g(d+" messages enabled"))}function Od(a,b,c){for(var d in tb)if(b==tb[d]){a.va[d]=c;break}}
|
function vf(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.$(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Le(a,b){a.H=a;a.sa=a.ed=536870912;a.ia=null;a.ka=[];var c=We(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in sb)0<=ra(c,d)&&(a.sa|=sb[d],a.g(d+" messages enabled"))}function Od(a,b,c){for(var d in sb)if(b==sb[d]){a.va[d]=c;break}}
|
||||||
function Qe(a,b){var c;a=a.toUpperCase();null==b?c=ra(Ee,a):(c=ra(Ee,a.substr(b,2)),0>c&&(c=ra(Ee,a.substr(b,1))));return c}function Re(a,b){var c=0,d=Se(a,b);if(void 0!==d)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 6:c=2;break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:c=4}return c?n(d,c):"??"}
|
function Ee(a,b){var c;a=a.toUpperCase();null==b?c=ra(Pe,a):(c=ra(Pe,a.substr(b,2)),0>c&&(c=ra(Pe,a.substr(b,1))));return c}function wf(a,b){var c=0,d=Fe(a,b);if(void 0!==d)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 6:c=2;break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:c=4}return c?n(d,c):"??"}
|
||||||
function Se(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.i;break;case 0:c=d.S;break;case 1:c=d.T;break;case 8:c=Uc(d);break;case 2:c=d.U;break;case 3:c=d.V;break;case 9:c=Wc(d);break;case 4:c=d.W;break;case 5:c=d.Y;break;case 10:c=J(d);break;case 6:c=d.$(J(d));break;case 11:c=d.na;break;case 12:c=d.R;break;case 13:c=Tc(d);break;case 14:c=Tc(d)&255|d.i<<8}}return c}
|
function Fe(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.i;break;case 0:c=d.S;break;case 1:c=d.T;break;case 8:c=Uc(d);break;case 2:c=d.U;break;case 3:c=d.V;break;case 9:c=Wc(d);break;case 4:c=d.W;break;case 5:c=d.Y;break;case 10:c=J(d);break;case 6:c=d.$(J(d));break;case 11:c=d.na;break;case 12:c=d.R;break;case 13:c=Sc(d);break;case 14:c=Sc(d)&255|d.i<<8}}return c}
|
||||||
function Te(a,b){b=Le(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=Qe(b,c+1),0<=e&&(b=b.substr(0,c)+Re(a,e)+b.substr(c+1+Ee[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=ca(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=He(a,e))?(d=e+' "'+Pe(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=He(a,e))?(Ie(d),d=e+' "'+
|
function xf(a,b){b=Ae(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=Ee(b,c+1),0<=e&&(b=b.substr(0,c)+wf(a,e)+b.substr(c+1+Pe[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=aa(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=De(a,e))?(d=e+' "'+vf(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=De(a,e))?(Se(d),d=e+' "'+
|
||||||
Pe(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+Z(W(this.b.R).F));if(this.sa&1073741824)this.ka.push(a);else if(!this.ia||a!=this.ia)if(this.ia=a,this.sa&-2147483648&&(this.pa(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;Lc(c);c.P=0;Dc(c)}};
|
vf(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+Z(W(this.b.R).F));if(this.sa&1073741824)this.ka.push(a);else if(!this.ia||a!=this.ia)if(this.ia=a,this.sa&-2147483648&&(this.pa(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;Kc(c);c.P=0;Cc(c)}};
|
||||||
function ib(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.sa&g)!=g||a.message(b.Xa+"."+(null!=d?"outPort":"inPort")+"("+t(c)+","+(f?f:"unknown")+(null!=d?","+da(d):"")+")"+(null!=h?": "+da(h):"")+(null!=e?" at "+Z(e):""))}
|
function hb(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.sa&g)!=g||a.message(b.Xa+"."+(null!=d?"outPort":"inPort")+"("+t(c)+","+(f?f:"unknown")+(null!=d?","+da(d):"")+")"+(null!=h?": "+da(h):"")+(null!=e?" at "+Z(e):""))}
|
||||||
function ze(a){var b;if(Hd(a)){if(!a.L||!a.L.length){a.L=Array(1E3);for(b=0;b<a.L.length;b++)a.L[b]=W();a.ea=0;a.g("instruction history buffer allocated")}if(!a.K||!a.K.length)for(a.K=Array(256),b=0;b<a.K.length;b++)a.K[b]=[b,0]}else a.L&&a.L.length&&a.g("instruction history buffer freed"),a.ea=0,a.L=[],a.K=[]}m.bb=function(a){if(!Ue(this))return!1;this.b.bb(a);return!0};
|
function Ke(a){var b;if(Hd(a)){if(!a.L||!a.L.length){a.L=Array(1E3);for(b=0;b<a.L.length;b++)a.L[b]=W();a.ea=0;a.g("instruction history buffer allocated")}if(!a.K||!a.K.length)for(a.K=Array(256),b=0;b<a.K.length;b++)a.K[b]=[b,0]}else a.L&&a.L.length&&a.g("instruction history buffer freed"),a.ea=0,a.L=[],a.K=[]}m.bb=function(a){if(!yf(this))return!1;this.b.bb(a);return!0};
|
||||||
m.kb=function(a,b,c){if(!Ue(this))return!1;this.J=0;a||Hd(this)&&Id(this,this.b.R,0);try{var d=this.b.kb(a);0<d&&(this.J+=d,Hc(this.b,d,!0),Ec(this.b,d),this.Z++)}catch(e){"number"!=typeof e&&(this.J=0,qb(this.b,e.stack||e.message))}!1!==c&&Dc(this.b);this.Ia(b||!1);return 0<this.J};m.pa=function(a){this.b&&this.b.pa(a)};m.Ia=function(a){void 0===a&&(a=!0);this.M=W(this.b.R);a&&1!=this.P?Ve(this):uf(this)};
|
m.jb=function(a,b,c){if(!yf(this))return!1;this.J=0;a||Hd(this)&&Id(this,this.b.R,0);try{var d=this.b.jb(a);0<d&&(this.J+=d,Gc(this.b,d,!0),Dc(this.b,d),this.Z++)}catch(e){"number"!=typeof e&&(this.J=0,pb(this.b,e.stack||e.message))}!1!==c&&Cc(this.b);this.Ia(b||!1);return 0<this.J};m.pa=function(a){this.b&&this.b.pa(a)};m.Ia=function(a){void 0===a&&(a=!0);this.M=W(this.b.R);a&&1!=this.P?zf(this):Af(this)};
|
||||||
function Ue(a){var b;if(b=a.b&&pb(a.b))b=a.b,b.C.wa?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!mb(a.b)?(a=a.b,a.C.error?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.Da=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.Ha=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){ze(this);this.Z=this.la=0;this.ia=null;this.J=0;this.M=W(this.b.R);this.C.za=!1;vf(this);a||this.Ia()};
|
function yf(a){var b;if(b=a.b&&mb(a.b))b=a.b,b.C.wa?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!lb(a.b)?(a=a.b,a.C.error?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.Da=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.Ha=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Ke(this);this.Z=this.la=0;this.ia=null;this.J=0;this.M=W(this.b.R);this.C.za=!1;Bf(this);a||this.Ia()};
|
||||||
m.save=function(){var a=new H(this);I(a,0,Je(this.M));I(a,1,Je(this.aa));I(a,2,[this.w,this.ba,this.sa]);I(a,3,this.G);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.M=Ke(a[b++]),this.aa=Ke(a[b++]),this.w=a[b][0],"string"==typeof this.w&&(this.w=[this.w]),this.ba=a[b][1],this.sa|=a[b][2]);a[3]&&(this.G=a[3]);return!0};m.start=function(a,b){this.P||this.g("running");this.C.za=!0;this.pb=a;this.qb=b};
|
m.save=function(){var a=new Tc(this);I(a,0,Te(this.M));I(a,1,Te(this.aa));I(a,2,[this.w,this.ba,this.sa]);I(a,3,this.G);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.M=Ue(a[b++]),this.aa=Ue(a[b++]),this.w=a[b][0],"string"==typeof this.w&&(this.w=[this.w]),this.ba=a[b][1],this.sa|=a[b][2]);a[3]&&(this.G=a[3]);return!0};m.start=function(a,b){this.P||this.g("running");this.C.za=!0;this.ob=a;this.pb=b};
|
||||||
m.stop=function(a,b){if(this.C.za){this.C.za=!1;this.J=b-this.qb;if(!this.P){var c="stopped";if(this.J){var d=a-this.pb,e=0<d?Math.round(1E3*this.J/d):0,c=c+" (";Hd(this)&&(c+=this.Z+" opcodes, ",this.la-=this.Z,this.Z=0);c+=this.J+" cycles, "+d+" ms, "+e+" hz)"}else kb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.Ia(!0);this.wb();vf(this,this.b.R)}};function Hd(a){return 1<a.j.length||!!a.ha}
|
m.stop=function(a,b){if(this.C.za){this.C.za=!1;this.J=b-this.pb;if(!this.P){var c="stopped";if(this.J){var d=a-this.ob,e=0<d?Math.round(1E3*this.J/d):0,c=c+" (";Hd(this)&&(c+=this.Z+" opcodes, ",this.la-=this.Z,this.Z=0);c+=this.J+" cycles, "+d+" ms, "+e+" hz)"}else jb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.Ia(!0);this.vb();Bf(this,this.b.R)}};function Hd(a){return 1<a.j.length||!!a.ha}
|
||||||
function Id(a,b,c){var d=a.b;if(0<c&&(a.ha&&!--a.ha||ic(a,b,1,a.j)))return!0;0<=c&&a.K.length&&(a.Z++,b=Cb(a.u,b),null!=b&&(a.K[b][1]++,b=a.L[a.ea],b.F=d.R,b.Na=!1,++a.ea==a.L.length&&(a.ea=0)));return!1}function Jb(a,b,c){a.g("break on input from port "+t(b)+": "+n(c));a.pa(!0)}function Vb(a,b,c){a.g("break on output to port "+t(b)+": "+n(c));a.pa(!0)}
|
function Id(a,b,c){var d=a.b;if(0<c&&(a.ha&&!--a.ha||hc(a,b,1,a.j)))return!0;0<=c&&a.K.length&&(a.Z++,b=Bb(a.u,b),null!=b&&(a.K[b][1]++,b=a.L[a.ea],b.F=d.R,b.Na=!1,++a.ea==a.L.length&&(a.ea=0)));return!1}function Ib(a,b,c){a.g("break on input from port "+t(b)+": "+n(c));a.pa(!0)}function Ub(a,b,c){a.g("break on output to port "+t(b)+": "+n(c));a.pa(!0)}
|
||||||
function ye(a){var b,c;a.j=["bp"];if(void 0!==a.O)for(b=1;b<a.O.length;b++){c=a.O[b];var d=a.u;jc(d.X[Ge(c)>>>d.ra],!1)}a.O=["br"];if(void 0!==a.D)for(b=1;b<a.D.length;b++)c=a.D[b],d=a.u,jc(d.X[Ge(c)>>>d.ra],!0);a.D=["bw"];a.$a=0}m.Ya=function(a,b,c){var d=!0;c||wf(this,a,b,!1,!0);if(a!=this.j){var e=Ge(b);if(-1===e)this.g("invalid address: "+Z(b.F)),d=!1;else{var f=this.u;f.X[e>>>f.ra].Ya(e&f.u,a==this.D)}}d&&(a.push(b),c?b.Na=!0:(xf(this,a,a.length-1,"set"),ze(this)));return d};
|
function Je(a){var b,c;a.j=["bp"];if(void 0!==a.O)for(b=1;b<a.O.length;b++){c=a.O[b];var d=a.u;ic(d.X[Re(c)>>>d.ra],!1)}a.O=["br"];if(void 0!==a.D)for(b=1;b<a.D.length;b++)c=a.D[b],d=a.u,ic(d.X[Re(c)>>>d.ra],!0);a.D=["bw"];a.Za=0}m.Ya=function(a,b,c){var d=!0;c||Cf(this,a,b,!1,!0);if(a!=this.j){var e=Re(b);if(-1===e)this.g("invalid address: "+Z(b.F)),d=!1;else{var f=this.u;f.X[e>>>f.ra].Ya(e&f.u,a==this.D)}}d&&(a.push(b),c?b.Na=!0:(Df(this,a,a.length-1,"set"),Ke(this)));return d};
|
||||||
function wf(a,b,c,d,e){var f=!1;c=Ge(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==Ge(g)&&(!d||g.Na)){f=!0;g.Na||e||xf(a,b,h,"cleared");b.splice(h,1);b!=a.j&&(d=a.u,jc(d.X[c>>>d.ra],b==a.D));g.Na||ze(a);break}}return f}function yf(a,b){for(var c=1;c<b.length;c++)xf(a,b,c);return b.length-1}function xf(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.F)+(d?" "+d:c.rc?' "'+c.rc+'"':""))}
|
function Cf(a,b,c,d,e){var f=!1;c=Re(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==Re(g)&&(!d||g.Na)){f=!0;g.Na||e||Df(a,b,h,"cleared");b.splice(h,1);b!=a.j&&(d=a.u,ic(d.X[c>>>d.ra],b==a.D));g.Na||Ke(a);break}}return f}function Ef(a,b){for(var c=1;c<b.length;c++)Df(a,b,c);return b.length-1}function Df(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.F)+(d?" "+d:c.sc?' "'+c.sc+'"':""))}
|
||||||
function vf(a,b){if(void 0!==b)ic(a,b,1,a.j,!0),a.P=0;else for(var c=1;c<a.j.length;c++){var d=a.j[c];if(d.Na){if(!wf(a,a.j,d,!0))break;c=0}}}
|
function Bf(a,b){if(void 0!==b)hc(a,b,1,a.j,!0),a.P=0;else for(var c=1;c<a.j.length;c++){var d=a.j[c];if(d.Na){if(!Cf(a,a.j,d,!0))break;c=0}}}
|
||||||
function ic(a,b,c,d,e){var f=!1;if(!a.$a++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.Na)for(var k=Ge(g),l=0;l<c;l++)if(b+l==k){var p,f=!0;g.Na&&(wf(a,d,g,!0),e=!0);if(p=g.cd){for(var f=!1,q=0;q<p.length;q++)if(!zf(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var x=q+1;x<p.length&&p[x].indexOf("else");x++)q++;if(x==p.length){f=!0;break}}a.b.C.za||(f=!0)}if(f){e||xf(a,d,h,"hit");break}}}a.$a--;return f}
|
function hc(a,b,c,d,e){var f=!1;if(!a.Za++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.Na)for(var k=Re(g),l=0;l<c;l++)if(b+l==k){var p,f=!0;g.Na&&(Cf(a,d,g,!0),e=!0);if(p=g.dd){for(var f=!1,q=0;q<p.length;q++)if(!Ff(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var x=q+1;x<p.length&&p[x].indexOf("else");x++)q++;if(x==p.length){f=!0;break}}a.b.C.za||(f=!0)}if(f){e||Df(a,d,h,"hit");break}}}a.Za--;return f}
|
||||||
function Af(a,b,c,d){for(var e=W(b.F),f=a.$(b,1),h=a.Ea[f],g="",k=(8086!=a.style?Ce:De)[h[0]],l=h.length-1,p=0,q,x=1;x<=l;x++){var u="";q=h[x];if(void 0!==q&&!(q&16384&&a.style==xe)){var r=q&240;if(r){var B=q&15;B?p=B:q|=p;q&61440||(q|=1==x?8192:4096);if(r&32)a:{var u=a,r=q,B=b,y=" ";switch(r&15){case 1:y=n(u.$(B,1),2);break;case 2:y=n(u.$(B,1)<<24>>24,4);break;case 3:y=n(u.Ra(B,2),4);break;default:u="imm("+t(r)+")";break a}8086==u.style&&r&64?y="["+y+"]":r&16||(y=(u.style==xe?"$":"0x")+y);u=y}else r&
|
function Gf(a,b,c,d){for(var e=W(b.F),f=a.$(b,1),h=a.Ea[f],g="",k=(8086!=a.style?Ne:Oe)[h[0]],l=h.length-1,p=0,q,x=1;x<=l;x++){var u="";q=h[x];if(void 0!==q&&!(q&16384&&a.style==Ie)){var r=q&240;if(r){var B=q&15;B?p=B:q|=p;q&61440||(q|=1==x?8192:4096);if(r&32)a:{var u=a,r=q,B=b,y=" ";switch(r&15){case 1:y=n(u.$(B,1),2);break;case 2:y=n(u.$(B,1)<<24>>24,4);break;case 3:y=n(u.Ra(B,2),4);break;default:u="imm("+t(r)+")";break a}8086==u.style&&r&64?y="["+y+"]":r&16||(y=(u.style==Ie?"$":"0x")+y);u=y}else r&
|
||||||
16?(u=(q&3840)>>8,r=Ee[u],8086==a.style&&q&64&&(6==u&&(r="HL"),r="["+r+"]"),u=r):r&128&&(u=(f>>3&7).toString());if(!u||!u.length){g="INVALID";break}0<g.length&&(g+=",");g+=u||"???"}}}f="";h=Z(e.F)+" ";if(-1!==e.F&&-1!==b.F){do if(f+=n(a.$(e,1),2),null==e.F)break;while(e.F!=b.F)}h+=la(f,10);h=h+(q&32768?"*":" ")+la(k,7);g&&(h+=" "+g);c&&(h=la(h,40)+";"+c,h=a.b.C.eb?h+("cycles="+Fc(a.b).toString()+" cs="+n(a.b.sb)):h+(null!=d?"="+d.toString():""));return h}
|
16?(u=(q&3840)>>8,r=Pe[u],8086==a.style&&q&64&&(6==u&&(r="HL"),r="["+r+"]"),u=r):r&128&&(u=(f>>3&7).toString());if(!u||!u.length){g="INVALID";break}0<g.length&&(g+=",");g+=u||"???"}}}f="";h=Z(e.F)+" ";if(-1!==e.F&&-1!==b.F){do if(f+=n(a.$(e,1),2),null==e.F)break;while(e.F!=b.F)}h+=la(f,10);h=h+(q&32768?"*":" ")+la(k,7);g&&(h+=" "+g);c&&(h=la(h,40)+";"+c,h=a.b.C.eb?h+("cycles="+Ec(a.b).toString()+" cs="+n(a.b.rb)):h+(null!=d?"="+d.toString():""));return h}
|
||||||
function Bf(a,b){var c;switch(b){case "IF":c=a.b.ta&512;break;case "SF":c=dd(a.b);break;case "ZF":c=cd(a.b);break;case "AF":c=bd(a.b);break;case "PF":c=ad(a.b);break;case "CF":c=Zc(a.b);break;default:c=0}return b.charAt(0)+(c?"1":"0")+" "}function Cf(a,b){return Ee[b]+"="+Re(a,b)+" "}function Df(a){return Cf(a,7)+Cf(a,8)+Cf(a,9)+Cf(a,10)+Cf(a,11)+Bf(a,"IF")+Bf(a,"SF")+Bf(a,"ZF")+Bf(a,"AF")+Bf(a,"PF")+Bf(a,"CF")}
|
function Hf(a,b){var c;switch(b){case "IF":c=a.b.ta&512;break;case "SF":c=dd(a.b);break;case "ZF":c=cd(a.b);break;case "AF":c=bd(a.b);break;case "PF":c=ad(a.b);break;case "CF":c=Zc(a.b);break;default:c=0}return b.charAt(0)+(c?"1":"0")+" "}function If(a,b){return Pe[b]+"="+wf(a,b)+" "}function Jf(a){return If(a,7)+If(a,8)+If(a,9)+If(a,10)+If(a,11)+Hf(a,"IF")+Hf(a,"SF")+Hf(a,"ZF")+Hf(a,"AF")+Hf(a,"PF")+Hf(a,"CF")}m.ac=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||||
var Ef={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
function Kf(a,b,c){var d=[],e=Re(b)>>>0;for(b=0;b<a.G.length;b++){var f=a.G[b],h=f.F>>>0,g=f.pd;if(e>=h&&e<h+g){e=oa(f.$b,[e-h],a.ac);0<=e?Lf(a,b,e,d):c&&(e=~e,Lf(a,b,e-1,d),Lf(a,b,e,d));break}}return d}function Lf(a,b,c,d){var e={},f=a.G[b].$b,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.G[b].Pa[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
|
||||||
function Ff(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
|
function Mf(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c,d=0;if(a.K)if("clear"==b){for(c=0;c<a.K.length;c++)a.K[c]=[c,0];a.g("frequency data cleared");d++}else if(void 0!==b)a.g("unknown frequency command: "+b),d++;else{var e=a.K.slice();e.sort(function(a,b){return b[1]-a[1]});var f=8086!=a.style?Ne:Oe;for(c=0;c<e.length;c++){var h=e[c][0],g=e[c][1];g&&(a.g((f[a.Ea[h][0]]+" ").substr(0,5)+" ("+da(h)+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}}
|
||||||
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){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ge(a)||a.g("no variables"),!0;if(!c[2])return Ge(a,c[1]);if(!c[3])return delete a.da[c[1]],!0;var d=ze(a,c[3]);return void 0!==d?(a.da[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
|
||||||
function Me(a,b,c){var d;if(b){b=Le(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var p=l[e++],q=p.length,p=ma(p);if(!p){f=!0;break}p=Gf(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}g.push(p);if(e==l.length)break;var p=l[e++],x=p.length;k.length&&Ef[p]<Ef[k[k.length-1]]&&Ff(g,k,1);k.push(p);b=b.substr(q+x)}Ff(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&Hf(a,null,
|
function Of(a,b,c){var d=null;if(b=De(a,b,!0)){var e=Kf(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.F-e[1])&&(h=" + "+t(f)),f=e[0]+" ("+Z(e[1])+")"+h,c&&a.g(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.F)&&(h=" - "+t(f)),f=e[4]+" ("+Z(e[5])+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
|
||||||
d))}return d}function Le(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Me(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?n(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=He(a,c[1]),b=b.replace("["+c[1]+"]",d?n(a.Ra(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.Z-a.la}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
function Pf(a,b){switch(b[1]){case "8080":a.style=Ie;break;case "8086":a.style=8086;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.b.gb=c;break;case "start":a.b.sb=c;break;case "stop":a.b.hb=c;break;default:a.g("unknown cs option");return}void 0!==c&&oc(a.b);a.g("checksums "+(a.b.C.eb?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Fc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.ab.toFixed(2)+"Mhz")+" ("+
|
||||||
function Gf(a,b,c,d){var e;void 0!==b?(e=Qe(b),0<=e?e=Se(a,e):(e=a.da[b],void 0===e&&(e=ca(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
|
|
||||||
function Hf(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=d&255,l=8,p="";void 0===l?l=32:32<l&&(l=32);if(null==k||isNaN(k))for(;0<l--;)p="?"+p;else for(;0<l--;)p=(k&1?"1":"0")+p,k>>=1;h=p+"b"+h;d>>=8}d="0x"+n(c)+" "+c+". ("+h+")"}a.g((null!=b?b+": ":"")+d);return e}function If(a,b){if(b)return Hf(a,b,a.da[b]);var c=0;for(b in a.da)Hf(a,b,a.da[b]),c++;return 0<c}we.prototype.Sa=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
|
||||||
function Jf(a,b,c){var d=[],e=Ge(b)>>>0;for(b=0;b<a.G.length;b++){var f=a.G[b],h=f.F>>>0,g=f.od;if(e>=h&&e<h+g){e=oa(f.$b,[e-h],a.Sa);0<=e?Kf(a,b,e,d):c&&(e=~e,Kf(a,b,e-1,d),Kf(a,b,e,d));break}}return d}function Kf(a,b,c,d){var e={},f=a.G[b].$b,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.G[b].Pa[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
|
|
||||||
function Lf(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c,d=0;if(a.K)if("clear"==b){for(c=0;c<a.K.length;c++)a.K[c]=[c,0];a.g("frequency data cleared");d++}else if(void 0!==b)a.g("unknown frequency command: "+b),d++;else{var e=a.K.slice();e.sort(function(a,b){return b[1]-a[1]});var f=8086!=a.style?Ce:De;for(c=0;c<e.length;c++){var h=e[c][0],g=e[c][1];g&&(a.g((f[a.Ea[h][0]]+" ").substr(0,5)+" ("+da(h)+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}}
|
|
||||||
function Mf(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return If(a)||a.g("no variables"),!0;if(!c[2])return If(a,c[1]);if(!c[3])return delete a.da[c[1]],!0;var d=Me(a,c[3]);return void 0!==d?(a.da[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
|
|
||||||
function Nf(a,b,c){var d=null;if(b=He(a,b,!0)){var e=Jf(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.F-e[1])&&(h=" + "+t(f)),f=e[0]+" ("+Z(e[1])+")"+h,c&&a.g(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.F)&&(h=" - "+t(f)),f=e[4]+" ("+Z(e[5])+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
|
|
||||||
function Of(a,b){switch(b[1]){case "8080":a.style=xe;break;case "8086":a.style=8086;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.b.hb=c;break;case "start":a.b.tb=c;break;case "stop":a.b.ib=c;break;default:a.g("unknown cs option");return}void 0!==c&&pc(a.b);a.g("checksums "+(a.b.C.eb?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Gc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.ab.toFixed(2)+"Mhz")+" ("+
|
|
||||||
a.b.Qa+"x)");return;case "?":a.g("debugger options:");a.g("\t8080\t\tselect 8080-style mnemonics");a.g("\t8086\t\tselect 8086-style mnemonics");a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.g("unknown option: "+b[1]);return}}a.g(a.style+"-style mnemonics enabled")}
|
a.b.Qa+"x)");return;case "?":a.g("debugger options:");a.g("\t8080\t\tselect 8080-style mnemonics");a.g("\t8086\t\tselect 8086-style mnemonics");a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.g("unknown option: "+b[1]);return}}a.g(a.style+"-style mnemonics enabled")}
|
||||||
function Ve(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.g("missing value for "+b[1]);return}var h=!1,g=Me(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.i=g&255;break;case "B":d.S=g&255;break;case "BC":d.S=g>>8&255;case "C":d.T=g&255;break;case "D":d.U=
|
function zf(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.g("missing value for "+b[1]);return}var h=!1,g=ze(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.i=g&255;break;case "B":d.S=g&255;break;case "BC":d.S=g>>8&255;case "C":d.T=g&255;break;case "D":d.U=
|
||||||
g&255;break;case "DE":d.U=g>>8&255;case "E":d.V=g&255;break;case "H":d.W=g&255;break;case "HL":d.W=g>>8&255;case "L":d.Y=g&255;break;case "SP":d.na=g&65535;break;case "PC":G(d,g);a.M=W(d.R);break;case "PS":Rc(d,g);break;case "PSW":Rc(d,g&255|d.ta&-256);d.i=g>>8;break;case "CF":d.ca=g?d.ca|256:d.ca&255;break;case "PF":g?ad(d)||(d.fa^=1):ad(d)&&(d.fa^=1);break;case "AF":d.xa=g?~d.fa&16|d.xa&-17:d.fa&16|d.xa&-17;break;case "ZF":d.ca=g?d.ca&-256:d.ca|255;break;case "SF":g?dd(d)||(d.fa^=192):dd(d)&&(d.fa^=
|
g&255;break;case "DE":d.U=g>>8&255;case "E":d.V=g&255;break;case "H":d.W=g&255;break;case "HL":d.W=g>>8&255;case "L":d.Y=g&255;break;case "SP":d.na=g&65535;break;case "PC":H(d,g);a.M=W(d.R);break;case "PS":Qc(d,g);break;case "PSW":Qc(d,g&255|d.ta&-256);d.i=g>>8;break;case "CF":d.ca=g?d.ca|256:d.ca&255;break;case "PF":g?ad(d)||(d.fa^=1):ad(d)&&(d.fa^=1);break;case "AF":d.xa=g?~d.fa&16|d.xa&-17:d.fa&16|d.xa&-17;break;case "ZF":d.ca=g?d.ca&-256:d.ca|255;break;case "SF":g?dd(d)||(d.fa^=192):dd(d)&&(d.fa^=
|
||||||
192);break;case "IF":d.ta=g?d.ta|512:d.ta&-513;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}Dc(d);a.g("updated registers:")}a.g(Df(a));c&&(a.M=W(d.R),uf(a,Z(a.M.F)))}}function Pf(a,b){b=ma(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(Te(a,c[2])):Me(a,b,!0)}function Qf(a,b,c){var d="t"!=b;c=Gf(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ba(c,function(){return lb(a,!0)&&a.kb(e,d,!1)},function(){Dc(a.b);lb(a,!1)})}
|
192);break;case "IF":d.ta=g?d.ta|512:d.ta&-513;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}Cc(d);a.g("updated registers:")}a.g(Jf(a));c&&(a.M=W(d.R),Af(a,Z(a.M.F)))}}function Qf(a,b){b=ma(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(xf(a,c[2])):ze(a,b,!0)}function Rf(a,b,c){var d="t"!=b;c=Be(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ba(c,function(){return kb(a,!0)&&a.jb(e,d,!1)},function(){Cc(a.b);kb(a,!1)})}
|
||||||
function uf(a,b,c,d){if(b=He(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=He(a,c,!0);if(!d||d.F<b.F)return;e=d.F-b.F;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=mb(a,!1)||a.P?a.J:null;var h=null!=f?"cycles":null,g=Jf(a,b),k=b.F;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.g(l)}g[3]&&(h=g[3],f=null);f=Af(a,b,h,f);a.g(f);a.M=b;e-=b.F-k;c++}}}
|
function Af(a,b,c,d){if(b=De(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=De(a,c,!0);if(!d||d.F<b.F)return;e=d.F-b.F;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=lb(a,!1)||a.P?a.J:null;var h=null!=f?"cycles":null,g=Kf(a,b),k=b.F;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.g(l)}g[3]&&(h=g[3],f=null);f=Gf(a,b,h,f);a.g(f);a.M=b;e-=b.F-k;c++}}}
|
||||||
function Oe(a,b,c,d){if(c)if(b){0>a.I&&a.w.length&&(a.I=0);if(0>a.I||b!=a.w[a.I])a.w.splice(0,0,b),a.I=0;a.I--}else a.ba?b="end":b=a.w[a.I+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(ma(b.substring(c,f))),c=f+1}}return a}
|
function We(a,b,c,d){if(c)if(b){0>a.I&&a.w.length&&(a.I=0);if(0>a.I||b!=a.w[a.I])a.w.splice(0,0,b),a.I=0;a.I--}else a.ba?b="end":b=a.w[a.I+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(ma(b.substring(c,f))),c=f+1}}return a}
|
||||||
function zf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.ba&&(a.g("ended assemble at "+Z(a.aa.F)),a.M=a.aa,a.ba=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ia=null;if(pb(a)&&0<b.length){a.ba&&(b="a "+Z(a.aa.F)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var p=He(a,f[1],!0);if(p)if(a.aa=
|
function Ff(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.ba&&(a.g("ended assemble at "+Z(a.aa.F)),a.M=a.aa,a.ba=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ia=null;if(mb(a)&&0<b.length){a.ba&&(b="a "+Z(a.aa.F)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var p=De(a,f[1],!0);if(p)if(a.aa=
|
||||||
p,void 0===f[2])a.g("begin assemble at "+Z(p.F)),a.ba=!0,Dc(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var x=0;x<q.length;x++)a.ua(p,q[x],1);a.g(Af(a,a.aa))}}break;case "b":a:{var u=f[0],r=f[1],B=b;if("?"==r)a.g("breakpoint commands:"),a.g("\tbi [p]\ttoggle break on input port [p]"),a.g("\tbo [p]\ttoggle break on output port [p]"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),
|
p,void 0===f[2])a.g("begin assemble at "+Z(p.F)),a.ba=!0,Cc(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var x=0;x<q.length;x++)a.ua(p,q[x],1);a.g(Gf(a,a.aa))}}break;case "b":a:{var u=f[0],r=f[1],B=b;if("?"==r)a.g("breakpoint commands:"),a.g("\tbi [p]\ttoggle break on input port [p]"),a.g("\tbo [p]\ttoggle break on output port [p]"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),
|
||||||
a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");else{var y=u.charAt(1);if("l"==y){var X=0,X=X+yf(a,a.j),X=X+yf(a,a.O);(X+=yf(a,a.D))||a.g("no breakpoints")}else if("n"==y)a.ha=Gf(a,r),a.g("break after "+a.ha+" instruction(s)");else if(void 0===r)a.g("missing breakpoint address");else{var A=W();if("*"!=r&&(A=He(a,r,!0),!A))break a;r=t(A.F);"c"==y?null==A.F?(ye(a),a.g("all breakpoints cleared")):wf(a,a.j,A)||wf(a,a.O,A)||
|
a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");else{var y=u.charAt(1);if("l"==y){var X=0,X=X+Ef(a,a.j),X=X+Ef(a,a.O);(X+=Ef(a,a.D))||a.g("no breakpoints")}else if("n"==y)a.ha=Be(a,r),a.g("break after "+a.ha+" instruction(s)");else if(void 0===r)a.g("missing breakpoint address");else{var A=W();if("*"!=r&&(A=De(a,r,!0),!A))break a;r=t(A.F);"c"==y?null==A.F?(Je(a),a.g("all breakpoints cleared")):Cf(a,a.j,A)||Cf(a,a.O,A)||
|
||||||
wf(a,a.D,A)||a.g("breakpoint missing: "+Z(A.F)):"i"==y?a.g("breakpoint "+(Gb(a.u,A.F)?"enabled":"cleared")+": port "+r+" (input)"):"o"==y?a.g("breakpoint "+(Sb(a.u,A.F)?"enabled":"cleared")+": port "+r+" (output)"):null!=A.F&&(Ne(a,A,B),"p"==y?a.Ya(a.j,A):"r"==y?a.Ya(a.O,A):"w"==y?a.Ya(a.D,A):a.g("unknown breakpoint command: "+y))}}}break;case "c":a.Fa&&(a.Fa.value="");break;case "d":a:{var Q,aa=f[0],Y=f[1],ua=f[2],Fb=f[3];if("?"==Y){var Fa="";for(Q in tb)a.va[Q]&&(Fa&&(Fa+=","),Fa+=Q);Fa+=",state,symbols";
|
Cf(a,a.D,A)||a.g("breakpoint missing: "+Z(A.F)):"i"==y?a.g("breakpoint "+(Eb(a.u,A.F)?"enabled":"cleared")+": port "+r+" (input)"):"o"==y?a.g("breakpoint "+(Rb(a.u,A.F)?"enabled":"cleared")+": port "+r+" (output)"):null!=A.F&&(Ve(a,A,B),"p"==y?a.Ya(a.j,A):"r"==y?a.Ya(a.O,A):"w"==y?a.Ya(a.D,A):a.g("unknown breakpoint command: "+y))}}}break;case "c":a.Fa&&(a.Fa.value="");break;case "d":a:{var Q,ba=f[0],Y=f[1],ua=f[2],Fb=f[3];if("?"==Y){var Fa="";for(Q in sb)a.va[Q]&&(Fa&&(Fa+=","),Fa+=Q);Fa+=",state,symbols";
|
||||||
a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");Fa.length&&a.g("dump extension commands:\n\t"+Fa)}else if("state"==Y){var We=Rf(a.B,!0);"console"==ua?console.log(We):(a.Fa&&(a.Fa.value=""),a.g(We))}else if("symbols"==Y)for(var ld=0;ld<a.G.length;ld++){var md=a.G[ld],nb;for(nb in md.Pa)if("."!=nb.charAt(0)){var Xe=md.Pa[nb].o;
|
a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");Fa.length&&a.g("dump extension commands:\n\t"+Fa)}else if("state"==Y){var Xe=Sf(a.B,!0);"console"==ua?console.log(Xe):(a.Fa&&(a.Fa.value=""),a.g(Xe))}else if("symbols"==Y)for(var md=0;md<a.G.length;md++){var nd=a.G[md],nb;for(nb in nd.Pa)if("."!=nb.charAt(0)){var Ye=nd.Pa[nb].o;
|
||||||
if(void 0!==Xe){var Ye=md.Pa[nb].l;Ye&&(nb=Ye);a.g(Z(Xe)+" "+nb)}}}else{if("d"==aa){for(Q in tb)if(f[1]==Q){var Ze=a.va[Q];Ze?(f.shift(),f.shift(),Ze(f)):a.g("no dump registered for "+Y);break a}Y||(aa=a.rb||"db")}else a.rb=aa;if("dh"==aa){var $e=Y,af=ua,bf="",cf=0,ba=a.ea,Ga=a.L;if(Ga.length){var ia=+$e||a.fb,ob=+af||10;isNaN(ia)?ia=ob:bf="more ";ia>Ga.length&&(a.g("note: only "+Ga.length+" available"),ia=Ga.length);ba-=ia;0>ba&&(null==Ga[Ga.length-1].F?(ia=ba+ia,ba=0):ba+=Ga.length);var nd=[];"call"==
|
if(void 0!==Ye){var Ze=nd.Pa[nb].l;Ze&&(nb=Ze);a.g(Z(Ye)+" "+nb)}}}else{if("d"==ba){for(Q in sb)if(f[1]==Q){var $e=a.va[Q];$e?(f.shift(),f.shift(),$e(f)):a.g("no dump registered for "+Y);break a}Y||(ba=a.qb||"db")}else a.qb=ba;if("dh"==ba){var af=Y,bf=ua,cf="",df=0,ca=a.ea,Ga=a.L;if(Ga.length){var ia=+af||a.$a,ob=+bf||10;isNaN(ia)?ia=ob:cf="more ";ia>Ga.length&&(a.g("note: only "+Ga.length+" available"),ia=Ga.length);ca-=ia;0>ca&&(null==Ga[Ga.length-1].F?(ia=ca+ia,ca=0):ca+=Ga.length);var od=[];"call"==
|
||||||
af&&(ob=1E5,nd=["CALL"]);for(void 0!==$e&&a.g(ia+" instructions earlier:");0<ob&&ba!=a.ea;){var df=Ga[ba++];if(null==df.F)break;var Kb=W(df.F),jg=ia--,ef=Af(a,Kb,"history",jg);(!nd.length||0<=ef.indexOf(nd[0]))&&a.g(ef);Kb.Ib&&(ba+=Kb.Ib,ob-=Kb.Ib,ia-=Kb.Ib);ba>=Ga.length&&(ba=0);a.fb=ia;cf++;ob--}}cf||(a.g("no "+bf+"history available"),a.fb=void 0)}else{var qc=He(a,Y);if(qc){var rc=0;ua&&("l"==ua.charAt(0)&&(ua=ua.substr(1)||Fb),rc=Gf(a,ua)>>>0,65536<rc&&(rc=65536));for(var Xa="",sc="dd"==aa?4:"dw"==
|
bf&&(ob=1E5,od=["CALL"]);for(void 0!==af&&a.g(ia+" instructions earlier:");0<ob&&ca!=a.ea;){var ef=Ga[ca++];if(null==ef.F)break;var Jb=W(ef.F),kg=ia--,ff=Gf(a,Jb,"history",kg);(!od.length||0<=ff.indexOf(od[0]))&&a.g(ff);Jb.Hb&&(ca+=Jb.Hb,ob-=Jb.Hb,ia-=Jb.Hb);ca>=Ga.length&&(ca=0);a.$a=ia;df++;ob--}}df||(a.g("no "+cf+"history available"),a.$a=void 0)}else{var qc=De(a,Y);if(qc){var rc=0;ua&&("l"==ua.charAt(0)&&(ua=ua.substr(1)||Fb),rc=Be(a,ua)>>>0,65536<rc&&(rc=65536));for(var Xa="",sc="dd"==ba?4:"dw"==
|
||||||
aa?2:1,tc=sc*rc||128,kg=tc+15>>4||1;kg--&&0<tc;){var uc=0,od=0,Lb,Mb="",pd="",Y=Z(qc.F);for(Lb=16;0<Lb&&0<tc;Lb--){var vc=a.$(qc,1),uc=uc|vc<<(od++<<3);od==sc&&(Mb+=n(uc,2*sc),Mb+=1==sc?9==Lb?"-":" ":" ",uc=od=0);pd+=32<=vc&&128>vc?String.fromCharCode(vc):".";tc--}Xa&&(Xa+="\n");Xa+=Y+" "+Mb+(0==Lb?" "+pd:"")}Xa&&a.g(Xa);a.Za=qc}}}}break;case "e":if("else"==f[0])break;var wc=1,ff=255,gf=a.$,hf=a.ua;"ew"==f[0]&&(wc=2,ff=65535,gf=a.Ra,hf=a.Gb);var jf=wc<<1,kf=f[1];if(null==kf)a.g("edit memory commands:"),
|
ba?2:1,tc=sc*rc||128,lg=tc+15>>4||1;lg--&&0<tc;){var uc=0,pd=0,Kb,Lb="",qd="",Y=Z(qc.F);for(Kb=16;0<Kb&&0<tc;Kb--){var vc=a.$(qc,1),uc=uc|vc<<(pd++<<3);pd==sc&&(Lb+=n(uc,2*sc),Lb+=1==sc?9==Kb?"-":" ":" ",uc=pd=0);qd+=32<=vc&&128>vc?String.fromCharCode(vc):".";tc--}Xa&&(Xa+="\n");Xa+=Y+" "+Lb+(0==Kb?" "+qd:"")}Xa&&a.g(Xa);a.Sa=qc}}}}break;case "e":if("else"==f[0])break;var wc=1,gf=255,hf=a.$,jf=a.ua;"ew"==f[0]&&(wc=2,gf=65535,hf=a.Ra,jf=a.Fb);var kf=wc<<1,lf=f[1];if(null==lf)a.g("edit memory commands:"),
|
||||||
a.g("\teb [a] [...] edit bytes at address a"),a.g("\tew [a] [...] edit words at address a");else{var xc=He(a,kf);if(xc)for(var yc=2;yc<f.length;yc++){var Nb=Me(a,f[yc]);if(void 0===Nb){a.g("unrecognized value: "+f[yc]);break}Nb&~ff&&a.g("warning: "+n(Nb)+" exceeds "+wc+"-byte value");var lg=gf.call(a,xc);a.g("changing "+Z(xc.F)+" from 0x"+n(lg,jf)+" to 0x"+n(Nb,jf));hf.call(a,xc,Nb,wc)}}break;case "f":Lf(a,f[1]);break;case "g":a:{var lf=f[1],mg=b;if(void 0!==lf){var qd=He(a,lf,!0);if(!qd)break a;
|
a.g("\teb [a] [...] edit bytes at address a"),a.g("\tew [a] [...] edit words at address a");else{var xc=De(a,lf);if(xc)for(var yc=2;yc<f.length;yc++){var Mb=ze(a,f[yc]);if(void 0===Mb){a.g("unrecognized value: "+f[yc]);break}Mb&~gf&&a.g("warning: "+n(Mb)+" exceeds "+wc+"-byte value");var mg=hf.call(a,xc);a.g("changing "+Z(xc.F)+" from 0x"+n(mg,kf)+" to 0x"+n(Mb,kf));jf.call(a,xc,Mb,wc)}}break;case "f":Mf(a,f[1]);break;case "g":a:{var mf=f[1],ng=b;if(void 0!==mf){var rd=De(a,mf,!0);if(!rd)break a;
|
||||||
Ne(a,qd,mg);a.Ya(a.j,qd,!0)}a.bb(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var rd;if(a.C.za)rd="halting",a.pa();else{if(mb(a,!0))break a;rd="already halted"}c||a.g(rd)}break;case "i":if("if"==f[0]){var sd;var Ob=b.substr(2),Ob=ma(Ob);Me(a,Ob)?(c||a.g("true: "+Ob),sd=!0):(c||a.g("false: "+Ob),sd=!1);sd||(d=!1);break}if("int"==f[0]){var zc;var ng=f[1];if(a.b.ta&512){var td=Me(a,ng);null==td?zc=!1:(a.g("requesting interrupt level "+td),Gd(a.b,td),zc=!0)}else a.g("interrupts disabled (use rif=1 to enable)"),
|
Ve(a,rd,ng);a.Ya(a.j,rd,!0)}a.bb(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var sd;if(a.C.za)sd="halting",a.pa();else{if(lb(a,!0))break a;sd="already halted"}c||a.g(sd)}break;case "i":if("if"==f[0]){var td;var Nb=b.substr(2),Nb=ma(Nb);ze(a,Nb)?(c||a.g("true: "+Nb),td=!0):(c||a.g("false: "+Nb),td=!1);td||(d=!1);break}if("int"==f[0]){var zc;var og=f[1];if(a.b.ta&512){var ud=ze(a,og);null==ud?zc=!1:(a.g("requesting interrupt level "+ud),Gd(a.b,ud),zc=!0)}else a.g("interrupts disabled (use rif=1 to enable)"),
|
||||||
zc=!1;zc||(d=!1);break}var ud=f[1];if(ud&&"?"!=ud){var vd=Gf(a,ud);if(void 0!==vd){var og=Ib(a.u,vd);a.g(t(vd)+": "+da(og))}}else a.g("input commands:"),a.g("\ti [p]\tread port [p]"),a.g("warning: port accesses can affect hardware state");break;case "k":var pg=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var wd=0,mf=W(),Pb=W(a.b.na);for(a.g("stack trace for "+Z(Pb.F));10>wd;){for(var Ya=null,qg=256;65536>Pb.F>>>0;){mf.F=
|
zc=!1;zc||(d=!1);break}var vd=f[1];if(vd&&"?"!=vd){var wd=Be(a,vd);if(void 0!==wd){var pg=Hb(a.u,wd);a.g(t(wd)+": "+da(pg))}}else a.g("input commands:"),a.g("\ti [p]\tread port [p]"),a.g("warning: port accesses can affect hardware state");break;case "k":var qg=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var xd=0,nf=W(),Ob=W(a.b.na);for(a.g("stack trace for "+Z(Ob.F));10>xd;){for(var Ya=null,rg=256;65536>Ob.F>>>0;){nf.F=
|
||||||
a.Ra(Pb,2);if(null==Pb.F||!qg--)break;for(var rg=a,Ac=mf,nf=null,Qb=Ac.F,of=Qb,xd=1;6>=xd&&Qb;xd++){if(2<xd){Ac.F=Qb;var Bc=Af(rg,Ac);if(0<=Bc.indexOf("CALL")){var pf=Bc.indexOf(" ");if(Qb+(Bc.indexOf(" ",pf+1)-pf-1)/2==of){nf=Bc;break}}}Qb--}Ac.F=of;if(Ya=nf)break}if(!Ya||null==Ya)break;var qf=null;if("ks"==pg){var rf=Ya.match(/[0-9A-F]+$/);rf&&(qf=Nf(a,rf[0]))}Ya=la(Ya,50)+" ;"+(qf||"stack="+Z(Pb.F));a.g(Ya);wd++}wd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Nf(a,f[1],!0);
|
a.Ra(Ob,2);if(null==Ob.F||!rg--)break;for(var sg=a,Ac=nf,of=null,Pb=Ac.F,pf=Pb,yd=1;6>=yd&&Pb;yd++){if(2<yd){Ac.F=Pb;var Bc=Gf(sg,Ac);if(0<=Bc.indexOf("CALL")){var qf=Bc.indexOf(" ");if(Pb+(Bc.indexOf(" ",qf+1)-qf-1)/2==pf){of=Bc;break}}}Pb--}Ac.F=pf;if(Ya=of)break}if(!Ya||null==Ya)break;var rf=null;if("ks"==qg){var sf=Ya.match(/[0-9A-F]+$/);sf&&(rf=Of(a,sf[0]))}Ya=la(Ya,50)+" ;"+(rf||"stack="+Z(Ob.F));a.g(Ya);xd++}xd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Of(a,f[1],!0);
|
||||||
break}break;case "m":a:{var Ha,Ia=null,N=f[1];"?"==N&&(N=void 0);if(void 0!==N){var Ra=0;if("all"==N)Ra=1878917119,N=null;else if("on"==N)Ia=!0,N=null;else if("off"==N)Ia=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(Ha in tb)if(N==Ha){Ra=tb[Ha];Ia=!!(a.sa&Ra);break}if(!Ra){a.g("unknown message category: "+N);break a}}if(Ra)if("on"==f[2])a.sa|=Ra,Ia=!0;else if("off"==f[2]&&(a.sa&=~Ra,Ia=!1,1073741824==Ra)){for(var yd=0;yd<a.ka.length;yd++)a.g(a.ka[yd]);a.ka=[]}}var sg=0,Sa="";for(Ha in tb)if(!N||
|
break}break;case "m":a:{var Ha,Ia=null,N=f[1];"?"==N&&(N=void 0);if(void 0!==N){var Ra=0;if("all"==N)Ra=1878917119,N=null;else if("on"==N)Ia=!0,N=null;else if("off"==N)Ia=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(Ha in sb)if(N==Ha){Ra=sb[Ha];Ia=!!(a.sa&Ra);break}if(!Ra){a.g("unknown message category: "+N);break a}}if(Ra)if("on"==f[2])a.sa|=Ra,Ia=!0;else if("off"==f[2]&&(a.sa&=~Ra,Ia=!1,1073741824==Ra)){for(var zd=0;zd<a.ka.length;zd++)a.g(a.ka[zd]);a.ka=[]}}var tg=0,Sa="";for(Ha in sb)if(!N||
|
||||||
N==Ha){var tg=!!(a.sa&tb[Ha]);if(null===Ia||Ia==tg)Sa&&(Sa+=","),++sg%10||(Sa+="\n\t"),"key"==Ha&&(Ha="keys"),Sa+=Ha}void 0===N&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ia?Ia?"messages on: ":"messages off: ":"message categories:\n\t")+(Sa||"none"));ze(a)}break;case "o":var zd=f[1],ug=f[2];if(zd&&"?"!=zd){var Ad=Gf(a,zd,"port #"),Bd=Gf(a,ug);void 0!==Ad&&void 0!==Bd&&(Ub(a.u,Ad,Bd),a.g(t(Ad)+": "+da(Bd)))}else a.g("output commands:"),a.g("\to [p] [b]\twrite byte [b] to port [p]"),
|
N==Ha){var ug=!!(a.sa&sb[Ha]);if(null===Ia||Ia==ug)Sa&&(Sa+=","),++tg%10||(Sa+="\n\t"),"key"==Ha&&(Ha="keys"),Sa+=Ha}void 0===N&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ia?Ia?"messages on: ":"messages off: ":"message categories:\n\t")+(Sa||"none"));Ke(a)}break;case "o":var Ad=f[1],vg=f[2];if(Ad&&"?"!=Ad){var Bd=Be(a,Ad,"port #"),Cd=Be(a,vg);void 0!==Bd&&void 0!==Cd&&(Tb(a.u,Bd,Cd),a.g(t(Bd)+": "+da(Cd)))}else a.g("output commands:"),a.g("\to [p] [b]\twrite byte [b] to port [p]"),
|
||||||
a.g("warning: port accesses can affect hardware state");break;case "p":if("print"==f[0]){Pf(a,b.substr(5));break}var sf="pr"==f[0]?1:0,vg=1+sf;if(a.P)a.g("step in progress");else{var Cd=W(a.b.R);switch(a.$(Cd)){case 205:a.P=vg,Ie(Cd,3)}a.P?(a.Ya(a.j,Cd,!0),a.bb()||(a.B&&a.B.wb(),a.P=0)):Qf(a,sf?"tr":"t")}break;case "r":if("reset"==b){a.B&&a.B.reset();break}Ve(a,f);break;case "s":Of(a,f);break;case "t":Qf(a,f[0],f[1]);break;case "u":uf(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Mf(a,b.substr(3))||
|
a.g("warning: port accesses can affect hardware state");break;case "p":if("print"==f[0]){Qf(a,b.substr(5));break}var tf="pr"==f[0]?1:0,wg=1+tf;if(a.P)a.g("step in progress");else{var Dd=W(a.b.R);switch(a.$(Dd)){case 205:a.P=wg,Se(Dd,3)}a.P?(a.Ya(a.j,Dd,!0),a.bb()||(a.B&&a.B.vb(),a.P=0)):Rf(a,tf?"tr":"t")}break;case "r":if("reset"==b){a.B&&a.B.reset();break}zf(a,f);break;case "s":Pf(a,f);break;case "t":Rf(a,f[0],f[1]);break;case "u":Af(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Nf(a,b.substr(3))||
|
||||||
(d=!1);break}a.g("PC8080 version 1.30.0 ("+a.b.kc+",RELEASE"+(rb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(ta());break;case "?":if(f[1]){Pf(a,b.substr(1));break}var Rb="commands:",Dd;for(Dd in Be)Rb+="\n"+la(Dd,9)+Be[Dd];Hd(a)||(Rb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Rb);break;default:a.g("unknown command: "+b),d=!1}}}catch(tf){a.g("debugger error: "+(tf.stack||tf.message)),d=!1}return d}function Cc(a,b,c){b=Oe(a,b,c);for(var d in b)if(!zf(a,b[d]))return!1;return!0}
|
(d=!1);break}a.g("PC8080 version 1.30.0 ("+a.b.lc+",RELEASE"+(qb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(ta());break;case "?":if(f[1]){Qf(a,b.substr(1));break}var Qb="commands:",Ed;for(Ed in Me)Qb+="\n"+la(Ed,9)+Me[Ed];Hd(a)||(Qb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Qb);break;default:a.g("unknown command: "+b),d=!1}}}catch(uf){a.g("debugger error: "+(uf.stack||uf.message)),d=!1}return d}function pc(a,b,c){b=We(a,b,c);for(var d in b)if(!Ff(a,b[d]))return!1;return!0}
|
||||||
Ma(function(){for(var a=C(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new we(d);hb(d,c)}});
|
Ma(function(){for(var a=D(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=C(c),d=new He(d);gb(d,c)}});
|
||||||
function Sf(a,b,c){w.call(this,"Computer",a,Sf,67108864);this.C.wa=!1;Tf(this,b);this.O=nc(this,"autoPower",a);this.w=0;this.da=a.busWidth||a.buswidth;this.B=Uf;this.L=null;this.K=this.aa=!1;this.ea=nc(this,"url")||"";(Math.random()+.1).toString(36);this.j=Vf(this);if(this.b=gb("CPU",this.id)){this.H=gb("Debugger",this.id);this.G=[];for(b=null;b=vb(this,"Video",b);)this.G.push(b);this.u=new xb({id:this.Bb+".bus",busWidth:this.da},this.b,this.H);var d,e=eb(this.id);if((this.I=gb("Panel",this.id))&&
|
function Tf(a,b,c){w.call(this,"Computer",a,Tf,67108864);this.C.wa=!1;Uf(this,b);this.O=mc(this,"autoPower",a);this.w=0;this.da=a.busWidth||a.buswidth;this.B=Vf;this.L=null;this.K=this.aa=!1;this.ea=mc(this,"url")||"";(Math.random()+.1).toString(36);this.j=Wf(this);if(this.b=fb("CPU",this.id)){this.H=fb("Debugger",this.id);this.G=[];for(b=null;b=ub(this,"Video",b);)this.G.push(b);this.u=new wb({id:this.Ab+".bus",busWidth:this.da},this.b,this.H);var d,e=db(this.id);if((this.I=fb("Panel",this.id))&&
|
||||||
this.I.Fa)for(b=0;b<e.length;b++)d=e[b],d.ja=this.I.ja,d.g=this.I.g,d.Fa=this.I.Fa;this.g("PC8080 v1.30.0\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Oa&&d.Oa(this,this.u,this.b,this.H);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.B=parseInt(d,10));var f;if(a=nc(this,"state")||(f=!0,a.state))b=this.P=a,f||(this.K=!0,this.B=Uf),this.B&&(this.M=new H(this,"1.30.0"),Wf(this.M)?
|
this.I.Fa)for(b=0;b<e.length;b++)d=e[b],d.ja=this.I.ja,d.g=this.I.g,d.Fa=this.I.Fa;this.g("PC8080 v1.30.0\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Oa&&d.Oa(this,this.u,this.b,this.H);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.B=parseInt(d,10));var f;if(a=mc(this,"state")||(f=!0,a.state))b=this.P=a,f||(this.K=!0,this.B=Vf),this.B&&(this.M=new Tc(this,"1.30.0"),Xf(this.M)?
|
||||||
b=null:delete this.M);!b&&this.B&&(b=Xf(this))&&(this.K=!0);if(b){var h=this;sa(b,null,!0,function(a,b,c){c?(h.J=null,h.K=!1,h.ja("Unable to load machine state from server (error "+c+(b?": "+ma(b):"")+")")):(h.L=b,h.aa=!0);E(h)})}else E(this);this.N.power||(this.O=!0);!c&&this.O&&Yf(this,this.ub)}else v("Unable to find CPU component")}bb(Sf);var Uf=0;function Tf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){v(d.message+" ("+c+")")}}a.ba=b}
|
b=null:delete this.M);!b&&this.B&&(b=Yf(this))&&(this.K=!0);if(b){var h=this;sa(b,null,!0,function(a,b,c){c?(h.J=null,h.K=!1,h.ja("Unable to load machine state from server (error "+c+(b?": "+ma(b):"")+")")):(h.L=b,h.aa=!0);F(h)})}else F(this);this.N.power||(this.O=!0);!c&&this.O&&Zf(this,this.tb)}else v("Unable to find CPU component")}z(Tf);var Vf=0;function Uf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){v(d.message+" ("+c+")")}}a.ba=b}
|
||||||
function nc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.ba&&(d=a.ba[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Yf(a,b,c){for(var d=eb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!pb(f)){pb(f,function(){Yf(a,b,c)});return}}b.call(a,c)}
|
function mc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.ba&&(d=a.ba[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Zf(a,b,c){for(var d=db(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!mb(f)){mb(f,function(){Zf(a,b,c)});return}}b.call(a,c)}
|
||||||
function Zf(a,b){var c=new H(a,"1.30.0","validate");if(Wf(c)&&$f(c)){var d=ag(c,"timestamp"),e=b?ag(b,"timestamp"):"unknown";d!=e&&(a.ja("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=Sf.prototype;
|
function $f(a,b){var c=new Tc(a,"1.30.0","validate");if(Xf(c)&&ag(c)){var d=bg(c,"timestamp"),e=b?bg(b,"timestamp"):"unknown";d!=e&&(a.ja("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=Tf.prototype;
|
||||||
m.ub=function(a){void 0===a&&(a=this.B||(this.L?1:Uf));if(!this.w){this.w++;var b=!1,c=!1;this.Z=!1;var d=this.M||new H(this,"1.30.0");if(-1==a)b=!0;else if(a>Uf){if(Wf(d,this.L)){this.D=new H(this,"1.30.0","failsafe");Wf(this.D)&&(bg(this,d),a=2,cg(this.D));I(this.D,"timestamp",qa());dg(this.D);var e=this.B&&!this.K;if(1==a||va("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=$f(d)){var f=ag(d,"code"),h=ag(d,"data");f&&("ok"==f?Wf(d,h):("error"==f&&
|
m.tb=function(a){void 0===a&&(a=this.B||(this.L?1:Vf));if(!this.w){this.w++;var b=!1,c=!1;this.Z=!1;var d=this.M||new Tc(this,"1.30.0");if(-1==a)b=!0;else if(a>Vf){if(Xf(d,this.L)){this.D=new Tc(this,"1.30.0","failsafe");Xf(this.D)&&(cg(this,d),a=2,dg(this.D));I(this.D,"timestamp",qa());eg(this.D);var e=this.B&&!this.K;if(1==a||va("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=ag(d)){var f=bg(d,"code"),h=bg(d,"data");f&&("ok"==f?Xf(d,h):("error"==f&&
|
||||||
"no machine state"!=h?(this.ja("Error: "+h),"unable to verify user"==h&&(za("user",""),this.j=null)):this.g(f+": "+h),cg(d),Wf(d)?(c=$f(d),e=!0):c=!1))}e&&Zf(this,c?d:null)}else 2==a&&d.clear()}else Zf(this);delete this.L;delete this.M}e=eb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=eg(this,h,d,b,c));b=[d,a,c];-1!=a?Yf(this,this.bc,b):this.bc(b)}};
|
"no machine state"!=h?(this.ja("Error: "+h),"unable to verify user"==h&&(za("user",""),this.j=null)):this.g(f+": "+h),dg(d),Xf(d)?(c=ag(d),e=!0):c=!1))}e&&$f(this,c?d:null)}else 2==a&&d.clear()}else $f(this);delete this.L;delete this.M}e=db(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=fg(this,h,d,b,c));b=[d,a,c];-1!=a?Zf(this,this.cc,b):this.cc(b)}};
|
||||||
function eg(a,b,c,d,e){if(!b.C.wa){b.C.wa=!0;if(b.Da){var f=null;e&&((f=ag(c,b.id))||(f=ag(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Da(f,d)&&f&&(v("Unable to restore state for "+b.type),a.P&&!a.aa?(c.clear(),a.B=Uf,window&&window.location.reload()):a.Z=!0,b.Da(null),e=!1)}if(!d&&b.ec)for(a=b.ec.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
function fg(a,b,c,d,e){if(!b.C.wa){b.C.wa=!0;if(b.Da){var f=null;e&&((f=bg(c,b.id))||(f=bg(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Da(f,d)&&f&&(v("Unable to restore state for "+b.type),a.P&&!a.aa?(c.clear(),a.B=Vf,window&&window.location.reload()):a.Z=!0,b.Da(null),e=!1)}if(!d&&b.fc)for(a=b.fc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||||
m.bc=function(a){var b=a[0],c=0>a[1];a=a[2];this.ga=!0;this.C.wa=!0;var d=this.N.power;d&&(d.textContent="Shutdown");this.b&&(eg(this,this.b,b,c,a),this.b.ob());this.Z&&(bg(this,b),b.clear());!c&&this.D&&(this.D.clear(),delete this.D);this.w=0};
|
m.cc=function(a){var b=a[0],c=0>a[1];a=a[2];this.ga=!0;this.C.wa=!0;var d=this.N.power;d&&(d.textContent="Shutdown");this.b&&(fg(this,this.b,b,c,a),this.b.nb());this.Z&&(cg(this,b),b.clear());!c&&this.D&&(this.D.clear(),delete this.D);this.w=0};
|
||||||
function bg(a,b){if(va("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.j||"",d=b.toString(),e={app:"PC8080",ver:"1.30.0"};e.url=a.ea;e.user=c;e.type="bug";e.data=d;sa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
function cg(a,b){if(va("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.j||"",d=b.toString(),e={app:"PC8080",ver:"1.30.0"};e.url=a.ea;e.user=c;e.type="bug";e.data=d;sa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
||||||
function Rf(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new H(a,"1.30.0"),h=new H(a,"1.30.0","validate"),g=qa();I(h,"timestamp",g);I(f,"timestamp",g);I(f,"version","1.30.0");I(f,"url",window?window.location.href:null);I(f,"browser",ta());a.b&&a.b.Ha&&(c&&a.b.pa(),d=a.b.Ha(b,c),"object"===typeof d&&I(f,a.b.id,d),c&&(a.b.C.wa=!1,!1===d&&(e=null)));for(var g=eb(a.id),k=0;k<g.length;k++){var l=g[k];l.C.wa&&(l.Ha&&(d=l.Ha(b,c),"object"===typeof d&&I(f,l.id,d)),c&&(l.C.wa=!1,!1===d&&(e=null)))}e&&
|
function Sf(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new Tc(a,"1.30.0"),h=new Tc(a,"1.30.0","validate"),g=qa();I(h,"timestamp",g);I(f,"timestamp",g);I(f,"version","1.30.0");I(f,"url",window?window.location.href:null);I(f,"browser",ta());a.b&&a.b.Ha&&(c&&a.b.pa(),d=a.b.Ha(b,c),"object"===typeof d&&I(f,a.b.id,d),c&&(a.b.C.wa=!1,!1===d&&(e=null)));for(var g=db(a.id),k=0;k<g.length;k++){var l=g[k];l.C.wa&&(l.Ha&&(d=l.Ha(b,c),"object"===typeof d&&I(f,l.id,d)),c&&(l.C.wa=!1,!1===d&&(e=null)))}e&&
|
||||||
(c?(g=d=!1,b?(a.j&&fg(a,a.j,f.toString()),dg(h)&&dg(f)||(e=null,d=g=!0)):a.B&&(d=!0,g=3==a.B),d&&f.clear(g)):e=f.toString());c&&(a.C.wa=!1,b=a.N.power)&&(b.textContent="Power");a.w=0;return e}m.reset=function(){this.u&&this.u.reset&&(jb(this,"Resetting "+this.u.type),this.u.reset());for(var a=eb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c.reset&&(jb(this,"Resetting "+c.type),c.reset())}};
|
(c?(g=d=!1,b?(a.j&&gg(a,a.j,f.toString()),eg(h)&&eg(f)||(e=null,d=g=!0)):a.B&&(d=!0,g=3==a.B),d&&f.clear(g)):e=f.toString());c&&(a.C.wa=!1,b=a.N.power)&&(b.textContent="Power");a.w=0;return e}m.reset=function(){this.u&&this.u.reset&&(ib(this,"Resetting "+this.u.type),this.u.reset());for(var a=db(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c.reset&&(ib(this,"Resetting "+c.type),c.reset())}};
|
||||||
m.start=function(a,b){for(var c=eb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var c=eb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
m.start=function(a,b){for(var c=db(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var c=db(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||||
m.oa=function(a,b,c){var d=this;switch(b){case "power":return this.N[b]=c,c.onclick=function(){d.w||(d.C.wa?Rf(d,!1,!0):Yf(d,d.ub))},!0;case "reset":return this.N[b]=c,c.onclick=function(){if(d.C.wa&&!d.w)if(d.B&&!d.J){var a=va("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Rf(d,a,!0);!a&&d.P?window&&window.location.reload():d.ub(Uf)}else d.reset(),d.b&&d.b.ob()},!0;case "save":if(ga()){c.parentNode.removeChild(c);break}this.N[b]=
|
m.oa=function(a,b,c){var d=this;switch(b){case "power":return this.N[b]=c,c.onclick=function(){d.w||(d.C.wa?Sf(d,!1,!0):Zf(d,d.tb))},!0;case "reset":return this.N[b]=c,c.onclick=function(){if(d.C.wa&&!d.w)if(d.B&&!d.J){var a=va("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Sf(d,a,!0);!a&&d.P?window&&window.location.reload():d.tb(Vf)}else d.reset(),d.b&&d.b.nb()},!0;case "save":if(ga()){c.parentNode.removeChild(c);break}this.N[b]=
|
||||||
c;c.onclick=function(){var a=Vf(d,!0);if(a){var b=!!(d.B&&!d.J||d.P),c=Rf(d,b);b?fg(d,a,c):d.ja("Resume disabled, machine state not saved")}};return!0}return!1};
|
c;c.onclick=function(){var a=Wf(d,!0);if(a){var b=!!(d.B&&!d.J||d.P),c=Sf(d,b);b?gg(d,a,c):d.ja("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||||
function Vf(a,b){var c=a.j;c||(c=ya("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=gg(a,c))||a.ja("The user ID is invalid."))):b&&a.ja("Browser local storage is not available"));return c}
|
function Wf(a,b){var c=a.j;c||(c=ya("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=hg(a,c))||a.ja("The user ID is invalid."))):b&&a.ja("Browser local storage is not available"));return c}
|
||||||
function gg(a,b){a.j=null;var c=sa(ha()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(za("user",c.data),a.j=c.data)}catch(e){v(e.message+" ("+d+")")}return a.j}function Xf(a){var b=null;a.j&&(b=ha()+"/api/v1/user?req=load&user="+a.j+"&state="+hg(a,"1.30.0"));return b}
|
function hg(a,b){a.j=null;var c=sa(ha()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(za("user",c.data),a.j=c.data)}catch(e){v(e.message+" ("+d+")")}return a.j}function Yf(a){var b=null;a.j&&(b=ha()+"/api/v1/user?req=load&user="+a.j+"&state="+ig(a,"1.30.0"));return b}
|
||||||
function fg(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=hg(a,"1.30.0");d.data=c;b=sa(ha()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ja("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ja(c),za("user",""),a.j=null)}}
|
function gg(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=ig(a,"1.30.0");d.data=c;b=sa(ha()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ja("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ja(c),za("user",""),a.j=null)}}
|
||||||
function vb(a,b,c){a=eb(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}m.wb=function(a){if(this.G.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.G[0];d.ia&&d.ia.focus();!a&&window&&window.scrollTo(b,c)}};m.Ia=function(a){this.b&&this.b.Ia(a);this.I&&this.I.Ia(a)};
|
function ub(a,b,c){a=db(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}m.vb=function(a){if(this.G.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.G[0];d.ia&&d.ia.focus();!a&&window&&window.scrollTo(b,c)}};m.Ia=function(a){this.b&&this.b.Ia(a);this.I&&this.I.Ia(a)};
|
||||||
Ma(function(){for(var a=C(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=z(c),c=C(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=z(f),h=new Sf(h,d,!0);hb(h,f);h.O&&Yf(h,h.ub)}});Da.show.push(function(){for(var a=C(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=gb("Computer",c.id))&&c.ga&&!c.C.wa&&c.ub(-1)}});
|
Ma(function(){for(var a=D(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=C(c),c=D(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=C(f),h=new Tf(h,d,!0);gb(h,f);h.O&&Zf(h,h.tb)}});Da.show.push(function(){for(var a=D(document,"pc8080","computer"),b=0;b<a.length;b++){var c=C(a[b]);(c=fb("Computer",c.id))&&c.ga&&!c.C.wa&&c.tb(-1)}});
|
||||||
Da.exit.push(function(){for(var a=C(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=gb("Computer",c.id))&&c.C.wa&&Rf(c,!(!c.B||c.J),!0)}});function H(a,b,c){this.id=a.id;this.key=hg(a,b,c);this.H=a.H;cg(this,a.Gd)}function hg(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
Da.exit.push(function(){for(var a=D(document,"pc8080","computer"),b=0;b<a.length;b++){var c=C(a[b]);(c=fb("Computer",c.id))&&c.C.wa&&Sf(c,!(!c.B||c.J),!0)}});function Tc(a,b,c){this.id=a.id;this.key=ig(a,b,c);this.H=a.H;dg(this,a.Hd)}function ig(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||||
H.prototype={constructor:H,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){cg(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};
|
Tc.prototype={constructor:Tc,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){dg(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};
|
||||||
function cg(a,b){a[a.id]={};b&&I(a,"parms",b);a.b=!1}function dg(a){var b=!0;if(xa()){var c=JSON.stringify(a[a.id]);za(a.key,c)||(v("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function $f(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){v(c.message||c),b=!1}return b}function Wf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:xa()&&(b=ya(a.key))?(a[a.id]=b,a.b=!0):!1}function ag(a,b){return a[a.id][b]||null}function I(a,b,c){try{a[a.id][b]=c}catch(d){}}var ig=0;
|
function dg(a,b){a[a.id]={};b&&I(a,"parms",b);a.b=!1}function eg(a){var b=!0;if(xa()){var c=JSON.stringify(a[a.id]);za(a.key,c)||(v("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function ag(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){v(c.message||c),b=!1}return b}function Xf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:xa()&&(b=ya(a.key))?(a[a.id]=b,a.b=!0):!1}function bg(a,b){return a[a.id][b]||null}function I(a,b,c){try{a[a.id][b]=c}catch(d){}}var jg=0;
|
||||||
function wg(a,b,c,d,e,f){e("Loading "+a+"...");sa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):xg(g,a,b,c,d,e,f)})}
|
function xg(a,b,c,d,e,f){e("Loading "+a+"...");sa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):yg(g,a,b,c,d,e,f)})}
|
||||||
function xg(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){db(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PC8080$2"),
|
function yg(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){cb(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PC8080$2"),
|
||||||
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(q){g=null,a=q.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?yg(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),
|
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(q){g=null,a=q.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?zg(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),
|
||||||
null)}
|
null)}
|
||||||
function yg(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");sa(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,"");
|
function zg(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");sa(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,"");
|
||||||
a=a.replace(d[0],h);yg(a,b,c)}})}else c(a,null)}
|
a=a.replace(d[0],h);zg(a,b,c)}})}else c(a,null)}
|
||||||
function zg(a,b,c,d){function e(a){if(void 0===g){var b=h&&C(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ka(a))}function f(a){e("Error: "+a);k&&(--ig||Pa(!0));k=!1}var h,g,k=!0;ig++;cb[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=l:q.appendChild(document.createTextNode(l));p.appendChild(q)}c||
|
function Ag(a,b,c,d){function e(a){if(void 0===g){var b=h&&D(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ka(a))}function f(a){e("Error: "+a);k&&(--jg||Pa(!0));k=!1}var h,g,k=!0;jg++;bb[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=l:q.appendChild(document.createTextNode(l));p.appendChild(q)}c||
|
||||||
(c="/versions/pc8080/1.30.0/components.xsl");l=function(d,g){g?wg(c,null,null,!1,e,function(d,k){if(k)if(db(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--ig||Pa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--ig||Pa(!0)):f("invalid machine element: "+
|
(c="/versions/pc8080/1.30.0/components.xsl");l=function(d,g){g?xg(c,null,null,!1,e,function(d,k){if(k)if(cb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--jg||Pa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--jg||Pa(!0)):f("invalid machine element: "+
|
||||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?wg(b,a,d,!0,e,l):xg(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(x){f(x.message)}return k}window.embedPC8080=function(a,b,c,d){Pa(!1);return zg(a,b,c,d)};window.enableEvents=Pa;window.sendEvent=Qa;})();
|
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?xg(b,a,d,!0,e,l):yg(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(x){f(x.message)}return k}window.embedPC8080=function(a,b,c,d){Pa(!1);return Ag(a,b,c,d)};window.enableEvents=Pa;window.sendEvent=Qa;})();
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -8,54 +8,54 @@ function r(a){window&&window.alert(a)}function ya(a){var b=!1;window&&(b=window.
|
||||||
function Ha(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ia(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ja(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
function Ha(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ia(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ja(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||||
function Ka(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var La={init:[],show:[],exit:[]},Ma=!1,Na=!1,Oa=!0;function Pa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Qa(a){La.init.push(a)}
|
function Ka(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var La={init:[],show:[],exit:[]},Ma=!1,Na=!1,Oa=!0;function Pa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Qa(a){La.init.push(a)}
|
||||||
function Ra(a){if(Oa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){r(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function Sa(a){!Oa&&a?(Oa=!0,Ma&&Ta("init"),Na&&Ta("show")):Oa=a}function Ta(a){La[a]&&Ra(La[a])}Pa("onload",function(){Ma=!0;Ra(La.init)});Pa("onpageshow",function(){Na=!0;Ra(La.show)});Pa(Ia("Opera")||Ia("iOS")?"onunload":"onbeforeunload",function(){Ra(La.exit)});
|
function Ra(a){if(Oa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){r(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function Sa(a){!Oa&&a?(Oa=!0,Ma&&Ta("init"),Na&&Ta("show")):Oa=a}function Ta(a){La[a]&&Ra(La[a])}Pa("onload",function(){Ma=!0;Ra(La.init)});Pa("onpageshow",function(){Na=!0;Ra(La.show)});Pa(Ia("Opera")||Ia("iOS")?"onunload":"onbeforeunload",function(){Ra(La.exit)});
|
||||||
function t(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.lb=b.comment;this.Gb=b;b=this.id.indexOf(".");0>b?this.Ya=this.id:(this.mb=this.id.substr(0,b),this.Ya=this.id.substr(b+1));this[a]=c;this.A={ready:!1,Ea:!1,Wa:!1,X:!1,error:!1};this.Va=null;this.A.error=!1;this.K={};this.F=null;this.Y=d||0;u.push(this)}var Ua=void 0,Va={};
|
function t(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.mb=b.comment;this.Hb=b;b=this.id.indexOf(".");0>b?this.Xa=this.id:(this.nb=this.id.substr(0,b),this.Xa=this.id.substr(b+1));this[a]=c;this.A={ready:!1,Da:!1,Va:!1,X:!1,error:!1};this.Ua=null;this.A.error=!1;this.K={};this.F=null;this.Y=d||0;u.push(this)}var Ua=void 0,Va={};
|
||||||
if(window){Ua||(Ua=window.location.search.substr(1));for(var Wa,Xa=/\+/g,Ya=/([^&=]+)=?([^&]*)/g;Wa=Ya.exec(Ua);)Va[decodeURIComponent(Wa[1].replace(Xa," "))]=decodeURIComponent(Wa[2].replace(Xa," "))}function Za(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
if(window){Ua||(Ua=window.location.search.substr(1));for(var Wa,Xa=/\+/g,Ya=/([^&=]+)=?([^&]*)/g;Wa=Ya.exec(Ua);)Va[decodeURIComponent(Wa[1].replace(Xa," "))]=decodeURIComponent(Wa[2].replace(Xa," "))}function Za(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
||||||
function v(a,b){b||(b=t);a.prototype=Za(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var $a=window.PCjs.Machines||(window.PCjs.Machines={}),u=window.PCjs.Components||(window.PCjs.Components=[])}else $a={},u=[];function ab(a,b,c){$a[a]&&b&&($a[a][b]=c)}function bb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<u.length;b++){var d=u[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
function v(a,b){b||(b=t);a.prototype=Za(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var $a=window.PCjs.Machines||(window.PCjs.Machines={}),u=window.PCjs.Components||(window.PCjs.Components=[])}else $a={},u=[];function ab(a,b,c){$a[a]&&b&&($a[a][b]=c)}function bb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<u.length;b++){var d=u[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
||||||
function cb(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<u.length;d++)if(c)c==u[d]&&(c=null);else if(!(a!=u[d].type||b&&u[d].id.indexOf(b)))return u[d]}return null}function w(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){r(c.message+" ("+a+")")}return b}
|
function lb(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<u.length;d++)if(c)c==u[d]&&(c=null);else if(!(a!=u[d].type||b&&u[d].id.indexOf(b)))return u[d]}return null}function w(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){r(c.message+" ("+a+")")}return b}
|
||||||
function mb(a,b){for(var c=y(b.parentNode,"pdp11-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pdp11-binding":(g=w(h))&&g.binding&&a.ha(g.type,g.binding,h,g.value),l=k.length}}}}
|
function mb(a,b){for(var c=z(b.parentNode,"pdp11-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pdp11-binding":(g=w(h))&&g.binding&&a.ha(g.type,g.binding,h,g.value),l=k.length}}}}
|
||||||
function y(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
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}
|
||||||
t.prototype={constructor:t,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ha:function(a,b,c){switch(b){case "clear":return this.K[b]||(this.K[b]=c,c.onclick=function(a){return function(){a.K.print&&(a.K.print.value="")}}(this)),!0;case "print":return this.K[b]||(this.ya=this.K[b]=c,c.value="",this.u=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
t.prototype={constructor:t,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ha:function(a,b,c){switch(b){case "clear":return this.K[b]||(this.K[b]=c,c.onclick=function(a){return function(){a.K.print&&(a.K.print.value="")}}(this)),!0;case "print":return this.K[b]||(this.ya=this.K[b]=c,c.value="",this.u=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||||
this.ea=function(a){this.u(a,this.Ya)}),!0;default:return!1}},log:function(){},u:function(){},status:function(a){this.u(this.Ya+": "+a)},ea:function(a,b,c){c=c||this.type;b||r((c?c+": ":"")+a)},sa:function(){return this.A.X=!0},ra:function(a,b){b&&(this.A.X=!1);return!0}};function nb(a,b){if(a.F){a===a.F?b|=0:b=b||a.Y;var c=a.F.Y&b;return!!b&&c===b||!!(c&a.F.Ab)}return!1}
|
this.ea=function(a){this.u(a,this.Xa)}),!0;default:return!1}},log:function(){},u:function(){},status:function(a){this.u(this.Xa+": "+a)},ea:function(a,b,c){c=c||this.type;b||r((c?c+": ":"")+a)},sa:function(){return this.A.X=!0},ra:function(a,b){b&&(this.A.X=!1);return!0}};function nb(a,b){if(a.F){a===a.F?b|=0:b=b||a.Y;var c=a.F.Y&b;return!!b&&c===b||!!(c&a.F.Bb)}return!1}
|
||||||
function ob(a,b){if(a.A.Wa)return a.A.Ea&&(a.A.Ea=!1),a.A.Wa=!1;if(a.A.error)return a.u(a.toString()+" error"),!1;a.A.Ea=b;return a.A.Ea}function pb(a,b){a.A.Ea&&(b?a.A.Wa=!0:void 0===b&&a.u(a.toString()+" busy"));return a.A.Ea}function A(a){if(!a.A.error&&(a.A.ready=!0,a.A.ready)){var b=a.Va;a.Va=null;b&&b()}}function qb(a,b){b&&(a.A.ready?b():a.Va=b);return a.A.ready}function rb(a,b){a.A.error=!0;a.ea(b)}
|
function ob(a,b){if(a.A.Va)return a.A.Da&&(a.A.Da=!1),a.A.Va=!1;if(a.A.error)return a.u(a.toString()+" error"),!1;a.A.Da=b;return a.A.Da}function pb(a,b){a.A.Da&&(b?a.A.Va=!0:void 0===b&&a.u(a.toString()+" busy"));return a.A.Da}function A(a){if(!a.A.error&&(a.A.ready=!0,a.A.ready)){var b=a.Ua;a.Ua=null;b&&b()}}function qb(a,b){b&&(a.A.ready?b():a.Ua=b);return a.A.ready}function rb(a,b){a.A.error=!0;a.ea(b)}
|
||||||
var sb="undefined"!==typeof ArrayBuffer,C={cpu:1,bus:64,mem:128,keyboard:65536,key:131072,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function tb(a){t.call(this,"Panel",a,tb)}v(tb);m=tb.prototype;m.ha=function(a,b,c,d){return this.D&&this.D.ha(a,b,c,d)||this.b&&this.b.ha(a,b,c,d)||this.F&&this.F.ha(a,b,c,d)?!0:this.parent.ha.call(this,a,b,c,d)};m.za=function(a,b,c,d){this.D=a;this.H=b;this.b=c;this.F=d};
|
var sb="undefined"!==typeof ArrayBuffer,C={cpu:1,bus:64,mem:128,keyboard:65536,key:131072,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function tb(a){t.call(this,"Panel",a,tb)}v(tb);m=tb.prototype;m.ha=function(a,b,c,d){return this.D&&this.D.ha(a,b,c,d)||this.b&&this.b.ha(a,b,c,d)||this.F&&this.F.ha(a,b,c,d)?!0:this.parent.ha.call(this,a,b,c,d)};m.za=function(a,b,c,d){this.D=a;this.H=b;this.b=c;this.F=d};
|
||||||
m.sa=function(a,b){b||ub();return!0};m.ra=function(){return!0};m.ia=function(){};function ub(){for(var a=!1,b=y(document,"pdp11","panel"),c=0;c<b.length;c++){var d=b[c],e=w(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<u.length;h++)if(u[h].id===f){f=u[h];break a}f=null}f||(a=!0,f=new tb(e));mb(f,d);a&&A(f)}}Qa(ub);
|
m.sa=function(a,b){b||ub();return!0};m.ra=function(){return!0};m.ia=function(){};function ub(){for(var a=!1,b=z(document,"pdp11","panel"),c=0;c<b.length;c++){var d=b[c],e=w(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<u.length;h++)if(u[h].id===f){f=u[h];break a}f=null}f||(a=!0,f=new tb(e));mb(f,d);a&&A(f)}}Qa(ub);
|
||||||
function vb(a,b,c){t.call(this,"Bus",a,vb);this.b=b;this.F=c;this.w=a.busWidth||16;this.D=Math.pow(2,this.w);this.j=this.D-1|0;this.aa=16>=this.w?10:20>=this.w?12:24>=this.w?14:15;this.la=1<<this.aa;this.C=this.la>>2;this.i=this.la-1;this.H=this.D/this.la|0;this.G=this.H-1;a=new D;wb(a,this.F);this.P=Array(this.H);for(b=0;b<this.H;b++)this.P[b]=a;A(this)}v(vb);vb.prototype.reset=function(){};vb.prototype.sa=function(a,b){b||this.reset();return!0};
|
function vb(a,b,c){t.call(this,"Bus",a,vb);this.b=b;this.F=c;this.w=a.busWidth||16;this.D=Math.pow(2,this.w);this.j=this.D-1|0;this.aa=16>=this.w?10:20>=this.w?12:24>=this.w?14:15;this.la=1<<this.aa;this.C=this.la>>2;this.i=this.la-1;this.H=this.D/this.la|0;this.G=this.H-1;a=new D;wb(a,this.F);this.P=Array(this.H);for(b=0;b<this.H;b++)this.P[b]=a;A(this)}v(vb);vb.prototype.reset=function(){};vb.prototype.sa=function(a,b){b||this.reset();return!0};
|
||||||
function xb(a,b,c,d){for(var e=b,f=c,h=e>>>a.aa;0<f&&h<a.P.length;){var g=a.P[h],k=h*a.la,l=a.la-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==d){if(e+f<=g.B)return g.Ta+=g.B-e,g.B=e,!0;if(e>=g.B+g.Ta){l=g.size-(e-k);l>f&&(l=f);g.Ta=e-g.B+l;e=k+a.la;f-=l;h++;continue}}return yb(1,e,f)}e=new D(e,l,a.la,d);wb(e,a.F,g);a.P[h++]=e;e=k+a.la;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+zb[d]+" at "+ea(b)),!0):yb(2,b,c)}function Ab(a,b){return a.P[(b&a.j)>>>a.aa].Ra(b&a.i,b)}
|
function xb(a,b,c,d){for(var e=b,f=c,h=e>>>a.aa;0<f&&h<a.P.length;){var g=a.P[h],k=h*a.la,l=a.la-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==d){if(e+f<=g.B)return g.Sa+=g.B-e,g.B=e,!0;if(e>=g.B+g.Sa){l=g.size-(e-k);l>f&&(l=f);g.Sa=e-g.B+l;e=k+a.la;f-=l;h++;continue}}return yb(1,e,f)}e=new D(e,l,a.la,d);wb(e,a.F,g);a.P[h++]=e;e=k+a.la;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+zb[d]+" at "+ea(b)),!0):yb(2,b,c)}function Ab(a,b){return a.P[(b&a.j)>>>a.aa].Qa(b&a.i,b)}
|
||||||
function yb(a,b,c){r("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Bb;if(sb){var Nb=new ArrayBuffer(2);(new DataView(Nb)).setUint16(0,256,!0);Bb=256===(new Uint16Array(Nb))[0]}else Bb=!1;var Ob=Bb;
|
function yb(a,b,c){r("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Bb;if(sb){var Nb=new ArrayBuffer(2);(new DataView(Nb)).setUint16(0,256,!0);Bb=256===(new Uint16Array(Nb))[0]}else Bb=!1;var Ob=Bb;
|
||||||
function D(a,b,c,d){this.id=Pb+=2;this.b=null;this.B=a;this.Ta=b;this.size=c||0;this.type=d||Qb;this.C=d==Rb;wb(this);this.va=this.Cb=!1;if(c)if(sb)this.K=new ArrayBuffer(c),this.D=new DataView(this.K,0,c),this.i=new Uint8Array(this.K,0,c),this.L=new Uint16Array(this.K,0,c>>1),this.b=new Int32Array(this.K,0,c>>2),Sb(this,Ob?Tb:Ub);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Sb(this,Vb)}else Sb(this)}var Qb=0,Rb=2,zb=["NONE","RAM","ROM","VID","H/W"],Pb=0;
|
function D(a,b,c,d){this.id=Pb+=2;this.b=null;this.B=a;this.Sa=b;this.size=c||0;this.type=d||Qb;this.C=d==Rb;wb(this);this.va=this.Db=!1;if(c)if(sb)this.K=new ArrayBuffer(c),this.D=new DataView(this.K,0,c),this.i=new Uint8Array(this.K,0,c),this.L=new Uint16Array(this.K,0,c>>1),this.b=new Int32Array(this.K,0,c>>2),Sb(this,Ob?Tb:Ub);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Sb(this,Vb)}else Sb(this)}var Qb=0,Rb=2,zb=["NONE","RAM","ROM","VID","H/W"],Pb=0;
|
||||||
D.prototype={constructor:D,parent:null,save:function(){var a,b;if(sb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.D.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(sb)for(b=0;b<a.length;b++)this.D.setInt32(b<<2,a[b],!0);else this.b=a;return this.va=!0}return!1},xa:function(a,b){b?0===this.w++&&Wb(this,Xb,!1):0===this.j++&&Yb(this,Xb,!1)},M:function(){this.F&&nb(this.F,129)&&this.F.message("attempt to read invalid block %"+q(this.B),!0);
|
D.prototype={constructor:D,parent:null,save:function(){var a,b;if(sb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.D.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(sb)for(b=0;b<a.length;b++)this.D.setInt32(b<<2,a[b],!0);else this.b=a;return this.va=!0}return!1},xa:function(a,b){b?0===this.w++&&Wb(this,Xb,!1):0===this.j++&&Yb(this,Xb,!1)},M:function(){this.F&&nb(this.F,129)&&this.F.message("attempt to read invalid block %"+q(this.B),!0);
|
||||||
return 255},H:function(a,b){this.F&&nb(this.F,129)&&this.F.message("attempt to write "+ea(b)+" to invalid block %"+q(this.B),!0)},V:function(a,b){return this.G(a++,b++)|this.G(a,b)<<8},oa:function(a,b,c){this.J(a++,b&255,c++);this.J(a,b>>8,c)},S:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},$:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},ga:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.va=!0},na:function(a,b){var c=
|
return 255},H:function(a,b){this.F&&nb(this.F,129)&&this.F.message("attempt to write "+ea(b)+" to invalid block %"+q(this.B),!0)},V:function(a,b){return this.G(a++,b++)|this.G(a,b)<<8},oa:function(a,b,c){this.J(a++,b&255,c++);this.J(a,b>>8,c)},S:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},$:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},ga:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.va=!0},na:function(a,b){var c=
|
||||||
a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.va=!0},O:function(a,b){if(this.F&&null!=this.B){var c=this.F;Zb(c,this.B+a,1,c.O)&&c.ba(!0)}return this.Ra(a,b)},U:function(a,b){if(this.F&&null!=this.B){var c=this.F;Zb(c,this.B+a,2,c.O)&&c.ba(!0)}return this.ub(a,b)},da:function(a,b,c){if(this.F&&null!=this.B){var d=this.F;Zb(d,this.B+a,1,d.C)&&d.ba(!0)}this.C?this.H(a,b,c):this.Ja(a,b,c)},ka:function(a,b,c){if(this.F&&
|
a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.va=!0},O:function(a,b){if(this.F&&null!=this.B){var c=this.F;Zb(c,this.B+a,1,c.O)&&c.ba(!0)}return this.Qa(a,b)},U:function(a,b){if(this.F&&null!=this.B){var c=this.F;Zb(c,this.B+a,2,c.O)&&c.ba(!0)}return this.vb(a,b)},da:function(a,b,c){if(this.F&&null!=this.B){var d=this.F;Zb(d,this.B+a,1,d.C)&&d.ba(!0)}this.C?this.H(a,b,c):this.Ia(a,b,c)},ka:function(a,b,c){if(this.F&&
|
||||||
null!=this.B){var d=this.F;Zb(d,this.B+a,2,d.C)&&d.ba(!0)}this.C?this.H(a,b,c):this.xb(a,b,c)},N:function(a){return this.i[a]},R:function(a){return this.i[a]},T:function(a){return this.D.getUint16(a,!0)},W:function(a){return a&1?this.i[a]|this.i[a+1]<<8:this.L[a>>1]},ca:function(a,b){this.i[a]=b;this.va=!0},fa:function(a,b){this.i[a]=b;this.va=!0},ja:function(a,b){this.D.setUint16(a,b,!0);this.va=!0},pa:function(a,b){a&1?(this.i[a]=b,this.i[a+1]=b>>8):this.L[a>>1]=b;this.va=!0}};
|
null!=this.B){var d=this.F;Zb(d,this.B+a,2,d.C)&&d.ba(!0)}this.C?this.H(a,b,c):this.yb(a,b,c)},N:function(a){return this.i[a]},R:function(a){return this.i[a]},T:function(a){return this.D.getUint16(a,!0)},W:function(a){return a&1?this.i[a]|this.i[a+1]<<8:this.L[a>>1]},ca:function(a,b){this.i[a]=b;this.va=!0},fa:function(a,b){this.i[a]=b;this.va=!0},ja:function(a,b){this.D.setUint16(a,b,!0);this.va=!0},pa:function(a,b){a&1?(this.i[a]=b,this.i[a+1]=b>>8):this.L[a>>1]=b;this.va=!0}};
|
||||||
function wb(a,b,c){a.F=b;a.j=a.w=0;c&&((a.j=c.j)&&Yb(a,Xb,!1),(a.w=c.w)&&Wb(a,Xb,!1))}function $b(a,b){b?0===--a.w&&(a.J=a.C?a.H:a.Ja):0===--a.j&&(a.G=a.Ra)}function Wb(a,b,c){c&&a.w||(a.J=!a.C&&b[2]||a.H);if(c||void 0===c)a.Ja=b[2]||a.H,a.xb=b[3]||a.oa}function Yb(a,b,c){c&&a.j||(a.G=b[0]||a.M);if(c||void 0===c)a.Ra=b[0]||a.M,a.ub=b[1]||a.V}function Sb(a,b){b||(b=ac);Yb(a,b,void 0);Wb(a,b,void 0)}
|
function wb(a,b,c){a.F=b;a.j=a.w=0;c&&((a.j=c.j)&&Yb(a,Xb,!1),(a.w=c.w)&&Wb(a,Xb,!1))}function $b(a,b){b?0===--a.w&&(a.J=a.C?a.H:a.Ia):0===--a.j&&(a.G=a.Qa)}function Wb(a,b,c){c&&a.w||(a.J=!a.C&&b[2]||a.H);if(c||void 0===c)a.Ia=b[2]||a.H,a.yb=b[3]||a.oa}function Yb(a,b,c){c&&a.j||(a.G=b[0]||a.M);if(c||void 0===c)a.Qa=b[0]||a.M,a.vb=b[1]||a.V}function Sb(a,b){b||(b=ac);Yb(a,b,void 0);Wb(a,b,void 0)}
|
||||||
var ac=[],Vb=[D.prototype.S,D.prototype.$,D.prototype.ga,D.prototype.na],Xb=[D.prototype.O,D.prototype.U,D.prototype.da,D.prototype.ka];if(sb)var Ub=[D.prototype.N,D.prototype.T,D.prototype.ca,D.prototype.ja],Tb=[D.prototype.R,D.prototype.W,D.prototype.fa,D.prototype.pa];
|
var ac=[],Vb=[D.prototype.S,D.prototype.$,D.prototype.ga,D.prototype.na],Xb=[D.prototype.O,D.prototype.U,D.prototype.da,D.prototype.ka];if(sb)var Ub=[D.prototype.N,D.prototype.T,D.prototype.ca,D.prototype.ja],Tb=[D.prototype.R,D.prototype.W,D.prototype.fa,D.prototype.pa];
|
||||||
function bc(a,b){t.call(this,"CPU",a,bc,1);var c=a.multiplier||1;this.$a=a.cycles||b;this.Ba=c;this.La=Math.round(this.$a/1E4)/100;this.Aa=this.La*this.Ba;this.A.Z=!1;this.A.cb=!1;this.A.Ka=a.autoStart;this.A.hb=!1;this.A.Fa=!1;this.Oa=this.ca=0;this.Pa=a.csStart;this.Ga=a.csInterval;this.Ha=a.csStop;this.oa=[];this.Fb=this.Ca.bind(this);A(this)}v(bc);var cc=["power","reset"];m=bc.prototype;
|
function bc(a,b){t.call(this,"CPU",a,bc,1);var c=a.multiplier||1;this.$a=a.cycles||b;this.Ba=c;this.La=Math.round(this.$a/1E4)/100;this.Aa=this.La*this.Ba;this.A.Z=!1;this.A.cb=!1;this.A.Ja=a.autoStart;this.A.ib=!1;this.A.Ea=!1;this.Na=this.ca=0;this.Oa=a.csStart;this.Fa=a.csInterval;this.Ga=a.csStop;this.oa=[];this.Gb=this.Ca.bind(this);A(this)}v(bc);var cc=["power","reset"];m=bc.prototype;
|
||||||
m.za=function(a,b,c,d){this.D=a;this.H=b;this.F=d;for(b=0;b<cc.length;b++)(c=this.K[cc[b]])&&this.D.ha(null,cc[b],c);this.ja=null;a=dc(a,"autoStart");null!=a&&(this.A.Ka="true"==a?!0:"false"==a?!1:!!a);A(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
|
m.za=function(a,b,c,d){this.D=a;this.H=b;this.F=d;for(b=0;b<cc.length;b++)(c=this.K[cc[b]])&&this.D.ha(null,cc[b],c);this.ja=null;a=dc(a,"autoStart");null!=a&&(this.A.Ja="true"==a?!0:"false"==a?!1:!!a);A(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
|
||||||
m.sa=function(a,b){if(!b){if(a&&this.restore){ec(this);if(!this.restore(a))return!1;fc(this)}else this.reset();if(this.F){var c=this.F;c.u("Type ? for help with PDP11 Debugger commands");c.ia();if(c.ka){var d=c.ka;c.ka=null;gc(c,d)}}else this.u("No debugger detected")}F(this);return!0};m.ra=function(a){return a?this.save():!0};m.Ka=function(){return this.A.Ka||!this.F&&void 0===this.K.run?(this.Ca(!0),!0):!1};m.jb=function(){return 0};
|
m.sa=function(a,b){if(!b){if(a&&this.restore){ec(this);if(!this.restore(a))return!1;fc(this)}else this.reset();if(this.F){var c=this.F;c.u("Type ? for help with PDP11 Debugger commands");c.ia();if(c.ka){var d=c.ka;c.ka=null;gc(c,d)}}else this.u("No debugger detected")}F(this);return!0};m.ra=function(a){return a?this.save():!0};m.Ja=function(){return this.A.Ja||!this.F&&void 0===this.K.run?(this.Ca(!0),!0):!1};m.kb=function(){return 0};
|
||||||
function fc(a){void 0===a.Pa&&(a.Pa=0);void 0===a.Ga&&(a.Ga=-1);void 0===a.Ha&&(a.Ha=-1);a.A.Fa=0<=a.Pa&&0<a.Ga;a.A.Fa&&(a.Oa=0,a.ca=a.Pa-a.V)}function hc(a,b){if(a.A.Fa){var c=!1;a.Oa=a.Oa+a.jb()|0;a.ca-=b;0>=a.ca&&(a.ca+=a.Ga,c=!0);0<=a.Ha&&a.Ha<=ic(a)&&(a.Ga=a.Ha=-1,fc(a),a.ba(),c=!0);c&&a.u(ic(a)+" cycles: checksum="+q(a.Oa))}}
|
function fc(a){void 0===a.Oa&&(a.Oa=0);void 0===a.Fa&&(a.Fa=-1);void 0===a.Ga&&(a.Ga=-1);a.A.Ea=0<=a.Oa&&0<a.Fa;a.A.Ea&&(a.Na=0,a.ca=a.Oa-a.V)}function hc(a,b){if(a.A.Ea){var c=!1;a.Na=a.Na+a.kb()|0;a.ca-=b;0>=a.ca&&(a.ca+=a.Fa,c=!0);0<=a.Ga&&a.Ga<=ic(a)&&(a.Fa=a.Ga=-1,fc(a),a.ba(),c=!0);c&&a.u(ic(a)+" cycles: checksum="+q(a.Na))}}
|
||||||
function jc(a,b,c,d){a.K[b]&&(void 0===c&&(rb(a,"Value for "+b+" is invalid"),a.ba()),c=!a.A.Z||a.A.hb?q(c,d):"--------".substr(0,d),a.K[b].textContent!=c&&(a.K[b].textContent=c))}
|
function jc(a,b,c,d){a.K[b]&&(void 0===c&&(rb(a,"Value for "+b+" is invalid"),a.ba()),c=!a.A.Z||a.A.ib?q(c,d):"--------".substr(0,d),a.K[b].textContent!=c&&(a.K[b].textContent=c))}
|
||||||
m.ha=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.K[b]=c;a=!0;break;case "run":this.K[b]=c;c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.A.X)a=!0;else{var b=null,c,g=bb(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.A.ready);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.A.X);c++);c==g.length&&(b=a);r("The "+b.type+" component ("+b.id+") is not "+(b.A.ready?"powered yet":"ready yet"+(b.Va?" (waiting for notification)":""))+".");a=!1}a&&(d.A.Z?d.ba():d.Ca())};a=!0;
|
m.ha=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.K[b]=c;a=!0;break;case "run":this.K[b]=c;c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.A.X)a=!0;else{var b=null,c,g=bb(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.A.ready);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.A.X);c++);c==g.length&&(b=a);r("The "+b.type+" component ("+b.id+") is not "+(b.A.ready?"powered yet":"ready yet"+(b.Ua?" (waiting for notification)":""))+".");a=!1}a&&(d.A.Z?d.ba():d.Ca())};a=!0;
|
||||||
break;case "speed":this.K[b]=c;a=!0;break;case "setSpeed":this.K[b]=c,c.onclick=function(){kc(d,d.Ba<<1,!0)},c.textContent=this.Aa.toFixed(2)+"Mhz",a=!0}return a};function lc(a,b,c){a.V+=b;c&&(a.U=a.R=0)}function mc(a,b){var c=1;b&&1<a.Ba&&a.S&&(c=a.S/a.La);a.rb=Math.round(1E3/30);a.wa=Math.floor(a.$a/30*c);b||(a.da=a.wa);a.ab=0}function ic(a){return a.V+a.O+a.U-a.R}function ec(a){a.S=0;a.sb=0;a.V=a.O=a.U=a.R=0;fc(a);kc(a,1)}
|
break;case "speed":this.K[b]=c;a=!0;break;case "setSpeed":this.K[b]=c,c.onclick=function(){kc(d,d.Ba<<1,!0)},c.textContent=this.Aa.toFixed(2)+"Mhz",a=!0}return a};function lc(a,b,c){a.V+=b;c&&(a.U=a.R=0)}function mc(a,b){var c=1;b&&1<a.Ba&&a.S&&(c=a.S/a.La);a.sb=Math.round(1E3/30);a.wa=Math.floor(a.$a/30*c);b||(a.da=a.wa);a.ab=0}function ic(a){return a.V+a.O+a.U-a.R}function ec(a){a.S=0;a.tb=0;a.V=a.O=a.U=a.R=0;fc(a);kc(a,1)}
|
||||||
function kc(a,b,c){var d=!1;if(void 0!==b){.8>a.S/a.Aa?b=1:d=!0;a.Ba=b;b=a.La*a.Ba;if(a.Aa!=b){a.Aa=b;b=a.Aa.toFixed(2)+"Mhz";var e=a.K.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.D&&a.D.Sa()}lc(a,a.O);a.O=0;a.N=ua();a.T=0;mc(a);return d}function zc(a){a.U-=a.R;a.R=0}
|
function kc(a,b,c){var d=!1;if(void 0!==b){.8>a.S/a.Aa?b=1:d=!0;a.Ba=b;b=a.La*a.Ba;if(a.Aa!=b){a.Aa=b;b=a.Aa.toFixed(2)+"Mhz";var e=a.K.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.D&&a.D.Ra()}lc(a,a.O);a.O=0;a.N=ua();a.T=0;mc(a);return d}function nc(a){a.U-=a.R;a.R=0}
|
||||||
m.Ca=function(a){if(ob(this,!0)){if(!this.A.Z){kc(this);this.D&&this.D.start(this.N,ic(this));this.A.Z=!0;this.A.cb=!0;this.ja&&this.ja.start();var b=this.K.run;b&&(b.textContent="Halt");this.D&&(this.D.ia(!0),a&&this.D.Sa(!0))}this.ab>=this.$a&&mc(this,!0);this.ka=0;this.na=ua();this.T&&(a=this.na-this.T,a>this.rb&&(this.N+=a,this.N>this.na&&(this.N=this.na)));try{do{for(var c=this.A.Fa?1:this.wa,d=this.oa.length-1;0<=d;d--){var e=this.oa[d];0>e[0]||c>e[0]&&(c=e[0])}this.Ia(c);var f=this.U-this.R;
|
m.Ca=function(a){if(ob(this,!0)){if(!this.A.Z){kc(this);this.D&&this.D.start(this.N,ic(this));this.A.Z=!0;this.A.cb=!0;this.ja&&this.ja.start();var b=this.K.run;b&&(b.textContent="Halt");this.D&&(this.D.ia(!0),a&&this.D.Ra(!0))}this.ab>=this.$a&&mc(this,!0);this.ka=0;this.na=ua();this.T&&(a=this.na-this.T,a>this.sb&&(this.N+=a,this.N>this.na&&(this.N=this.na)));try{do{for(var c=this.A.Ea?1:this.wa,d=this.oa.length-1;0<=d;d--){var e=this.oa[d];0>e[0]||c>e[0]&&(c=e[0])}this.Ha(c);var f=this.U-this.R;
|
||||||
a=f;for(var h=this.oa.length-1;0<=h;h--){var g=this.oa[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.ka+=f;this.O+=f;lc(this,0,!0);hc(this,f);this.da-=f;if(0>=this.da){this.da+=this.wa;15<=++this.sb&&(this.D&&this.D.ia(),this.sb=0);break}}while(this.A.Z)}catch(k){this.ba();F(this);this.D&&this.D.stop(ua(),ic(this));ob(this,!1);rb(this,k.stack||k.message);return}c=setTimeout;d=this.Fb;this.T=ua();e=this.rb;this.ka&&(e=Math.round(e*this.ka/this.wa));e=e-(this.T-this.na);if(f=this.T-this.N)this.S=
|
a=f;for(var h=this.oa.length-1;0<=h;h--){var g=this.oa[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.ka+=f;this.O+=f;lc(this,0,!0);hc(this,f);this.da-=f;if(0>=this.da){this.da+=this.wa;15<=++this.tb&&(this.D&&this.D.ia(),this.tb=0);break}}while(this.A.Z)}catch(k){this.ba();F(this);this.D&&this.D.stop(ua(),ic(this));ob(this,!1);rb(this,k.stack||k.message);return}c=setTimeout;d=this.Gb;this.T=ua();e=this.sb;this.ka&&(e=Math.round(e*this.ka/this.wa));e=e-(this.T-this.na);if(f=this.T-this.N)this.S=
|
||||||
Math.round(this.O/(10*f))/100,864E5<=f&&(this.V=0,kc(this));if(0>e||this.S<this.Aa)-1E3>e&&(this.N-=e),e=0;this.ab+=this.ka;this.T+=e;c(d,e)}else F(this),this.D&&this.D.stop(ua(),ic(this))};m.Ia=function(){return 0};m.ba=function(a){pb(this,!0);zc(this);lc(this,this.O);this.O=0;if(this.A.Z){this.A.Z=!1;this.ja&&this.ja.stop();var b=this.K.run;b&&(b.textContent="Run")}this.A.complete=a};function F(a,b){a.D&&a.D.ia(b)}
|
Math.round(this.O/(10*f))/100,864E5<=f&&(this.V=0,kc(this));if(0>e||this.S<this.Aa)-1E3>e&&(this.N-=e),e=0;this.ab+=this.ka;this.T+=e;c(d,e)}else F(this),this.D&&this.D.stop(ua(),ic(this))};m.Ha=function(){return 0};m.ba=function(a){pb(this,!0);nc(this);lc(this,this.O);this.O=0;if(this.A.Z){this.A.Z=!1;this.ja&&this.ja.stop();var b=this.K.run;b&&(b.textContent="Run")}this.A.complete=a};function F(a,b){a.D&&a.D.ia(b)}
|
||||||
function Ac(a){this.ob=+a.model||1170;bc.call(this,a,1E6);this.kb=0;this.w=65536;this.i=this.b=32768;this.j=65535;this.I=15;this.g=[0,0,0,0,0,0,0,0];this.wb=[0,0,0,0,0,0];this.fa=[0,0,0,0];this.memory=[];this.J=[];this.bb=this.tb=0;this.W=2;this.$=255;this.G=0;this.ga=-1;this.qb=this.Ma=this.pb=this.C=this.Da=this.M=this.L=0;this.pa=[7,7,7,7];this.Na=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535,65535,
|
function Ac(a){this.pb=+a.model||1170;bc.call(this,a,1E6);this.lb=0;this.w=65536;this.i=this.b=32768;this.j=65535;this.I=15;this.g=[0,0,0,0,0,0,0,0];this.xb=[0,0,0,0,0,0];this.fa=[0,0,0,0];this.memory=[];this.J=[];this.bb=this.ub=0;this.W=2;this.$=255;this.G=0;this.ga=-1;this.rb=this.Ma=this.qb=this.C=this.Ka=this.M=this.L=0;this.pa=[7,7,7,7];this.Za=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535,65535,
|
||||||
65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.Hb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.A.complete=this.A.Bb=!1}v(Ac,bc);m=Ac.prototype;m.reset=function(){this.A.Z&&this.ba();Bc(this);ec(this);this.A.error=!1;this.parent.reset.call(this)};
|
65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.Ib=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.A.complete=this.A.Cb=!1}v(Ac,bc);m=Ac.prototype;m.reset=function(){this.A.Z&&this.ba();Bc(this);ec(this);this.A.error=!1;this.parent.reset.call(this)};
|
||||||
function Bc(a){a.$=255;a.J=[];a.tb=0;a.L=a.M=a.Da=a.pb=0;a.pa[0]=a.pa[1]=a.pa[3]=7;a.Ma=0}m.jb=function(){return 0};m.save=function(){var a=new G(this);H(a,0,[]);H(a,1,[this.nb,this.V,this.Ba]);for(var b=this.H,c=0,d=[],e=0;e<b.H;e++){var f=b.P[e];if(f.va||f.Cb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var n=f[g],p=g+1;p<f.length&&f[p]===n;)p++;l[k++]=p-g;l[k++]=n;g=p}if(l.length<f.length){f=l;break a}}d[h]=f}}H(a,2,d);return a.data()};
|
function Bc(a){a.$=255;a.J=[];a.ub=0;a.L=a.M=a.Ka=a.qb=0;a.pa[0]=a.pa[1]=a.pa[3]=7;a.Ma=0}m.kb=function(){return 0};m.save=function(){var a=new G(this);H(a,0,[]);H(a,1,[this.ob,this.V,this.Ba]);for(var b=this.H,c=0,d=[],e=0;e<b.H;e++){var f=b.P[e];if(f.va||f.Db){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var n=f[g],p=g+1;p<f.length&&f[p]===n;)p++;l[k++]=p-g;l[k++]=n;g=p}if(l.length<f.length){f=l;break a}}d[h]=f}}H(a,2,d);return a.data()};
|
||||||
m.restore=function(a){var b=a[1];this.nb=b[0];this.V=b[1];kc(this,b[3]);a:{b=this.H;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.C){for(var f=0,h=Array(b.C),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.P[d];if(!f||!f.restore(e)){r("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
m.restore=function(a){var b=a[1];this.ob=b[0];this.V=b[1];kc(this,b[3]);a:{b=this.H;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.C){for(var f=0,h=Array(b.C),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.P[d];if(!f||!f.restore(e)){r("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||||
m.ha=function(a,b,c){var d=!1;switch(b){case "PC":case "PSW":case "SF":case "ZF":case "CF":this.K[b]=c;this.kb++;d=!0;break;default:d=this.parent.ha.call(this,a,b,c)}return d};m.ia=function(a){this.kb&&(a||!this.A.Z||this.A.hb)&&(a=this.I&-14|0|(this.ta&255?0:4)|(this.ta&256?1:0),jc(this,"PSW",a,4),jc(this,"SF",a&8?1:0,1),jc(this,"ZF",a&4?1:0,1),jc(this,"CF",a&1?1:0,1));if(a=this.K.speed)a.textContent=this.A.Z&&this.S?this.S.toFixed(2)+"Mhz":"Stopped"};
|
m.ha=function(a,b,c){var d=!1;switch(b){case "PC":case "PSW":case "SF":case "ZF":case "CF":this.K[b]=c;this.lb++;d=!0;break;default:d=this.parent.ha.call(this,a,b,c)}return d};m.ia=function(a){this.lb&&(a||!this.A.Z||this.A.ib)&&(a=this.I&-14|0|(this.ta&255?0:4)|(this.ta&256?1:0),jc(this,"PSW",a,4),jc(this,"SF",a&8?1:0,1),jc(this,"ZF",a&4?1:0,1),jc(this,"CF",a&1?1:0,1));if(a=this.K.speed)a.textContent=this.A.Z&&this.S?this.S.toFixed(2)+"Mhz":"Stopped"};
|
||||||
function Cc(a,b){var c,d;a.b=b<<12;a.j=~b&4;a.i=b<<14;a.w=b<<16;if((b^a.I)&2048)for(c=0;6>c;c++)d=a.g[c],a.g[c]=a.wb[c],a.wb[c]=d;(a.C=b>>14&3)!==(a.I>>14&3)&&(a.fa[d]=a.g[6],a.g[6]=a.fa[a.C]);a.W=2;a.I=b}
|
function Cc(a,b){var c,d;a.b=b<<12;a.j=~b&4;a.i=b<<14;a.w=b<<16;if((b^a.I)&2048)for(c=0;6>c;c++)d=a.g[c],a.g[c]=a.xb[c],a.xb[c]=d;(a.C=b>>14&3)!==(a.I>>14&3)&&(a.fa[d]=a.g[6],a.g[6]=a.fa[a.C]);a.W=2;a.I=b}
|
||||||
function I(a,b){var c,d,e=0;0>a.ga?(a.I=a.I&63728|a.b>>12&8|a.i>>14&2|a.w>>16&1,a.j&65535||(a.I|=4),a.ga=a.I):a.C||(b=4,e=1);a.L&57344||(a.M=63222);a.C=0;0<=(c=L(a,b|65536))&&0<=(d=L(a,b+2&65535|65536))&&(Cc(a,d&53247|a.ga>>2&12288),e&&(a.g[6]=4),0<=Dc(a,a.ga)&&0<=Dc(a,a.g[7])&&(a.g[7]=c));a.G=0;return a.ga=-1}
|
function I(a,b){var c,d,e=0;0>a.ga?(a.I=a.I&63728|a.b>>12&8|a.i>>14&2|a.w>>16&1,a.j&65535||(a.I|=4),a.ga=a.I):a.C||(b=4,e=1);a.L&57344||(a.M=63222);a.C=0;0<=(c=L(a,b|65536))&&0<=(d=L(a,b+2&65535|65536))&&(Cc(a,d&53247|a.ga>>2&12288),e&&(a.g[6]=4),0<=Dc(a,a.ga)&&0<=Dc(a,a.g[7])&&(a.g[7]=c));a.G=0;return a.ga=-1}
|
||||||
function Ec(a,b,c){var d,e,f,h=0;if(c&a.pb){d=b>>13&a.pa[a.C];e=a.Na[a.C][d];f=(a.Na[a.C][d+16]<<6)+(b&8191)&4194303;if(a.Da&16){if(3932160<=f&&4186112>f){f=f&262143;var g=f>>13&31;31>g?a.Da&32&&(f=a.Hb[g]+(f&8190)&4194302,3932160<=f&&4186112>f&&console.log("panic(898)")):f|=4186112}}else f&=262143,253952<=f&&(f|=4186112);if(3932160>f&&(3915776<=f||f&1&&!(c&1)))return I(a,4);switch(e&7){case 1:h=4096;case 2:e|=128;c&4&&(h=8192);break;case 4:h=4096;case 5:c&4&&(h=4096);case 6:e|=c&4?192:128;break;
|
function Ec(a,b,c){var d,e,f,h=0;if(c&a.qb){d=b>>13&a.pa[a.C];e=a.Za[a.C][d];f=(a.Za[a.C][d+16]<<6)+(b&8191)&4194303;if(a.Ka&16){if(3932160<=f&&4186112>f){f=f&262143;var g=f>>13&31;31>g?a.Ka&32&&(f=a.Ib[g]+(f&8190)&4194302,3932160<=f&&4186112>f&&console.log("panic(898)")):f|=4186112}}else f&=262143,253952<=f&&(f|=4186112);if(3932160>f&&(3915776<=f||f&1&&!(c&1)))return I(a,4);switch(e&7){case 1:h=4096;case 2:e|=128;c&4&&(h=8192);break;case 4:h=4096;case 5:c&4&&(h=4096);case 6:e|=c&4?192:128;break;
|
||||||
default:h=32768}32512!==(e&32520)&&(e&8?e&32512&&(b&8128)<(e>>2&8128)&&(h|=16384):(b&8128)>(e>>2&8128)&&(h|=16384));a.Na[a.C][d]=e;if(4194170!==f||a.C)a.Ma=a.C,a.qb=d;if(h){if(h&57344)return 0<=a.ga&&(h|=128),a.L&57344||(a.L=a.L|h|a.Ma<<5|a.qb<<1),I(a,168);a.L&61440||!(4191360>f||4194239<f)||(a.L|=4096,a.L&512&&(a.G|=2))}}else if(f=b&65535,57344<=f)f|=4186112;else if(f&1&&!(c&1))return I(a,4);return f}function M(a,b){return 4194304<=b?a.g[b-4194304]:3932160<=b?-1:0<=b?a.memory[b>>1]:b}
|
default:h=32768}32512!==(e&32520)&&(e&8?e&32512&&(b&8128)<(e>>2&8128)&&(h|=16384):(b&8128)>(e>>2&8128)&&(h|=16384));a.Za[a.C][d]=e;if(4194170!==f||a.C)a.Ma=a.C,a.rb=d;if(h){if(h&57344)return 0<=a.ga&&(h|=128),a.L&57344||(a.L=a.L|h|a.Ma<<5|a.rb<<1),I(a,168);a.L&61440||!(4191360>f||4194239<f)||(a.L|=4096,a.L&512&&(a.G|=2))}}else if(f=b&65535,57344<=f)f|=4186112;else if(f&1&&!(c&1))return I(a,4);return f}function M(a,b){return 4194304<=b?a.g[b-4194304]:3932160<=b?-1:0<=b?a.memory[b>>1]:b}
|
||||||
function N(a,b,c){c&=65535;return 4194304<=b?a.g[b-4194304]=c:3932160<=b?-1:0<=b?a.memory[b>>1]=c:b}function O(a,b){var c;return 4194304<=b?a.g[b-4194304]&255:3932160<=b?-1:0<=b?(c=a.memory[b>>1],b&1&&(c=c>>8),c&255):b}function R(a,b,c){c&=255;return 4194304<=b?a.g[b-4194304]=a.g[b-4194304]&65280|c:3932160<=b?-1:0<=b?b&1?a.memory[b>>1]=c<<8|a.memory[b>>1]&255:a.memory[b>>1]=a.memory[b>>1]&65280|c:b}function L(a,b){return M(a,Ec(a,b,2))}
|
function N(a,b,c){c&=65535;return 4194304<=b?a.g[b-4194304]=c:3932160<=b?-1:0<=b?a.memory[b>>1]=c:b}function O(a,b){var c;return 4194304<=b?a.g[b-4194304]&255:3932160<=b?-1:0<=b?(c=a.memory[b>>1],b&1&&(c=c>>8),c&255):b}function R(a,b,c){c&=255;return 4194304<=b?a.g[b-4194304]=a.g[b-4194304]&65280|c:3932160<=b?-1:0<=b?b&1?a.memory[b>>1]=c<<8|a.memory[b>>1]&255:a.memory[b>>1]=a.memory[b>>1]&65280|c:b}function L(a,b){return M(a,Ec(a,b,2))}
|
||||||
function Fc(a){var b=L(a,a.g[6]|65536);0<=b&&(a.g[6]=a.g[6]+2&65535);return b}function Dc(a,b){var c,d;a.g[6]=d=a.g[6]-2&65535;a.L&57344||(a.M=a.M<<8|246);if(!a.C&&d<=a.$&&4<d){if(d<=a.$-32)return a.g[6]=4,I(a,4);a.G|=4}return 0<=(c=Ec(a,d|65536,4))?N(a,c,b):c}
|
function Fc(a){var b=L(a,a.g[6]|65536);0<=b&&(a.g[6]=a.g[6]+2&65535);return b}function Dc(a,b){var c,d;a.g[6]=d=a.g[6]-2&65535;a.L&57344||(a.M=a.M<<8|246);if(!a.C&&d<=a.$&&4<d){if(d<=a.$-32)return a.g[6]=4,I(a,4);a.G|=4}return 0<=(c=Ec(a,d|65536,4))?N(a,c,b):c}
|
||||||
function Gc(a,b,c){var d,e,f=b&7;switch(b>>3&7){case 0:return I(a,4);case 1:if(6===f&&!a.C&&c&4&&(a.g[6]<=a.$||65534<=a.g[6])){if(a.g[6]<=a.$-32||65534<=a.g[6])return a.g[6]=4,I(a,4);a.G|=4}return 7===f?a.g[f]:a.g[f]|65536;case 2:e=2;d=a.g[f];7!==f&&(d|=65536,6>f&&c&1&&(e=1));break;case 3:e=2;d=a.g[f];7!==f&&(d|=65536);if(0>(d=L(a,d)))return d;d|=65536;break;case 4:e=-2;6>f&&c&1&&(e=-1);d=a.g[f]+e&65535;7!==f&&(d|=65536);break;case 5:e=-2;d=a.g[f]-2&65535;7!==f&&(d|=65536);if(0>(d=L(a,d)))return d;
|
function Gc(a,b,c){var d,e,f=b&7;switch(b>>3&7){case 0:return I(a,4);case 1:if(6===f&&!a.C&&c&4&&(a.g[6]<=a.$||65534<=a.g[6])){if(a.g[6]<=a.$-32||65534<=a.g[6])return a.g[6]=4,I(a,4);a.G|=4}return 7===f?a.g[f]:a.g[f]|65536;case 2:e=2;d=a.g[f];7!==f&&(d|=65536,6>f&&c&1&&(e=1));break;case 3:e=2;d=a.g[f];7!==f&&(d|=65536);if(0>(d=L(a,d)))return d;d|=65536;break;case 4:e=-2;6>f&&c&1&&(e=-1);d=a.g[f]+e&65535;7!==f&&(d|=65536);break;case 5:e=-2;d=a.g[f]-2&65535;7!==f&&(d|=65536);if(0>(d=L(a,d)))return d;
|
||||||
d|=65536;break;case 6:if(0>(d=L(a,a.g[7])))return d;a.g[7]=a.g[7]+2&65535;d=d+a.g[f]&65535;return d|65536;case 7:if(0>(d=L(a,a.g[7])))return d;a.g[7]=a.g[7]+2&65535;d=d+a.g[f]&65535;return 0>(d=L(a,d|65536))?d:d|65536}a.g[f]=a.g[f]+e&65535;a.L&57344||(a.M=a.M<<8|e<<3&248|f);if(6===f&&!a.C&&c&4&&0>=e&&(a.g[6]<=a.$||65534<=a.g[6])){if(a.g[6]<=a.$-32)return a.g[6]=4,I(a,4);a.G|=4}return d}function S(a,b,c){var d;return b&56?(0<=(d=Gc(a,b,c))&&(d=Ec(a,d,c)),d):4194304+(b&7)}
|
d|=65536;break;case 6:if(0>(d=L(a,a.g[7])))return d;a.g[7]=a.g[7]+2&65535;d=d+a.g[f]&65535;return d|65536;case 7:if(0>(d=L(a,a.g[7])))return d;a.g[7]=a.g[7]+2&65535;d=d+a.g[f]&65535;return 0>(d=L(a,d|65536))?d:d|65536}a.g[f]=a.g[f]+e&65535;a.L&57344||(a.M=a.M<<8|e<<3&248|f);if(6===f&&!a.C&&c&4&&0>=e&&(a.g[6]<=a.$||65534<=a.g[6])){if(a.g[6]<=a.$-32)return a.g[6]=4,I(a,4);a.G|=4}return d}function S(a,b,c){var d;return b&56?(0<=(d=Gc(a,b,c))&&(d=Ec(a,d,c)),d):4194304+(b&7)}
|
||||||
function T(a,b){var c;b&56?0<=(c=S(a,b,2))&&(c=M(a,c)):c=a.g[b&7];return c}function Hc(a,b){var c;b&56?0<=(c=S(a,b,3))&&(c=O(a,c)):c=a.g[b&7]&255;return c}function U(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
function T(a,b){var c;b&56?0<=(c=S(a,b,2))&&(c=M(a,c)):c=a.g[b&7];return c}function Hc(a,b){var c;b&56?0<=(c=S(a,b,3))&&(c=O(a,c)):c=a.g[b&7]&255;return c}function U(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||||
m.Ia=function(a){this.A.complete=!0;var b=this.A.Bb=this.F&&Ic(this.F),c=a?this.A.cb?0:1:-1;this.A.cb=!1;this.U=this.R=a;this.nb&256?(zc(this),a=!1):a=!0;if(a){do{if(b){if(Jc(this.F,this.g[7],c)){this.ba();break}c=1}var d,e,f,h,g;if(this.W)if(1===this.W)this.W=2;else{this.W=0;g=-1;d=this.tb&224;if(0<(a=this.J.length))for(;0<a--;){if(0<this.J[a].Za){this.J[a].Za--;this.W=2;break}if(this.J[a].gb){if(!this.J[a].gb()){this.J.splice(a,1);g--;continue}this.J[a].gb=null}this.J[a].Eb>d&&(d=this.J[a].Eb,g=
|
m.Ha=function(a){this.A.complete=!0;var b=this.A.Cb=this.F&&Ic(this.F),c=a?this.A.cb?0:1:-1;this.A.cb=!1;this.U=this.R=a;this.ob&256?(nc(this),a=!1):a=!0;if(a){do{if(b){if(Jc(this.F,this.g[7],c)){this.ba();break}c=1}var d,e,f,h,g;if(this.W)if(1===this.W)this.W=2;else{this.W=0;g=-1;d=this.ub&224;if(0<(a=this.J.length))for(;0<a--;){if(0<this.J[a].Ya){this.J[a].Ya--;this.W=2;break}if(this.J[a].gb){if(!this.J[a].gb()){this.J.splice(a,1);g--;continue}this.J[a].gb=null}this.J[a].Fb>d&&(d=this.J[a].Fb,g=
|
||||||
a)}d>(this.I&224)&&(0>g?I(this,160):(I(this,this.J[g].Jb),this.J.splice(g,1)))}this.L&57344||(this.M=0);this.G=this.I&16;if(0<=(a=L(this,this.g[7])))switch(this.g[7]=this.g[7]+2&65535,a&61440){case 4096:0<=(d=T(this,a>>6))&&(a&56?0<=(f=S(this,a,4))&&0<=N(this,f,d)&&(this.b=this.j=d,this.i=0):(this.b=this.j=this.g[a&7]=d,this.i=0));break;case 8192:0<=(d=T(this,a>>6))&&0<=(e=T(this,a))&&(this.b=this.j=this.w=a=d-e,this.i=(d^e)&(d^a));break;case 12288:0<=(d=T(this,a>>6))&&0<=(e=T(this,a))&&(this.b=this.j=
|
a)}d>(this.I&224)&&(0>g?I(this,160):(I(this,this.J[g].Lb),this.J.splice(g,1)))}this.L&57344||(this.M=0);this.G=this.I&16;if(0<=(a=L(this,this.g[7])))switch(this.g[7]=this.g[7]+2&65535,a&61440){case 4096:0<=(d=T(this,a>>6))&&(a&56?0<=(f=S(this,a,4))&&0<=N(this,f,d)&&(this.b=this.j=d,this.i=0):(this.b=this.j=this.g[a&7]=d,this.i=0));break;case 8192:0<=(d=T(this,a>>6))&&0<=(e=T(this,a))&&(this.b=this.j=this.w=a=d-e,this.i=(d^e)&(d^a));break;case 12288:0<=(d=T(this,a>>6))&&0<=(e=T(this,a))&&(this.b=this.j=
|
||||||
d&e,this.i=0);break;case 16384:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e&~d,0<=N(this,f,a)&&(this.b=this.j=a,this.i=0)):(this.b=this.j=a=this.g[a&7]&=~d,this.i=0));break;case 20480:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e|d,0<=N(this,f,a)&&(this.b=this.j=a,this.i=0)):(this.b=this.j=a=this.g[a&7]|=d,this.i=0));break;case 24576:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=d+e,0<=N(this,f,a)&&(this.b=this.j=this.w=a,this.i=(d^a)&(e^a))):(g=a&7,
|
d&e,this.i=0);break;case 16384:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e&~d,0<=N(this,f,a)&&(this.b=this.j=a,this.i=0)):(this.b=this.j=a=this.g[a&7]&=~d,this.i=0));break;case 20480:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e|d,0<=N(this,f,a)&&(this.b=this.j=a,this.i=0)):(this.b=this.j=a=this.g[a&7]|=d,this.i=0));break;case 24576:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=d+e,0<=N(this,f,a)&&(this.b=this.j=this.w=a,this.i=(d^a)&(e^a))):(g=a&7,
|
||||||
e=this.g[g],this.g[g]=(a=d+e)&65535,this.b=this.j=this.w=a,this.i=(d^a)&(e^a)));break;case 36864:0<=(d=Hc(this,a>>6))&&(a&56?0<=(f=S(this,a,5))&&0<=R(this,f,d)&&(this.b=this.j=d<<8,this.i=0):(d&128&&(d|=65280),this.b=this.j=this.g[a&7]=d,this.i=0));break;case 40960:0<=(d=Hc(this,a>>6))&&0<=(e=Hc(this,a))&&(a=d-e,this.b=this.j=this.w=a<<8,this.i=((d^e)&(d^a))<<8);break;case 45056:0<=(d=Hc(this,a>>6))&&0<=(e=Hc(this,a))&&(this.b=this.j=(d&e)<<8,this.i=0);break;case 49152:0<=(d=Hc(this,a>>6))&&0<=(e=
|
e=this.g[g],this.g[g]=(a=d+e)&65535,this.b=this.j=this.w=a,this.i=(d^a)&(e^a)));break;case 36864:0<=(d=Hc(this,a>>6))&&(a&56?0<=(f=S(this,a,5))&&0<=R(this,f,d)&&(this.b=this.j=d<<8,this.i=0):(d&128&&(d|=65280),this.b=this.j=this.g[a&7]=d,this.i=0));break;case 40960:0<=(d=Hc(this,a>>6))&&0<=(e=Hc(this,a))&&(a=d-e,this.b=this.j=this.w=a<<8,this.i=((d^e)&(d^a))<<8);break;case 45056:0<=(d=Hc(this,a>>6))&&0<=(e=Hc(this,a))&&(this.b=this.j=(d&e)<<8,this.i=0);break;case 49152:0<=(d=Hc(this,a>>6))&&0<=(e=
|
||||||
O(this,f=S(this,a,7)))&&(a=e&~d,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=0));break;case 53248:0<=(d=Hc(this,a>>6))&&0<=(e=O(this,f=S(this,a,7)))&&(a=e|d,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=0));break;case 57344:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e-d,0<=N(this,f,a)&&(this.b=this.j=this.w=a,this.i=(d^e)&(e^a))):(g=a&7,e=this.g[g],this.g[g]=(a=e-d)&65535,this.b=this.j=this.w=a,this.i=(d^e)&(e^a)));break;default:switch(a&65024){case 2048:0<=(h=Gc(this,a,0))&&(g=a>>6&7,
|
O(this,f=S(this,a,7)))&&(a=e&~d,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=0));break;case 53248:0<=(d=Hc(this,a>>6))&&0<=(e=O(this,f=S(this,a,7)))&&(a=e|d,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=0));break;case 57344:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e-d,0<=N(this,f,a)&&(this.b=this.j=this.w=a,this.i=(d^e)&(e^a))):(g=a&7,e=this.g[g],this.g[g]=(a=e-d)&65535,this.b=this.j=this.w=a,this.i=(d^e)&(e^a)));break;default:switch(a&65024){case 2048:0<=(h=Gc(this,a,0))&&(g=a>>6&7,
|
||||||
|
|
@ -75,96 +75,96 @@ e))<<8));break;case 35520:0<=(e=O(this,f=S(this,a,7)))&&(a=e-1,0<=R(this,f,a)&&(
|
||||||
case 35776:0<=(e=Hc(this,a))&&(this.b=this.j=e<<8,this.w=this.i=0);break;case 35840:0<=(e=O(this,f=S(this,a,7)))&&(a=((this.w&65536)>>8|e)>>1,0<=R(this,f,a)&&(this.w=e<<16,this.b=this.j=a<<8,this.i=this.b^this.w>>1));break;case 35904:0<=(e=O(this,f=S(this,a,7)))&&(a=e<<1|this.w>>16&1,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a^e)<<8));break;case 35968:0<=(e=O(this,f=S(this,a,7)))&&(a=e&128|e>>1,0<=R(this,f,a)&&(this.w=e<<16,this.b=this.j=a<<8,this.i=this.b^this.w>>1));break;case 36032:0<=
|
case 35776:0<=(e=Hc(this,a))&&(this.b=this.j=e<<8,this.w=this.i=0);break;case 35840:0<=(e=O(this,f=S(this,a,7)))&&(a=((this.w&65536)>>8|e)>>1,0<=R(this,f,a)&&(this.w=e<<16,this.b=this.j=a<<8,this.i=this.b^this.w>>1));break;case 35904:0<=(e=O(this,f=S(this,a,7)))&&(a=e<<1|this.w>>16&1,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a^e)<<8));break;case 35968:0<=(e=O(this,f=S(this,a,7)))&&(a=e&128|e>>1,0<=R(this,f,a)&&(this.w=e<<16,this.b=this.j=a<<8,this.i=this.b^this.w>>1));break;case 36032:0<=
|
||||||
(e=O(this,f=S(this,a,7)))&&(a=e<<1,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a^e)<<8));break;case 36160:a&56?0<=(h=Gc(this,a,0))&&(this.C=this.I>>12&3,0<=(d=L(this,h|65536))&&(this.C=this.I>>14&3,0<=Dc(this,d)&&(this.b=this.j=d,this.i=0))):(g=a&7,d=6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]:this.fa[this.I>>12&3],0<=Dc(this,d)&&(this.b=this.j=d,this.i=0));break;case 36224:0<=(e=Fc(this))&&((this.L&57344||(this.M=22),a&56)?0<=(h=Gc(this,a,0))&&(this.C=this.I>>12&3,0<=(f=Ec(this,h|
|
(e=O(this,f=S(this,a,7)))&&(a=e<<1,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a^e)<<8));break;case 36160:a&56?0<=(h=Gc(this,a,0))&&(this.C=this.I>>12&3,0<=(d=L(this,h|65536))&&(this.C=this.I>>14&3,0<=Dc(this,d)&&(this.b=this.j=d,this.i=0))):(g=a&7,d=6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]:this.fa[this.I>>12&3],0<=Dc(this,d)&&(this.b=this.j=d,this.i=0));break;case 36224:0<=(e=Fc(this))&&((this.L&57344||(this.M=22),a&56)?0<=(h=Gc(this,a,0))&&(this.C=this.I>>12&3,0<=(f=Ec(this,h|
|
||||||
65536,4))&&(this.C=this.I>>14&3,0<=N(this,f,e)&&(this.b=this.j=e,this.i=0))):(g=a&7,6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]=e:this.fa[this.I>>12&3]=e,this.b=this.j=e,this.i=0));break;default:switch(a&65528){case 128:0<=(d=Fc(this))&&(g=a&7,this.g[7]=this.g[g],this.g[g]=d);break;case 152:this.I&49152||(this.I=this.I&63519|(a&7)<<5,this.W=1);break;case 160:case 168:a&1&&(this.w=0);a&2&&(this.i=0);a&4&&(this.j=1);a&8&&(this.b=0);break;case 176:case 184:a&1&&(this.w=65536);a&2&&(this.i=32768);
|
65536,4))&&(this.C=this.I>>14&3,0<=N(this,f,e)&&(this.b=this.j=e,this.i=0))):(g=a&7,6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]=e:this.fa[this.I>>12&3]=e,this.b=this.j=e,this.i=0));break;default:switch(a&65528){case 128:0<=(d=Fc(this))&&(g=a&7,this.g[7]=this.g[g],this.g[g]=d);break;case 152:this.I&49152||(this.I=this.I&63519|(a&7)<<5,this.W=1);break;case 160:case 168:a&1&&(this.w=0);a&2&&(this.i=0);a&4&&(this.j=1);a&8&&(this.b=0);break;case 176:case 184:a&1&&(this.w=65536);a&2&&(this.i=32768);
|
||||||
a&4&&(this.j=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.I?I(this,4):(this.bb=3,zc(this),console.log("HALT at "+this.g[7].toString(8)));break;case 1:g=0;if(0<(a=this.J.length))for(;0<a--;)g+=this.J[a].Za,this.J[a].Za=0;0===g&&0===this.bb&&(this.bb=2,zc(this));break;case 3:I(this,12);break;case 4:I(this,16);break;case 5:this.I&49152||Bc(this);break;case 2:case 6:f=this.g[6];0<=(h=L(this,f|65536))&&(f=f+2&65535,0<=(d=L(this,f|65536))&&(this.g[6]=f+2&65535,d&=63743,this.I&49152&&
|
a&4&&(this.j=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.I?I(this,4):(this.bb=3,nc(this),console.log("HALT at "+this.g[7].toString(8)));break;case 1:g=0;if(0<(a=this.J.length))for(;0<a--;)g+=this.J[a].Ya,this.J[a].Ya=0;0===g&&0===this.bb&&(this.bb=2,nc(this));break;case 3:I(this,12);break;case 4:I(this,16);break;case 5:this.I&49152||Bc(this);break;case 2:case 6:f=this.g[6];0<=(h=L(this,f|65536))&&(f=f+2&65535,0<=(d=L(this,f|65536))&&(this.g[6]=f+2&65535,d&=63743,this.I&49152&&
|
||||||
(d=d&63519|this.I&63712),this.g[7]=h,Cc(this,d),this.G&=-17,2===a&&(this.G|=this.I&16)));break;default:I(this,8)}}}}}}this.G&&(this.G&2?I(this,168):this.G&4?I(this,4):this.G&16&&I(this,12),this.G=0)}while(0<this.R)}return this.A.complete?this.U-this.R:void 0===this.A.complete?0:-1};Qa(function(){for(var a=y(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Ac(d);mb(d,c)}});
|
(d=d&63519|this.I&63712),this.g[7]=h,Cc(this,d),this.G&=-17,2===a&&(this.G|=this.I&16)));break;default:I(this,8)}}}}}}this.G&&(this.G&2?I(this,168):this.G&4?I(this,4):this.G&16&&I(this,12),this.G=0)}while(0<this.R)}return this.A.complete?this.U-this.R:void 0===this.A.complete?0:-1};Qa(function(){for(var a=z(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Ac(d);mb(d,c)}});
|
||||||
function Kc(a){t.call(this,"ROM",a,Kc);this.i=null;this.C=a.addr;this.j=a.size;this.G=a.writable;this.w=a.alias;this.D=a.file;this.J=fa(this.D);if(this.D){a=this.D;var b=ja(this.J);"json"!=b&&"hex"!=b&&(a=la()+"/api/v1/dump?file="+this.D+"&format=bytes&decimal=true");var c=this;xa(a,null,!0,function(a,b,f){Lc(c,a,b,f)})}}v(Kc);Kc.prototype.za=function(a,b,c,d){this.H=b;this.b=c;this.F=d;Mc(this)};
|
function Kc(a){t.call(this,"ROM",a,Kc);this.i=null;this.C=a.addr;this.j=a.size;this.G=a.writable;this.w=a.alias;this.D=a.file;this.J=fa(this.D);if(this.D){a=this.D;var b=ja(this.J);"json"!=b&&"hex"!=b&&(a=la()+"/api/v1/dump?file="+this.D+"&format=bytes&decimal=true");var c=this;xa(a,null,!0,function(a,b,f){Lc(c,a,b,f)})}}v(Kc);Kc.prototype.za=function(a,b,c,d){this.H=b;this.b=c;this.F=d;Mc(this)};
|
||||||
Kc.prototype.sa=function(){if(this.qa){if(this.F){var a=this.F,b=this.id,c=this.C,d=this.j,e=this.qa,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var n=f,k=[k>>>0,h],p=ta(n,k,a.pa);0>p&&n.splice(-(p+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.G.push({Ib:b,B:c,Db:d,qa:e,fb:f})}delete this.qa}return!0};Kc.prototype.ra=function(){return!0};
|
Kc.prototype.sa=function(){if(this.qa){if(this.F){var a=this.F,b=this.id,c=this.C,d=this.j,e=this.qa,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var n=f,k=[k>>>0,h],p=ta(n,k,a.hb);0>p&&n.splice(-(p+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.G.push({Kb:b,B:c,Eb:d,qa:e,fb:f})}delete this.qa}return!0};Kc.prototype.ra=function(){return!0};
|
||||||
function Lc(a,b,c,d){if(d)a.ea("Unable to load system ROM (error "+d+": "+b+")");else{ab(a.mb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.i=f;else if(h)for(a.i=Array(4*h.length),d=c=0;c<h.length;c++)a.i[d++]=h[c]&255,a.i[d++]=h[c]>>8&255,a.i[d++]=h[c]>>16&255,a.i[d++]=h[c]>>24&255;else a.i=e;a.qa=e.symbols;if(!a.i.length){r("Empty ROM: "+b);return}if(1==a.i.length){r(a.i[0]);return}}catch(g){a.ea("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
function Lc(a,b,c,d){if(d)a.ea("Unable to load system ROM (error "+d+": "+b+")");else{ab(a.nb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.i=f;else if(h)for(a.i=Array(4*h.length),d=c=0;c<h.length;c++)a.i[d++]=h[c]&255,a.i[d++]=h[c]>>8&255,a.i[d++]=h[c]>>16&255,a.i[d++]=h[c]>>24&255;else a.i=e;a.qa=e.symbols;if(!a.i.length){r("Empty ROM: "+b);return}if(1==a.i.length){r(a.i[0]);return}}catch(g){a.ea("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||||
" ").replace(/ +$/,"").split(" "),a.i=Array(b.length),e=0;e<b.length;e++)a.i[e]=da(b[e],16);Mc(a)}}
|
" ").replace(/ +$/,"").split(" "),a.i=Array(b.length),e=0;e<b.length;e++)a.i[e]=da(b[e],16);Mc(a)}}
|
||||||
function Mc(a){if(!qb(a))if(!a.D)A(a);else if(a.i&&a.H){a.j||(a.j=a.i.length);if(a.i.length!=a.j)rb(a,"ROM size (0x"+q(a.i.length)+") does not match specified size ("+("0x"+q(a.j))+")");else{var b;b=a.C;if(xb(a.H,b,a.j,a.G?1:Rb)){var c;for(c=0;c<a.i.length;c++){var d=a.H,e=b+c;d.P[(e&d.j)>>>d.aa].Ja(e&d.i,a.i[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(c=0;c<b.length;c++){for(var f=a,d=b[c],e=f.H,h=f.j,g=[],k=f.C>>>e.aa;0<h&&k<e.P.length;)g.push(e.P[k++]),
|
function Mc(a){if(!qb(a))if(!a.D)A(a);else if(a.i&&a.H){a.j||(a.j=a.i.length);if(a.i.length!=a.j)rb(a,"ROM size (0x"+q(a.i.length)+") does not match specified size ("+("0x"+q(a.j))+")");else{var b;b=a.C;if(xb(a.H,b,a.j,a.G?1:Rb)){var c;for(c=0;c<a.i.length;c++){var d=a.H,e=b+c;d.P[(e&d.j)>>>d.aa].Ia(e&d.i,a.i[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(c=0;c<b.length;c++){for(var f=a,d=b[c],e=f.H,h=f.j,g=[],k=f.C>>>e.aa;0<h&&k<e.P.length;)g.push(e.P[k++]),
|
||||||
h-=e.la;e=f.H;f=f.j;h=0;for(d>>>=e.aa;0<f&&d<e.P.length;){k=g[h++];if(!k)break;e.P[d++]=k;f-=e.la}}delete a.i}}A(a)}}Qa(function(){for(var a=y(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Kc(d);mb(d,c)}});function Nc(a){t.call(this,"RAM",a,Nc);this.w=a.addr;this.j=a.size;this.i=!1}v(Nc);m=Nc.prototype;m.za=function(a,b,c,d){this.H=b;this.b=c;this.F=d;A(this)};m.sa=function(a,b){b||this.reset();return!0};m.ra=function(a){return a?this.save():!0};
|
h-=e.la;e=f.H;f=f.j;h=0;for(d>>>=e.aa;0<f&&d<e.P.length;){k=g[h++];if(!k)break;e.P[d++]=k;f-=e.la}}delete a.i}}A(a)}}Qa(function(){for(var a=z(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Kc(d);mb(d,c)}});function Nc(a){t.call(this,"RAM",a,Nc);this.w=a.addr;this.j=a.size;this.i=!1}v(Nc);m=Nc.prototype;m.za=function(a,b,c,d){this.H=b;this.b=c;this.F=d;A(this)};m.sa=function(a,b){b||this.reset();return!0};m.ra=function(a){return a?this.save():!0};
|
||||||
m.reset=function(){!this.i&&this.j&&xb(this.H,this.w,this.j,1)&&(this.i=!0);this.i||r("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Qa(function(){for(var a=y(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Nc(d);mb(d,c)}});function Oc(a){t.call(this,"Keyboard",a,Oc,65536);A(this)}v(Oc);Oc.prototype.ha=function(){return!1};Oc.prototype.za=function(a,b,c,d){this.D=a;this.b=c;this.F=d;this.ja=null};
|
m.reset=function(){!this.i&&this.j&&xb(this.H,this.w,this.j,1)&&(this.i=!0);this.i||r("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Qa(function(){for(var a=z(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Nc(d);mb(d,c)}});function Oc(a){t.call(this,"Keyboard",a,Oc,65536);A(this)}v(Oc);Oc.prototype.ha=function(){return!1};Oc.prototype.za=function(a,b,c,d){this.D=a;this.b=c;this.F=d;this.ja=null};
|
||||||
Qa(function(){for(var a=y(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Oc(d);mb(d,c)}});
|
Qa(function(){for(var a=z(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Oc(d);mb(d,c)}});function Pc(a){t.call(this,"Debugger",a,Pc);this.R=this.ga=this.L=0;this.w=-1;this.j=[];this.V={}}v(Pc);var Qc={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||||
function Pc(a){t.call(this,"Debugger",a,Pc);this.R=this.ga=this.L=0;this.N=V();this.na=V();this.w=-1;this.j=[];this.T=!1;this.S=V();this.G=[];this.V={};this.i=this.O=this.C=[];Qc(this);this.ca=0;Rc(this);this.ja=[];Sc(this,a.messages);this.ka=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return gc(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return gc(b,a)})}v(Pc);
|
function Rc(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;
|
||||||
var Tc={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},Uc=["NONE"],Vc=["PC","PSW"],Wc=[];m=Pc.prototype;
|
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}
|
||||||
m.za=function(a,b,c,d){this.H=b;this.b=c;this.D=a;(a=dc(a,"messages"))&&Sc(this,a);this.oa=Wc;Xc(this,function(a){a:{var b=d.H.P,c=a[0],g=a=0,k=b.length;if(c){a=W(X(d,c));if(-1===a){d.u("invalid address: "+c);break a}g=a>>>d.H.aa;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var n=b[g];n.type==c?l++||d.u("..."):(c=n.type,l=zb[c],n&&d.u(q(n.id)+" %"+q(g<<d.H.aa)+" %%"+q(n.B)+" "+ea(n.Ta)+" "+
|
function Sc(a,b,c){var d;if(b){b=Tc(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var n=l[e++],p=n.length,n=pa(n);if(!n){f=!0;break}n=Uc(a,n,null,!1===c);if(void 0===n){f=!0;c=!1;break}g.push(n);if(e==l.length)break;var n=l[e++],y=n.length;k.length&&Qc[n]<Qc[k[k.length-1]]&&Rc(g,k,1);k.push(n);b=b.substr(p+y)}Rc(g,k)&&1==g.length||(f=!0);f?c&&a.u("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&Vc(a,null,
|
||||||
|
d))}return d}function Tc(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Sc(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?q(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=V(a,c[1]),b=b.replace("["+c[1]+"]",d?q(a.Ta(d,0),d.Jb?8:4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.R-a.ga}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
||||||
|
function Uc(a,b,c,d){var e;void 0!==b?(e=Wc(b),0<=e?e=Xc(a,e):(e=a.V[b],void 0===e&&(e=da(b))),void 0!==e||d||a.u("invalid "+(c?c:"value")+": "+b)):d||a.u("missing "+(c||"value"));return e}
|
||||||
|
function Vc(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=d&255,l=8,n="";void 0===l?l=32:32<l&&(l=32);if(null==k||isNaN(k))for(;0<l--;)n="?"+n;else for(;0<l--;)n=(k&1?"1":"0")+n,k>>=1;h=n+"b"+h;d>>=8}d="0x"+q(c)+" "+c+". ("+h+")"}a.u((null!=b?b+": ":"")+d);return e}function Yc(a,b){if(b)return Vc(a,b,a.V[b]);var c=0;for(b in a.V)Vc(a,b,a.V[b]),c++;return 0<c}
|
||||||
|
function Zc(a){Pc.call(this,a);this.N=W();this.pa=W();this.T=!1;this.S=W();this.G=[];this.i=this.O=this.C=[];$c(this);this.ca=0;ad(this);this.ja=[];bd(this,a.messages);this.ka=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return gc(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return gc(b,a)})}v(Zc,Pc);
|
||||||
|
var cd={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},dd=["NONE"],ed=["PC","PSW"],fd=[];m=Zc.prototype;
|
||||||
|
m.za=function(a,b,c,d){this.H=b;this.b=c;this.D=a;(a=dc(a,"messages"))&&bd(this,a);this.oa=fd;gd(this,function(a){a:{var b=d.H.P,c=a[0],g=a=0,k=b.length;if(c){a=X(V(d,c));if(-1===a){d.u("invalid address: "+c);break a}g=a>>>d.H.aa;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var n=b[g];n.type==c?l++||d.u("..."):(c=n.type,l=zb[c],n&&d.u(q(n.id)+" %"+q(g<<d.H.aa)+" %%"+q(n.B)+" "+ea(n.Sa)+" "+
|
||||||
ea(n.size)+" "+l),c!=Qb&&(c=-1),l=0);a+=d.H.la;g++}}});A(this)};
|
ea(n.size)+" "+l),c!=Qb&&(c=-1),l=0);a+=d.H.la;g++}}});A(this)};
|
||||||
m.ha=function(a,b,c){var d=this;switch(b){case "debugInput":return this.$=this.K[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",gc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.w<d.j.length-1&&(b=d.j[++d.w]):40==a.keyCode&&(0<d.w?b=d.j[--d.w]:(b="",d.w=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.K[b]=c,Ka(c,function(){if(d.$){var a=d.$.value;d.$.value=
|
m.ha=function(a,b,c){var d=this;switch(b){case "debugInput":return this.$=this.K[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",gc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.w<d.j.length-1&&(b=d.j[++d.w]):40==a.keyCode&&(0<d.w?b=d.j[--d.w]:(b="",d.w=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.K[b]=c,Ka(c,function(){if(d.$){var a=d.$.value;d.$.value=
|
||||||
"";gc(d,a,!0);return!0}return!1}),!0;case "step":return this.K[b]=c,Ka(c,function(a){var b=!1;pb(d,!0)||(ob(d,!0),b=d.Ia(a?1:0),ob(d,!1));return b}),!0}return!1};m.Sa=function(){this.$&&this.$.focus()};function W(a){a=a&&a.B;null==a&&(a=-1);return a}m.ua=function(a,b){var c=255,d=W(a);-1!==d&&(c=Ab(this.H,d),b&&Yc(a,b));return c};m.Ua=function(a,b){var c=65535,d=W(a);if(-1!==d){var c=this.H,e=d&c.i,f=(d&c.j)>>>c.aa,c=e!=c.i?c.P[f].ub(e,d):c.P[f++].Ra(e,d)|c.P[f&c.G].Ra(0,d+1)<<8;b&&Yc(a,b)}return c};
|
"";gc(d,a,!0);return!0}return!1}),!0;case "step":return this.K[b]=c,Ka(c,function(a){var b=!1;pb(d,!0)||(ob(d,!0),b=d.Ha(a?1:0),ob(d,!1));return b}),!0}return!1};m.Ra=function(){this.$&&this.$.focus()};function X(a){a=a&&a.B;null==a&&(a=-1);return a}m.ua=function(a,b){var c=255,d=X(a);-1!==d&&(c=Ab(this.H,d),b&&hd(a,b));return c};m.Ta=function(a,b){var c=65535,d=X(a);if(-1!==d){var c=this.H,e=d&c.i,f=(d&c.j)>>>c.aa,c=e!=c.i?c.P[f].vb(e,d):c.P[f++].Qa(e,d)|c.P[f&c.G].Qa(0,d+1)<<8;b&&hd(a,b)}return c};
|
||||||
m.eb=function(a,b,c){var d=W(a);if(-1!==d){var e=this.H;e.P[(d&e.j)>>>e.aa].Ja(d&e.i,b&255,d);c&&Yc(a,c);F(this.b,!0)}};m.yb=function(a,b,c){var d=W(a);if(-1!==d){var e=this.H,f=d&e.i,h=(d&e.j)>>>e.aa;f!=e.i?e.P[h].xb(f,b&65535,d):(e.P[h++].Ja(f,b&255,d),e.P[h&e.G].Ja(0,b>>8&255,d+1));c&&Yc(a,c);F(this.b,!0)}};function V(a){return{B:a,ma:!1}}function Zc(a){return[a.B,a.ma]}function $c(a){return{B:a[0],ma:a[1]}}
|
m.eb=function(a,b,c){var d=X(a);if(-1!==d){var e=this.H;e.P[(d&e.j)>>>e.aa].Ia(d&e.i,b&255,d);c&&hd(a,c);F(this.b,!0)}};m.zb=function(a,b,c){var d=X(a);if(-1!==d){var e=this.H,f=d&e.i,h=(d&e.j)>>>e.aa;f!=e.i?e.P[h].yb(f,b&65535,d):(e.P[h++].Ia(f,b&255,d),e.P[h&e.G].Ia(0,b>>8&255,d+1));c&&hd(a,c);F(this.b,!0)}};function W(a){return{B:a,ma:!1}}function id(a){return[a.B,a.ma]}function jd(a){return{B:a[0],ma:a[1]}}
|
||||||
function X(a,b,c){var d;c=(c?a.N:a.na).B;if(void 0!==b){d=b=ad(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.G.length;c++){var f=a.G[c].qa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=V(d));break}}if(d=e)return d;c=bd(a,b,void 0)}null!=c&&(d=V(c));return d}function cd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.zb=dd(a,b.vb=c[2]))}function Yc(a,b){null!=a.B&&(a.B+=b||1)}
|
function V(a,b,c){var d;c=(c?a.N:a.pa).B;if(void 0!==b){d=b=Tc(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.G.length;c++){var f=a.G[c].qa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=W(d));break}}if(d=e)return d;c=Sc(a,b,void 0)}null!=c&&(d=W(c));return d}function kd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Ab=ld(a,b.wb=c[2]))}function hd(a,b){null!=a.B&&(a.B+=b||1)}
|
||||||
function ed(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.ua(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Sc(a,b){a.F=a;a.Y=a.Ab=536870912;a.da=null;a.fa=[];var c=dd(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in C)0<=wa(c,d)&&(a.Y|=C[d],a.u(d+" messages enabled"))}function Xc(a,b){for(var c in C)if(64==C[c]){a.ja[c]=b;break}}
|
function md(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.ua(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function bd(a,b){a.F=a;a.Y=a.Bb=536870912;a.da=null;a.fa=[];var c=ld(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in C)0<=wa(c,d)&&(a.Y|=C[d],a.u(d+" messages enabled"))}function gd(a,b){for(var c in C)if(64==C[c]){a.ja[c]=b;break}}
|
||||||
function fd(a,b){var c;a=a.toUpperCase();null==b?c=wa(Vc,a):(c=wa(Vc,a.substr(b,2)),0>c&&(c=wa(Vc,a.substr(b,1))));return c}function gd(a,b){var c;if(0<=b){var d=a.b;switch(b){case 12:c=d.g[7];break;case 14:c=d.I&-14|0|(d.ta&255?0:4)|(d.ta&256?1:0)}}return c}
|
function Wc(a,b){var c;a=a.toUpperCase();null==b?c=wa(ed,a):(c=wa(ed,a.substr(b,2)),0>c&&(c=wa(ed,a.substr(b,1))));return c}function Xc(a,b){var c;if(0<=b){var d=a.b;switch(b){case 12:c=d.g[7];break;case 14:c=d.I&-14|0|(d.ta&255?0:4)|(d.ta&256?1:0)}}return c}
|
||||||
function hd(a,b){b=ad(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));){e=fd(b,c+1);if(0<=e){d=0;var f=gd(a,e);if(void 0!==f)switch(e){case 12:case 14:d=4}b=b.substr(0,c)+(d?q(f,d):"??")+b.substr(c+1+Vc[e].length)}c++}for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=da(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=X(a,e))?(d=e+' "'+ed(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=
|
function nd(a,b){b=Tc(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));){e=Wc(b,c+1);if(0<=e){d=0;var f=Xc(a,e);if(void 0!==f)switch(e){case 12:case 14:d=4}b=b.substr(0,c)+(d?q(f,d):"??")+b.substr(c+1+ed[e].length)}c++}for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=da(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=V(a,e))?(d=e+' "'+md(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=
|
||||||
0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=X(a,e))?(Yc(d),d=e+' "'+ed(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+q(V(this.b.g[7]).B,4));if(this.Y&1073741824)this.fa.push(a);else if(!this.da||a!=this.da)if(this.da=a,this.Y&-2147483648&&(this.ba(),a+=" (cpu halted)"),this.u(a),this.b){var c=this.b;zc(c);c.da=0;F(c)}};
|
0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=V(a,e))?(hd(d),d=e+' "'+md(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+q(W(this.b.g[7]).B,4));if(this.Y&1073741824)this.fa.push(a);else if(!this.da||a!=this.da)if(this.da=a,this.Y&-2147483648&&(this.ba(),a+=" (cpu halted)"),this.u(a),this.b){var c=this.b;nc(c);c.da=0;F(c)}};
|
||||||
function Rc(a){var b;if(Ic(a)){if(!a.M||!a.M.length){a.M=Array(1E3);for(b=0;b<a.M.length;b++)a.M[b]=V();a.W=0;a.u("instruction history buffer allocated")}if(!a.J||!a.J.length)for(a.J=Array(256),b=0;b<a.J.length;b++)a.J[b]=[b,0]}else a.M&&a.M.length&&a.u("instruction history buffer freed"),a.W=0,a.M=[],a.J=[]}m.Ca=function(a){if(!id(this))return!1;this.b.Ca(a);return!0};
|
function ad(a){var b;if(Ic(a)){if(!a.M||!a.M.length){a.M=Array(1E3);for(b=0;b<a.M.length;b++)a.M[b]=W();a.W=0;a.u("instruction history buffer allocated")}if(!a.J||!a.J.length)for(a.J=Array(256),b=0;b<a.J.length;b++)a.J[b]=[b,0]}else a.M&&a.M.length&&a.u("instruction history buffer freed"),a.W=0,a.M=[],a.J=[]}m.Ca=function(a){if(!od(this))return!1;this.b.Ca(a);return!0};
|
||||||
m.Ia=function(a,b,c){if(!id(this))return!1;this.L=0;a||Ic(this)&&Jc(this,this.b.g[7],0);try{var d=this.b.Ia(a);0<d&&(this.L+=d,lc(this.b,d,!0),hc(this.b,d),this.R++)}catch(e){"number"!=typeof e&&(this.L=0,rb(this.b,e.stack||e.message))}!1!==c&&F(this.b);this.ia(b||!1);return 0<this.L};m.ba=function(a){this.b&&this.b.ba(a)};m.ia=function(a){void 0===a&&(a=!0);this.N=V(this.b.g[7]);a&&1!=this.U?jd(this):kd(this)};
|
m.Ha=function(a,b,c){if(!od(this))return!1;this.L=0;a||Ic(this)&&Jc(this,this.b.g[7],0);try{var d=this.b.Ha(a);0<d&&(this.L+=d,lc(this.b,d,!0),hc(this.b,d),this.R++)}catch(e){"number"!=typeof e&&(this.L=0,rb(this.b,e.stack||e.message))}!1!==c&&F(this.b);this.ia(b||!1);return 0<this.L};m.ba=function(a){this.b&&this.b.ba(a)};m.ia=function(a){void 0===a&&(a=!0);this.N=W(this.b.g[7]);a&&1!=this.U?pd(this):qd(this)};
|
||||||
function id(a){var b;if(b=a.b&&qb(a.b))b=a.b,b.A.X?b=!0:(b.u(b.toString()+" not powered"),b=!1);b&&!pb(a.b)?(a=a.b,a.A.error?(a.u(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.sa=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.ra=function(a,b){b&&this.u(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Rc(this);this.R=this.ga=0;this.da=null;this.L=0;this.N=V(this.b.g[7]);this.A.Z=!1;ld(this);a||this.ia()};
|
function od(a){var b;if(b=a.b&&qb(a.b))b=a.b,b.A.X?b=!0:(b.u(b.toString()+" not powered"),b=!1);b&&!pb(a.b)?(a=a.b,a.A.error?(a.u(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.sa=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.ra=function(a,b){b&&this.u(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){ad(this);this.R=this.ga=0;this.da=null;this.L=0;this.N=W(this.b.g[7]);this.A.Z=!1;rd(this);a||this.ia()};
|
||||||
m.save=function(){var a=new G(this);H(a,0,Zc(this.N));H(a,1,Zc(this.S));H(a,2,[this.j,this.T,this.Y]);H(a,3,this.G);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.N=$c(a[b++]),this.S=$c(a[b++]),this.j=a[b][0],"string"==typeof this.j&&(this.j=[this.j]),this.T=a[b][1],this.Y|=a[b][2]);a[3]&&(this.G=a[3]);return!0};m.start=function(a,b){this.U||this.u("running");this.A.Z=!0;this.La=a;this.Ma=b};
|
m.save=function(){var a=new G(this);H(a,0,id(this.N));H(a,1,id(this.S));H(a,2,[this.j,this.T,this.Y]);H(a,3,this.G);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.N=jd(a[b++]),this.S=jd(a[b++]),this.j=a[b][0],"string"==typeof this.j&&(this.j=[this.j]),this.T=a[b][1],this.Y|=a[b][2]);a[3]&&(this.G=a[3]);return!0};m.start=function(a,b){this.U||this.u("running");this.A.Z=!0;this.Ka=a;this.La=b};
|
||||||
m.stop=function(a,b){if(this.A.Z){this.A.Z=!1;this.L=b-this.Ma;if(!this.U){var c="stopped";if(this.L){var d=a-this.La,e=0<d?Math.round(1E3*this.L/d):0,c=c+" (";Ic(this)&&(c+=this.R+" opcodes, ",this.ga-=this.R,this.R=0);c+=this.L+" cycles, "+d+" ms, "+e+" hz)"}else nb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.u(c)}this.ia(!0);this.Sa();ld(this,this.b.g[7])}};function Ic(a){return 1<a.i.length||!!a.ca}
|
m.stop=function(a,b){if(this.A.Z){this.A.Z=!1;this.L=b-this.La;if(!this.U){var c="stopped";if(this.L){var d=a-this.Ka,e=0<d?Math.round(1E3*this.L/d):0,c=c+" (";Ic(this)&&(c+=this.R+" opcodes, ",this.ga-=this.R,this.R=0);c+=this.L+" cycles, "+d+" ms, "+e+" hz)"}else nb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.u(c)}this.ia(!0);this.Ra();rd(this,this.b.g[7])}};function Ic(a){return 1<a.i.length||!!a.ca}
|
||||||
function Jc(a,b,c){var d=a.b;if(0<c&&(a.ca&&!--a.ca||Zb(a,b,1,a.i)))return!0;0<=c&&a.J.length&&(a.R++,b=Ab(a.H,b),null!=b&&(a.J[b][1]++,b=a.M[a.W],b.B=d.g[7],b.ma=!1,++a.W==a.M.length&&(a.W=0)));return!1}function Qc(a){var b,c;a.i=["bp"];if(void 0!==a.O)for(b=1;b<a.O.length;b++){c=a.O[b];var d=a.H;$b(d.P[W(c)>>>d.aa],!1)}a.O=["br"];if(void 0!==a.C)for(b=1;b<a.C.length;b++)c=a.C[b],d=a.H,$b(d.P[W(c)>>>d.aa],!0);a.C=["bw"];a.wa=0}
|
function Jc(a,b,c){var d=a.b;if(0<c&&(a.ca&&!--a.ca||Zb(a,b,1,a.i)))return!0;0<=c&&a.J.length&&(a.R++,b=Ab(a.H,b),null!=b&&(a.J[b][1]++,b=a.M[a.W],b.B=d.g[7],b.ma=!1,++a.W==a.M.length&&(a.W=0)));return!1}function $c(a){var b,c;a.i=["bp"];if(void 0!==a.O)for(b=1;b<a.O.length;b++){c=a.O[b];var d=a.H;$b(d.P[X(c)>>>d.aa],!1)}a.O=["br"];if(void 0!==a.C)for(b=1;b<a.C.length;b++)c=a.C[b],d=a.H,$b(d.P[X(c)>>>d.aa],!0);a.C=["bw"];a.na=0}
|
||||||
m.xa=function(a,b,c){var d=!0;c||md(this,a,b,!1,!0);if(a!=this.i){var e=W(b);if(-1===e)this.u("invalid address: "+q(b.B,4)),d=!1;else{var f=this.H;f.P[e>>>f.aa].xa(e&f.i,a==this.C)}}d&&(a.push(b),c?b.ma=!0:(nd(this,a,a.length-1,"set"),Rc(this)));return d};function md(a,b,c,d,e){var f=!1;c=W(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==W(g)&&(!d||g.ma)){f=!0;g.ma||e||nd(a,b,h,"cleared");b.splice(h,1);b!=a.i&&(d=a.H,$b(d.P[c>>>d.aa],b==a.C));g.ma||Rc(a);break}}return f}
|
m.xa=function(a,b,c){var d=!0;c||sd(this,a,b,!1,!0);if(a!=this.i){var e=X(b);if(-1===e)this.u("invalid address: "+q(b.B,4)),d=!1;else{var f=this.H;f.P[e>>>f.aa].xa(e&f.i,a==this.C)}}d&&(a.push(b),c?b.ma=!0:(td(this,a,a.length-1,"set"),ad(this)));return d};function sd(a,b,c,d,e){var f=!1;c=X(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==X(g)&&(!d||g.ma)){f=!0;g.ma||e||td(a,b,h,"cleared");b.splice(h,1);b!=a.i&&(d=a.H,$b(d.P[c>>>d.aa],b==a.C));g.ma||ad(a);break}}return f}
|
||||||
function od(a,b){for(var c=1;c<b.length;c++)nd(a,b,c);return b.length-1}function nd(a,b,c,d){c=b[c];a.u(b[0]+" "+q(c.B,4)+(d?" "+d:c.vb?' "'+c.vb+'"':""))}function ld(a,b){if(void 0!==b)Zb(a,b,1,a.i,!0),a.U=0;else for(var c=1;c<a.i.length;c++){var d=a.i[c];if(d.ma){if(!md(a,a.i,d,!0))break;c=0}}}
|
function ud(a,b){for(var c=1;c<b.length;c++)td(a,b,c);return b.length-1}function td(a,b,c,d){c=b[c];a.u(b[0]+" "+q(c.B,4)+(d?" "+d:c.wb?' "'+c.wb+'"':""))}function rd(a,b){if(void 0!==b)Zb(a,b,1,a.i,!0),a.U=0;else for(var c=1;c<a.i.length;c++){var d=a.i[c];if(d.ma){if(!sd(a,a.i,d,!0))break;c=0}}}
|
||||||
function Zb(a,b,c,d,e){var f=!1;if(!a.wa++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.ma)for(var k=W(g),l=0;l<c;l++)if(b+l==k){var n,f=!0;g.ma&&(md(a,d,g,!0),e=!0);if(n=g.zb){for(var f=!1,p=0;p<n.length;p++)if(!pd(a,n[p],!0)){if(n[p].indexOf("if")){f=!0;break}for(var z=p+1;z<n.length&&n[z].indexOf("else");z++)p++;if(z==n.length){f=!0;break}}a.b.A.Z||(f=!0)}if(f){e||nd(a,d,h,"hit");break}}}a.wa--;return f}
|
function Zb(a,b,c,d,e){var f=!1;if(!a.na++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.ma)for(var k=X(g),l=0;l<c;l++)if(b+l==k){var n,f=!0;g.ma&&(sd(a,d,g,!0),e=!0);if(n=g.Ab){for(var f=!1,p=0;p<n.length;p++)if(!vd(a,n[p],!0)){if(n[p].indexOf("if")){f=!0;break}for(var y=p+1;y<n.length&&n[y].indexOf("else");y++)p++;if(y==n.length){f=!0;break}}a.b.A.Z||(f=!0)}if(f){e||td(a,d,h,"hit");break}}}a.na--;return f}
|
||||||
function qd(a,b,c,d){for(var e=V(b.B),f=a.ua(b,1),h=a.oa[f]||[0],g="",k=Uc[h[0]],l=h.length-1,n=0,p,z=1;z<=l;z++){var J="";p=h[z];if(void 0!==p){var E=p&240;if(E){var ga=p&15;ga?n=ga:p|=n;p&61440||(p|=1==z?8192:4096);if(E&32)a:{var J=a,E=p,ga=b,B=" ";switch(E&15){case 1:B=q(J.ua(ga,1),2);break;case 2:B=q(J.ua(ga,1)<<24>>24,4);break;case 3:B=q(J.Ua(ga,2),4);break;default:J="imm("+ea(E)+")";break a}E&64?B="["+B+"]":E&16||(B="0x"+B);J=B}else E&16?J=Vc[(p&3840)>>8]:E&128&&(J=(f>>3&7).toString());if(!J||
|
function Ud(a,b,c,d){for(var e=W(b.B),f=a.ua(b,1),h=a.oa[f]||[0],g="",k=dd[h[0]],l=h.length-1,n=0,p,y=1;y<=l;y++){var J="";p=h[y];if(void 0!==p){var E=p&240;if(E){var ga=p&15;ga?n=ga:p|=n;p&61440||(p|=1==y?8192:4096);if(E&32)a:{var J=a,E=p,ga=b,B=" ";switch(E&15){case 1:B=q(J.ua(ga,1),2);break;case 2:B=q(J.ua(ga,1)<<24>>24,4);break;case 3:B=q(J.Ta(ga,2),4);break;default:J="imm("+ea(E)+")";break a}E&64?B="["+B+"]":E&16||(B="0x"+B);J=B}else E&16?J=ed[(p&3840)>>8]:E&128&&(J=(f>>3&7).toString());if(!J||
|
||||||
!J.length){g="INVALID";break}0<g.length&&(g+=",");g+=J||"???"}}}f="";h=q(e.B,4)+" ";if(-1!==e.B&&-1!==b.B){do if(f+=q(a.ua(e,1),2),null==e.B)break;while(e.B!=b.B)}h+=oa(f,10);h=h+(p&32768?"*":" ")+oa(k,7);g&&(h+=" "+g);c&&(h=oa(h,40)+";"+c,h=a.b.A.Fa?h+("cycles="+ic(a.b).toString()+" cs="+q(a.b.Oa)):h+(null!=d?"="+d.toString():""));return h}var rd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
!J.length){g="INVALID";break}0<g.length&&(g+=",");g+=J||"???"}}}f="";h=q(e.B,4)+" ";if(-1!==e.B&&-1!==b.B){do if(f+=q(a.ua(e,1),2),null==e.B)break;while(e.B!=b.B)}h+=oa(f,10);h=h+(p&32768?"*":" ")+oa(k,7);g&&(h+=" "+g);c&&(h=oa(h,40)+";"+c,h=a.b.A.Ea?h+("cycles="+ic(a.b).toString()+" cs="+q(a.b.Na)):h+(null!=d?"="+d.toString():""));return h}m.hb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||||
function sd(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
|
function Vd(a,b,c){var d=[],e=X(b)>>>0;for(b=0;b<a.G.length;b++){var f=a.G[b],h=f.B>>>0,g=f.Eb;if(e>=h&&e<h+g){e=ta(f.fb,[e-h],a.hb);0<=e?Wd(a,b,e,d):c&&(e=~e,Wd(a,b,e-1,d),Wd(a,b,e,d));break}}return d}function Wd(a,b,c,d){var e={},f=a.G[b].fb,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.G[b].qa[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
|
||||||
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 Xd(a,b){if("?"==b)a.u("frequency commands:"),a.u("\tclear\tclear all frequency counts");else{var c,d=0;if(a.J)if("clear"==b){for(c=0;c<a.J.length;c++)a.J[c]=[c,0];a.u("frequency data cleared");d++}else if(void 0!==b)a.u("unknown frequency command: "+b),d++;else{var e=a.J.slice();e.sort(function(a,b){return b[1]-a[1]});for(c=0;c<e.length;c++){var f=e[c][0],h=e[c][1];h&&(a.u((dd[a.oa[f][0]]+" ").substr(0,5)+" ("+("0x"+q(f,2))+"): "+h+" times"),d++)}}d||a.u("no frequency data available")}}
|
||||||
function bd(a,b,c){var d;if(b){b=ad(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var n=l[e++],p=n.length,n=pa(n);if(!n){f=!0;break}n=td(a,n,null,!1===c);if(void 0===n){f=!0;c=!1;break}g.push(n);if(e==l.length)break;var n=l[e++],z=n.length;k.length&&rd[n]<rd[k[k.length-1]]&&sd(g,k,1);k.push(n);b=b.substr(p+z)}sd(g,k)&&1==g.length||(f=!0);f?c&&a.u("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&ud(a,null,
|
function Yd(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Yc(a)||a.u("no variables"),!0;if(!c[2])return Yc(a,c[1]);if(!c[3])return delete a.V[c[1]],!0;var d=Sc(a,c[3]);return void 0!==d?(a.V[c[1]]=d,!0):!1}a.u("invalid assignment:"+b);return!1}
|
||||||
d))}return d}function ad(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=bd(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?q(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=X(a,c[1]),b=b.replace("["+c[1]+"]",d?q(a.Ua(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.R-a.ga}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
function Zd(a,b,c){var d=null;if(b=V(a,b,!0)){var e=Vd(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.B-e[1])&&(h=" + "+ea(f)),f=e[0]+" ("+q(e[1],4)+")"+h,c&&a.u(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.B)&&(h=" - "+ea(f)),f=e[4]+" ("+q(e[5],4)+")"+h,c&&a.u(f),d||(d=f))}else c&&a.u("no symbols")}return d}
|
||||||
function td(a,b,c,d){var e;void 0!==b?(e=fd(b),0<=e?e=gd(a,e):(e=a.V[b],void 0===e&&(e=da(b))),void 0!==e||d||a.u("invalid "+(c?c:"value")+": "+b)):d||a.u("missing "+(c||"value"));return e}
|
function pd(a,b){var c;if(b&&"?"==b[1])a.u("register commands:"),a.u("\tr\tdump registers"),a.u("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.u("missing value for "+b[1]);return}var h=!1,g=Sc(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "PC":d.g[7]=g;a.N=W(d.g[7]);break;case "CF":d.ta=g?d.ta|256:d.ta&255;break;case "ZF":d.ta=g?d.ta&
|
||||||
function ud(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=d&255,l=8,n="";void 0===l?l=32:32<l&&(l=32);if(null==k||isNaN(k))for(;0<l--;)n="?"+n;else for(;0<l--;)n=(k&1?"1":"0")+n,k>>=1;h=n+"b"+h;d>>=8}d="0x"+q(c)+" "+c+". ("+h+")"}a.u((null!=b?b+": ":"")+d);return e}function Td(a,b){if(b)return ud(a,b,a.V[b]);var c=0;for(b in a.V)ud(a,b,a.V[b]),c++;return 0<c}Pc.prototype.pa=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
-256:d.ta|255;break;case "SF":break;default:a.u("unknown register: "+e);return}if(!h){a.u("invalid value: "+f);return}F(d);a.u("updated registers:")}a.u("no regs");c&&(a.N=W(d.g[7]),qd(a,q(a.N.B,4)))}}function $d(a,b){b=pa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.u(nd(a,c[2])):Sc(a,b,!0)}function ae(a,b,c){var d="t"!=b;c=Uc(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ja(c,function(){return ob(a,!0)&&a.Ha(e,d,!1)},function(){F(a.b);ob(a,!1)})}
|
||||||
function Ud(a,b,c){var d=[],e=W(b)>>>0;for(b=0;b<a.G.length;b++){var f=a.G[b],h=f.B>>>0,g=f.Db;if(e>=h&&e<h+g){e=ta(f.fb,[e-h],a.pa);0<=e?Vd(a,b,e,d):c&&(e=~e,Vd(a,b,e-1,d),Vd(a,b,e,d));break}}return d}function Vd(a,b,c,d){var e={},f=a.G[b].fb,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.G[b].qa[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
|
function qd(a,b,c,d){if(b=V(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=V(a,c,!0);if(!d||d.B<b.B)return;e=d.B-b.B;if(256<e){a.u("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=pb(a,!1)||a.U?a.L:null;var h=null!=f?"cycles":null,g=Vd(a,b),k=b.B;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.u(l)}g[3]&&(h=g[3],f=null);f=Ud(a,b,h,f);a.u(f);a.N=b;e-=b.B-k;c++}}}
|
||||||
function Wd(a,b){if("?"==b)a.u("frequency commands:"),a.u("\tclear\tclear all frequency counts");else{var c,d=0;if(a.J)if("clear"==b){for(c=0;c<a.J.length;c++)a.J[c]=[c,0];a.u("frequency data cleared");d++}else if(void 0!==b)a.u("unknown frequency command: "+b),d++;else{var e=a.J.slice();e.sort(function(a,b){return b[1]-a[1]});for(c=0;c<e.length;c++){var f=e[c][0],h=e[c][1];h&&(a.u((Uc[a.oa[f][0]]+" ").substr(0,5)+" ("+("0x"+q(f,2))+"): "+h+" times"),d++)}}d||a.u("no frequency data available")}}
|
function ld(a,b,c,d){if(c)if(b){0>a.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.T?b="end":b=a.j[a.w+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(pa(b.substring(c,f))),c=f+1}}return a}
|
||||||
function Xd(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Td(a)||a.u("no variables"),!0;if(!c[2])return Td(a,c[1]);if(!c[3])return delete a.V[c[1]],!0;var d=bd(a,c[3]);return void 0!==d?(a.V[c[1]]=d,!0):!1}a.u("invalid assignment:"+b);return!1}
|
function vd(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(">> "+b):(a.T&&(a.u("ended assemble at "+q(a.S.B,4)),a.N=a.S,a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.da=null;if(qb(a)&&0<b.length){a.T&&(b="a "+q(a.S.B,4)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var n=V(a,f[1],!0);if(n)if(a.S=
|
||||||
function Yd(a,b,c){var d=null;if(b=X(a,b,!0)){var e=Ud(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.B-e[1])&&(h=" + "+ea(f)),f=e[0]+" ("+q(e[1],4)+")"+h,c&&a.u(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.B)&&(h=" - "+ea(f)),f=e[4]+" ("+q(e[5],4)+")"+h,c&&a.u(f),d||(d=f))}else c&&a.u("no symbols")}return d}
|
n,void 0===f[2])a.u("begin assemble at "+q(n.B,4)),a.T=!0,F(a.b);else{var p;a.u("not supported yet");p=[];if(p.length){for(var y=0;y<p.length;y++)a.eb(n,p[y],1);a.u(Ud(a,a.S))}}break;case "b":a:{var J=f[0],E=f[1],ga=b;if("?"==E)a.u("breakpoint commands:"),a.u("\tbp [a]\tset exec breakpoint at addr [a]"),a.u("\tbr [a]\tset read breakpoint at addr [a]"),a.u("\tbw [a]\tset write breakpoint at addr [a]"),a.u("\tbc [a]\tclear breakpoint at addr [a]"),a.u("\tbl\tlist all breakpoints"),a.u("\tbn [n]\tbreak after [n] instruction(s)");
|
||||||
function jd(a,b){var c;if(b&&"?"==b[1])a.u("register commands:"),a.u("\tr\tdump registers"),a.u("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.u("missing value for "+b[1]);return}var h=!1,g=bd(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "PC":d.g[7]=g;a.N=V(d.g[7]);break;case "CF":d.ta=g?d.ta|256:d.ta&255;break;case "ZF":d.ta=g?d.ta&
|
else{var B=J.charAt(1);if("l"==B){var Aa=0,Aa=Aa+ud(a,a.i),Aa=Aa+ud(a,a.O);(Aa+=ud(a,a.C))||a.u("no breakpoints")}else if("n"==B)a.ca=Uc(a,E),a.u("break after "+a.ca+" instruction(s)");else if(void 0===E)a.u("missing breakpoint address");else{var P=W();if("*"!=E&&(P=V(a,E,!0),!P))break a;"c"==B?null==P.B?($c(a),a.u("all breakpoints cleared")):sd(a,a.i,P)||sd(a,a.O,P)||sd(a,a.C,P)||a.u("breakpoint missing: "+q(P.B,4)):null!=P.B&&(kd(a,P,ga),"p"==B?a.xa(a.i,P):"r"==B?a.xa(a.O,P):"w"==B?a.xa(a.C,P):
|
||||||
-256:d.ta|255;break;case "SF":break;default:a.u("unknown register: "+e);return}if(!h){a.u("invalid value: "+f);return}F(d);a.u("updated registers:")}a.u("no regs");c&&(a.N=V(d.g[7]),kd(a,q(a.N.B,4)))}}function Zd(a,b){b=pa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.u(hd(a,c[2])):bd(a,b,!0)}function $d(a,b,c){var d="t"!=b;c=td(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ja(c,function(){return ob(a,!0)&&a.Ia(e,d,!1)},function(){F(a.b);ob(a,!1)})}
|
a.u("unknown breakpoint command: "+B))}}}break;case "c":a.ya&&(a.ya.value="");break;case "d":a:{var Ba,Ca=f[0],Y=f[1],qa=f[2],ue=f[3];if("?"==Y){var Z="";for(Ba in C)a.ja[Ba]&&(Z&&(Z+=","),Z+=Ba);Z+=",state,symbols";a.u("dump memory commands:");a.u("\tdb [a] [#] dump # bytes at address a");a.u("\tdw [a] [#] dump # words at address a");a.u("\tdd [a] [#] dump # dwords at address a");a.u("\tdh [#] [#] dump # instructions from history");Z.length&&a.u("dump extension commands:\n\t"+Z)}else if("state"==
|
||||||
function kd(a,b,c,d){if(b=X(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=X(a,c,!0);if(!d||d.B<b.B)return;e=d.B-b.B;if(256<e){a.u("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=pb(a,!1)||a.U?a.L:null;var h=null!=f?"cycles":null,g=Ud(a,b),k=b.B;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.u(l)}g[3]&&(h=g[3],f=null);f=qd(a,b,h,f);a.u(f);a.N=b;e-=b.B-k;c++}}}
|
Y){var wd=be(a.D,!0);"console"==qa?console.log(wd):(a.ya&&(a.ya.value=""),a.u(wd))}else if("symbols"==Y)for(var oc=0;oc<a.G.length;oc++){var pc=a.G[oc],Da;for(Da in pc.qa)if("."!=Da.charAt(0)){var xd=pc.qa[Da].o;if(void 0!==xd){var yd=pc.qa[Da].l;yd&&(Da=yd);a.u(q(xd,4)+" "+Da)}}}else{if("d"==Ca){for(Ba in C)if(f[1]==Ba){var zd=a.ja[Ba];zd?(f.shift(),f.shift(),zd(f)):a.u("no dump registered for "+Y);break a}Y||(Ca=a.Ma||"db")}else a.Ma=Ca;if("dh"==Ca){var Ad=Y,Bd=qa,Cd="",Dd=0,K=a.W,aa=a.M;if(aa.length){var Q=
|
||||||
function dd(a,b,c,d){if(c)if(b){0>a.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.T?b="end":b=a.j[a.w+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(pa(b.substring(c,f))),c=f+1}}return a}
|
+Ad||a.wa,Ea=+Bd||10;isNaN(Q)?Q=Ea:Cd="more ";Q>aa.length&&(a.u("note: only "+aa.length+" available"),Q=aa.length);K-=Q;0>K&&(null==aa[aa.length-1].B?(Q=K+Q,K=0):K+=aa.length);var qc=[];"call"==Bd&&(Ea=1E5,qc=["CALL"]);for(void 0!==Ad&&a.u(Q+" instructions earlier:");0<Ea&&K!=a.W;){var Ed=aa[K++];if(null==Ed.B)break;var cb=W(Ed.B),ve=Q--,Fd=Ud(a,cb,"history",ve);(!qc.length||0<=Fd.indexOf(qc[0]))&&a.u(Fd);cb.Wa&&(K+=cb.Wa,Ea-=cb.Wa,Q-=cb.Wa);K>=aa.length&&(K=0);a.wa=Q;Dd++;Ea--}}Dd||(a.u("no "+Cd+
|
||||||
function pd(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(">> "+b):(a.T&&(a.u("ended assemble at "+q(a.S.B,4)),a.N=a.S,a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.da=null;if(qb(a)&&0<b.length){a.T&&(b="a "+q(a.S.B,4)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var n=X(a,f[1],!0);if(n)if(a.S=
|
"history available"),a.wa=void 0)}else{var Cb=V(a,Y);if(Cb){var Db=0;qa&&("l"==qa.charAt(0)&&(qa=qa.substr(1)||ue),Db=Uc(a,qa)>>>0,65536<Db&&(Db=65536));for(var ra="",Eb="dd"==Ca?4:"dw"==Ca?2:1,Fb=Eb*Db||128,we=Fb+15>>4||1;we--&&0<Fb;){var Gb=0,rc=0,db,eb="",sc="",Y=q(Cb.B,4);for(db=16;0<db&&0<Fb;db--){var Hb=a.ua(Cb,1),Gb=Gb|Hb<<(rc++<<3);rc==Eb&&(eb+=q(Gb,2*Eb),eb+=1==Eb?9==db?"-":" ":" ",Gb=rc=0);sc+=32<=Hb&&128>Hb?String.fromCharCode(Hb):".";Fb--}ra&&(ra+="\n");ra+=Y+" "+eb+(0==db?" "+sc:"")}ra&&
|
||||||
n,void 0===f[2])a.u("begin assemble at "+q(n.B,4)),a.T=!0,F(a.b);else{var p;a.u("not supported yet");p=[];if(p.length){for(var z=0;z<p.length;z++)a.eb(n,p[z],1);a.u(qd(a,a.S))}}break;case "b":a:{var J=f[0],E=f[1],ga=b;if("?"==E)a.u("breakpoint commands:"),a.u("\tbp [a]\tset exec breakpoint at addr [a]"),a.u("\tbr [a]\tset read breakpoint at addr [a]"),a.u("\tbw [a]\tset write breakpoint at addr [a]"),a.u("\tbc [a]\tclear breakpoint at addr [a]"),a.u("\tbl\tlist all breakpoints"),a.u("\tbn [n]\tbreak after [n] instruction(s)");
|
a.u(ra);a.pa=Cb}}}}break;case "e":if("else"==f[0])break;var Ib=1,Gd=255,Hd=a.ua,Id=a.eb;"ew"==f[0]&&(Ib=2,Gd=65535,Hd=a.Ta,Id=a.zb);var Jd=Ib<<1,Kd=f[1];if(null==Kd)a.u("edit memory commands:"),a.u("\teb [a] [...] edit bytes at address a"),a.u("\tew [a] [...] edit words at address a");else{var Jb=V(a,Kd);if(Jb)for(var Kb=2;Kb<f.length;Kb++){var fb=Sc(a,f[Kb]);if(void 0===fb){a.u("unrecognized value: "+f[Kb]);break}fb&~Gd&&a.u("warning: "+q(fb)+" exceeds "+Ib+"-byte value");var xe=Hd.call(a,Jb);
|
||||||
else{var B=J.charAt(1);if("l"==B){var Aa=0,Aa=Aa+od(a,a.i),Aa=Aa+od(a,a.O);(Aa+=od(a,a.C))||a.u("no breakpoints")}else if("n"==B)a.ca=td(a,E),a.u("break after "+a.ca+" instruction(s)");else if(void 0===E)a.u("missing breakpoint address");else{var P=V();if("*"!=E&&(P=X(a,E,!0),!P))break a;"c"==B?null==P.B?(Qc(a),a.u("all breakpoints cleared")):md(a,a.i,P)||md(a,a.O,P)||md(a,a.C,P)||a.u("breakpoint missing: "+q(P.B,4)):null!=P.B&&(cd(a,P,ga),"p"==B?a.xa(a.i,P):"r"==B?a.xa(a.O,P):"w"==B?a.xa(a.C,P):
|
a.u("changing "+q(Jb.B,4)+" from 0x"+q(xe,Jd)+" to 0x"+q(fb,Jd));Id.call(a,Jb,fb,Ib)}}break;case "f":Xd(a,f[1]);break;case "g":a:{var Ld=f[1],ye=b;if(void 0!==Ld){var tc=V(a,Ld,!0);if(!tc)break a;kd(a,tc,ye);a.xa(a.i,tc,!0)}a.Ca(!0)||c||a.u("cpu busy or unavailable, run command ignored")}break;case "h":a:{var uc;if(a.A.Z)uc="halting",a.ba();else{if(pb(a,!0))break a;uc="already halted"}c||a.u(uc)}break;case "i":if("if"==f[0]){var vc;var gb=b.substr(2),gb=pa(gb);Sc(a,gb)?(c||a.u("true: "+gb),vc=!0):
|
||||||
a.u("unknown breakpoint command: "+B))}}}break;case "c":a.ya&&(a.ya.value="");break;case "d":a:{var Ba,Ca=f[0],Y=f[1],qa=f[2],te=f[3];if("?"==Y){var Z="";for(Ba in C)a.ja[Ba]&&(Z&&(Z+=","),Z+=Ba);Z+=",state,symbols";a.u("dump memory commands:");a.u("\tdb [a] [#] dump # bytes at address a");a.u("\tdw [a] [#] dump # words at address a");a.u("\tdd [a] [#] dump # dwords at address a");a.u("\tdh [#] [#] dump # instructions from history");Z.length&&a.u("dump extension commands:\n\t"+Z)}else if("state"==
|
(c||a.u("false: "+gb),vc=!1);vc||(d=!1)}break;case "k":var ze=f[0];if("?"==f[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");else{var wc=0,Md=W(),hb=W(a.b.g[6]);for(a.u("stack trace for "+q(hb.B,4));10>wc;){for(var sa=null,Ae=256;65536>hb.B>>>0;){Md.B=a.Ta(hb,2);if(null==hb.B||!Ae--)break;for(var Be=a,Lb=Md,Nd=null,ib=Lb.B,Od=ib,xc=1;6>=xc&&ib;xc++){if(2<xc){Lb.B=ib;var Mb=Ud(Be,Lb);if(0<=Mb.indexOf("CALL")){var Pd=Mb.indexOf(" ");if(ib+(Mb.indexOf(" ",
|
||||||
Y){var vd=ae(a.D,!0);"console"==qa?console.log(vd):(a.ya&&(a.ya.value=""),a.u(vd))}else if("symbols"==Y)for(var nc=0;nc<a.G.length;nc++){var oc=a.G[nc],Da;for(Da in oc.qa)if("."!=Da.charAt(0)){var wd=oc.qa[Da].o;if(void 0!==wd){var xd=oc.qa[Da].l;xd&&(Da=xd);a.u(q(wd,4)+" "+Da)}}}else{if("d"==Ca){for(Ba in C)if(f[1]==Ba){var yd=a.ja[Ba];yd?(f.shift(),f.shift(),yd(f)):a.u("no dump registered for "+Y);break a}Y||(Ca=a.Na||"db")}else a.Na=Ca;if("dh"==Ca){var zd=Y,Ad=qa,Bd="",Cd=0,K=a.W,aa=a.M;if(aa.length){var Q=
|
Pd+1)-Pd-1)/2==Od){Nd=Mb;break}}}ib--}Lb.B=Od;if(sa=Nd)break}if(!sa||null==sa)break;var Qd=null;if("ks"==ze){var Rd=sa.match(/[0-9A-F]+$/);Rd&&(Qd=Zd(a,Rd[0]))}sa=oa(sa,50)+" ;"+(Qd||"stack="+q(hb.B,4));a.u(sa);wc++}wc||a.u("no return addresses found")}break;case "l":if("ln"==f[0]){Zd(a,f[1],!0);break}break;case "m":a:{var ba,ca=null,x=f[1];"?"==x&&(x=void 0);if(void 0!==x){var ha=0;if("all"==x)ha=1878917119,x=null;else if("on"==x)ca=!0,x=null;else if("off"==x)ca=!1,x=null;else{"keys"==x&&(x="key");
|
||||||
+zd||a.Da,Ea=+Ad||10;isNaN(Q)?Q=Ea:Bd="more ";Q>aa.length&&(a.u("note: only "+aa.length+" available"),Q=aa.length);K-=Q;0>K&&(null==aa[aa.length-1].B?(Q=K+Q,K=0):K+=aa.length);var pc=[];"call"==Ad&&(Ea=1E5,pc=["CALL"]);for(void 0!==zd&&a.u(Q+" instructions earlier:");0<Ea&&K!=a.W;){var Dd=aa[K++];if(null==Dd.B)break;var db=V(Dd.B),ue=Q--,Ed=qd(a,db,"history",ue);(!pc.length||0<=Ed.indexOf(pc[0]))&&a.u(Ed);db.Xa&&(K+=db.Xa,Ea-=db.Xa,Q-=db.Xa);K>=aa.length&&(K=0);a.Da=Q;Cd++;Ea--}}Cd||(a.u("no "+Bd+
|
"kbd"==x&&(x="keyboard");for(ba in C)if(x==ba){ha=C[ba];ca=!!(a.Y&ha);break}if(!ha){a.u("unknown message category: "+x);break a}}if(ha)if("on"==f[2])a.Y|=ha,ca=!0;else if("off"==f[2]&&(a.Y&=~ha,ca=!1,1073741824==ha)){for(var yc=0;yc<a.fa.length;yc++)a.u(a.fa[yc]);a.fa=[]}}var Ce=0,ia="";for(ba in C)if(!x||x==ba){var De=!!(a.Y&C[ba]);if(null===ca||ca==De)ia&&(ia+=","),++Ce%10||(ia+="\n\t"),"key"==ba&&(ba="keys"),ia+=ba}void 0===x&&a.u("message commands:\n\tm [category] [on|off]\tturn categories on/off");
|
||||||
"history available"),a.Da=void 0)}else{var Cb=X(a,Y);if(Cb){var Db=0;qa&&("l"==qa.charAt(0)&&(qa=qa.substr(1)||te),Db=td(a,qa)>>>0,65536<Db&&(Db=65536));for(var ra="",Eb="dd"==Ca?4:"dw"==Ca?2:1,Fb=Eb*Db||128,ve=Fb+15>>4||1;ve--&&0<Fb;){var Gb=0,qc=0,eb,fb="",rc="",Y=q(Cb.B,4);for(eb=16;0<eb&&0<Fb;eb--){var Hb=a.ua(Cb,1),Gb=Gb|Hb<<(qc++<<3);qc==Eb&&(fb+=q(Gb,2*Eb),fb+=1==Eb?9==eb?"-":" ":" ",Gb=qc=0);rc+=32<=Hb&&128>Hb?String.fromCharCode(Hb):".";Fb--}ra&&(ra+="\n");ra+=Y+" "+fb+(0==eb?" "+rc:"")}ra&&
|
a.u((null!==ca?ca?"messages on: ":"messages off: ":"message categories:\n\t")+(ia||"none"));ad(a)}break;case "p":if("print"==f[0]){$d(a,b.substr(5));break}var Ee="pr"==f[0]?1:0;if(a.U)a.u("step in progress");else{var Sd=W(a.b.g[7]);a.ua(Sd);a.U?(a.xa(a.i,Sd,!0),a.Ca()||(a.D&&a.D.Ra(),a.U=0)):ae(a,Ee?"tr":"t")}break;case "r":if("reset"==b){a.D&&a.D.reset();break}pd(a,f);break;case "s":a:switch(f[1]){case "cs":var jb;void 0!==f[3]&&(jb=+f[3]);switch(f[2]){case "int":a.b.Fa=jb;break;case "start":a.b.Oa=
|
||||||
a.u(ra);a.na=Cb}}}}break;case "e":if("else"==f[0])break;var Ib=1,Fd=255,Gd=a.ua,Hd=a.eb;"ew"==f[0]&&(Ib=2,Fd=65535,Gd=a.Ua,Hd=a.yb);var Id=Ib<<1,Jd=f[1];if(null==Jd)a.u("edit memory commands:"),a.u("\teb [a] [...] edit bytes at address a"),a.u("\tew [a] [...] edit words at address a");else{var Jb=X(a,Jd);if(Jb)for(var Kb=2;Kb<f.length;Kb++){var gb=bd(a,f[Kb]);if(void 0===gb){a.u("unrecognized value: "+f[Kb]);break}gb&~Fd&&a.u("warning: "+q(gb)+" exceeds "+Ib+"-byte value");var we=Gd.call(a,Jb);
|
jb;break;case "stop":a.b.Ga=jb;break;default:a.u("unknown cs option");break a}void 0!==jb&&fc(a.b);a.u("checksums "+(a.b.A.Ea?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(kc(a.b,+f[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.b.Aa.toFixed(2)+"Mhz")+" ("+a.b.Ba+"x)");break;case "?":a.u("debugger options:");a.u("\tcs int #\tset checksum cycle interval to #");a.u("\tcs start #\tset checksum cycle start count to #");a.u("\tcs stop #\tset checksum cycle stop count to #");
|
||||||
a.u("changing "+q(Jb.B,4)+" from 0x"+q(we,Id)+" to 0x"+q(gb,Id));Hd.call(a,Jb,gb,Ib)}}break;case "f":Wd(a,f[1]);break;case "g":a:{var Kd=f[1],xe=b;if(void 0!==Kd){var sc=X(a,Kd,!0);if(!sc)break a;cd(a,sc,xe);a.xa(a.i,sc,!0)}a.Ca(!0)||c||a.u("cpu busy or unavailable, run command ignored")}break;case "h":a:{var tc;if(a.A.Z)tc="halting",a.ba();else{if(pb(a,!0))break a;tc="already halted"}c||a.u(tc)}break;case "i":if("if"==f[0]){var uc;var hb=b.substr(2),hb=pa(hb);bd(a,hb)?(c||a.u("true: "+hb),uc=!0):
|
a.u("\tsp #\t\tset speed multiplier to #");break;default:f[1]&&a.u("unknown option: "+f[1])}break;case "t":ae(a,f[0],f[1]);break;case "u":qd(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Yd(a,b.substr(3))||(d=!1);break}a.u("PDP11js version 1.30.0 ("+a.b.pb+",RELEASE"+(sb?",TYPEDARRAYS":",LONGARRAYS")+")");a.u(window?window.navigator.userAgent:"");break;case "?":if(f[1]){$d(a,b.substr(1));break}var kb="commands:",zc;for(zc in cd)kb+="\n"+oa(zc,9)+cd[zc];Ic(a)||(kb+="\nnote: frequency/history disabled if no exec breakpoints");
|
||||||
(c||a.u("false: "+hb),uc=!1);uc||(d=!1)}break;case "k":var ye=f[0];if("?"==f[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");else{var vc=0,Ld=V(),ib=V(a.b.g[6]);for(a.u("stack trace for "+q(ib.B,4));10>vc;){for(var sa=null,ze=256;65536>ib.B>>>0;){Ld.B=a.Ua(ib,2);if(null==ib.B||!ze--)break;for(var Ae=a,Lb=Ld,Md=null,jb=Lb.B,Nd=jb,wc=1;6>=wc&&jb;wc++){if(2<wc){Lb.B=jb;var Mb=qd(Ae,Lb);if(0<=Mb.indexOf("CALL")){var Od=Mb.indexOf(" ");if(jb+(Mb.indexOf(" ",
|
a.u(kb);break;default:a.u("unknown command: "+b),d=!1}}}catch(Td){a.u("debugger error: "+(Td.stack||Td.message)),d=!1}return d}function gc(a,b,c){b=ld(a,b,c);for(var d in b)if(!vd(a,b[d]))return!1;return!0}Qa(function(){for(var a=z(document,"pdp11","debugger"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Zc(d);mb(d,c)}});
|
||||||
Od+1)-Od-1)/2==Nd){Md=Mb;break}}}jb--}Lb.B=Nd;if(sa=Md)break}if(!sa||null==sa)break;var Pd=null;if("ks"==ye){var Qd=sa.match(/[0-9A-F]+$/);Qd&&(Pd=Yd(a,Qd[0]))}sa=oa(sa,50)+" ;"+(Pd||"stack="+q(ib.B,4));a.u(sa);vc++}vc||a.u("no return addresses found")}break;case "l":if("ln"==f[0]){Yd(a,f[1],!0);break}break;case "m":a:{var ba,ca=null,x=f[1];"?"==x&&(x=void 0);if(void 0!==x){var ha=0;if("all"==x)ha=1878917119,x=null;else if("on"==x)ca=!0,x=null;else if("off"==x)ca=!1,x=null;else{"keys"==x&&(x="key");
|
function ce(a,b,c){t.call(this,"Computer",a,ce,67108864);this.A.X=!1;de(this,b);this.N=dc(this,"autoPower",a);this.w=0;this.U=a.busWidth||a.buswidth;this.i=ee;this.L=null;this.G=this.S=!1;this.V=dc(this,"url")||"";(Math.random()+.1).toString(36);this.j=fe(this);if(this.b=lb("CPU",this.id)){this.F=lb("Debugger",this.id);this.H=new vb({id:this.nb+".bus",busWidth:this.U},this.b,this.F);var d,e=bb(this.id);if((this.D=lb("Panel",this.id))&&this.D.ya)for(b=0;b<e.length;b++)d=e[b],d.ea=this.D.ea,d.u=this.D.u,
|
||||||
"kbd"==x&&(x="keyboard");for(ba in C)if(x==ba){ha=C[ba];ca=!!(a.Y&ha);break}if(!ha){a.u("unknown message category: "+x);break a}}if(ha)if("on"==f[2])a.Y|=ha,ca=!0;else if("off"==f[2]&&(a.Y&=~ha,ca=!1,1073741824==ha)){for(var xc=0;xc<a.fa.length;xc++)a.u(a.fa[xc]);a.fa=[]}}var Be=0,ia="";for(ba in C)if(!x||x==ba){var Ce=!!(a.Y&C[ba]);if(null===ca||ca==Ce)ia&&(ia+=","),++Be%10||(ia+="\n\t"),"key"==ba&&(ba="keys"),ia+=ba}void 0===x&&a.u("message commands:\n\tm [category] [on|off]\tturn categories on/off");
|
d.ya=this.D.ya;this.u("PDP11js v1.30.0\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");this.u("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<e.length;b++)d=e[b],d.za&&d.za(this,this.H,this.b,this.F);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.i=parseInt(d,10));var f;if(a=dc(this,"state")||(f=!0,a.state))b=this.O=a,f||(this.G=!0,this.i=ee),this.i&&(this.M=
|
||||||
a.u((null!==ca?ca?"messages on: ":"messages off: ":"message categories:\n\t")+(ia||"none"));Rc(a)}break;case "p":if("print"==f[0]){Zd(a,b.substr(5));break}var De="pr"==f[0]?1:0;if(a.U)a.u("step in progress");else{var Rd=V(a.b.g[7]);a.ua(Rd);a.U?(a.xa(a.i,Rd,!0),a.Ca()||(a.D&&a.D.Sa(),a.U=0)):$d(a,De?"tr":"t")}break;case "r":if("reset"==b){a.D&&a.D.reset();break}jd(a,f);break;case "s":a:switch(f[1]){case "cs":var kb;void 0!==f[3]&&(kb=+f[3]);switch(f[2]){case "int":a.b.Ga=kb;break;case "start":a.b.Pa=
|
new G(this,"1.30.0"),ge(this.M)?b=null:delete this.M);!b&&this.i&&(b=he(this))&&(this.G=!0);if(b){var h=this;xa(b,null,!0,function(a,b,c){c?(h.J=null,h.G=!1,h.ea("Unable to load machine state from server (error "+c+(b?": "+pa(b):"")+")")):(h.L=b,h.S=!0);A(h)})}else A(this);this.K.power||(this.N=!0);!c&&this.N&&ie(this,this.Pa)}else r("Unable to find CPU component")}v(ce);var ee=0;
|
||||||
kb;break;case "stop":a.b.Ha=kb;break;default:a.u("unknown cs option");break a}void 0!==kb&&fc(a.b);a.u("checksums "+(a.b.A.Fa?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(kc(a.b,+f[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.b.Aa.toFixed(2)+"Mhz")+" ("+a.b.Ba+"x)");break;case "?":a.u("debugger options:");a.u("\tcs int #\tset checksum cycle interval to #");a.u("\tcs start #\tset checksum cycle start count to #");a.u("\tcs stop #\tset checksum cycle stop count to #");
|
function de(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.T=b}function dc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.T&&(d=a.T[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function ie(a,b,c){for(var d=bb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!qb(f)){qb(f,function(){ie(a,b,c)});return}}b.call(a,c)}
|
||||||
a.u("\tsp #\t\tset speed multiplier to #");break;default:f[1]&&a.u("unknown option: "+f[1])}break;case "t":$d(a,f[0],f[1]);break;case "u":kd(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Xd(a,b.substr(3))||(d=!1);break}a.u("PDP11js version 1.30.0 ("+a.b.ob+",RELEASE"+(sb?",TYPEDARRAYS":",LONGARRAYS")+")");a.u(window?window.navigator.userAgent:"");break;case "?":if(f[1]){Zd(a,b.substr(1));break}var lb="commands:",yc;for(yc in Tc)lb+="\n"+oa(yc,9)+Tc[yc];Ic(a)||(lb+="\nnote: frequency/history disabled if no exec breakpoints");
|
function je(a,b){var c=new G(a,"1.30.0","validate");if(ge(c)&&ke(c)){var d=le(c,"timestamp"),e=b?le(b,"timestamp"):"unknown";d!=e&&(a.ea("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=ce.prototype;
|
||||||
a.u(lb);break;default:a.u("unknown command: "+b),d=!1}}}catch(Sd){a.u("debugger error: "+(Sd.stack||Sd.message)),d=!1}return d}function gc(a,b,c){b=dd(a,b,c);for(var d in b)if(!pd(a,b[d]))return!1;return!0}Qa(function(){for(var a=y(document,"pdp11","debugger"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Pc(d);mb(d,c)}});
|
m.Pa=function(a){void 0===a&&(a=this.i||(this.L?1:ee));if(!this.w){this.w++;var b=!1,c=!1;this.R=!1;var d=this.M||new G(this,"1.30.0");if(-1==a)b=!0;else if(a>ee){if(ge(d,this.L)){this.C=new G(this,"1.30.0","failsafe");ge(this.C)&&(me(this,d),a=2,ne(this.C));H(this.C,"timestamp",va());oe(this.C);var e=this.i&&!this.G;if(1==a||ya("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=ke(d)){var f=le(d,"code"),h=le(d,"data");f&&("ok"==f?ge(d,h):("error"==f&&
|
||||||
function be(a,b,c){t.call(this,"Computer",a,be,67108864);this.A.X=!1;ce(this,b);this.N=dc(this,"autoPower",a);this.w=0;this.U=a.busWidth||a.buswidth;this.i=de;this.L=null;this.G=this.S=!1;this.V=dc(this,"url")||"";(Math.random()+.1).toString(36);this.j=ee(this);if(this.b=cb("CPU",this.id)){this.F=cb("Debugger",this.id);this.H=new vb({id:this.mb+".bus",busWidth:this.U},this.b,this.F);var d,e=bb(this.id);if((this.D=cb("Panel",this.id))&&this.D.ya)for(b=0;b<e.length;b++)d=e[b],d.ea=this.D.ea,d.u=this.D.u,
|
"no machine state"!=h?(this.ea("Error: "+h),"unable to verify user"==h&&(Ha("user",""),this.j=null)):this.u(f+": "+h),ne(d),ge(d)?(c=ke(d),e=!0):c=!1))}e&&je(this,c?d:null)}else 2==a&&d.clear()}else je(this);delete this.L;delete this.M}e=bb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=pe(this,h,d,b,c));b=[d,a,c];-1!=a?ie(this,this.jb,b):this.jb(b)}};
|
||||||
d.ya=this.D.ya;this.u("PDP11js v1.30.0\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");this.u("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<e.length;b++)d=e[b],d.za&&d.za(this,this.H,this.b,this.F);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.i=parseInt(d,10));var f;if(a=dc(this,"state")||(f=!0,a.state))b=this.O=a,f||(this.G=!0,this.i=de),this.i&&(this.M=
|
function pe(a,b,c,d,e){if(!b.A.X){b.A.X=!0;if(b.sa){var f=null;e&&((f=le(c,b.id))||(f=le(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.sa(f,d)&&f&&(r("Unable to restore state for "+b.type),a.O&&!a.S?(c.clear(),a.i=ee,window&&window.location.reload()):a.R=!0,b.sa(null),e=!1)}if(!d&&b.mb)for(a=b.mb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||||
new G(this,"1.30.0"),fe(this.M)?b=null:delete this.M);!b&&this.i&&(b=ge(this))&&(this.G=!0);if(b){var h=this;xa(b,null,!0,function(a,b,c){c?(h.J=null,h.G=!1,h.ea("Unable to load machine state from server (error "+c+(b?": "+pa(b):"")+")")):(h.L=b,h.S=!0);A(h)})}else A(this);this.K.power||(this.N=!0);!c&&this.N&&he(this,this.Qa)}else r("Unable to find CPU component")}v(be);var de=0;
|
m.jb=function(a){var b=a[0],c=0>a[1];a=a[2];this.W=!0;this.A.X=!0;var d=this.K.power;d&&(d.textContent="Shutdown");this.b&&(pe(this,this.b,b,c,a),this.b.Ja());this.R&&(me(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
|
||||||
function ce(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.T=b}function dc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.T&&(d=a.T[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function he(a,b,c){for(var d=bb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!qb(f)){qb(f,function(){he(a,b,c)});return}}b.call(a,c)}
|
function me(a,b){if(ya("There may be a problem with your PDP11js machine.\n\nTo help us diagnose it, click OK to send this PDP11js machine state to http://www.pcjs.org.")){var c=a.j||"",d=b.toString(),e={app:"PDP11js",ver:"1.30.0"};e.url=a.V;e.user=c;e.type="bug";e.data=d;xa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
||||||
function ie(a,b){var c=new G(a,"1.30.0","validate");if(fe(c)&&je(c)){var d=ke(c,"timestamp"),e=b?ke(b,"timestamp"):"unknown";d!=e&&(a.ea("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=be.prototype;
|
function be(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new G(a,"1.30.0"),h=new G(a,"1.30.0","validate"),g=va();H(h,"timestamp",g);H(f,"timestamp",g);H(f,"version","1.30.0");H(f,"url",window?window.location.href:null);H(f,"browser",window?window.navigator.userAgent:"");a.b&&a.b.ra&&(c&&a.b.ba(),d=a.b.ra(b,c),"object"===typeof d&&H(f,a.b.id,d),c&&(a.b.A.X=!1,!1===d&&(e=null)));for(var g=bb(a.id),k=0;k<g.length;k++){var l=g[k];l.A.X&&(l.ra&&(d=l.ra(b,c),"object"===typeof d&&H(f,l.id,d)),c&&
|
||||||
m.Qa=function(a){void 0===a&&(a=this.i||(this.L?1:de));if(!this.w){this.w++;var b=!1,c=!1;this.R=!1;var d=this.M||new G(this,"1.30.0");if(-1==a)b=!0;else if(a>de){if(fe(d,this.L)){this.C=new G(this,"1.30.0","failsafe");fe(this.C)&&(le(this,d),a=2,me(this.C));H(this.C,"timestamp",va());ne(this.C);var e=this.i&&!this.G;if(1==a||ya("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=je(d)){var f=ke(d,"code"),h=ke(d,"data");f&&("ok"==f?fe(d,h):("error"==f&&
|
(l.A.X=!1,!1===d&&(e=null)))}e&&(c?(g=d=!1,b?(a.j&&qe(a,a.j,f.toString()),oe(h)&&oe(f)||(e=null,d=g=!0)):a.i&&(d=!0,g=3==a.i),d&&f.clear(g)):e=f.toString());c&&(a.A.X=!1,b=a.K.power)&&(b.textContent="Power");a.w=0;return e}m.reset=function(){this.H&&this.H.reset&&(this.F&&nb(this,0)&&this.F.message("Resetting "+this.H.type,void 0),this.H.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.H&&c.reset&&(this.F&&nb(this,0)&&this.F.message("Resetting "+c.type,void 0),c.reset())}};
|
||||||
"no machine state"!=h?(this.ea("Error: "+h),"unable to verify user"==h&&(Ha("user",""),this.j=null)):this.u(f+": "+h),me(d),fe(d)?(c=je(d),e=!0):c=!1))}e&&ie(this,c?d:null)}else 2==a&&d.clear()}else ie(this);delete this.L;delete this.M}e=bb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=oe(this,h,d,b,c));b=[d,a,c];-1!=a?he(this,this.ib,b):this.ib(b)}};
|
|
||||||
function oe(a,b,c,d,e){if(!b.A.X){b.A.X=!0;if(b.sa){var f=null;e&&((f=ke(c,b.id))||(f=ke(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.sa(f,d)&&f&&(r("Unable to restore state for "+b.type),a.O&&!a.S?(c.clear(),a.i=de,window&&window.location.reload()):a.R=!0,b.sa(null),e=!1)}if(!d&&b.lb)for(a=b.lb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
|
||||||
m.ib=function(a){var b=a[0],c=0>a[1];a=a[2];this.W=!0;this.A.X=!0;var d=this.K.power;d&&(d.textContent="Shutdown");this.b&&(oe(this,this.b,b,c,a),this.b.Ka());this.R&&(le(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
|
|
||||||
function le(a,b){if(ya("There may be a problem with your PDP11js machine.\n\nTo help us diagnose it, click OK to send this PDP11js machine state to http://www.pcjs.org.")){var c=a.j||"",d=b.toString(),e={app:"PDP11js",ver:"1.30.0"};e.url=a.V;e.user=c;e.type="bug";e.data=d;xa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
|
||||||
function ae(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new G(a,"1.30.0"),h=new G(a,"1.30.0","validate"),g=va();H(h,"timestamp",g);H(f,"timestamp",g);H(f,"version","1.30.0");H(f,"url",window?window.location.href:null);H(f,"browser",window?window.navigator.userAgent:"");a.b&&a.b.ra&&(c&&a.b.ba(),d=a.b.ra(b,c),"object"===typeof d&&H(f,a.b.id,d),c&&(a.b.A.X=!1,!1===d&&(e=null)));for(var g=bb(a.id),k=0;k<g.length;k++){var l=g[k];l.A.X&&(l.ra&&(d=l.ra(b,c),"object"===typeof d&&H(f,l.id,d)),c&&
|
|
||||||
(l.A.X=!1,!1===d&&(e=null)))}e&&(c?(g=d=!1,b?(a.j&&pe(a,a.j,f.toString()),ne(h)&&ne(f)||(e=null,d=g=!0)):a.i&&(d=!0,g=3==a.i),d&&f.clear(g)):e=f.toString());c&&(a.A.X=!1,b=a.K.power)&&(b.textContent="Power");a.w=0;return e}m.reset=function(){this.H&&this.H.reset&&(this.F&&nb(this,0)&&this.F.message("Resetting "+this.H.type,void 0),this.H.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.H&&c.reset&&(this.F&&nb(this,0)&&this.F.message("Resetting "+c.type,void 0),c.reset())}};
|
|
||||||
m.start=function(a,b){for(var c=bb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var c=bb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
m.start=function(a,b){for(var c=bb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var c=bb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||||
m.ha=function(a,b,c){var d=this;switch(b){case "power":return this.K[b]=c,c.onclick=function(){d.w||(d.A.X?ae(d,!1,!0):he(d,d.Qa))},!0;case "reset":return this.K[b]=c,c.onclick=function(){if(d.A.X&&!d.w)if(d.i&&!d.J){var a=ya("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");ae(d,a,!0);!a&&d.O?window&&window.location.reload():d.Qa(de)}else d.reset(),d.b&&d.b.Ka()},!0;case "save":if(ka()){c.parentNode.removeChild(c);break}this.K[b]=
|
m.ha=function(a,b,c){var d=this;switch(b){case "power":return this.K[b]=c,c.onclick=function(){d.w||(d.A.X?be(d,!1,!0):ie(d,d.Pa))},!0;case "reset":return this.K[b]=c,c.onclick=function(){if(d.A.X&&!d.w)if(d.i&&!d.J){var a=ya("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");be(d,a,!0);!a&&d.O?window&&window.location.reload():d.Pa(ee)}else d.reset(),d.b&&d.b.Ja()},!0;case "save":if(ka()){c.parentNode.removeChild(c);break}this.K[b]=
|
||||||
c;c.onclick=function(){var a=ee(d,!0);if(a){var b=!!(d.i&&!d.J||d.O),c=ae(d,b);b?pe(d,a,c):d.ea("Resume disabled, machine state not saved")}};return!0}return!1};
|
c;c.onclick=function(){var a=fe(d,!0);if(a){var b=!!(d.i&&!d.J||d.O),c=be(d,b);b?qe(d,a,c):d.ea("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||||
function ee(a,b){var c=a.j;c||(c=Ga("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=qe(a,c))||a.ea("The user ID is invalid."))):b&&a.ea("Browser local storage is not available"));return c}
|
function fe(a,b){var c=a.j;c||(c=Ga("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=re(a,c))||a.ea("The user ID is invalid."))):b&&a.ea("Browser local storage is not available"));return c}
|
||||||
function qe(a,b){a.j=null;var c=xa(la()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(Ha("user",c.data),a.j=c.data)}catch(e){r(e.message+" ("+d+")")}return a.j}function ge(a){var b=null;a.j&&(b=la()+"/api/v1/user?req=load&user="+a.j+"&state="+re(a,"1.30.0"));return b}
|
function re(a,b){a.j=null;var c=xa(la()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(Ha("user",c.data),a.j=c.data)}catch(e){r(e.message+" ("+d+")")}return a.j}function he(a){var b=null;a.j&&(b=la()+"/api/v1/user?req=load&user="+a.j+"&state="+se(a,"1.30.0"));return b}
|
||||||
function pe(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=re(a,"1.30.0");d.data=c;b=xa(la()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ea("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ea(c),Ha("user",""),a.j=null)}}m.Sa=function(){};
|
function qe(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=se(a,"1.30.0");d.data=c;b=xa(la()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ea("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ea(c),Ha("user",""),a.j=null)}}m.Ra=function(){};
|
||||||
m.ia=function(a){this.b&&this.b.ia(a);this.D&&this.D.ia(a)};Qa(function(){for(var a=y(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=w(c),c=y(c,"pdp11","computer"),e=0;e<c.length;e++){var f=c[e],h=w(f),h=new be(h,d,!0);mb(h,f);h.N&&he(h,h.Qa)}});La.show.push(function(){for(var a=y(document,"pdp11","computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=cb("Computer",c.id))&&c.W&&!c.A.X&&c.Qa(-1)}});
|
m.ia=function(a){this.b&&this.b.ia(a);this.D&&this.D.ia(a)};Qa(function(){for(var a=z(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=w(c),c=z(c,"pdp11","computer"),e=0;e<c.length;e++){var f=c[e],h=w(f),h=new ce(h,d,!0);mb(h,f);h.N&&ie(h,h.Pa)}});La.show.push(function(){for(var a=z(document,"pdp11","computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=lb("Computer",c.id))&&c.W&&!c.A.X&&c.Pa(-1)}});
|
||||||
La.exit.push(function(){for(var a=y(document,"pdp11","computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=cb("Computer",c.id))&&c.A.X&&ae(c,!(!c.i||c.J),!0)}});function G(a,b,c){this.id=a.id;this.key=re(a,b,c);this.F=a.F;me(this,a.Gb)}function re(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}
|
La.exit.push(function(){for(var a=z(document,"pdp11","computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=lb("Computer",c.id))&&c.A.X&&be(c,!(!c.i||c.J),!0)}});function G(a,b,c){this.id=a.id;this.key=se(a,b,c);this.F=a.F;ne(this,a.Hb)}function se(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||||
G.prototype={constructor:G,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){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}}};
|
G.prototype={constructor:G,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){ne(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};
|
||||||
function me(a,b){a[a.id]={};b&&H(a,"parms",b);a.b=!1}function ne(a){var b=!0;if(Fa()){var c=JSON.stringify(a[a.id]);Ha(a.key,c)||(r("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function je(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){r(c.message||c),b=!1}return b}function fe(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:Fa()&&(b=Ga(a.key))?(a[a.id]=b,a.b=!0):!1}function ke(a,b){return a[a.id][b]||null}function H(a,b,c){try{a[a.id][b]=c}catch(d){}}var se=0;
|
function ne(a,b){a[a.id]={};b&&H(a,"parms",b);a.b=!1}function oe(a){var b=!0;if(Fa()){var c=JSON.stringify(a[a.id]);Ha(a.key,c)||(r("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function ke(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){r(c.message||c),b=!1}return b}function ge(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:Fa()&&(b=Ga(a.key))?(a[a.id]=b,a.b=!0):!1}function le(a,b){return a[a.id][b]||null}function H(a,b,c){try{a[a.id][b]=c}catch(d){}}var te=0;
|
||||||
function Ee(a,b,c,d,e,f){e("Loading "+a+"...");xa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Fe(g,a,b,c,d,e,f)})}
|
function Fe(a,b,c,d,e,f){e("Loading "+a+"...");xa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Ge(g,a,b,c,d,e,f)})}
|
||||||
function Fe(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){ab(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDP11js$2"),
|
function Ge(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){ab(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDP11js$2"),
|
||||||
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pdp11$2"));g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){g=null,a=p.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Ge(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pdp11$2"));g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){g=null,a=p.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?He(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||||
function Ge(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");xa(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,n=/( [a-z]+=)(['"])(.*?)\2/g;l=n.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
function He(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");xa(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,n=/( [a-z]+=)(['"])(.*?)\2/g;l=n.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||||
"");a=a.replace(d[0],h);Ge(a,b,c)}})}else c(a,null)}
|
"");a=a.replace(d[0],h);He(a,b,c)}})}else c(a,null)}
|
||||||
function He(a,b,c,d){function e(a){if(void 0===g){var b=h&&y(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=na(a))}function f(a){e("Error: "+a);k&&(--se||Sa(!0));k=!1}var h,g,k=!0;se++;$a[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],p=document.createElement("style");p.type="text/css";p.styleSheet?p.styleSheet.cssText=l:p.appendChild(document.createTextNode(l));n.appendChild(p)}c||
|
function Ie(a,b,c,d){function e(a){if(void 0===g){var b=h&&z(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=na(a))}function f(a){e("Error: "+a);k&&(--te||Sa(!0));k=!1}var h,g,k=!0;te++;$a[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],p=document.createElement("style");p.type="text/css";p.styleSheet?p.styleSheet.cssText=l:p.appendChild(document.createTextNode(l));n.appendChild(p)}c||
|
||||||
(c="/versions/pdp11/1.30.0/components.xsl");l=function(d,g){g?Ee(c,null,null,!1,e,function(d,k){if(k)if(ab(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--se||Sa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--se||Sa(!0)):f("invalid machine element: "+
|
(c="/versions/pdp11/1.30.0/components.xsl");l=function(d,g){g?Fe(c,null,null,!1,e,function(d,k){if(k)if(ab(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--te||Sa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--te||Sa(!0)):f("invalid machine element: "+
|
||||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?Ee(b,a,d,!0,e,l):Fe(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(z){f(z.message)}return k}window.embedPDP11=function(a,b,c,d){Sa(!1);return He(a,b,c,d)};window.enableEvents=Sa;window.sendEvent=Ta;})();
|
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?Fe(b,a,d,!0,e,l):Ge(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(y){f(y.message)}return k}window.embedPDP11=function(a,b,c,d){Sa(!1);return Ie(a,b,c,d)};window.enableEvents=Sa;window.sendEvent=Ta;})();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue