Replaced loadResource() with the more streamlined getResource(), for all your resource-getting needs (well, except for binary files, which should be coming soon)
This commit is contained in:
parent
466c087ece
commit
f032f95611
26 changed files with 3881 additions and 3777 deletions
8
_includes/page-scripts.html
Normal file
8
_includes/page-scripts.html
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{% comment %}
|
||||
|
||||
Used by pages like the one in /api/v1/dump/ to implement a client-side API.
|
||||
|
||||
{% endcomment %}
|
||||
{% for script in page.scripts %}
|
||||
<script type="text/javascript" src="{{ site.baseurl }}{{ script }}"></script>
|
||||
{% endfor %}
|
||||
|
|
@ -17,6 +17,8 @@
|
|||
|
||||
{% include machine-engines.html %}
|
||||
|
||||
{% include page-scripts.html %}
|
||||
|
||||
{% include google-analytics.html %}
|
||||
|
||||
</body>
|
||||
|
|
|
|||
26
api/v1/dump/README.md
Normal file
26
api/v1/dump/README.md
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
---
|
||||
layout: page
|
||||
title: PCjs DiskDump and FileDump API
|
||||
permalink: /api/v1/dump/
|
||||
scripts: # the following list of scripts should mirror what /modules/diskdump/lib/diskdump.js requires
|
||||
- /modules/shared/lib/defines.js
|
||||
- /modules/shared/lib/netlib.js
|
||||
- /modules/shared/lib/weblib.js
|
||||
- /modules/shared/lib/diskapi.js
|
||||
- /modules/shared/lib/dumpapi.js
|
||||
- /modules/diskdump/lib/diskdump.js
|
||||
---
|
||||
|
||||
PCjs DiskDump and FileDump API
|
||||
===
|
||||
|
||||
The PCjs [DiskDump](/modules/diskdump/) and [FileDump](/modules/filedump/) API are not supported by the current
|
||||
PCjs web server. When **pcjs.org** switched from a Node.js web server running on Amazon Web Services to GitHub Pages,
|
||||
the server-side API had to be abandoned.
|
||||
|
||||
However, we're working on a client-side replacement of the API that will run
|
||||
entirely in your browser, so hopefully portions of the original API will be available in the near future.
|
||||
In the meantime, check out the
|
||||
[Developer Notes](https://github.com/jeffpar/pcjs#user-content-developer-notes) section of the
|
||||
[PCjs Project](https://github.com/jeffpar/pcjs) for instructions on running your own local cope of Node.js and the
|
||||
PCjs web server.
|
||||
14
api/v1/report/README.md
Normal file
14
api/v1/report/README.md
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
layout: page
|
||||
title: PCjs Reporting API
|
||||
permalink: /api/v1/report/
|
||||
---
|
||||
|
||||
PCjs Reporting API
|
||||
===
|
||||
|
||||
The PCjs Reporting API is not supported by the current PCjs web server. When **pcjs.org** switched from a Node.js
|
||||
web server running on Amazon Web Services to GitHub Pages, the server-side API had to be abandoned.
|
||||
|
||||
However, if you're encountering a serious problem with any of the machines on **pcjs.org**, feel free to
|
||||
[send us a note](mailto:Jeff@pcjs.org) about the problem, along with a link to the machine. Thanks.
|
||||
|
|
@ -15,6 +15,6 @@ sitemap: false
|
|||
Build Your Own PC
|
||||
---
|
||||
|
||||
{% include build.html id="build-pc" %}
|
||||
{% include machine-build.html id="build-pc" %}
|
||||
|
||||
{% include machine.html id="custom-pc" %}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -701,7 +701,9 @@ C1PDiskController.prototype.setBinding = function(sHTMLType, sBinding, control,
|
|||
sFileURL = "http://" + window.location.host + "/api/v1/dump?disk=" + sFilePath;
|
||||
}
|
||||
controller.println("loading " + str.getBaseName(sFilePath) + "...");
|
||||
web.loadResource(sFileURL, true, null, controller, controller.loadDisk);
|
||||
web.getResource(sFileURL, null, true, function(sURL, sResponse, nErrorCode) {
|
||||
controller.loadDisk(sURL, sResponse, nErrorCode);
|
||||
});
|
||||
}
|
||||
};
|
||||
}(this);
|
||||
|
|
|
|||
|
|
@ -74,7 +74,10 @@ function C1PROM(parmsROM)
|
|||
if (sFileExt != DumpAPI.FORMAT.JSON && sFileExt != DumpAPI.FORMAT.HEX) {
|
||||
sFileURL = web.getHost() + DumpAPI.ENDPOINT + '?' + DumpAPI.QUERY.FILE + '=' + this.sImage + '&' + DumpAPI.QUERY.FORMAT + '=' + DumpAPI.FORMAT.BYTES;
|
||||
}
|
||||
web.loadResource(sFileURL, true, null, this, this.convertImage);
|
||||
var rom = this;
|
||||
web.getResource(sFileURL, null, true, function(sURL, sResponse, nErrorCode) {
|
||||
rom.convertImage(sURL, sResponse, nErrorCode);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -129,7 +129,9 @@ C1PSerialPort.prototype.setBinding = function(sHTMLType, sBinding, control, sVal
|
|||
if (serial.bindings["listSerial"]) {
|
||||
var sFile = serial.bindings["listSerial"].value;
|
||||
// serial.println("loading " + sFile + "...");
|
||||
web.loadResource(sFile, true, null, serial, serial.loadFile);
|
||||
web.getResource(sFile, null, true, function(sURL, sResponse, nErrorCode) {
|
||||
serial.loadFile(sURL, sResponse, nErrorCode);
|
||||
});
|
||||
}
|
||||
};
|
||||
return true;
|
||||
|
|
@ -228,8 +230,8 @@ C1PSerialPort.prototype.startLoad = function()
|
|||
|
||||
/**
|
||||
* @this {C1PSerialPort}
|
||||
* @param {String} sFileName
|
||||
* @param {string} sFileData (null if loadResource() encountered an error)
|
||||
* @param {string} sFileName
|
||||
* @param {string} sFileData (null if getResource() encountered an error)
|
||||
* @param {number} nResponse from server
|
||||
*/
|
||||
C1PSerialPort.prototype.loadFile = function(sFileName, sFileData, nResponse)
|
||||
|
|
@ -245,7 +247,7 @@ C1PSerialPort.prototype.loadFile = function(sFileName, sFileData, nResponse)
|
|||
this.println("auto-loading " + sFileName);
|
||||
/*
|
||||
* QUESTION: Is this setFocus() call strictly necessary? We're being called in the
|
||||
* context of loadResource(), not some user action. If there was an original user action,
|
||||
* context of getResource(), not some user action. If there was an original user action,
|
||||
* then the handler for THAT action should take care to switch focus back, not us.
|
||||
*/
|
||||
this.cpu.setFocus();
|
||||
|
|
|
|||
|
|
@ -36,26 +36,28 @@
|
|||
|
||||
"use strict";
|
||||
|
||||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
var http = require("http");
|
||||
var mkdirp = require("mkdirp");
|
||||
var crypto = require("crypto");
|
||||
var defines = require("../../shared/lib/defines");
|
||||
var net = require("../../shared/lib/netlib");
|
||||
var proc = require("../../shared/lib/proclib");
|
||||
var str = require("../../shared/lib/strlib");
|
||||
var usr = require("../../shared/lib/usrlib");
|
||||
var DiskAPI = require("../../shared/lib/diskapi");
|
||||
var DumpAPI = require("../../shared/lib/dumpapi");
|
||||
var X86 = require("../../pcjs/lib/x86");
|
||||
|
||||
/**
|
||||
* @class exports
|
||||
* @property {string} name
|
||||
* @property {string} version
|
||||
*/
|
||||
var pkg = require("../../../package.json");
|
||||
if (NODE) {
|
||||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
var http = require("http");
|
||||
var mkdirp = require("mkdirp");
|
||||
var crypto = require("crypto");
|
||||
var defines = require("../../shared/lib/defines");
|
||||
var net = require("../../shared/lib/netlib");
|
||||
var proc = require("../../shared/lib/proclib");
|
||||
var str = require("../../shared/lib/strlib");
|
||||
var usr = require("../../shared/lib/usrlib");
|
||||
var web = require("../../shared/lib/weblib");
|
||||
var DiskAPI = require("../../shared/lib/diskapi");
|
||||
var DumpAPI = require("../../shared/lib/dumpapi");
|
||||
var X86 = require("../../pcjs/lib/x86");
|
||||
/**
|
||||
* @class exports
|
||||
* @property {string} name
|
||||
* @property {string} version
|
||||
*/
|
||||
var pkg = require("../../../package.json");
|
||||
}
|
||||
|
||||
/*
|
||||
* fConsole controls console messages; it is false by default but is enable by the CLI interface.
|
||||
|
|
@ -425,6 +427,29 @@ DiskDump.CLI = function()
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* API
|
||||
*
|
||||
* Client-side version of the server-side function HTTPAPI.processDumpAPI(req, res).
|
||||
*
|
||||
* @param {Object} aParms (analogous to req.query on the server)
|
||||
*/
|
||||
DiskDump.API = function(aParms)
|
||||
{
|
||||
var sDisk = aParms[DumpAPI.QUERY.DISK];
|
||||
var sFormat = aParms[DumpAPI.QUERY.FORMAT] || DumpAPI.FORMAT.JSON;
|
||||
var fComments = (aParms[DumpAPI.QUERY.COMMENTS]? true : false);
|
||||
|
||||
var disk = new DiskDump(sDisk, null, sFormat, fComments);
|
||||
|
||||
disk.loadFile(function(err) {
|
||||
if (!err) {
|
||||
var sResponse = disk.convertToJSON();
|
||||
if (sResponse) web.downloadJSON(sResponse);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* outputDisk(err, disk, sDiskPath, sOutputFile, fOverwrite, sManifestTitle)
|
||||
*
|
||||
|
|
@ -983,7 +1008,7 @@ DiskDump.prototype.dumpBuffer = function(sKey, buf, len, cbItem, offData)
|
|||
* @this {DiskDump}
|
||||
* @param {string} sTrackSig
|
||||
* @param {number} nTrackNum
|
||||
* @param {number} nTrackType
|
||||
* @param {number|null} nTrackType
|
||||
* @param {number} [nTrackLoad]
|
||||
* @return {string}
|
||||
*/
|
||||
|
|
@ -2784,4 +2809,9 @@ DiskDump.prototype.convertToIMG = function()
|
|||
return this.bufDisk;
|
||||
};
|
||||
|
||||
module.exports = DiskDump;
|
||||
if (NODE) {
|
||||
module.exports = DiskDump;
|
||||
} else {
|
||||
var aParms = web.getURLParameters();
|
||||
DiskDump.API(aParms);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,5 +14,8 @@
|
|||
],
|
||||
"bin": {
|
||||
"diskdump": "./bin/diskdump"
|
||||
},
|
||||
"dependencies": {
|
||||
"mkdirp": "^0.3.5"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,9 @@
|
|||
}
|
||||
],
|
||||
"bin": {
|
||||
"example": "./bin/htmlout"
|
||||
"htmlout": "./bin/htmlout"
|
||||
},
|
||||
"dependencies": {
|
||||
"mkdirp": "^0.3.5"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -280,7 +280,10 @@ function Computer(parmsComputer, parmsMachine, fSuspended) {
|
|||
if (!sStatePath) {
|
||||
this.setReady();
|
||||
} else {
|
||||
web.loadResource(sStatePath, true, null, this, this.doneLoad);
|
||||
var cmp = this;
|
||||
web.getResource(sStatePath, null, true, function(sURL, sResource, nErrorCode) {
|
||||
cmp.doneLoad(sURL, sResource, nErrorCode);
|
||||
});
|
||||
}
|
||||
|
||||
if (!this.bindings["power"]) this.fAutoPower = true;
|
||||
|
|
@ -436,15 +439,14 @@ Computer.prototype.doneLoad = function(sURL, sStateData, nErrorCode)
|
|||
/**
|
||||
* wait(fn, parms)
|
||||
*
|
||||
* wait() waits until every component is ready (including ourselves, the last component we check),
|
||||
* then calls the specified Computer method.
|
||||
* wait() waits until every component is ready (including ourselves, the last component we check), then calls the
|
||||
* specified Computer method.
|
||||
*
|
||||
* TODO: As with web.loadResource(), the Closure Compiler makes it difficult for us to define
|
||||
* a function type for "fn" that works in all cases; sometimes we want to pass a function that takes
|
||||
* only a "number", and other times we want to pass a function that takes only an "Array" (the type
|
||||
* will mirror that of the "parms" parameter). However, the Closure Compiler insists that both functions
|
||||
* must be declared as accepting both types of parameters. So once again, we must use an untyped function
|
||||
* declaration, instead of something stricter like:
|
||||
* TODO: The Closure Compiler makes it difficult for us to define a function type for "fn" that works in all cases;
|
||||
* sometimes we want to pass a function that takes only a "number", and other times we want to pass a function that
|
||||
* takes only an "Array" (the type will mirror that of the "parms" parameter). However, the Closure Compiler insists
|
||||
* that both functions must be declared as accepting both types of parameters. So once again, we must use an untyped
|
||||
* function declaration, instead of something stricter like:
|
||||
*
|
||||
* param {function(this:Computer, (number|Array|undefined)): undefined} fn
|
||||
*
|
||||
|
|
@ -845,7 +847,7 @@ Computer.prototype.powerReport = function(stateComputer)
|
|||
* Power every component "down" and optionally save the machine state.
|
||||
*
|
||||
* There's one scenario that powerOff() isn't currently able to deal with very effectively: what to do when
|
||||
* the user switches away while it's still being restored, causing Disk loadResource() calls to fail. The
|
||||
* the user switches away while it's still being restored, causing Disk getResource() calls to fail. The
|
||||
* Disk component calls notify() when that happens -- see Disk.mount() -- but the FDC and HDC controllers don't
|
||||
* notify *us* of those problems, so Computer assumes that the restore was completely successful, when in fact
|
||||
* it was only partially successful.
|
||||
|
|
@ -1178,7 +1180,7 @@ Computer.prototype.verifyUserID = function(sUserID)
|
|||
var fMessages = DEBUG && this.messageEnabled();
|
||||
if (fMessages) this.printMessage("verifyUserID(" + sUserID + ")");
|
||||
var sRequest = web.getHost() + UserAPI.ENDPOINT + '?' + UserAPI.QUERY.REQ + '=' + UserAPI.REQ.VERIFY + '&' + UserAPI.QUERY.USER + '=' + sUserID;
|
||||
var response = web.loadResource(sRequest);
|
||||
var response = web.getResource(sRequest);
|
||||
var nErrorCode = response[0];
|
||||
var sResponse = response[1];
|
||||
if (!nErrorCode && sResponse) {
|
||||
|
|
@ -1278,24 +1280,24 @@ Computer.prototype.storeServerState = function(sUserID, sState, fSync)
|
|||
* TODO: Determine whether or not any browsers cancel our request if we're called during a browser "shutdown" event,
|
||||
* and whether or not it matters if we do an async request (currently, we're not, to try to ensure the request goes through).
|
||||
*/
|
||||
var data = {};
|
||||
data[UserAPI.QUERY.REQ] = UserAPI.REQ.STORE;
|
||||
data[UserAPI.QUERY.USER] = sUserID;
|
||||
data[UserAPI.QUERY.STATE] = State.key(this, Computer.APPVERSION);
|
||||
data[UserAPI.QUERY.DATA] = sState;
|
||||
var dataPost = {};
|
||||
dataPost[UserAPI.QUERY.REQ] = UserAPI.REQ.STORE;
|
||||
dataPost[UserAPI.QUERY.USER] = sUserID;
|
||||
dataPost[UserAPI.QUERY.STATE] = State.key(this, Computer.APPVERSION);
|
||||
dataPost[UserAPI.QUERY.DATA] = sState;
|
||||
var sRequest = web.getHost() + UserAPI.ENDPOINT;
|
||||
if (!fSync) {
|
||||
web.loadResource(sRequest, true, data);
|
||||
web.getResource(sRequest, dataPost, true);
|
||||
} else {
|
||||
var response = web.loadResource(sRequest, false, data);
|
||||
var sResponse = response[1];
|
||||
if (response[0]) {
|
||||
var response = web.getResource(sRequest, dataPost);
|
||||
var sResponse = response[0];
|
||||
if (response[1]) {
|
||||
if (sResponse) {
|
||||
var i = sResponse.indexOf('\n');
|
||||
if (i > 0) sResponse = sResponse.substr(0, i);
|
||||
if (!sResponse.indexOf("Error: ")) sResponse = sResponse.substr(7);
|
||||
}
|
||||
sResponse = '{"' + UserAPI.RES.CODE + '":' + response[0] + ',"' + UserAPI.RES.DATA + '":"' + sResponse + '"}';
|
||||
sResponse = '{"' + UserAPI.RES.CODE + '":' + response[1] + ',"' + UserAPI.RES.DATA + '":"' + sResponse + '"}';
|
||||
}
|
||||
if (DEBUG && this.messageEnabled()) this.printMessage(sResponse);
|
||||
return JSON.parse(sResponse);
|
||||
|
|
@ -1359,7 +1361,7 @@ Computer.prototype.onReset = function()
|
|||
* or not to unload/reload all their original auto-mounted disk images.
|
||||
*
|
||||
* However, if we started with a predefined state (ie, sStatePath is set), we take this shortcut, because
|
||||
* we don't (yet) have code in place to gracefully reload the initial state (requires calling loadResource()
|
||||
* we don't (yet) have code in place to gracefully reload the initial state (requires calling getResource()
|
||||
* again); alternatively, we could avoid throwing that state away, but it seems better to save the memory.
|
||||
*
|
||||
* TODO: Make this more graceful, so that we can stop using the reloadPage() sledgehammer.
|
||||
|
|
|
|||
|
|
@ -1099,8 +1099,10 @@ Disk.prototype.load = function(sDiskName, sDiskPath, file, fnNotify, controller)
|
|||
}
|
||||
}
|
||||
}
|
||||
var result = web.loadResource(sDiskURL, true, null, this, this.doneLoad);
|
||||
return result.length > 0;
|
||||
var disk = this;
|
||||
return !!web.getResource(sDiskURL, null, true, function(sURL, sResponse, nErrorCode) {
|
||||
disk.doneLoad(sURL, sResponse, nErrorCode);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -2032,8 +2034,11 @@ Disk.prototype.readRemoteSectors = function(iCylinder, iHead, iSector, nSectors,
|
|||
sParms += '&' + DiskAPI.QUERY.ADDR + '=' + iCylinder + ':' + iHead + ':' + iSector + ':' + nSectors;
|
||||
sParms += '&' + DiskAPI.QUERY.MACHINE + '=' + this.controller.getMachineID();
|
||||
sParms += '&' + DiskAPI.QUERY.USER + '=' + this.controller.getUserID();
|
||||
var disk = this;
|
||||
var sDiskURL = web.getHost() + DiskAPI.ENDPOINT + '?' + sParms;
|
||||
web.loadResource(sDiskURL, fAsync, null, this, this.doneReadRemoteSectors, [iCylinder, iHead, iSector, nSectors, fAsync, done]);
|
||||
web.getResource(sDiskURL, null, fAsync, function(sURL, sResponse, nErrorCode) {
|
||||
disk.doneReadRemoteSectors(sURL, sResponse, nErrorCode, [iCylinder, iHead, iSector, nSectors, fAsync, done]);
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (done) done(-1, false);
|
||||
|
|
@ -2121,17 +2126,20 @@ Disk.prototype.writeRemoteSectors = function(iCylinder, iHead, iSector, nSectors
|
|||
}
|
||||
|
||||
if (this.fRemote) {
|
||||
var data = {};
|
||||
var dataPost = {};
|
||||
this.fWriteInProgress = true;
|
||||
data[DiskAPI.QUERY.ACTION] = DiskAPI.ACTION.WRITE;
|
||||
data[DiskAPI.QUERY.VOLUME] = this.sDiskPath;
|
||||
data[DiskAPI.QUERY.CHS] = this.nCylinders + ':' + this.nHeads + ':' + this.nSectors + ':' + this.cbSector;
|
||||
data[DiskAPI.QUERY.ADDR] = iCylinder + ':' + iHead + ':' + iSector + ':' + nSectors;
|
||||
data[DiskAPI.QUERY.MACHINE] = this.controller.getMachineID();
|
||||
data[DiskAPI.QUERY.USER] = this.controller.getUserID();
|
||||
data[DiskAPI.QUERY.DATA] = JSON.stringify(abSectors);
|
||||
dataPost[DiskAPI.QUERY.ACTION] = DiskAPI.ACTION.WRITE;
|
||||
dataPost[DiskAPI.QUERY.VOLUME] = this.sDiskPath;
|
||||
dataPost[DiskAPI.QUERY.CHS] = this.nCylinders + ':' + this.nHeads + ':' + this.nSectors + ':' + this.cbSector;
|
||||
dataPost[DiskAPI.QUERY.ADDR] = iCylinder + ':' + iHead + ':' + iSector + ':' + nSectors;
|
||||
dataPost[DiskAPI.QUERY.MACHINE] = this.controller.getMachineID();
|
||||
dataPost[DiskAPI.QUERY.USER] = this.controller.getUserID();
|
||||
dataPost[DiskAPI.QUERY.DATA] = JSON.stringify(abSectors);
|
||||
var disk = this;
|
||||
var sDiskURL = web.getHost() + DiskAPI.ENDPOINT;
|
||||
return web.loadResource(sDiskURL, fAsync, data, this, this.doneWriteRemoteSectors, [iCylinder, iHead, iSector, nSectors, fAsync]);
|
||||
web.getResource(sDiskURL, dataPost, fAsync, function(sURL, sResponse, nErrorCode) {
|
||||
disk.doneWriteRemoteSectors(sURL, sResponse, nErrorCode, [iCylinder, iHead, iSector, nSectors, fAsync]);
|
||||
});
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
|
@ -2188,7 +2196,7 @@ Disk.prototype.disconnectRemoteDisk = function()
|
|||
sParms += '&' + DiskAPI.QUERY.MACHINE + '=' + this.controller.getMachineID();
|
||||
sParms += '&' + DiskAPI.QUERY.USER + '=' + this.controller.getUserID();
|
||||
var sDiskURL = web.getHost() + DiskAPI.ENDPOINT + '?' + sParms;
|
||||
web.loadResource(sDiskURL, true);
|
||||
web.getResource(sDiskURL, null, true);
|
||||
this.fRemote = false;
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -117,7 +117,10 @@ function ROM(parmsROM)
|
|||
if (sFileExt != DumpAPI.FORMAT.JSON && sFileExt != DumpAPI.FORMAT.HEX) {
|
||||
sFileURL = web.getHost() + DumpAPI.ENDPOINT + '?' + DumpAPI.QUERY.FILE + '=' + this.sFilePath + '&' + DumpAPI.QUERY.FORMAT + '=' + DumpAPI.FORMAT.BYTES + '&' + DumpAPI.QUERY.DECIMAL + '=true';
|
||||
}
|
||||
web.loadResource(sFileURL, true, null, this, this.doneLoad);
|
||||
var rom = this;
|
||||
web.getResource(sFileURL, null, true, function(sURL, sResponse, nErrorCode) {
|
||||
rom.doneLoad(sURL, sResponse, nErrorCode);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -200,13 +200,12 @@ function Video(parmsVideo, canvas, context, textarea, container)
|
|||
*/
|
||||
this.fHasFocus = false;
|
||||
|
||||
var video = this;
|
||||
|
||||
/*
|
||||
* Here's the gross code to handle full-screen support across all supported browsers. The lack of standards
|
||||
* is exasperating; browsers can't agree on 'full' or 'Full, 'request' or 'Request', 'screen' or 'Screen', and
|
||||
* while some browsers honor other browser prefixes, most browsers don't.
|
||||
*/
|
||||
var video = this;
|
||||
this.fGecko = web.isUserAgent("Gecko/");
|
||||
var i, sEvent, asPrefixes = ['', 'moz', 'webkit', 'ms'];
|
||||
|
||||
|
|
@ -288,7 +287,9 @@ function Video(parmsVideo, canvas, context, textarea, container)
|
|||
if (sFileExt != "json") {
|
||||
sFileURL = web.getHost() + DumpAPI.ENDPOINT + '?' + DumpAPI.QUERY.FILE + '=' + sFileURL + '&' + DumpAPI.QUERY.FORMAT + '=' + DumpAPI.FORMAT.BYTES;
|
||||
}
|
||||
web.loadResource(sFileURL, true, null, this, this.doneLoad);
|
||||
web.getResource(sFileURL, null, true, function(sURL, sResponse, nErrorCode) {
|
||||
video.doneLoad(sURL, sResponse, nErrorCode);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ var cAsyncMachines = 0;
|
|||
/**
|
||||
* loadXML(sFile, idMachine, sParms, fResolve, display, done)
|
||||
*
|
||||
* This is the preferred way to load all XML and XSL files. It uses loadResource()
|
||||
* This is the preferred way to load all XML and XSL files. It uses getResource()
|
||||
* to load them as strings, which parseXML() can massage before parsing/transforming them.
|
||||
*
|
||||
* For example, since I've been unable to get the XSLT document() function to work inside any
|
||||
|
|
@ -97,7 +97,7 @@ function loadXML(sXMLFile, idMachine, sParms, fResolve, display, done)
|
|||
parseXML(sXML, sXMLFile, idMachine, sParms, fResolve, display, done);
|
||||
};
|
||||
display("Loading " + sXMLFile + "...");
|
||||
web.loadResource(sXMLFile, fAsync, null, null, doneLoadXML);
|
||||
web.getResource(sXMLFile, null, fAsync, doneLoadXML);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -177,7 +177,7 @@ function parseXML(sXML, sXMLFile, idMachine, sParms, fResolve, display, done)
|
|||
* Supposedly, the IE XML DOM parser will throw an exception, but I haven't tested that, and unless all other
|
||||
* browsers do that, that's not helpful.
|
||||
*
|
||||
* The best I can do at this stage (assuming web.loadResource() didn't drop any error information on the floor)
|
||||
* The best I can do at this stage (assuming web.getResource() didn't drop any error information on the floor)
|
||||
* is verify that the requested resource "looks like" valid XML (in other words, it begins with a '<').
|
||||
*/
|
||||
var xmlDoc = null;
|
||||
|
|
@ -308,7 +308,7 @@ function resolveXML(sXML, display, done)
|
|||
};
|
||||
|
||||
display("Loading " + sRefFile + "...");
|
||||
web.loadResource(sRefFile, fAsync, null, null, doneReadXML);
|
||||
web.getResource(sRefFile, null, fAsync, doneReadXML);
|
||||
return;
|
||||
}
|
||||
done(sXML, null);
|
||||
|
|
|
|||
|
|
@ -325,35 +325,29 @@ net.downloadFile = function(sURL, sFile, done)
|
|||
};
|
||||
|
||||
/**
|
||||
* loadResource(sURL, fAsync, data, componentNotify, fnNotify, pNotify)
|
||||
* getResource(sURL, dataPost, fAsync, done)
|
||||
*
|
||||
* Request the specified resource (sURL), and once the request is complete,
|
||||
* optionally call the specified method (fnNotify) of the specified component (componentNotify).
|
||||
*
|
||||
* TODO: Figure out how we can strongly type the fnNotify parameter, because the Closure Compiler has issues with:
|
||||
*
|
||||
* {function(this:Component, string, (string|null), number, (number|string|null|Object|Array|undefined))} [fnNotify]
|
||||
*
|
||||
* NOTE: This function is a mirror image of the weblib version, for server-side component testing within Node;
|
||||
* since it is NOT intended for production use, it may make liberal use of synchronous functions, warning messages, etc.
|
||||
* Request the specified resource (sURL), and once the request is complete, notify done().
|
||||
*
|
||||
* @param {string} sURL
|
||||
* @param {Object|null} [dataPost] for a POST request (default is a GET request)
|
||||
* @param {boolean} [fAsync] is true for an asynchronous request
|
||||
* @param {Object|null} [data] for a POST request (default is a GET request)
|
||||
* @param {Component} [componentNotify]
|
||||
* @param {function(...)} [fnNotify]
|
||||
* @param {number|string|null|Object|Array} [pNotify] optional fnNotify parameter
|
||||
* @return {Array} containing errorCode and responseText (empty array if async request)
|
||||
* @param {function(string,string,number)} [done]
|
||||
* @return {Array|null} Array containing [sResource, nErrorCode], or null if no response yet
|
||||
*/
|
||||
net.loadResource = function(sURL, fAsync, data, componentNotify, fnNotify, pNotify) {
|
||||
var nErrorCode = -1;
|
||||
var sResponse = null;
|
||||
net.getResource = function(sURL, dataPost, fAsync, done)
|
||||
{
|
||||
var nErrorCode = -1, sResource = null, response = null;
|
||||
|
||||
if (net.isRemote(sURL)) {
|
||||
console.log('net.loadResource("' + sURL + '"): unimplemented');
|
||||
console.log('net.getResource("' + sURL + '"): unimplemented');
|
||||
} else {
|
||||
if (!sServerRoot) {
|
||||
sServerRoot = path.join(path.dirname(fs.realpathSync(__filename)), "../../../");
|
||||
}
|
||||
/*
|
||||
* TODO: Revisit why we pass back sBaseName instead of the original sURL....
|
||||
*/
|
||||
var sBaseName = str.getBaseName(sURL);
|
||||
var sFile = path.join(sServerRoot, sURL);
|
||||
if (fAsync) {
|
||||
|
|
@ -362,21 +356,14 @@ net.loadResource = function(sURL, fAsync, data, componentNotify, fnNotify, pNoti
|
|||
* TODO: If err is set, is there an error code we should return (instead of -1)?
|
||||
*/
|
||||
if (!err) {
|
||||
sResponse = s;
|
||||
sResource = s;
|
||||
nErrorCode = 0;
|
||||
}
|
||||
if (fnNotify) {
|
||||
if (!componentNotify) {
|
||||
fnNotify(sBaseName, sResponse, nErrorCode, pNotify);
|
||||
} else {
|
||||
fnNotify.call(componentNotify, sBaseName, sResponse, nErrorCode, pNotify);
|
||||
}
|
||||
}
|
||||
if (done) done(sBaseName, sResource, nErrorCode);
|
||||
});
|
||||
return [];
|
||||
} else {
|
||||
try {
|
||||
sResponse = fs.readFileSync(sFile, {encoding: "utf8"});
|
||||
sResource = fs.readFileSync(sFile, {encoding: "utf8"});
|
||||
nErrorCode = 0;
|
||||
} catch(err) {
|
||||
/*
|
||||
|
|
@ -384,16 +371,11 @@ net.loadResource = function(sURL, fAsync, data, componentNotify, fnNotify, pNoti
|
|||
*/
|
||||
console.log(err.message);
|
||||
}
|
||||
if (fnNotify) {
|
||||
if (!componentNotify) {
|
||||
fnNotify(sBaseName, sResponse, nErrorCode, pNotify);
|
||||
} else {
|
||||
fnNotify.call(componentNotify, sBaseName, sResponse, nErrorCode, pNotify);
|
||||
}
|
||||
}
|
||||
if (done) done(sBaseName, sResource, nErrorCode);
|
||||
response = [sResource, nErrorCode];
|
||||
}
|
||||
}
|
||||
return [nErrorCode, sResponse];
|
||||
return response;
|
||||
};
|
||||
|
||||
if (NODE) module.exports = net;
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ if (NODE) {
|
|||
* savePC(idMachine, sPCJSFile)
|
||||
*
|
||||
* @param {string} idMachine
|
||||
* @param {string} [sPCJSFile]
|
||||
* @param {string} sPCJSFile
|
||||
* @return {boolean} true if successful, false if error
|
||||
*/
|
||||
function savePC(idMachine, sPCJSFile)
|
||||
|
|
@ -61,7 +61,9 @@ function savePC(idMachine, sPCJSFile)
|
|||
sPCJSFile = "/versions/pcjs/" + (XMLVERSION || APPVERSION) + "/pc" + (dbg? "-dbg" : "") + ".js";
|
||||
}
|
||||
}
|
||||
web.loadResource(sPCJSFile, true, null, null, downloadCSS, [idMachine, str.getBaseName(sPCJSFile, true), sParms, sState]);
|
||||
web.getResource(sPCJSFile, null, true, function(sURL, sResponse, nErrorCode) {
|
||||
downloadCSS(sURL, sResponse, nErrorCode, [idMachine, str.getBaseName(sPCJSFile, true), sParms, sState]);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
web.alertUser("Unable to identify machine '" + idMachine + "'");
|
||||
|
|
@ -94,7 +96,9 @@ function downloadCSS(sURL, sPCJS, nErrorCode, aMachineInfo)
|
|||
*/
|
||||
downloadPC(sURL, null, 0, aMachineInfo);
|
||||
} else {
|
||||
web.loadResource(sCSSFile, true, null, null, downloadPC, aMachineInfo);
|
||||
web.getResource(sCSSFile, null, true, function(sURL, sResponse, nErrorCode) {
|
||||
downloadPC(sURL, sResponse, nErrorCode, aMachineInfo);
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -171,37 +171,23 @@ web.notice = function(s, fPrintOnly, id)
|
|||
};
|
||||
|
||||
/**
|
||||
* loadResource(sURL, fAsync, data, componentNotify, fnNotify, pNotify)
|
||||
* getResource(sURL, dataPost, fAsync, done)
|
||||
*
|
||||
* Request the specified resource (sURL), and once the request is complete,
|
||||
* optionally call the specified method (fnNotify) of the specified component (componentNotify).
|
||||
*
|
||||
* TODO: Figure out how we can strongly type the fnNotify parameter, because the Closure Compiler has issues with:
|
||||
*
|
||||
* {function(this:Component, string, (string|null), number, (number|string|null|Object|Array|undefined))} [fnNotify]
|
||||
* Request the specified resource (sURL), and once the request is complete, notify done().
|
||||
*
|
||||
* @param {string} sURL
|
||||
* @param {Object|null} [dataPost] for a POST request (default is a GET request)
|
||||
* @param {boolean} [fAsync] is true for an asynchronous request
|
||||
* @param {Object} [data] for a POST request (default is a GET request)
|
||||
* @param {Component} [componentNotify]
|
||||
* @param {function(...)} [fnNotify]
|
||||
* @param {number|string|null|Object|Array} [pNotify] optional fnNotify info parameter
|
||||
* @return {Array} containing errorCode and responseText (empty array if fAsync is true)
|
||||
* @param {function(string,string,number)} [done]
|
||||
* @return {Array|null} Array containing [sResource, nErrorCode], or null if no response yet
|
||||
*/
|
||||
web.loadResource = function(sURL, fAsync, data, componentNotify, fnNotify, pNotify)
|
||||
web.getResource = function(sURL, dataPost, fAsync, done)
|
||||
{
|
||||
var nErrorCode = 0;
|
||||
var sURLData = null;
|
||||
var nErrorCode = 0, sResource = null, response = null;
|
||||
|
||||
if (typeof resources == 'object' && (sURLData = resources[sURL])) {
|
||||
if (fnNotify) {
|
||||
if (!componentNotify) {
|
||||
fnNotify(sURL, sURLData, nErrorCode, pNotify);
|
||||
} else {
|
||||
fnNotify.call(componentNotify, sURL, sURLData, nErrorCode, pNotify);
|
||||
}
|
||||
}
|
||||
return [nErrorCode, sURLData];
|
||||
if (typeof resources == 'object' && (sResource = resources[sURL])) {
|
||||
if (done) done(sURL, sResource, nErrorCode);
|
||||
return [sResource, nErrorCode];
|
||||
}
|
||||
|
||||
if (NODE) {
|
||||
|
|
@ -212,7 +198,7 @@ web.loadResource = function(sURL, fAsync, data, componentNotify, fnNotify, pNoti
|
|||
* if (!Component) Component = require("./component");
|
||||
*/
|
||||
var net = require("./netlib");
|
||||
return net.loadResource(sURL, fAsync, data, componentNotify, fnNotify, pNotify);
|
||||
return net.getResource(sURL, dataPost, fAsync, done);
|
||||
}
|
||||
|
||||
var xmlHTTP = (window.XMLHttpRequest? new window.XMLHttpRequest() : new window.ActiveXObject("Microsoft.XMLHTTP"));
|
||||
|
|
@ -228,64 +214,52 @@ web.loadResource = function(sURL, fAsync, data, componentNotify, fnNotify, pNoti
|
|||
*
|
||||
* xmlHTTP.onreadystatechange = undefined;
|
||||
*/
|
||||
sURLData = xmlHTTP.responseText;
|
||||
sResource = xmlHTTP.responseText;
|
||||
/*
|
||||
* The normal "success" case is an HTTP status code of 200, but when testing with files loaded
|
||||
* from the local file system (ie, when using the "file:" protocol), we have to be a bit more "flexible".
|
||||
*/
|
||||
if (xmlHTTP.status == 200 || !xmlHTTP.status && sURLData.length && web.getHostProtocol() == "file:") {
|
||||
if (MAXDEBUG) web.log("xmlHTTP.onreadystatechange(" + sURL + "): returned " + sURLData.length + " bytes");
|
||||
if (xmlHTTP.status == 200 || !xmlHTTP.status && sResource.length && web.getHostProtocol() == "file:") {
|
||||
if (MAXDEBUG) web.log("xmlHTTP.onreadystatechange(" + sURL + "): returned " + sResource.length + " bytes");
|
||||
}
|
||||
else {
|
||||
nErrorCode = xmlHTTP.status || -1;
|
||||
web.log("xmlHTTP.onreadystatechange(" + sURL + "): error code " + nErrorCode);
|
||||
}
|
||||
if (fnNotify) {
|
||||
if (!componentNotify) {
|
||||
fnNotify(sURL, sURLData, nErrorCode, pNotify);
|
||||
} else {
|
||||
fnNotify.call(componentNotify, sURL, sURLData, nErrorCode, pNotify);
|
||||
}
|
||||
}
|
||||
if (done) done(sURL, sResource, nErrorCode);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
if (data) {
|
||||
var sData = "";
|
||||
for (var p in data) {
|
||||
if (!data.hasOwnProperty(p)) continue;
|
||||
if (sData) sData += "&";
|
||||
sData += p + '=' + encodeURIComponent(data[p]);
|
||||
if (dataPost) {
|
||||
var sDataPost = "";
|
||||
for (var p in dataPost) {
|
||||
if (!dataPost.hasOwnProperty(p)) continue;
|
||||
if (sDataPost) sDataPost += "&";
|
||||
sDataPost += p + '=' + encodeURIComponent(dataPost[p]);
|
||||
}
|
||||
sData = sData.replace(/%20/g, '+');
|
||||
if (MAXDEBUG) web.log("web.loadResource(POST " + sURL + "): " + sData.length + " bytes");
|
||||
sDataPost = sDataPost.replace(/%20/g, '+');
|
||||
if (MAXDEBUG) web.log("web.getResource(POST " + sURL + "): " + sDataPost.length + " bytes");
|
||||
xmlHTTP.open("POST", sURL, !!fAsync); // ensure that fAsync is a valid boolean (Internet Explorer xmlHTTP functions insist on it)
|
||||
xmlHTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
||||
xmlHTTP.send(sData);
|
||||
xmlHTTP.send(sDataPost);
|
||||
} else {
|
||||
if (MAXDEBUG) web.log("web.loadResource(GET " + sURL + ")");
|
||||
if (MAXDEBUG) web.log("web.getResource(GET " + sURL + ")");
|
||||
xmlHTTP.open("GET", sURL, !!fAsync); // ensure that fAsync is a valid boolean (Internet Explorer xmlHTTP functions insist on it)
|
||||
xmlHTTP.send();
|
||||
}
|
||||
|
||||
var response = [];
|
||||
if (!fAsync) {
|
||||
sURLData = xmlHTTP.responseText;
|
||||
sResource = xmlHTTP.responseText;
|
||||
if (xmlHTTP.status == 200) {
|
||||
if (MAXDEBUG) web.log("web.loadResource(" + sURL + "): returned " + sURLData.length + " bytes");
|
||||
response = sResource;
|
||||
if (MAXDEBUG) web.log("web.getResource(" + sURL + "): returned " + sResource.length + " bytes");
|
||||
} else {
|
||||
nErrorCode = xmlHTTP.status || -1;
|
||||
web.log("web.loadResource(" + sURL + "): error code " + nErrorCode);
|
||||
response = nErrorCode = xmlHTTP.status || -1;
|
||||
web.log("web.getResource(" + sURL + "): error code " + nErrorCode);
|
||||
}
|
||||
if (fnNotify) {
|
||||
if (!componentNotify) {
|
||||
fnNotify(sURL, sURLData, nErrorCode, pNotify);
|
||||
} else {
|
||||
fnNotify.call(componentNotify, sURL, sURLData, nErrorCode, pNotify);
|
||||
}
|
||||
}
|
||||
response = [nErrorCode, sURLData];
|
||||
if (done) done(sURL, sResource, nErrorCode);
|
||||
response = [sResource, nErrorCode];
|
||||
}
|
||||
return response;
|
||||
};
|
||||
|
|
@ -305,15 +279,15 @@ web.loadResource = function(sURL, fAsync, data, componentNotify, fnNotify, pNoti
|
|||
*/
|
||||
web.sendReport = function(sApp, sVer, sURL, sUser, sType, sReport, sHostName)
|
||||
{
|
||||
var data = {};
|
||||
data[ReportAPI.QUERY.APP] = sApp;
|
||||
data[ReportAPI.QUERY.VER] = sVer;
|
||||
data[ReportAPI.QUERY.URL] = sURL;
|
||||
data[ReportAPI.QUERY.USER] = sUser;
|
||||
data[ReportAPI.QUERY.TYPE] = sType;
|
||||
data[ReportAPI.QUERY.DATA] = sReport;
|
||||
var dataPost = {};
|
||||
dataPost[ReportAPI.QUERY.APP] = sApp;
|
||||
dataPost[ReportAPI.QUERY.VER] = sVer;
|
||||
dataPost[ReportAPI.QUERY.URL] = sURL;
|
||||
dataPost[ReportAPI.QUERY.USER] = sUser;
|
||||
dataPost[ReportAPI.QUERY.TYPE] = sType;
|
||||
dataPost[ReportAPI.QUERY.DATA] = sReport;
|
||||
var sReportURL = (sHostName? sHostName : "http://" + SITEHOST) + ReportAPI.ENDPOINT;
|
||||
web.loadResource(sReportURL, true, data);
|
||||
web.getResource(sReportURL, dataPost, true);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -596,7 +570,7 @@ web.isMobile = function()
|
|||
web.getURLParameters = function(sParms)
|
||||
{
|
||||
var aParms = {};
|
||||
if (window) { // an alternative to "if (typeof module === 'undefined')" if require("defines") has been invoked
|
||||
if (window) { // an alternative to "if (typeof module === 'undefined')" if require("defines") was used
|
||||
if (!sParms) {
|
||||
/*
|
||||
* Note that window.location.href returns the entire URL, whereas window.location.search
|
||||
|
|
@ -605,7 +579,7 @@ web.getURLParameters = function(sParms)
|
|||
sParms = window.location.search.substr(1);
|
||||
}
|
||||
var match;
|
||||
var pl = /\+/g; // RegExp for replacing addition symbol with a space
|
||||
var pl = /\+/g; // RegExp for replacing addition symbol with a space
|
||||
var search = /([^&=]+)=?([^&]*)/g;
|
||||
var decode = function(s) { return decodeURIComponent(s.replace(pl, " ")); };
|
||||
|
||||
|
|
@ -616,6 +590,45 @@ web.getURLParameters = function(sParms)
|
|||
return aParms;
|
||||
};
|
||||
|
||||
/**
|
||||
* downloadJSON()
|
||||
*
|
||||
* @param {string} sJSON
|
||||
* @param {string} [sFileName]
|
||||
*/
|
||||
web.downloadJSON = function(sJSON, sFileName)
|
||||
{
|
||||
var link, sAlert;
|
||||
var fDownload = !!sFileName;
|
||||
var sURI = "data:application/json,";
|
||||
|
||||
if (!web.isUserAgent("Firefox")) {
|
||||
fDownload = false;
|
||||
sURI += encodeURI(sJSON);
|
||||
} else {
|
||||
sURI += encodeURIComponent(sJSON);
|
||||
if (fDownload) {
|
||||
link = document.createElement('a');
|
||||
if (typeof link.download != 'string') fDownload = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (fDownload) {
|
||||
link.href = sURI;
|
||||
link.download = sFileName;
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
sAlert = 'Check your Downloads folder for "' + sFileName + '".';
|
||||
} else {
|
||||
window.open(sURI);
|
||||
sAlert = 'Check your browser for a new window/tab containing the requested data.';
|
||||
}
|
||||
|
||||
web.alertUser(sAlert);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* onCountRepeat(n, fn, fnComplete, msDelay)
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,165 +1,165 @@
|
|||
(function(){var f;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 p(a){return"0x"+n(a,2)}function r(a){return"0x"+n(a,4)}var aa={"&":"&","<":"<",">":">",'"':""","'":"'"};function ba(a){return a.replace(/[&<>"']/g,function(a){return aa[a]})}var ca=Date.now||function(){return+new Date};
|
||||
function t(a,b,c){var d=0,e=null;if("object"==typeof resources&&(e=resources[a]))c&&(b?c.call(b,a,e,d,void 0):c(a,e,d,void 0));else{var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");g.onreadystatechange=function(){4===g.readyState&&(e=g.responseText,200==g.status||!g.status&&e.length&&"file:"==(window?window.location.protocol:"file:")||(d=g.status||-1),c&&(b?c.call(b,a,e,d,void 0):c(a,e,d,void 0)))};g.open("GET",a,!0);g.send()}}
|
||||
function u(a){window&&window.alert(a)}function v(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 da(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function ea(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,g=!1;a.onmousedown=function(){g||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);g=!0}}var w={init:[],show:[],exit:[]},fa=!1,ga=!0;function ha(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function x(a){w.init.push(a)}
|
||||
function ia(a){if(ga)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){u("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function y(a){!ga&&a?(ga=!0,fa&&ja("init")):ga=a}function ja(a){w[a]&&ia(w[a])}ha("onload",function(){fa=!0;ia(w.init)});ha("onpageshow",function(){ia(w.show)});ha(v("Opera")||v("iOS")?"onunload":"onbeforeunload",function(){ia(w.exit)});
|
||||
function z(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.rb=this.id.substr(0,b),this.qb=this.id.substr(b+1)):this.qb=this.id;this[a]=c;this.C={Za:!1,Ba:!1,jb:!1,M:!1,Ca:!1};this.cb=null;this.C.Ca=!1;this.H={};this.u=null;this.la=d||0;A.push(this)}var ka=void 0;
|
||||
if(window){ka||(ka=window.location.search.substr(1));for(var la,ma=/\+/g,na=/([^&=]+)=?([^&]*)/g;la=na.exec(ka);)la[1].replace(ma," "),la[2].replace(ma," ")}function oa(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}function B(a){var b;b||(b=z);a.prototype=oa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var A=[],D={};
|
||||
function pa(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<A.length;c++)if(A[c].id===a)return A[c]}return null}function E(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}document&&!document.ELEMENT_NODE&&(document.ELEMENT_NODE=1);
|
||||
(function(){var f;function p(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 q(a){return"0x"+p(a,2)}function r(a){return"0x"+p(a,4)}function aa(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 ba(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
|
||||
var ca={"&":"&","<":"<",">":">",'"':""","'":"'"};function da(a){return a.replace(/[&<>"']/g,function(a){return ca[a]})}var ea=Date.now||function(){return+new Date};
|
||||
function t(a,b){var c=0,d=null;if("object"==typeof resources&&(d=resources[a]))b&&b(a,d,c);else{var e=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");e.onreadystatechange=function(){4===e.readyState&&(d=e.responseText,200==e.status||!e.status&&d.length&&"file:"==(window?window.location.protocol:"file:")||(c=e.status||-1),b&&b(a,d,c))};e.open("GET",a,!0);e.send()}}function u(a){window&&window.alert(a)}
|
||||
function v(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function fa(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function ga(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,g=!1;a.onmousedown=function(){g||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);g=!0}}var w={init:[],show:[],exit:[]},ha=!1,ia=!0;function ja(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function x(a){w.init.push(a)}
|
||||
function ka(a){if(ia)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){u("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function z(a){!ia&&a?(ia=!0,ha&&la("init")):ia=a}function la(a){w[a]&&ka(w[a])}ja("onload",function(){ha=!0;ka(w.init)});ja("onpageshow",function(){ka(w.show)});ja(v("Opera")||v("iOS")?"onunload":"onbeforeunload",function(){ka(w.exit)});
|
||||
function A(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.rb=this.id.substr(0,b),this.qb=this.id.substr(b+1)):this.qb=this.id;this[a]=c;this.C={Za:!1,Ba:!1,jb:!1,M:!1,Ca:!1};this.cb=null;this.C.Ca=!1;this.H={};this.u=null;this.la=d||0;B.push(this)}var ma=void 0;
|
||||
if(window){ma||(ma=window.location.search.substr(1));for(var na,oa=/\+/g,pa=/([^&=]+)=?([^&]*)/g;na=pa.exec(ma);)na[1].replace(oa," "),na[2].replace(oa," ")}function qa(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 C(a){var b;b||(b=A);a.prototype=qa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var B=[],D={};
|
||||
function ra(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<B.length;c++)if(B[c].id===a)return B[c]}return null}function E(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}document&&!document.ELEMENT_NODE&&(document.ELEMENT_NODE=1);
|
||||
function F(a,b){for(var c=G(b.parentNode,"c1pjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,g=0;g<e.length;g++){var h=e[g];if(h.nodeType===document.ELEMENT_NODE){var k=h.getAttribute("class");if(k)for(var l=k.split(" "),m=0;m<l.length;m++)switch(k=l[m],k){case "c1pjs-binding":(k=E(h))&&k.binding&&a.T(k.type,k.binding,h,k.value),m=l.length}}}}
|
||||
function G(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}
|
||||
z.prototype={constructor:z,parent:null,toString:function(){return this.name?this.name:this.id||this.type},T:function(a,b,c){switch(b){case "clear":return this.H[b]||(this.H[b]=c,c.onclick=function(a){return function(){a.H.print&&(a.H.print.value="")}}(this)),!0;case "print":return this.H[b]||(this.gb=this.H[b]=c,c.value="",this.l=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.$a=function(a,b,c){this.l(a,"notice",c)}),!0;default:return!1}},log:function(){},l:function(){},status:function(a){this.l(this.qb+": "+a)},$a:function(a,b){b||u(a)},X:function(a){this.C.Ca||(this.C.Za=!1!==a,this.C.Za&&(a=this.cb,this.cb=null,a&&a()))}};function H(a,b){if(a.u){a===a.u?b|=0:b=b||a.la;var c=a.u.la&b;return!!b&&c===b||!!(c&a.u.Re)}return!1}function I(a,b){if(a.C.jb)return a.C.Ba&&(a.C.Ba=!1),a.C.jb=!1;if(a.C.Ca)return a.l(a.toString()+" error"),!1;a.C.Ba=b;return a.C.Ba}
|
||||
function J(a,b){a.C.Ba&&(b?a.C.jb=!0:void 0===b&&a.l(a.toString()+" busy"));return a.C.Ba}function K(a,b){b&&(a.C.Za?b():a.cb=b);return a.C.Za}function qa(a,b){a.C.Ca=!0;a.$a(b)}function ra(a){z.call(this,"C1PPanel",a);this.C.M=!1}B(ra);ra.prototype.T=function(a,b,c,d){return this.J&&this.J.T(a,b,c,d)||this.s&&this.s.T(a,b,c,d)||this.b&&this.b.T(a,b,c,d)||this.u&&this.u.T(a,b,c,d)?!0:z.prototype.T.call(this,a,b,c,d)};
|
||||
ra.prototype.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.J=b,this.s=L(b,"cpu"),this.b=L(b,"keyboard"),this.u=L(b,"debugger"),sa())};function sa(){for(var a=!1,b=G(document,"c1pjs","panel"),c=0;c<b.length;c++){var d=b[c],e=E(d),g=pa(e.id);g||(a=!0,g=new ra(e));F(g,d);a&&g.X()}}x(sa);
|
||||
function ta(a){z.call(this,"C1PCPU",a);ua(this);this.C.M=!1;this.C.ma=!1;this.Ta=a.autoStart;this.Ra=0;this.Ob=1;this.eb=2;this.speed=this.Ra;this.Ja=30;this.Ia=5;this.Ma=8;this.Sa=["Slow","Fast","Max"];this.ib=["(1Mhz)","(up to "+this.Ma+"Mhz)","(unlimited)"];this.P=[];this.K=[];this.oa=65536;this.pa=0;this.da=65536;this.ia=0;this.Qa=32;this.bb=2;this.Nb=1;this.o=[this.yc,this.Sd,this.Je,this.m,this.m,this.Ud,this.oc,this.m,this.Xd,this.Rd,this.nc,this.m,this.m,this.Od,this.lc,this.m,this.xc,this.Td,
|
||||
this.m,this.m,this.m,this.Vd,this.pc,this.m,this.Bc,this.Qd,this.m,this.m,this.m,this.Pd,this.mc,this.m,this.pd,this.hc,this.m,this.m,this.uc,this.jc,this.ce,this.m,this.Zd,this.gc,this.be,this.m,this.tc,this.dc,this.$d,this.m,this.vc,this.ic,this.m,this.m,this.m,this.kc,this.de,this.m,this.te,this.fc,this.m,this.m,this.m,this.ec,this.ae,this.m,this.je,this.cd,this.m,this.m,this.m,this.ed,this.Ld,this.m,this.Wd,this.bd,this.Kd,this.m,this.od,this.Zc,this.Id,this.m,this.zc,this.dd,this.m,this.m,this.m,
|
||||
this.fd,this.Md,this.m,this.Dc,this.ad,this.m,this.m,this.m,this.$c,this.Jd,this.m,this.ke,this.yb,this.m,this.m,this.m,this.Ab,this.he,this.m,this.Yd,this.xb,this.ge,this.m,this.nd,this.ub,this.ee,this.m,this.Ac,this.zb,this.m,this.m,this.m,this.Bb,this.ie,this.m,this.ve,this.wb,this.m,this.m,this.m,this.vb,this.fe,this.m,this.m,this.ze,this.m,this.m,this.He,this.Be,this.Ee,this.m,this.Yc,this.m,this.Ne,this.m,this.Ge,this.we,this.De,this.m,this.qc,this.Ae,this.m,this.m,this.Ie,this.Ce,this.Fe,this.m,
|
||||
this.Pe,this.ye,this.Oe,this.m,this.m,this.xe,this.m,this.m,this.Fd,this.ud,this.Ad,this.m,this.Gd,this.wd,this.Bd,this.m,this.Le,this.td,this.Ke,this.m,this.Dd,this.qd,this.yd,this.m,this.rc,this.vd,this.m,this.m,this.Hd,this.xd,this.Cd,this.m,this.Ec,this.sd,this.Me,this.m,this.Ed,this.rd,this.zd,this.m,this.Rc,this.Jc,this.m,this.m,this.Sc,this.Lc,this.Vc,this.m,this.md,this.Ic,this.Xc,this.m,this.Qc,this.Fc,this.Tc,this.m,this.wc,this.Kc,this.m,this.m,this.m,this.Mc,this.Wc,this.m,this.Cc,this.Hc,
|
||||
this.m,this.m,this.m,this.Gc,this.Uc,this.m,this.Oc,this.Gb,this.m,this.m,this.Pc,this.Ib,this.jd,this.m,this.ld,this.Fb,this.Nd,this.m,this.Nc,this.Cb,this.gd,this.m,this.sc,this.Hb,this.m,this.m,this.m,this.Jb,this.kd,this.m,this.ue,this.Eb,this.m,this.m,this.m,this.Db,this.hd,this.m];this.fb=[7,6,0,0,0,3,5,0,3,2,2,0,0,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,3,6,0,0,3,3,5,0,4,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,5,0,3,2,2,0,3,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,
|
||||
5,0,4,2,2,0,5,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,0,6,0,0,3,3,3,0,2,0,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,0,4,0,0,2,6,2,0,3,3,3,0,2,2,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,4,4,4,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0]}B(ta);f=ta.prototype;
|
||||
f.reset=function(a){this.C.ma&&this.aa();ua(this);this.f=this.a[65532]|this.a[65533]<<8;this.C.Ca=!1;this.u?this.u.reset():a&&(!0===this.Ta||null===this.Ta&&!this.u&&void 0===this.H.run)&&this.va()};
|
||||
A.prototype={constructor:A,parent:null,toString:function(){return this.name?this.name:this.id||this.type},T:function(a,b,c){switch(b){case "clear":return this.H[b]||(this.H[b]=c,c.onclick=function(a){return function(){a.H.print&&(a.H.print.value="")}}(this)),!0;case "print":return this.H[b]||(this.gb=this.H[b]=c,c.value="",this.l=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.$a=function(a,b,c){this.l(a,"notice",c)}),!0;default:return!1}},log:function(){},l:function(){},status:function(a){this.l(this.qb+": "+a)},$a:function(a,b){b||u(a)},X:function(a){this.C.Ca||(this.C.Za=!1!==a,this.C.Za&&(a=this.cb,this.cb=null,a&&a()))}};function H(a,b){if(a.u){a===a.u?b|=0:b=b||a.la;var c=a.u.la&b;return!!b&&c===b||!!(c&a.u.Pe)}return!1}function I(a,b){if(a.C.jb)return a.C.Ba&&(a.C.Ba=!1),a.C.jb=!1;if(a.C.Ca)return a.l(a.toString()+" error"),!1;a.C.Ba=b;return a.C.Ba}
|
||||
function J(a,b){a.C.Ba&&(b?a.C.jb=!0:void 0===b&&a.l(a.toString()+" busy"));return a.C.Ba}function K(a,b){b&&(a.C.Za?b():a.cb=b);return a.C.Za}function sa(a,b){a.C.Ca=!0;a.$a(b)}function ta(a){A.call(this,"C1PPanel",a);this.C.M=!1}C(ta);ta.prototype.T=function(a,b,c,d){return this.J&&this.J.T(a,b,c,d)||this.s&&this.s.T(a,b,c,d)||this.b&&this.b.T(a,b,c,d)||this.u&&this.u.T(a,b,c,d)?!0:A.prototype.T.call(this,a,b,c,d)};
|
||||
ta.prototype.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.J=b,this.s=L(b,"cpu"),this.b=L(b,"keyboard"),this.u=L(b,"debugger"),ua())};function ua(){for(var a=!1,b=G(document,"c1pjs","panel"),c=0;c<b.length;c++){var d=b[c],e=E(d),g=ra(e.id);g||(a=!0,g=new ta(e));F(g,d);a&&g.X()}}x(ua);
|
||||
function va(a){A.call(this,"C1PCPU",a);wa(this);this.C.M=!1;this.C.ma=!1;this.Ta=a.autoStart;this.Ra=0;this.Nb=1;this.eb=2;this.speed=this.Ra;this.Ja=30;this.Ia=5;this.Ma=8;this.Sa=["Slow","Fast","Max"];this.ib=["(1Mhz)","(up to "+this.Ma+"Mhz)","(unlimited)"];this.P=[];this.K=[];this.oa=65536;this.pa=0;this.da=65536;this.ia=0;this.Qa=32;this.bb=2;this.Mb=1;this.o=[this.wc,this.Qd,this.He,this.m,this.m,this.Sd,this.mc,this.m,this.Vd,this.Pd,this.lc,this.m,this.m,this.Md,this.jc,this.m,this.vc,this.Rd,
|
||||
this.m,this.m,this.m,this.Td,this.nc,this.m,this.zc,this.Od,this.m,this.m,this.m,this.Nd,this.kc,this.m,this.nd,this.fc,this.m,this.m,this.sc,this.hc,this.ae,this.m,this.Xd,this.ec,this.$d,this.m,this.rc,this.bc,this.Yd,this.m,this.tc,this.gc,this.m,this.m,this.m,this.ic,this.be,this.m,this.re,this.dc,this.m,this.m,this.m,this.cc,this.Zd,this.m,this.he,this.ad,this.m,this.m,this.m,this.cd,this.Jd,this.m,this.Ud,this.$c,this.Id,this.m,this.md,this.Xc,this.Gd,this.m,this.xc,this.bd,this.m,this.m,this.m,
|
||||
this.dd,this.Kd,this.m,this.Bc,this.Zc,this.m,this.m,this.m,this.Yc,this.Hd,this.m,this.ie,this.xb,this.m,this.m,this.m,this.zb,this.fe,this.m,this.Wd,this.wb,this.ee,this.m,this.ld,this.tb,this.ce,this.m,this.yc,this.yb,this.m,this.m,this.m,this.Ab,this.ge,this.m,this.te,this.vb,this.m,this.m,this.m,this.ub,this.de,this.m,this.m,this.xe,this.m,this.m,this.Fe,this.ze,this.Ce,this.m,this.Wc,this.m,this.Le,this.m,this.Ee,this.ue,this.Be,this.m,this.oc,this.ye,this.m,this.m,this.Ge,this.Ae,this.De,this.m,
|
||||
this.Ne,this.we,this.Me,this.m,this.m,this.ve,this.m,this.m,this.Dd,this.sd,this.yd,this.m,this.Ed,this.ud,this.zd,this.m,this.Je,this.rd,this.Ie,this.m,this.Bd,this.od,this.wd,this.m,this.pc,this.td,this.m,this.m,this.Fd,this.vd,this.Ad,this.m,this.Cc,this.qd,this.Ke,this.m,this.Cd,this.pd,this.xd,this.m,this.Pc,this.Hc,this.m,this.m,this.Qc,this.Jc,this.Tc,this.m,this.kd,this.Gc,this.Vc,this.m,this.Oc,this.Dc,this.Rc,this.m,this.uc,this.Ic,this.m,this.m,this.m,this.Kc,this.Uc,this.m,this.Ac,this.Fc,
|
||||
this.m,this.m,this.m,this.Ec,this.Sc,this.m,this.Mc,this.Fb,this.m,this.m,this.Nc,this.Hb,this.gd,this.m,this.jd,this.Eb,this.Ld,this.m,this.Lc,this.Bb,this.ed,this.m,this.qc,this.Gb,this.m,this.m,this.m,this.Ib,this.hd,this.m,this.se,this.Db,this.m,this.m,this.m,this.Cb,this.fd,this.m];this.fb=[7,6,0,0,0,3,5,0,3,2,2,0,0,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,3,6,0,0,3,3,5,0,4,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,5,0,3,2,2,0,3,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,
|
||||
5,0,4,2,2,0,5,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,0,6,0,0,3,3,3,0,2,0,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,0,4,0,0,2,6,2,0,3,3,3,0,2,2,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,4,4,4,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0]}C(va);f=va.prototype;
|
||||
f.reset=function(a){this.C.ma&&this.aa();wa(this);this.f=this.a[65532]|this.a[65533]<<8;this.C.Ca=!1;this.u?this.u.reset():a&&(!0===this.Ta||null===this.Ta&&!this.u&&void 0===this.H.run)&&this.va()};
|
||||
f.T=function(a,b,c){a=!1;switch(b){case "run":this.H[b]=c;c.onclick=function(a){return function(){a.C.ma?a.aa():a.va()}}(this);a=!0;break;case "A":case "X":case "Y":case "S":case "PC":case "C":case "Z":case "I":case "D":case "B":case "V":case "N":case "speed":this.H[b]=c;a=!0;break;case "setSpeed":this.H[b]=c,c.onclick=function(a){return function(){M(a,2<=a.speed?a.Ra:a.speed+1,!0)}}(this),a=!0}return a};
|
||||
f.ba=function(a,b,c){this.a=a;this.O=b;this.qa=c-b+1;this.Ga=this.O+this.qa;this.O?u("unsupported CPU address buffer offset ("+this.O+")"):this.X()};f.ha=function(a,b){if(a&&!this.C.M){this.J=b;(this.u=L(b,"debugger"))&&this.u.Tb();var c=L(b,"video");c&&(this.hb=function(a){return function(){va(a)}}(c),this.ca=function(a){return function(){a.ca()}}(c));this.C.M=!0;this.reset(!0);this.update()}};function wa(a,b,c,d,e){0>xa(a.P,b,c,d,e)&&(a.oa>b&&(a.oa=b),a.pa<c&&(a.pa=c),a.P.push([b,c,d,e]))}
|
||||
function ya(a,b,c){for(var d=0;d<a.P.length;d++)b>=a.P[d][0]&&b<=a.P[d][1]&&a.P[d][3].call(a.P[d][2],b,c)}function N(a,b,c,d,e){0>xa(a.K,b,c,d,e)&&(a.da>b&&(a.da=b),a.ia<c&&(a.ia=c),a.K.push([b,c,d,e]))}function za(a,b,c){for(var d=0;d<a.K.length;d++)b>=a.K[d][0]&&b<=a.K[d][1]&&a.K[d][3].call(a.K[d][2],b,c)}function xa(a,b,c,d,e){for(var g=0;g<a.length;g++)if(a[g][0]==b&&a[g][1]==c&&a[g][2]==d&&a[g][3]==e)return g;return-1}
|
||||
function M(a,b,c){void 0!==b&&(a.speed=b,a.H.setSpeed&&(a.H.setSpeed.innerHTML=a.Sa[2<=b?0:b+1]),a.l("running at "+a.Sa[b].toLowerCase()+" speed "+a.ib[b]),c&&a.ca());a.U=0;a.Oa=ca();Aa(a)}f.hb=function(){};f.ca=function(){};function O(a,b,c,d){void 0!==a.H[b]&&(void 0===d&&(d=1),c="0000"+c.toString(16),a.H[b].innerHTML=c.slice(c.length-d).toUpperCase())}
|
||||
function Ba(a){O(a,"A",a.h,2);O(a,"X",a.w,2);O(a,"Y",a.F,2);var b=Ca(a);O(a,"C",b&1?1:0);O(a,"Z",b&2?1:0);O(a,"I",b&4?1:0);O(a,"D",b&8?1:0);O(a,"B",b&16?1:0);O(a,"V",b&64?1:0);O(a,"N",b&128?1:0);O(a,"S",a.G,4);O(a,"PC",a.f,4);a.H.speed&&a.ta&&(a.H.speed.innerHTML=a.ta.toFixed(1)+"Mhz")}
|
||||
function Aa(a,b){var c=30;c<a.Ja&&(c=a.Ja);c<a.Ia&&(c=a.Ia);var d=1;b&&a.speed>a.Ra&&a.ta&&(d=a.ta);d>a.Ma&&2>a.speed&&(d=a.Ma);a.kb=Math.round(1E3/30);a.ja=Math.floor(1E6/c*d);a.ra=Math.floor(1E6/30*d);a.Xa=Math.floor(1E6/a.Ja*d);a.Wa=Math.floor(1E6/a.Ia*d);b||(a.R=a.ra,a.Z=a.Xa,a.V=a.Wa);a.Aa=0}
|
||||
function Da(a){var b=ca(),c=a.kb;a.$&&(c=Math.round(c*a.$/a.ra));c=c-(b-a.lb);if(b=b-a.Oa)a.ta=Math.round(a.U/(100*b))/10,864E5<=b&&M(a);0>c?c=0:1==a.speed?a.ta<=a.Ma&&(c=0):2==a.speed&&(c=0);a.Aa+=a.$;return c}
|
||||
f.va=function(){if(I(this,!0)){this.C.ma||(M(this),this.J&&this.J.start(),this.C.ma=!0,this.H.run&&(this.H.run.innerHTML="Halt"),this.ca());1E6<=this.Aa&&Aa(this,!0);this.$=0;this.lb=ca();try{do{this.step(this.ja);var a=this.L-this.D;this.U+=a;this.$+=a;this.L=this.D=0;this.Z-=this.ja;0>=this.Z&&(this.Z+=this.Xa,this.hb());this.V-=this.ja;0>=this.V&&(this.V+=this.Wa,Ba(this));this.R-=this.ja;if(0>=this.R){this.R+=this.ra;break}}while(this.C.ma)}catch(b){this.aa();this.update();I(this,!1);qa(this,
|
||||
b.stack||b.message);return}setTimeout(function(a){return function(){a.va()}}(this),Da(this))}else this.update(),this.J&&this.J.stop(this.Oa,this.U)};
|
||||
f.step=function(a){var b=!0;this.b=this.g=-1;var c;if(c=a&&this.u)c=this.u,c=0<c.sa.length||0<c.wa.length||0<c.ya.length;this.L=this.D=a;do{a=this.a[this.f];var d;if(d=c){d=this.u;var e=a,g=!1;Ea(d,this.f,d.sa,"exec")?g=!0:(d.L++,d.B[e][1]++,d.xa[d.La++]=d.s.f,d.La>=d.xa.length&&(d.La=0));d=!!g}if(d){b=void 0;this.aa();break}this.f++;this.o[a].call(this);if(0<=this.b){this.b>=this.oa&&this.b<=this.pa&&ya(this,this.b,this.f);if(d=c)d=this.u,e=!1,Ea(d,this.b,d.wa,"read")&&(e=!0),d=!!e;if(d){b=!1;this.aa();
|
||||
break}this.b=-1}else if(0<=this.g){this.g>=this.da&&this.g<=this.ia&&za(this,this.g,this.f);if(d=c){d=this.u;var e=this.g,g=this.a[this.g],h=!1;(g&255)!=g&&(d.l("invalid value at "+r(e)+": "+g),h=!0);Ea(d,e,d.ya,"write")&&(h=!0);d=!!h}if(d){b=!1;this.aa();break}this.g=-1}this.D-=this.fb[a]}while(0<this.D);return b};function Fa(a){a.R=0;a.L-=a.D;a.D=0}f.aa=function(){J(this,!0);this.L-=this.D;this.D=0;this.C.ma&&(this.C.ma=!1,this.H.run&&(this.H.run.innerHTML="Run"))};
|
||||
f.update=function(){this.hb();Ba(this)};function Ga(a){return a.C.ma?a.U+a.L-a.D:0}f.S=function(a){return this.a[a]};f.W=function(a,b){this.a[a]=b};function Ca(a){var b=a.c&256?1:0,b=b|(a.j&255?0:2),b=b|((a.v&255^a.A^a.v>>1)&128?64:0),b=b|(a.i&128?128:0);return a.B&60|b}
|
||||
function Ha(a){a.B|=8;a.o[97]=a.$b;a.o[101]=a.bc;a.o[105]=a.Zb;a.o[109]=a.Wb;a.o[113]=a.ac;a.o[117]=a.cc;a.o[121]=a.Yb;a.o[125]=a.Xb;a.o[225]=a.pe;a.o[229]=a.re;a.o[233]=a.oe;a.o[237]=a.le;a.o[241]=a.qe;a.o[245]=a.se;a.o[249]=a.ne;a.o[253]=a.me}function Ia(a){a.B&=-9;a.o[97]=a.yb;a.o[101]=a.Ab;a.o[105]=a.xb;a.o[109]=a.ub;a.o[113]=a.zb;a.o[117]=a.Bb;a.o[121]=a.wb;a.o[125]=a.vb;a.o[225]=a.Gb;a.o[229]=a.Ib;a.o[233]=a.Fb;a.o[237]=a.Cb;a.o[241]=a.Hb;a.o[245]=a.Jb;a.o[249]=a.Eb;a.o[253]=a.Db}
|
||||
function P(a,b,c){var d=a.c&256?1:0,e=(b&15)+(c&15)+d;10<=e&&(e=e+6&15|16);e+=(b&240)+(c&240);a.A=b^c;a.v=e;a.i=e&255;160<=e&&(e+=96);512<=e&&(e-=256);a.c=e;a.j=b+c+d&255;a.D--;return e&255}function Q(a,b,c){var d=a.c&256?0:1,e=(b&15)-(c&15)-d;0>e&&(e=(e-6&15)-16);e+=(b&240)-(c&240);0>e&&(e-=96);a.i=a.j=(a.c=b-c-d)&255;a.A=b^c;a.v=a.c;a.c^=256;a.D--;return e&255}function ua(a){a.h=0;a.w=0;a.F=0;a.G=256;a.B=0;a.i=0;a.j=0;a.A=0;a.v=0;a.c=0;a.f=0;a.b=-1;a.g=-1;a.ta=0;a.U=a.L=a.D=0}
|
||||
f.yc=function(){this.f++;this.a[this.G--]=this.f>>8;this.G|=256;this.a[this.G--]=this.f&255;this.G|=256;this.B|=16;this.B=Ca(this);this.a[this.G--]=this.B;this.G|=256;this.B&=239;this.b=65534;this.f=this.a[this.b]|this.a[this.b+1]<<8};f.Sd=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.i=this.j=this.h|=this.a[this.b]};f.Ud=function(){this.b=this.a[this.f++];this.i=this.j=this.h|=this.a[this.b]};
|
||||
f.oc=function(){this.g=this.a[this.f++];this.c=this.a[this.g]<<1;this.i=this.j=this.a[this.g]=this.c&255};f.Xd=function(){this.B=Ca(this);this.a[this.G--]=this.B;this.G|=256};f.Rd=function(){this.b=this.f++;this.i=this.j=this.h|=this.a[this.b]};f.nc=function(){this.c=this.h<<1;this.i=this.j=this.h=this.c&255};f.Od=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.h|=this.a[this.b]};
|
||||
f.lc=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.a[this.g]<<1;this.i=this.j=this.a[this.g]=this.c&255};f.xc=function(){this.f+=(this.i&128?0:(this.D--,this.a[this.f]<<24>>24))+1};f.Td=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.i=this.j=this.h|=this.a[this.b]};f.Vd=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.h|=this.a[this.b]};
|
||||
f.pc=function(){this.g=this.a[this.f++]+this.w&255;this.c=this.a[this.g]<<1;this.i=this.j=this.a[this.g]=this.c&255};f.Bc=function(){this.c=0};f.Qd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.h|=this.a[this.b]};f.Pd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.h|=this.a[this.b]};f.mc=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.a[this.g]<<1;this.i=this.j=this.a[this.g]=this.c&255};
|
||||
f.pd=function(){this.b=this.f++;this.a[this.G--]=this.f>>8;this.G|=256;this.a[this.G--]=this.f&255;this.G|=256;this.f=this.a[this.b]|this.a[this.b+1]<<8};f.hc=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.i=this.j=this.h&=this.a[this.b]};f.uc=function(){this.b=this.a[this.f++];this.j=this.h&this.a[this.b];this.i=this.i&127|this.a[this.b]&128;this.v=0;this.A=this.a[this.b]&64?128:0};f.jc=function(){this.b=this.a[this.f++];this.i=this.j=this.h&=this.a[this.b]};
|
||||
f.ce=function(){this.g=this.a[this.f++];this.c=this.c&65280|this.a[this.g];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.i=this.j=this.a[this.g]=this.c&255};f.Zd=function(){this.G=this.G+1&255|256;this.B=this.a[this.G];this.c=this.B&1?256:0;this.j=this.B&2?0:1;this.i=this.B&128;this.v=0;this.A=this.B&64?128:0};f.gc=function(){this.b=this.f++;this.i=this.j=this.h&=this.a[this.b]};
|
||||
f.be=function(){this.c=this.c&65280|this.h;this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.i=this.j=this.h=this.c&255};f.tc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.j=this.h&this.a[this.b];this.i=this.i&127|this.a[this.b]&128;this.v=0;this.A=this.a[this.b]&64?128:0};f.dc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.h&=this.a[this.b]};
|
||||
f.$d=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.c&65280|this.a[this.g];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.i=this.j=this.a[this.g]=this.c&255};f.vc=function(){this.f+=(this.i&128?(this.D--,this.a[this.f]<<24>>24):0)+1};f.ic=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.i=this.j=this.h&=this.a[this.b]};f.kc=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.h&=this.a[this.b]};
|
||||
f.de=function(){this.g=this.a[this.f++]+this.w&255;this.c=this.c&65280|this.a[this.g];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.i=this.j=this.a[this.g]=this.c&255};f.te=function(){this.c=256};f.fc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.h&=this.a[this.b]};f.ec=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.h&=this.a[this.b]};
|
||||
f.ae=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.c&65280|this.a[this.g];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.i=this.j=this.a[this.g]=this.c&255};f.je=function(){this.G=this.G+1&255|256;this.B=this.a[this.G];this.c=this.B&1?256:0;this.j=this.B&2?0:1;this.i=this.B&128;this.v=0;this.A=this.B&64?128:0;this.G=this.G+2&255|256;this.f=this.a[this.G-1|256]|this.a[this.G]<<8};
|
||||
f.cd=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.i=this.j=this.h^=this.a[this.b]};f.ed=function(){this.b=this.a[this.f++];this.i=this.j=this.h^=this.a[this.b]};f.Ld=function(){this.g=this.a[this.f++];this.c=this.c&65279|(this.a[this.g]&1?256:0);this.a[this.g]=(this.c=this.c&65280|this.a[this.g]>>1)&255;this.i=this.j=this.c&255};f.Wd=function(){this.a[this.G--]=this.h;this.G|=256};f.bd=function(){this.b=this.f++;this.i=this.j=this.h^=this.a[this.b]};
|
||||
f.Kd=function(){this.c=this.c&65279|(this.h&1?256:0);this.h=(this.c=this.c&65280|this.h>>1)&255;this.i=this.j=this.c&255};f.od=function(){this.b=this.f;this.f=this.a[this.b]|this.a[this.b+1]<<8};f.Zc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.h^=this.a[this.b]};f.Id=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.c&65279|(this.a[this.g]&1?256:0);this.a[this.g]=(this.c=this.c&65280|this.a[this.g]>>1)&255;this.i=this.j=this.c&255};
|
||||
f.zc=function(){this.f+=((this.v&255^this.A^this.v>>1)&128?0:(this.D--,this.a[this.f]<<24>>24))+1};f.dd=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.i=this.j=this.h^=this.a[this.b]};f.fd=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.h^=this.a[this.b]};f.Md=function(){this.g=this.a[this.f++]+this.w&255;this.c=this.c&65279|(this.a[this.g]&1?256:0);this.a[this.g]=(this.c=this.c&65280|this.a[this.g]>>1)&255;this.i=this.j=this.c&255};
|
||||
f.Dc=function(){this.B&=251};f.ad=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.h^=this.a[this.b]};f.$c=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.h^=this.a[this.b]};f.Jd=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.c&65279|(this.a[this.g]&1?256:0);this.a[this.g]=(this.c=this.c&65280|this.a[this.g]>>1)&255;this.i=this.j=this.c&255};
|
||||
f.ke=function(){this.G=this.G+2&255|256;this.f=(this.a[this.G-1|256]|this.a[this.G]<<8)+1};f.yb=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.$b=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=P(this,this.h,this.a[this.b])};
|
||||
f.Ab=function(){this.b=this.a[this.f++];this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.bc=function(){this.b=this.a[this.f++];this.h=P(this,this.h,this.a[this.b])};f.he=function(){this.g=this.a[this.f++];this.c=this.c&65280|this.a[this.g];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.i=this.j=this.a[this.g]=this.c&255};f.Yd=function(){this.G=this.G+1&255|256;this.i=this.j=this.h=this.a[this.G]};
|
||||
f.xb=function(){this.b=this.f++;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.Zb=function(){this.b=this.f++;this.h=P(this,this.h,this.a[this.b])};f.ge=function(){this.c=this.c&65280|this.h;this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.i=this.j=this.h=this.c&255};f.nd=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.f=this.a[this.b]|this.a[this.b+1]<<8};
|
||||
f.ub=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.Wb=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=P(this,this.h,this.a[this.b])};f.ee=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.c&65280|this.a[this.g];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.i=this.j=this.a[this.g]=this.c&255};
|
||||
f.Ac=function(){this.f+=((this.v&255^this.A^this.v>>1)&128?(this.D--,this.a[this.f]<<24>>24):0)+1};f.zb=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.ac=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.h=P(this,this.h,this.a[this.b])};
|
||||
f.Bb=function(){this.b=this.a[this.f++]+this.w&255;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.cc=function(){this.b=this.a[this.f++]+this.w&255;this.h=P(this,this.h,this.a[this.b])};f.ie=function(){this.g=this.a[this.f++]+this.w&255;this.c=this.c&65280|this.a[this.g];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.i=this.j=this.a[this.g]=this.c&255};f.ve=function(){this.B|=4};
|
||||
f.wb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.Yb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.h=P(this,this.h,this.a[this.b])};f.vb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};
|
||||
f.Xb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.h=P(this,this.h,this.a[this.b])};f.fe=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.c&65280|this.a[this.g];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.i=this.j=this.a[this.g]=this.c&255};f.ze=function(){this.g=this.a[this.f++]+this.w&255;this.g=this.a[this.g]|this.a[this.g+1]<<8;this.a[this.g]=this.h};f.He=function(){this.g=this.a[this.f++];this.a[this.g]=this.F};
|
||||
f.Be=function(){this.g=this.a[this.f++];this.a[this.g]=this.h};f.Ee=function(){this.g=this.a[this.f++];this.a[this.g]=this.w};f.Yc=function(){this.i=this.j=this.F=this.F-1&255};f.Ne=function(){this.i=this.j=this.h=this.w};f.Ge=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.a[this.g]=this.F};f.we=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.a[this.g]=this.h};f.De=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.a[this.g]=this.w};
|
||||
f.qc=function(){this.f+=(this.c&256?0:(this.D--,this.a[this.f]<<24>>24))+1};f.Ae=function(){this.g=this.a[this.f++];this.g=(this.a[this.g]|this.a[this.g+1]<<8)+this.F;this.a[this.g]=this.h};f.Ie=function(){this.g=this.a[this.f++]+this.w&255;this.a[this.g]=this.F};f.Ce=function(){this.g=this.a[this.f++]+this.w&255;this.a[this.g]=this.h};f.Fe=function(){this.g=this.a[this.f++]+this.F&255;this.a[this.g]=this.w};f.Pe=function(){this.i=this.j=this.h=this.F};
|
||||
f.ye=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.a[this.g]=this.h};f.Oe=function(){this.G=this.w|256};f.xe=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.a[this.g]=this.h};f.Fd=function(){this.b=this.f++;this.i=this.j=this.F=this.a[this.b]};f.ud=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.i=this.j=this.h=this.a[this.b]};f.Ad=function(){this.b=this.f++;this.i=this.j=this.w=this.a[this.b]};
|
||||
f.Gd=function(){this.b=this.a[this.f++];this.i=this.j=this.F=this.a[this.b]};f.wd=function(){this.b=this.a[this.f++];this.i=this.j=this.h=this.a[this.b]};f.Bd=function(){this.b=this.a[this.f++];this.i=this.j=this.w=this.a[this.b]};f.Le=function(){this.i=this.j=this.F=this.h};f.td=function(){this.b=this.f++;this.i=this.j=this.h=this.a[this.b]};f.Ke=function(){this.i=this.j=this.w=this.h};f.Dd=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.F=this.a[this.b]};
|
||||
f.qd=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.h=this.a[this.b]};f.yd=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.w=this.a[this.b]};f.rc=function(){this.f+=(this.c&256?(this.D--,this.a[this.f]<<24>>24):0)+1};f.vd=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.i=this.j=this.h=this.a[this.b]};f.Hd=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.F=this.a[this.b]};
|
||||
f.xd=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.h=this.a[this.b]};f.Cd=function(){this.b=this.a[this.f++]+this.F&255;this.i=this.j=this.w=this.a[this.b]};f.Ec=function(){this.A=this.v=0};f.sd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.h=this.a[this.b]};f.Me=function(){this.i=this.j=this.w=this.G&255};f.Ed=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.F=this.a[this.b]};
|
||||
f.rd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.h=this.a[this.b]};f.zd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.w=this.a[this.b]};f.Rc=function(){this.b=this.f++;this.i=this.j=this.c=this.F-this.a[this.b];this.c^=256};f.Jc=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};
|
||||
f.Sc=function(){this.b=this.a[this.f++];this.i=this.j=this.c=this.F-this.a[this.b];this.c^=256};f.Lc=function(){this.b=this.a[this.f++];this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Vc=function(){this.g=this.a[this.f++];this.i=this.j=this.a[this.g]=this.a[this.g]-1&255};f.md=function(){this.i=this.j=this.F=this.F+1&255};f.Ic=function(){this.b=this.f++;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Xc=function(){this.i=this.j=this.w=this.w-1&255};
|
||||
f.Qc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.c=this.F-this.a[this.b];this.c^=256};f.Fc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Tc=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.a[this.g]=this.a[this.g]-1&255};f.wc=function(){this.f+=(this.j&255?(this.D--,this.a[this.f]<<24>>24):0)+1};
|
||||
f.Kc=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Mc=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Wc=function(){this.g=this.a[this.f++]+this.w&255;this.i=this.j=this.a[this.g]=this.a[this.g]-1&255};f.Cc=function(){Ia(this)};
|
||||
f.Hc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Gc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Uc=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.a[this.g]=this.a[this.g]-1&255};f.Oc=function(){this.b=this.f++;this.i=this.j=this.c=this.w-this.a[this.b];this.c^=256};
|
||||
f.Gb=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.pe=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=Q(this,this.h,this.a[this.b])};f.Pc=function(){this.b=this.a[this.f++];this.i=this.j=this.c=this.w-this.a[this.b];this.c^=256};
|
||||
f.Ib=function(){this.b=this.a[this.f++];this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.re=function(){this.b=this.a[this.f++];this.h=Q(this,this.h,this.a[this.b])};f.jd=function(){this.g=this.a[this.f++];this.i=this.j=this.a[this.g]=this.a[this.g]+1&255};f.ld=function(){this.i=this.j=this.w=this.w+1&255};
|
||||
f.Fb=function(){this.b=this.f++;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.oe=function(){this.b=this.f++;this.h=Q(this,this.h,this.a[this.b])};f.Nd=function(){};f.Nc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.c=this.w-this.a[this.b];this.c^=256};
|
||||
f.Cb=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.le=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=Q(this,this.h,this.a[this.b])};f.gd=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.a[this.g]=this.a[this.g]+1&255};f.sc=function(){this.f+=(this.j&255?0:(this.D--,this.a[this.f]<<24>>24))+1};
|
||||
f.Hb=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.qe=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.h=Q(this,this.h,this.a[this.b])};
|
||||
f.Jb=function(){this.b=this.a[this.f++]+this.w&255;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.se=function(){this.b=this.a[this.f++]+this.w&255;this.h=Q(this,this.h,this.a[this.b])};f.kd=function(){this.g=this.a[this.f++]+this.w&255;this.i=this.j=this.a[this.g]=this.a[this.g]+1&255};f.ue=function(){Ha(this)};
|
||||
f.Eb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.ne=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.h=Q(this,this.h,this.a[this.b])};
|
||||
f.Db=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.me=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.h=Q(this,this.h,this.a[this.b])};f.hd=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.a[this.g]=this.a[this.g]+1&255};
|
||||
f.Je=function(){var a;a=this.a[this.f++];switch(a){case 0:this.l("HALT");this.aa();break;case 1:a=this.f;for(var b="";a<this.a.length;){var c=this.a[a++];if(!c)break;b+=String.fromCharCode(c)}this.f=a;b=b.replace(/%A/g,n(this.h,2)).replace(/%X/g,n(this.w,2)).replace(/%Y/g,n(this.F,2));this.l(b);Fa(this);break;default:this.f-=2,this.l("undefined opSim: "+p(a)+" at "+r(this.f)),this.aa()}};f.m=function(){var a=this.a[--this.f];this.l("undefined opcode: "+p(a)+" at "+r(this.f));this.aa()};
|
||||
x(function(){for(var a=G(document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new ta(d);F(d,c)}});function R(a){z.call(this,"C1PROM",a);this.b=this.a=null;this.g=a.size;if(this.o=a.image){a=this.o;var b;b=this.o;var c="",d=b.lastIndexOf(".");0<=d&&(c=b.substr(d+1).toLowerCase());b=c;"json"!=b&&"hex"!=b&&(a="http://"+(window?window.location.host:"www.pcjs.org")+"/api/v1/dump?file="+this.o+"&format=bytes");t(a,this,this.A)}}B(R);
|
||||
R.prototype.ba=function(a,b,c,d){this.a=a;this.v=b;a=c-b+1;this.g||(this.g=a);a!=this.g?qa(this,"computer-specified ROM size ("+r(a)+") does not match component-specified size ("+r(this.g)+")"):(d&&(this.s=d,N(d,b,c,this,this.W)),Ja(this))};R.prototype.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.u=L(b,"debugger"))};R.prototype.W=function(a,b){if(void 0!==b){this.u&&S(this.u,this,a,b,this.u.pb,!0);var c=a-this.v;this.a[this.v+c]=this.b?this.b[c]:0}};
|
||||
R.prototype.A=function(a,b,c){if(c)this.l('Error loading ROM "'+a+'" ('+c+")");else{if("["==b.charAt(0)||"{"==b.charAt(0))try{var d=eval("("+b+")"),e=d.bytes;e?this.b=e:this.b=d}catch(g){this.l('Error processing ROM "'+a+'": '+g.message);return}else for(a=b.replace(/\n/gm," ").replace(/ +$/,"").split(" "),this.b=Array(a.length),b=0;b<a.length;b++)this.b[b]=parseInt(a[b],16);Ja(this)}};
|
||||
function Ja(a){if(!K(a))if(!a.o)a.X();else if(a.b&&a.a){var b=a.b.length;if(b!=a.g)qa(a,"ROM image size ("+r(b)+") does not match component-specified size ("+r(a.g)+")");else{for(var c=0;c<b;c++)a.a[a.v+c]=a.b[c];a.X()}}}x(function(){for(var a=G(document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new R(d);F(d,c)}});function Ka(a){z.call(this,"C1PRAM",a)}B(Ka);Ka.prototype.ba=function(a){this.a=a;this.X()};
|
||||
x(function(){for(var a=G(document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Ka(d);F(d,c)}});
|
||||
function La(a){z.call(this,"C1PKeyboard",a);this.C.M=!1;this.Ia=a.model;this.da=8;this.fb=10;this.Xa=13;this.ia=27;this.Oa=this.da;this.Wa=this.fb;this.Ja=this.Xa;this.$=this.ia;this.L=241;this.Z=224;this.Sa=3;this.Ta=15;this.K=1;this.D=[];this.D["break"]=this.Z;this.D.esc=this.$;this.D["ctrl-c"]=this.Sa;this.D["ctrl-o"]=this.Ta;this.b=[];this.b[49]=30464;this.b[33]=30704;this.b[50]=30208;this.b[34]=30448;this.b[51]=29952;this.b[35]=30192;this.b[52]=29696;this.b[36]=29936;this.b[53]=29440;this.b[37]=
|
||||
f.ba=function(a,b,c){this.a=a;this.O=b;this.qa=c-b+1;this.Ga=this.O+this.qa;this.O?u("unsupported CPU address buffer offset ("+this.O+")"):this.X()};f.ha=function(a,b){if(a&&!this.C.M){this.J=b;(this.u=L(b,"debugger"))&&this.u.Sb();var c=L(b,"video");c&&(this.hb=function(a){return function(){xa(a)}}(c),this.ca=function(a){return function(){a.ca()}}(c));this.C.M=!0;this.reset(!0);this.update()}};function ya(a,b,c,d,e){0>za(a.P,b,c,d,e)&&(a.oa>b&&(a.oa=b),a.pa<c&&(a.pa=c),a.P.push([b,c,d,e]))}
|
||||
function Aa(a,b,c){for(var d=0;d<a.P.length;d++)b>=a.P[d][0]&&b<=a.P[d][1]&&a.P[d][3].call(a.P[d][2],b,c)}function N(a,b,c,d,e){0>za(a.K,b,c,d,e)&&(a.da>b&&(a.da=b),a.ia<c&&(a.ia=c),a.K.push([b,c,d,e]))}function Ba(a,b,c){for(var d=0;d<a.K.length;d++)b>=a.K[d][0]&&b<=a.K[d][1]&&a.K[d][3].call(a.K[d][2],b,c)}function za(a,b,c,d,e){for(var g=0;g<a.length;g++)if(a[g][0]==b&&a[g][1]==c&&a[g][2]==d&&a[g][3]==e)return g;return-1}
|
||||
function M(a,b,c){void 0!==b&&(a.speed=b,a.H.setSpeed&&(a.H.setSpeed.innerHTML=a.Sa[2<=b?0:b+1]),a.l("running at "+a.Sa[b].toLowerCase()+" speed "+a.ib[b]),c&&a.ca());a.U=0;a.Oa=ea();Ca(a)}f.hb=function(){};f.ca=function(){};function O(a,b,c,d){void 0!==a.H[b]&&(void 0===d&&(d=1),c="0000"+c.toString(16),a.H[b].innerHTML=c.slice(c.length-d).toUpperCase())}
|
||||
function Da(a){O(a,"A",a.h,2);O(a,"X",a.w,2);O(a,"Y",a.F,2);var b=Ea(a);O(a,"C",b&1?1:0);O(a,"Z",b&2?1:0);O(a,"I",b&4?1:0);O(a,"D",b&8?1:0);O(a,"B",b&16?1:0);O(a,"V",b&64?1:0);O(a,"N",b&128?1:0);O(a,"S",a.G,4);O(a,"PC",a.f,4);a.H.speed&&a.ta&&(a.H.speed.innerHTML=a.ta.toFixed(1)+"Mhz")}
|
||||
function Ca(a,b){var c=30;c<a.Ja&&(c=a.Ja);c<a.Ia&&(c=a.Ia);var d=1;b&&a.speed>a.Ra&&a.ta&&(d=a.ta);d>a.Ma&&2>a.speed&&(d=a.Ma);a.kb=Math.round(1E3/30);a.ja=Math.floor(1E6/c*d);a.ra=Math.floor(1E6/30*d);a.Xa=Math.floor(1E6/a.Ja*d);a.Wa=Math.floor(1E6/a.Ia*d);b||(a.R=a.ra,a.Z=a.Xa,a.V=a.Wa);a.Aa=0}
|
||||
function Fa(a){var b=ea(),c=a.kb;a.$&&(c=Math.round(c*a.$/a.ra));c=c-(b-a.lb);if(b=b-a.Oa)a.ta=Math.round(a.U/(100*b))/10,864E5<=b&&M(a);0>c?c=0:1==a.speed?a.ta<=a.Ma&&(c=0):2==a.speed&&(c=0);a.Aa+=a.$;return c}
|
||||
f.va=function(){if(I(this,!0)){this.C.ma||(M(this),this.J&&this.J.start(),this.C.ma=!0,this.H.run&&(this.H.run.innerHTML="Halt"),this.ca());1E6<=this.Aa&&Ca(this,!0);this.$=0;this.lb=ea();try{do{this.step(this.ja);var a=this.L-this.D;this.U+=a;this.$+=a;this.L=this.D=0;this.Z-=this.ja;0>=this.Z&&(this.Z+=this.Xa,this.hb());this.V-=this.ja;0>=this.V&&(this.V+=this.Wa,Da(this));this.R-=this.ja;if(0>=this.R){this.R+=this.ra;break}}while(this.C.ma)}catch(b){this.aa();this.update();I(this,!1);sa(this,
|
||||
b.stack||b.message);return}setTimeout(function(a){return function(){a.va()}}(this),Fa(this))}else this.update(),this.J&&this.J.stop(this.Oa,this.U)};
|
||||
f.step=function(a){var b=!0;this.b=this.g=-1;var c;if(c=a&&this.u)c=this.u,c=0<c.sa.length||0<c.wa.length||0<c.ya.length;this.L=this.D=a;do{a=this.a[this.f];var d;if(d=c){d=this.u;var e=a,g=!1;Ga(d,this.f,d.sa,"exec")?g=!0:(d.L++,d.B[e][1]++,d.xa[d.La++]=d.s.f,d.La>=d.xa.length&&(d.La=0));d=!!g}if(d){b=void 0;this.aa();break}this.f++;this.o[a].call(this);if(0<=this.b){this.b>=this.oa&&this.b<=this.pa&&Aa(this,this.b,this.f);if(d=c)d=this.u,e=!1,Ga(d,this.b,d.wa,"read")&&(e=!0),d=!!e;if(d){b=!1;this.aa();
|
||||
break}this.b=-1}else if(0<=this.g){this.g>=this.da&&this.g<=this.ia&&Ba(this,this.g,this.f);if(d=c){d=this.u;var e=this.g,g=this.a[this.g],h=!1;(g&255)!=g&&(d.l("invalid value at "+r(e)+": "+g),h=!0);Ga(d,e,d.ya,"write")&&(h=!0);d=!!h}if(d){b=!1;this.aa();break}this.g=-1}this.D-=this.fb[a]}while(0<this.D);return b};function Ha(a){a.R=0;a.L-=a.D;a.D=0}f.aa=function(){J(this,!0);this.L-=this.D;this.D=0;this.C.ma&&(this.C.ma=!1,this.H.run&&(this.H.run.innerHTML="Run"))};
|
||||
f.update=function(){this.hb();Da(this)};function Ia(a){return a.C.ma?a.U+a.L-a.D:0}f.S=function(a){return this.a[a]};f.W=function(a,b){this.a[a]=b};function Ea(a){var b=a.c&256?1:0,b=b|(a.j&255?0:2),b=b|((a.v&255^a.A^a.v>>1)&128?64:0),b=b|(a.i&128?128:0);return a.B&60|b}
|
||||
function Ja(a){a.B|=8;a.o[97]=a.Yb;a.o[101]=a.$b;a.o[105]=a.Xb;a.o[109]=a.Ub;a.o[113]=a.Zb;a.o[117]=a.ac;a.o[121]=a.Wb;a.o[125]=a.Vb;a.o[225]=a.ne;a.o[229]=a.pe;a.o[233]=a.me;a.o[237]=a.je;a.o[241]=a.oe;a.o[245]=a.qe;a.o[249]=a.le;a.o[253]=a.ke}function Ka(a){a.B&=-9;a.o[97]=a.xb;a.o[101]=a.zb;a.o[105]=a.wb;a.o[109]=a.tb;a.o[113]=a.yb;a.o[117]=a.Ab;a.o[121]=a.vb;a.o[125]=a.ub;a.o[225]=a.Fb;a.o[229]=a.Hb;a.o[233]=a.Eb;a.o[237]=a.Bb;a.o[241]=a.Gb;a.o[245]=a.Ib;a.o[249]=a.Db;a.o[253]=a.Cb}
|
||||
function P(a,b,c){var d=a.c&256?1:0,e=(b&15)+(c&15)+d;10<=e&&(e=e+6&15|16);e+=(b&240)+(c&240);a.A=b^c;a.v=e;a.i=e&255;160<=e&&(e+=96);512<=e&&(e-=256);a.c=e;a.j=b+c+d&255;a.D--;return e&255}function Q(a,b,c){var d=a.c&256?0:1,e=(b&15)-(c&15)-d;0>e&&(e=(e-6&15)-16);e+=(b&240)-(c&240);0>e&&(e-=96);a.i=a.j=(a.c=b-c-d)&255;a.A=b^c;a.v=a.c;a.c^=256;a.D--;return e&255}function wa(a){a.h=0;a.w=0;a.F=0;a.G=256;a.B=0;a.i=0;a.j=0;a.A=0;a.v=0;a.c=0;a.f=0;a.b=-1;a.g=-1;a.ta=0;a.U=a.L=a.D=0}
|
||||
f.wc=function(){this.f++;this.a[this.G--]=this.f>>8;this.G|=256;this.a[this.G--]=this.f&255;this.G|=256;this.B|=16;this.B=Ea(this);this.a[this.G--]=this.B;this.G|=256;this.B&=239;this.b=65534;this.f=this.a[this.b]|this.a[this.b+1]<<8};f.Qd=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.i=this.j=this.h|=this.a[this.b]};f.Sd=function(){this.b=this.a[this.f++];this.i=this.j=this.h|=this.a[this.b]};
|
||||
f.mc=function(){this.g=this.a[this.f++];this.c=this.a[this.g]<<1;this.i=this.j=this.a[this.g]=this.c&255};f.Vd=function(){this.B=Ea(this);this.a[this.G--]=this.B;this.G|=256};f.Pd=function(){this.b=this.f++;this.i=this.j=this.h|=this.a[this.b]};f.lc=function(){this.c=this.h<<1;this.i=this.j=this.h=this.c&255};f.Md=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.h|=this.a[this.b]};
|
||||
f.jc=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.a[this.g]<<1;this.i=this.j=this.a[this.g]=this.c&255};f.vc=function(){this.f+=(this.i&128?0:(this.D--,this.a[this.f]<<24>>24))+1};f.Rd=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.i=this.j=this.h|=this.a[this.b]};f.Td=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.h|=this.a[this.b]};
|
||||
f.nc=function(){this.g=this.a[this.f++]+this.w&255;this.c=this.a[this.g]<<1;this.i=this.j=this.a[this.g]=this.c&255};f.zc=function(){this.c=0};f.Od=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.h|=this.a[this.b]};f.Nd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.h|=this.a[this.b]};f.kc=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.a[this.g]<<1;this.i=this.j=this.a[this.g]=this.c&255};
|
||||
f.nd=function(){this.b=this.f++;this.a[this.G--]=this.f>>8;this.G|=256;this.a[this.G--]=this.f&255;this.G|=256;this.f=this.a[this.b]|this.a[this.b+1]<<8};f.fc=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.i=this.j=this.h&=this.a[this.b]};f.sc=function(){this.b=this.a[this.f++];this.j=this.h&this.a[this.b];this.i=this.i&127|this.a[this.b]&128;this.v=0;this.A=this.a[this.b]&64?128:0};f.hc=function(){this.b=this.a[this.f++];this.i=this.j=this.h&=this.a[this.b]};
|
||||
f.ae=function(){this.g=this.a[this.f++];this.c=this.c&65280|this.a[this.g];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.i=this.j=this.a[this.g]=this.c&255};f.Xd=function(){this.G=this.G+1&255|256;this.B=this.a[this.G];this.c=this.B&1?256:0;this.j=this.B&2?0:1;this.i=this.B&128;this.v=0;this.A=this.B&64?128:0};f.ec=function(){this.b=this.f++;this.i=this.j=this.h&=this.a[this.b]};
|
||||
f.$d=function(){this.c=this.c&65280|this.h;this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.i=this.j=this.h=this.c&255};f.rc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.j=this.h&this.a[this.b];this.i=this.i&127|this.a[this.b]&128;this.v=0;this.A=this.a[this.b]&64?128:0};f.bc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.h&=this.a[this.b]};
|
||||
f.Yd=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.c&65280|this.a[this.g];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.i=this.j=this.a[this.g]=this.c&255};f.tc=function(){this.f+=(this.i&128?(this.D--,this.a[this.f]<<24>>24):0)+1};f.gc=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.i=this.j=this.h&=this.a[this.b]};f.ic=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.h&=this.a[this.b]};
|
||||
f.be=function(){this.g=this.a[this.f++]+this.w&255;this.c=this.c&65280|this.a[this.g];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.i=this.j=this.a[this.g]=this.c&255};f.re=function(){this.c=256};f.dc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.h&=this.a[this.b]};f.cc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.h&=this.a[this.b]};
|
||||
f.Zd=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.c&65280|this.a[this.g];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.i=this.j=this.a[this.g]=this.c&255};f.he=function(){this.G=this.G+1&255|256;this.B=this.a[this.G];this.c=this.B&1?256:0;this.j=this.B&2?0:1;this.i=this.B&128;this.v=0;this.A=this.B&64?128:0;this.G=this.G+2&255|256;this.f=this.a[this.G-1|256]|this.a[this.G]<<8};
|
||||
f.ad=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.i=this.j=this.h^=this.a[this.b]};f.cd=function(){this.b=this.a[this.f++];this.i=this.j=this.h^=this.a[this.b]};f.Jd=function(){this.g=this.a[this.f++];this.c=this.c&65279|(this.a[this.g]&1?256:0);this.a[this.g]=(this.c=this.c&65280|this.a[this.g]>>1)&255;this.i=this.j=this.c&255};f.Ud=function(){this.a[this.G--]=this.h;this.G|=256};f.$c=function(){this.b=this.f++;this.i=this.j=this.h^=this.a[this.b]};
|
||||
f.Id=function(){this.c=this.c&65279|(this.h&1?256:0);this.h=(this.c=this.c&65280|this.h>>1)&255;this.i=this.j=this.c&255};f.md=function(){this.b=this.f;this.f=this.a[this.b]|this.a[this.b+1]<<8};f.Xc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.h^=this.a[this.b]};f.Gd=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.c&65279|(this.a[this.g]&1?256:0);this.a[this.g]=(this.c=this.c&65280|this.a[this.g]>>1)&255;this.i=this.j=this.c&255};
|
||||
f.xc=function(){this.f+=((this.v&255^this.A^this.v>>1)&128?0:(this.D--,this.a[this.f]<<24>>24))+1};f.bd=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.i=this.j=this.h^=this.a[this.b]};f.dd=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.h^=this.a[this.b]};f.Kd=function(){this.g=this.a[this.f++]+this.w&255;this.c=this.c&65279|(this.a[this.g]&1?256:0);this.a[this.g]=(this.c=this.c&65280|this.a[this.g]>>1)&255;this.i=this.j=this.c&255};
|
||||
f.Bc=function(){this.B&=251};f.Zc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.h^=this.a[this.b]};f.Yc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.h^=this.a[this.b]};f.Hd=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.c&65279|(this.a[this.g]&1?256:0);this.a[this.g]=(this.c=this.c&65280|this.a[this.g]>>1)&255;this.i=this.j=this.c&255};
|
||||
f.ie=function(){this.G=this.G+2&255|256;this.f=(this.a[this.G-1|256]|this.a[this.G]<<8)+1};f.xb=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.Yb=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=P(this,this.h,this.a[this.b])};
|
||||
f.zb=function(){this.b=this.a[this.f++];this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.$b=function(){this.b=this.a[this.f++];this.h=P(this,this.h,this.a[this.b])};f.fe=function(){this.g=this.a[this.f++];this.c=this.c&65280|this.a[this.g];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.i=this.j=this.a[this.g]=this.c&255};f.Wd=function(){this.G=this.G+1&255|256;this.i=this.j=this.h=this.a[this.G]};
|
||||
f.wb=function(){this.b=this.f++;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.Xb=function(){this.b=this.f++;this.h=P(this,this.h,this.a[this.b])};f.ee=function(){this.c=this.c&65280|this.h;this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.i=this.j=this.h=this.c&255};f.ld=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.f=this.a[this.b]|this.a[this.b+1]<<8};
|
||||
f.tb=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.Ub=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=P(this,this.h,this.a[this.b])};f.ce=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.c&65280|this.a[this.g];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.i=this.j=this.a[this.g]=this.c&255};
|
||||
f.yc=function(){this.f+=((this.v&255^this.A^this.v>>1)&128?(this.D--,this.a[this.f]<<24>>24):0)+1};f.yb=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.Zb=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.h=P(this,this.h,this.a[this.b])};
|
||||
f.Ab=function(){this.b=this.a[this.f++]+this.w&255;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.ac=function(){this.b=this.a[this.f++]+this.w&255;this.h=P(this,this.h,this.a[this.b])};f.ge=function(){this.g=this.a[this.f++]+this.w&255;this.c=this.c&65280|this.a[this.g];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.i=this.j=this.a[this.g]=this.c&255};f.te=function(){this.B|=4};
|
||||
f.vb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.Wb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.h=P(this,this.h,this.a[this.b])};f.ub=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};
|
||||
f.Vb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.h=P(this,this.h,this.a[this.b])};f.de=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.c&65280|this.a[this.g];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.i=this.j=this.a[this.g]=this.c&255};f.xe=function(){this.g=this.a[this.f++]+this.w&255;this.g=this.a[this.g]|this.a[this.g+1]<<8;this.a[this.g]=this.h};f.Fe=function(){this.g=this.a[this.f++];this.a[this.g]=this.F};
|
||||
f.ze=function(){this.g=this.a[this.f++];this.a[this.g]=this.h};f.Ce=function(){this.g=this.a[this.f++];this.a[this.g]=this.w};f.Wc=function(){this.i=this.j=this.F=this.F-1&255};f.Le=function(){this.i=this.j=this.h=this.w};f.Ee=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.a[this.g]=this.F};f.ue=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.a[this.g]=this.h};f.Be=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.a[this.g]=this.w};
|
||||
f.oc=function(){this.f+=(this.c&256?0:(this.D--,this.a[this.f]<<24>>24))+1};f.ye=function(){this.g=this.a[this.f++];this.g=(this.a[this.g]|this.a[this.g+1]<<8)+this.F;this.a[this.g]=this.h};f.Ge=function(){this.g=this.a[this.f++]+this.w&255;this.a[this.g]=this.F};f.Ae=function(){this.g=this.a[this.f++]+this.w&255;this.a[this.g]=this.h};f.De=function(){this.g=this.a[this.f++]+this.F&255;this.a[this.g]=this.w};f.Ne=function(){this.i=this.j=this.h=this.F};
|
||||
f.we=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.a[this.g]=this.h};f.Me=function(){this.G=this.w|256};f.ve=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.a[this.g]=this.h};f.Dd=function(){this.b=this.f++;this.i=this.j=this.F=this.a[this.b]};f.sd=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.i=this.j=this.h=this.a[this.b]};f.yd=function(){this.b=this.f++;this.i=this.j=this.w=this.a[this.b]};
|
||||
f.Ed=function(){this.b=this.a[this.f++];this.i=this.j=this.F=this.a[this.b]};f.ud=function(){this.b=this.a[this.f++];this.i=this.j=this.h=this.a[this.b]};f.zd=function(){this.b=this.a[this.f++];this.i=this.j=this.w=this.a[this.b]};f.Je=function(){this.i=this.j=this.F=this.h};f.rd=function(){this.b=this.f++;this.i=this.j=this.h=this.a[this.b]};f.Ie=function(){this.i=this.j=this.w=this.h};f.Bd=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.F=this.a[this.b]};
|
||||
f.od=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.h=this.a[this.b]};f.wd=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.w=this.a[this.b]};f.pc=function(){this.f+=(this.c&256?(this.D--,this.a[this.f]<<24>>24):0)+1};f.td=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.i=this.j=this.h=this.a[this.b]};f.Fd=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.F=this.a[this.b]};
|
||||
f.vd=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.h=this.a[this.b]};f.Ad=function(){this.b=this.a[this.f++]+this.F&255;this.i=this.j=this.w=this.a[this.b]};f.Cc=function(){this.A=this.v=0};f.qd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.h=this.a[this.b]};f.Ke=function(){this.i=this.j=this.w=this.G&255};f.Cd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.F=this.a[this.b]};
|
||||
f.pd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.h=this.a[this.b]};f.xd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.w=this.a[this.b]};f.Pc=function(){this.b=this.f++;this.i=this.j=this.c=this.F-this.a[this.b];this.c^=256};f.Hc=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};
|
||||
f.Qc=function(){this.b=this.a[this.f++];this.i=this.j=this.c=this.F-this.a[this.b];this.c^=256};f.Jc=function(){this.b=this.a[this.f++];this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Tc=function(){this.g=this.a[this.f++];this.i=this.j=this.a[this.g]=this.a[this.g]-1&255};f.kd=function(){this.i=this.j=this.F=this.F+1&255};f.Gc=function(){this.b=this.f++;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Vc=function(){this.i=this.j=this.w=this.w-1&255};
|
||||
f.Oc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.c=this.F-this.a[this.b];this.c^=256};f.Dc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Rc=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.a[this.g]=this.a[this.g]-1&255};f.uc=function(){this.f+=(this.j&255?(this.D--,this.a[this.f]<<24>>24):0)+1};
|
||||
f.Ic=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Kc=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Uc=function(){this.g=this.a[this.f++]+this.w&255;this.i=this.j=this.a[this.g]=this.a[this.g]-1&255};f.Ac=function(){Ka(this)};
|
||||
f.Fc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Ec=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Sc=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.a[this.g]=this.a[this.g]-1&255};f.Mc=function(){this.b=this.f++;this.i=this.j=this.c=this.w-this.a[this.b];this.c^=256};
|
||||
f.Fb=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.ne=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=Q(this,this.h,this.a[this.b])};f.Nc=function(){this.b=this.a[this.f++];this.i=this.j=this.c=this.w-this.a[this.b];this.c^=256};
|
||||
f.Hb=function(){this.b=this.a[this.f++];this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.pe=function(){this.b=this.a[this.f++];this.h=Q(this,this.h,this.a[this.b])};f.gd=function(){this.g=this.a[this.f++];this.i=this.j=this.a[this.g]=this.a[this.g]+1&255};f.jd=function(){this.i=this.j=this.w=this.w+1&255};
|
||||
f.Eb=function(){this.b=this.f++;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.me=function(){this.b=this.f++;this.h=Q(this,this.h,this.a[this.b])};f.Ld=function(){};f.Lc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.c=this.w-this.a[this.b];this.c^=256};
|
||||
f.Bb=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.je=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=Q(this,this.h,this.a[this.b])};f.ed=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.a[this.g]=this.a[this.g]+1&255};f.qc=function(){this.f+=(this.j&255?0:(this.D--,this.a[this.f]<<24>>24))+1};
|
||||
f.Gb=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.oe=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.h=Q(this,this.h,this.a[this.b])};
|
||||
f.Ib=function(){this.b=this.a[this.f++]+this.w&255;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.qe=function(){this.b=this.a[this.f++]+this.w&255;this.h=Q(this,this.h,this.a[this.b])};f.hd=function(){this.g=this.a[this.f++]+this.w&255;this.i=this.j=this.a[this.g]=this.a[this.g]+1&255};f.se=function(){Ja(this)};
|
||||
f.Db=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.le=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.h=Q(this,this.h,this.a[this.b])};
|
||||
f.Cb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.ke=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.h=Q(this,this.h,this.a[this.b])};f.fd=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.a[this.g]=this.a[this.g]+1&255};
|
||||
f.He=function(){var a;a=this.a[this.f++];switch(a){case 0:this.l("HALT");this.aa();break;case 1:a=this.f;for(var b="";a<this.a.length;){var c=this.a[a++];if(!c)break;b+=String.fromCharCode(c)}this.f=a;b=b.replace(/%A/g,p(this.h,2)).replace(/%X/g,p(this.w,2)).replace(/%Y/g,p(this.F,2));this.l(b);Ha(this);break;default:this.f-=2,this.l("undefined opSim: "+q(a)+" at "+r(this.f)),this.aa()}};f.m=function(){var a=this.a[--this.f];this.l("undefined opcode: "+q(a)+" at "+r(this.f));this.aa()};
|
||||
x(function(){for(var a=G(document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new va(d);F(d,c)}});function R(a){A.call(this,"C1PROM",a);this.b=this.a=null;this.g=a.size;if(this.o=a.image){a=this.o;var b=ba(this.o);"json"!=b&&"hex"!=b&&(a="http://"+(window?window.location.host:"www.pcjs.org")+"/api/v1/dump?file="+this.o+"&format=bytes");var c=this;t(a,function(a,b,g){La(c,a,b,g)})}}C(R);
|
||||
R.prototype.ba=function(a,b,c,d){this.a=a;this.v=b;a=c-b+1;this.g||(this.g=a);a!=this.g?sa(this,"computer-specified ROM size ("+r(a)+") does not match component-specified size ("+r(this.g)+")"):(d&&(this.s=d,N(d,b,c,this,this.W)),Ma(this))};R.prototype.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.u=L(b,"debugger"))};R.prototype.W=function(a,b){if(void 0!==b){this.u&&S(this.u,this,a,b,this.u.pb,!0);var c=a-this.v;this.a[this.v+c]=this.b?this.b[c]:0}};
|
||||
function La(a,b,c,d){if(d)a.l('Error loading ROM "'+b+'" ('+d+")");else{if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),g=e.bytes;g?a.b=g:a.b=e}catch(h){a.l('Error processing ROM "'+b+'": '+h.message);return}else for(b=c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.b=Array(b.length),c=0;c<b.length;c++)a.b[c]=parseInt(b[c],16);Ma(a)}}
|
||||
function Ma(a){if(!K(a))if(!a.o)a.X();else if(a.b&&a.a){var b=a.b.length;if(b!=a.g)sa(a,"ROM image size ("+r(b)+") does not match component-specified size ("+r(a.g)+")");else{for(var c=0;c<b;c++)a.a[a.v+c]=a.b[c];a.X()}}}x(function(){for(var a=G(document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new R(d);F(d,c)}});function Na(a){A.call(this,"C1PRAM",a)}C(Na);Na.prototype.ba=function(a){this.a=a;this.X()};
|
||||
x(function(){for(var a=G(document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Na(d);F(d,c)}});
|
||||
function Oa(a){A.call(this,"C1PKeyboard",a);this.C.M=!1;this.Ia=a.model;this.da=8;this.fb=10;this.Xa=13;this.ia=27;this.Oa=this.da;this.Wa=this.fb;this.Ja=this.Xa;this.$=this.ia;this.L=241;this.Z=224;this.Sa=3;this.Ta=15;this.K=1;this.D=[];this.D["break"]=this.Z;this.D.esc=this.$;this.D["ctrl-c"]=this.Sa;this.D["ctrl-o"]=this.Ta;this.b=[];this.b[49]=30464;this.b[33]=30704;this.b[50]=30208;this.b[34]=30448;this.b[51]=29952;this.b[35]=30192;this.b[52]=29696;this.b[36]=29936;this.b[53]=29440;this.b[37]=
|
||||
29680;this.b[54]=29184;this.b[38]=29424;this.b[55]=28928;this.b[39]=29168;this.b[56]=26368;this.b[40]=26608;this.b[57]=26112;this.b[41]=26352;this.b[48]=25856;this.b[58]=25600;this.b[42]=25840;this.b[45]=25344;this.b[61]=25584;this.b[46]=22272;this.b[62]=22512;this.b[108]=22016;this.b[76]=22256;this.b[92]=22256;this.b[111]=21760;this.b[79]=22E3;this.b[this.Oa]=22E3;this.b[this.Wa]=21504;this.b[this.Ja]=21248;this.b[119]=18176;this.b[87]=18416;this.b[101]=17920;this.b[69]=18160;this.b[114]=17664;this.b[82]=
|
||||
17904;this.b[116]=17408;this.b[84]=17648;this.b[121]=17152;this.b[89]=17392;this.b[117]=16896;this.b[85]=17136;this.b[105]=16640;this.b[73]=16880;this.b[115]=14080;this.b[83]=14320;this.b[100]=13824;this.b[68]=14064;this.b[102]=13568;this.b[70]=13808;this.b[103]=13312;this.b[71]=13552;this.b[104]=13056;this.b[72]=13296;this.b[106]=12800;this.b[74]=13040;this.b[107]=12544;this.b[75]=12784;this.b[91]=12784;this.b[120]=9984;this.b[88]=10224;this.b[99]=9728;this.b[67]=9968;this.b[118]=9472;this.b[86]=
|
||||
9712;this.b[98]=9216;this.b[66]=9456;this.b[110]=8960;this.b[78]=9200;this.b[94]=9200;this.b[109]=8704;this.b[77]=8944;this.b[93]=8944;this.b[44]=8448;this.b[60]=8688;this.b[113]=5888;this.b[81]=6128;this.b[97]=5632;this.b[65]=5872;this.b[122]=5376;this.b[90]=5616;this.b[32]=5120;this.b[47]=4864;this.b[63]=5104;this.b[59]=4608;this.b[43]=4848;this.b[112]=4352;this.b[80]=4592;this.b[64]=4592;this.b[this.L]=1536;this.b[this.$]=1280;this.b[240]=512;this.b[242]=256;this.b[244]=0;this.reset()}B(La);
|
||||
f=La.prototype;f.reset=function(){this.Na(this.Ia);this.g=this.K;this.oa=0;this.o=[this.K,0,0,0,0,0,0,0];this.P=[];if(this.v)for(var a in this.v)isNaN(+a)||this.v[a]&&clearTimeout(this.v[a]);this.v=[];this.Aa=this.A=0;this.pa=-1;this.ja=this.o;this.qa=this.V=0;this.B=""};
|
||||
f.T=function(a,b,c){if(void 0===this.H[b])switch(b){case "keyDown":return this.H[b]=c,c.onkeydown=function(a){return function(b){return Ma(a,b,!0)}}(this),!0;case "keyPress":return this.H[b]=c,c.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.B="";a.g&8?a.g&=-9:c=!Na(a,b);a.u&&H(a.u,a.u.za)&&a.u.message("keyPress("+p(b)+"): "+(c?"pass":"consume"));return c}}(this),!0;case "keyUp":return this.H[b]=c,c.onkeyup=function(a){return function(b){return Ma(a,b,
|
||||
!1)}}(this),!0;case "break":return this.H[b]=c,c.onclick=function(a){return function(){a.J&&a.J.reset(!0)}}(this),!0;default:if(void 0!==this.D[b])return this.H[b]=c,c.onclick=function(a,b,c){return function(){a.s&&a.s.ca();return!Na(a,c)}}(this,b,this.D[b]),!0}return!1};f.ba=function(a,b,c,d){this.a=a;this.ra=b;this.ib=c-b+1;this.lb=this.ra+this.ib;d&&(this.s=d,N(d,b,c,this,this.W));this.X()};f.Na=function(a){this.O=a;this.R=255;600!=this.O&&(this.R=0,this.l("updated keyboard model: "+this.O))};
|
||||
f.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.J=b,this.u=L(b,"debugger"))};f.X=function(){this.U=(this.kb=v("iOS"))||v("Android");this.u&&H(this.u,this.u.za)&&this.u.message("mobile keyboard support: "+(this.U?"true":"false")+" ("+window.navigator.userAgent+")");z.prototype.X.call(this)};function Oa(a,b){var c=b?100:250;a.s&&a.s.ta&&(c/=a.s.ta);return c}function Pa(a,b){!a.A||void 0!==b&&b==a.A||(a.u&&H(a.u,a.u.za)&&a.u.message("autoClear("+p(a.A)+")"),clearTimeout(a.v[a.A]),T(a,a.A,!1,4))}
|
||||
function U(a,b,c){a.B=b;Qa(a,c||300)}function Qa(a,b){if(0<a.B.length){var c=a.B.charCodeAt(0);10==c&&(c=13);65<=c&&90>=c&&(c+=32);a.B=a.B.substr(1);Na(a,c)}0<a.B.length&&setTimeout(function(a){return function(){Qa(a,b)}}(a),b)}
|
||||
function Ma(a,b,c){var d,e=!c;b=b.keyCode;c&&(a.Aa=b);16==b?(a.g&=-5,c&&(a.g|=4),b+=224,e=!1):18==b?(a.g&=-3,c&&(a.g|=2),b+=224,e=!1):b==a.L-224?(a.g&=-65,c&&(a.g|=64),b+=224,e=!1):20==b?(c=!c,a.g&=~a.K,c&&(a.g|=a.K),b+=224,e=!1):91==b?(a.g&=-9,c&&(a.g|=8),e=!1,d=!0):d=9==b?e=!1:b==a.ia||b==a.da?c?!Na(a,b):!1:!0;e&&(a.g&=-9,a.U||b!=a.Aa||Pa(a));void 0===d&&(d=!T(a,b,c,2));a.u&&H(a.u,a.u.za)&&a.u.message("key"+(c?"Down":"Up")+"("+p(b)+"): "+(d?"pass":"consume"));return d}
|
||||
function Na(a,b){var c=!1;b==a.Z?a.J&&(a.J.reset(!0),c=!0):(a.U&&65<=b&&90>=b&&(b+=32),Pa(a,b),T(a,b,!0,0)&&(a.s.speed==a.s.eb?T(a,b,!1,1):(c=!1,a.v[b]&&(clearTimeout(a.v[b]),c=!0),c=Oa(a,c),a.v[a.A=b]=setTimeout(function(a){return function(){T(a,b,!1,3)}}(a),c),a.u&&H(a.u,a.u.za)&&a.u.message("keyPressSimulate("+p(b)+"): setTimeout()")),c=!0));a.u&&H(a.u,a.u.za)&&a.u.message("keyPressSimulate("+p(b)+"): "+(c?"true":"false"));return c}
|
||||
function T(a,b,c,d){var e=!1;c||(a.v[b]=null,a.A==b&&(a.A=0));var g=0,h=a.b[b];void 0===h&&(1<=b&&26>=b&&(b+=64,g=a.L),h=a.b[b]);void 0!==h&&(b=h>>12,e=h>>8&15,g||(g=h&255),c?(a.o[b]|=1<<e,a.o[0]=g==a.L?a.o[0]|64:240==g?a.o[0]|4:242==g?a.o[0]|2:a.o[0]&-71):(a.o[b]&=~(1<<e),a.o[0]&=-71,a.o[0]|=a.g&70),c=0==d&&!a.P.length,a.P.push(a.o.slice()),Ra(a,c),e=!0);return e}f.S=function(){};f.W=function(a){this.oa=this.s.S(a)^this.R;this.V++;Ra(this,!1,a)};
|
||||
function Ra(a,b,c){var d=Ga(a.s);b||(a.s.speed==a.s.eb?b=void 0!==c&&32<=a.V:(b=d-a.qa,b=0>b||8192<=b));b&&(b=a.P.shift(),void 0!==b&&(a.ja=b),a.V=0,a.qa=d);for(b=d=0;8>b;b++)a.oa&1<<b&&(d|=a.ja[b]);d^=a.R;if(void 0!==c)a.a[c]=d;else if(c=a.ra,d!=a.pa)for(;c<a.lb;c++)a.a[c]=d;a.pa=d}x(function(){for(var a=G(document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new La(d);F(d,c)}});
|
||||
function Sa(a,b,c,d){z.call(this,"C1PVideo",a);this.ja=a.model;this.Z=a.charCols;this.$=a.charRows;this.pa=a.screenWidth;this.qa=a.screenHeight;this.A=a.charWidth;this.B=a.charHeight;Ta(this);this.D=b;this.ia=c;this.o=d}B(Sa);f=Sa.prototype;f.reset=function(a){this.Na(this.ja);if(this.a)for(var b=this.K;b<this.P;b++)this.a[b]=a?Math.floor(256*Math.random()):32};f.T=function(a,b,c){switch(b){case "refresh":return this.H[b]=c,c.onclick=function(a){return function(){Ua(a);va(a)}}(this),!0}return!1};
|
||||
f.ba=function(a,b,c,d){this.a=a;this.K=b;this.oa=c-b+1;this.P=this.K+this.oa;d&&(this.s=d,wa(d,56832,56832,this,this.S),N(d,56832,56832,this,this.W));this.reset(!0)};function Ta(a,b,c,d,e){a.J=void 0!==b?b:a.Z;a.ra=void 0!==c?c:a.$;a.g=a.J*a.ra;a.P=a.K+a.g;a.V=void 0!==d?d:0;a.da=void 0!==e?e:c;a.R=Math.floor(a.pa/a.J);a.U=Math.floor(a.qa/a.da)}f.ca=function(){this.D.focus()};
|
||||
f.Na=function(a){this.O=a;600==this.O?(Ta(this,this.Z,this.$,3,25),1024==this.g&&this.s&&(this.v=this.P+this.g-1,N(this.s,this.v,this.v,this,this.Mb))):(this.l("updated video model: "+this.O),Ta(this,64,32));Ua(this);va(this)};f.ha=function(a,b){if(a&&!this.C.M&&K(this)){if(this.C.M=!0,this.u=L(b,"debugger"),this.b=L(b,"keyboard"))this.b.T("canvas","keyDown",this.D),this.b.T("canvas","keyPress",this.D),this.b.T("canvas","keyUp",this.D)}else!a&&this.C.M&&(this.C.M=!1)};
|
||||
f.X=function(){this.A||(this.A=Math.floor(this.o.width/16));this.B||(this.B=Math.floor(this.o.height/16));z.prototype.X.call(this)};f.S=function(a,b){var c=this.s.S(a);void 0!==b&&this.u&&S(this.u,this,a,b,this.u.ab);this.s.W(a,c&127|(Math.floor(Ga(this.s)/8333)&1?128:0))};f.W=function(a,b){void 0!==b&&this.u&&S(this.u,this,a,b,this.u.ab)};
|
||||
f.Mb=function(a,b){if(void 0!==b){this.u&&S(this.u,this,a,b,this.u.ab,!0);this.Na(540);this.b&&this.b.Na(542);var c=this.s,d=c.K,e=[],g=xa(d,this.v,this.v,this,this.Mb);if(0<=g){e.push(d[g][0]);e.push(d[g][1]);d.splice(g,1);for(var h=65536,k=0,g=0;g<d.length;g++)h>d[g][0]&&(h=d[g][0]),k<d[g][1]&&(k=d[g][1]);e.push(h);e.push(k)}4==e.length&&(c.da=e[2],c.ia=e[3])}};function Ua(a){a.L=Array(a.g);for(var b=0;b<=a.g;b++)a.L[b]=-1}
|
||||
function va(a){var b=0;if(a.C.M)for(;b<a.g;){var c=a.a[a.K+b];if(a.L[b]!=c){var d=Math.floor(b/a.J);if(d>=a.V&&(d-=a.V,d<a.da)){var e=c*a.A;a.ia.drawImage(a.o,e%a.o.width,Math.floor(e/a.o.width)*a.B,a.A,a.B,b%a.J*a.R,d*a.U,a.R,a.U)}a.L[b]=c}b++}}
|
||||
9712;this.b[98]=9216;this.b[66]=9456;this.b[110]=8960;this.b[78]=9200;this.b[94]=9200;this.b[109]=8704;this.b[77]=8944;this.b[93]=8944;this.b[44]=8448;this.b[60]=8688;this.b[113]=5888;this.b[81]=6128;this.b[97]=5632;this.b[65]=5872;this.b[122]=5376;this.b[90]=5616;this.b[32]=5120;this.b[47]=4864;this.b[63]=5104;this.b[59]=4608;this.b[43]=4848;this.b[112]=4352;this.b[80]=4592;this.b[64]=4592;this.b[this.L]=1536;this.b[this.$]=1280;this.b[240]=512;this.b[242]=256;this.b[244]=0;this.reset()}C(Oa);
|
||||
f=Oa.prototype;f.reset=function(){this.Na(this.Ia);this.g=this.K;this.oa=0;this.o=[this.K,0,0,0,0,0,0,0];this.P=[];if(this.v)for(var a in this.v)isNaN(+a)||this.v[a]&&clearTimeout(this.v[a]);this.v=[];this.Aa=this.A=0;this.pa=-1;this.ja=this.o;this.qa=this.V=0;this.B=""};
|
||||
f.T=function(a,b,c){if(void 0===this.H[b])switch(b){case "keyDown":return this.H[b]=c,c.onkeydown=function(a){return function(b){return Pa(a,b,!0)}}(this),!0;case "keyPress":return this.H[b]=c,c.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.B="";a.g&8?a.g&=-9:c=!Qa(a,b);a.u&&H(a.u,a.u.za)&&a.u.message("keyPress("+q(b)+"): "+(c?"pass":"consume"));return c}}(this),!0;case "keyUp":return this.H[b]=c,c.onkeyup=function(a){return function(b){return Pa(a,b,
|
||||
!1)}}(this),!0;case "break":return this.H[b]=c,c.onclick=function(a){return function(){a.J&&a.J.reset(!0)}}(this),!0;default:if(void 0!==this.D[b])return this.H[b]=c,c.onclick=function(a,b,c){return function(){a.s&&a.s.ca();return!Qa(a,c)}}(this,b,this.D[b]),!0}return!1};f.ba=function(a,b,c,d){this.a=a;this.ra=b;this.ib=c-b+1;this.lb=this.ra+this.ib;d&&(this.s=d,N(d,b,c,this,this.W));this.X()};f.Na=function(a){this.O=a;this.R=255;600!=this.O&&(this.R=0,this.l("updated keyboard model: "+this.O))};
|
||||
f.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.J=b,this.u=L(b,"debugger"))};f.X=function(){this.U=(this.kb=v("iOS"))||v("Android");this.u&&H(this.u,this.u.za)&&this.u.message("mobile keyboard support: "+(this.U?"true":"false")+" ("+window.navigator.userAgent+")");A.prototype.X.call(this)};function Ra(a,b){var c=b?100:250;a.s&&a.s.ta&&(c/=a.s.ta);return c}function Sa(a,b){!a.A||void 0!==b&&b==a.A||(a.u&&H(a.u,a.u.za)&&a.u.message("autoClear("+q(a.A)+")"),clearTimeout(a.v[a.A]),T(a,a.A,!1,4))}
|
||||
function U(a,b,c){a.B=b;Ta(a,c||300)}function Ta(a,b){if(0<a.B.length){var c=a.B.charCodeAt(0);10==c&&(c=13);65<=c&&90>=c&&(c+=32);a.B=a.B.substr(1);Qa(a,c)}0<a.B.length&&setTimeout(function(a){return function(){Ta(a,b)}}(a),b)}
|
||||
function Pa(a,b,c){var d,e=!c;b=b.keyCode;c&&(a.Aa=b);16==b?(a.g&=-5,c&&(a.g|=4),b+=224,e=!1):18==b?(a.g&=-3,c&&(a.g|=2),b+=224,e=!1):b==a.L-224?(a.g&=-65,c&&(a.g|=64),b+=224,e=!1):20==b?(c=!c,a.g&=~a.K,c&&(a.g|=a.K),b+=224,e=!1):91==b?(a.g&=-9,c&&(a.g|=8),e=!1,d=!0):d=9==b?e=!1:b==a.ia||b==a.da?c?!Qa(a,b):!1:!0;e&&(a.g&=-9,a.U||b!=a.Aa||Sa(a));void 0===d&&(d=!T(a,b,c,2));a.u&&H(a.u,a.u.za)&&a.u.message("key"+(c?"Down":"Up")+"("+q(b)+"): "+(d?"pass":"consume"));return d}
|
||||
function Qa(a,b){var c=!1;b==a.Z?a.J&&(a.J.reset(!0),c=!0):(a.U&&65<=b&&90>=b&&(b+=32),Sa(a,b),T(a,b,!0,0)&&(a.s.speed==a.s.eb?T(a,b,!1,1):(c=!1,a.v[b]&&(clearTimeout(a.v[b]),c=!0),c=Ra(a,c),a.v[a.A=b]=setTimeout(function(a){return function(){T(a,b,!1,3)}}(a),c),a.u&&H(a.u,a.u.za)&&a.u.message("keyPressSimulate("+q(b)+"): setTimeout()")),c=!0));a.u&&H(a.u,a.u.za)&&a.u.message("keyPressSimulate("+q(b)+"): "+(c?"true":"false"));return c}
|
||||
function T(a,b,c,d){var e=!1;c||(a.v[b]=null,a.A==b&&(a.A=0));var g=0,h=a.b[b];void 0===h&&(1<=b&&26>=b&&(b+=64,g=a.L),h=a.b[b]);void 0!==h&&(b=h>>12,e=h>>8&15,g||(g=h&255),c?(a.o[b]|=1<<e,a.o[0]=g==a.L?a.o[0]|64:240==g?a.o[0]|4:242==g?a.o[0]|2:a.o[0]&-71):(a.o[b]&=~(1<<e),a.o[0]&=-71,a.o[0]|=a.g&70),c=0==d&&!a.P.length,a.P.push(a.o.slice()),Ua(a,c),e=!0);return e}f.S=function(){};f.W=function(a){this.oa=this.s.S(a)^this.R;this.V++;Ua(this,!1,a)};
|
||||
function Ua(a,b,c){var d=Ia(a.s);b||(a.s.speed==a.s.eb?b=void 0!==c&&32<=a.V:(b=d-a.qa,b=0>b||8192<=b));b&&(b=a.P.shift(),void 0!==b&&(a.ja=b),a.V=0,a.qa=d);for(b=d=0;8>b;b++)a.oa&1<<b&&(d|=a.ja[b]);d^=a.R;if(void 0!==c)a.a[c]=d;else if(c=a.ra,d!=a.pa)for(;c<a.lb;c++)a.a[c]=d;a.pa=d}x(function(){for(var a=G(document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Oa(d);F(d,c)}});
|
||||
function Va(a,b,c,d){A.call(this,"C1PVideo",a);this.ja=a.model;this.Z=a.charCols;this.$=a.charRows;this.pa=a.screenWidth;this.qa=a.screenHeight;this.A=a.charWidth;this.B=a.charHeight;Wa(this);this.D=b;this.ia=c;this.o=d}C(Va);f=Va.prototype;f.reset=function(a){this.Na(this.ja);if(this.a)for(var b=this.K;b<this.P;b++)this.a[b]=a?Math.floor(256*Math.random()):32};f.T=function(a,b,c){switch(b){case "refresh":return this.H[b]=c,c.onclick=function(a){return function(){Xa(a);xa(a)}}(this),!0}return!1};
|
||||
f.ba=function(a,b,c,d){this.a=a;this.K=b;this.oa=c-b+1;this.P=this.K+this.oa;d&&(this.s=d,ya(d,56832,56832,this,this.S),N(d,56832,56832,this,this.W));this.reset(!0)};function Wa(a,b,c,d,e){a.J=void 0!==b?b:a.Z;a.ra=void 0!==c?c:a.$;a.g=a.J*a.ra;a.P=a.K+a.g;a.V=void 0!==d?d:0;a.da=void 0!==e?e:c;a.R=Math.floor(a.pa/a.J);a.U=Math.floor(a.qa/a.da)}f.ca=function(){this.D.focus()};
|
||||
f.Na=function(a){this.O=a;600==this.O?(Wa(this,this.Z,this.$,3,25),1024==this.g&&this.s&&(this.v=this.P+this.g-1,N(this.s,this.v,this.v,this,this.Lb))):(this.l("updated video model: "+this.O),Wa(this,64,32));Xa(this);xa(this)};f.ha=function(a,b){if(a&&!this.C.M&&K(this)){if(this.C.M=!0,this.u=L(b,"debugger"),this.b=L(b,"keyboard"))this.b.T("canvas","keyDown",this.D),this.b.T("canvas","keyPress",this.D),this.b.T("canvas","keyUp",this.D)}else!a&&this.C.M&&(this.C.M=!1)};
|
||||
f.X=function(){this.A||(this.A=Math.floor(this.o.width/16));this.B||(this.B=Math.floor(this.o.height/16));A.prototype.X.call(this)};f.S=function(a,b){var c=this.s.S(a);void 0!==b&&this.u&&S(this.u,this,a,b,this.u.ab);this.s.W(a,c&127|(Math.floor(Ia(this.s)/8333)&1?128:0))};f.W=function(a,b){void 0!==b&&this.u&&S(this.u,this,a,b,this.u.ab)};
|
||||
f.Lb=function(a,b){if(void 0!==b){this.u&&S(this.u,this,a,b,this.u.ab,!0);this.Na(540);this.b&&this.b.Na(542);var c=this.s,d=c.K,e=[],g=za(d,this.v,this.v,this,this.Lb);if(0<=g){e.push(d[g][0]);e.push(d[g][1]);d.splice(g,1);for(var h=65536,k=0,g=0;g<d.length;g++)h>d[g][0]&&(h=d[g][0]),k<d[g][1]&&(k=d[g][1]);e.push(h);e.push(k)}4==e.length&&(c.da=e[2],c.ia=e[3])}};function Xa(a){a.L=Array(a.g);for(var b=0;b<=a.g;b++)a.L[b]=-1}
|
||||
function xa(a){var b=0;if(a.C.M)for(;b<a.g;){var c=a.a[a.K+b];if(a.L[b]!=c){var d=Math.floor(b/a.J);if(d>=a.V&&(d-=a.V,d<a.da)){var e=c*a.A;a.ia.drawImage(a.o,e%a.o.width,Math.floor(e/a.o.width)*a.B,a.A,a.B,b%a.J*a.R,d*a.U,a.R,a.U)}a.L[b]=c}b++}}
|
||||
x(function(){for(var a=G(document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=E(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","c1pjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.setAttribute("contenteditable","true");e.setAttribute("autocapitalize","off");e.setAttribute("autocorrect","off");e.style.backgroundColor=d.screenColor;
|
||||
e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(e.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",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.appendChild(e);var g=new Image,h=e.getContext("2d"),e=new Sa(d,e,h,g);g.onload=function(a){return function(){a.X()}}(e,d.charSet);g.src=d.charSet;F(e,c)}});
|
||||
function Va(a){z.call(this,"C1PSerialPort",a);this.C.M=!1;this.O=a.demo;this.reset()}B(Va);f=Va.prototype;f.reset=function(){if(2!=this.g){this.v=this.B=0;var a=1;if(this.rb){var b=this.rb.match(/\d+/);null!==b&&(a=parseInt(b[0],10))}this.o='10 PRINT "HELLO OSI #'+a+'"\n';this.g=this.A=0}};f.start=function(){this.b&&this.O&&(U(this.b," C\n\n",3E3),setTimeout(function(a){return function(){a.g=1;U(a.b,"LOAD\n")}}(this),12E3));this.O=!1};
|
||||
f.T=function(a,b,c){var d=this;switch(b){case "listSerial":return this.H[b]=c,!0;case "loadSerial":return this.H[b]=c,c.onclick=function(){d.H.listSerial&&t(d.H.listSerial.value,d,d.sb)},!0;case "mountSerial":return!v("Mobi")&&window&&"FileReader"in window?(this.H[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){var b=a.currentTarget[1].files[0],c=new FileReader;c.onload=function(){d.sb(b.name,c.result.toString(),
|
||||
0)};c.readAsText(b);return!1}):c.parentNode.removeChild(c),!0}return!1};f.ba=function(a,b,c,d){this.a=a;this.D=b;this.L=c-b+1;this.K=this.D+this.L;if(this.s=d)wa(d,b,c,this,this.S),N(d,b,c,this,this.W);this.X()};f.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.J=b,this.b=L(b,"keyboard"),this.u=L(b,"debugger"))};
|
||||
f.sb=function(a,b,c){b?(this.o=b,this.g=this.A=0,this.J&&this.b&&this.s.C.ma?(this.l("auto-loading "+a),this.s.ca(),"."!=this.o.charAt(0)?(this.g=1,U(this.b,"NEW\nLOAD\n")):(this.g=2,this.J.reset(!0),U(this.b,"ML"))):this.l(a+" ready to load")):this.l(a+" load error ("+c+")")};f.S=function(a,b){void 0!==b&&(a&1?Wa(this):this.o&&!this.A&&Wa(this))};f.W=function(a,b){void 0!==b&&this.u&&S(this.u,this,a,b,this.u.Rb,!0)};
|
||||
function Wa(a){if(void 0!==a.o){a.B=0;a.v=0;if(a.A<a.o.length){var b=a.o.charCodeAt(a.A++);10==b&&(b=13);a.B=b;a.v=1}else 1==a.g&&a.b&&U(a.b," \nRUN\n"),a.g=0;for(b=a.D+0;b<a.K;b+=2)a.a[b]=a.v?1:0;for(b=a.D+1;b<a.K;b+=2)a.a[b]=a.v?a.B:0}}x(function(){for(var a=G(document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Va(d);F(d,c)}});function Xa(a){z.call(this,"C1PDiskController",a);this.C.M=!1;this.reset(!0)}B(Xa);f=Xa.prototype;
|
||||
f.reset=function(a){Ya(this);this.b=-1;a&&(this.g=[],this.g[0]={Se:0,tb:40,Sb:!0,Fa:20,na:0,Ea:-1,Va:[]})};
|
||||
function Ya(a){a.K={I:64,read:function(){},update:function(a){return function(c){void 0!==c&&(this.I=c);a.B.I&4||V(a,0,this)}}(a)};a.o={I:255,read:function(){this.update()},update:function(a){return function(c){void 0===c?c=a.o.I:Za(a,c,a.A.I);c=(c|190)&-2;if(0<=a.b&&a.g[a.b].Va.length){var d=a.g[a.b];d.Sb&&(c&=-33);d.na||(c&=-3);10>=--d.Fa&&(0<d.Fa?(c&=-129,$a(a)):(d.Fa=100,0<=a.b&&(a.g[a.b].Ea=0,ab(a))))}this.I=c;a.B.I&4&&V(a,0,this)}}(a)};a.B={I:0,read:function(){},update:function(a){return function(c){void 0!==
|
||||
c&&(this.I=c&-193);V(a,1,this);a.o.update();a.K.update()}}(a)};a.L={I:255,read:function(){},update:function(a){return function(c){void 0!==c&&(this.I=c);a.D.I&4||V(a,2,this)}}(a)};a.A={I:255,read:function(){},update:function(a){return function(c){void 0===c?c=a.A.I:Za(a,a.o.I,c);if(0<=a.b&&a.b<a.g.length){var d=a.g[a.b];d.Va.length&&a.A.I&8&&!(c&8)&&(c&4?d.na--:d.na++,a.u&&H(a.u,a.u.Ha)&&a.u.message("stepping "+(c&4?"down":"up")+" to track "+d.na),d.na>=d.tb&&(d.na=d.tb),0>d.na&&(d.na=0),d.Fa=20,
|
||||
a.o.update(a.o.I|128),$a(a))}this.I=c;a.D.I&4&&V(a,2,this)}}(a)};a.D={I:0,read:function(){},update:function(a){return function(c){void 0!==c&&(this.I=c&-193);V(a,3,this);a.A.update();a.L.update()}}(a)};a.P={I:0,read:function(){},update:function(a){return function(c){void 0!==c&&(3==(c&3)&&(a.v.I=14),this.I=c);a.v.update()}}(a)};a.v={I:14,read:function(){},update:function(a){return function(c){void 0===c&&(c=a.v.I);c&=-2;0<=a.b&&0<=a.g[a.b].Ea&&(c|=1);this.I=c;V(a,16,this)}}(a)};a.O={I:0,read:function(a){return function(){ab(a)}}(a),
|
||||
update:function(a){return function(c){void 0!==c&&(this.I=c);V(a,17,this)}}(a)};a.R={I:0,read:function(){},update:function(){return function(){}}(a)}}
|
||||
f.T=function(a,b,c){switch(b){case "listDisk":return this.H[b]=c,!0;case "loadDisk":return this.H[b]=c,c.onclick=function(a){return function(){if(a.H.listDisk){var b=a.H.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);var h=b,k=b.lastIndexOf("/");0<=k&&(h=b.substr(k+1));k=h.indexOf("&");0<k&&(h=h.substr(0,k));a.l("loading "+h+"...");t(c,a,a.Ub)}}}(this),!0}return!1};
|
||||
f.ba=function(a,b,c,d){this.a=a;this.J=b;if(this.s=d)wa(d,b,c,this,this.S),N(d,b,c,this,this.W);this.X()};f.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.u=L(b,"debugger"))};
|
||||
f.Ub=function(a,b,c){if(c)this.l("disk load error ("+c+")");else{c=[];this.l("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.l("data error: "+d[0]);else if(this.g[0]){for(b=0;b<d.length;b++){var e,g=d[b],h=g.sectors;if(void 0===(e=g.trackNum)||void 0===h)throw Error("track "+b+" missing data");e!=b&&u("track "+e+" out of order (expected "+b+")");c=[];var k,l,m;if(e){bb(c,g,"trackSig");cb(c,g);W(c,g,"trackType");for(var q=0;q<h.length;q++){k=
|
||||
h[q];l=k.sectorData;W(c,k,"sectorSig");W(c,k,"sectorNum");W(c,k,"sectorPages");for(m=0;m<l.length;m++)c.push(l[m]);bb(c,k,"sectorEndSig")}}else for(k=h[0],l=k.sectorData,W(c,g,"trackLoad",2),W(c,k,"sectorPages"),m=0;m<l.length;m++)c.push(l[m]);d[e].Lb=c;this.u&&H(this.u,this.u.Ha)&&this.u.message("track "+e+": "+c.length+" bytes")}this.g[0].Va=d;this.l("mount of "+a+" complete")}else this.l("no available drives")}else this.l("no tracks: "+a);else this.l("no data: "+a)}catch(C){this.l("disk data error: "+
|
||||
C.message)}}};function cb(a,b){var c=b.trackNum;if(void 0===c)throw Error("missing bcd value: trackNum");a.push(Math.floor(c/10)<<4|c%10)}function W(a,b,c,d){b=b[c];if(void 0===b)throw Error("missing binary value: "+c);2==d&&a.push(b>>8&255);a.push(b&255)}function bb(a,b,c){b=b[c];if(void 0===b)throw Error("missing signature: "+c);for(c=0;c<b.length;c++)a.push(b.charCodeAt(c))}
|
||||
function db(a,b,c){b&=63;16>b?b&=3:32>b&&(b&=17);switch(b){case 0:a=a.B.I&4?a.o:a.K;break;case 1:a=a.B;break;case 2:a=a.D.I&4?a.A:a.L;break;case 3:a=a.D;break;case 16:a=c?a.P:a.v;break;case 17:a=a.O;break;default:a=a.R}return a}f.S=function(a,b){if(void 0!==b){var c=db(this,a-this.J,!1);this.u&&S(this.u,this,a,b,this.u.Ha,!1,c.Kb);c.read()}};
|
||||
f.W=function(a,b){if(void 0!==b){var c=this.s.S(a),d=db(this,a-this.J,!0);if(this.u&&H(this.u,this.u.Ha|this.u.pb)&&(S(this.u,this,a,b,this.u.Ha,!0,d.Kb),d.Pb))for(var e=128,g=d.I^c;g&&e;)g&e&&this.u.message(" changed "+d.Kb+"."+d.Pb[e]+" to "+(c&e?"1":"0")),e>>=1;d.update(c)}};function Za(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&32||(d|=2),a.o.I&64||(d|=1));a.b!=d&&(a.b=d,a.v.update())}function $a(a){0<=a.b&&(a.g[a.b].Ea=-1,a.O.update(255),a.v.update())}
|
||||
function ab(a){var b=null;if(0<=a.b){var b=a.g[a.b],c=b.Va[b.na];void 0!==c&&(0<=b.Ea&&b.Ea<c.Lb.length?(b.Fa=100,b=c.Lb[b.Ea++],a.O.update(b),a.v.update()):(b.Fa=10,$a(a)))}}function V(a,b,c){a.s.W(b+a.J,c.I)}x(function(){for(var a=G(document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Xa(d);F(d,c)}});
|
||||
function eb(a){z.call(this,"C1PDebugger",a);this.u=this;this.L=-1;this.ua=0;this.nb=null;this.Ya=!1;this.ga=0;this.sa=[];this.wa=[];this.ya=[];this.La=0;this.xa=[];this.B=[];this.pb=1;this.za=16;this.ab=32;this.Ha=64;this.Rb=128;this.la=this.Z=0;this.Ua={port:1,kbd:16,video:32,disk:64,serial:128};this.Qa=28;this.bb=56;this.Ka="ADC AND ASL BCC BCS BEQ BIT BMI BNE BPL BRK BVC BVS CLC CLD CLI CLV CMP CPX CPY DEC DEX DEY EOR INC INX INY JMP JSR LDA LDX LDY LSR NOP ORA PHA PHP PLA PLP ROL ROR RTI RTS SBC SEC SED SEI STA STX STY TAX TAY TSX TXA TXS TYA SIM .DB".split(" ");
|
||||
this.V=["HLT","MSG"];fb(this,!0);this.fa=[[10],[34,1,this.D],[this.bb,1],[],[],[34,1,this.b],[2,1,this.b],[],[36],[34,1,this.v],[2,0,this.P],[],[],[34,2,this.N],[2,2,this.N],[],[9,1,this.ea],[34,1,this.J],[],[],[],[34,1,this.g],[2,1,this.g],[],[13],[34,2,this.A],[],[],[],[34,2,this.o],[2,2,this.o],[],[this.Qa,2,this.Pa],[1,1,this.D],[],[],[6,1,this.b],[1,1,this.b],[39,1,this.b],[],[38],[1,1,this.v],[39,0,this.P],[],[6,2,this.N],[1,2,this.N],[39,2,this.N],[],[7,1,this.ea],[1,1,this.J],[],[],[],[1,
|
||||
e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(e.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",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.appendChild(e);var g=new Image,h=e.getContext("2d"),e=new Va(d,e,h,g);g.onload=function(a){return function(){a.X()}}(e,d.charSet);g.src=d.charSet;F(e,c)}});
|
||||
function Ya(a){A.call(this,"C1PSerialPort",a);this.C.M=!1;this.O=a.demo;this.reset()}C(Ya);f=Ya.prototype;f.reset=function(){if(2!=this.g){this.v=this.B=0;var a=1;if(this.rb){var b=this.rb.match(/\d+/);null!==b&&(a=parseInt(b[0],10))}this.o='10 PRINT "HELLO OSI #'+a+'"\n';this.g=this.A=0}};f.start=function(){this.b&&this.O&&(U(this.b," C\n\n",3E3),setTimeout(function(a){return function(){a.g=1;U(a.b,"LOAD\n")}}(this),12E3));this.O=!1};
|
||||
f.T=function(a,b,c){var d=this;switch(b){case "listSerial":return this.H[b]=c,!0;case "loadSerial":return this.H[b]=c,c.onclick=function(){d.H.listSerial&&t(d.H.listSerial.value,function(a,b,c){Za(d,a,b,c)})},!0;case "mountSerial":return!v("Mobi")&&window&&"FileReader"in window?(this.H[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){var b=a.currentTarget[1].files[0],c=new FileReader;c.onload=function(){Za(d,
|
||||
b.name,c.result.toString(),0)};c.readAsText(b);return!1}):c.parentNode.removeChild(c),!0}return!1};f.ba=function(a,b,c,d){this.a=a;this.D=b;this.L=c-b+1;this.K=this.D+this.L;if(this.s=d)ya(d,b,c,this,this.S),N(d,b,c,this,this.W);this.X()};f.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.J=b,this.b=L(b,"keyboard"),this.u=L(b,"debugger"))};
|
||||
function Za(a,b,c,d){c?(a.o=c,a.A=0,a.g=0,a.J&&a.b&&a.s.C.ma?(a.l("auto-loading "+b),a.s.ca(),"."!=a.o.charAt(0)?(a.g=1,U(a.b,"NEW\nLOAD\n")):(a.g=2,a.J.reset(!0),U(a.b,"ML"))):a.l(b+" ready to load")):a.l(b+" load error ("+d+")")}f.S=function(a,b){void 0!==b&&(a&1?$a(this):this.o&&!this.A&&$a(this))};f.W=function(a,b){void 0!==b&&this.u&&S(this.u,this,a,b,this.u.Qb,!0)};
|
||||
function $a(a){if(void 0!==a.o){a.B=0;a.v=0;if(a.A<a.o.length){var b=a.o.charCodeAt(a.A++);10==b&&(b=13);a.B=b;a.v=1}else 1==a.g&&a.b&&U(a.b," \nRUN\n"),a.g=0;for(b=a.D+0;b<a.K;b+=2)a.a[b]=a.v?1:0;for(b=a.D+1;b<a.K;b+=2)a.a[b]=a.v?a.B:0}}x(function(){for(var a=G(document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Ya(d);F(d,c)}});function ab(a){A.call(this,"C1PDiskController",a);this.C.M=!1;this.reset(!0)}C(ab);f=ab.prototype;
|
||||
f.reset=function(a){bb(this);this.b=-1;a&&(this.g=[],this.g[0]={Qe:0,sb:40,Rb:!0,Fa:20,na:0,Ea:-1,Va:[]})};
|
||||
function bb(a){a.K={I:64,read:function(){},update:function(a){return function(c){void 0!==c&&(this.I=c);a.B.I&4||V(a,0,this)}}(a)};a.o={I:255,read:function(){this.update()},update:function(a){return function(c){void 0===c?c=a.o.I:cb(a,c,a.A.I);c=(c|190)&-2;if(0<=a.b&&a.g[a.b].Va.length){var d=a.g[a.b];d.Rb&&(c&=-33);d.na||(c&=-3);10>=--d.Fa&&(0<d.Fa?(c&=-129,db(a)):(d.Fa=100,0<=a.b&&(a.g[a.b].Ea=0,eb(a))))}this.I=c;a.B.I&4&&V(a,0,this)}}(a)};a.B={I:0,read:function(){},update:function(a){return function(c){void 0!==
|
||||
c&&(this.I=c&-193);V(a,1,this);a.o.update();a.K.update()}}(a)};a.L={I:255,read:function(){},update:function(a){return function(c){void 0!==c&&(this.I=c);a.D.I&4||V(a,2,this)}}(a)};a.A={I:255,read:function(){},update:function(a){return function(c){void 0===c?c=a.A.I:cb(a,a.o.I,c);if(0<=a.b&&a.b<a.g.length){var d=a.g[a.b];d.Va.length&&a.A.I&8&&!(c&8)&&(c&4?d.na--:d.na++,a.u&&H(a.u,a.u.Ha)&&a.u.message("stepping "+(c&4?"down":"up")+" to track "+d.na),d.na>=d.sb&&(d.na=d.sb),0>d.na&&(d.na=0),d.Fa=20,
|
||||
a.o.update(a.o.I|128),db(a))}this.I=c;a.D.I&4&&V(a,2,this)}}(a)};a.D={I:0,read:function(){},update:function(a){return function(c){void 0!==c&&(this.I=c&-193);V(a,3,this);a.A.update();a.L.update()}}(a)};a.P={I:0,read:function(){},update:function(a){return function(c){void 0!==c&&(3==(c&3)&&(a.v.I=14),this.I=c);a.v.update()}}(a)};a.v={I:14,read:function(){},update:function(a){return function(c){void 0===c&&(c=a.v.I);c&=-2;0<=a.b&&0<=a.g[a.b].Ea&&(c|=1);this.I=c;V(a,16,this)}}(a)};a.O={I:0,read:function(a){return function(){eb(a)}}(a),
|
||||
update:function(a){return function(c){void 0!==c&&(this.I=c);V(a,17,this)}}(a)};a.R={I:0,read:function(){},update:function(){return function(){}}(a)}}f.T=function(a,b,c){switch(b){case "listDisk":return this.H[b]=c,!0;case "loadDisk":return this.H[b]=c,c.onclick=function(a){return function(){if(a.H.listDisk){var b=a.H.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.l("loading "+aa(b)+"...");t(c,function(b,c,e){fb(a,b,c,e)})}}}(this),!0}return!1};
|
||||
f.ba=function(a,b,c,d){this.a=a;this.J=b;if(this.s=d)ya(d,b,c,this,this.S),N(d,b,c,this,this.W);this.X()};f.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.u=L(b,"debugger"))};
|
||||
function fb(a,b,c,d){if(d)a.l("disk load error ("+d+")");else{d=[];a.l("mounting "+b+"...");try{if(d=eval("("+c+")"),d.length)if(d[0].length){var e=d[0];if(void 0===e[0].trackNum)a.l("data error: "+e[0]);else if(a.g[0]){for(c=0;c<e.length;c++){var g,h=e[c],k=h.sectors;if(void 0===(g=h.trackNum)||void 0===k)throw Error("track "+c+" missing data");g!=c&&u("track "+g+" out of order (expected "+c+")");d=[];var l,m,n;if(g){gb(d,h,"trackSig");hb(d,h);W(d,h,"trackType");for(var y=0;y<k.length;y++){l=k[y];
|
||||
m=l.sectorData;W(d,l,"sectorSig");W(d,l,"sectorNum");W(d,l,"sectorPages");for(n=0;n<m.length;n++)d.push(m[n]);gb(d,l,"sectorEndSig")}}else for(l=k[0],m=l.sectorData,W(d,h,"trackLoad",2),W(d,l,"sectorPages"),n=0;n<m.length;n++)d.push(m[n]);e[g].Kb=d;a.u&&H(a.u,a.u.Ha)&&a.u.message("track "+g+": "+d.length+" bytes")}a.g[0].Va=e;a.l("mount of "+b+" complete")}else a.l("no available drives")}else a.l("no tracks: "+b);else a.l("no data: "+b)}catch(zb){a.l("disk data error: "+zb.message)}}}
|
||||
function hb(a,b){var c=b.trackNum;if(void 0===c)throw Error("missing bcd value: trackNum");a.push(Math.floor(c/10)<<4|c%10)}function W(a,b,c,d){b=b[c];if(void 0===b)throw Error("missing binary value: "+c);2==d&&a.push(b>>8&255);a.push(b&255)}function gb(a,b,c){b=b[c];if(void 0===b)throw Error("missing signature: "+c);for(c=0;c<b.length;c++)a.push(b.charCodeAt(c))}
|
||||
function ib(a,b,c){b&=63;16>b?b&=3:32>b&&(b&=17);switch(b){case 0:a=a.B.I&4?a.o:a.K;break;case 1:a=a.B;break;case 2:a=a.D.I&4?a.A:a.L;break;case 3:a=a.D;break;case 16:a=c?a.P:a.v;break;case 17:a=a.O;break;default:a=a.R}return a}f.S=function(a,b){if(void 0!==b){var c=ib(this,a-this.J,!1);this.u&&S(this.u,this,a,b,this.u.Ha,!1,c.Jb);c.read()}};
|
||||
f.W=function(a,b){if(void 0!==b){var c=this.s.S(a),d=ib(this,a-this.J,!0);if(this.u&&H(this.u,this.u.Ha|this.u.pb)&&(S(this.u,this,a,b,this.u.Ha,!0,d.Jb),d.Ob))for(var e=128,g=d.I^c;g&&e;)g&e&&this.u.message(" changed "+d.Jb+"."+d.Ob[e]+" to "+(c&e?"1":"0")),e>>=1;d.update(c)}};function cb(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&32||(d|=2),a.o.I&64||(d|=1));a.b!=d&&(a.b=d,a.v.update())}function db(a){0<=a.b&&(a.g[a.b].Ea=-1,a.O.update(255),a.v.update())}
|
||||
function eb(a){var b=null;if(0<=a.b){var b=a.g[a.b],c=b.Va[b.na];void 0!==c&&(0<=b.Ea&&b.Ea<c.Kb.length?(b.Fa=100,b=c.Kb[b.Ea++],a.O.update(b),a.v.update()):(b.Fa=10,db(a)))}}function V(a,b,c){a.s.W(b+a.J,c.I)}x(function(){for(var a=G(document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new ab(d);F(d,c)}});
|
||||
function jb(a){A.call(this,"C1PDebugger",a);this.u=this;this.L=-1;this.ua=0;this.nb=null;this.Ya=!1;this.ga=0;this.sa=[];this.wa=[];this.ya=[];this.La=0;this.xa=[];this.B=[];this.pb=1;this.za=16;this.ab=32;this.Ha=64;this.Qb=128;this.la=this.Z=0;this.Ua={port:1,kbd:16,video:32,disk:64,serial:128};this.Qa=28;this.bb=56;this.Ka="ADC AND ASL BCC BCS BEQ BIT BMI BNE BPL BRK BVC BVS CLC CLD CLI CLV CMP CPX CPY DEC DEX DEY EOR INC INX INY JMP JSR LDA LDX LDY LSR NOP ORA PHA PHP PLA PLP ROL ROR RTI RTS SBC SEC SED SEI STA STX STY TAX TAY TSX TXA TXS TYA SIM .DB".split(" ");
|
||||
this.V=["HLT","MSG"];kb(this,!0);this.fa=[[10],[34,1,this.D],[this.bb,1],[],[],[34,1,this.b],[2,1,this.b],[],[36],[34,1,this.v],[2,0,this.P],[],[],[34,2,this.N],[2,2,this.N],[],[9,1,this.ea],[34,1,this.J],[],[],[],[34,1,this.g],[2,1,this.g],[],[13],[34,2,this.A],[],[],[],[34,2,this.o],[2,2,this.o],[],[this.Qa,2,this.Pa],[1,1,this.D],[],[],[6,1,this.b],[1,1,this.b],[39,1,this.b],[],[38],[1,1,this.v],[39,0,this.P],[],[6,2,this.N],[1,2,this.N],[39,2,this.N],[],[7,1,this.ea],[1,1,this.J],[],[],[],[1,
|
||||
1,this.g],[39,1,this.g],[],[44],[1,2,this.A],[],[],[],[1,2,this.o],[39,2,this.o],[],[41],[23,1,this.D],[],[],[],[23,1,this.b],[32,1,this.b],[],[35],[23,1,this.v],[32,0,this.P],[],[27,2,this.Pa],[23,2,this.N],[32,2,this.N],[],[11,1,this.ea],[23,1,this.J],[],[],[],[23,1,this.g],[32,1,this.g],[],[15],[23,2,this.A],[],[],[],[23,2,this.o],[32,2,this.o],[],[42],[0,1,this.D],[],[],[],[0,1,this.b],[40,1,this.b],[],[37],[0,1,this.v],[40,0,this.P],[],[27,2,this.ob],[0,2,this.N],[40,2,this.N],[],[12,1,this.ea],
|
||||
[0,1,this.J],[],[],[],[0,1,this.g],[40,1,this.g],[],[46],[0,2,this.A],[],[],[],[0,2,this.o],[40,2,this.o],[],[],[47,1,this.D],[],[],[49,1,this.b],[47,1,this.b],[48,1,this.b],[],[22],[],[53],[],[49,2,this.N],[47,2,this.N],[48,2,this.N],[],[3,1,this.ea],[47,1,this.J],[],[],[49,1,this.g],[47,1,this.g],[48,1,this.U],[],[55],[47,2,this.A],[54],[],[],[47,2,this.o],[],[],[31,1,this.v],[29,1,this.D],[30,1,this.v],[],[31,1,this.b],[29,1,this.b],[30,1,this.b],[],[51],[29,1,this.v],[50],[],[31,2,this.N],[29,
|
||||
2,this.N],[30,2,this.N],[],[4,1,this.ea],[29,1,this.J],[],[],[31,1,this.g],[29,1,this.g],[30,1,this.U],[],[16],[29,2,this.A],[52],[],[31,2,this.o],[29,2,this.o],[30,2,this.A],[],[19,1,this.v],[17,1,this.D],[],[],[19,1,this.b],[17,1,this.b],[20,1,this.b],[],[26],[17,1,this.v],[21],[],[19,2,this.N],[17,2,this.N],[20,2,this.N],[],[8,1,this.ea],[17,1,this.J],[],[],[],[17,1,this.g],[20,1,this.g],[],[14],[17,2,this.A],[],[],[],[17,2,this.o],[20,2,this.o],[],[18,1,this.v],[43,1,this.D],[],[],[18,1,this.b],
|
||||
[43,1,this.b],[24,1,this.b],[],[25],[43,1,this.v],[33],[],[18,2,this.N],[43,2,this.N],[24,2,this.N],[],[5,1,this.ea],[43,1,this.J],[],[],[],[43,1,this.g],[24,1,this.g],[],[45],[43,2,this.A],[],[],[],[43,2,this.o],[24,2,this.o],[]]}B(eb);f=eb.prototype;
|
||||
f.T=function(a,b,c){var d=this;switch(b){case "debugInput":return this.R=this.H[b]=c,this.R.focus(),c.onkeypress=function(a,c){return function(d){13==d.keyCode&&(b=c.value,c.value="",gb(a,b))}}(this,c),!0;case "debugEnter":return this.H[b]=c,ea(c,function(){return d.R?(b=d.R.value,gb(d,b),!0):!1}),!0;case "step":return this.H[b]=c,ea(c,function(a){var b=!1;J(d,!0)||(I(d,!0),b=d.step(a?1:0),I(d,!1));return b}),!0}return!1};
|
||||
[43,1,this.b],[24,1,this.b],[],[25],[43,1,this.v],[33],[],[18,2,this.N],[43,2,this.N],[24,2,this.N],[],[5,1,this.ea],[43,1,this.J],[],[],[],[43,1,this.g],[24,1,this.g],[],[45],[43,2,this.A],[],[],[],[43,2,this.o],[24,2,this.o],[]]}C(jb);f=jb.prototype;
|
||||
f.T=function(a,b,c){var d=this;switch(b){case "debugInput":return this.R=this.H[b]=c,this.R.focus(),c.onkeypress=function(a,c){return function(d){13==d.keyCode&&(b=c.value,c.value="",lb(a,b))}}(this,c),!0;case "debugEnter":return this.H[b]=c,ga(c,function(){return d.R?(b=d.R.value,lb(d,b),!0):!1}),!0;case "step":return this.H[b]=c,ga(c,function(a){var b=!1;J(d,!0)||(I(d,!0),b=d.step(a?1:0),I(d,!1));return b}),!0}return!1};
|
||||
f.ba=function(a,b,c){this.a=a;this.O=b;this.qa=c-b+1;this.Ga=this.O+this.qa;this.X()};f.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.s=L(b,"cpu"))};f.ca=function(){this.R.focus()};
|
||||
function fb(a,b){a.P=0;a.v=1;a.o=2;a.A=3;a.Pa=4;a.ob=5;a.g=6;a.U=7;a.D=8;a.J=9;a.N=10;a.b=11;a.ea=a.Pa;var c="",d,e;if(b)for(a.ka="A #$nn $nnnn,X $nnnn,Y $nnnn ($nnnn) $nn,X $nn,Y ($nn,X) ($nn),Y $nnnn $nn".split(" "),d=0;d<a.ka.length;d++)e=a.ka[d],c+="("+e.replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/nnnn/g,"[0-9A-F][0-9A-F][0-9A-F][0-9A-F]?").replace(/nn/g,"[0-9A-F][0-9A-F]?").replace(/\$/g,"\\$")+"|)";else for(a.ka="A nn [nnnn+X] [nnnn+Y] nnnn [nnnn] [nn+X] [nn+Y] [[nn+X]] [[nn]+Y] [nnnn] [nn]".split(" "),
|
||||
d=0;d<a.ka.length;d++)e=a.ka[d],c+="("+e.replace(/\[/g,"\\[").replace(/]/g,"\\]").replace(/nnnn/g,"[0-9A-F][0-9A-F][0-9A-F][0-9A-F]?").replace(/nn/g,"[0-9A-F][0-9A-F]?").replace(/\+/g,"\\+")+"|)";a.Qe=new RegExp(c);a.Qb=[27,a.Qa,9,7,11,12,3,4,8,5]}f.aa=function(){this.s.aa()};function S(a,b,c,d,e,g,h){(a.la&e)==e&&(e=a.s.S(c),a.message(b.id+"."+(g?"setByte":"getByte")+"("+r(c)+")"+(void 0!==d?" @"+r(d):"")+": "+(h?h+"=":"")+p(e)))}f.message=function(a){this.l(a);Fa(this.s)};f.Tb=function(){this.l("Type ? for list of debugger commands\n")};
|
||||
f.va=function(){if(!hb(this))return!1;this.s.va();return!0};f.step=function(a){if(!hb(this))return!1;var b;try{b=this.s.step(a)}catch(c){b=void 0,qa(this.s,c.stack||c.message)}void 0!==b&&this.L++;this.s.update(!0);this.update(!0);return b};f.update=function(a){this.ua=this.s.f;a||this.Da?ib(this):jb(this)};function hb(a){a.s&&K(a.s)&&!J(a.s)?(a=a.s,a.C.Ca?(a.l(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}
|
||||
f.reset=function(){var a;this.xa.length||(this.xa=Array(1E3));for(a=0;a<this.xa.length;a++)this.xa[a]=-1;this.B.length||(this.B=Array(256));for(a=0;a<this.B.length;a++)this.B[a]=[a,0];this.L&&this.update();this.L=0};f.start=function(){this.Da||this.l("running")};f.stop=function(a,b){if(!this.Da&&(this.l("stopped"),b)){var c=ca();this.l(c-a+"ms ("+b+" cycles)")}this.update();this.ca();this.Da||(this.L=0);kb(this,this.s.f)};function lb(a,b){return a+(b<<24>>24)}
|
||||
f.S=function(a){var b;a>=this.O&&a<this.Ga&&(ya(this.s,a),b=this.a[this.O+a],b&=255);return b};f.W=function(a,b){a<this.O||a>=this.Ga?this.l("invalid address: "+r(a)):(this.a[this.O+a]=b&255,za(this.s,a),this.s.update())};function mb(a,b){X(a.sa,b,void 0)||a.sa.push(b);return!0}function X(a,b,c){for(var d=!1,e=0;e<a.length;e++)if(a[e]==b){c&&a.splice(e,1);d=!0;break}return d}function nb(a,b){void 0!==b&&(kb(a,a.K),mb(a,b)&&(a.K=b))}
|
||||
function kb(a,b){void 0!==a.K&&b==a.K&&X(a.sa,a.K,!0)&&(a.K=void 0);a.Da=!1}function Ea(a,b,c,d){for(var e=!1,g=0;g<c.length;g++)if(c[g]==b){b!=a.K&&a.l("breakpoint hit: "+r(b)+" ("+d+")");e=!0;break}return e}
|
||||
function ob(a,b,c){var d=n(b,4),e=a.S(b++),g=a.fa[e],h=void 0===e?0:e,k=[],l=void 0===g[1]?0:g[1];do{d+=" "+n(h,2);if(!l--)break;h=a.S(b++);if(void 0===h)break;k.push(h)}while(1);void 0===g[0]&&(g=[57,1,a.v],k.push(e));var d=(d+" ").substr(0,15),d=d+a.Ka[g[0]],m=null;if(void 0!==g[2]){l=g[2];m=a.ka[l];if(1==g[1]&&l==a.ea)m=m.replace(/nnnn/,n(lb(b,h=k.pop()),4));else for(;k.length;)m=m.replace(/nn/,n(h=k.pop(),2));l==a.v&&1==g[1]&&32<=h&&128>h&&(m+=" ;'"+String.fromCharCode(h)+"'")}if(e==a.s.bb&&
|
||||
(h<a.V.length&&(m=a.V[h]),h==a.s.Nb)){l=0;for(m='"';h=a.S(b++);)16>l?m+=String.fromCharCode(h):16==l&&(m+="\u2026"),l++;m+='"'}m&&(d+=" "+m);c&&(d=(d+" ").substr(0,30),d+=";"+c.toString());a.$=b;return d}
|
||||
function Y(a,b){var c=a.ua;if(void 0!==b){var d=16;"$"==b.charAt(0)?b=b.substr(1):"0x"==b.substr(0,2)?b=b.substr(2):"."==b.charAt(b.length-1)&&(d=10,b=b.substr(0,b.length-1));c=parseInt(b,d);isNaN(c)&&(a.l("invalid base-"+d+" address: "+b),c=void 0)}void 0!==c&&(c<a.O||c>=a.Ga)&&(a.l("address out of range: "+n(c)),c=void 0);return c}
|
||||
function pb(a,b){if("?"==b)a.l("\nfrequency commands:"),a.l("clear\tclear all frequency counts");else{var c=0,d;if(a.B)if("clear"==b){for(d=0;d<a.B.length;d++)a.B[d]=[d,0];a.l("frequency data cleared");c++}else if(void 0!==b)a.l("unknown frequency command: "+b),c++;else{var e=a.B.slice();e.sort(function(a,b){return b[1]-a[1]});for(d=0;d<e.length;d++){var g=e[d][0],h=e[d][1];h&&(a.l(a.Ka[a.fa[g][0]]+" ("+p(g)+"): "+h+" times"),c++)}}c||a.l("no frequency data available")}}
|
||||
function ib(a,b,c,d){var e=Y(a,b);if(void 0!==e){void 0===d&&(d=1);b=a.Ga;if(void 0!==c){b=Y(a,c);if(void 0===b||b<e)return;if(256<b-e){a.l("range too large");return}b++;d=-1}for(e!=a.ua&&a.l();d--&&e<b;)c=ob(a,e,J(a,!1)||a.Da?a.L:0),a.l(c),a.ua=e=a.$}}
|
||||
function jb(a,b){if(b&&"?"==b[1])a.l("\nregister commands:"),a.l("r to display all"),a.l("r [target=value] to modify"),a.l("supported targets:"),a.l("A,X,Y,S,PC and flags C,Z,D,V,N");else{var c=!0;if(void 0!==b&&1<b.length){var c=!1,d=b[1],e=null,g=d.indexOf("=");if(0<g)e=d.substr(g+1),d=d.substr(0,g);else if(2<b.length)e=b[2];else{a.l("missing value for "+b[1]);return}g=parseInt(e,16);if(isNaN(g)){a.l("invalid value: "+e);return}switch(d.toUpperCase()){case "A":a.s.h=g&255;break;case "X":a.s.w=g&
|
||||
255;break;case "Y":a.s.F=g&255;break;case "C":a.s.c=g?256:0;break;case "Z":a.s.j=g?0:1;break;case "D":g?Ha(a.s):Ia(a.s);break;case "V":g?(d=a.s,d.v=0,d.A=128):(d=a.s,d.v=0,d.A=0);break;case "N":a.s.i=g?128:0;break;case "S":if(256!=(g&-256)){a.l("invalid stack pointer: "+e);return}a.s.G=g;break;case "PC":c=!0;a.s.f=g&65535;a.ua=a.s.f;break;default:a.l("unknown register: "+d);return}a.s.update()}a.l("A="+n(a.s.h,2)+" X="+n(a.s.w,2)+" Y="+n(a.s.F,2)+" P="+n(Ca(a.s),2)+" S="+n(a.s.G,4)+" PC="+n(a.s.f,
|
||||
4));c&&ib(a,n(a.ua=a.s.f,4))}}function qb(a,b){var c=void 0===b?1:parseInt(b,10),d=1==c?0:1;da(c,function(a){return function(){return I(a,!0)&&a.step(d)}}(a),function(a){return function(){I(a,!1)}}(a))}
|
||||
function gb(a,b){b.length||(a.Ya?(a.l("ended assemble @"+n(a.ga,4)),a.ua=a.ga,a.Ya=!1):a.nb&&(b=a.nb));if(K(a)&&!J(a,!0)&&0<b.length){a.Ya?b="a "+n(a.ga,4)+" "+b:1<b.length&&1!=b.indexOf(" ")&&(b=b.charAt(0).toLowerCase()+" "+b.substr(1));var c=b.split(" ");a.nb=c[0];switch(c[0].toLowerCase()){case "a":var d=Y(a,c[1]);if(void 0!==d)if(a.ga=d,void 0===c[2])a.l("begin assemble @"+r(a.ga)),a.Ya=!0,a.s.update();else{var e,g=c[2],h=c[3],c=a.ga,d=[];if(void 0!==g){var k,g=g.toUpperCase();"?"==g.charAt(g.length-
|
||||
1)&&(h="?",g=g.substr(0,g.length-1));for(k=0;k<a.Ka.length&&g!=a.Ka[k];k++);k==a.Ka.length&&(a.l("unknown operation: "+g),k=-1);var l="",m;if(0<=k&&void 0!==h)if(l=h.toUpperCase(),"?"==l){for(h=m=0;h<a.fa.length;h++)a.fa[h][0]===k&&(m||a.l("supported opcodes:"),a.l(" "+n(h,2)+": "+g+(void 0!==a.fa[h][2]?" "+a.ka[a.fa[h][2]]:"")),m++);k=-1}else if(m=l.match(a.Qe),null!==m&&m[0]==l){for(h=1;h<m.length;h++)if(m[h]==l)if(void 0===e)e=h-1;else{a.l("too many operand matches (both "+a.ka[e]+" and "+
|
||||
a.ka[h-1]+")");k=-1;break}e==a.Pa&&0>a.Qb.indexOf(k)&&(e=a.N);e==a.ob&&27!=k&&(e=a.N)}else a.l("unknown operand: "+l),k=-1;if(0<=k){m=-1;for(h=0;h<a.fa.length;h++)if(a.fa[h][0]===k&&a.fa[h][2]===e)if(0>m)m=h;else{a.l("too many instruction matches (both "+p(m)+" and "+p(h)+")");m=-2;break}if(0<=m){if(d.push(m),void 0!==e)if(g=a.fa[m][1],l=l.match(/[0-9A-F]+/),null!==l)for(l=parseInt(l[0],16),1==g&&e==a.ea&&(l-=c+2,-128>l||127<l)&&(a.l("branch out of range ("+l+")"),d=[],g=0),h=0;h<g;h++)d.push(l&255),
|
||||
l>>>=8;else g&&a.l("instruction missing "+g+" bytes")}else a.l("unknown instruction: "+g+" "+l+"")}}e=d;if(e.length){for(c=0;c<e.length;c++)a.W(a.ga+c,e[c]);a.l(ob(a,a.ga));a.ga+=e.length}}break;case "b":e=c[1];c=c[2];if(void 0===e||"?"==e)a.l("\nbreakpoint commands:"),a.l("bp [a]\tset exec breakpoint at [a]"),a.l("br [a]\tset read breakpoint at [a]"),a.l("bw [a]\tset write breakpoint at [a]"),a.l("bc [a]\tclear breakpoint at [a]"),a.l("bl\tlist all breakpoints");else if(void 0===c&&1<e.length&&(c=
|
||||
e.substr(1),e=e.substr(0,1)),"l"==e){e=0;d=a.sa;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+r(d[c])+" (exec)"),e++;d=a.wa;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+r(d[c])+" (read)"),e++;d=a.ya;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+r(d[c])+" (write)"),e++;e||a.l("no breakpoints")}else void 0===c?a.l("missing breakpoint address"):"c"==e&&"*"==c?(a.sa=[],a.wa=[],a.ya=[],a.l("all breakpoints cleared")):(c=Y(a,c),void 0!==c&&("p"==e?mb(a,c)?a.l("breakpoint enabled: "+r(c)+" (exec)"):
|
||||
function kb(a,b){a.P=0;a.v=1;a.o=2;a.A=3;a.Pa=4;a.ob=5;a.g=6;a.U=7;a.D=8;a.J=9;a.N=10;a.b=11;a.ea=a.Pa;var c="",d,e;if(b)for(a.ka="A #$nn $nnnn,X $nnnn,Y $nnnn ($nnnn) $nn,X $nn,Y ($nn,X) ($nn),Y $nnnn $nn".split(" "),d=0;d<a.ka.length;d++)e=a.ka[d],c+="("+e.replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/nnnn/g,"[0-9A-F][0-9A-F][0-9A-F][0-9A-F]?").replace(/nn/g,"[0-9A-F][0-9A-F]?").replace(/\$/g,"\\$")+"|)";else for(a.ka="A nn [nnnn+X] [nnnn+Y] nnnn [nnnn] [nn+X] [nn+Y] [[nn+X]] [[nn]+Y] [nnnn] [nn]".split(" "),
|
||||
d=0;d<a.ka.length;d++)e=a.ka[d],c+="("+e.replace(/\[/g,"\\[").replace(/]/g,"\\]").replace(/nnnn/g,"[0-9A-F][0-9A-F][0-9A-F][0-9A-F]?").replace(/nn/g,"[0-9A-F][0-9A-F]?").replace(/\+/g,"\\+")+"|)";a.Oe=new RegExp(c);a.Pb=[27,a.Qa,9,7,11,12,3,4,8,5]}f.aa=function(){this.s.aa()};function S(a,b,c,d,e,g,h){(a.la&e)==e&&(e=a.s.S(c),a.message(b.id+"."+(g?"setByte":"getByte")+"("+r(c)+")"+(void 0!==d?" @"+r(d):"")+": "+(h?h+"=":"")+q(e)))}f.message=function(a){this.l(a);Ha(this.s)};f.Sb=function(){this.l("Type ? for list of debugger commands\n")};
|
||||
f.va=function(){if(!mb(this))return!1;this.s.va();return!0};f.step=function(a){if(!mb(this))return!1;var b;try{b=this.s.step(a)}catch(c){b=void 0,sa(this.s,c.stack||c.message)}void 0!==b&&this.L++;this.s.update(!0);this.update(!0);return b};f.update=function(a){this.ua=this.s.f;a||this.Da?nb(this):ob(this)};function mb(a){a.s&&K(a.s)&&!J(a.s)?(a=a.s,a.C.Ca?(a.l(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}
|
||||
f.reset=function(){var a;this.xa.length||(this.xa=Array(1E3));for(a=0;a<this.xa.length;a++)this.xa[a]=-1;this.B.length||(this.B=Array(256));for(a=0;a<this.B.length;a++)this.B[a]=[a,0];this.L&&this.update();this.L=0};f.start=function(){this.Da||this.l("running")};f.stop=function(a,b){if(!this.Da&&(this.l("stopped"),b)){var c=ea();this.l(c-a+"ms ("+b+" cycles)")}this.update();this.ca();this.Da||(this.L=0);pb(this,this.s.f)};function qb(a,b){return a+(b<<24>>24)}
|
||||
f.S=function(a){var b;a>=this.O&&a<this.Ga&&(Aa(this.s,a),b=this.a[this.O+a],b&=255);return b};f.W=function(a,b){a<this.O||a>=this.Ga?this.l("invalid address: "+r(a)):(this.a[this.O+a]=b&255,Ba(this.s,a),this.s.update())};function rb(a,b){X(a.sa,b,void 0)||a.sa.push(b);return!0}function X(a,b,c){for(var d=!1,e=0;e<a.length;e++)if(a[e]==b){c&&a.splice(e,1);d=!0;break}return d}function sb(a,b){void 0!==b&&(pb(a,a.K),rb(a,b)&&(a.K=b))}
|
||||
function pb(a,b){void 0!==a.K&&b==a.K&&X(a.sa,a.K,!0)&&(a.K=void 0);a.Da=!1}function Ga(a,b,c,d){for(var e=!1,g=0;g<c.length;g++)if(c[g]==b){b!=a.K&&a.l("breakpoint hit: "+r(b)+" ("+d+")");e=!0;break}return e}
|
||||
function tb(a,b,c){var d=p(b,4),e=a.S(b++),g=a.fa[e],h=void 0===e?0:e,k=[],l=void 0===g[1]?0:g[1];do{d+=" "+p(h,2);if(!l--)break;h=a.S(b++);if(void 0===h)break;k.push(h)}while(1);void 0===g[0]&&(g=[57,1,a.v],k.push(e));var d=(d+" ").substr(0,15),d=d+a.Ka[g[0]],m=null;if(void 0!==g[2]){l=g[2];m=a.ka[l];if(1==g[1]&&l==a.ea)m=m.replace(/nnnn/,p(qb(b,h=k.pop()),4));else for(;k.length;)m=m.replace(/nn/,p(h=k.pop(),2));l==a.v&&1==g[1]&&32<=h&&128>h&&(m+=" ;'"+String.fromCharCode(h)+"'")}if(e==a.s.bb&&
|
||||
(h<a.V.length&&(m=a.V[h]),h==a.s.Mb)){l=0;for(m='"';h=a.S(b++);)16>l?m+=String.fromCharCode(h):16==l&&(m+="\u2026"),l++;m+='"'}m&&(d+=" "+m);c&&(d=(d+" ").substr(0,30),d+=";"+c.toString());a.$=b;return d}
|
||||
function Y(a,b){var c=a.ua;if(void 0!==b){var d=16;"$"==b.charAt(0)?b=b.substr(1):"0x"==b.substr(0,2)?b=b.substr(2):"."==b.charAt(b.length-1)&&(d=10,b=b.substr(0,b.length-1));c=parseInt(b,d);isNaN(c)&&(a.l("invalid base-"+d+" address: "+b),c=void 0)}void 0!==c&&(c<a.O||c>=a.Ga)&&(a.l("address out of range: "+p(c)),c=void 0);return c}
|
||||
function ub(a,b){if("?"==b)a.l("\nfrequency commands:"),a.l("clear\tclear all frequency counts");else{var c=0,d;if(a.B)if("clear"==b){for(d=0;d<a.B.length;d++)a.B[d]=[d,0];a.l("frequency data cleared");c++}else if(void 0!==b)a.l("unknown frequency command: "+b),c++;else{var e=a.B.slice();e.sort(function(a,b){return b[1]-a[1]});for(d=0;d<e.length;d++){var g=e[d][0],h=e[d][1];h&&(a.l(a.Ka[a.fa[g][0]]+" ("+q(g)+"): "+h+" times"),c++)}}c||a.l("no frequency data available")}}
|
||||
function nb(a,b,c,d){var e=Y(a,b);if(void 0!==e){void 0===d&&(d=1);b=a.Ga;if(void 0!==c){b=Y(a,c);if(void 0===b||b<e)return;if(256<b-e){a.l("range too large");return}b++;d=-1}for(e!=a.ua&&a.l();d--&&e<b;)c=tb(a,e,J(a,!1)||a.Da?a.L:0),a.l(c),a.ua=e=a.$}}
|
||||
function ob(a,b){if(b&&"?"==b[1])a.l("\nregister commands:"),a.l("r to display all"),a.l("r [target=value] to modify"),a.l("supported targets:"),a.l("A,X,Y,S,PC and flags C,Z,D,V,N");else{var c=!0;if(void 0!==b&&1<b.length){var c=!1,d=b[1],e=null,g=d.indexOf("=");if(0<g)e=d.substr(g+1),d=d.substr(0,g);else if(2<b.length)e=b[2];else{a.l("missing value for "+b[1]);return}g=parseInt(e,16);if(isNaN(g)){a.l("invalid value: "+e);return}switch(d.toUpperCase()){case "A":a.s.h=g&255;break;case "X":a.s.w=g&
|
||||
255;break;case "Y":a.s.F=g&255;break;case "C":a.s.c=g?256:0;break;case "Z":a.s.j=g?0:1;break;case "D":g?Ja(a.s):Ka(a.s);break;case "V":g?(d=a.s,d.v=0,d.A=128):(d=a.s,d.v=0,d.A=0);break;case "N":a.s.i=g?128:0;break;case "S":if(256!=(g&-256)){a.l("invalid stack pointer: "+e);return}a.s.G=g;break;case "PC":c=!0;a.s.f=g&65535;a.ua=a.s.f;break;default:a.l("unknown register: "+d);return}a.s.update()}a.l("A="+p(a.s.h,2)+" X="+p(a.s.w,2)+" Y="+p(a.s.F,2)+" P="+p(Ea(a.s),2)+" S="+p(a.s.G,4)+" PC="+p(a.s.f,
|
||||
4));c&&nb(a,p(a.ua=a.s.f,4))}}function vb(a,b){var c=void 0===b?1:parseInt(b,10),d=1==c?0:1;fa(c,function(a){return function(){return I(a,!0)&&a.step(d)}}(a),function(a){return function(){I(a,!1)}}(a))}
|
||||
function lb(a,b){b.length||(a.Ya?(a.l("ended assemble @"+p(a.ga,4)),a.ua=a.ga,a.Ya=!1):a.nb&&(b=a.nb));if(K(a)&&!J(a,!0)&&0<b.length){a.Ya?b="a "+p(a.ga,4)+" "+b:1<b.length&&1!=b.indexOf(" ")&&(b=b.charAt(0).toLowerCase()+" "+b.substr(1));var c=b.split(" ");a.nb=c[0];switch(c[0].toLowerCase()){case "a":var d=Y(a,c[1]);if(void 0!==d)if(a.ga=d,void 0===c[2])a.l("begin assemble @"+r(a.ga)),a.Ya=!0,a.s.update();else{var e,g=c[2],h=c[3],c=a.ga,d=[];if(void 0!==g){var k,g=g.toUpperCase();"?"==g.charAt(g.length-
|
||||
1)&&(h="?",g=g.substr(0,g.length-1));for(k=0;k<a.Ka.length&&g!=a.Ka[k];k++);k==a.Ka.length&&(a.l("unknown operation: "+g),k=-1);var l="",m;if(0<=k&&void 0!==h)if(l=h.toUpperCase(),"?"==l){for(h=m=0;h<a.fa.length;h++)a.fa[h][0]===k&&(m||a.l("supported opcodes:"),a.l(" "+p(h,2)+": "+g+(void 0!==a.fa[h][2]?" "+a.ka[a.fa[h][2]]:"")),m++);k=-1}else if(m=l.match(a.Oe),null!==m&&m[0]==l){for(h=1;h<m.length;h++)if(m[h]==l)if(void 0===e)e=h-1;else{a.l("too many operand matches (both "+a.ka[e]+" and "+
|
||||
a.ka[h-1]+")");k=-1;break}e==a.Pa&&0>a.Pb.indexOf(k)&&(e=a.N);e==a.ob&&27!=k&&(e=a.N)}else a.l("unknown operand: "+l),k=-1;if(0<=k){m=-1;for(h=0;h<a.fa.length;h++)if(a.fa[h][0]===k&&a.fa[h][2]===e)if(0>m)m=h;else{a.l("too many instruction matches (both "+q(m)+" and "+q(h)+")");m=-2;break}if(0<=m){if(d.push(m),void 0!==e)if(g=a.fa[m][1],l=l.match(/[0-9A-F]+/),null!==l)for(l=parseInt(l[0],16),1==g&&e==a.ea&&(l-=c+2,-128>l||127<l)&&(a.l("branch out of range ("+l+")"),d=[],g=0),h=0;h<g;h++)d.push(l&255),
|
||||
l>>>=8;else g&&a.l("instruction missing "+g+" bytes")}else a.l("unknown instruction: "+g+" "+l+"")}}e=d;if(e.length){for(c=0;c<e.length;c++)a.W(a.ga+c,e[c]);a.l(tb(a,a.ga));a.ga+=e.length}}break;case "b":e=c[1];c=c[2];if(void 0===e||"?"==e)a.l("\nbreakpoint commands:"),a.l("bp [a]\tset exec breakpoint at [a]"),a.l("br [a]\tset read breakpoint at [a]"),a.l("bw [a]\tset write breakpoint at [a]"),a.l("bc [a]\tclear breakpoint at [a]"),a.l("bl\tlist all breakpoints");else if(void 0===c&&1<e.length&&(c=
|
||||
e.substr(1),e=e.substr(0,1)),"l"==e){e=0;d=a.sa;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+r(d[c])+" (exec)"),e++;d=a.wa;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+r(d[c])+" (read)"),e++;d=a.ya;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+r(d[c])+" (write)"),e++;e||a.l("no breakpoints")}else void 0===c?a.l("missing breakpoint address"):"c"==e&&"*"==c?(a.sa=[],a.wa=[],a.ya=[],a.l("all breakpoints cleared")):(c=Y(a,c),void 0!==c&&("p"==e?rb(a,c)?a.l("breakpoint enabled: "+r(c)+" (exec)"):
|
||||
a.l("breakpoint not set: "+r(c)):"c"==e?X(a.sa,c,!0)?a.l("breakpoint cleared: "+r(c)+" (exec)"):X(a.wa,c,!0)?a.l("breakpoint cleared: "+r(c)+" (read)"):X(a.ya,c,!0)?a.l("breakpoint cleared: "+r(c)+" (write)"):a.l("breakpoint missing: "+r(c)):"r"==e?(X(a.wa,c,void 0)||a.wa.push(c),a.l("breakpoint enabled: "+r(c)+" (read)")):"w"==e?(X(a.ya,c,void 0)||a.ya.push(c),a.l("breakpoint enabled: "+r(c)+" (write)")):a.l("unknown breakpoint command: "+e)));break;case "d":e=c[1];d=c[2];if("?"==e)a.l("\ndump commands:"),
|
||||
a.l("d [a] [#] dump # lines of memory");else if(e=Y(a,e),void 0!==e){c=0;void 0!==d&&("l"==d.charAt(0)&&(d=d.substr(1)),c=parseInt(d,10));c||(c=1);for(d=0;d<c;d++){l=g="";h=e;for(k=0;8>k&&e<a.Ga;k++)m=a.S(e),void 0===m&&(m=0),g+=n(m,2)+" ",l+=32<=m&&128>m?String.fromCharCode(m):".",e++;a.l(n(h,4)+" "+g+l)}a.ua=e}break;case "e":e=c[1];if(void 0===e)a.l("missing address");else if(e=Y(a,e),void 0!==e)for(d=2;d<c.length;d++)g=parseInt(c[d],16),a.W(e++,g);break;case "f":pb(a,c[1]);break;case "g":e=
|
||||
c[1];void 0!==e&&nb(a,Y(a,e));a.va()||a.s.ca();break;case "h":a.aa();break;case "o":if(void 0===c[1]||"?"==c[1])a.l("\noption commands:"),a.l("max\trun at maximum speed"),a.l("fast\trun faster (up to "+a.s.Ma+"Mhz)"),a.l("slow\trun at normal speed (1Mhz)"),a.l("classic\tuse classic operand syntax"),a.l("modern\tuse modern operand syntax"),a.l("msg\tenable message categories");else switch(e=c[1],e){case "slow":M(a.s,a.s.Ra);break;case "fast":M(a.s,a.s.Ob);break;case "max":M(a.s,a.s.eb);break;case "classic":fb(a,
|
||||
!0);a.l("classic syntax enabled");break;case "modern":fb(a,!1);a.l("modern syntax enabled");break;case "msg":e=0;void 0!==c[2]&&("all"==c[2]?e=255:void 0!==a.Ua[c[2]]&&(e=a.Ua[c[2]]),e&&("on"==c[3]?a.la|=e:"off"==c[3]&&(a.la&=~e)));for(d in a.Ua)if(void 0===c[2]||"all"==c[2]||c[2]==d)e=a.Ua[d],a.l(d+" messages: "+(a.la&e?"on":"off"));break;default:a.l("unknown option: "+e)}break;case "p":l=c[1];e=10;c=a.La;d=a.xa;if(void 0!==d){g=void 0===l?a.Vb:parseInt(l,10);void 0===g&&(g=10);g>d.length&&(a.l("note: only "+
|
||||
d.length+" available"),g=d.length);void 0!==l&&(a.mb=0,a.l(g+" instructions earlier:"));l=a.mb?a.mb:1;c-=g;for(0>c&&(c=d.length-1);e&&c!=a.La;){h=d[c];if(0>h)break;a.l(ob(a,h,l++));++c==d.length&&(c=0);e--;g--}a.Vb=g;a.mb=l}10==e&&a.l("no history available");break;case "r":jb(a,c);break;case "s":a.S(a.s.f)==a.s.Qa?(nb(a,a.s.f+3),a.Da=!0,a.va()||a.s.ca()):qb(a);break;case "t":qb(a,c[1]);break;case "u":ib(a,c[1],c[2],8);break;case "?":case "help":a.l("\ncommands:\n?\thelp\na [#]\tassemble\nb [#]\tbreakpoint\nd [#]\tdump memory\ne [#]\tedit memory\nf\tdump frequencies\ng [#]\trun to [#]\nh\thalt\no\toptions\np [#]\tdump history\nr\tdump/edit registers\ns\tstep over instruction\nt [#]\tstep instruction(s)\nu [#]\tunassemble");
|
||||
a.l("note: frequency and history commands operate only when breakpoints are set");break;default:a.l("unknown command: "+b)}}}x(function(){for(var a=G(document,"c1pjs","debugger"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new eb(d);F(d,c)}});function Z(a,b){z.call(this,"C1PComputer",a);this.Y=b}B(Z);Z.prototype.reset=function(a){var b=null,c;for(c in this.Y)for(var d=0;d<this.Y[c].length;d++){var e=this.Y[c][d];e&&e.reset&&(e.reset(),"cpu"==c&&(b=e))}b&&(b.update(),a&&b.va())};
|
||||
a.l("d [a] [#] dump # lines of memory");else if(e=Y(a,e),void 0!==e){c=0;void 0!==d&&("l"==d.charAt(0)&&(d=d.substr(1)),c=parseInt(d,10));c||(c=1);for(d=0;d<c;d++){l=g="";h=e;for(k=0;8>k&&e<a.Ga;k++)m=a.S(e),void 0===m&&(m=0),g+=p(m,2)+" ",l+=32<=m&&128>m?String.fromCharCode(m):".",e++;a.l(p(h,4)+" "+g+l)}a.ua=e}break;case "e":e=c[1];if(void 0===e)a.l("missing address");else if(e=Y(a,e),void 0!==e)for(d=2;d<c.length;d++)g=parseInt(c[d],16),a.W(e++,g);break;case "f":ub(a,c[1]);break;case "g":e=
|
||||
c[1];void 0!==e&&sb(a,Y(a,e));a.va()||a.s.ca();break;case "h":a.aa();break;case "o":if(void 0===c[1]||"?"==c[1])a.l("\noption commands:"),a.l("max\trun at maximum speed"),a.l("fast\trun faster (up to "+a.s.Ma+"Mhz)"),a.l("slow\trun at normal speed (1Mhz)"),a.l("classic\tuse classic operand syntax"),a.l("modern\tuse modern operand syntax"),a.l("msg\tenable message categories");else switch(e=c[1],e){case "slow":M(a.s,a.s.Ra);break;case "fast":M(a.s,a.s.Nb);break;case "max":M(a.s,a.s.eb);break;case "classic":kb(a,
|
||||
!0);a.l("classic syntax enabled");break;case "modern":kb(a,!1);a.l("modern syntax enabled");break;case "msg":e=0;void 0!==c[2]&&("all"==c[2]?e=255:void 0!==a.Ua[c[2]]&&(e=a.Ua[c[2]]),e&&("on"==c[3]?a.la|=e:"off"==c[3]&&(a.la&=~e)));for(d in a.Ua)if(void 0===c[2]||"all"==c[2]||c[2]==d)e=a.Ua[d],a.l(d+" messages: "+(a.la&e?"on":"off"));break;default:a.l("unknown option: "+e)}break;case "p":l=c[1];e=10;c=a.La;d=a.xa;if(void 0!==d){g=void 0===l?a.Tb:parseInt(l,10);void 0===g&&(g=10);g>d.length&&(a.l("note: only "+
|
||||
d.length+" available"),g=d.length);void 0!==l&&(a.mb=0,a.l(g+" instructions earlier:"));l=a.mb?a.mb:1;c-=g;for(0>c&&(c=d.length-1);e&&c!=a.La;){h=d[c];if(0>h)break;a.l(tb(a,h,l++));++c==d.length&&(c=0);e--;g--}a.Tb=g;a.mb=l}10==e&&a.l("no history available");break;case "r":ob(a,c);break;case "s":a.S(a.s.f)==a.s.Qa?(sb(a,a.s.f+3),a.Da=!0,a.va()||a.s.ca()):vb(a);break;case "t":vb(a,c[1]);break;case "u":nb(a,c[1],c[2],8);break;case "?":case "help":a.l("\ncommands:\n?\thelp\na [#]\tassemble\nb [#]\tbreakpoint\nd [#]\tdump memory\ne [#]\tedit memory\nf\tdump frequencies\ng [#]\trun to [#]\nh\thalt\no\toptions\np [#]\tdump history\nr\tdump/edit registers\ns\tstep over instruction\nt [#]\tstep instruction(s)\nu [#]\tunassemble");
|
||||
a.l("note: frequency and history commands operate only when breakpoints are set");break;default:a.l("unknown command: "+b)}}}x(function(){for(var a=G(document,"c1pjs","debugger"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new jb(d);F(d,c)}});function Z(a,b){A.call(this,"C1PComputer",a);this.Y=b}C(Z);Z.prototype.reset=function(a){var b=null,c;for(c in this.Y)for(var d=0;d<this.Y[c].length;d++){var e=this.Y[c][d];e&&e.reset&&(e.reset(),"cpu"==c&&(b=e))}b&&(b.update(),a&&b.va())};
|
||||
Z.prototype.start=function(){for(var a in this.Y)if("cpu"!=a)for(var b=0;b<this.Y[a].length;b++){var c=this.Y[a][b];c&&c.start&&c.start()}};Z.prototype.stop=function(a,b){for(var c in this.Y)if("cpu"!=c)for(var d=0;d<this.Y[c].length;d++){var e=this.Y[c][d];e&&e.stop&&e.stop(a,b)}};Z.prototype.T=function(a,b,c){switch(b){case "reset":return this.H[b]=c,c.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function L(a,b){return a.Y[b]?a.Y[b][0]:null}
|
||||
function rb(a){var b=null,c;for(c in a.Y)for(var d=0;d<a.Y[c].length;d++){var e=a.Y[c][d];if(e){if(!K(e)){K(e,function(a){return function(){rb(a)}}(a));return}"cpu"==c?b=e:e.ha&&e.ha(!0,a)}}a.X();a.l("C1Pjs v1.20.9\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>");b&&b.ha(!0,a)}
|
||||
x(function(){for(var a=G(document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=E(c),e,g={},h,k=0,l=0,m=0;m<d.modules.length;m++){var q=d.modules[m];if(!m){if("cpu"!=q.type)break;k=q.start;l=q.end;h=Array(l+1-k);for(e=k;e<h.length;e++)h[e]=0}if(e=pa(q.refID,d.id)){var C=q.type;void 0===g[C]&&(g[C]=[]);g[C].push(e);e.ba&&void 0!==q.start&&e.ba(h,q.start,q.end,g.cpu[0])}else{u('no component for <module refid="'+q.refID+'">');return}}if(void 0===h){u('<module type="cpu"> definition must appear first in the <computer> specification');
|
||||
break}if(e=pa("debugger",d.id))g["debugger"]=[e],e.ba&&e.ba(h,k,l,g.cpu[0]);k=new Z(d,g);if(l=pa("panel",d.id))if(g.panel=[l],l.gb){e=d.id;d=void 0;g=[];e&&(e=0<(d=e.indexOf("."))?e.substr(0,d+1):"");for(d=0;d<A.length;d++)m=A[d],e&&m.id.indexOf(e)||g.push(m);d=g;for(g=0;g<d.length;g++)e=d[g],e!=l&&(e.$a=l.$a,e.l=l.l,e.gb=l.gb)}F(k,c);rb(k)}});var sb=0;function tb(a,b,c,d,e,g){e("Loading "+a+"...");t(a,null,function(h,k,l){l?(k||(k="unable to load "+a+" ("+l+")"),g(k,null)):ub(k,a,b,c,d,e,g)})}
|
||||
function ub(a,b,c,d,e,g,h){function k(a,g){if(g)h(g,null);else{if(c){D[c]&&b&&(D[c][b]=a);var k=b;k&&0>k.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(k=window.location.pathname+k);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+k+'"}';"object"==typeof resources&&(k=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(k?' url="'+k+'"':""))}k=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,
|
||||
"")),window.ActiveXObject||"ActiveXObject"in window?(k=new window.ActiveXObject("Microsoft.XMLDOM"),k.async=!1,k.loadXML(a)):k=(new window.DOMParser).parseFromString(a,"text/xml")}catch(C){k=null,a=C.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,k)}}a?e?vb(a,g,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function vb(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");t(e,null,function(g,h,k){if(k||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+k+")");else{if(g=d[3])if(k=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=k[0],m,q=/( [a-z]+=)(['"])(.*?)\2/g;m=q.exec(g);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);k[0]!=l&&(h=h.replace(k[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);vb(a,b,c)}})}else c(a,null)}
|
||||
function wb(a,b,c){function d(a){if(void 0===h){var b=g&&G(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ba(a))}function e(a){d("Error: "+a);k&&(--sb||y(!0));k=!1}var g,h,k=!0;sb++;D[a]={};try{if(g=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var m=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));m.appendChild(q)}c||(c=
|
||||
"/versions/c1pjs/1.20.9/components.xsl");l=function(h,k){k?tb(c,null,null,!1,d,function(h,l){if(l)if(D[a]&&c&&(D[a][c]=h),d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=k.transformNode(l);m?(g.outerHTML=m,--sb||y(!0)):e("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(l),(m=m.transformToFragment(k,document))?g.parentNode?(g.parentNode.replaceChild(m,g),--sb||y(!0)):e("invalid machine element: "+
|
||||
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e(h)}):e(h)};"<"!=b.charAt(0)?tb(b,a,void 0,!0,d,l):ub(b,null,a,void 0,!1,d,l)}else e("missing machine element: "+a)}catch(C){e(C.message)}return k}window.embedC1P=function(a,b,c){y(!1);return wb(a,b,c)};window.enableEvents=y;window.sendEvent=ja;})();
|
||||
function wb(a){var b=null,c;for(c in a.Y)for(var d=0;d<a.Y[c].length;d++){var e=a.Y[c][d];if(e){if(!K(e)){K(e,function(a){return function(){wb(a)}}(a));return}"cpu"==c?b=e:e.ha&&e.ha(!0,a)}}a.X();a.l("C1Pjs v1.20.9\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>");b&&b.ha(!0,a)}
|
||||
x(function(){for(var a=G(document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=E(c),e,g={},h,k=0,l=0,m=0;m<d.modules.length;m++){var n=d.modules[m];if(!m){if("cpu"!=n.type)break;k=n.start;l=n.end;h=Array(l+1-k);for(e=k;e<h.length;e++)h[e]=0}if(e=ra(n.refID,d.id)){var y=n.type;void 0===g[y]&&(g[y]=[]);g[y].push(e);e.ba&&void 0!==n.start&&e.ba(h,n.start,n.end,g.cpu[0])}else{u('no component for <module refid="'+n.refID+'">');return}}if(void 0===h){u('<module type="cpu"> definition must appear first in the <computer> specification');
|
||||
break}if(e=ra("debugger",d.id))g["debugger"]=[e],e.ba&&e.ba(h,k,l,g.cpu[0]);k=new Z(d,g);if(l=ra("panel",d.id))if(g.panel=[l],l.gb){e=d.id;d=void 0;g=[];e&&(e=0<(d=e.indexOf("."))?e.substr(0,d+1):"");for(d=0;d<B.length;d++)m=B[d],e&&m.id.indexOf(e)||g.push(m);d=g;for(g=0;g<d.length;g++)e=d[g],e!=l&&(e.$a=l.$a,e.l=l.l,e.gb=l.gb)}F(k,c);wb(k)}});var xb=0;function yb(a,b,c,d,e,g){e("Loading "+a+"...");t(a,function(h,k,l){l?(k||(k="unable to load "+a+" ("+l+")"),g(k,null)):Ab(k,a,b,c,d,e,g)})}
|
||||
function Ab(a,b,c,d,e,g,h){function k(a,g){if(g)h(g,null);else{if(c){D[c]&&b&&(D[c][b]=a);var k=b;k&&0>k.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(k=window.location.pathname+k);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+k+'"}';"object"==typeof resources&&(k=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(k?' url="'+k+'"':""))}k=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,
|
||||
"")),window.ActiveXObject||"ActiveXObject"in window?(k=new window.ActiveXObject("Microsoft.XMLDOM"),k.async=!1,k.loadXML(a)):k=(new window.DOMParser).parseFromString(a,"text/xml")}catch(y){k=null,a=y.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,k)}}a?e?Bb(a,g,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Bb(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");t(e,function(g,h,k){if(k||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+k+")");else{if(g=d[3])if(k=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=k[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(g);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);k[0]!=l&&(h=h.replace(k[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);Bb(a,b,c)}})}else c(a,null)}
|
||||
function Cb(a,b,c){function d(a){if(void 0===h){var b=g&&G(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=da(a))}function e(a){d("Error: "+a);k&&(--xb||z(!0));k=!1}var g,h,k=!0;xb++;D[a]={};try{if(g=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var m=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css";n.styleSheet?n.styleSheet.cssText=l:n.appendChild(document.createTextNode(l));m.appendChild(n)}c||(c=
|
||||
"/versions/c1pjs/1.20.9/components.xsl");l=function(h,k){k?yb(c,null,null,!1,d,function(h,l){if(l)if(D[a]&&c&&(D[a][c]=h),d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=k.transformNode(l);m?(g.outerHTML=m,--xb||z(!0)):e("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(l),(m=m.transformToFragment(k,document))?g.parentNode?(g.parentNode.replaceChild(m,g),--xb||z(!0)):e("invalid machine element: "+
|
||||
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e(h)}):e(h)};"<"!=b.charAt(0)?yb(b,a,void 0,!0,d,l):Ab(b,null,a,void 0,!1,d,l)}else e("missing machine element: "+a)}catch(y){e(y.message)}return k}window.embedC1P=function(a,b,c){z(!1);return Cb(a,b,c)};window.enableEvents=z;window.sendEvent=la;})();
|
||||
|
|
|
|||
|
|
@ -1,126 +1,126 @@
|
|||
(function(){var e;function p(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}var aa={"&":"&","<":"<",">":">",'"':""","'":"'"};function ba(a){return a.replace(/[&<>"']/g,function(a){return aa[a]})}var q=Date.now||function(){return+new Date};
|
||||
function r(a,b,c){var d=0,f=null;if("object"==typeof resources&&(f=resources[a]))c&&(b?c.call(b,a,f,d,void 0):c(a,f,d,void 0));else{var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(d=g.status||-1),c&&(b?c.call(b,a,f,d,void 0):c(a,f,d,void 0)))};g.open("GET",a,!0);g.send()}}
|
||||
function t(a){window&&window.alert(a)}function u(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var v={init:[],show:[],exit:[]},ca=!1,w=!0;function da(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function x(a){v.init.push(a)}
|
||||
function z(a){if(w)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){t("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function A(a){!w&&a?(w=!0,ca&&ea("init")):w=a}function ea(a){v[a]&&z(v[a])}da("onload",function(){ca=!0;z(v.init)});da("onpageshow",function(){z(v.show)});da(u("Opera")||u("iOS")?"onunload":"onbeforeunload",function(){z(v.exit)});
|
||||
function B(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Da=this.id.substr(0,b),this.Ca=this.id.substr(b+1)):this.Ca=this.id;this[a]=c;this.u={va:!1,pa:!1,Aa:!1,H:!1,qa:!1};this.xa=null;this.u.qa=!1;this.A={};C.push(this)}var fa=void 0;if(window){fa||(fa=window.location.search.substr(1));for(var ga,ha=/\+/g,ia=/([^&=]+)=?([^&]*)/g;ga=ia.exec(fa);)ga[1].replace(ha," "),ga[2].replace(ha," ")}
|
||||
function ja(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}function D(a){var b;b||(b=B);a.prototype=ja(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var C=[],E={};function F(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<C.length;c++)if(C[c].id===a)return C[c]}return null}
|
||||
(function(){var e;function p(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 aa(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 ba(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}var ca={"&":"&","<":"<",">":">",'"':""","'":"'"};
|
||||
function da(a){return a.replace(/[&<>"']/g,function(a){return ca[a]})}var q=Date.now||function(){return+new Date};
|
||||
function r(a,b){var c=0,d=null;if("object"==typeof resources&&(d=resources[a]))b&&b(a,d,c);else{var f=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");f.onreadystatechange=function(){4===f.readyState&&(d=f.responseText,200==f.status||!f.status&&d.length&&"file:"==(window?window.location.protocol:"file:")||(c=f.status||-1),b&&b(a,d,c))};f.open("GET",a,!0);f.send()}}function t(a){window&&window.alert(a)}
|
||||
function v(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var w={init:[],show:[],exit:[]},ea=!1,x=!0;function fa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function y(a){w.init.push(a)}
|
||||
function z(a){if(x)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){t("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function A(a){!x&&a?(x=!0,ea&&ga("init")):x=a}function ga(a){w[a]&&z(w[a])}fa("onload",function(){ea=!0;z(w.init)});fa("onpageshow",function(){z(w.show)});fa(v("Opera")||v("iOS")?"onunload":"onbeforeunload",function(){z(w.exit)});
|
||||
function B(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Da=this.id.substr(0,b),this.Ca=this.id.substr(b+1)):this.Ca=this.id;this[a]=c;this.u={va:!1,pa:!1,Aa:!1,H:!1,qa:!1};this.xa=null;this.u.qa=!1;this.A={};C.push(this)}var ha=void 0;if(window){ha||(ha=window.location.search.substr(1));for(var ia,ja=/\+/g,ka=/([^&=]+)=?([^&]*)/g;ia=ka.exec(ha);)ia[1].replace(ja," "),ia[2].replace(ja," ")}
|
||||
function la(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 D(a){var b;b||(b=B);a.prototype=la(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var C=[],E={};function F(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<C.length;c++)if(C[c].id===a)return C[c]}return null}
|
||||
function G(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){t(c.message+" ("+a+")")}return b}document&&!document.ELEMENT_NODE&&(document.ELEMENT_NODE=1);
|
||||
function H(a,b){for(var c=I(b.parentNode,"c1pjs-control"),d=0;d<c.length;d++)for(var f=c[d].childNodes,g=0;g<f.length;g++){var k=f[g];if(k.nodeType===document.ELEMENT_NODE){var h=k.getAttribute("class");if(h)for(var l=h.split(" "),m=0;m<l.length;m++)switch(h=l[m],h){case "c1pjs-binding":(h=G(k))&&h.binding&&a.J(h.type,h.binding,k,h.value),m=l.length}}}}
|
||||
function I(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)f.test(a[b].className)&&c.push(a[b]);return c}
|
||||
B.prototype={constructor:B,parent:null,toString:function(){return this.name?this.name:this.id||this.type},J:function(a,b,c){switch(b){case "clear":return this.A[b]||(this.A[b]=c,c.onclick=function(a){return function(){a.A.print&&(a.A.print.value="")}}(this)),!0;case "print":return this.A[b]||(this.ya=this.A[b]=c,c.value="",this.F=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.wa=function(a,b,c){this.F(a,"notice",c)}),!0;default:return!1}},log:function(){},F:function(){},status:function(a){this.F(this.Ca+": "+a)},wa:function(a,b){b||t(a)},N:function(a){this.u.qa||(this.u.va=!1!==a,this.u.va&&(a=this.xa,this.xa=null,a&&a()))}};function ka(a,b){if(a.u.Aa)return a.u.pa&&(a.u.pa=!1),a.u.Aa=!1;if(a.u.qa)return a.F(a.toString()+" error"),!1;a.u.pa=b;return a.u.pa}function J(a,b){b&&(a.u.va?b():a.xa=b);return a.u.va}function la(a,b){a.u.qa=!0;a.wa(b)}
|
||||
function K(a){B.call(this,"C1PPanel",a);this.u.H=!1}D(K);K.prototype.J=function(a,b,c,d){return this.I&&this.I.J(a,b,c,d)||this.f&&this.f.J(a,b,c,d)||this.b&&this.b.J(a,b,c,d)?!0:B.prototype.J.call(this,a,b,c,d)};K.prototype.$=function(a,b){a&&!this.u.H&&(this.u.H=!0,this.I=b,this.f=L(b,"cpu"),this.b=L(b,"keyboard"),ma())};function ma(){for(var a=!1,b=I(document,"c1pjs","panel"),c=0;c<b.length;c++){var d=b[c],f=G(d),g=F(f.id);g||(a=!0,g=new K(f));H(g,d);a&&g.N()}}x(ma);
|
||||
function na(a){B.call(this,"C1PCPU",a);oa(this);this.u.H=!1;this.u.Z=!1;this.sa=a.autoStart;this.ia=0;this.Ba=2;this.speed=this.ia;this.oa=30;this.na=5;this.ea=8;this.ta=["Slow","Fast","Max"];this.eb=["(1Mhz)","(up to "+this.ea+"Mhz)","(unlimited)"];this.O=[];this.K=[];this.ja=65536;this.ka=0;this.Y=65536;this.ca=0;this.v=[this.Lb,this.dd,this.Wd,this.l,this.l,this.fd,this.Bb,this.l,this.jd,this.cd,this.Ab,this.l,this.l,this.$c,this.yb,this.l,this.Kb,this.ed,this.l,this.l,this.l,this.gd,this.Cb,this.l,
|
||||
this.Ob,this.bd,this.l,this.l,this.l,this.ad,this.zb,this.l,this.Bc,this.ub,this.l,this.l,this.Hb,this.wb,this.pd,this.l,this.ld,this.tb,this.od,this.l,this.Gb,this.qb,this.md,this.l,this.Ib,this.vb,this.l,this.l,this.l,this.xb,this.qd,this.l,this.Gd,this.sb,this.l,this.l,this.l,this.rb,this.nd,this.l,this.wd,this.pc,this.l,this.l,this.l,this.rc,this.Xc,this.l,this.hd,this.oc,this.Wc,this.l,this.Ac,this.lc,this.Uc,this.l,this.Mb,this.qc,this.l,this.l,this.l,this.sc,this.Yc,this.l,this.Qb,this.nc,
|
||||
this.l,this.l,this.l,this.mc,this.Vc,this.l,this.xd,this.Oa,this.l,this.l,this.l,this.Qa,this.ud,this.l,this.kd,this.Na,this.td,this.l,this.zc,this.Ka,this.rd,this.l,this.Nb,this.Pa,this.l,this.l,this.l,this.Ra,this.vd,this.l,this.Id,this.Ma,this.l,this.l,this.l,this.La,this.sd,this.l,this.l,this.Md,this.l,this.l,this.Ud,this.Od,this.Rd,this.l,this.kc,this.l,this.$d,this.l,this.Td,this.Jd,this.Qd,this.l,this.Db,this.Nd,this.l,this.l,this.Vd,this.Pd,this.Sd,this.l,this.be,this.Ld,this.ae,this.l,this.l,
|
||||
this.Kd,this.l,this.l,this.Rc,this.Gc,this.Mc,this.l,this.Sc,this.Ic,this.Nc,this.l,this.Yd,this.Fc,this.Xd,this.l,this.Pc,this.Cc,this.Kc,this.l,this.Eb,this.Hc,this.l,this.l,this.Tc,this.Jc,this.Oc,this.l,this.Rb,this.Ec,this.Zd,this.l,this.Qc,this.Dc,this.Lc,this.l,this.dc,this.Wb,this.l,this.l,this.ec,this.Yb,this.hc,this.l,this.yc,this.Vb,this.jc,this.l,this.cc,this.Sb,this.fc,this.l,this.Jb,this.Xb,this.l,this.l,this.l,this.Zb,this.ic,this.l,this.Pb,this.Ub,this.l,this.l,this.l,this.Tb,this.gc,
|
||||
this.l,this.ac,this.Wa,this.l,this.l,this.bc,this.Ya,this.vc,this.l,this.xc,this.Va,this.Zc,this.l,this.$b,this.Sa,this.tc,this.l,this.Fb,this.Xa,this.l,this.l,this.l,this.Za,this.wc,this.l,this.Hd,this.Ua,this.l,this.l,this.l,this.Ta,this.uc,this.l];this.cb=[7,6,0,0,0,3,5,0,3,2,2,0,0,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,3,6,0,0,3,3,5,0,4,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,5,0,3,2,2,0,3,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,5,0,4,2,2,0,5,4,6,0,2,5,0,0,0,4,6,0,2,
|
||||
4,0,0,0,4,7,0,0,6,0,0,3,3,3,0,2,0,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,0,4,0,0,2,6,2,0,3,3,3,0,2,2,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,4,4,4,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0]}D(na);e=na.prototype;e.reset=function(a){this.u.Z&&M(this);oa(this);this.c=this.a[65532]|this.a[65533]<<8;this.u.qa=!1;a&&(!0===this.sa||null===this.sa&&void 0===this.A.run)&&N(this)};
|
||||
e.J=function(a,b,c){a=!1;switch(b){case "run":this.A[b]=c;c.onclick=function(a){return function(){a.u.Z?M(a):N(a)}}(this);a=!0;break;case "A":case "X":case "Y":case "S":case "PC":case "C":case "Z":case "I":case "D":case "B":case "V":case "N":case "speed":this.A[b]=c;a=!0;break;case "setSpeed":this.A[b]=c,c.onclick=function(a){return function(){pa(a,2<=a.speed?a.ia:a.speed+1,!0)}}(this),a=!0}return a};e.X=function(a,b){this.a=a;(this.Ha=b)?t("unsupported CPU address buffer offset ("+this.Ha+")"):this.N()};
|
||||
e.$=function(a,b){if(a&&!this.u.H){this.I=b;var c=L(b,"video");c&&(this.za=function(a){return function(){qa(a)}}(c),this.da=function(a){return function(){a.da()}}(c));this.u.H=!0;this.reset(!0);this.update()}};function ra(a,b,c,d,f){0>sa(a.O,b,c,d,f)&&(a.ja>b&&(a.ja=b),a.ka<c&&(a.ka=c),a.O.push([b,c,d,f]))}function O(a,b,c,d,f){0>sa(a.K,b,c,d,f)&&(a.Y>b&&(a.Y=b),a.ca<c&&(a.ca=c),a.K.push([b,c,d,f]))}
|
||||
function sa(a,b,c,d,f){for(var g=0;g<a.length;g++)if(a[g][0]==b&&a[g][1]==c&&a[g][2]==d&&a[g][3]==f)return g;return-1}function pa(a,b,c){void 0!==b&&(a.speed=b,a.A.setSpeed&&(a.A.setSpeed.innerHTML=a.ta[2<=b?0:b+1]),a.F("running at "+a.ta[b].toLowerCase()+" speed "+a.eb[b]),c&&a.da());a.S=0;a.Ea=q();ta(a)}e.za=function(){};e.da=function(){};function P(a,b,c,d){void 0!==a.A[b]&&(void 0===d&&(d=1),c="0000"+c.toString(16),a.A[b].innerHTML=c.slice(c.length-d).toUpperCase())}
|
||||
function ua(a){P(a,"A",a.g,2);P(a,"X",a.m,2);P(a,"Y",a.s,2);var b=va(a);P(a,"C",b&1?1:0);P(a,"Z",b&2?1:0);P(a,"I",b&4?1:0);P(a,"D",b&8?1:0);P(a,"B",b&16?1:0);P(a,"V",b&64?1:0);P(a,"N",b&128?1:0);P(a,"S",a.o,4);P(a,"PC",a.c,4);a.A.speed&&a.ba&&(a.A.speed.innerHTML=a.ba.toFixed(1)+"Mhz")}
|
||||
function ta(a,b){var c=30;c<a.oa&&(c=a.oa);c<a.na&&(c=a.na);var d=1;b&&a.speed>a.ia&&a.ba&&(d=a.ba);d>a.ea&&2>a.speed&&(d=a.ea);a.fb=Math.round(1E3/30);a.fa=Math.floor(1E6/c*d);a.la=Math.floor(1E6/30*d);a.Ga=Math.floor(1E6/a.oa*d);a.Fa=Math.floor(1E6/a.na*d);b||(a.R=a.la,a.U=a.Ga,a.T=a.Fa);a.ma=0}function wa(a){1E6<=a.ma&&ta(a,!0);a.V=0;a.gb=q()}
|
||||
function xa(a){var b=q(),c=a.fb;a.V&&(c=Math.round(c*a.V/a.la));c=c-(b-a.gb);if(b=b-a.Ea)a.ba=Math.round(a.S/(100*b))/10,864E5<=b&&pa(a);0>c?c=0:1==a.speed?a.ba<=a.ea&&(c=0):2==a.speed&&(c=0);a.ma+=a.V;return c}
|
||||
function N(a){if(ka(a,!0)){a.u.Z||(pa(a),a.I&&a.I.start(),a.u.Z=!0,a.A.run&&(a.A.run.innerHTML="Halt"),a.da());wa(a);try{do{a.step(a.fa);var b=a.L-a.G;a.S+=b;a.V+=b;a.L=a.G=0;a.U-=a.fa;0>=a.U&&(a.U+=a.Ga,a.za());a.T-=a.fa;0>=a.T&&(a.T+=a.Fa,ua(a));a.R-=a.fa;if(0>=a.R){a.R+=a.la;break}}while(a.u.Z)}catch(c){M(a);a.update();ka(a,!1);la(a,c.stack||c.message);return}setTimeout(function(a){return function(){N(a)}}(a),xa(a))}else a.update(),a.I&&a.I.stop(a.Ea,a.S)}
|
||||
e.step=function(a){this.b=this.j=-1;this.L=this.G=a;do{a=this.a[this.c];this.c++;this.v[a].call(this);if(0<=this.b){if(this.b>=this.ja&&this.b<=this.ka)for(var b=this.b,c=this.c,d=0;d<this.O.length;d++)b>=this.O[d][0]&&b<=this.O[d][1]&&this.O[d][3].call(this.O[d][2],b,c);this.b=-1}else if(0<=this.j){if(this.j>=this.Y&&this.j<=this.ca)for(b=this.j,c=this.c,d=0;d<this.K.length;d++)b>=this.K[d][0]&&b<=this.K[d][1]&&this.K[d][3].call(this.K[d][2],b,c);this.j=-1}this.G-=this.cb[a]}while(0<this.G);return!0};
|
||||
function M(a){a.u.pa&&(a.u.Aa=!0);a.L-=a.G;a.G=0;a.u.Z&&(a.u.Z=!1,a.A.run&&(a.A.run.innerHTML="Run"))}e.update=function(){this.za();ua(this)};function ya(a){return a.u.Z?a.S+a.L-a.G:0}e.W=function(a){return this.a[a]};e.P=function(a,b){this.a[a]=b};function va(a){var b=a.f&256?1:0,b=b|(a.i&255?0:2),b=b|((a.w&255^a.C^a.w>>1)&128?64:0),b=b|(a.h&128?128:0);return a.B&60|b}
|
||||
function Q(a,b,c){var d=a.f&256?1:0,f=(b&15)+(c&15)+d;10<=f&&(f=f+6&15|16);f+=(b&240)+(c&240);a.C=b^c;a.w=f;a.h=f&255;160<=f&&(f+=96);512<=f&&(f-=256);a.f=f;a.i=b+c+d&255;a.G--;return f&255}function R(a,b,c){var d=a.f&256?0:1,f=(b&15)-(c&15)-d;0>f&&(f=(f-6&15)-16);f+=(b&240)-(c&240);0>f&&(f-=96);a.h=a.i=(a.f=b-c-d)&255;a.C=b^c;a.w=a.f;a.f^=256;a.G--;return f&255}function oa(a){a.g=0;a.m=0;a.s=0;a.o=256;a.B=0;a.h=0;a.i=0;a.C=0;a.w=0;a.f=0;a.c=0;a.b=-1;a.j=-1;a.ba=0;a.S=a.L=a.G=0}
|
||||
e.Lb=function(){this.c++;this.a[this.o--]=this.c>>8;this.o|=256;this.a[this.o--]=this.c&255;this.o|=256;this.B|=16;this.B=va(this);this.a[this.o--]=this.B;this.o|=256;this.B&=239;this.b=65534;this.c=this.a[this.b]|this.a[this.b+1]<<8};e.dd=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.g|=this.a[this.b]};e.fd=function(){this.b=this.a[this.c++];this.h=this.i=this.g|=this.a[this.b]};
|
||||
e.Bb=function(){this.j=this.a[this.c++];this.f=this.a[this.j]<<1;this.h=this.i=this.a[this.j]=this.f&255};e.jd=function(){this.B=va(this);this.a[this.o--]=this.B;this.o|=256};e.cd=function(){this.b=this.c++;this.h=this.i=this.g|=this.a[this.b]};e.Ab=function(){this.f=this.g<<1;this.h=this.i=this.g=this.f&255};e.$c=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.g|=this.a[this.b]};
|
||||
e.yb=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.f=this.a[this.j]<<1;this.h=this.i=this.a[this.j]=this.f&255};e.Kb=function(){this.c+=(this.h&128?0:(this.G--,this.a[this.c]<<24>>24))+1};e.ed=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.h=this.i=this.g|=this.a[this.b]};e.gd=function(){this.b=this.a[this.c++]+this.m&255;this.h=this.i=this.g|=this.a[this.b]};
|
||||
e.Cb=function(){this.j=this.a[this.c++]+this.m&255;this.f=this.a[this.j]<<1;this.h=this.i=this.a[this.j]=this.f&255};e.Ob=function(){this.f=0};e.bd=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.h=this.i=this.g|=this.a[this.b]};e.ad=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.g|=this.a[this.b]};e.zb=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.f=this.a[this.j]<<1;this.h=this.i=this.a[this.j]=this.f&255};
|
||||
e.Bc=function(){this.b=this.c++;this.a[this.o--]=this.c>>8;this.o|=256;this.a[this.o--]=this.c&255;this.o|=256;this.c=this.a[this.b]|this.a[this.b+1]<<8};e.ub=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.g&=this.a[this.b]};e.Hb=function(){this.b=this.a[this.c++];this.i=this.g&this.a[this.b];this.h=this.h&127|this.a[this.b]&128;this.w=0;this.C=this.a[this.b]&64?128:0};e.wb=function(){this.b=this.a[this.c++];this.h=this.i=this.g&=this.a[this.b]};
|
||||
e.pd=function(){this.j=this.a[this.c++];this.f=this.f&65280|this.a[this.j];this.f<<=1;this.f=this.f&65534|(this.f&512?1:0);this.h=this.i=this.a[this.j]=this.f&255};e.ld=function(){this.o=this.o+1&255|256;this.B=this.a[this.o];this.f=this.B&1?256:0;this.i=this.B&2?0:1;this.h=this.B&128;this.w=0;this.C=this.B&64?128:0};e.tb=function(){this.b=this.c++;this.h=this.i=this.g&=this.a[this.b]};
|
||||
e.od=function(){this.f=this.f&65280|this.g;this.f<<=1;this.f=this.f&65534|(this.f&512?1:0);this.h=this.i=this.g=this.f&255};e.Gb=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.i=this.g&this.a[this.b];this.h=this.h&127|this.a[this.b]&128;this.w=0;this.C=this.a[this.b]&64?128:0};e.qb=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.g&=this.a[this.b]};
|
||||
e.md=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.f=this.f&65280|this.a[this.j];this.f<<=1;this.f=this.f&65534|(this.f&512?1:0);this.h=this.i=this.a[this.j]=this.f&255};e.Ib=function(){this.c+=(this.h&128?(this.G--,this.a[this.c]<<24>>24):0)+1};e.vb=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.h=this.i=this.g&=this.a[this.b]};e.xb=function(){this.b=this.a[this.c++]+this.m&255;this.h=this.i=this.g&=this.a[this.b]};
|
||||
e.qd=function(){this.j=this.a[this.c++]+this.m&255;this.f=this.f&65280|this.a[this.j];this.f<<=1;this.f=this.f&65534|(this.f&512?1:0);this.h=this.i=this.a[this.j]=this.f&255};e.Gd=function(){this.f=256};e.sb=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.h=this.i=this.g&=this.a[this.b]};e.rb=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.g&=this.a[this.b]};
|
||||
e.nd=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.f=this.f&65280|this.a[this.j];this.f<<=1;this.f=this.f&65534|(this.f&512?1:0);this.h=this.i=this.a[this.j]=this.f&255};e.wd=function(){this.o=this.o+1&255|256;this.B=this.a[this.o];this.f=this.B&1?256:0;this.i=this.B&2?0:1;this.h=this.B&128;this.w=0;this.C=this.B&64?128:0;this.o=this.o+2&255|256;this.c=this.a[this.o-1|256]|this.a[this.o]<<8};
|
||||
e.pc=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.g^=this.a[this.b]};e.rc=function(){this.b=this.a[this.c++];this.h=this.i=this.g^=this.a[this.b]};e.Xc=function(){this.j=this.a[this.c++];this.f=this.f&65279|(this.a[this.j]&1?256:0);this.a[this.j]=(this.f=this.f&65280|this.a[this.j]>>1)&255;this.h=this.i=this.f&255};e.hd=function(){this.a[this.o--]=this.g;this.o|=256};e.oc=function(){this.b=this.c++;this.h=this.i=this.g^=this.a[this.b]};
|
||||
e.Wc=function(){this.f=this.f&65279|(this.g&1?256:0);this.g=(this.f=this.f&65280|this.g>>1)&255;this.h=this.i=this.f&255};e.Ac=function(){this.b=this.c;this.c=this.a[this.b]|this.a[this.b+1]<<8};e.lc=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.g^=this.a[this.b]};e.Uc=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.f=this.f&65279|(this.a[this.j]&1?256:0);this.a[this.j]=(this.f=this.f&65280|this.a[this.j]>>1)&255;this.h=this.i=this.f&255};
|
||||
e.Mb=function(){this.c+=((this.w&255^this.C^this.w>>1)&128?0:(this.G--,this.a[this.c]<<24>>24))+1};e.qc=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.h=this.i=this.g^=this.a[this.b]};e.sc=function(){this.b=this.a[this.c++]+this.m&255;this.h=this.i=this.g^=this.a[this.b]};e.Yc=function(){this.j=this.a[this.c++]+this.m&255;this.f=this.f&65279|(this.a[this.j]&1?256:0);this.a[this.j]=(this.f=this.f&65280|this.a[this.j]>>1)&255;this.h=this.i=this.f&255};
|
||||
e.Qb=function(){this.B&=251};e.nc=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.h=this.i=this.g^=this.a[this.b]};e.mc=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.g^=this.a[this.b]};e.Vc=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.f=this.f&65279|(this.a[this.j]&1?256:0);this.a[this.j]=(this.f=this.f&65280|this.a[this.j]>>1)&255;this.h=this.i=this.f&255};
|
||||
e.xd=function(){this.o=this.o+2&255|256;this.c=(this.a[this.o-1|256]|this.a[this.o]<<8)+1};e.Oa=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};e.mb=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.g=Q(this,this.g,this.a[this.b])};
|
||||
e.Qa=function(){this.b=this.a[this.c++];this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};e.ob=function(){this.b=this.a[this.c++];this.g=Q(this,this.g,this.a[this.b])};e.ud=function(){this.j=this.a[this.c++];this.f=this.f&65280|this.a[this.j];this.f=this.f&65023|(this.f&1?512:0);this.f>>=1;this.h=this.i=this.a[this.j]=this.f&255};e.kd=function(){this.o=this.o+1&255|256;this.h=this.i=this.g=this.a[this.o]};
|
||||
e.Na=function(){this.b=this.c++;this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};e.lb=function(){this.b=this.c++;this.g=Q(this,this.g,this.a[this.b])};e.td=function(){this.f=this.f&65280|this.g;this.f=this.f&65023|(this.f&1?512:0);this.f>>=1;this.h=this.i=this.g=this.f&255};e.zc=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.c=this.a[this.b]|this.a[this.b+1]<<8};
|
||||
e.Ka=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};e.ib=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.g=Q(this,this.g,this.a[this.b])};e.rd=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.f=this.f&65280|this.a[this.j];this.f=this.f&65023|(this.f&1?512:0);this.f>>=1;this.h=this.i=this.a[this.j]=this.f&255};
|
||||
e.Nb=function(){this.c+=((this.w&255^this.C^this.w>>1)&128?(this.G--,this.a[this.c]<<24>>24):0)+1};e.Pa=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};e.nb=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.g=Q(this,this.g,this.a[this.b])};
|
||||
e.Ra=function(){this.b=this.a[this.c++]+this.m&255;this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};e.pb=function(){this.b=this.a[this.c++]+this.m&255;this.g=Q(this,this.g,this.a[this.b])};e.vd=function(){this.j=this.a[this.c++]+this.m&255;this.f=this.f&65280|this.a[this.j];this.f=this.f&65023|(this.f&1?512:0);this.f>>=1;this.h=this.i=this.a[this.j]=this.f&255};e.Id=function(){this.B|=4};
|
||||
e.Ma=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};e.kb=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.g=Q(this,this.g,this.a[this.b])};e.La=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};
|
||||
e.jb=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.g=Q(this,this.g,this.a[this.b])};e.sd=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.f=this.f&65280|this.a[this.j];this.f=this.f&65023|(this.f&1?512:0);this.f>>=1;this.h=this.i=this.a[this.j]=this.f&255};e.Md=function(){this.j=this.a[this.c++]+this.m&255;this.j=this.a[this.j]|this.a[this.j+1]<<8;this.a[this.j]=this.g};e.Ud=function(){this.j=this.a[this.c++];this.a[this.j]=this.s};
|
||||
e.Od=function(){this.j=this.a[this.c++];this.a[this.j]=this.g};e.Rd=function(){this.j=this.a[this.c++];this.a[this.j]=this.m};e.kc=function(){this.h=this.i=this.s=this.s-1&255};e.$d=function(){this.h=this.i=this.g=this.m};e.Td=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.a[this.j]=this.s};e.Jd=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.a[this.j]=this.g};e.Qd=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.a[this.j]=this.m};
|
||||
e.Db=function(){this.c+=(this.f&256?0:(this.G--,this.a[this.c]<<24>>24))+1};e.Nd=function(){this.j=this.a[this.c++];this.j=(this.a[this.j]|this.a[this.j+1]<<8)+this.s;this.a[this.j]=this.g};e.Vd=function(){this.j=this.a[this.c++]+this.m&255;this.a[this.j]=this.s};e.Pd=function(){this.j=this.a[this.c++]+this.m&255;this.a[this.j]=this.g};e.Sd=function(){this.j=this.a[this.c++]+this.s&255;this.a[this.j]=this.m};e.be=function(){this.h=this.i=this.g=this.s};
|
||||
e.Ld=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.a[this.j]=this.g};e.ae=function(){this.o=this.m|256};e.Kd=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.a[this.j]=this.g};e.Rc=function(){this.b=this.c++;this.h=this.i=this.s=this.a[this.b]};e.Gc=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.g=this.a[this.b]};e.Mc=function(){this.b=this.c++;this.h=this.i=this.m=this.a[this.b]};
|
||||
e.Sc=function(){this.b=this.a[this.c++];this.h=this.i=this.s=this.a[this.b]};e.Ic=function(){this.b=this.a[this.c++];this.h=this.i=this.g=this.a[this.b]};e.Nc=function(){this.b=this.a[this.c++];this.h=this.i=this.m=this.a[this.b]};e.Yd=function(){this.h=this.i=this.s=this.g};e.Fc=function(){this.b=this.c++;this.h=this.i=this.g=this.a[this.b]};e.Xd=function(){this.h=this.i=this.m=this.g};e.Pc=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.s=this.a[this.b]};
|
||||
e.Cc=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.g=this.a[this.b]};e.Kc=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.m=this.a[this.b]};e.Eb=function(){this.c+=(this.f&256?(this.G--,this.a[this.c]<<24>>24):0)+1};e.Hc=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.h=this.i=this.g=this.a[this.b]};e.Tc=function(){this.b=this.a[this.c++]+this.m&255;this.h=this.i=this.s=this.a[this.b]};
|
||||
e.Jc=function(){this.b=this.a[this.c++]+this.m&255;this.h=this.i=this.g=this.a[this.b]};e.Oc=function(){this.b=this.a[this.c++]+this.s&255;this.h=this.i=this.m=this.a[this.b]};e.Rb=function(){this.C=this.w=0};e.Ec=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.h=this.i=this.g=this.a[this.b]};e.Zd=function(){this.h=this.i=this.m=this.o&255};e.Qc=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.s=this.a[this.b]};
|
||||
e.Dc=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.g=this.a[this.b]};e.Lc=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.h=this.i=this.m=this.a[this.b]};e.dc=function(){this.b=this.c++;this.h=this.i=this.f=this.s-this.a[this.b];this.f^=256};e.Wb=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};
|
||||
e.ec=function(){this.b=this.a[this.c++];this.h=this.i=this.f=this.s-this.a[this.b];this.f^=256};e.Yb=function(){this.b=this.a[this.c++];this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};e.hc=function(){this.j=this.a[this.c++];this.h=this.i=this.a[this.j]=this.a[this.j]-1&255};e.yc=function(){this.h=this.i=this.s=this.s+1&255};e.Vb=function(){this.b=this.c++;this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};e.jc=function(){this.h=this.i=this.m=this.m-1&255};
|
||||
e.cc=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.f=this.s-this.a[this.b];this.f^=256};e.Sb=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};e.fc=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.a[this.j]=this.a[this.j]-1&255};e.Jb=function(){this.c+=(this.i&255?(this.G--,this.a[this.c]<<24>>24):0)+1};
|
||||
e.Xb=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};e.Zb=function(){this.b=this.a[this.c++]+this.m&255;this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};e.ic=function(){this.j=this.a[this.c++]+this.m&255;this.h=this.i=this.a[this.j]=this.a[this.j]-1&255};
|
||||
e.Pb=function(){this.B&=-9;this.v[97]=this.Oa;this.v[101]=this.Qa;this.v[105]=this.Na;this.v[109]=this.Ka;this.v[113]=this.Pa;this.v[117]=this.Ra;this.v[121]=this.Ma;this.v[125]=this.La;this.v[225]=this.Wa;this.v[229]=this.Ya;this.v[233]=this.Va;this.v[237]=this.Sa;this.v[241]=this.Xa;this.v[245]=this.Za;this.v[249]=this.Ua;this.v[253]=this.Ta};e.Ub=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};
|
||||
e.Tb=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};e.gc=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.a[this.j]=this.a[this.j]-1&255};e.ac=function(){this.b=this.c++;this.h=this.i=this.f=this.m-this.a[this.b];this.f^=256};
|
||||
e.Wa=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.Cd=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.g=R(this,this.g,this.a[this.b])};e.bc=function(){this.b=this.a[this.c++];this.h=this.i=this.f=this.m-this.a[this.b];this.f^=256};
|
||||
e.Ya=function(){this.b=this.a[this.c++];this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.Ed=function(){this.b=this.a[this.c++];this.g=R(this,this.g,this.a[this.b])};e.vc=function(){this.j=this.a[this.c++];this.h=this.i=this.a[this.j]=this.a[this.j]+1&255};e.xc=function(){this.h=this.i=this.m=this.m+1&255};
|
||||
e.Va=function(){this.b=this.c++;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.Bd=function(){this.b=this.c++;this.g=R(this,this.g,this.a[this.b])};e.Zc=function(){};e.$b=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.f=this.m-this.a[this.b];this.f^=256};
|
||||
e.Sa=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.yd=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.g=R(this,this.g,this.a[this.b])};e.tc=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.a[this.j]=this.a[this.j]+1&255};e.Fb=function(){this.c+=(this.i&255?0:(this.G--,this.a[this.c]<<24>>24))+1};
|
||||
e.Xa=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.Dd=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.g=R(this,this.g,this.a[this.b])};
|
||||
e.Za=function(){this.b=this.a[this.c++]+this.m&255;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.Fd=function(){this.b=this.a[this.c++]+this.m&255;this.g=R(this,this.g,this.a[this.b])};e.wc=function(){this.j=this.a[this.c++]+this.m&255;this.h=this.i=this.a[this.j]=this.a[this.j]+1&255};
|
||||
e.Hd=function(){this.B|=8;this.v[97]=this.mb;this.v[101]=this.ob;this.v[105]=this.lb;this.v[109]=this.ib;this.v[113]=this.nb;this.v[117]=this.pb;this.v[121]=this.kb;this.v[125]=this.jb;this.v[225]=this.Cd;this.v[229]=this.Ed;this.v[233]=this.Bd;this.v[237]=this.yd;this.v[241]=this.Dd;this.v[245]=this.Fd;this.v[249]=this.Ad;this.v[253]=this.zd};
|
||||
e.Ua=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.Ad=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.g=R(this,this.g,this.a[this.b])};
|
||||
e.Ta=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.zd=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.g=R(this,this.g,this.a[this.b])};e.uc=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.a[this.j]=this.a[this.j]+1&255};
|
||||
e.Wd=function(){var a;a=this.a[this.c++];switch(a){case 0:this.F("HALT");M(this);break;case 1:a=this.c;for(var b="";a<this.a.length;){var c=this.a[a++];if(!c)break;b+=String.fromCharCode(c)}this.c=a;b=b.replace(/%A/g,p(this.g,2)).replace(/%X/g,p(this.m,2)).replace(/%Y/g,p(this.s,2));this.F(b);this.R=0;this.L-=this.G;this.G=0;break;default:this.c-=2,this.F("undefined opSim: 0x"+p(a,2)+" at "+("0x"+p(this.c,4))),M(this)}};
|
||||
e.l=function(){var a=this.a[--this.c];this.F("undefined opcode: 0x"+p(a,2)+" at "+("0x"+p(this.c,4)));M(this)};x(function(){for(var a=I(document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new na(d);H(d,c)}});
|
||||
function S(a){B.call(this,"C1PROM",a);this.b=this.a=null;this.c=a.size;if(this.g=a.image){a=this.g;var b;b=this.g;var c="",d=b.lastIndexOf(".");0<=d&&(c=b.substr(d+1).toLowerCase());b=c;"json"!=b&&"hex"!=b&&(a="http://"+(window?window.location.host:"www.pcjs.org")+"/api/v1/dump?file="+this.g+"&format=bytes");r(a,this,this.i)}}D(S);
|
||||
S.prototype.X=function(a,b,c,d){this.a=a;this.h=b;a=c-b+1;this.c||(this.c=a);a!=this.c?la(this,"computer-specified ROM size (0x"+p(a,4)+") does not match component-specified size ("+("0x"+p(this.c,4))+")"):(d&&(this.f=d,O(d,b,c,this,this.P)),za(this))};S.prototype.$=function(a){a&&!this.u.H&&(this.u.H=!0)};S.prototype.P=function(a,b){if(void 0!==b){var c=a-this.h;this.a[this.h+c]=this.b?this.b[c]:0}};
|
||||
S.prototype.i=function(a,b,c){if(c)this.F('Error loading ROM "'+a+'" ('+c+")");else{if("["==b.charAt(0)||"{"==b.charAt(0))try{var d=eval("("+b+")"),f=d.bytes;f?this.b=f:this.b=d}catch(g){this.F('Error processing ROM "'+a+'": '+g.message);return}else for(a=b.replace(/\n/gm," ").replace(/ +$/,"").split(" "),this.b=Array(a.length),b=0;b<a.length;b++)this.b[b]=parseInt(a[b],16);za(this)}};
|
||||
function za(a){if(!J(a))if(!a.g)a.N();else if(a.b&&a.a){var b=a.b.length;if(b!=a.c)la(a,"ROM image size (0x"+p(b,4)+") does not match component-specified size ("+("0x"+p(a.c,4))+")");else{for(var c=0;c<b;c++)a.a[a.h+c]=a.b[c];a.N()}}}x(function(){for(var a=I(document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new S(d);H(d,c)}});function Aa(a){B.call(this,"C1PRAM",a)}D(Aa);Aa.prototype.X=function(a){this.a=a;this.N()};
|
||||
x(function(){for(var a=I(document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Aa(d);H(d,c)}});
|
||||
function Ba(a){B.call(this,"C1PKeyboard",a);this.u.H=!1;this.ea=a.model;this.L=8;this.na=10;this.ma=13;this.O=27;this.ka=this.L;this.la=this.na;this.fa=this.ma;this.K=this.O;this.v=241;this.G=224;this.ia=3;this.ja=15;this.o=1;this.m=[];this.m["break"]=this.G;this.m.esc=this.K;this.m["ctrl-c"]=this.ia;this.m["ctrl-o"]=this.ja;this.b=[];this.b[49]=30464;this.b[33]=30704;this.b[50]=30208;this.b[34]=30448;this.b[51]=29952;this.b[35]=30192;this.b[52]=29696;this.b[36]=29936;this.b[53]=29440;this.b[37]=
|
||||
this.wa=function(a,b,c){this.F(a,"notice",c)}),!0;default:return!1}},log:function(){},F:function(){},status:function(a){this.F(this.Ca+": "+a)},wa:function(a,b){b||t(a)},N:function(a){this.u.qa||(this.u.va=!1!==a,this.u.va&&(a=this.xa,this.xa=null,a&&a()))}};function ma(a,b){if(a.u.Aa)return a.u.pa&&(a.u.pa=!1),a.u.Aa=!1;if(a.u.qa)return a.F(a.toString()+" error"),!1;a.u.pa=b;return a.u.pa}function J(a,b){b&&(a.u.va?b():a.xa=b);return a.u.va}function na(a,b){a.u.qa=!0;a.wa(b)}
|
||||
function K(a){B.call(this,"C1PPanel",a);this.u.H=!1}D(K);K.prototype.J=function(a,b,c,d){return this.I&&this.I.J(a,b,c,d)||this.f&&this.f.J(a,b,c,d)||this.b&&this.b.J(a,b,c,d)?!0:B.prototype.J.call(this,a,b,c,d)};K.prototype.$=function(a,b){a&&!this.u.H&&(this.u.H=!0,this.I=b,this.f=L(b,"cpu"),this.b=L(b,"keyboard"),oa())};function oa(){for(var a=!1,b=I(document,"c1pjs","panel"),c=0;c<b.length;c++){var d=b[c],f=G(d),g=F(f.id);g||(a=!0,g=new K(f));H(g,d);a&&g.N()}}y(oa);
|
||||
function pa(a){B.call(this,"C1PCPU",a);qa(this);this.u.H=!1;this.u.Z=!1;this.sa=a.autoStart;this.ia=0;this.Ba=2;this.speed=this.ia;this.oa=30;this.na=5;this.ea=8;this.ta=["Slow","Fast","Max"];this.cb=["(1Mhz)","(up to "+this.ea+"Mhz)","(unlimited)"];this.O=[];this.K=[];this.ja=65536;this.ka=0;this.Y=65536;this.ca=0;this.v=[this.Jb,this.bd,this.Ud,this.l,this.l,this.dd,this.zb,this.l,this.gd,this.ad,this.yb,this.l,this.l,this.Yc,this.wb,this.l,this.Ib,this.cd,this.l,this.l,this.l,this.ed,this.Ab,this.l,
|
||||
this.Mb,this.$c,this.l,this.l,this.l,this.Zc,this.xb,this.l,this.zc,this.sb,this.l,this.l,this.Fb,this.ub,this.nd,this.l,this.jd,this.rb,this.md,this.l,this.Eb,this.ob,this.kd,this.l,this.Gb,this.tb,this.l,this.l,this.l,this.vb,this.od,this.l,this.Ed,this.qb,this.l,this.l,this.l,this.pb,this.ld,this.l,this.ud,this.nc,this.l,this.l,this.l,this.pc,this.Vc,this.l,this.fd,this.mc,this.Uc,this.l,this.yc,this.jc,this.Sc,this.l,this.Kb,this.oc,this.l,this.l,this.l,this.qc,this.Wc,this.l,this.Ob,this.lc,
|
||||
this.l,this.l,this.l,this.kc,this.Tc,this.l,this.vd,this.Na,this.l,this.l,this.l,this.Pa,this.sd,this.l,this.hd,this.Ma,this.rd,this.l,this.xc,this.Ja,this.pd,this.l,this.Lb,this.Oa,this.l,this.l,this.l,this.Qa,this.td,this.l,this.Gd,this.La,this.l,this.l,this.l,this.Ka,this.qd,this.l,this.l,this.Kd,this.l,this.l,this.Sd,this.Md,this.Pd,this.l,this.ic,this.l,this.Yd,this.l,this.Rd,this.Hd,this.Od,this.l,this.Bb,this.Ld,this.l,this.l,this.Td,this.Nd,this.Qd,this.l,this.$d,this.Jd,this.Zd,this.l,this.l,
|
||||
this.Id,this.l,this.l,this.Pc,this.Ec,this.Kc,this.l,this.Qc,this.Gc,this.Lc,this.l,this.Wd,this.Dc,this.Vd,this.l,this.Nc,this.Ac,this.Ic,this.l,this.Cb,this.Fc,this.l,this.l,this.Rc,this.Hc,this.Mc,this.l,this.Pb,this.Cc,this.Xd,this.l,this.Oc,this.Bc,this.Jc,this.l,this.bc,this.Ub,this.l,this.l,this.cc,this.Wb,this.fc,this.l,this.wc,this.Tb,this.hc,this.l,this.ac,this.Qb,this.dc,this.l,this.Hb,this.Vb,this.l,this.l,this.l,this.Xb,this.gc,this.l,this.Nb,this.Sb,this.l,this.l,this.l,this.Rb,this.ec,
|
||||
this.l,this.Zb,this.Va,this.l,this.l,this.$b,this.Xa,this.tc,this.l,this.vc,this.Ua,this.Xc,this.l,this.Yb,this.Ra,this.rc,this.l,this.Db,this.Wa,this.l,this.l,this.l,this.Ya,this.uc,this.l,this.Fd,this.Ta,this.l,this.l,this.l,this.Sa,this.sc,this.l];this.bb=[7,6,0,0,0,3,5,0,3,2,2,0,0,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,3,6,0,0,3,3,5,0,4,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,5,0,3,2,2,0,3,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,5,0,4,2,2,0,5,4,6,0,2,5,0,0,0,4,6,0,2,
|
||||
4,0,0,0,4,7,0,0,6,0,0,3,3,3,0,2,0,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,0,4,0,0,2,6,2,0,3,3,3,0,2,2,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,4,4,4,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0]}D(pa);e=pa.prototype;e.reset=function(a){this.u.Z&&M(this);qa(this);this.c=this.a[65532]|this.a[65533]<<8;this.u.qa=!1;a&&(!0===this.sa||null===this.sa&&void 0===this.A.run)&&N(this)};
|
||||
e.J=function(a,b,c){a=!1;switch(b){case "run":this.A[b]=c;c.onclick=function(a){return function(){a.u.Z?M(a):N(a)}}(this);a=!0;break;case "A":case "X":case "Y":case "S":case "PC":case "C":case "Z":case "I":case "D":case "B":case "V":case "N":case "speed":this.A[b]=c;a=!0;break;case "setSpeed":this.A[b]=c,c.onclick=function(a){return function(){ra(a,2<=a.speed?a.ia:a.speed+1,!0)}}(this),a=!0}return a};e.X=function(a,b){this.a=a;(this.Ha=b)?t("unsupported CPU address buffer offset ("+this.Ha+")"):this.N()};
|
||||
e.$=function(a,b){if(a&&!this.u.H){this.I=b;var c=L(b,"video");c&&(this.za=function(a){return function(){sa(a)}}(c),this.da=function(a){return function(){a.da()}}(c));this.u.H=!0;this.reset(!0);this.update()}};function ta(a,b,c,d,f){0>ua(a.O,b,c,d,f)&&(a.ja>b&&(a.ja=b),a.ka<c&&(a.ka=c),a.O.push([b,c,d,f]))}function O(a,b,c,d,f){0>ua(a.K,b,c,d,f)&&(a.Y>b&&(a.Y=b),a.ca<c&&(a.ca=c),a.K.push([b,c,d,f]))}
|
||||
function ua(a,b,c,d,f){for(var g=0;g<a.length;g++)if(a[g][0]==b&&a[g][1]==c&&a[g][2]==d&&a[g][3]==f)return g;return-1}function ra(a,b,c){void 0!==b&&(a.speed=b,a.A.setSpeed&&(a.A.setSpeed.innerHTML=a.ta[2<=b?0:b+1]),a.F("running at "+a.ta[b].toLowerCase()+" speed "+a.cb[b]),c&&a.da());a.S=0;a.Ea=q();va(a)}e.za=function(){};e.da=function(){};function P(a,b,c,d){void 0!==a.A[b]&&(void 0===d&&(d=1),c="0000"+c.toString(16),a.A[b].innerHTML=c.slice(c.length-d).toUpperCase())}
|
||||
function wa(a){P(a,"A",a.g,2);P(a,"X",a.m,2);P(a,"Y",a.s,2);var b=xa(a);P(a,"C",b&1?1:0);P(a,"Z",b&2?1:0);P(a,"I",b&4?1:0);P(a,"D",b&8?1:0);P(a,"B",b&16?1:0);P(a,"V",b&64?1:0);P(a,"N",b&128?1:0);P(a,"S",a.o,4);P(a,"PC",a.c,4);a.A.speed&&a.ba&&(a.A.speed.innerHTML=a.ba.toFixed(1)+"Mhz")}
|
||||
function va(a,b){var c=30;c<a.oa&&(c=a.oa);c<a.na&&(c=a.na);var d=1;b&&a.speed>a.ia&&a.ba&&(d=a.ba);d>a.ea&&2>a.speed&&(d=a.ea);a.eb=Math.round(1E3/30);a.fa=Math.floor(1E6/c*d);a.la=Math.floor(1E6/30*d);a.Ga=Math.floor(1E6/a.oa*d);a.Fa=Math.floor(1E6/a.na*d);b||(a.R=a.la,a.U=a.Ga,a.T=a.Fa);a.ma=0}function ya(a){1E6<=a.ma&&va(a,!0);a.V=0;a.fb=q()}
|
||||
function za(a){var b=q(),c=a.eb;a.V&&(c=Math.round(c*a.V/a.la));c=c-(b-a.fb);if(b=b-a.Ea)a.ba=Math.round(a.S/(100*b))/10,864E5<=b&&ra(a);0>c?c=0:1==a.speed?a.ba<=a.ea&&(c=0):2==a.speed&&(c=0);a.ma+=a.V;return c}
|
||||
function N(a){if(ma(a,!0)){a.u.Z||(ra(a),a.I&&a.I.start(),a.u.Z=!0,a.A.run&&(a.A.run.innerHTML="Halt"),a.da());ya(a);try{do{a.step(a.fa);var b=a.L-a.G;a.S+=b;a.V+=b;a.L=a.G=0;a.U-=a.fa;0>=a.U&&(a.U+=a.Ga,a.za());a.T-=a.fa;0>=a.T&&(a.T+=a.Fa,wa(a));a.R-=a.fa;if(0>=a.R){a.R+=a.la;break}}while(a.u.Z)}catch(c){M(a);a.update();ma(a,!1);na(a,c.stack||c.message);return}setTimeout(function(a){return function(){N(a)}}(a),za(a))}else a.update(),a.I&&a.I.stop(a.Ea,a.S)}
|
||||
e.step=function(a){this.b=this.j=-1;this.L=this.G=a;do{a=this.a[this.c];this.c++;this.v[a].call(this);if(0<=this.b){if(this.b>=this.ja&&this.b<=this.ka)for(var b=this.b,c=this.c,d=0;d<this.O.length;d++)b>=this.O[d][0]&&b<=this.O[d][1]&&this.O[d][3].call(this.O[d][2],b,c);this.b=-1}else if(0<=this.j){if(this.j>=this.Y&&this.j<=this.ca)for(b=this.j,c=this.c,d=0;d<this.K.length;d++)b>=this.K[d][0]&&b<=this.K[d][1]&&this.K[d][3].call(this.K[d][2],b,c);this.j=-1}this.G-=this.bb[a]}while(0<this.G);return!0};
|
||||
function M(a){a.u.pa&&(a.u.Aa=!0);a.L-=a.G;a.G=0;a.u.Z&&(a.u.Z=!1,a.A.run&&(a.A.run.innerHTML="Run"))}e.update=function(){this.za();wa(this)};function Aa(a){return a.u.Z?a.S+a.L-a.G:0}e.W=function(a){return this.a[a]};e.P=function(a,b){this.a[a]=b};function xa(a){var b=a.f&256?1:0,b=b|(a.i&255?0:2),b=b|((a.w&255^a.C^a.w>>1)&128?64:0),b=b|(a.h&128?128:0);return a.B&60|b}
|
||||
function Q(a,b,c){var d=a.f&256?1:0,f=(b&15)+(c&15)+d;10<=f&&(f=f+6&15|16);f+=(b&240)+(c&240);a.C=b^c;a.w=f;a.h=f&255;160<=f&&(f+=96);512<=f&&(f-=256);a.f=f;a.i=b+c+d&255;a.G--;return f&255}function R(a,b,c){var d=a.f&256?0:1,f=(b&15)-(c&15)-d;0>f&&(f=(f-6&15)-16);f+=(b&240)-(c&240);0>f&&(f-=96);a.h=a.i=(a.f=b-c-d)&255;a.C=b^c;a.w=a.f;a.f^=256;a.G--;return f&255}function qa(a){a.g=0;a.m=0;a.s=0;a.o=256;a.B=0;a.h=0;a.i=0;a.C=0;a.w=0;a.f=0;a.c=0;a.b=-1;a.j=-1;a.ba=0;a.S=a.L=a.G=0}
|
||||
e.Jb=function(){this.c++;this.a[this.o--]=this.c>>8;this.o|=256;this.a[this.o--]=this.c&255;this.o|=256;this.B|=16;this.B=xa(this);this.a[this.o--]=this.B;this.o|=256;this.B&=239;this.b=65534;this.c=this.a[this.b]|this.a[this.b+1]<<8};e.bd=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.g|=this.a[this.b]};e.dd=function(){this.b=this.a[this.c++];this.h=this.i=this.g|=this.a[this.b]};
|
||||
e.zb=function(){this.j=this.a[this.c++];this.f=this.a[this.j]<<1;this.h=this.i=this.a[this.j]=this.f&255};e.gd=function(){this.B=xa(this);this.a[this.o--]=this.B;this.o|=256};e.ad=function(){this.b=this.c++;this.h=this.i=this.g|=this.a[this.b]};e.yb=function(){this.f=this.g<<1;this.h=this.i=this.g=this.f&255};e.Yc=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.g|=this.a[this.b]};
|
||||
e.wb=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.f=this.a[this.j]<<1;this.h=this.i=this.a[this.j]=this.f&255};e.Ib=function(){this.c+=(this.h&128?0:(this.G--,this.a[this.c]<<24>>24))+1};e.cd=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.h=this.i=this.g|=this.a[this.b]};e.ed=function(){this.b=this.a[this.c++]+this.m&255;this.h=this.i=this.g|=this.a[this.b]};
|
||||
e.Ab=function(){this.j=this.a[this.c++]+this.m&255;this.f=this.a[this.j]<<1;this.h=this.i=this.a[this.j]=this.f&255};e.Mb=function(){this.f=0};e.$c=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.h=this.i=this.g|=this.a[this.b]};e.Zc=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.g|=this.a[this.b]};e.xb=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.f=this.a[this.j]<<1;this.h=this.i=this.a[this.j]=this.f&255};
|
||||
e.zc=function(){this.b=this.c++;this.a[this.o--]=this.c>>8;this.o|=256;this.a[this.o--]=this.c&255;this.o|=256;this.c=this.a[this.b]|this.a[this.b+1]<<8};e.sb=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.g&=this.a[this.b]};e.Fb=function(){this.b=this.a[this.c++];this.i=this.g&this.a[this.b];this.h=this.h&127|this.a[this.b]&128;this.w=0;this.C=this.a[this.b]&64?128:0};e.ub=function(){this.b=this.a[this.c++];this.h=this.i=this.g&=this.a[this.b]};
|
||||
e.nd=function(){this.j=this.a[this.c++];this.f=this.f&65280|this.a[this.j];this.f<<=1;this.f=this.f&65534|(this.f&512?1:0);this.h=this.i=this.a[this.j]=this.f&255};e.jd=function(){this.o=this.o+1&255|256;this.B=this.a[this.o];this.f=this.B&1?256:0;this.i=this.B&2?0:1;this.h=this.B&128;this.w=0;this.C=this.B&64?128:0};e.rb=function(){this.b=this.c++;this.h=this.i=this.g&=this.a[this.b]};
|
||||
e.md=function(){this.f=this.f&65280|this.g;this.f<<=1;this.f=this.f&65534|(this.f&512?1:0);this.h=this.i=this.g=this.f&255};e.Eb=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.i=this.g&this.a[this.b];this.h=this.h&127|this.a[this.b]&128;this.w=0;this.C=this.a[this.b]&64?128:0};e.ob=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.g&=this.a[this.b]};
|
||||
e.kd=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.f=this.f&65280|this.a[this.j];this.f<<=1;this.f=this.f&65534|(this.f&512?1:0);this.h=this.i=this.a[this.j]=this.f&255};e.Gb=function(){this.c+=(this.h&128?(this.G--,this.a[this.c]<<24>>24):0)+1};e.tb=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.h=this.i=this.g&=this.a[this.b]};e.vb=function(){this.b=this.a[this.c++]+this.m&255;this.h=this.i=this.g&=this.a[this.b]};
|
||||
e.od=function(){this.j=this.a[this.c++]+this.m&255;this.f=this.f&65280|this.a[this.j];this.f<<=1;this.f=this.f&65534|(this.f&512?1:0);this.h=this.i=this.a[this.j]=this.f&255};e.Ed=function(){this.f=256};e.qb=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.h=this.i=this.g&=this.a[this.b]};e.pb=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.g&=this.a[this.b]};
|
||||
e.ld=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.f=this.f&65280|this.a[this.j];this.f<<=1;this.f=this.f&65534|(this.f&512?1:0);this.h=this.i=this.a[this.j]=this.f&255};e.ud=function(){this.o=this.o+1&255|256;this.B=this.a[this.o];this.f=this.B&1?256:0;this.i=this.B&2?0:1;this.h=this.B&128;this.w=0;this.C=this.B&64?128:0;this.o=this.o+2&255|256;this.c=this.a[this.o-1|256]|this.a[this.o]<<8};
|
||||
e.nc=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.g^=this.a[this.b]};e.pc=function(){this.b=this.a[this.c++];this.h=this.i=this.g^=this.a[this.b]};e.Vc=function(){this.j=this.a[this.c++];this.f=this.f&65279|(this.a[this.j]&1?256:0);this.a[this.j]=(this.f=this.f&65280|this.a[this.j]>>1)&255;this.h=this.i=this.f&255};e.fd=function(){this.a[this.o--]=this.g;this.o|=256};e.mc=function(){this.b=this.c++;this.h=this.i=this.g^=this.a[this.b]};
|
||||
e.Uc=function(){this.f=this.f&65279|(this.g&1?256:0);this.g=(this.f=this.f&65280|this.g>>1)&255;this.h=this.i=this.f&255};e.yc=function(){this.b=this.c;this.c=this.a[this.b]|this.a[this.b+1]<<8};e.jc=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.g^=this.a[this.b]};e.Sc=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.f=this.f&65279|(this.a[this.j]&1?256:0);this.a[this.j]=(this.f=this.f&65280|this.a[this.j]>>1)&255;this.h=this.i=this.f&255};
|
||||
e.Kb=function(){this.c+=((this.w&255^this.C^this.w>>1)&128?0:(this.G--,this.a[this.c]<<24>>24))+1};e.oc=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.h=this.i=this.g^=this.a[this.b]};e.qc=function(){this.b=this.a[this.c++]+this.m&255;this.h=this.i=this.g^=this.a[this.b]};e.Wc=function(){this.j=this.a[this.c++]+this.m&255;this.f=this.f&65279|(this.a[this.j]&1?256:0);this.a[this.j]=(this.f=this.f&65280|this.a[this.j]>>1)&255;this.h=this.i=this.f&255};
|
||||
e.Ob=function(){this.B&=251};e.lc=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.h=this.i=this.g^=this.a[this.b]};e.kc=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.g^=this.a[this.b]};e.Tc=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.f=this.f&65279|(this.a[this.j]&1?256:0);this.a[this.j]=(this.f=this.f&65280|this.a[this.j]>>1)&255;this.h=this.i=this.f&255};
|
||||
e.vd=function(){this.o=this.o+2&255|256;this.c=(this.a[this.o-1|256]|this.a[this.o]<<8)+1};e.Na=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};e.kb=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.g=Q(this,this.g,this.a[this.b])};
|
||||
e.Pa=function(){this.b=this.a[this.c++];this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};e.mb=function(){this.b=this.a[this.c++];this.g=Q(this,this.g,this.a[this.b])};e.sd=function(){this.j=this.a[this.c++];this.f=this.f&65280|this.a[this.j];this.f=this.f&65023|(this.f&1?512:0);this.f>>=1;this.h=this.i=this.a[this.j]=this.f&255};e.hd=function(){this.o=this.o+1&255|256;this.h=this.i=this.g=this.a[this.o]};
|
||||
e.Ma=function(){this.b=this.c++;this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};e.jb=function(){this.b=this.c++;this.g=Q(this,this.g,this.a[this.b])};e.rd=function(){this.f=this.f&65280|this.g;this.f=this.f&65023|(this.f&1?512:0);this.f>>=1;this.h=this.i=this.g=this.f&255};e.xc=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.c=this.a[this.b]|this.a[this.b+1]<<8};
|
||||
e.Ja=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};e.gb=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.g=Q(this,this.g,this.a[this.b])};e.pd=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.f=this.f&65280|this.a[this.j];this.f=this.f&65023|(this.f&1?512:0);this.f>>=1;this.h=this.i=this.a[this.j]=this.f&255};
|
||||
e.Lb=function(){this.c+=((this.w&255^this.C^this.w>>1)&128?(this.G--,this.a[this.c]<<24>>24):0)+1};e.Oa=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};e.lb=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.g=Q(this,this.g,this.a[this.b])};
|
||||
e.Qa=function(){this.b=this.a[this.c++]+this.m&255;this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};e.nb=function(){this.b=this.a[this.c++]+this.m&255;this.g=Q(this,this.g,this.a[this.b])};e.td=function(){this.j=this.a[this.c++]+this.m&255;this.f=this.f&65280|this.a[this.j];this.f=this.f&65023|(this.f&1?512:0);this.f>>=1;this.h=this.i=this.a[this.j]=this.f&255};e.Gd=function(){this.B|=4};
|
||||
e.La=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};e.ib=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.g=Q(this,this.g,this.a[this.b])};e.Ka=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.f=this.g+this.a[this.b]+(this.f&256?1:0);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255};
|
||||
e.hb=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.g=Q(this,this.g,this.a[this.b])};e.qd=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.f=this.f&65280|this.a[this.j];this.f=this.f&65023|(this.f&1?512:0);this.f>>=1;this.h=this.i=this.a[this.j]=this.f&255};e.Kd=function(){this.j=this.a[this.c++]+this.m&255;this.j=this.a[this.j]|this.a[this.j+1]<<8;this.a[this.j]=this.g};e.Sd=function(){this.j=this.a[this.c++];this.a[this.j]=this.s};
|
||||
e.Md=function(){this.j=this.a[this.c++];this.a[this.j]=this.g};e.Pd=function(){this.j=this.a[this.c++];this.a[this.j]=this.m};e.ic=function(){this.h=this.i=this.s=this.s-1&255};e.Yd=function(){this.h=this.i=this.g=this.m};e.Rd=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.a[this.j]=this.s};e.Hd=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.a[this.j]=this.g};e.Od=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.a[this.j]=this.m};
|
||||
e.Bb=function(){this.c+=(this.f&256?0:(this.G--,this.a[this.c]<<24>>24))+1};e.Ld=function(){this.j=this.a[this.c++];this.j=(this.a[this.j]|this.a[this.j+1]<<8)+this.s;this.a[this.j]=this.g};e.Td=function(){this.j=this.a[this.c++]+this.m&255;this.a[this.j]=this.s};e.Nd=function(){this.j=this.a[this.c++]+this.m&255;this.a[this.j]=this.g};e.Qd=function(){this.j=this.a[this.c++]+this.s&255;this.a[this.j]=this.m};e.$d=function(){this.h=this.i=this.g=this.s};
|
||||
e.Jd=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.a[this.j]=this.g};e.Zd=function(){this.o=this.m|256};e.Id=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.a[this.j]=this.g};e.Pc=function(){this.b=this.c++;this.h=this.i=this.s=this.a[this.b]};e.Ec=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.g=this.a[this.b]};e.Kc=function(){this.b=this.c++;this.h=this.i=this.m=this.a[this.b]};
|
||||
e.Qc=function(){this.b=this.a[this.c++];this.h=this.i=this.s=this.a[this.b]};e.Gc=function(){this.b=this.a[this.c++];this.h=this.i=this.g=this.a[this.b]};e.Lc=function(){this.b=this.a[this.c++];this.h=this.i=this.m=this.a[this.b]};e.Wd=function(){this.h=this.i=this.s=this.g};e.Dc=function(){this.b=this.c++;this.h=this.i=this.g=this.a[this.b]};e.Vd=function(){this.h=this.i=this.m=this.g};e.Nc=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.s=this.a[this.b]};
|
||||
e.Ac=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.g=this.a[this.b]};e.Ic=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.m=this.a[this.b]};e.Cb=function(){this.c+=(this.f&256?(this.G--,this.a[this.c]<<24>>24):0)+1};e.Fc=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.h=this.i=this.g=this.a[this.b]};e.Rc=function(){this.b=this.a[this.c++]+this.m&255;this.h=this.i=this.s=this.a[this.b]};
|
||||
e.Hc=function(){this.b=this.a[this.c++]+this.m&255;this.h=this.i=this.g=this.a[this.b]};e.Mc=function(){this.b=this.a[this.c++]+this.s&255;this.h=this.i=this.m=this.a[this.b]};e.Pb=function(){this.C=this.w=0};e.Cc=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.h=this.i=this.g=this.a[this.b]};e.Xd=function(){this.h=this.i=this.m=this.o&255};e.Oc=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.s=this.a[this.b]};
|
||||
e.Bc=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.g=this.a[this.b]};e.Jc=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.h=this.i=this.m=this.a[this.b]};e.bc=function(){this.b=this.c++;this.h=this.i=this.f=this.s-this.a[this.b];this.f^=256};e.Ub=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};
|
||||
e.cc=function(){this.b=this.a[this.c++];this.h=this.i=this.f=this.s-this.a[this.b];this.f^=256};e.Wb=function(){this.b=this.a[this.c++];this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};e.fc=function(){this.j=this.a[this.c++];this.h=this.i=this.a[this.j]=this.a[this.j]-1&255};e.wc=function(){this.h=this.i=this.s=this.s+1&255};e.Tb=function(){this.b=this.c++;this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};e.hc=function(){this.h=this.i=this.m=this.m-1&255};
|
||||
e.ac=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.f=this.s-this.a[this.b];this.f^=256};e.Qb=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};e.dc=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.a[this.j]=this.a[this.j]-1&255};e.Hb=function(){this.c+=(this.i&255?(this.G--,this.a[this.c]<<24>>24):0)+1};
|
||||
e.Vb=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};e.Xb=function(){this.b=this.a[this.c++]+this.m&255;this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};e.gc=function(){this.j=this.a[this.c++]+this.m&255;this.h=this.i=this.a[this.j]=this.a[this.j]-1&255};
|
||||
e.Nb=function(){this.B&=-9;this.v[97]=this.Na;this.v[101]=this.Pa;this.v[105]=this.Ma;this.v[109]=this.Ja;this.v[113]=this.Oa;this.v[117]=this.Qa;this.v[121]=this.La;this.v[125]=this.Ka;this.v[225]=this.Va;this.v[229]=this.Xa;this.v[233]=this.Ua;this.v[237]=this.Ra;this.v[241]=this.Wa;this.v[245]=this.Ya;this.v[249]=this.Ta;this.v[253]=this.Sa};e.Sb=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};
|
||||
e.Rb=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.f=this.g-this.a[this.b];this.f^=256};e.ec=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.a[this.j]=this.a[this.j]-1&255};e.Zb=function(){this.b=this.c++;this.h=this.i=this.f=this.m-this.a[this.b];this.f^=256};
|
||||
e.Va=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.Ad=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.g=R(this,this.g,this.a[this.b])};e.$b=function(){this.b=this.a[this.c++];this.h=this.i=this.f=this.m-this.a[this.b];this.f^=256};
|
||||
e.Xa=function(){this.b=this.a[this.c++];this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.Cd=function(){this.b=this.a[this.c++];this.g=R(this,this.g,this.a[this.b])};e.tc=function(){this.j=this.a[this.c++];this.h=this.i=this.a[this.j]=this.a[this.j]+1&255};e.vc=function(){this.h=this.i=this.m=this.m+1&255};
|
||||
e.Ua=function(){this.b=this.c++;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.zd=function(){this.b=this.c++;this.g=R(this,this.g,this.a[this.b])};e.Xc=function(){};e.Yb=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.f=this.m-this.a[this.b];this.f^=256};
|
||||
e.Ra=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.wd=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.g=R(this,this.g,this.a[this.b])};e.rc=function(){this.j=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.a[this.j]=this.a[this.j]+1&255};e.Db=function(){this.c+=(this.i&255?0:(this.G--,this.a[this.c]<<24>>24))+1};
|
||||
e.Wa=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.Bd=function(){this.b=this.a[this.c++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.s;this.g=R(this,this.g,this.a[this.b])};
|
||||
e.Ya=function(){this.b=this.a[this.c++]+this.m&255;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.Dd=function(){this.b=this.a[this.c++]+this.m&255;this.g=R(this,this.g,this.a[this.b])};e.uc=function(){this.j=this.a[this.c++]+this.m&255;this.h=this.i=this.a[this.j]=this.a[this.j]+1&255};
|
||||
e.Fd=function(){this.B|=8;this.v[97]=this.kb;this.v[101]=this.mb;this.v[105]=this.jb;this.v[109]=this.gb;this.v[113]=this.lb;this.v[117]=this.nb;this.v[121]=this.ib;this.v[125]=this.hb;this.v[225]=this.Ad;this.v[229]=this.Cd;this.v[233]=this.zd;this.v[237]=this.wd;this.v[241]=this.Bd;this.v[245]=this.Dd;this.v[249]=this.yd;this.v[253]=this.xd};
|
||||
e.Ta=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.yd=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.s;this.g=R(this,this.g,this.a[this.b])};
|
||||
e.Sa=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.f=this.g-this.a[this.b]-(this.f&256?0:1);this.C=this.g^this.a[this.b];this.w=this.f;this.h=this.i=this.g=this.f&255;this.f^=256};e.xd=function(){this.b=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.g=R(this,this.g,this.a[this.b])};e.sc=function(){this.j=(this.a[this.c++]|this.a[this.c++]<<8)+this.m;this.h=this.i=this.a[this.j]=this.a[this.j]+1&255};
|
||||
e.Ud=function(){var a;a=this.a[this.c++];switch(a){case 0:this.F("HALT");M(this);break;case 1:a=this.c;for(var b="";a<this.a.length;){var c=this.a[a++];if(!c)break;b+=String.fromCharCode(c)}this.c=a;b=b.replace(/%A/g,p(this.g,2)).replace(/%X/g,p(this.m,2)).replace(/%Y/g,p(this.s,2));this.F(b);this.R=0;this.L-=this.G;this.G=0;break;default:this.c-=2,this.F("undefined opSim: 0x"+p(a,2)+" at "+("0x"+p(this.c,4))),M(this)}};
|
||||
e.l=function(){var a=this.a[--this.c];this.F("undefined opcode: 0x"+p(a,2)+" at "+("0x"+p(this.c,4)));M(this)};y(function(){for(var a=I(document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new pa(d);H(d,c)}});
|
||||
function S(a){B.call(this,"C1PROM",a);this.b=this.a=null;this.c=a.size;if(this.g=a.image){a=this.g;var b=ba(this.g);"json"!=b&&"hex"!=b&&(a="http://"+(window?window.location.host:"www.pcjs.org")+"/api/v1/dump?file="+this.g+"&format=bytes");var c=this;r(a,function(a,b,g){Ba(c,a,b,g)})}}D(S);
|
||||
S.prototype.X=function(a,b,c,d){this.a=a;this.h=b;a=c-b+1;this.c||(this.c=a);a!=this.c?na(this,"computer-specified ROM size (0x"+p(a,4)+") does not match component-specified size ("+("0x"+p(this.c,4))+")"):(d&&(this.f=d,O(d,b,c,this,this.P)),Ca(this))};S.prototype.$=function(a){a&&!this.u.H&&(this.u.H=!0)};S.prototype.P=function(a,b){if(void 0!==b){var c=a-this.h;this.a[this.h+c]=this.b?this.b[c]:0}};
|
||||
function Ba(a,b,c,d){if(d)a.F('Error loading ROM "'+b+'" ('+d+")");else{if("["==c.charAt(0)||"{"==c.charAt(0))try{var f=eval("("+c+")"),g=f.bytes;g?a.b=g:a.b=f}catch(k){a.F('Error processing ROM "'+b+'": '+k.message);return}else for(b=c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.b=Array(b.length),c=0;c<b.length;c++)a.b[c]=parseInt(b[c],16);Ca(a)}}
|
||||
function Ca(a){if(!J(a))if(!a.g)a.N();else if(a.b&&a.a){var b=a.b.length;if(b!=a.c)na(a,"ROM image size (0x"+p(b,4)+") does not match component-specified size ("+("0x"+p(a.c,4))+")");else{for(var c=0;c<b;c++)a.a[a.h+c]=a.b[c];a.N()}}}y(function(){for(var a=I(document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new S(d);H(d,c)}});function Da(a){B.call(this,"C1PRAM",a)}D(Da);Da.prototype.X=function(a){this.a=a;this.N()};
|
||||
y(function(){for(var a=I(document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Da(d);H(d,c)}});
|
||||
function Ea(a){B.call(this,"C1PKeyboard",a);this.u.H=!1;this.ea=a.model;this.L=8;this.na=10;this.ma=13;this.O=27;this.ka=this.L;this.la=this.na;this.fa=this.ma;this.K=this.O;this.v=241;this.G=224;this.ia=3;this.ja=15;this.o=1;this.m=[];this.m["break"]=this.G;this.m.esc=this.K;this.m["ctrl-c"]=this.ia;this.m["ctrl-o"]=this.ja;this.b=[];this.b[49]=30464;this.b[33]=30704;this.b[50]=30208;this.b[34]=30448;this.b[51]=29952;this.b[35]=30192;this.b[52]=29696;this.b[36]=29936;this.b[53]=29440;this.b[37]=
|
||||
29680;this.b[54]=29184;this.b[38]=29424;this.b[55]=28928;this.b[39]=29168;this.b[56]=26368;this.b[40]=26608;this.b[57]=26112;this.b[41]=26352;this.b[48]=25856;this.b[58]=25600;this.b[42]=25840;this.b[45]=25344;this.b[61]=25584;this.b[46]=22272;this.b[62]=22512;this.b[108]=22016;this.b[76]=22256;this.b[92]=22256;this.b[111]=21760;this.b[79]=22E3;this.b[this.ka]=22E3;this.b[this.la]=21504;this.b[this.fa]=21248;this.b[119]=18176;this.b[87]=18416;this.b[101]=17920;this.b[69]=18160;this.b[114]=17664;this.b[82]=
|
||||
17904;this.b[116]=17408;this.b[84]=17648;this.b[121]=17152;this.b[89]=17392;this.b[117]=16896;this.b[85]=17136;this.b[105]=16640;this.b[73]=16880;this.b[115]=14080;this.b[83]=14320;this.b[100]=13824;this.b[68]=14064;this.b[102]=13568;this.b[70]=13808;this.b[103]=13312;this.b[71]=13552;this.b[104]=13056;this.b[72]=13296;this.b[106]=12800;this.b[74]=13040;this.b[107]=12544;this.b[75]=12784;this.b[91]=12784;this.b[120]=9984;this.b[88]=10224;this.b[99]=9728;this.b[67]=9968;this.b[118]=9472;this.b[86]=
|
||||
9712;this.b[98]=9216;this.b[66]=9456;this.b[110]=8960;this.b[78]=9200;this.b[94]=9200;this.b[109]=8704;this.b[77]=8944;this.b[93]=8944;this.b[44]=8448;this.b[60]=8688;this.b[113]=5888;this.b[81]=6128;this.b[97]=5632;this.b[65]=5872;this.b[122]=5376;this.b[90]=5616;this.b[32]=5120;this.b[47]=4864;this.b[63]=5104;this.b[59]=4608;this.b[43]=4848;this.b[112]=4352;this.b[80]=4592;this.b[64]=4592;this.b[this.v]=1536;this.b[this.K]=1280;this.b[240]=512;this.b[242]=256;this.b[244]=0;this.reset()}D(Ba);
|
||||
e=Ba.prototype;e.reset=function(){this.ra(this.ea);this.c=this.o;this.S=0;this.g=[this.o,0,0,0,0,0,0,0];this.w=[];if(this.h)for(var a in this.h)isNaN(+a)||this.h[a]&&clearTimeout(this.h[a]);this.h=[];this.ca=this.i=0;this.T=-1;this.R=this.g;this.V=this.C=0;this.j=""};
|
||||
e.J=function(a,b,c){if(void 0===this.A[b])switch(b){case "keyDown":return this.A[b]=c,c.onkeydown=function(a){return function(b){return Ca(a,b,!0)}}(this),!0;case "keyPress":return this.A[b]=c,c.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.j="";a.c&8?a.c&=-9:c=!T(a,b);return c}}(this),!0;case "keyUp":return this.A[b]=c,c.onkeyup=function(a){return function(b){return Ca(a,b,!1)}}(this),!0;case "break":return this.A[b]=c,c.onclick=function(a){return function(){a.I&&
|
||||
9712;this.b[98]=9216;this.b[66]=9456;this.b[110]=8960;this.b[78]=9200;this.b[94]=9200;this.b[109]=8704;this.b[77]=8944;this.b[93]=8944;this.b[44]=8448;this.b[60]=8688;this.b[113]=5888;this.b[81]=6128;this.b[97]=5632;this.b[65]=5872;this.b[122]=5376;this.b[90]=5616;this.b[32]=5120;this.b[47]=4864;this.b[63]=5104;this.b[59]=4608;this.b[43]=4848;this.b[112]=4352;this.b[80]=4592;this.b[64]=4592;this.b[this.v]=1536;this.b[this.K]=1280;this.b[240]=512;this.b[242]=256;this.b[244]=0;this.reset()}D(Ea);
|
||||
e=Ea.prototype;e.reset=function(){this.ra(this.ea);this.c=this.o;this.S=0;this.g=[this.o,0,0,0,0,0,0,0];this.w=[];if(this.h)for(var a in this.h)isNaN(+a)||this.h[a]&&clearTimeout(this.h[a]);this.h=[];this.ca=this.i=0;this.T=-1;this.R=this.g;this.V=this.C=0;this.j=""};
|
||||
e.J=function(a,b,c){if(void 0===this.A[b])switch(b){case "keyDown":return this.A[b]=c,c.onkeydown=function(a){return function(b){return Fa(a,b,!0)}}(this),!0;case "keyPress":return this.A[b]=c,c.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.j="";a.c&8?a.c&=-9:c=!T(a,b);return c}}(this),!0;case "keyUp":return this.A[b]=c,c.onkeyup=function(a){return function(b){return Fa(a,b,!1)}}(this),!0;case "break":return this.A[b]=c,c.onclick=function(a){return function(){a.I&&
|
||||
a.I.reset(!0)}}(this),!0;default:if(void 0!==this.m[b])return this.A[b]=c,c.onclick=function(a,b,c){return function(){a.f&&a.f.da();return!T(a,c)}}(this,b,this.m[b]),!0}return!1};e.X=function(a,b,c,d){this.a=a;this.Y=b;this.oa=c-b+1;this.sa=this.Y+this.oa;d&&(this.f=d,O(d,b,c,this,this.P));this.N()};e.ra=function(a){this.s=a;this.B=255;600!=this.s&&(this.B=0,this.F("updated keyboard model: "+this.s))};e.$=function(a,b){a&&!this.u.H&&(this.u.H=!0,this.I=b)};
|
||||
e.N=function(){this.U=(this.ta=u("iOS"))||u("Android");B.prototype.N.call(this)};function Da(a,b){var c=b?100:250;a.f&&a.f.ba&&(c/=a.f.ba);return c}function Ea(a,b){!a.i||void 0!==b&&b==a.i||(clearTimeout(a.h[a.i]),U(a,a.i,!1,4))}function V(a,b,c){a.j=b;Fa(a,c||300)}function Fa(a,b){if(0<a.j.length){var c=a.j.charCodeAt(0);10==c&&(c=13);65<=c&&90>=c&&(c+=32);a.j=a.j.substr(1);T(a,c)}0<a.j.length&&setTimeout(function(a){return function(){Fa(a,b)}}(a),b)}
|
||||
function Ca(a,b,c){var d,f=!c;b=b.keyCode;c&&(a.ca=b);16==b?(a.c&=-5,c&&(a.c|=4),b+=224,f=!1):18==b?(a.c&=-3,c&&(a.c|=2),b+=224,f=!1):b==a.v-224?(a.c&=-65,c&&(a.c|=64),b+=224,f=!1):20==b?(c=!c,a.c&=~a.o,c&&(a.c|=a.o),b+=224,f=!1):91==b?(a.c&=-9,c&&(a.c|=8),f=!1,d=!0):d=9==b?f=!1:b==a.O||b==a.L?c?!T(a,b):!1:!0;f&&(a.c&=-9,a.U||b!=a.ca||Ea(a));void 0===d&&(d=!U(a,b,c,2));return d}
|
||||
function T(a,b){var c=!1;b==a.G?a.I&&(a.I.reset(!0),c=!0):(a.U&&65<=b&&90>=b&&(b+=32),Ea(a,b),U(a,b,!0,0)&&(a.f.speed==a.f.Ba?U(a,b,!1,1):(c=!1,a.h[b]&&(clearTimeout(a.h[b]),c=!0),c=Da(a,c),a.h[a.i=b]=setTimeout(function(a){return function(){U(a,b,!1,3)}}(a),c)),c=!0));return c}
|
||||
function U(a,b,c,d){var f=!1;c||(a.h[b]=null,a.i==b&&(a.i=0));var g=0,k=a.b[b];void 0===k&&(1<=b&&26>=b&&(b+=64,g=a.v),k=a.b[b]);void 0!==k&&(b=k>>12,f=k>>8&15,g||(g=k&255),c?(a.g[b]|=1<<f,a.g[0]=g==a.v?a.g[0]|64:240==g?a.g[0]|4:242==g?a.g[0]|2:a.g[0]&-71):(a.g[b]&=~(1<<f),a.g[0]&=-71,a.g[0]|=a.c&70),c=0==d&&!a.w.length,a.w.push(a.g.slice()),Ga(a,c),f=!0);return f}e.W=function(){};e.P=function(a){this.S=this.f.W(a)^this.B;this.C++;Ga(this,!1,a)};
|
||||
function Ga(a,b,c){var d=ya(a.f);b||(a.f.speed==a.f.Ba?b=void 0!==c&&32<=a.C:(b=d-a.V,b=0>b||8192<=b));b&&(b=a.w.shift(),void 0!==b&&(a.R=b),a.C=0,a.V=d);for(b=d=0;8>b;b++)a.S&1<<b&&(d|=a.R[b]);d^=a.B;if(void 0!==c)a.a[c]=d;else if(c=a.Y,d!=a.T)for(;c<a.sa;c++)a.a[c]=d;a.T=d}x(function(){for(var a=I(document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Ba(d);H(d,c)}});
|
||||
function Ha(a,b,c,d){B.call(this,"C1PVideo",a);this.S=a.model;this.K=a.charCols;this.L=a.charRows;this.U=a.screenWidth;this.V=a.screenHeight;this.i=a.charWidth;this.j=a.charHeight;Ia(this);this.m=b;this.R=c;this.g=d}D(Ha);e=Ha.prototype;e.reset=function(a){this.ra(this.S);if(this.a)for(var b=this.v;b<this.B;b++)this.a[b]=a?Math.floor(256*Math.random()):32};e.J=function(a,b,c){switch(b){case "refresh":return this.A[b]=c,c.onclick=function(a){return function(){Ja(a);qa(a)}}(this),!0}return!1};
|
||||
e.X=function(a,b,c,d){this.a=a;this.v=b;this.T=c-b+1;this.B=this.v+this.T;d&&(this.f=d,ra(d,56832,56832,this,this.W),O(d,56832,56832,this,this.P));this.reset(!0)};function Ia(a,b,c,d,f){a.o=void 0!==b?b:a.K;a.Y=void 0!==c?c:a.L;a.c=a.o*a.Y;a.B=a.v+a.c;a.I=void 0!==d?d:0;a.O=void 0!==f?f:c;a.C=Math.floor(a.U/a.o);a.G=Math.floor(a.V/a.O)}e.da=function(){this.m.focus()};
|
||||
e.ra=function(a){this.s=a;600==this.s?(Ia(this,this.K,this.L,3,25),1024==this.c&&this.f&&(this.h=this.B+this.c-1,O(this.f,this.h,this.h,this,this.ab))):(this.F("updated video model: "+this.s),Ia(this,64,32));Ja(this);qa(this)};e.$=function(a,b){if(a&&!this.u.H&&J(this)){if(this.u.H=!0,this.b=L(b,"keyboard"))this.b.J("canvas","keyDown",this.m),this.b.J("canvas","keyPress",this.m),this.b.J("canvas","keyUp",this.m)}else!a&&this.u.H&&(this.u.H=!1)};
|
||||
e.N=function(){this.i||(this.i=Math.floor(this.g.width/16));this.j||(this.j=Math.floor(this.g.height/16));B.prototype.N.call(this)};e.W=function(a){var b=this.f.W(a);this.f.P(a,b&127|(Math.floor(ya(this.f)/8333)&1?128:0))};e.P=function(){};
|
||||
e.ab=function(a,b){if(void 0!==b){this.ra(540);this.b&&this.b.ra(542);var c=this.f,d=c.K,f=[],g=sa(d,this.h,this.h,this,this.ab);if(0<=g){f.push(d[g][0]);f.push(d[g][1]);d.splice(g,1);for(var k=65536,h=0,g=0;g<d.length;g++)k>d[g][0]&&(k=d[g][0]),h<d[g][1]&&(h=d[g][1]);f.push(k);f.push(h)}4==f.length&&(c.Y=f[2],c.ca=f[3])}};function Ja(a){a.w=Array(a.c);for(var b=0;b<=a.c;b++)a.w[b]=-1}
|
||||
function qa(a){var b=0;if(a.u.H)for(;b<a.c;){var c=a.a[a.v+b];if(a.w[b]!=c){var d=Math.floor(b/a.o);if(d>=a.I&&(d-=a.I,d<a.O)){var f=c*a.i;a.R.drawImage(a.g,f%a.g.width,Math.floor(f/a.g.width)*a.j,a.i,a.j,b%a.o*a.C,d*a.G,a.C,a.G)}a.w[b]=c}b++}}
|
||||
x(function(){for(var a=I(document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=G(c),f=document.createElement("canvas");if(void 0===f||!f.getContext){c.innerHTML="<br/>Missing <canvas> support. Please try a newer web browser.";break}f.setAttribute("class","c1pjs-canvas");f.setAttribute("width",d.screenWidth);f.setAttribute("height",d.screenHeight);f.setAttribute("contenteditable","true");f.setAttribute("autocapitalize","off");f.setAttribute("autocorrect","off");f.style.backgroundColor=d.screenColor;
|
||||
f.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(f.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,f,d.screenWidth,d.screenHeight));c.appendChild(f);var g=new Image,k=f.getContext("2d"),f=new Ha(d,f,k,g);g.onload=function(a){return function(){a.N()}}(f,d.charSet);g.src=d.charSet;H(f,c)}});
|
||||
function Ka(a){B.call(this,"C1PSerialPort",a);this.u.H=!1;this.s=a.demo;this.reset()}D(Ka);e=Ka.prototype;e.reset=function(){if(2!=this.c){this.h=this.j=0;var a=1;if(this.Da){var b=this.Da.match(/\d+/);null!==b&&(a=parseInt(b[0],10))}this.g='10 PRINT "HELLO OSI #'+a+'"\n';this.c=this.i=0}};e.start=function(){this.b&&this.s&&(V(this.b," C\n\n",3E3),setTimeout(function(a){return function(){a.c=1;V(a.b,"LOAD\n")}}(this),12E3));this.s=!1};
|
||||
e.J=function(a,b,c){var d=this;switch(b){case "listSerial":return this.A[b]=c,!0;case "loadSerial":return this.A[b]=c,c.onclick=function(){d.A.listSerial&&r(d.A.listSerial.value,d,d.Ia)},!0;case "mountSerial":return!u("Mobi")&&window&&"FileReader"in window?(this.A[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){var b=a.currentTarget[1].files[0],c=new FileReader;c.onload=function(){d.Ia(b.name,c.result.toString(),
|
||||
0)};c.readAsText(b);return!1}):c.parentNode.removeChild(c),!0}return!1};e.X=function(a,b,c,d){this.a=a;this.m=b;this.v=c-b+1;this.o=this.m+this.v;if(this.f=d)ra(d,b,c,this,this.W),O(d,b,c,this,this.P);this.N()};e.$=function(a,b){a&&!this.u.H&&(this.u.H=!0,this.I=b,this.b=L(b,"keyboard"))};
|
||||
e.Ia=function(a,b,c){b?(this.g=b,this.c=this.i=0,this.I&&this.b&&this.f.u.Z?(this.F("auto-loading "+a),this.f.da(),"."!=this.g.charAt(0)?(this.c=1,V(this.b,"NEW\nLOAD\n")):(this.c=2,this.I.reset(!0),V(this.b,"ML"))):this.F(a+" ready to load")):this.F(a+" load error ("+c+")")};e.W=function(a,b){void 0!==b&&(a&1?La(this):this.g&&!this.i&&La(this))};e.P=function(){};
|
||||
function La(a){if(void 0!==a.g){a.j=0;a.h=0;if(a.i<a.g.length){var b=a.g.charCodeAt(a.i++);10==b&&(b=13);a.j=b;a.h=1}else 1==a.c&&a.b&&V(a.b," \nRUN\n"),a.c=0;for(b=a.m+0;b<a.o;b+=2)a.a[b]=a.h?1:0;for(b=a.m+1;b<a.o;b+=2)a.a[b]=a.h?a.j:0}}x(function(){for(var a=I(document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Ka(d);H(d,c)}});function Ma(a){B.call(this,"C1PDiskController",a);this.u.H=!1;this.reset(!0)}D(Ma);e=Ma.prototype;
|
||||
e.reset=function(a){Na(this);this.b=-1;a&&(this.c=[],this.c[0]={ce:0,Ja:40,bb:!0,ha:20,aa:0,ga:-1,ua:[]})};
|
||||
function Na(a){a.v={D:64,read:function(){},update:function(a){return function(c){void 0!==c&&(this.D=c);a.j.D&4||W(a,0,this)}}(a)};a.g={D:255,read:function(){this.update()},update:function(a){return function(c){void 0===c?c=a.g.D:Oa(a,c,a.i.D);c=(c|190)&-2;if(0<=a.b&&a.c[a.b].ua.length){var d=a.c[a.b];d.bb&&(c&=-33);d.aa||(c&=-3);10>=--d.ha&&(0<d.ha?(c&=-129,Pa(a)):(d.ha=100,0<=a.b&&(a.c[a.b].ga=0,Qa(a))))}this.D=c;a.j.D&4&&W(a,0,this)}}(a)};a.j={D:0,read:function(){},update:function(a){return function(c){void 0!==
|
||||
c&&(this.D=c&-193);W(a,1,this);a.g.update();a.v.update()}}(a)};a.w={D:255,read:function(){},update:function(a){return function(c){void 0!==c&&(this.D=c);a.m.D&4||W(a,2,this)}}(a)};a.i={D:255,read:function(){},update:function(a){return function(c){void 0===c?c=a.i.D:Oa(a,a.g.D,c);if(0<=a.b&&a.b<a.c.length){var d=a.c[a.b];d.ua.length&&a.i.D&8&&!(c&8)&&(c&4?d.aa--:d.aa++,d.aa>=d.Ja&&(d.aa=d.Ja),0>d.aa&&(d.aa=0),d.ha=20,a.g.update(a.g.D|128),Pa(a))}this.D=c;a.m.D&4&&W(a,2,this)}}(a)};a.m={D:0,read:function(){},
|
||||
update:function(a){return function(c){void 0!==c&&(this.D=c&-193);W(a,3,this);a.i.update();a.w.update()}}(a)};a.B={D:0,read:function(){},update:function(a){return function(c){void 0!==c&&(3==(c&3)&&(a.h.D=14),this.D=c);a.h.update()}}(a)};a.h={D:14,read:function(){},update:function(a){return function(c){void 0===c&&(c=a.h.D);c&=-2;0<=a.b&&0<=a.c[a.b].ga&&(c|=1);this.D=c;W(a,16,this)}}(a)};a.o={D:0,read:function(a){return function(){Qa(a)}}(a),update:function(a){return function(c){void 0!==c&&(this.D=
|
||||
c);W(a,17,this)}}(a)};a.C={D:0,read:function(){},update:function(){return function(){}}(a)}}
|
||||
e.J=function(a,b,c){switch(b){case "listDisk":return this.A[b]=c,!0;case "loadDisk":return this.A[b]=c,c.onclick=function(a){return function(){if(a.A.listDisk){var b=a.A.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);var k=b,h=b.lastIndexOf("/");0<=h&&(k=b.substr(h+1));h=k.indexOf("&");0<h&&(k=k.substr(0,h));a.F("loading "+k+"...");r(c,a,a.hb)}}}(this),!0}return!1};
|
||||
e.X=function(a,b,c,d){this.a=a;this.s=b;if(this.f=d)ra(d,b,c,this,this.W),O(d,b,c,this,this.P);this.N()};e.$=function(a){a&&!this.u.H&&(this.u.H=!0)};
|
||||
e.hb=function(a,b,c){if(c)this.F("disk load error ("+c+")");else{c=[];this.F("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.F("data error: "+d[0]);else if(this.c[0]){for(b=0;b<d.length;b++){var f,g=d[b],k=g.sectors;if(void 0===(f=g.trackNum)||void 0===k)throw Error("track "+b+" missing data");f!=b&&t("track "+f+" out of order (expected "+b+")");c=[];var h,l,m;if(f){Ra(c,g,"trackSig");Sa(c,g);X(c,g,"trackType");for(var n=0;n<k.length;n++){h=
|
||||
k[n];l=h.sectorData;X(c,h,"sectorSig");X(c,h,"sectorNum");X(c,h,"sectorPages");for(m=0;m<l.length;m++)c.push(l[m]);Ra(c,h,"sectorEndSig")}}else for(h=k[0],l=h.sectorData,X(c,g,"trackLoad",2),X(c,h,"sectorPages"),m=0;m<l.length;m++)c.push(l[m]);d[f].$a=c}this.c[0].ua=d;this.F("mount of "+a+" complete")}else this.F("no available drives")}else this.F("no tracks: "+a);else this.F("no data: "+a)}catch(y){this.F("disk data error: "+y.message)}}};
|
||||
function Sa(a,b){var c=b.trackNum;if(void 0===c)throw Error("missing bcd value: trackNum");a.push(Math.floor(c/10)<<4|c%10)}function X(a,b,c,d){b=b[c];if(void 0===b)throw Error("missing binary value: "+c);2==d&&a.push(b>>8&255);a.push(b&255)}function Ra(a,b,c){b=b[c];if(void 0===b)throw Error("missing signature: "+c);for(c=0;c<b.length;c++)a.push(b.charCodeAt(c))}
|
||||
function Ta(a,b,c){b&=63;16>b?b&=3:32>b&&(b&=17);switch(b){case 0:a=a.j.D&4?a.g:a.v;break;case 1:a=a.j;break;case 2:a=a.m.D&4?a.i:a.w;break;case 3:a=a.m;break;case 16:a=c?a.B:a.h;break;case 17:a=a.o;break;default:a=a.C}return a}e.W=function(a,b){void 0!==b&&Ta(this,a-this.s,!1).read()};e.P=function(a,b){if(void 0!==b){var c=this.f.W(a);Ta(this,a-this.s,!0).update(c)}};function Oa(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&32||(d|=2),a.g.D&64||(d|=1));a.b!=d&&(a.b=d,a.h.update())}
|
||||
function Pa(a){0<=a.b&&(a.c[a.b].ga=-1,a.o.update(255),a.h.update())}function Qa(a){var b=null;if(0<=a.b){var b=a.c[a.b],c=b.ua[b.aa];void 0!==c&&(0<=b.ga&&b.ga<c.$a.length?(b.ha=100,b=c.$a[b.ga++],a.o.update(b),a.h.update()):(b.ha=10,Pa(a)))}}function W(a,b,c){a.f.P(b+a.s,c.D)}x(function(){for(var a=I(document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Ma(d);H(d,c)}});function Y(a,b){B.call(this,"C1PComputer",a);this.M=b}D(Y);
|
||||
e.N=function(){this.U=(this.ta=v("iOS"))||v("Android");B.prototype.N.call(this)};function Ga(a,b){var c=b?100:250;a.f&&a.f.ba&&(c/=a.f.ba);return c}function Ha(a,b){!a.i||void 0!==b&&b==a.i||(clearTimeout(a.h[a.i]),U(a,a.i,!1,4))}function V(a,b,c){a.j=b;Ia(a,c||300)}function Ia(a,b){if(0<a.j.length){var c=a.j.charCodeAt(0);10==c&&(c=13);65<=c&&90>=c&&(c+=32);a.j=a.j.substr(1);T(a,c)}0<a.j.length&&setTimeout(function(a){return function(){Ia(a,b)}}(a),b)}
|
||||
function Fa(a,b,c){var d,f=!c;b=b.keyCode;c&&(a.ca=b);16==b?(a.c&=-5,c&&(a.c|=4),b+=224,f=!1):18==b?(a.c&=-3,c&&(a.c|=2),b+=224,f=!1):b==a.v-224?(a.c&=-65,c&&(a.c|=64),b+=224,f=!1):20==b?(c=!c,a.c&=~a.o,c&&(a.c|=a.o),b+=224,f=!1):91==b?(a.c&=-9,c&&(a.c|=8),f=!1,d=!0):d=9==b?f=!1:b==a.O||b==a.L?c?!T(a,b):!1:!0;f&&(a.c&=-9,a.U||b!=a.ca||Ha(a));void 0===d&&(d=!U(a,b,c,2));return d}
|
||||
function T(a,b){var c=!1;b==a.G?a.I&&(a.I.reset(!0),c=!0):(a.U&&65<=b&&90>=b&&(b+=32),Ha(a,b),U(a,b,!0,0)&&(a.f.speed==a.f.Ba?U(a,b,!1,1):(c=!1,a.h[b]&&(clearTimeout(a.h[b]),c=!0),c=Ga(a,c),a.h[a.i=b]=setTimeout(function(a){return function(){U(a,b,!1,3)}}(a),c)),c=!0));return c}
|
||||
function U(a,b,c,d){var f=!1;c||(a.h[b]=null,a.i==b&&(a.i=0));var g=0,k=a.b[b];void 0===k&&(1<=b&&26>=b&&(b+=64,g=a.v),k=a.b[b]);void 0!==k&&(b=k>>12,f=k>>8&15,g||(g=k&255),c?(a.g[b]|=1<<f,a.g[0]=g==a.v?a.g[0]|64:240==g?a.g[0]|4:242==g?a.g[0]|2:a.g[0]&-71):(a.g[b]&=~(1<<f),a.g[0]&=-71,a.g[0]|=a.c&70),c=0==d&&!a.w.length,a.w.push(a.g.slice()),Ja(a,c),f=!0);return f}e.W=function(){};e.P=function(a){this.S=this.f.W(a)^this.B;this.C++;Ja(this,!1,a)};
|
||||
function Ja(a,b,c){var d=Aa(a.f);b||(a.f.speed==a.f.Ba?b=void 0!==c&&32<=a.C:(b=d-a.V,b=0>b||8192<=b));b&&(b=a.w.shift(),void 0!==b&&(a.R=b),a.C=0,a.V=d);for(b=d=0;8>b;b++)a.S&1<<b&&(d|=a.R[b]);d^=a.B;if(void 0!==c)a.a[c]=d;else if(c=a.Y,d!=a.T)for(;c<a.sa;c++)a.a[c]=d;a.T=d}y(function(){for(var a=I(document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Ea(d);H(d,c)}});
|
||||
function Ka(a,b,c,d){B.call(this,"C1PVideo",a);this.S=a.model;this.K=a.charCols;this.L=a.charRows;this.U=a.screenWidth;this.V=a.screenHeight;this.i=a.charWidth;this.j=a.charHeight;La(this);this.m=b;this.R=c;this.g=d}D(Ka);e=Ka.prototype;e.reset=function(a){this.ra(this.S);if(this.a)for(var b=this.v;b<this.B;b++)this.a[b]=a?Math.floor(256*Math.random()):32};e.J=function(a,b,c){switch(b){case "refresh":return this.A[b]=c,c.onclick=function(a){return function(){Ma(a);sa(a)}}(this),!0}return!1};
|
||||
e.X=function(a,b,c,d){this.a=a;this.v=b;this.T=c-b+1;this.B=this.v+this.T;d&&(this.f=d,ta(d,56832,56832,this,this.W),O(d,56832,56832,this,this.P));this.reset(!0)};function La(a,b,c,d,f){a.o=void 0!==b?b:a.K;a.Y=void 0!==c?c:a.L;a.c=a.o*a.Y;a.B=a.v+a.c;a.I=void 0!==d?d:0;a.O=void 0!==f?f:c;a.C=Math.floor(a.U/a.o);a.G=Math.floor(a.V/a.O)}e.da=function(){this.m.focus()};
|
||||
e.ra=function(a){this.s=a;600==this.s?(La(this,this.K,this.L,3,25),1024==this.c&&this.f&&(this.h=this.B+this.c-1,O(this.f,this.h,this.h,this,this.$a))):(this.F("updated video model: "+this.s),La(this,64,32));Ma(this);sa(this)};e.$=function(a,b){if(a&&!this.u.H&&J(this)){if(this.u.H=!0,this.b=L(b,"keyboard"))this.b.J("canvas","keyDown",this.m),this.b.J("canvas","keyPress",this.m),this.b.J("canvas","keyUp",this.m)}else!a&&this.u.H&&(this.u.H=!1)};
|
||||
e.N=function(){this.i||(this.i=Math.floor(this.g.width/16));this.j||(this.j=Math.floor(this.g.height/16));B.prototype.N.call(this)};e.W=function(a){var b=this.f.W(a);this.f.P(a,b&127|(Math.floor(Aa(this.f)/8333)&1?128:0))};e.P=function(){};
|
||||
e.$a=function(a,b){if(void 0!==b){this.ra(540);this.b&&this.b.ra(542);var c=this.f,d=c.K,f=[],g=ua(d,this.h,this.h,this,this.$a);if(0<=g){f.push(d[g][0]);f.push(d[g][1]);d.splice(g,1);for(var k=65536,h=0,g=0;g<d.length;g++)k>d[g][0]&&(k=d[g][0]),h<d[g][1]&&(h=d[g][1]);f.push(k);f.push(h)}4==f.length&&(c.Y=f[2],c.ca=f[3])}};function Ma(a){a.w=Array(a.c);for(var b=0;b<=a.c;b++)a.w[b]=-1}
|
||||
function sa(a){var b=0;if(a.u.H)for(;b<a.c;){var c=a.a[a.v+b];if(a.w[b]!=c){var d=Math.floor(b/a.o);if(d>=a.I&&(d-=a.I,d<a.O)){var f=c*a.i;a.R.drawImage(a.g,f%a.g.width,Math.floor(f/a.g.width)*a.j,a.i,a.j,b%a.o*a.C,d*a.G,a.C,a.G)}a.w[b]=c}b++}}
|
||||
y(function(){for(var a=I(document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=G(c),f=document.createElement("canvas");if(void 0===f||!f.getContext){c.innerHTML="<br/>Missing <canvas> support. Please try a newer web browser.";break}f.setAttribute("class","c1pjs-canvas");f.setAttribute("width",d.screenWidth);f.setAttribute("height",d.screenHeight);f.setAttribute("contenteditable","true");f.setAttribute("autocapitalize","off");f.setAttribute("autocorrect","off");f.style.backgroundColor=d.screenColor;
|
||||
f.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(f.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,f,d.screenWidth,d.screenHeight));c.appendChild(f);var g=new Image,k=f.getContext("2d"),f=new Ka(d,f,k,g);g.onload=function(a){return function(){a.N()}}(f,d.charSet);g.src=d.charSet;H(f,c)}});
|
||||
function Na(a){B.call(this,"C1PSerialPort",a);this.u.H=!1;this.s=a.demo;this.reset()}D(Na);e=Na.prototype;e.reset=function(){if(2!=this.c){this.h=this.j=0;var a=1;if(this.Da){var b=this.Da.match(/\d+/);null!==b&&(a=parseInt(b[0],10))}this.g='10 PRINT "HELLO OSI #'+a+'"\n';this.c=this.i=0}};e.start=function(){this.b&&this.s&&(V(this.b," C\n\n",3E3),setTimeout(function(a){return function(){a.c=1;V(a.b,"LOAD\n")}}(this),12E3));this.s=!1};
|
||||
e.J=function(a,b,c){var d=this;switch(b){case "listSerial":return this.A[b]=c,!0;case "loadSerial":return this.A[b]=c,c.onclick=function(){d.A.listSerial&&r(d.A.listSerial.value,function(a,b,c){Oa(d,a,b,c)})},!0;case "mountSerial":return!v("Mobi")&&window&&"FileReader"in window?(this.A[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){var b=a.currentTarget[1].files[0],c=new FileReader;c.onload=function(){Oa(d,
|
||||
b.name,c.result.toString(),0)};c.readAsText(b);return!1}):c.parentNode.removeChild(c),!0}return!1};e.X=function(a,b,c,d){this.a=a;this.m=b;this.v=c-b+1;this.o=this.m+this.v;if(this.f=d)ta(d,b,c,this,this.W),O(d,b,c,this,this.P);this.N()};e.$=function(a,b){a&&!this.u.H&&(this.u.H=!0,this.I=b,this.b=L(b,"keyboard"))};
|
||||
function Oa(a,b,c,d){c?(a.g=c,a.i=0,a.c=0,a.I&&a.b&&a.f.u.Z?(a.F("auto-loading "+b),a.f.da(),"."!=a.g.charAt(0)?(a.c=1,V(a.b,"NEW\nLOAD\n")):(a.c=2,a.I.reset(!0),V(a.b,"ML"))):a.F(b+" ready to load")):a.F(b+" load error ("+d+")")}e.W=function(a,b){void 0!==b&&(a&1?Pa(this):this.g&&!this.i&&Pa(this))};e.P=function(){};
|
||||
function Pa(a){if(void 0!==a.g){a.j=0;a.h=0;if(a.i<a.g.length){var b=a.g.charCodeAt(a.i++);10==b&&(b=13);a.j=b;a.h=1}else 1==a.c&&a.b&&V(a.b," \nRUN\n"),a.c=0;for(b=a.m+0;b<a.o;b+=2)a.a[b]=a.h?1:0;for(b=a.m+1;b<a.o;b+=2)a.a[b]=a.h?a.j:0}}y(function(){for(var a=I(document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Na(d);H(d,c)}});function Qa(a){B.call(this,"C1PDiskController",a);this.u.H=!1;this.reset(!0)}D(Qa);e=Qa.prototype;
|
||||
e.reset=function(a){Ra(this);this.b=-1;a&&(this.c=[],this.c[0]={ae:0,Ia:40,ab:!0,ha:20,aa:0,ga:-1,ua:[]})};
|
||||
function Ra(a){a.v={D:64,read:function(){},update:function(a){return function(c){void 0!==c&&(this.D=c);a.j.D&4||W(a,0,this)}}(a)};a.g={D:255,read:function(){this.update()},update:function(a){return function(c){void 0===c?c=a.g.D:Sa(a,c,a.i.D);c=(c|190)&-2;if(0<=a.b&&a.c[a.b].ua.length){var d=a.c[a.b];d.ab&&(c&=-33);d.aa||(c&=-3);10>=--d.ha&&(0<d.ha?(c&=-129,Ta(a)):(d.ha=100,0<=a.b&&(a.c[a.b].ga=0,Ua(a))))}this.D=c;a.j.D&4&&W(a,0,this)}}(a)};a.j={D:0,read:function(){},update:function(a){return function(c){void 0!==
|
||||
c&&(this.D=c&-193);W(a,1,this);a.g.update();a.v.update()}}(a)};a.w={D:255,read:function(){},update:function(a){return function(c){void 0!==c&&(this.D=c);a.m.D&4||W(a,2,this)}}(a)};a.i={D:255,read:function(){},update:function(a){return function(c){void 0===c?c=a.i.D:Sa(a,a.g.D,c);if(0<=a.b&&a.b<a.c.length){var d=a.c[a.b];d.ua.length&&a.i.D&8&&!(c&8)&&(c&4?d.aa--:d.aa++,d.aa>=d.Ia&&(d.aa=d.Ia),0>d.aa&&(d.aa=0),d.ha=20,a.g.update(a.g.D|128),Ta(a))}this.D=c;a.m.D&4&&W(a,2,this)}}(a)};a.m={D:0,read:function(){},
|
||||
update:function(a){return function(c){void 0!==c&&(this.D=c&-193);W(a,3,this);a.i.update();a.w.update()}}(a)};a.B={D:0,read:function(){},update:function(a){return function(c){void 0!==c&&(3==(c&3)&&(a.h.D=14),this.D=c);a.h.update()}}(a)};a.h={D:14,read:function(){},update:function(a){return function(c){void 0===c&&(c=a.h.D);c&=-2;0<=a.b&&0<=a.c[a.b].ga&&(c|=1);this.D=c;W(a,16,this)}}(a)};a.o={D:0,read:function(a){return function(){Ua(a)}}(a),update:function(a){return function(c){void 0!==c&&(this.D=
|
||||
c);W(a,17,this)}}(a)};a.C={D:0,read:function(){},update:function(){return function(){}}(a)}}e.J=function(a,b,c){switch(b){case "listDisk":return this.A[b]=c,!0;case "loadDisk":return this.A[b]=c,c.onclick=function(a){return function(){if(a.A.listDisk){var b=a.A.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.F("loading "+aa(b)+"...");r(c,function(b,c,f){Va(a,b,c,f)})}}}(this),!0}return!1};
|
||||
e.X=function(a,b,c,d){this.a=a;this.s=b;if(this.f=d)ta(d,b,c,this,this.W),O(d,b,c,this,this.P);this.N()};e.$=function(a){a&&!this.u.H&&(this.u.H=!0)};
|
||||
function Va(a,b,c,d){if(d)a.F("disk load error ("+d+")");else{d=[];a.F("mounting "+b+"...");try{if(d=eval("("+c+")"),d.length)if(d[0].length){var f=d[0];if(void 0===f[0].trackNum)a.F("data error: "+f[0]);else if(a.c[0]){for(c=0;c<f.length;c++){var g,k=f[c],h=k.sectors;if(void 0===(g=k.trackNum)||void 0===h)throw Error("track "+c+" missing data");g!=c&&t("track "+g+" out of order (expected "+c+")");d=[];var l,m,n;if(g){Wa(d,k,"trackSig");Xa(d,k);X(d,k,"trackType");for(var u=0;u<h.length;u++){l=h[u];
|
||||
m=l.sectorData;X(d,l,"sectorSig");X(d,l,"sectorNum");X(d,l,"sectorPages");for(n=0;n<m.length;n++)d.push(m[n]);Wa(d,l,"sectorEndSig")}}else for(l=h[0],m=l.sectorData,X(d,k,"trackLoad",2),X(d,l,"sectorPages"),n=0;n<m.length;n++)d.push(m[n]);f[g].Za=d}a.c[0].ua=f;a.F("mount of "+b+" complete")}else a.F("no available drives")}else a.F("no tracks: "+b);else a.F("no data: "+b)}catch(cb){a.F("disk data error: "+cb.message)}}}
|
||||
function Xa(a,b){var c=b.trackNum;if(void 0===c)throw Error("missing bcd value: trackNum");a.push(Math.floor(c/10)<<4|c%10)}function X(a,b,c,d){b=b[c];if(void 0===b)throw Error("missing binary value: "+c);2==d&&a.push(b>>8&255);a.push(b&255)}function Wa(a,b,c){b=b[c];if(void 0===b)throw Error("missing signature: "+c);for(c=0;c<b.length;c++)a.push(b.charCodeAt(c))}
|
||||
function Ya(a,b,c){b&=63;16>b?b&=3:32>b&&(b&=17);switch(b){case 0:a=a.j.D&4?a.g:a.v;break;case 1:a=a.j;break;case 2:a=a.m.D&4?a.i:a.w;break;case 3:a=a.m;break;case 16:a=c?a.B:a.h;break;case 17:a=a.o;break;default:a=a.C}return a}e.W=function(a,b){void 0!==b&&Ya(this,a-this.s,!1).read()};e.P=function(a,b){if(void 0!==b){var c=this.f.W(a);Ya(this,a-this.s,!0).update(c)}};function Sa(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&32||(d|=2),a.g.D&64||(d|=1));a.b!=d&&(a.b=d,a.h.update())}
|
||||
function Ta(a){0<=a.b&&(a.c[a.b].ga=-1,a.o.update(255),a.h.update())}function Ua(a){var b=null;if(0<=a.b){var b=a.c[a.b],c=b.ua[b.aa];void 0!==c&&(0<=b.ga&&b.ga<c.Za.length?(b.ha=100,b=c.Za[b.ga++],a.o.update(b),a.h.update()):(b.ha=10,Ta(a)))}}function W(a,b,c){a.f.P(b+a.s,c.D)}y(function(){for(var a=I(document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Qa(d);H(d,c)}});function Y(a,b){B.call(this,"C1PComputer",a);this.M=b}D(Y);
|
||||
Y.prototype.reset=function(a){var b=null,c;for(c in this.M)for(var d=0;d<this.M[c].length;d++){var f=this.M[c][d];f&&f.reset&&(f.reset(),"cpu"==c&&(b=f))}b&&(b.update(),a&&N(b))};Y.prototype.start=function(){for(var a in this.M)if("cpu"!=a)for(var b=0;b<this.M[a].length;b++){var c=this.M[a][b];c&&c.start&&c.start()}};Y.prototype.stop=function(a,b){for(var c in this.M)if("cpu"!=c)for(var d=0;d<this.M[c].length;d++){var f=this.M[c][d];f&&f.stop&&f.stop(a,b)}};
|
||||
Y.prototype.J=function(a,b,c){switch(b){case "reset":return this.A[b]=c,c.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function L(a,b){return a.M[b]?a.M[b][0]:null}function Ua(a){var b=null,c;for(c in a.M)for(var d=0;d<a.M[c].length;d++){var f=a.M[c][d];if(f){if(!J(f)){J(f,function(a){return function(){Ua(a)}}(a));return}"cpu"==c?b=f:f.$&&f.$(!0,a)}}a.N();a.F("C1Pjs v1.20.9\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>");b&&b.$(!0,a)}
|
||||
x(function(){for(var a=I(document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=G(c),f,g={},k,h=0,l=0,m=0;m<d.modules.length;m++){var n=d.modules[m];if(!m){if("cpu"!=n.type)break;h=n.start;l=n.end;k=Array(l+1-h);for(f=h;f<k.length;f++)k[f]=0}if(f=F(n.refID,d.id)){var y=n.type;void 0===g[y]&&(g[y]=[]);g[y].push(f);f.X&&void 0!==n.start&&f.X(k,n.start,n.end,g.cpu[0])}else{t('no component for <module refid="'+n.refID+'">');return}}if(void 0===k){t('<module type="cpu"> definition must appear first in the <computer> specification');
|
||||
break}if(f=F("debugger",d.id))g["debugger"]=[f],f.X&&f.X(k,h,l,g.cpu[0]);h=new Y(d,g);if(l=F("panel",d.id))if(g.panel=[l],l.ya){f=d.id;d=void 0;g=[];f&&(f=0<(d=f.indexOf("."))?f.substr(0,d+1):"");for(d=0;d<C.length;d++)m=C[d],f&&m.id.indexOf(f)||g.push(m);d=g;for(g=0;g<d.length;g++)f=d[g],f!=l&&(f.wa=l.wa,f.F=l.F,f.ya=l.ya)}H(h,c);Ua(h)}});var Z=0;function Va(a,b,c,d,f,g){f("Loading "+a+"...");r(a,null,function(k,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),g(h,null)):Wa(h,a,b,c,d,f,g)})}
|
||||
function Wa(a,b,c,d,f,g,k){function h(a,g){if(g)k(g,null);else{if(c){E[c]&&b&&(E[c][b]=a);var h=b;h&&0>h.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(h=window.location.pathname+h);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+h+'"}';"object"==typeof resources&&(h=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(h?' url="'+h+'"':""))}h=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,
|
||||
"")),window.ActiveXObject||"ActiveXObject"in window?(h=new window.ActiveXObject("Microsoft.XMLDOM"),h.async=!1,h.loadXML(a)):h=(new window.DOMParser).parseFromString(a,"text/xml")}catch(y){h=null,a=y.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,h)}}a?f?Xa(a,g,h):h(a,null):k("no data"+(b?" for file: "+b:""),null)}
|
||||
function Xa(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");r(f,null,function(g,k,h){if(h||!k)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(g=d[3])if(h=k.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(g);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=l&&(k=k.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+f);return}k=k.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],k);Xa(a,b,c)}})}else c(a,null)}
|
||||
function Ya(a,b,c){function d(a){if(void 0===k){var b=g&&I(g,"machine-warning");k=b&&b[0]||g}k&&(k.innerHTML=ba(a))}function f(a){d("Error: "+a);h&&(--Z||A(!0));h=!1}var g,k,h=!0;Z++;E[a]={};try{if(g=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var m=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css";n.styleSheet?n.styleSheet.cssText=l:n.appendChild(document.createTextNode(l));m.appendChild(n)}c||(c="/versions/c1pjs/1.20.9/components.xsl");
|
||||
l=function(h,k){k?Va(c,null,null,!1,d,function(h,l){if(l)if(E[a]&&c&&(E[a][c]=h),d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=k.transformNode(l);m?(g.outerHTML=m,--Z||A(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(l),(m=m.transformToFragment(k,document))?g.parentNode?(g.parentNode.replaceChild(m,g),--Z||A(!0)):f("invalid machine element: "+a):f("transformToFragment failed")):
|
||||
f("unable to transform XML: unsupported browser");else f(h)}):f(h)};"<"!=b.charAt(0)?Va(b,a,void 0,!0,d,l):Wa(b,null,a,void 0,!1,d,l)}else f("missing machine element: "+a)}catch(y){f(y.message)}return h}window.embedC1P=function(a,b,c){A(!1);return Ya(a,b,c)};window.enableEvents=A;window.sendEvent=ea;})();
|
||||
Y.prototype.J=function(a,b,c){switch(b){case "reset":return this.A[b]=c,c.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function L(a,b){return a.M[b]?a.M[b][0]:null}function Za(a){var b=null,c;for(c in a.M)for(var d=0;d<a.M[c].length;d++){var f=a.M[c][d];if(f){if(!J(f)){J(f,function(a){return function(){Za(a)}}(a));return}"cpu"==c?b=f:f.$&&f.$(!0,a)}}a.N();a.F("C1Pjs v1.20.9\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>");b&&b.$(!0,a)}
|
||||
y(function(){for(var a=I(document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=G(c),f,g={},k,h=0,l=0,m=0;m<d.modules.length;m++){var n=d.modules[m];if(!m){if("cpu"!=n.type)break;h=n.start;l=n.end;k=Array(l+1-h);for(f=h;f<k.length;f++)k[f]=0}if(f=F(n.refID,d.id)){var u=n.type;void 0===g[u]&&(g[u]=[]);g[u].push(f);f.X&&void 0!==n.start&&f.X(k,n.start,n.end,g.cpu[0])}else{t('no component for <module refid="'+n.refID+'">');return}}if(void 0===k){t('<module type="cpu"> definition must appear first in the <computer> specification');
|
||||
break}if(f=F("debugger",d.id))g["debugger"]=[f],f.X&&f.X(k,h,l,g.cpu[0]);h=new Y(d,g);if(l=F("panel",d.id))if(g.panel=[l],l.ya){f=d.id;d=void 0;g=[];f&&(f=0<(d=f.indexOf("."))?f.substr(0,d+1):"");for(d=0;d<C.length;d++)m=C[d],f&&m.id.indexOf(f)||g.push(m);d=g;for(g=0;g<d.length;g++)f=d[g],f!=l&&(f.wa=l.wa,f.F=l.F,f.ya=l.ya)}H(h,c);Za(h)}});var Z=0;function $a(a,b,c,d,f,g){f("Loading "+a+"...");r(a,function(k,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),g(h,null)):ab(h,a,b,c,d,f,g)})}
|
||||
function ab(a,b,c,d,f,g,k){function h(a,g){if(g)k(g,null);else{if(c){E[c]&&b&&(E[c][b]=a);var h=b;h&&0>h.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(h=window.location.pathname+h);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+h+'"}';"object"==typeof resources&&(h=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(h?' url="'+h+'"':""))}h=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,
|
||||
"")),window.ActiveXObject||"ActiveXObject"in window?(h=new window.ActiveXObject("Microsoft.XMLDOM"),h.async=!1,h.loadXML(a)):h=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){h=null,a=u.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,h)}}a?f?bb(a,g,h):h(a,null):k("no data"+(b?" for file: "+b:""),null)}
|
||||
function bb(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");r(f,function(g,k,h){if(h||!k)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(g=d[3])if(h=k.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(g);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=l&&(k=k.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+f);return}k=k.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],k);bb(a,b,c)}})}else c(a,null)}
|
||||
function db(a,b,c){function d(a){if(void 0===k){var b=g&&I(g,"machine-warning");k=b&&b[0]||g}k&&(k.innerHTML=da(a))}function f(a){d("Error: "+a);h&&(--Z||A(!0));h=!1}var g,k,h=!0;Z++;E[a]={};try{if(g=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var m=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css";n.styleSheet?n.styleSheet.cssText=l:n.appendChild(document.createTextNode(l));m.appendChild(n)}c||(c="/versions/c1pjs/1.20.9/components.xsl");
|
||||
l=function(h,k){k?$a(c,null,null,!1,d,function(h,l){if(l)if(E[a]&&c&&(E[a][c]=h),d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=k.transformNode(l);m?(g.outerHTML=m,--Z||A(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(l),(m=m.transformToFragment(k,document))?g.parentNode?(g.parentNode.replaceChild(m,g),--Z||A(!0)):f("invalid machine element: "+a):f("transformToFragment failed")):
|
||||
f("unable to transform XML: unsupported browser");else f(h)}):f(h)};"<"!=b.charAt(0)?$a(b,a,void 0,!0,d,l):ab(b,null,a,void 0,!1,d,l)}else f("missing machine element: "+a)}catch(u){f(u.message)}return h}window.embedC1P=function(a,b,c){A(!1);return db(a,b,c)};window.enableEvents=A;window.sendEvent=ga;})();
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue