Implemented my first 4 PDP-10 opcodes (HLL, HLLI, HLLM, HLLS)
This commit is contained in:
parent
0451774bc6
commit
ed4c031035
6 changed files with 1428 additions and 1371 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -174,6 +174,7 @@ class CPUStatePDP10 extends CPUPDP10 {
|
|||
*/
|
||||
initCPU()
|
||||
{
|
||||
this.regOP = 0;
|
||||
this.regEA = 0;
|
||||
this.regPC = this.lastPC = this.addrReset;
|
||||
|
||||
|
|
@ -276,6 +277,7 @@ class CPUStatePDP10 extends CPUPDP10 {
|
|||
{
|
||||
var state = new State(this);
|
||||
state.set(0, [
|
||||
this.regOP,
|
||||
this.regEA,
|
||||
this.regPC,
|
||||
this.lastPC,
|
||||
|
|
@ -303,6 +305,7 @@ class CPUStatePDP10 extends CPUPDP10 {
|
|||
* of what save() does when it collects a bunch of object properties into an array.
|
||||
*/
|
||||
[
|
||||
this.regOP,
|
||||
this.regEA,
|
||||
this.regPC,
|
||||
this.lastPC,
|
||||
|
|
@ -324,8 +327,7 @@ class CPUStatePDP10 extends CPUPDP10 {
|
|||
* getOpcode()
|
||||
*
|
||||
* This fetches the next opcode, decodes the low 23 bits (I,X,Y), sets regEA, and returns the
|
||||
* the high 18 bits for further decoding. While it's true that, in general, only the high 13 bits
|
||||
* are relevant to the operation, it's cleaner to treat the original opcode as two half-words.
|
||||
* the high 13 bits for further decoding.
|
||||
*
|
||||
* @this {CPUStatePDP10}
|
||||
* @return {number}
|
||||
|
|
@ -333,9 +335,9 @@ class CPUStatePDP10 extends CPUPDP10 {
|
|||
getOpcode()
|
||||
{
|
||||
var pc = this.lastPC = this.regPC;
|
||||
var opCode = this.readWord(pc);
|
||||
var r = this.regOP = this.readWord(pc);
|
||||
this.regPC = (pc + 1) % PDP10.ADDR_LIMIT;
|
||||
var e, x, r = opCode, nMaxIndirect = 4;
|
||||
var e, x, nMaxIndirect = 4;
|
||||
while (true) {
|
||||
/*
|
||||
* Bits 0-22 (I,X,Y) contain what we call a "reference address" (R), which is used to calculate the
|
||||
|
|
@ -360,7 +362,7 @@ class CPUStatePDP10 extends CPUPDP10 {
|
|||
r = this.readWord(e);
|
||||
}
|
||||
this.regEA = e;
|
||||
return (opCode / PDP10.ADDR_LIMIT)|0;
|
||||
return (this.regOP / PDP10.OPCODE.ACSHIFT)|0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -807,8 +809,8 @@ class CPUStatePDP10 extends CPUPDP10 {
|
|||
|
||||
this.opFlags &= PDP10.OPFLAG.PRESERVE;
|
||||
|
||||
var opCode = this.getOpcode();
|
||||
this.opDecode(opCode);
|
||||
var op = this.getOpcode();
|
||||
this.opDecode(op);
|
||||
|
||||
} while (this.nStepCycles > 0);
|
||||
|
||||
|
|
|
|||
|
|
@ -1326,7 +1326,7 @@ class DebuggerPDP10 extends Debugger {
|
|||
*/
|
||||
if (!nState) {
|
||||
opCode = this.cpu.readWord(addr);
|
||||
if ((opCode >> PDP10.OPCODE.FNSHIFT) == PDP10.OPCODE.HALT && this.cpu.getLastPC() == addr) {
|
||||
if ((opCode >> PDP10.OPCODE.A_SHIFT) == PDP10.OPCODE.HALT && this.cpu.getLastPC() == addr) {
|
||||
addr = this.cpu.advancePC(1);
|
||||
}
|
||||
}
|
||||
|
|
@ -1420,7 +1420,7 @@ class DebuggerPDP10 extends Debugger {
|
|||
if (opMask == PDP10.OPCODE.OPIO) {
|
||||
sOperation += this.toStrBase((opCode / PDP10.OPCODE.IOSHIFT) & PDP10.OPCODE.IOMASK, -1);
|
||||
} else {
|
||||
sOperation += this.toStrBase((opCode >> PDP10.OPCODE.FNSHIFT) & PDP10.OPCODE.FNMASK, -1);
|
||||
sOperation += this.toStrBase((opCode >> PDP10.OPCODE.A_SHIFT) & PDP10.OPCODE.A_MASK, -1);
|
||||
}
|
||||
sOperation += ',';
|
||||
if (opCode & PDP10.OPCODE.I_BIT) sOperation += '@';
|
||||
|
|
|
|||
|
|
@ -100,6 +100,7 @@ var PDP10 = {
|
|||
ADDR_MASK: Math.pow(2, 18) - 1,
|
||||
DATA_INVALID: -1,
|
||||
DATA_LIMIT: Math.pow(2, 36),
|
||||
RHWORD_MASK: 0o777777,
|
||||
|
||||
/*
|
||||
* PDP-10 opcodes are 36-bit values, most of which use the following layout:
|
||||
|
|
@ -142,10 +143,11 @@ var PDP10 = {
|
|||
OPIO: 0o70034, // input-output operation
|
||||
OPUUO: 0o70000, // unimplemented user operation (UUO) mask
|
||||
OPSHIFT: Math.pow(2, 21), // operation shift
|
||||
FNSHIFT: 23, // accumulator/function shift
|
||||
FNMASK: 0o17, // accumulator/function mask (after shift)
|
||||
IOSHIFT: Math.pow(2, 26), // input-output device code shift
|
||||
IOMASK: 0o177, // input-output device code mask (after shift)
|
||||
ACSHIFT: Math.pow(2, 23), // used to isolate the high 13 bits, with A starting at bit 0
|
||||
A_SHIFT: 23, // A shift
|
||||
A_MASK: 0o17, // A mask (after shift)
|
||||
I_BIT: 0o20000000, // indirect bit
|
||||
X_SHIFT: 18, // X shift
|
||||
X_MASK: 0o17, // X mask (after shift)
|
||||
|
|
|
|||
|
|
@ -29,21 +29,21 @@
|
|||
http://pcjs.org/modules/pdp10/lib/debugger.js (C) Jeff Parsons 2012-2017
|
||||
*/
|
||||
var l,aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},ba="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this;function ca(){ca=function(){};ba.Symbol||(ba.Symbol=da)}var ea=0;function da(a){return"jscomp_symbol_"+(a||"")+ea++}
|
||||
function fa(){ca();var a=ba.Symbol.iterator;a||(a=ba.Symbol.iterator=ba.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ia(this)}});fa=function(){}}function ia(a){var b=0;return ja(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function ja(a){fa();a={next:a};a[ba.Symbol.iterator]=function(){return this};return a}
|
||||
function ha(){ca();var a=ba.Symbol.iterator;a||(a=ba.Symbol.iterator=ba.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ia(this)}});ha=function(){}}function ia(a){var b=0;return ja(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function ja(a){ha();a={next:a};a[ba.Symbol.iterator]=function(){return this};return a}
|
||||
function p(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}function ka(a,b){if(b){var c=ba;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];e in c||(c[e]={});c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&aa(c,a,{configurable:!0,writable:!0,value:b})}}
|
||||
ka("Math.trunc",function(a){return a?a:function(a){a=Number(a);if(isNaN(a)||Infinity===a||-Infinity===a||!a)return a;var b=Math.floor(Math.abs(a));return 0>a?-b:b}});ka("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}});
|
||||
var la=Math.pow(2,36),ma=-Math.pow(2,35),q={Yb:0,mb:1,$b:2,ac:3,bc:4,cc:5,dc:6,ec:7,Wa:8,fc:9,nb:10,gc:11,hc:12,ob:13,ic:14,jc:15,kc:16,lc:17,mc:18,nc:19,oc:20,pc:21,qc:22,rc:23,sc:24,tc:25,uc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Va:65,Xb:66,Zb:67,vc:68,E:69,wc:70,xc:71,yc:72,zc:73,Ac:74,Bc:75,Cc:76,Dc:77,Ec:78,Fc:79,Gc:80,Q:81,
|
||||
Hc:82,Ic:83,Jc:84,Kc:85,Lc:86,Mc:87,Nc:88,Oc:89,sb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Pc:97,Qc:98,Rc:99,d:100,e:101,Sc:102,Tc:103,Uc:104,Vc:105,Wc:106,k:107,Xc:108,Yc:109,n:110,Zc:111,p:112,q:113,r:114,$c:115,t:116,bd:117,cd:118,dd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,pb:127};
|
||||
function t(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.$a=b.comment;this.rb=b;this.exports={};this.F=this.bindings={};a=this.id.indexOf(".");0>a?this.Ja=this.id:(this.Ka=this.id.substr(0,a),this.Ja=this.id.substr(a+1));this.j={ready:!1,Da:!1,Sa:!1,T:!1,error:!1};this.Ma=null;this.j.error=!1;this.V=c||0;this.A=this.g=this.C=this.D=this.ja=null;v.push(this)}function ta(a,b,c){ua[a]&&b&&(ua[a][b]=c)}function va(){return Date.now()||+new Date}
|
||||
var la=Math.pow(2,36),ma=-Math.pow(2,35),q={Zb:0,nb:1,ac:2,bc:3,cc:4,dc:5,ec:6,fc:7,Xa:8,gc:9,ob:10,hc:11,ic:12,pb:13,jc:14,kc:15,lc:16,mc:17,nc:18,oc:19,pc:20,qc:21,rc:22,sc:23,tc:24,uc:25,vc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Wa:65,Yb:66,$b:67,wc:68,E:69,xc:70,yc:71,zc:72,Ac:73,Bc:74,Cc:75,Dc:76,Ec:77,Fc:78,Gc:79,Hc:80,Q:81,
|
||||
Ic:82,Jc:83,Kc:84,Lc:85,Mc:86,Nc:87,Oc:88,Pc:89,tb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Qc:97,Rc:98,Sc:99,d:100,e:101,Tc:102,Uc:103,Vc:104,Wc:105,Xc:106,k:107,Yc:108,Zc:109,n:110,$c:111,p:112,q:113,r:114,ad:115,t:116,cd:117,dd:118,ed:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,qb:127};
|
||||
function t(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.ab=b.comment;this.sb=b;this.exports={};this.F=this.bindings={};a=this.id.indexOf(".");0>a?this.Ja=this.id:(this.Ka=this.id.substr(0,a),this.Ja=this.id.substr(a+1));this.j={ready:!1,Ea:!1,Ta:!1,T:!1,error:!1};this.Ma=null;this.j.error=!1;this.V=c||0;this.A=this.g=this.C=this.D=this.ka=null;v.push(this)}function ta(a,b,c){ua[a]&&b&&(ua[a][b]=c)}function va(){return Date.now()||+new Date}
|
||||
function w(a){window&&window.alert(a)}function wa(a){var b=!1;window&&(b=window.confirm(a));return b}function x(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<v.length;b++){var d=v[b];a&&d.id.indexOf(a)||c.push(d)}return c}function xa(a){if(void 0!==a){var b;for(b=0;b<v.length;b++)if(v[b].id===a)return v[b]}return null}
|
||||
function y(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<v.length;d++)if(c)c==v[d]&&(c=null);else if(!(a!=v[d].type||b&&v[d].id.indexOf(b)))return v[d]}return null}function A(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){w(c.message+" ("+a+")")}return b}
|
||||
function ya(a,b){var c=B;b=C(b.parentNode,c+"-control");for(var d=0;d<b.length;d++)for(var e=b[d].childNodes,f=0;f<e.length;f++){var g=e[f];if(1===g.nodeType){var h=g.getAttribute("class");if(h)for(var k=h.split(" "),m=0;m<k.length;m++)switch(h=k[m],h){case c+"-binding":(h=A(g))&&h.binding&&a.da(h.type,h.binding,g,h.value),m=k.length}}}}
|
||||
function ya(a,b){var c=B;b=C(b.parentNode,c+"-control");for(var d=0;d<b.length;d++)for(var e=b[d].childNodes,f=0;f<e.length;f++){var g=e[f];if(1===g.nodeType){var h=g.getAttribute("class");if(h)for(var k=h.split(" "),m=0;m<k.length;m++)switch(h=k[m],h){case c+"-binding":(h=A(g))&&h.binding&&a.ea(h.type,h.binding,g,h.value),m=k.length}}}}
|
||||
function C(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
||||
function za(a){for(var b=!0,c=Aa[a];c&&c.length;){var d=c.splice(0,1)[0],e=d[0],f=null;0<=Ba.indexOf(e)&&(f=function(){return function(){za(a)}}());var g=Ca[e];if(g)if(!f)b=g(d[1],d[2],d[3]);else{if(!g(f,d[1],d[2],d[3]))break}else{var b=!1,h=y(d[1],a);if(h)if(g=Ea[e])b=g(h,d[2],d[3]);else{var k=h.exports;if(k&&(g=k[e]))if(b=!0,!f)b=g.call(h,d[2],d[3]);else if(!g.call(h,f,d[2],d[3]))break}}if(!b){w("Script error: "+e+(g?" failed":" unrecognized"));break}}c&&!c.length&&delete Aa[a];return b}l=t.prototype;
|
||||
l.toString=function(){return this.name?this.name:this.id||this.type};
|
||||
l.da=function(a,b,c){switch(b){case "clear":return this.F[b]||(this.F[b]=c,c.onclick=function(a){return function(){a.F.print&&(a.F.print.value="")}}(this)),!0;case "print":return this.F[b]||(this.ja=this.F[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.Y=function(a){this.f(a,this.Ja)}),!0;default:return!1}};l.log=function(){};l.f=function(){};
|
||||
l.status=function(a){this.f(this.Ja+": "+a)};l.Y=function(a,b,c){c=c||this.type;b||w((c?c+": ":"")+a)};function Ka(a,b){a.j.error=!0;a.Y(b)}function La(a){return a.j.error?(a.f(a.toString()+" error"),!0):!1}function Ma(a,b){b&&(a.j.ready?b():a.Ma=b);return a.j.ready}function D(a){if(!a.j.error&&(a.j.ready=!0,a.j.ready)){var b=a.Ma;a.Ma=null;b&&b()}}function Na(a,b){a.j.Da&&(b?a.j.Sa=!0:void 0===b&&a.f(a.toString()+" busy"));return a.j.Da}
|
||||
function Oa(a,b){if(a.j.Sa)return a.j.Da=!1,a.j.Sa=!1;if(a.j.error)return a.f(a.toString()+" error"),!1;a.j.Da=b;return a.j.Da}l.la=function(){return this.j.T=!0};l.ca=function(a,b){b&&(this.j.T=!1);return!0};function Pa(a,b){if(a.A){a===a.A?b|=0:b=b||a.V;var c=a.A.V&b;return!!b&&c===b||!!(c&a.A.fb)}return!1}function E(a,b,c,d){a.A&&(!0===c||Pa(a,c|0))&&a.A.message(b,d)}
|
||||
l.ea=function(a,b,c){switch(b){case "clear":return this.F[b]||(this.F[b]=c,c.onclick=function(a){return function(){a.F.print&&(a.F.print.value="")}}(this)),!0;case "print":return this.F[b]||(this.ka=this.F[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.Y=function(a){this.f(a,this.Ja)}),!0;default:return!1}};l.log=function(){};l.f=function(){};
|
||||
l.status=function(a){this.f(this.Ja+": "+a)};l.Y=function(a,b,c){c=c||this.type;b||w((c?c+": ":"")+a)};function Ka(a,b){a.j.error=!0;a.Y(b)}function La(a){return a.j.error?(a.f(a.toString()+" error"),!0):!1}function Ma(a,b){b&&(a.j.ready?b():a.Ma=b);return a.j.ready}function D(a){if(!a.j.error&&(a.j.ready=!0,a.j.ready)){var b=a.Ma;a.Ma=null;b&&b()}}function Na(a,b){a.j.Ea&&(b?a.j.Ta=!0:void 0===b&&a.f(a.toString()+" busy"));return a.j.Ea}
|
||||
function Oa(a,b){if(a.j.Ta)return a.j.Ea=!1,a.j.Ta=!1;if(a.j.error)return a.f(a.toString()+" error"),!1;a.j.Ea=b;return a.j.Ea}l.ma=function(){return this.j.T=!0};l.da=function(a,b){b&&(this.j.T=!1);return!0};function Pa(a,b){if(a.A){a===a.A?b|=0:b=b||a.V;var c=a.A.V&b;return!!b&&c===b||!!(c&a.A.gb)}return!1}function E(a,b,c,d){a.A&&(!0===c||Pa(a,c|0))&&a.A.message(b,d)}
|
||||
window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]),window.PCjs.Commands||(window.PCjs.Commands={}));
|
||||
var ua=window?window.PCjs.Machines:{},v=window?window.PCjs.Components:[],Aa=window?window.PCjs.Commands:{},Ba=["hold","sleep","wait"],Ca={alert:function(a){w(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},Ea={select:function(a,b,c){var d=!1;if(a=a.bindings[b])for(b=0;b<a.options.length;b++)if(a.options[b].textContent==c){a.selectedIndex!=b&&(a.selectedIndex=b);d=!0;break}return d}};
|
||||
Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
|
||||
|
|
@ -55,54 +55,55 @@ function Ua(){var a=Va();return-1!==a.indexOf("pcjs.org",a.length-8)}function Wa
|
|||
function $a(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var g=d+e>>1,h;h=c(b,a[g]);0<h?d=g+1:(e=g,f=!h)}return f?d:~d}function ab(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
|
||||
function jb(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
|
||||
f,e))});if(b&&"object"==typeof b){var k="",m;for(m in b)b.hasOwnProperty(m)&&(k&&(k+="&"),k+=m+"="+encodeURIComponent(b[m]));k=k.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g}
|
||||
function kb(a,b){var c,d={W:null,S:null,ia:null,ha:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.ia=g.load;d.ha=g.exec;if(e=g.bytes)d.W=e;else if(e=g.words)for(d.W=Array(2*e.length),f=c=0;c<e.length;c++)d.W[f++]=e[c]&255,d.W[f++]=e[c]>>8&255;else if(e=g.data)for(d.W=Array(4*e.length),f=c=0;c<e.length;c++)d.W[f++]=e[c]&255,
|
||||
function kb(a,b){var c,d={W:null,S:null,ja:null,ia:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.ja=g.load;d.ia=g.exec;if(e=g.bytes)d.W=e;else if(e=g.words)for(d.W=Array(2*e.length),f=c=0;c<e.length;c++)d.W[f++]=e[c]&255,d.W[f++]=e[c]>>8&255;else if(e=g.data)for(d.W=Array(4*e.length),f=c=0;c<e.length;c++)d.W[f++]=e[c]&255,
|
||||
d.W[f++]=e[c]>>8&255,d.W[f++]=e[c]>>16&255,d.W[f++]=e[c]>>24&255;else d.W=g;d.S=g.symbols;d.W.length?1==d.W.length&&(w(d.W[0]),d=null):(w("Empty resource: "+a),d=null)}catch(h){w("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){w("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.W=e)}return d}
|
||||
function Va(){return"http://"+(window?window.location.host:"www.pcjs.org")}function lb(){if(null==mb){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}mb=a}return mb}function nb(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function ob(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function pb(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1}
|
||||
function qb(a){if(!rb){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}rb=c}return rb[a]}function sb(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function tb(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}function ub(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function vb(a){wb.init.push(a)}
|
||||
function xb(a){if(yb)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){w(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function zb(a){!yb&&a?(yb=!0,Ab&&Bb("init"),Cb&&Bb("show")):yb=a}function Bb(a){wb[a]&&xb(wb[a])}var rb=null,wb={init:[],show:[],exit:[]},Ab=!1,Cb=!1,yb=!0,mb=null;ub("onload",function(){Ab=!0;xb(wb.init)});ub("onpageshow",function(){Cb=!0;xb(wb.show)});ub(pb("Opera")||pb("iOS")?"onunload":"onbeforeunload",function(){xb(wb.exit)});
|
||||
var B="pdp10",Db="PDPjs",Jb=Math.pow(2,18),Kb=Math.pow(2,18)-1,Lb=Math.pow(2,36),Mb=Math.pow(2,21),Nb=Math.pow(2,26),B="pdp10",Db="PDPjs",H={cpu:1,trap:2,fault:4,"int":8,bus:16,memory:32,mmu:64,rom:128,device:256,panel:512,keyboard:1024,key:2048,paper:4096,read:16384,write:32768,serial:1048576,timer:2097152,speaker:16777216,computer:33554432,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};
|
||||
function Ob(a,b){t.call(this,"Panel",a,512);this.I=this.K=0;this.U=b;this.i=this.H=this.u=this.w=0;this.L=this.M=-1;this.N=this.O=this.G=!1;this.P=Pb;this.B={};this.b={START:[1,1,!0,!1,this.Eb],STEP:[1,1,!1,!1,this.Fb],ENABLE:[1,1,!1,!1,this.zb],CONT:[1,1,!0,!1,this.xb],DEP:[0,0,!0,!1,this.yb],EXAM:[1,1,!0,!1,this.Ab],LOAD:[1,1,!0,!1,this.Cb],TEST:[0,0,!0,!1,this.Bb]};for(a=0;22>a;a++)this.b["S"+a]=[0,0,!1,!1,this.Db,a];this.A=this.g=this.C=this.D=null;this.exports={hold:this.vb,toggle:this.Qb,reset:this.Mb,
|
||||
set:this.Pb};D(this)}p(Ob,t);l=Ob.prototype;l.reset=function(a){this.stop();a&&Qb(this,this.w=0)};
|
||||
l.da=function(a,b,c,d){if(this.D&&this.D.da(a,b,c,d)||this.g&&this.g.da(a,b,c,d)||this.A&&this.A.da(a,b,c,d))return!0;switch(b){case "PC":return this.F[b]=c,this.K++,!0;default:return"led"==a||"rled"==a?(this.F[b]=c,this.B[b]=d?1:0,this.K++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.F[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Rb(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){Sb(a,b)}}(this,b),a.ontouchstart=
|
||||
function(a,b){return function(c){Rb(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){Sb(a,b)}}(this,b),!0):t.prototype.da.call(this,a,b,c,d)}};l.ta=function(a,b,c,d){this.D=a;this.C=b;this.g=c;this.A=d;Tb(this);Ub(this)};l.la=function(a,b){if(!b)if(this.U&&Vb(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};l.ca=function(a){return a?this.save():!0};l.save=function(){var a=new J(this);a.set(0,[this.i,this.w,this.u]);return a.data()};
|
||||
l.restore=function(a){if(a=a[0])Wb(this,this.i=a[0]),Qb(this,this.w=a[1]),Xb(this,a[2]);return!0};l.Mb=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}Ub(this);return!0};function Yb(a,b,c){if(a=a.F[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Tb(a,b){for(var c in a.B)Yb(a,c,null!=b?b:a.B[c])}function Zb(a,b,c){if(a=a.F[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function Ub(a){for(var b in a.b)Zb(a,b,a.b[b][1])}
|
||||
l.vb=function(a,b,c){if(Rb(this,b)){if(c){var d=this;setTimeout(function(){Sb(d,b);a&&a()},+c);return!1}Sb(this,b)}return!0};l.Pb=function(a,b){if("SR"==a)return Xb(this,Qa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,Zb(this,a,c[1]),!0):!1};l.Qb=function(a){return Rb(this,a)?(Sb(this,a),!0):!1};function Rb(a,b){var c=a.b[b];return c?(Zb(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=$b&&(a.N=b==ac,a.O=b==bc),!0):!1}
|
||||
function Sb(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(Zb(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}l.Eb=function(a){a||this.g.j.J||(this.g.i=this.i%Jb,this.b[cc]&&this.b[cc][1]&&dc(this.g))};l.Fb=function(){};l.zb=function(a){a||this.g.R()};
|
||||
l.xb=function(a){if(!a&&!this.g.j.J)if(this.b[cc]&&this.b[cc][1])dc(this.g);else{if((a=this.A)&&!Na(a,!0))Oa(a,!0),ec(a,0,null),Oa(a,!1);else try{var b=this.g.Ia(1);0<b&&(fc(this.g,b),gc(this.g,b,!0),hc(this.g,b))}catch(c){"number"!=typeof c&&Ka(this.g,c.stack||c.message)}this.stop();this.D&&K(this.D)}};l.yb=function(a){a&&!this.g.j.J&&(this.N&&ic(this),a=Qb(this,this.w=this.u),this.P==Pb?jc(this.C,this.i,a):this.g.Ha(this.i,a))};
|
||||
l.Ab=function(a){if(!a&&!this.g.j.J){var b;this.O&&ic(this);this.P==Pb?b=kc(this.C,this.i):b=this.g.ma(this.i);Qb(this,this.w=b)}};l.Cb=function(a){a||this.g.j.J||Wb(this,this.u)};l.Bb=function(a){a?(this.G=!0,Tb(this,!0)):(this.G=!1,Tb(this),Xb(this,0))};l.Db=function(a,b){this.u=a?this.u|1<<b:this.u&~(1<<b)};function ic(a){var b=1,c=a.C.u;a.b[$b]&&a.b[$b][1]||(b=-b);Wb(a,a.i&~c|a.i+b&c)}
|
||||
function Wb(a,b){a.i=b&a.C.u;if(a.L!==a.i){a.L=a.i;b=a.L;for(var c=0;22>c;c++){var d=a,e="A"+c,f=b&1<<c;d.B[e]=f;d.G||Yb(d,e,f)}}}function Qb(a,b){a.H=b%Lb;if(a.M!==a.H){a.M=a.H;b=a.M;for(var c=0;16>c;c++){var d=a,e="D"+c,f=b&1<<c;d.B[e]=f;d.G||Yb(d,e,f)}}return a.H}function Xb(a,b){a.u=b|0;for(b=0;22>b;b++)a.b["S"+b][1]=a.u&1<<b?1:0;Ub(a);return!0}l.stop=function(){Wb(this,this.g.i)};
|
||||
function Vb(){for(var a=C(document,B,"panel"),b=0;b<a.length;b++){var c=a[b],d=A(c),e=xa(d.id);e||(e=new Ob(d,!0));ya(e,c)}}var Pb=7,ac="DEP",cc="ENABLE",bc="EXAM",$b="STEP";vb(Vb);function lc(a,b,c){t.call(this,"Bus",a,16);this.g=b;this.A=c;this.H=+a.busWidth||18;this.G=1<<this.H;this.u=this.G-1;this.i=Math.log2(16384);this.B=this.G/16384|0;this.w=0;this.b=[];a=new L(this);mc(a,this.A);this.b=Array(this.B);for(b=0;b<this.B;b++)this.b[b]=a;D(this)}p(lc,t);l=lc.prototype;l.reset=function(){};
|
||||
l.la=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.ca=function(a){return a?this.save():!0};l.save=function(){var a=new J(this);a.set(0,nc(this));return a.data()};l.restore=function(a){a:{a=a[0];var b;for(b=0;b<a.length-1;b+=2){var c=a[b],d=a[b+1];if(d&&4096>d.length){for(var e=0,f=Array(4096),g=0;g<d.length-1;)for(var h=d[g++],k=d[g++];h--;)f[e++]=k;d=f}e=this.b[c];if(!e||!e.restore(d)){w("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
|
||||
function oc(a,b,c,d){for(var e=b,f=c,g=e>>>a.i;0<f&&g<a.b.length;){var h=a.b[g],k=16384*g,m=16384-(e-k);m>f&&(m=f);if(h&&h.size){if(h.type==d){if(e+f<=h.v)return h.Ga+=h.v-e,h.v=e,!0;if(e>=h.v+h.Ga){m=h.size-(e-k);m>f&&(m=f);h.Ga=e-h.v+m;e=k+16384;f-=m;g++;continue}}return pc(qc,e,f)}e=new L(a,e,m,16384,d);mc(e,a.A,h);a.b[g++]=e;e=k+16384;f-=m}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+rc[d]+" at "+Ra(b)),!0):pc(Ic,b,c)}
|
||||
function kc(a,b){var c=a.b[(b&a.u)>>>a.i];a.w++;b=c.i(b&16383,b);a.w--;return b}function jc(a,b,c){var d=a.b[(b&a.u)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function nc(a){for(var b=0,c=[],d=0;d<a.B;d++){var e=a.b[d];if(e.La||e.tb){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,k=[];g<e.length;){for(var m=e[g],n=g+1;n<e.length&&e[n]===m;)n++;k[h++]=n-g;k[h++]=m;g=n}k.length<e.length&&(e=k)}c[f]=e}}return c}
|
||||
l.ib=function(a){this.w||(this.A&&Pa(this.A,4)&&E(this.A,"memory fault on "+M(this.A,a),!0,!0),this.g.R())};function pc(a,b,c){w("Memory block error ("+a+": "+F(b)+","+F(c)+")");return!1}var qc=1,Ic=2;function Jc(a){t.call(this,"Device",a,256)}p(Jc,t);l=Jc.prototype;l.ta=function(a,b,c,d){this.C=b;this.D=a;this.g=c;this.A=d;D(this)};l.la=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.ca=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){return(new J(this)).data()};
|
||||
l.restore=function(){return!0};vb(function(){for(var a=C(document,B,"device"),b=0;b<a.length;b++){var c,d=a[b];c=A(d);switch(c.type){case "default":c=new Jc(c),ya(c,d)}}});function L(a,b,c,d,e){this.B=a;this.id=Kc+=2;this.v=b;this.Ga=c;this.size=d||0;this.type=e||Lc;this.F=e==Mc;this.b=null;this.ma=this.i=this.u=this.Fa;this.Ha=this.D=this.w=this.ua;this.A=this.C=0;mc(this);this.La=this.tb=!1;if(this.size){a=this.g=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Nc(this,Oc)}else Nc(this)}l=L.prototype;
|
||||
l.save=function(){return this.g};l.restore=function(a){return a&&this.size==a.length?(this.g=a,this.La=!0):!1};function Nc(a,b){b||(b=Pc);Qc(a,b,void 0);Rc(a,b,void 0)}function Qc(a,b,c){c&&a.A||(a.ma=b[2]||a.Fa);if(c||void 0===c)a.u=b[0]||a.Fa,a.i=b[2]||a.Fa}function Rc(a,b,c){c&&a.C||(a.Ha=!a.F&&b[3]||a.ua);if(c||void 0===c)a.w=b[1]||a.ua,a.D=b[3]||a.ua}l.wa=function(a,b){b?this.C++||Rc(this,Sc,!1):this.A++||Qc(this,Sc,!1)};function Tc(a,b){b?--a.C||(a.Ha=a.F?a.ua:a.D):--a.A||(a.ma=a.i)}
|
||||
function mc(a,b,c){a.b=b;a.A=a.C=0;c&&((a.A=c.A)&&Qc(a,Sc,!1),(a.C=c.C)&&Rc(a,Sc,!1))}l.Fa=function(a,b){this.b&&Pa(this.b,32)&&E(this.b,"attempt to read invalid address "+M(this.b,b),!0);this.B.ib(b);return-1};l.ua=function(a,b,c){this.b&&Pa(this.b,32)&&E(this.b,"attempt to write "+M(this.b,a)+" to invalid addresses "+M(this.b,c),!0)};l.Hb=function(a,b,c,d){a=this.g[a];return a=32>=c+d?a>>c&(1<<d)-1:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d)};l.Kb=function(a){return this.g[a]};
|
||||
l.Tb=function(a,b,c,d,e){c=this.g[b];var f=Math.pow(2,d);a%=Math.pow(2,e);d=c%Math.pow(2,d+e);c=c-d+a*f+d%f;this.g[b]!=c&&(this.g[b]=c,this.La=!0)};l.Vb=function(a,b){this.g[b]=a;this.La=!0};l.Gb=function(a,b,c,d){if(this.b&&null!=this.v){var e=this.b;Uc(e,this.v+a,1,e.K)&&e.R(!1)}return this.u(a,b,c,d)};l.Ib=function(a,b){if(this.b&&null!=this.v){var c=this.b;Uc(c,this.v+a,2,c.K)&&c.R(!1)}return this.i(a,b)};
|
||||
l.Sb=function(a,b,c,d,e){if(this.b&&null!=this.v){var f=this.b;Uc(f,this.v+b,1,f.G)&&f.R(!1)}this.F?this.ua(a,0,c):this.w(a,b,c,d,e)};l.Ub=function(a,b,c){if(this.b&&null!=this.v){var d=this.b;Uc(d,this.v+b,2,d.G)&&d.R(!1)}this.F?this.ua(a,0,c):this.D(a,b,c)};var Lc=0,Mc=2,rc=["NONE","RAM","ROM"],Kc=0,Pc=[],Oc=[L.prototype.Hb,L.prototype.Tb,L.prototype.Kb,L.prototype.Vb],Sc=[L.prototype.Gb,L.prototype.Sb,L.prototype.Ib,L.prototype.Ub];
|
||||
function Vc(a,b){t.call(this,"CPU",a,1);b=+a.cycles||b;var c=+a.multiplier||1;this.ya=0;this.Ba=b;this.O=c;this.za=Math.round(this.Ba/1E4)/100;this.N=this.za*this.O;this.Aa=this.ra=this.P=this.va=0;this.j.J=this.j.Pa=!1;this.j.X=a.autoStart;"string"==typeof this.j.X&&(this.j.X="true"==this.j.X);this.j.Ca=!1;this.pa=this.Z=0;this.qa=+a.csStart;this.U=+a.csInterval;this.aa=+a.csStop;this.G=[];this.bb=this.Nb.bind(this);this.L=this.B=this.I=this.K=this.w=this.oa=this.H=this.ea=this.Qa=this.M=0;this.sa=
|
||||
null;D(this)}p(Vc,t);l=Vc.prototype;l.ta=function(a,b,c,d){this.D=a;this.C=b;this.A=d;this.sa=a.u;for(a=0;a<Wc.length;a++)(b=this.F[Wc[a]])&&this.D.da(null,Wc[a],b);D(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};
|
||||
l.la=function(a,b){var c=Xc(this.D,"autoStart");null!=c?this.j.X="true"==c?!0:"false"==c?!1:!!c:null==this.j.X&&(this.j.X=!this.A&&void 0===this.F.run);if(!b){if(a){Yc(this);if(!this.restore(a))return!1;Zc(this)}else this.reset();this.A?(a=this.A,b=this.j.X,a.ya=!0,a.f("Type ? for help with PDPjs Debugger commands"),$c(a),b||ad(a),a.sa&&(b=a.sa,a.sa=null,bd(a,b))):this.status("No debugger detected");this.j.X||this.f("CPU will not be auto-started "+(this.sa?"(click Run to start)":"(type 'go' to start)"))}return!0};
|
||||
l.ca=function(a){return a?this.save():!0};l.X=function(){return this.j.J?!0:this.j.X?(dc(this),!0):!1};l.jb=function(){return 0};function Zc(a){void 0===a.qa&&(a.qa=0);void 0===a.U&&(a.U=-1);void 0===a.aa&&(a.aa=-1);a.j.Ca=0<=a.qa&&0<a.U;a.j.Ca&&(a.pa=0,a.Z=a.qa-a.L)}function hc(a,b){if(a.j.Ca){var c=!1;a.pa=a.pa+a.jb()|0;a.Z-=b;0>=a.Z&&(a.Z+=a.U,c=!0);0<=a.aa&&a.aa<=cd(a)&&(a.U=a.aa=-1,Zc(a),a.R(),c=!0);c&&a.f(cd(a)+" cycles: checksum="+F(a.pa))}}
|
||||
l.da=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.F[b]=c,!0;case "run":return this.F[b]=c,c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.j.T)a=!0;else{var b=null,c,h=x(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.j.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.j.T);c++);c==h.length&&(b=a);w("The "+b.type+" component ("+b.id+") is not "+(b.j.ready?"powered yet":"ready yet"+(b.Ma?" (waiting for notification)":""))+".");a=!1}a&&(d.j.J?d.R():dc(d))},!0;case "speed":return this.F[b]=
|
||||
c,!0;case "setSpeed":return this.F[b]=c,c.onclick=function(){dd(d,d.O<<1,!0)},c.textContent=this.N.toFixed(2)+"Mhz",!0}return!1};function gc(a,b,c){a.L+=b;c&&(a.I=a.K=0)}function ed(a,b){var c=1;b&&1<a.O&&a.M&&(c=a.M/a.za);a.Aa=Math.round(1E3/fd);a.ra=Math.floor(a.Ba/fd*c);b||(a.P=a.ra);a.va=0}function cd(a){return a.L+a.B+a.I-a.K}function Yc(a){a.M=0;a.Qa=0;a.L=a.B=a.I=a.K=0;Zc(a);dd(a,1)}
|
||||
function dd(a,b,c){var d=!1;if(void 0!==b){.8>a.M/a.N?b=1:d=!0;a.O=b;b=a.za*a.O;if(a.N!=b){a.N=b;b=a.N.toFixed(2)+"Mhz";var e=a.F.setSpeed;e&&(e.textContent=b);a.f("target speed: "+b)}c&&a.D&&gd(a.D)}gc(a,a.B);a.B=0;a.w=va();a.H=0;ed(a);return d}function hd(a,b){for(var c=a.G.length-1;0<=c;c--){var d=a.G[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function id(a){for(var b=[],c=0;c<a.G.length;c++)b.push(a.G[c][0]);return b}
|
||||
function fc(a,b){for(var c=a.G.length-1;0<=c;c--){var d=a.G[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function jd(a,b){var c=a.I-=a.K;a.K=0;b&&(a.I=0);return c}
|
||||
l.Nb=function(){if(this.j.J){this.va>=this.Ba&&ed(this,!0);this.ea=0;this.oa=va();if(this.H){var a=this.oa-this.H;a>this.Aa&&(this.w+=a,this.w>this.oa&&(this.w=this.oa))}try{do{var b=hd(this,this.j.Ca?1:this.ra);try{this.Ia(b)}catch(e){if("number"!=typeof e)throw e;}b=jd(this,!0);this.ea+=b;this.B+=b;hc(this,b);fc(this,b);this.P-=b;if(0>=this.P){this.P+=this.ra;++this.Qa>=kd&&(this.D&&K(this.D,void 0),this.Qa=0);break}}while(this.j.J)}catch(e){this.R();this.D&&this.D.stop(va(),cd(this));Ka(this,e.stack||
|
||||
e.message);return}if(this.j.J){a=setTimeout;b=this.bb;this.H=va();var c=this.Aa;this.ea&&(c=Math.round(c*this.ea/this.ra));var c=c-(this.H-this.oa),d=this.H-this.w;d&&(this.M=Math.round(this.B/(10*d))/100,864E5<=d&&(this.L=0,dd(this)));if(0>c||this.M<this.N)-1E3>c&&(this.w-=c),c=0;this.va+=this.ea;this.H+=c;a(b,c)}}};
|
||||
function dc(a,b){if(!La(a))if(a.j.J)a.f(a.toString()+" busy");else{dd(a);a.j.J=!0;a.j.Pa=!0;var c=a.F.run;c&&(c.textContent="Halt");a.D&&(b&&gd(a.D,!0),a.D.start(a.w,cd(a)));a.A||a.status("Started");setTimeout(a.bb,0)}}l.Ia=function(){return 0};l.R=function(a){var b=!1;if(this.j.J){jd(this);gc(this,this.B);this.B=0;this.j.J=!1;if(b=this.F.run)b.textContent="Run";this.D&&this.D.stop(va(),cd(this));b=!0;this.A||this.status("Stopped")}this.j.complete=a;return b};var fd=30,kd=15,Wc=["power","reset"];
|
||||
function ld(a){var b=+a.model||1001;Vc.call(this,a,1E6);this.ab=b;this.Za=+a.addrReset||0;this.qb=md.bind(this);this.b=P.bind(this);this.fa=null;this.Ya=[];this.j.complete=!1}p(ld,Vc);l=ld.prototype;l.reset=function(){this.status("Model "+this.ab);this.j.J&&this.R();this.Ra=0;this.ga=this.i=this.na=this.Za;this.u=0;this.ma=this.Jb;this.Ha=this.Wb;this.fa=null;Yc(this);this.j.error=!1;Vc.prototype.reset.call(this)};l.jb=function(){return 0};
|
||||
l.save=function(){var a=new J(this);a.set(0,[this.Ra,this.i,this.na,this.ga,this.u]);a.set(1,[]);a.set(2,[this.L,this.O,this.j.X]);a.set(3,nd(this));a.set(4,id(this));return a.data()};
|
||||
l.restore=function(a){var b;b=a[0];fa();ca();fa();var c=b[Symbol.iterator];b=c?c.call(b):ia(b);this.Ra=b.next().value;this.i=b.next().value;this.na=b.next().value;this.ga=b.next().value;this.u=b.next().value;b=a[2];this.L=b[0];dd(this,b[1]);this.j.X=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.Ya.length;d++){var e=this.Ya[d];if(e.Rb===b[c]){d=e;break a}}d=null}d&&(d.next=this.fa,this.fa=d)}a=a[4];for(b=0;b<this.G.length&&b<a.length;b++)this.G[b][0]=a[b];return!0};
|
||||
function nd(a){var b=[];for(a=a.fa;a;)b.push(a.Rb),a=a.next;return b}l.Jb=function(a){var b=this.C;a=this.ga=a;return b.b[(a&b.u)>>>b.i].ma(a&16383,a)};l.Wb=function(a,b){var c=this.C;a=this.ga=a;c.b[(a&c.u)>>>c.i].Ha(b,a&16383,a)};
|
||||
l.Ia=function(a){this.j.complete=!0;var b=this.A?od(this.A)?1:this.j.Pa?-1:0:0,c=a?this.j.Pa?0:1:-1;this.j.Pa=!1;this.I=this.K=a;this.u=this.u&-5|(b?4:0);do{if(this.u){if(this.u&4){if(pd(this.A,this.i,c)){this.R();break}++b||(this.u&=-5);c||c++}if(a=this.u&11)this.u&2?this.fa||(this.u&=-3):this.u&1&&this.u++,a=!1;if(a){if(this.u&4&&pd(this.A,this.i,c)){this.R();break}if(0>c)break}}this.u&=15;var d=this.na=this.i;a=this.ma(d);this.i=(d+1)%Jb;for(var e,f=a,g=4;;){d=f&262143;(e=f>>18&15)&&(d=d+this.ma(e)&
|
||||
Kb);if(!(f&4194304))break;if(0>--g){this.C.ib(f);break}f=this.ma(d)}this.Ra=d;this.qb(a/Jb|0)}while(0<this.K);return this.j.complete?this.I-this.K:!1===this.j.complete?-1:0};vb(function(){for(var a=C(document,B,"cpu"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new ld(d);ya(d,c)}});function Q(a){this.b(a)}function qd(a){this.b(a)}function rd(a){this.b(a)}function R(a){this.b(a)}function P(a){this.f("undefined opcode: "+Ra(a));this.g.R()}function md(a){sd[a>>9].call(this,a)}
|
||||
var sd=[Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
var B="pdp10",Db="PDPjs",Jb=Math.pow(2,18),Kb=Math.pow(2,18)-1,Lb=Math.pow(2,36),Mb=Math.pow(2,21),Nb=Math.pow(2,26),Ob=Math.pow(2,23),B="pdp10",Db="PDPjs",H={cpu:1,trap:2,fault:4,"int":8,bus:16,memory:32,mmu:64,rom:128,device:256,panel:512,keyboard:1024,key:2048,paper:4096,read:16384,write:32768,serial:1048576,timer:2097152,speaker:16777216,computer:33554432,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};
|
||||
function Pb(a,b){t.call(this,"Panel",a,512);this.I=this.K=0;this.U=b;this.i=this.H=this.u=this.w=0;this.L=this.M=-1;this.N=this.O=this.G=!1;this.P=Qb;this.B={};this.b={START:[1,1,!0,!1,this.Fb],STEP:[1,1,!1,!1,this.Gb],ENABLE:[1,1,!1,!1,this.Ab],CONT:[1,1,!0,!1,this.yb],DEP:[0,0,!0,!1,this.zb],EXAM:[1,1,!0,!1,this.Bb],LOAD:[1,1,!0,!1,this.Db],TEST:[0,0,!0,!1,this.Cb]};for(a=0;22>a;a++)this.b["S"+a]=[0,0,!1,!1,this.Eb,a];this.A=this.g=this.C=this.D=null;this.exports={hold:this.wb,toggle:this.Rb,reset:this.Nb,
|
||||
set:this.Qb};D(this)}p(Pb,t);l=Pb.prototype;l.reset=function(a){this.stop();a&&Rb(this,this.w=0)};
|
||||
l.ea=function(a,b,c,d){if(this.D&&this.D.ea(a,b,c,d)||this.g&&this.g.ea(a,b,c,d)||this.A&&this.A.ea(a,b,c,d))return!0;switch(b){case "PC":return this.F[b]=c,this.K++,!0;default:return"led"==a||"rled"==a?(this.F[b]=c,this.B[b]=d?1:0,this.K++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.F[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Sb(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){Tb(a,b)}}(this,b),a.ontouchstart=
|
||||
function(a,b){return function(c){Sb(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){Tb(a,b)}}(this,b),!0):t.prototype.ea.call(this,a,b,c,d)}};l.ta=function(a,b,c,d){this.D=a;this.C=b;this.g=c;this.A=d;Ub(this);Vb(this)};l.ma=function(a,b){if(!b)if(this.U&&Wb(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};l.da=function(a){return a?this.save():!0};l.save=function(){var a=new J(this);a.set(0,[this.i,this.w,this.u]);return a.data()};
|
||||
l.restore=function(a){if(a=a[0])Xb(this,this.i=a[0]),Rb(this,this.w=a[1]),Yb(this,a[2]);return!0};l.Nb=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}Vb(this);return!0};function Zb(a,b,c){if(a=a.F[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Ub(a,b){for(var c in a.B)Zb(a,c,null!=b?b:a.B[c])}function $b(a,b,c){if(a=a.F[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function Vb(a){for(var b in a.b)$b(a,b,a.b[b][1])}
|
||||
l.wb=function(a,b,c){if(Sb(this,b)){if(c){var d=this;setTimeout(function(){Tb(d,b);a&&a()},+c);return!1}Tb(this,b)}return!0};l.Qb=function(a,b){if("SR"==a)return Yb(this,Qa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,$b(this,a,c[1]),!0):!1};l.Rb=function(a){return Sb(this,a)?(Tb(this,a),!0):!1};function Sb(a,b){var c=a.b[b];return c?($b(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=ac&&(a.N=b==bc,a.O=b==cc),!0):!1}
|
||||
function Tb(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&($b(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}l.Fb=function(a){a||this.g.j.J||(this.g.i=this.i%Jb,this.b[dc]&&this.b[dc][1]&&ec(this.g))};l.Gb=function(){};l.Ab=function(a){a||this.g.R()};
|
||||
l.yb=function(a){if(!a&&!this.g.j.J)if(this.b[dc]&&this.b[dc][1])ec(this.g);else{if((a=this.A)&&!Na(a,!0))Oa(a,!0),fc(a,0,null),Oa(a,!1);else try{var b=this.g.Ia(1);0<b&&(gc(this.g,b),hc(this.g,b,!0),ic(this.g,b))}catch(c){"number"!=typeof c&&Ka(this.g,c.stack||c.message)}this.stop();this.D&&K(this.D)}};l.zb=function(a){a&&!this.g.j.J&&(this.N&&jc(this),a=Rb(this,this.w=this.u),this.P==Qb?kc(this.C,this.i,a):this.g.va(this.i,a))};
|
||||
l.Bb=function(a){if(!a&&!this.g.j.J){var b;this.O&&jc(this);this.P==Qb?b=lc(this.C,this.i):b=this.g.Z(this.i);Rb(this,this.w=b)}};l.Db=function(a){a||this.g.j.J||Xb(this,this.u)};l.Cb=function(a){a?(this.G=!0,Ub(this,!0)):(this.G=!1,Ub(this),Yb(this,0))};l.Eb=function(a,b){this.u=a?this.u|1<<b:this.u&~(1<<b)};function jc(a){var b=1,c=a.C.u;a.b[ac]&&a.b[ac][1]||(b=-b);Xb(a,a.i&~c|a.i+b&c)}
|
||||
function Xb(a,b){a.i=b&a.C.u;if(a.L!==a.i){a.L=a.i;b=a.L;for(var c=0;22>c;c++){var d=a,e="A"+c,f=b&1<<c;d.B[e]=f;d.G||Zb(d,e,f)}}}function Rb(a,b){a.H=b%Lb;if(a.M!==a.H){a.M=a.H;b=a.M;for(var c=0;16>c;c++){var d=a,e="D"+c,f=b&1<<c;d.B[e]=f;d.G||Zb(d,e,f)}}return a.H}function Yb(a,b){a.u=b|0;for(b=0;22>b;b++)a.b["S"+b][1]=a.u&1<<b?1:0;Vb(a);return!0}l.stop=function(){Xb(this,this.g.i)};
|
||||
function Wb(){for(var a=C(document,B,"panel"),b=0;b<a.length;b++){var c=a[b],d=A(c),e=xa(d.id);e||(e=new Pb(d,!0));ya(e,c)}}var Qb=7,bc="DEP",dc="ENABLE",cc="EXAM",ac="STEP";vb(Wb);function mc(a,b,c){t.call(this,"Bus",a,16);this.g=b;this.A=c;this.H=+a.busWidth||18;this.G=1<<this.H;this.u=this.G-1;this.i=Math.log2(16384);this.B=this.G/16384|0;this.w=0;this.b=[];a=new L(this);nc(a,this.A);this.b=Array(this.B);for(b=0;b<this.B;b++)this.b[b]=a;D(this)}p(mc,t);l=mc.prototype;l.reset=function(){};
|
||||
l.ma=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.da=function(a){return a?this.save():!0};l.save=function(){var a=new J(this);a.set(0,oc(this));return a.data()};l.restore=function(a){a:{a=a[0];var b;for(b=0;b<a.length-1;b+=2){var c=a[b],d=a[b+1];if(d&&4096>d.length){for(var e=0,f=Array(4096),g=0;g<d.length-1;)for(var h=d[g++],k=d[g++];h--;)f[e++]=k;d=f}e=this.b[c];if(!e||!e.restore(d)){w("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
|
||||
function pc(a,b,c,d){for(var e=b,f=c,g=e>>>a.i;0<f&&g<a.b.length;){var h=a.b[g],k=16384*g,m=16384-(e-k);m>f&&(m=f);if(h&&h.size){if(h.type==d){if(e+f<=h.v)return h.Ha+=h.v-e,h.v=e,!0;if(e>=h.v+h.Ha){m=h.size-(e-k);m>f&&(m=f);h.Ha=e-h.v+m;e=k+16384;f-=m;g++;continue}}return qc(rc,e,f)}e=new L(a,e,m,16384,d);nc(e,a.A,h);a.b[g++]=e;e=k+16384;f-=m}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Ic[d]+" at "+Ra(b)),!0):qc(Jc,b,c)}
|
||||
function lc(a,b){var c=a.b[(b&a.u)>>>a.i];a.w++;b=c.i(b&16383,b);a.w--;return b}function kc(a,b,c){var d=a.b[(b&a.u)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function oc(a){for(var b=0,c=[],d=0;d<a.B;d++){var e=a.b[d];if(e.La||e.ub){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,k=[];g<e.length;){for(var m=e[g],n=g+1;n<e.length&&e[n]===m;)n++;k[h++]=n-g;k[h++]=m;g=n}k.length<e.length&&(e=k)}c[f]=e}}return c}
|
||||
l.jb=function(a){this.w||(this.A&&Pa(this.A,4)&&E(this.A,"memory fault on "+M(this.A,a),!0,!0),this.g.R())};function qc(a,b,c){w("Memory block error ("+a+": "+F(b)+","+F(c)+")");return!1}var rc=1,Jc=2;function Kc(a){t.call(this,"Device",a,256)}p(Kc,t);l=Kc.prototype;l.ta=function(a,b,c,d){this.C=b;this.D=a;this.g=c;this.A=d;D(this)};l.ma=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.da=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){return(new J(this)).data()};
|
||||
l.restore=function(){return!0};vb(function(){for(var a=C(document,B,"device"),b=0;b<a.length;b++){var c,d=a[b];c=A(d);switch(c.type){case "default":c=new Kc(c),ya(c,d)}}});function L(a,b,c,d,e){this.B=a;this.id=Lc+=2;this.v=b;this.Ha=c;this.size=d||0;this.type=e||Mc;this.F=e==Nc;this.b=null;this.Z=this.i=this.u=this.Ga;this.va=this.D=this.w=this.ua;this.A=this.C=0;nc(this);this.La=this.ub=!1;if(this.size){a=this.g=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Oc(this,Pc)}else Oc(this)}l=L.prototype;
|
||||
l.save=function(){return this.g};l.restore=function(a){return a&&this.size==a.length?(this.g=a,this.La=!0):!1};function Oc(a,b){b||(b=Qc);Rc(a,b,void 0);Sc(a,b,void 0)}function Rc(a,b,c){c&&a.A||(a.Z=b[2]||a.Ga);if(c||void 0===c)a.u=b[0]||a.Ga,a.i=b[2]||a.Ga}function Sc(a,b,c){c&&a.C||(a.va=!a.F&&b[3]||a.ua);if(c||void 0===c)a.w=b[1]||a.ua,a.D=b[3]||a.ua}l.za=function(a,b){b?this.C++||Sc(this,Tc,!1):this.A++||Rc(this,Tc,!1)};function Uc(a,b){b?--a.C||(a.va=a.F?a.ua:a.D):--a.A||(a.Z=a.i)}
|
||||
function nc(a,b,c){a.b=b;a.A=a.C=0;c&&((a.A=c.A)&&Rc(a,Tc,!1),(a.C=c.C)&&Sc(a,Tc,!1))}l.Ga=function(a,b){this.b&&Pa(this.b,32)&&E(this.b,"attempt to read invalid address "+M(this.b,b),!0);this.B.jb(b);return-1};l.ua=function(a,b,c){this.b&&Pa(this.b,32)&&E(this.b,"attempt to write "+M(this.b,a)+" to invalid addresses "+M(this.b,c),!0)};l.Ib=function(a,b,c,d){a=this.g[a];return a=32>=c+d?a>>c&(1<<d)-1:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d)};l.Lb=function(a){return this.g[a]};
|
||||
l.Ub=function(a,b,c,d,e){c=this.g[b];var f=Math.pow(2,d);a%=Math.pow(2,e);d=c%Math.pow(2,d+e);c=c-d+a*f+d%f;this.g[b]!=c&&(this.g[b]=c,this.La=!0)};l.Wb=function(a,b){this.g[b]=a;this.La=!0};l.Hb=function(a,b,c,d){if(this.b&&null!=this.v){var e=this.b;Vc(e,this.v+a,1,e.K)&&e.R(!1)}return this.u(a,b,c,d)};l.Jb=function(a,b){if(this.b&&null!=this.v){var c=this.b;Vc(c,this.v+a,2,c.K)&&c.R(!1)}return this.i(a,b)};
|
||||
l.Tb=function(a,b,c,d,e){if(this.b&&null!=this.v){var f=this.b;Vc(f,this.v+b,1,f.G)&&f.R(!1)}this.F?this.ua(a,0,c):this.w(a,b,c,d,e)};l.Vb=function(a,b,c){if(this.b&&null!=this.v){var d=this.b;Vc(d,this.v+b,2,d.G)&&d.R(!1)}this.F?this.ua(a,0,c):this.D(a,b,c)};var Mc=0,Nc=2,Ic=["NONE","RAM","ROM"],Lc=0,Qc=[],Pc=[L.prototype.Ib,L.prototype.Ub,L.prototype.Lb,L.prototype.Wb],Tc=[L.prototype.Hb,L.prototype.Tb,L.prototype.Jb,L.prototype.Vb];
|
||||
function Wc(a,b){t.call(this,"CPU",a,1);b=+a.cycles||b;var c=+a.multiplier||1;this.Ba=0;this.Ra=b;this.O=c;this.Ca=Math.round(this.Ra/1E4)/100;this.N=this.Ca*this.O;this.Qa=this.sa=this.P=this.xa=0;this.j.J=this.j.Pa=!1;this.j.X=a.autoStart;"string"==typeof this.j.X&&(this.j.X="true"==this.j.X);this.j.Da=!1;this.qa=this.aa=0;this.ra=+a.csStart;this.U=+a.csInterval;this.ba=+a.csStop;this.G=[];this.cb=this.Ob.bind(this);this.L=this.B=this.I=this.K=this.w=this.pa=this.H=this.fa=this.Sa=this.M=0;this.wa=
|
||||
null;D(this)}p(Wc,t);l=Wc.prototype;l.ta=function(a,b,c,d){this.D=a;this.C=b;this.A=d;this.wa=a.u;for(a=0;a<Xc.length;a++)(b=this.F[Xc[a]])&&this.D.ea(null,Xc[a],b);D(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};
|
||||
l.ma=function(a,b){var c=Yc(this.D,"autoStart");null!=c?this.j.X="true"==c?!0:"false"==c?!1:!!c:null==this.j.X&&(this.j.X=!this.A&&void 0===this.F.run);if(!b){if(a){Zc(this);if(!this.restore(a))return!1;$c(this)}else this.reset();this.A?(a=this.A,b=this.j.X,a.xa=!0,a.f("Type ? for help with PDPjs Debugger commands"),ad(a),b||bd(a),a.sa&&(b=a.sa,a.sa=null,cd(a,b))):this.status("No debugger detected");this.j.X||this.f("CPU will not be auto-started "+(this.wa?"(click Run to start)":"(type 'go' to start)"))}return!0};
|
||||
l.da=function(a){return a?this.save():!0};l.X=function(){return this.j.J?!0:this.j.X?(ec(this),!0):!1};l.kb=function(){return 0};function $c(a){void 0===a.ra&&(a.ra=0);void 0===a.U&&(a.U=-1);void 0===a.ba&&(a.ba=-1);a.j.Da=0<=a.ra&&0<a.U;a.j.Da&&(a.qa=0,a.aa=a.ra-a.L)}function ic(a,b){if(a.j.Da){var c=!1;a.qa=a.qa+a.kb()|0;a.aa-=b;0>=a.aa&&(a.aa+=a.U,c=!0);0<=a.ba&&a.ba<=dd(a)&&(a.U=a.ba=-1,$c(a),a.R(),c=!0);c&&a.f(dd(a)+" cycles: checksum="+F(a.qa))}}
|
||||
l.ea=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.F[b]=c,!0;case "run":return this.F[b]=c,c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.j.T)a=!0;else{var b=null,c,h=x(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.j.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.j.T);c++);c==h.length&&(b=a);w("The "+b.type+" component ("+b.id+") is not "+(b.j.ready?"powered yet":"ready yet"+(b.Ma?" (waiting for notification)":""))+".");a=!1}a&&(d.j.J?d.R():ec(d))},!0;case "speed":return this.F[b]=
|
||||
c,!0;case "setSpeed":return this.F[b]=c,c.onclick=function(){ed(d,d.O<<1,!0)},c.textContent=this.N.toFixed(2)+"Mhz",!0}return!1};function hc(a,b,c){a.L+=b;c&&(a.I=a.K=0)}function fd(a,b){var c=1;b&&1<a.O&&a.M&&(c=a.M/a.Ca);a.Qa=Math.round(1E3/gd);a.sa=Math.floor(a.Ra/gd*c);b||(a.P=a.sa);a.xa=0}function dd(a){return a.L+a.B+a.I-a.K}function Zc(a){a.M=0;a.Sa=0;a.L=a.B=a.I=a.K=0;$c(a);ed(a,1)}
|
||||
function ed(a,b,c){var d=!1;if(void 0!==b){.8>a.M/a.N?b=1:d=!0;a.O=b;b=a.Ca*a.O;if(a.N!=b){a.N=b;b=a.N.toFixed(2)+"Mhz";var e=a.F.setSpeed;e&&(e.textContent=b);a.f("target speed: "+b)}c&&a.D&&hd(a.D)}hc(a,a.B);a.B=0;a.w=va();a.H=0;fd(a);return d}function id(a,b){for(var c=a.G.length-1;0<=c;c--){var d=a.G[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function jd(a){for(var b=[],c=0;c<a.G.length;c++)b.push(a.G[c][0]);return b}
|
||||
function gc(a,b){for(var c=a.G.length-1;0<=c;c--){var d=a.G[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function kd(a,b){var c=a.I-=a.K;a.K=0;b&&(a.I=0);return c}
|
||||
l.Ob=function(){if(this.j.J){this.xa>=this.Ra&&fd(this,!0);this.fa=0;this.pa=va();if(this.H){var a=this.pa-this.H;a>this.Qa&&(this.w+=a,this.w>this.pa&&(this.w=this.pa))}try{do{var b=id(this,this.j.Da?1:this.sa);try{this.Ia(b)}catch(e){if("number"!=typeof e)throw e;}b=kd(this,!0);this.fa+=b;this.B+=b;ic(this,b);gc(this,b);this.P-=b;if(0>=this.P){this.P+=this.sa;++this.Sa>=ld&&(this.D&&K(this.D,void 0),this.Sa=0);break}}while(this.j.J)}catch(e){this.R();this.D&&this.D.stop(va(),dd(this));Ka(this,e.stack||
|
||||
e.message);return}if(this.j.J){a=setTimeout;b=this.cb;this.H=va();var c=this.Qa;this.fa&&(c=Math.round(c*this.fa/this.sa));var c=c-(this.H-this.pa),d=this.H-this.w;d&&(this.M=Math.round(this.B/(10*d))/100,864E5<=d&&(this.L=0,ed(this)));if(0>c||this.M<this.N)-1E3>c&&(this.w-=c),c=0;this.xa+=this.fa;this.H+=c;a(b,c)}}};
|
||||
function ec(a,b){if(!La(a))if(a.j.J)a.f(a.toString()+" busy");else{ed(a);a.j.J=!0;a.j.Pa=!0;var c=a.F.run;c&&(c.textContent="Halt");a.D&&(b&&hd(a.D,!0),a.D.start(a.w,dd(a)));a.A||a.status("Started");setTimeout(a.cb,0)}}l.Ia=function(){return 0};l.R=function(a){var b=!1;if(this.j.J){kd(this);hc(this,this.B);this.B=0;this.j.J=!1;if(b=this.F.run)b.textContent="Run";this.D&&this.D.stop(va(),dd(this));b=!0;this.A||this.status("Stopped")}this.j.complete=a;return b};var gd=30,ld=15,Xc=["power","reset"];
|
||||
function md(a){var b=+a.model||1001;Wc.call(this,a,1E6);this.bb=b;this.$a=+a.addrReset||0;this.rb=nd.bind(this);this.b=P.bind(this);this.ha=null;this.Za=[];this.j.complete=!1}p(md,Wc);l=md.prototype;l.reset=function(){this.status("Model "+this.bb);this.j.J&&this.R();this.ga=this.ya=0;this.na=this.i=this.oa=this.$a;this.u=0;this.Z=this.Kb;this.va=this.Xb;this.ha=null;Zc(this);this.j.error=!1;Wc.prototype.reset.call(this)};l.kb=function(){return 0};
|
||||
l.save=function(){var a=new J(this);a.set(0,[this.ya,this.ga,this.i,this.oa,this.na,this.u]);a.set(1,[]);a.set(2,[this.L,this.O,this.j.X]);a.set(3,od(this));a.set(4,jd(this));return a.data()};
|
||||
l.restore=function(a){var b;b=a[0];ha();ca();ha();var c=b[Symbol.iterator];b=c?c.call(b):ia(b);this.ya=b.next().value;this.ga=b.next().value;this.i=b.next().value;this.oa=b.next().value;this.na=b.next().value;this.u=b.next().value;b=a[2];this.L=b[0];ed(this,b[1]);this.j.X=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.Za.length;d++){var e=this.Za[d];if(e.Sb===b[c]){d=e;break a}}d=null}d&&(d.next=this.ha,this.ha=d)}a=a[4];for(b=0;b<this.G.length&&b<a.length;b++)this.G[b][0]=a[b];return!0};
|
||||
function od(a){var b=[];for(a=a.ha;a;)b.push(a.Sb),a=a.next;return b}l.Kb=function(a){var b=this.C;a=this.na=a;return b.b[(a&b.u)>>>b.i].Z(a&16383,a)};l.Xb=function(a,b){var c=this.C;a=this.na=a;c.b[(a&c.u)>>>c.i].va(b,a&16383,a)};
|
||||
l.Ia=function(a){this.j.complete=!0;var b=this.A?pd(this.A)?1:this.j.Pa?-1:0:0,c=a?this.j.Pa?0:1:-1;this.j.Pa=!1;this.I=this.K=a;this.u=this.u&-5|(b?4:0);do{if(this.u){if(this.u&4){if(qd(this.A,this.i,c)){this.R();break}++b||(this.u&=-5);c||c++}if(a=this.u&11)this.u&2?this.ha||(this.u&=-3):this.u&1&&this.u++,a=!1;if(a){if(this.u&4&&qd(this.A,this.i,c)){this.R();break}if(0>c)break}}this.u&=15;var d=this.oa=this.i;a=this.ya=this.Z(d);this.i=(d+1)%Jb;for(var e,f=4;;){d=a&262143;(e=a>>18&15)&&(d=d+this.Z(e)&
|
||||
Kb);if(!(a&4194304))break;if(0>--f){this.C.jb(a);break}a=this.Z(d)}this.ga=d;this.rb(this.ya/Ob|0)}while(0<this.K);return this.j.complete?this.I-this.K:!1===this.j.complete?-1:0};vb(function(){for(var a=C(document,B,"cpu"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new md(d);ya(d,c)}});function nd(a){rd[a>>4].call(this,a)}function Q(a){this.b(a)}function sd(a){this.b(a)}function td(a){this.b(a)}function ud(a){a&=15;var b=this.Z(this.ga),c=this.Z(a);this.va(a,(c&262143)+(b-(b&262143)))}
|
||||
function R(a){this.b(a)}function P(a){this.f("undefined opcode: "+Ra(a));this.R()}
|
||||
var rd=[Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},qd,rd,rd,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},qd,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},sd,td,td,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},sd,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},P,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},P,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
|
|
@ -110,115 +111,115 @@ function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a)
|
|||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},ud,function(a){a&=15;var b=this.Z(a);this.va(a,b&262143)},function(a){a=this.Z(a&15);var b=this.Z(this.ga);this.va(this.ga,(b&262143)+(a-(a&262143)))},function(a){a&15&&ud.call(this,
|
||||
a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R];
|
||||
function td(a){t.call(this,"ROM",a,128);this.S=this.b=null;this.B=+a.addr;this.u=+a.size;this.i=a.alias;"string"==typeof this.i&&(this.i=eval(this.i));this.w=a.file;this.G=Sa(this.w);if(this.w){a=this.w;var b=Ta(this.G);"json"!=b&&"hex"!=b&&(a=Va()+"/api/v1/dump?file="+this.w+"&format=bytes&decimal=true");var c=this;jb(a,null,!0,function(a,b,f){f?(c.Y("Unable to load ROM resource (error "+f+": "+a+")"),c.w=null):(ta(c.Ka,a,b),(a=kb(a,b))?(c.b=a.W,c.S=a.S):c.w=null);ud(c)})}}p(td,t);
|
||||
td.prototype.ta=function(a,b,c,d){this.C=b;this.g=c;this.A=d;ud(this)};td.prototype.la=function(){this.S&&(this.A&&vd(this.A,this.id,this.B,this.u,this.S),delete this.S);return!0};td.prototype.ca=function(){return!0};
|
||||
function ud(a){if(!Ma(a)){if(a.w){if(!a.b||!a.C)return;a.u||(a.u=a.b.length);if(a.b.length!=a.u)Ka(a,"ROM size ("+F(a.b.length,8,!0)+") does not match specified size ("+F(a.u,8,!0)+")");else{var b;b=a.B;if(oc(a.C,b,a.u,Mc)){var c;for(c=0;c<a.b.length;c++)jc(a.C,b+c,a.b[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.i?b.push(a.i):null!=a.i&&a.i.length&&(b=a.i);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.C,g=d.u,h=[],k=d.B>>>f.i;0<g&&k<f.b.length;)h.push(f.b[k++]),g-=16384;f=d.C;d=d.u;g=0;for(e>>>=
|
||||
f.i;0<d&&e<f.b.length;){k=h[g++];if(!k)break;f.b[e++]=k;d-=16384}}delete a.b}}}D(a)}}vb(function(){for(var a=C(document,B,"rom"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new td(d);ya(d,c)}});
|
||||
function wd(a){t.call(this,"RAM",a);this.S=this.i=null;this.u=+a.addr;this.w=+a.size;this.ia=a.load;this.ha=a.exec;null!=this.ia&&(this.ia=+this.ia);null!=this.ha&&(this.ha=+this.ha);this.B=!1;this.b=a.file;this.G=Sa(this.b);if(this.b){a=this.b;var b=Ta(this.G);"json"!=b&&"hex"!=b&&(a=Va()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;jb(a,null,!0,function(a,b,f){f?(c.Y("Unable to load RAM resource (error "+f+": "+a+")"),c.b=null):(ta(c.Ka,a,b),(a=kb(a,b))?(c.i=a.W,c.S=a.S,
|
||||
null==c.ia&&(c.ia=a.ia),null==c.ha&&(c.ha=a.ha)):c.b=null);xd(c)})}}p(wd,t);wd.prototype.ta=function(a,b,c,d){this.C=b;this.g=c;this.A=d;xd(this)};wd.prototype.la=function(a,b){this.S&&(this.A&&vd(this.A,this.id,this.u,this.w,this.S),delete this.S);b||this.reset();return!0};wd.prototype.ca=function(){return!0};
|
||||
function xd(a){if(a.C&&(!a.B&&a.w&&(oc(a.C,a.u,a.w,1)?a.B=!0:a.w=0),!Ma(a))){if(!a.B)w("No RAM allocated");else if(a.b){if(!a.i||!a.C)return;yd(a,a.i,a.ia,a.ha,a.u)?a.status('Loaded image "'+a.G+'"'):a.Y('Error loading image "'+a.G+'"')}D(a)}}
|
||||
wd.prototype.reset=function(){if(this.B){for(var a=this.C,b=this.u,c=this.w,d=b&16383,b=b>>>a.i;0<c&&b<a.b.length;){var e=a.b[b],f=c,g=0,h,d=d||0,g=g||0;0>g&&g>=ma&&(g+=la);g=Math.trunc(Math.abs(g))%la;void 0===f&&(f=e.size);for(h=d;f--&&h<e.size;h++)e.D(g,d,e.v+d);c-=16384;b++;d=0}this.i&&yd(this,this.i,this.ia,this.ha,this.u,!this.A)}};
|
||||
function yd(a,b,c,d,e,f){var g=!1,h=!1;if(null==c)for(var k=0;k<b.length-1;){var m=b[k]&255|(b[k+1]&255)<<8;if(m)if(m&255){var n=k;if(1!=m){E(a,"invalid signature ("+G(m)+") at offset "+G(n),4096);break}if(k+6>=b.length){E(a,"invalid block at offset "+G(n),4096);break}for(var k=k+2,r=b[k++]&255|(b[k++]&255)<<8,u=b[k++]&255|(b[k++]&255)<<8,m=m+((r&255)+(r>>8)+(u&255)+(u>>8)),N=k,Da=r-=6;0<r&&k<b.length;)m+=b[k++]&255,r--;if(r||k>=b.length){E(a,"insufficient data for block at offset "+G(n),4096);break}m+=
|
||||
b[k++]&255;if(m&255){E(a,"invalid checksum ("+F(m,2,!0)+") for block at offset "+G(n),4096);break}if(Da)for(E(a,"loading "+G(Da)+" bytes at "+G(u)+"-"+G(u+Da),4096);Da--;)jc(a.C,u++,b[N++]);else u&1?g=!0:null==d&&(d=u),null!=d&&E(a,"starting address: "+G(d),4096);h=!0}else k++;else k+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h<b.length;h++)jc(a.C,c+h,b[h]);h=!0}if(h){if(null==d||g)a.g.R(),f=!1;null!=d&&(a=a.g,a.Za=d,a.i=d%Jb,f?a.j.T?a.j.J||dc(a):a.j.X=!0:a.A&&a.j.T?a.R()||a.D.j.reset||($c(a.A),
|
||||
K(a.D,-1)):!1===f&&a.R(),!a.j.J&&a.sa&&a.sa.stop())}return h}vb(function(){for(var a=C(document,B,"ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new wd(d);ya(d,c)}});
|
||||
function zd(a){t.call(this,"SerialPort",a,1048576);this.w=a.upperCase;"string"==typeof this.w&&(this.w="true"==this.w);this.u=!0;this.i=[];var b=a.binding;if("console"!=b){var c;a=Ad;b&&(void 0===c&&(c="Panel"),(c=y(c,this.id))&&(b=c.F[b])&&this.da(null,a,b))}this.b=this.B=null;this.exports={connect:this.lb,receiveData:this.Na,receiveStatus:this.Lb,setConnection:this.Ob}}p(zd,t);l=zd.prototype;
|
||||
l.da=function(a,b,c){var d=this;switch(b){case Ad:return this.F[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?q.Wa:q.pb:46==c?b=q.Wa:a.ctrlKey&&c>=q.Va&&c<=q.sb&&(b=c-(q.Va-q.mb));b&&(a.preventDefault&&a.preventDefault(),d.Na(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==q.ob&&(b=q.nb);d.Na(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
|
||||
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R];
|
||||
function vd(a){t.call(this,"ROM",a,128);this.S=this.b=null;this.B=+a.addr;this.u=+a.size;this.i=a.alias;"string"==typeof this.i&&(this.i=eval(this.i));this.w=a.file;this.G=Sa(this.w);if(this.w){a=this.w;var b=Ta(this.G);"json"!=b&&"hex"!=b&&(a=Va()+"/api/v1/dump?file="+this.w+"&format=bytes&decimal=true");var c=this;jb(a,null,!0,function(a,b,f){f?(c.Y("Unable to load ROM resource (error "+f+": "+a+")"),c.w=null):(ta(c.Ka,a,b),(a=kb(a,b))?(c.b=a.W,c.S=a.S):c.w=null);wd(c)})}}p(vd,t);
|
||||
vd.prototype.ta=function(a,b,c,d){this.C=b;this.g=c;this.A=d;wd(this)};vd.prototype.ma=function(){this.S&&(this.A&&xd(this.A,this.id,this.B,this.u,this.S),delete this.S);return!0};vd.prototype.da=function(){return!0};
|
||||
function wd(a){if(!Ma(a)){if(a.w){if(!a.b||!a.C)return;a.u||(a.u=a.b.length);if(a.b.length!=a.u)Ka(a,"ROM size ("+F(a.b.length,8,!0)+") does not match specified size ("+F(a.u,8,!0)+")");else{var b;b=a.B;if(pc(a.C,b,a.u,Nc)){var c;for(c=0;c<a.b.length;c++)kc(a.C,b+c,a.b[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.i?b.push(a.i):null!=a.i&&a.i.length&&(b=a.i);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.C,g=d.u,h=[],k=d.B>>>f.i;0<g&&k<f.b.length;)h.push(f.b[k++]),g-=16384;f=d.C;d=d.u;g=0;for(e>>>=
|
||||
f.i;0<d&&e<f.b.length;){k=h[g++];if(!k)break;f.b[e++]=k;d-=16384}}delete a.b}}}D(a)}}vb(function(){for(var a=C(document,B,"rom"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new vd(d);ya(d,c)}});
|
||||
function yd(a){t.call(this,"RAM",a);this.S=this.i=null;this.u=+a.addr;this.w=+a.size;this.ja=a.load;this.ia=a.exec;null!=this.ja&&(this.ja=+this.ja);null!=this.ia&&(this.ia=+this.ia);this.B=!1;this.b=a.file;this.G=Sa(this.b);if(this.b){a=this.b;var b=Ta(this.G);"json"!=b&&"hex"!=b&&(a=Va()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;jb(a,null,!0,function(a,b,f){f?(c.Y("Unable to load RAM resource (error "+f+": "+a+")"),c.b=null):(ta(c.Ka,a,b),(a=kb(a,b))?(c.i=a.W,c.S=a.S,
|
||||
null==c.ja&&(c.ja=a.ja),null==c.ia&&(c.ia=a.ia)):c.b=null);zd(c)})}}p(yd,t);yd.prototype.ta=function(a,b,c,d){this.C=b;this.g=c;this.A=d;zd(this)};yd.prototype.ma=function(a,b){this.S&&(this.A&&xd(this.A,this.id,this.u,this.w,this.S),delete this.S);b||this.reset();return!0};yd.prototype.da=function(){return!0};
|
||||
function zd(a){if(a.C&&(!a.B&&a.w&&(pc(a.C,a.u,a.w,1)?a.B=!0:a.w=0),!Ma(a))){if(!a.B)w("No RAM allocated");else if(a.b){if(!a.i||!a.C)return;Ad(a,a.i,a.ja,a.ia,a.u)?a.status('Loaded image "'+a.G+'"'):a.Y('Error loading image "'+a.G+'"')}D(a)}}
|
||||
yd.prototype.reset=function(){if(this.B){for(var a=this.C,b=this.u,c=this.w,d=b&16383,b=b>>>a.i;0<c&&b<a.b.length;){var e=a.b[b],f=c,g=0,h,d=d||0,g=g||0;0>g&&g>=ma&&(g+=la);g=Math.trunc(Math.abs(g))%la;void 0===f&&(f=e.size);for(h=d;f--&&h<e.size;h++)e.D(g,d,e.v+d);c-=16384;b++;d=0}this.i&&Ad(this,this.i,this.ja,this.ia,this.u,!this.A)}};
|
||||
function Ad(a,b,c,d,e,f){var g=!1,h=!1;if(null==c)for(var k=0;k<b.length-1;){var m=b[k]&255|(b[k+1]&255)<<8;if(m)if(m&255){var n=k;if(1!=m){E(a,"invalid signature ("+G(m)+") at offset "+G(n),4096);break}if(k+6>=b.length){E(a,"invalid block at offset "+G(n),4096);break}for(var k=k+2,r=b[k++]&255|(b[k++]&255)<<8,u=b[k++]&255|(b[k++]&255)<<8,m=m+((r&255)+(r>>8)+(u&255)+(u>>8)),N=k,Da=r-=6;0<r&&k<b.length;)m+=b[k++]&255,r--;if(r||k>=b.length){E(a,"insufficient data for block at offset "+G(n),4096);break}m+=
|
||||
b[k++]&255;if(m&255){E(a,"invalid checksum ("+F(m,2,!0)+") for block at offset "+G(n),4096);break}if(Da)for(E(a,"loading "+G(Da)+" bytes at "+G(u)+"-"+G(u+Da),4096);Da--;)kc(a.C,u++,b[N++]);else u&1?g=!0:null==d&&(d=u),null!=d&&E(a,"starting address: "+G(d),4096);h=!0}else k++;else k+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h<b.length;h++)kc(a.C,c+h,b[h]);h=!0}if(h){if(null==d||g)a.g.R(),f=!1;null!=d&&(a=a.g,a.$a=d,a.i=d%Jb,f?a.j.T?a.j.J||ec(a):a.j.X=!0:a.A&&a.j.T?a.R()||a.D.j.reset||(ad(a.A),
|
||||
K(a.D,-1)):!1===f&&a.R(),!a.j.J&&a.wa&&a.wa.stop())}return h}vb(function(){for(var a=C(document,B,"ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new yd(d);ya(d,c)}});
|
||||
function Bd(a){t.call(this,"SerialPort",a,1048576);this.w=a.upperCase;"string"==typeof this.w&&(this.w="true"==this.w);this.u=!0;this.i=[];var b=a.binding;if("console"!=b){var c;a=Cd;b&&(void 0===c&&(c="Panel"),(c=y(c,this.id))&&(b=c.F[b])&&this.ea(null,a,b))}this.b=this.B=null;this.exports={connect:this.mb,receiveData:this.Na,receiveStatus:this.Mb,setConnection:this.Pb}}p(Bd,t);l=Bd.prototype;
|
||||
l.ea=function(a,b,c){var d=this;switch(b){case Cd:return this.F[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?q.Xa:q.qb:46==c?b=q.Xa:a.ctrlKey&&c>=q.Wa&&c<=q.tb&&(b=c-(q.Wa-q.nb));b&&(a.preventDefault&&a.preventDefault(),d.Na(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==q.pb&&(b=q.ob);d.Na(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
|
||||
a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.Na(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};l.ta=function(a,b,c,d){this.D=a;this.C=b;this.g=c;this.A=d;D(this)};
|
||||
l.lb=function(a){if(!this.b){var b=Xc(this.D,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Za(c[0]);if(d!=this.Ja)return;c=Za(c[1]);if(this.b=xa(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.u);if(this.B=e.receiveData){this.u=a;this.status("Connected "+this.Ka+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};l.la=function(a,b){if(!b)if(this.lb(this.u),!a)this.reset();else if(!this.restore(a))return!1;return!0};
|
||||
l.ca=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){var a=new J(this);a.set(0,[]);return a.data()};l.restore=function(){return!0};l.Na=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d<a.length;d++){c=b;b=a.charCodeAt(d);if(10==b){if(13==c)continue;b=13}this.i.push(b)}else this.i=this.i.concat(a);return!0};l.Lb=function(){};l.Ob=function(a,b){return this.b?!1:(this.b=a,this.B=b,!0)};var Ad="buffer";
|
||||
vb(function(){for(var a=C(document,B,"serial"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new zd(d);ya(d,c)}});function Bd(a){t.call(this,"Debugger",a);this.ba=+a.base||16;this.na=!1;this.B=0;this.O=!1;this.w=-1;this.u=[];this.Z={}}p(Bd,t);Bd.prototype.kb=function(){return-1};Bd.prototype.Ua=function(){};
|
||||
function Cd(a,b,c,d){if(c)if(b){0>a.w&&a.u.length&&(a.w=0);if(0>a.w||b!=a.u[a.w])a.u.splice(0,0,b),a.w=0;a.w--}else a.O?b="end":b=a.u[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Za(b.substring(c,f))),c=f+1}}return a}
|
||||
function Dd(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
|
||||
l.mb=function(a){if(!this.b){var b=Yc(this.D,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Za(c[0]);if(d!=this.Ja)return;c=Za(c[1]);if(this.b=xa(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.u);if(this.B=e.receiveData){this.u=a;this.status("Connected "+this.Ka+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};l.ma=function(a,b){if(!b)if(this.mb(this.u),!a)this.reset();else if(!this.restore(a))return!1;return!0};
|
||||
l.da=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){var a=new J(this);a.set(0,[]);return a.data()};l.restore=function(){return!0};l.Na=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d<a.length;d++){c=b;b=a.charCodeAt(d);if(10==b){if(13==c)continue;b=13}this.i.push(b)}else this.i=this.i.concat(a);return!0};l.Mb=function(){};l.Pb=function(a,b){return this.b?!1:(this.b=a,this.B=b,!0)};var Cd="buffer";
|
||||
vb(function(){for(var a=C(document,B,"serial"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Bd(d);ya(d,c)}});function Dd(a){t.call(this,"Debugger",a);this.ca=+a.base||16;this.na=!1;this.B=0;this.O=!1;this.w=-1;this.u=[];this.aa={}}p(Dd,t);Dd.prototype.lb=function(){return-1};Dd.prototype.Va=function(){};
|
||||
function Ed(a,b,c,d){if(c)if(b){0>a.w&&a.u.length&&(a.w=0);if(0>a.w||b!=a.u[a.w])a.u.splice(0,0,b),a.w=0;a.w--}else a.O?b="end":b=a.u[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Za(b.substring(c,f))),c=f+1}}return a}
|
||||
function Fd(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
|
||||
case "^":d=f^e;break;case "|":d=f|e;break;case "&&":d=f&&e?1:0;break;case "||":d=f||e?1:0;break;default:return!1}a.push(d|0)}return!0}
|
||||
function Ed(a,b,c){var d;if(b){b=Fd(a,b);for(var e=0,f=!1,g=b,h=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<m.length;){var n=m[e++],r=n.length,n=Za(n);if(!n){f=!0;break}n=Gd(a,n,null,!1===c);if(void 0===n){f=!0;c=!1;break}h.push(n);if(e==m.length)break;var n=m[e++],u=n.length;k.length&&Hd[n]<Hd[k[k.length-1]]&&Dd(h,k,1);k.push(n);b=b.substr(r+u)}Dd(h,k)&&1==h.length||(f=!0);f?c&&a.f("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),c&&Id(a,null,
|
||||
d))}return d}function Fd(a,b){for(var c,d=a.na?"(":"{",e=a.na?")":"}",f=new RegExp(a.na?"\\((.*?)\\)":"\\{(.*?)\\}");(c=b.match(f))&&!(0<=c[1].indexOf(d));){var g=Ed(a,c[1]);b=b.replace(d+c[1]+e,null!=g?M(a,g):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)b=b.replace("["+c[1]+"]","unimplemented");for(a=b;b=a.match(/\$([a-z]+)/i);){c=null;switch(b[1].toLowerCase()){case "ops":c=0}if(null==c)break;a=a.replace(b[0],c.toString())}return a}
|
||||
function Gd(a,b,c,d){var e;null!=b?(e=a.kb(b),0<=e?e=a.Ua(e):(e=a.Z[b],null==e&&(e=Qa(b,a.ba))),null!=e||d||a.f("invalid "+(c?c:"value")+": "+b)):d||a.f("missing "+(c||"value"));return e}
|
||||
function Id(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f=4,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++){g&&(g=","+g);var k=d&255,m=void 0,n=8,r="";n?32<n&&(n=32):n=32;for(var u=null==k||isNaN(k),N=m=m||n;0<n--;)N||(r=","+r,N=m),r=(u?"?":k&1?"1":"0")+r,k>>=1,N--;g=r+g;d>>=8}d=F(c,0,!0)+" "+c+". "+Ra(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.f((null!=b?b+": ":"")+d);return e}
|
||||
function Jd(a,b){if(b)return Id(a,b,a.Z[b]);var c=0;for(b in a.Z)Id(a,b,a.Z[b]),c++;return 0<c}function M(a,b,c){c=void 0===c?0:c;switch(a.ba){case 8:a=Ra(b,0<c?(c+2)/3|0:0);break;case 10:a=b;b=0<c?Math.ceil(.3*c):0;var d="";b?10<b&&(b=10):b=a&-65536?10:5;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(0>a&&-1<a&&(a=-1);0<b--;)d=String.fromCharCode(a%10+48)+d,a/=10;a=d;break;default:a=F(b,0<c?c+3>>2:0)}0>c?c=a.replace(/^0+([0-9A-F]+)$/i,"$1"):c=a;return c}
|
||||
var Hd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function Kd(a){Bd.call(this,a);this.ya=!1;this.na=!0;this.I=T();this.va=T();this.N=T();this.H=[];this.b=this.K=this.G=[];Ld(this);this.P=this.ga=0;this.i=[];this.qa=void 0;Md(this);this.A=this;this.oa={};this.V=this.fb=0;this.U=null;this.M=[];Nd(this,a.messages);this.sa=a.commands;this.L=0;this.Ba=this.ra=null;this.B=this.Aa=this.za=this.fa=this.pa=0;this.ea=this.aa=null;var b=this;window?void 0===window[B]&&(window[B]=function(a){return bd(b,a)}):void 0===global[B]&&(global[B]=function(a){return bd(b,
|
||||
a)})}p(Kd,Bd);function Y(a){a=a&&a.v;null==a&&(a=-1);return a}function T(a,b,c){return{v:void 0===a?null:a,ub:void 0===b?!1:b,ka:!1,ba:c}}function Od(a){return[a.v,a.ub,a.ba,a.ka,a.Oa]}function Pd(a,b){var c=T(b[0],b[1],b[2]);c.ka=b[3];b[4]&&(c.cb=Cd(a,c.Oa=b[4]));return c}l=Kd.prototype;
|
||||
l.ta=function(a,b,c,d){this.C=b;this.D=a;this.g=c;this.ea=a.u;(a=Xc(a,"messages"))&&Nd(this,a);Qd(this,function(a){a:{var b=d.C.b,c=a[0],e=a=0,k=b.length;if(c){a=Y(Z(d,c));if(-1===a){d.f("invalid address: "+c);break a}e=a>>>d.C.i;k=1}d.f("blockid physical blockaddr used size type");d.f("-------- --------- --------- ------ ------ ----");for(var c=-1,m=0;k--;){var n=b[e];n.type==c?m++||d.f("..."):(c=n.type,m=rc[c],n&&d.f(F(n.id,8)+" %"+F(e<<d.C.i,8)+" %"+F(n.v,8)+" "+G(n.Ga)+" "+
|
||||
G(n.size)+" "+m),c!=Lc&&(c=-1),m=0);a+=16384;e++}}});D(this)};
|
||||
l.da=function(a,b,c){var d=this;switch(b){case "debugInput":return this.aa=this.F[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",bd(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.w<d.u.length-1&&(b=d.u[++d.w])):40==a.keyCode&&(0<d.w?b=d.u[--d.w]:(b="",d.w=-1)),null!=b){var e=b.length;c.value=b;c.setSelectionRange(e,e)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.F[b]=c,tb(c,function(){if(d.aa){var a=d.aa.value;
|
||||
d.aa.value="";bd(d,a,!0);return!0}return!1}),!0;case "step":return this.F[b]=c,tb(c,function(a){var b=!1;Na(d,!0)||(Oa(d,!0),b=ec(d,a?1:0,null),Oa(d,!1));return b}),!0}return!1};function ad(a){if(a.aa){var b=0,c=0;window&&(b=window.scrollX,c=window.scrollY);a.aa.focus();window&&window.scrollTo(b,c)}}l.xa=function(a,b){var c=-1,d=Y(a);-1!==d&&(c=kc(this.C,d),b&&null!=a.v&&(a.v+=b||1));return c};l.Xa=function(a,b,c){var d=Y(a);-1!==d&&(jc(this.C,d,b),c&&null!=a.v&&(a.v+=c||1),K(this.D,-1))};
|
||||
function Z(a,b,c){var d;c=(c?a.I:a.va).v;var e,f;if(void 0!==b){b=Fd(a,b);"%"==b.charAt(0)&&(e=!0,b=b.substr(1));d=b;var g,h;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.H.length;c++){var k=a.H[c].S[d];if(null!=k){h=k.o;break}}null!=h&&(g=T(h));if(d=g)return d;0<=b.indexOf("0x")?f=16:0<=b.indexOf("0o")?f=8:0<=b.indexOf(".")&&(f=10);c=Ed(a,b,void 0)}null!=c&&(d=T(c,e,f));return d}function Rd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.cb=Cd(a,b.Oa=c[2]))}
|
||||
function Sd(a){return Ra(a/Jb,6)+" "+Ra(a%Jb,6)}function Nd(a,b){a.A=a;a.V=a.fb=536870916;a.U=null;a.M=[];b=Cd(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in H){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d<e;d++)if(d in b&&b[d]===c)break a;d=-1}0<=d&&(a.V|=H[c],a.f(c+" messages enabled"))}}function Qd(a,b){for(var c in H)if(16==H[c]){a.oa[c]=b;break}}l.kb=function(a){return Td.indexOf(a.toUpperCase())};
|
||||
l.Ua=function(a){var b;switch(a){case Ud:b=this.g.i}return b};l.message=function(a,b){b&&(a+=" @"+M(this,T(this.g.na).v));if(!this.U||a!=this.U)if(this.U=a,this.V&1073741824)this.M.push(a);else{var c;if(this.V&-2147483648&&this.g&&(c=this.g.j.J)||Na(this,!0))this.R(),c&&(a+=" (cpu halted)");this.f(a);this.g&&(a=this.g,jd(a),a.P=0,a.D&&K(a.D,void 0))}};
|
||||
function Md(a){var b;if(!od(a))a.i&&a.i.length&&a.f("instruction history buffer freed"),a.P=0,a.i=[];else if(!a.i||!a.i.length){a.i=Array(Vd);for(b=0;b<a.i.length;b++)a.i[b]=T();a.P=0;a.f("instruction history buffer allocated")}}function Wd(a,b,c){if(!Xd(a,c))return!1;dc(a.g,b);return!0}
|
||||
function ec(a,b,c,d){if(!Xd(a))return!1;var e="";null===c&&(e=(c=!a.ra||"tr"==a.ra)?"tr":"t");a.B=0;b||od(a)&&pd(a,a.g.i,0);try{b=hd(a.g,b);var f=a.g.Ia(b);0<f&&(fc(a.g,f),a.B+=f,gc(a.g,f,!0),hc(a.g,f),a.fa++)}catch(g){"number"!=typeof g&&(a.B=0,Ka(a.g,g.stack||g.message))}!1!==d&&(a.ea&&a.ea.stop(),K(a.D,-1));$c(a,c||!1,e);return 0<a.B}l.R=function(a){this.g&&this.g.R(a)};function $c(a,b,c){a.ya&&(void 0===b&&(b=!0),c&&a.f(ye+c),a.I=T(a.g.i),b&&1!=a.L?Ae(a):Be(a))}
|
||||
function Xd(a,b){var c;(c=!a.g||!Ma(a.g))||(c=a.g,c.j.T?c=!0:(c.f(c.toString()+" not powered"),c=!1),c=!c);return c||a.g.j.J?(b||a.f("cpu busy or unavailable, command ignored"),!1):!La(a.g)}l.la=function(a,b){return!b&&(this.reset(!0),a)?this.restore(a):!0};l.ca=function(a,b){b&&this.f(a?"suspending":"shutting down");return a?this.save():!0};l.reset=function(a){Md(this);this.fa=0;this.U=null;this.B=0;this.I=T(this.g.i);this.j.J=!1;Ce(this);a||$c(this)};
|
||||
l.save=function(){var a=new J(this);a.set(0,Od(this.I));a.set(1,Od(this.N));a.set(2,[this.u,this.O,this.V]);a.set(3,this.H);return a.data()};l.restore=function(a){var b=0;void 0!==a[2]&&(this.I=Pd(this,a[b++]),this.N=Pd(this,a[b++]),this.u=a[b][0],"string"==typeof this.u&&(this.u=[this.u]),this.O=a[b][1],this.V|=a[b][2]);a[3]&&(this.H=a[3]);return!0};l.start=function(a,b){this.L||this.f("running");this.j.J=!0;this.za=a;this.Aa=b};
|
||||
l.stop=function(a,b){if(this.j.J){this.j.J=!1;this.B=b-this.Aa;if(!this.L){b="stopped";if(this.B){a-=this.za;var c=0<a?Math.round(1E3*this.B/a):0;b+=" (";od(this)&&(b+=this.fa+" instructions, ",this.fa=0);b+=this.B+" cycles, "+a+" ms, "+c+" hz)"}else Pa(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.f(b)}$c(this,!0);ad(this);Ce(this,this.g.i);this.U=null}};function od(a){return 1<a.b.length||!!a.ga}
|
||||
function pd(a,b,c){var d=-1;if(!c&&(d=a.g.ma(b),2756==d>>23&&a.g.na==b)){b=a.g;var e=b.i;b.i=(e+1)%Jb;b=e}if(0<c&&(a.ga&&!--a.ga||Uc(a,b,1,a.b)))return!0;0<=c&&a.i.length&&(a.fa++,0>d&&(d=a.g.ma(b)),0<=d&&(c=a.i[a.P],c.v=b,c.ka=!1,c.ba=void 0,++a.P==a.i.length&&(a.P=0)));return!1}
|
||||
function De(a,b,c,d){var e=T(b.v),f=a.xa(b,1),g,h,k,m=0,n=f/Mb|0,r;for(r in Ee)if(g=Ee[r][n&r]){h=+r;n>>=6;switch(h){case 32512:k=Fe;m=n&3;break;case 32256:k=Ge;m=n&7;break;case 29248:k=He,m=(n&48)>>2|(n&6)>>1}break}k=k&&k[m]||"";"S"==k&&g>Ie&&(k="B");k=Je[g||0]+k;k=Ya(k,8);g?(k=28700==h?k+M(a,f/Nb&127,-1):k+M(a,f>>23&15,-1),k+=",",f&4194304&&(k+="@"),k+=M(a,f&262143,-1),(f=f>>18&15)&&(k+="("+M(a,f,-1)+")")):k+=Sd(f);f=k;g="";h=M(a,e.v)+":";if(-1!==e.v&&-1!==b.v){do if(k=a.xa(e,1),g+=" "+Sd(k),null==
|
||||
e.v)break;while(e.v!=b.v)}h+=Ya(g,16)+f;c&&(h=Ya(h,60)+";"+(c||""),h=a.g.j.Ca?h+("cycles="+cd(a.g).toString()+" cs="+F(a.g.pa)):h+(null!=d?"="+d.toString():""));return h}function Ld(a){var b,c;a.b=["bp"];if(a.K)for(b=1;b<a.K.length;b++){c=a.K[b];c=Y(c);var d=a.C;Tc(d.b[c>>>d.i],!1)}a.K=["br"];if(a.G)for(b=1;b<a.G.length;b++)c=a.G[b],c=Y(c),d=a.C,Tc(d.b[c>>>d.i],!0);a.G=["bw"];a.pa=0;a.ga=0}
|
||||
l.wa=function(a,b,c){var d=!0;c||Ke(this,a,b,!1,!0);if(a!=this.b){var e=Y(b);if(-1===e)this.f("invalid address: "+M(this,b.v)),d=!1;else{var f=this.C;f.b[e>>>f.i].wa(e&16383,a==this.G)}}d&&(a.push(b),c?b.ka=!0:(Le(this,a,a.length-1,"set"),Md(this)));return d};function Ke(a,b,c,d,e){var f=!1;c=Y(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==Y(h)&&(!d||h.ka)){f=!0;h.ka||e||Le(a,b,g,"cleared");b.splice(g,1);b!=a.b&&(d=a.C,Tc(d.b[c>>>d.i],b==a.G));h.ka||Md(a);break}}return f}
|
||||
function Me(a,b){for(var c=1;c<b.length;c++)Le(a,b,c);return b.length-1}function Le(a,b,c,d){c=b[c];a.f(b[0]+" "+M(a,c.v)+(d?" "+d:c.Oa?' "'+c.Oa+'"':""))}function Ce(a,b){if(void 0!==b)Uc(a,b,1,a.b,!0),a.L=0;else for(b=1;b<a.b.length;b++){var c=a.b[b];if(c.ka){if(!Ke(a,a.b,c,!0))break;b=0}}}
|
||||
function Uc(a,b,c,d,e){var f=!1;if(!a.pa++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.ka)for(var k=Y(h)&(d==a.b?65535:-1),m=0;m<c;m++)if(b+m==k){var n,f=!0;h.ka&&(Ke(a,d,h,!0),e=!0);if(n=h.cb){for(var f=!1,r=0;r<n.length;r++)if(!Ne(a,n[r],!0)){if(n[r].indexOf("if")){f=!0;break}for(var u=r+1;u<n.length&&n[u].indexOf("else");u++)r++;if(u==n.length){f=!0;break}}a.g.j.J||(f=!0)}if(f){e||Le(a,d,g,"hit");break}}}a.pa--;return f}l.gb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function vd(a,b,c,d,e){var f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var k=h.o,m=h.a;if(void 0!==k){var n=f,k=[k>>>0,g],r=$a(n,k,a.gb);0>r&&n.splice(-(r+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.H.push({ad:b,v:c,wb:d,S:e,eb:f})}function Oe(a,b,c){var d=[],e=Y(b)>>>0;for(b=0;b<a.H.length;b++){var f=a.H[b],g=f.v>>>0,h=f.wb;if(e>=g&&e<g+h){e=$a(f.eb,[e-g],a.gb);0<=e?Pe(a,b,e,d):c&&(e=~e,Pe(a,b,e-1,d),Pe(a,b,e,d));break}}return d}
|
||||
function Pe(a,b,c,d){var e={},f=a.H[b].eb,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.H[b].S[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}function Qe(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Jd(a)||a.f("no variables"),!0;if(!c[2])return Jd(a,c[1]);if(!c[3])return delete a.Z[c[1]],!0;b=Ed(a,c[3]);return void 0!==b?(a.Z[c[1]]=b,!0):!1}a.f("invalid assignment:"+b);return!1}
|
||||
function Re(a,b,c){var d=null;if(b=Z(a,b,!0)){var e=Oe(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.v-e[1])&&(g=" + "+G(f)),f=e[0]+" ("+M(a,e[1])+")"+g,c&&a.f(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.v)&&(g=" - "+G(f)),f=e[4]+" ("+M(a,e[5])+")"+g,c&&a.f(f),d||(d=f))}else c&&a.f("no symbols")}return d}
|
||||
function Ae(a,b){var c;if(b&&"?"==b[1])a.f("register commands:"),a.f("\tr\tdump registers"),a.f("\trm\tdump misc registers"),a.f("\trx [#]\tset flag or register x to [#]");else{var d=!1,e=a.g;null==c&&(c=!0);if(b&&1<b.length){var f=b[1];if("m"==f)d=!0;else{var g=f.indexOf("=");if(0<g)b=f.substr(g+1),f=f.substr(0,g);else if(2<b.length)b=b[2];else{a.f("missing value for "+b[1]);return}g=Ed(a,b);if(void 0===g)return;switch(f.toUpperCase()){case "PC":e.i=g%Jb;a.I=T(e.i);break;default:a.f("unknown register: "+
|
||||
f);return}K(a.D);a.f("updated registers:")}}f=Ud;(g=Td[f]||"")&&(g+="="+M(a,a.Ua(f))+" ");f=""+g;d&&(f+="\n");a.f(f);c&&(a.I=T(e.i),Be(a,M(a,a.I.v)))}}function Se(a,b){b=Za(b);var c=b.match(/^(['"])(.*?)\1$/);c?1<c[2].length?a.f(c[2]):Id(a,null,c[2].charCodeAt(0)):Ed(a,b,!0)}
|
||||
function Te(a,b,c){if("?"==c)a.f("trace commands:"),a.f("\tt [#]\ttrace # instructions"),a.f("\ttr [#]\ttrace # instructions with register updates"),a.f("\ttc [#]\ttrace # cycles"),a.f("note: bn [#] breaks after # instructions without updates");else{var d="t"!=b;c=Gd(a,c,null,!0)||1;var e=0;"tc"==b&&(e=c,c=1);a.ra=b;sb(c,function(){return Oa(a,!0)&&ec(a,e,d,!1)},function(){a.ea&&a.ea.stop();K(a.D,-1);Oa(a,!1)})}}
|
||||
function Be(a,b,c,d){if(b=Z(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=Gd(a,c.substr(1)),null!=c&&(d=c);else{d=Z(a,c,!0);if(!d||d.v<b.v)return;e=d.v-b.v;if(256<e){a.f("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=Na(a,!1)||a.L?a.B:null;var g=null!=f?"cycles":null,h=Oe(a,b),k=b.v;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.f(m)}h[3]&&(g=h[3],f=null);f=De(a,b,g,f);a.f(f);a.I=b;e-=b.v-k;c++}}}
|
||||
function Ne(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.f(ye+b):(a.O&&(a.f("ended assemble at "+M(a,a.N.v)),a.I=a.N,a.O=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.U=null;if(Ma(a)&&0<b.length){a.O&&(b="a "+M(a,a.N.v)+" "+b);var f=!1,g=b.replace(/ +/g," ").split(" ");g[0]=g[0].toLowerCase();if(g&&g.length)for(var h=g[0],k=h.charAt(0),m=1;m<h.length;m++){var n=h.charAt(m);if("?"==k||"r"==k||"a">n||"z"<n){g[0]=h.substr(m);g.unshift(h.substr(0,m));break}}switch(g[0].charAt(0)){case "a":var r=
|
||||
Z(a,g[1],!0);if(r)if(a.N=r,void 0===g[2])a.f("begin assemble at "+M(a,r.v)),a.O=!0,K(a.D);else{var u;a.f("not supported yet");u=[];if(u.length){for(var N=0;N<u.length;N++)a.Xa(r,u[N],1);a.f(De(a,a.N))}}break;case "b":a:{var Da=g[0],Fa=g[1],vf=b;if("?"==Fa)a.f("breakpoint commands:"),a.f("\tbp #\tset exec breakpoint"),a.f("\tbr #\tset read breakpoint"),a.f("\tbw #\tset write breakpoint"),a.f("\tbc #\tclear breakpoint (* to clear all)"),a.f("\tbl\tlist all breakpoints"),a.f("\tbn [#]\tbreak after # instruction(s)");
|
||||
else{var na=Da.charAt(1);if("l"==na){var sc;sc=0+Me(a,a.b);sc+=Me(a,a.K);(sc+=Me(a,a.G))||a.f("no breakpoints")}else if("n"==na){var Yd=+Fa||0;Fa&&(a.ga=Yd);a.f("break after "+Yd+" instruction(s)")}else if(void 0===Fa)a.f("missing breakpoint address");else{var I=T();if("*"!=Fa&&(I=Z(a,Fa,!0),!I))break a;"c"==na?null==I.v?(Ld(a),a.f("all breakpoints cleared")):Ke(a,a.b,I)||Ke(a,a.K,I)||Ke(a,a.G,I)||a.f("breakpoint missing: "+M(a,I.v)):null!=I.v&&(Rd(a,I,vf),"p"==na?a.wa(a.b,I):"r"==na?a.wa(a.K,I):
|
||||
"w"==na?a.wa(a.G,I):a.f("unknown breakpoint command: "+na))}}}break;case "c":a.ja&&(a.ja.value="");break;case "d":a:{var Ga,Ha=g[0],U=g[1],ga=g[2],wf=g[3];if("?"==U){var Ia="";for(Ga in H)a.oa[Ga]&&(Ia&&(Ia+=","),Ia+=Ga);Ia+=",state,symbols";a.f("dump memory commands:");a.f("\tdw [a] [n] dump n words at address a");a.f("\tds [a] [n] dump n words at address a as JSON");a.f("\tdh [p] [n] dump n instructions from history position p");Ia.length&&a.f("dump extension commands:\n\t"+Ia)}else if("state"==
|
||||
U){var tc=Ue(a.D,!0);"console"==ga?console.log(tc):(a.ja&&(a.ja.value=""),tc&&a.f(tc))}else if("symbols"==U)for(var uc=0;uc<a.H.length;uc++){var vc=a.H[uc],Ja;for(Ja in vc.S)if("."!=Ja.charAt(0)){var Zd=vc.S[Ja].o;if(void 0!==Zd){var $d=vc.S[Ja].l;$d&&(Ja=$d);a.f(M(a,Zd)+" "+Ja)}}}else{if("d"==Ha){for(Ga in H)if(g[1]==Ga){var ae=a.oa[Ga];ae?(g.shift(),g.shift(),ae(g)):a.f("no dump registered for "+U);break a}U||(Ha=a.Ba||"dw")}else a.Ba=Ha;if("dh"==Ha){var be=U,ce=ga,de="",ee=0,S=a.P,V=a.i;if(V.length){var O=
|
||||
+be||a.qa,bb=+ce||10;isNaN(O)?O=bb:de="more ";O>V.length&&(a.f("note: only "+V.length+" available"),O=V.length);S-=O;0>S&&(null==V[V.length-1].v?(O=S+O,S=0):S+=V.length);var wc=[];"call"==ce&&(bb=1E5,wc=["CALL"]);for(void 0!==be&&a.f(O+" instructions earlier:");0<bb&&S!=a.P;){var fe=V[S++];if(null==fe.v)break;var cb=T(fe.v),xf=O--,ge=De(a,cb,"history",xf);(!wc.length||0<=ge.indexOf(wc[0]))&&a.f(ge);cb.Ta&&(S+=cb.Ta,bb-=cb.Ta,O-=cb.Ta);S>=V.length&&(S=0);a.qa=O;ee++;bb--}}ee||(a.f("no "+de+"history available"),
|
||||
a.qa=void 0)}else{var oa=Z(a,U);if(oa){var pa=0,he="ds"==Ha;if(ga){if("l"==ga.charAt(0))ga=ga.substr(1)||wf,pa=Gd(a,ga);else{var ie=Z(a,ga);ie&&(pa=ie.v-oa.v)}0>pa&&(pa=0);65536<pa&&(pa=65536)}var yf=a.ba;oa.ba&&(a.ba=oa.ba);for(var je="db"==Ha?1:2,xc=pa||32,yc=1==je?2:4,zf=(xc+yc-1)/yc|0||1,qa="";zf--&&0<xc;){for(var ra="",ke="",U=M(a,oa.v),le=yc;0<le--&&0<xc--;){var Eb=a.xa(oa,1);he?(ra&&(ra+=","),ra+=Eb):(ra+=Sd(Eb),ra+=" ");for(var me=0;1==je&&6>me;me++)ke+=String.fromCharCode((Eb%64|0)+32),
|
||||
Eb/=64}qa&&(qa+="\n");qa=he?qa+(ra+","):qa+(U+": "+ra+(0>le?" "+ke:""))}qa&&a.f(qa);a.va=oa;a.ba=yf}}}}break;case "e":if("else"==g[0])break;var ne,oe,pe=g[0],zc=g[1];"e"==pe||"ew"==pe?(ne=a.xa,oe=a.Xa):zc=null;if(null==zc)a.f("edit memory commands:"),a.f("\tew [a] [...] edit words at address a");else{var Fb=Z(a,zc);if(Fb)for(var Gb=2;Gb<g.length;Gb++){var Ac=Ed(a,g[Gb]);if(void 0===Ac){a.f("unrecognized value: "+g[Gb]);break}a.f("changing "+M(a,Fb.v)+" from "+Sd(ne.call(a,Fb))+" to "+Sd(Ac));oe.call(a,
|
||||
Fb,Ac,1)}}break;case "g":a:{var qe=g[1],Af=b;if(void 0!==qe){var Bc=Z(a,qe,!0);if(!Bc)break a;Rd(a,Bc,Af);a.wa(a.b,Bc,!0)}Wd(a,!0,c)}break;case "h":a.j.J?(c||a.f("halting"),a.R()):Na(a,!0)||c||a.f("already halted");break;case "i":if("if"==g[0]){var Cc;var db=b.substr(2),db=Za(db);Ed(a,db)?(c||a.f("true: "+db),Cc=!0):(c||a.f("false: "+db),Cc=!1);Cc||(d=!1);break}f=!0;break;case "k":var Bf=g[0];if("?"==g[1])a.f("stack trace commands:"),a.f("\tk\tshow frame addresses"),a.f("\tks\tshow symbol information");
|
||||
else{var Dc=0,Ec=T(),eb=T();for(a.f("stack trace for "+M(a,eb.v));10>Dc;){for(var sa=null,Cf=256;65536>eb.v>>>0;){Ec.v=a.xa(eb,2);if(null==eb.v||!Cf--)break;if(!(Ec.v&1)){for(var Df=a,Hb=Ec,re=null,fb=Hb.v,se=fb,Fc=1;6>=Fc&&fb;Fc++){if(2<Fc){Hb.v=fb;var Ib=De(Df,Hb);if(0<=Ib.indexOf("JSR")){var te=Ib.indexOf(" ");if(fb+(Ib.indexOf(" ",te+1)-te-1)/2==se){re=Ib;break}}}fb-=2}Hb.v=se;if(sa=re)break}}if(!sa||null==sa)break;var ue=null;if("ks"==Bf){var ve=sa.match(/[0-9A-F]+$/);ve&&(ue=Re(a,ve[0]))}sa=
|
||||
Ya(sa,50)+" ;"+(ue||"stack="+M(a,eb.v));a.f(sa);Dc++}Dc||a.f("no return addresses found")}break;case "l":if("ln"==g[0]){Re(a,g[1],!0);break}f=!0;break;case "m":a:{var W,X=null,z=g[1];"?"==z&&(z=void 0);if(void 0!==z){var ha=0;if("all"==z)ha=1879046143,z=null;else if("on"==z)X=!0,z=null;else if("off"==z)X=!1,z=null;else{"keys"==z&&(z="key");"kbd"==z&&(z="keyboard");for(W in H)if(z==W){ha=H[W];X=!!(a.V&ha);break}if(!ha){a.f("unknown message category: "+z);break a}}if(ha)if("on"==g[2])a.V|=ha,X=!0;
|
||||
else if("off"==g[2]&&(a.V&=~ha,X=!1,1073741824==ha)){for(var we=1E3<=a.M.length?a.M.length-1E3:0;we<a.M.length;)a.f(a.M[we++]);a.M=[]}}var Ef=0,gb="";for(W in H)if(!z||z==W){var Ff=!!(a.V&H[W]);if(null===X||X==Ff)gb&&(gb+=","),++Ef%10||(gb+="\n\t"),"key"==W&&(W="keys"),gb+=W}void 0===z&&a.f("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.f((null!==X?X?"messages on: ":"messages off: ":"message categories:\n\t")+(gb||"none"));Md(a)}break;case "p":if("print"==g[0]){Se(a,b.substr(5));
|
||||
break}var Gf=g[0];if("?"==g[1])a.f("step commands:"),a.f("\tp\tstep over instruction"),a.f("\tpr\tstep over instruction with register update");else{var Hf="pr"==Gf?1:0;if(a.L)a.f("step in progress");else{var xe=T(a.g.i);a.xa(xe);a.L?(a.wa(a.b,xe,!0),Wd(a)||(a.D&&gd(a.D),a.L=0)):Te(a,Hf?"tr":"t")}}break;case "r":if("reset"==b){a.D&&a.D.reset();break}Ae(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var hb=+g[2];if(8==hb||10==hb||16==hb)a.ba=hb;else{a.f("invalid base: "+hb);break}}a.f("default base: "+
|
||||
a.ba);break;case "cs":var ib;void 0!==g[3]&&(ib=+g[3]);switch(g[2]){case "int":a.g.U=ib;break;case "start":a.g.qa=ib;break;case "stop":a.g.aa=ib;break;default:a.f("unknown cs option");break a}void 0!==ib&&Zc(a.g);a.f("checksums "+(a.g.j.Ca?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(dd(a.g,+g[2])||a.f("warning: using 1x multiplier, previous target not reached"));a.f("target speed: "+(a.g.N.toFixed(2)+"Mhz")+" ("+a.g.O+"x)");break;default:if(g[1]){a.f("unknown option: "+g[1]);break}case "?":a.f("debugger options:"),
|
||||
a.f("\tbase #\t\tset default base to #"),a.f("\tcs int #\tset checksum cycle interval to #"),a.f("\tcs start #\tset checksum cycle start count to #"),a.f("\tcs stop #\tset checksum cycle stop count to #"),a.f("\tsp #\t\tset speed multiplier to #")}break;case "t":Te(a,g[0],g[1]);break;case "u":Be(a,g[1],g[2],8);break;case "v":if("var"==g[0]){Qe(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.f((Db||"PDP10")+" version 1.34.0 ("+a.g.ab+",RELEASE)");a.f(window?window.navigator.userAgent:"");break}f=!0;
|
||||
break;case "?":if(g[1]){Se(a,b.substr(1));break}var Gc="commands:",Hc;for(Hc in Ve)Gc+="\n"+Ya(Hc,9)+Ve[Hc];od(a)||(Gc+="\nnote: history disabled if no exec breakpoints");a.f(Gc);break;default:f=!0}f&&(a.f("unknown command: "+b),d=!1)}}catch(ze){a.f("debugger error: "+(ze.stack||ze.message)),d=!1}return d}function bd(a,b,c){b=Cd(a,b,c);for(var d in b)if(!Ne(a,b[+d]))return!1;return!0}
|
||||
var Ve={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Ie=20,Je=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOV MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CA JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO".split(" "),
|
||||
Ud=0,Td=["PC"],We={},Ee=(We[28672]={0:101},We[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},We[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Ie,9216:53,9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,
|
||||
17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},We[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},We[29248]={24576:79,24640:80,25088:81,25152:82},We[28700]={28672:93,28676:94,28680:95,28684:96,28688:97,28692:98,28696:99,28700:100},We),Fe=["","I","M","S"],Ge=" L E LE A GE N G".split(" "),
|
||||
He="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Vd=1E3,ye=">> ";vb(function(){for(var a=C(document,B,"debugger"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Kd(d);ya(d,c)}});
|
||||
function Xe(a,b,c){t.call(this,"Computer",a,33554432);this.j.T=!1;this.O=null;Ye(this,b);this.M=Xc(this,"autoPower",a,6);this.w=0;this.Z=+a.busWidth||+a.buswidth;this.K=this.G=this.L=null;this.I=this.U=!1;this.H=this.B=null;this.P=this.N=!1;this.aa=Xc(this,"url")||"";(Math.random()+.1).toString(36);this.i=Ze(this);if(this.g=y("CPU",this.id)){this.A=y("Debugger",this.id);this.C=new lc({id:this.Ka+".bus",busWidth:this.Z},this.g,this.A);var d,e=x(this.id);if((this.u=y("Panel",this.id))&&this.u.ja)for(b=
|
||||
0;b<e.length;b++)d=e[b],d.Y=this.u.Y,d.f=this.u.f,d.ja=this.u.ja;this.f(Db+" v1.34.0\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.ta&&d.ta(this,this.C,this.g,this.A);b=null;d=Xc(this,"resume",a);void 0!==d&&(1<d.length?b=this.G=d:this.b=parseInt(d,10));var f;if(a=Xc(this,"state")||(f=!0,a.state))this.L=b=a,f||(this.I=!0,this.b=$e),this.b&&(this.H=new J(this,"1.34.0"),af(this.H)?b=null:
|
||||
delete this.H);!b&&this.b&&(b=bf(this))&&(this.I=!0);if(b){var g=this;jb(b,null,!0,function(a,b,c){c?(g.G=null,g.I=!1,g.Y("Unable to load machine state from server (error "+c+(b?": "+Za(b):"")+")")):(g.K=b,g.U=!0);D(g)})}else D(this);this.F.power||(this.M=!0);!c&&this.M&&cf(this,this.Ea)}else w("Unable to find CPU component")}p(Xe,t);function Ye(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){w(d.message+" ("+c+")")}}a.O=b}
|
||||
function Xc(a,b,c,d){var e=b.toLowerCase(),e=qb(b)||qb(e);void 0===e&&a.O&&(e=a.O[b]);void 0===e&&c&&(e=c[b]);void 0===e&&"object"==typeof resources&&resources[b]&&(e=b);void 0===e&&(e=void 0);if("string"==typeof e&&d)switch(d){case 4:e=+e;isNaN(e)&&(e=0);break;case 6:e="true"==e}return e}function cf(a,b,c){for(var d=x(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Ma(f)){Ma(f,function(){cf(a,b,c)});return}}b.call(a,c)}
|
||||
function df(a,b){var c=new J(a,"1.34.0",ef);if(af(c)&&ff(c)){var d=c.get(gf),e=b?b.get(gf):"unknown";d!=e&&(a.Y("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=Xe.prototype;
|
||||
l.Ea=function(a){void 0===a&&(a=this.b||(this.K?hf:$e));if(!this.w){this.w++;var b=!1,c=!1;this.N=!1;var d=this.H||new J(this,"1.34.0");if(a==jf)b=!0;else if(a>$e){if(af(d,this.K)){this.B=new J(this,"1.34.0",kf);af(this.B)&&(lf(this,d),a=mf,nf(this.B));this.B.set(gf,ab());of(this.B);var e=this.b&&!this.I;if(a==hf||wa("Click OK to restore the previous "+Db+" machine state, or CANCEL to reset the machine.")){if(c=ff(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?af(d,g):("error"==f&&"no machine state"!=
|
||||
g?(this.Y("Error: "+g),"unable to verify user"==g&&(ob(pf,""),this.i=null)):this.f(f+": "+g),nf(d),af(d)?(c=ff(d),e=!0):c=!1))}e&&df(this,c?d:null)}else a==mf&&d.clear()}else df(this);delete this.K;delete this.H}e=x(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.g&&(c=qf(this,g,d,b,c));b=[d,a,c];a!=jf?cf(this,this.hb,b):this.hb(b)}};
|
||||
function qf(a,b,c,d,e){if(!b.j.T){b.j.T=!0;var f=null;try{if(e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,".")))),"string"===typeof f&&(f=null),!b.la(f,d)&&f&&(w("Unable to restore state for "+b.type),a.L&&!a.U?(c.clear(),a.b=$e,window&&window.location.reload()):a.N=!0,b.la(null),e=!1),!d&&b.$a){var g=b.$a.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(h){w("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
|
||||
l.hb=function(a){var b=a[0],c=0>a[1];a=a[2];this.P=!0;this.j.T=!0;var d=this.F.power;d&&(d.textContent="Shutdown");this.g&&(qf(this,this.g,b,c,a),K(this,-2),this.g.X());this.N&&(lf(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B);this.w=0};
|
||||
function lf(a,b){if(wa("There may be a problem with your "+Db+" machine.\n\nTo help us diagnose it, click OK to send this "+Db+" machine state to http://www.pcjs.org.")){var c=a.aa;a=a.i||"";b=b.toString();var d={};d.app=Db;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;jb("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function Ue(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new J(a,"1.34.0"),g=new J(a,"1.34.0",ef),h=ab();g.set(gf,h);f.set(gf,h);f.set(rf,"1.34.0");f.set(sf,window?window.location.href:null);f.set(tf,window?window.navigator.userAgent:"");a.g&&a.g.ca&&(c&&(b&&(a.g.j.X=a.g.j.J),a.g.R()),d=a.g.ca(b,c),"object"===typeof d&&f.set(a.g.id,d),c&&(a.g.j.T=!1,!1===d&&(e=null)));for(var h=x(a.id),k=0;k<h.length;k++){var m=h[k];m.j.T&&(m.ca&&(d=m.ca(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.j.T=
|
||||
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.i&&uf(a,a.i,f.toString()),of(g)&&of(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==If),d&&f.clear(h)):e=f.toString());c&&(a.j.T=!1,b=a.F.power)&&(b.textContent="Power");a.w=0;return e}
|
||||
function Gd(a,b,c){var d;if(b){b=Hd(a,b);for(var e=0,f=!1,g=b,h=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<m.length;){var n=m[e++],r=n.length,n=Za(n);if(!n){f=!0;break}n=Id(a,n,null,!1===c);if(void 0===n){f=!0;c=!1;break}h.push(n);if(e==m.length)break;var n=m[e++],u=n.length;k.length&&Jd[n]<Jd[k[k.length-1]]&&Fd(h,k,1);k.push(n);b=b.substr(r+u)}Fd(h,k)&&1==h.length||(f=!0);f?c&&a.f("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),c&&Kd(a,null,
|
||||
d))}return d}function Hd(a,b){for(var c,d=a.na?"(":"{",e=a.na?")":"}",f=new RegExp(a.na?"\\((.*?)\\)":"\\{(.*?)\\}");(c=b.match(f))&&!(0<=c[1].indexOf(d));){var g=Gd(a,c[1]);b=b.replace(d+c[1]+e,null!=g?M(a,g):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)b=b.replace("["+c[1]+"]","unimplemented");for(a=b;b=a.match(/\$([a-z]+)/i);){c=null;switch(b[1].toLowerCase()){case "ops":c=0}if(null==c)break;a=a.replace(b[0],c.toString())}return a}
|
||||
function Id(a,b,c,d){var e;null!=b?(e=a.lb(b),0<=e?e=a.Va(e):(e=a.aa[b],null==e&&(e=Qa(b,a.ca))),null!=e||d||a.f("invalid "+(c?c:"value")+": "+b)):d||a.f("missing "+(c||"value"));return e}
|
||||
function Kd(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f=4,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++){g&&(g=","+g);var k=d&255,m=void 0,n=8,r="";n?32<n&&(n=32):n=32;for(var u=null==k||isNaN(k),N=m=m||n;0<n--;)N||(r=","+r,N=m),r=(u?"?":k&1?"1":"0")+r,k>>=1,N--;g=r+g;d>>=8}d=F(c,0,!0)+" "+c+". "+Ra(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.f((null!=b?b+": ":"")+d);return e}
|
||||
function Ld(a,b){if(b)return Kd(a,b,a.aa[b]);var c=0;for(b in a.aa)Kd(a,b,a.aa[b]),c++;return 0<c}function M(a,b,c){c=void 0===c?0:c;switch(a.ca){case 8:a=Ra(b,0<c?(c+2)/3|0:0);break;case 10:a=b;b=0<c?Math.ceil(.3*c):0;var d="";b?10<b&&(b=10):b=a&-65536?10:5;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(0>a&&-1<a&&(a=-1);0<b--;)d=String.fromCharCode(a%10+48)+d,a/=10;a=d;break;default:a=F(b,0<c?c+3>>2:0)}0>c?c=a.replace(/^0+([0-9A-F]+)$/i,"$1"):c=a;return c}
|
||||
var Jd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function Md(a){Dd.call(this,a);this.xa=!1;this.na=!0;this.I=T();this.wa=T();this.N=T();this.H=[];this.b=this.K=this.G=[];Nd(this);this.P=this.ha=0;this.i=[];this.qa=void 0;Od(this);this.A=this;this.oa={};this.V=this.gb=0;this.U=null;this.M=[];Pd(this,a.messages);this.sa=a.commands;this.L=0;this.Ca=this.ra=null;this.B=this.Ba=this.ya=this.ga=this.pa=0;this.fa=this.ba=null;var b=this;window?void 0===window[B]&&(window[B]=function(a){return cd(b,a)}):void 0===global[B]&&(global[B]=function(a){return cd(b,
|
||||
a)})}p(Md,Dd);function Y(a){a=a&&a.v;null==a&&(a=-1);return a}function T(a,b,c){return{v:void 0===a?null:a,vb:void 0===b?!1:b,la:!1,ca:c}}function Qd(a){return[a.v,a.vb,a.ca,a.la,a.Oa]}function Rd(a,b){var c=T(b[0],b[1],b[2]);c.la=b[3];b[4]&&(c.eb=Ed(a,c.Oa=b[4]));return c}l=Md.prototype;
|
||||
l.ta=function(a,b,c,d){this.C=b;this.D=a;this.g=c;this.fa=a.u;(a=Yc(a,"messages"))&&Pd(this,a);Sd(this,function(a){a:{var b=d.C.b,c=a[0],e=a=0,k=b.length;if(c){a=Y(Z(d,c));if(-1===a){d.f("invalid address: "+c);break a}e=a>>>d.C.i;k=1}d.f("blockid physical blockaddr used size type");d.f("-------- --------- --------- ------ ------ ----");for(var c=-1,m=0;k--;){var n=b[e];n.type==c?m++||d.f("..."):(c=n.type,m=Ic[c],n&&d.f(F(n.id,8)+" %"+F(e<<d.C.i,8)+" %"+F(n.v,8)+" "+G(n.Ha)+" "+
|
||||
G(n.size)+" "+m),c!=Mc&&(c=-1),m=0);a+=16384;e++}}});D(this)};
|
||||
l.ea=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ba=this.F[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",cd(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.w<d.u.length-1&&(b=d.u[++d.w])):40==a.keyCode&&(0<d.w?b=d.u[--d.w]:(b="",d.w=-1)),null!=b){var e=b.length;c.value=b;c.setSelectionRange(e,e)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.F[b]=c,tb(c,function(){if(d.ba){var a=d.ba.value;
|
||||
d.ba.value="";cd(d,a,!0);return!0}return!1}),!0;case "step":return this.F[b]=c,tb(c,function(a){var b=!1;Na(d,!0)||(Oa(d,!0),b=fc(d,a?1:0,null),Oa(d,!1));return b}),!0}return!1};function bd(a){if(a.ba){var b=0,c=0;window&&(b=window.scrollX,c=window.scrollY);a.ba.focus();window&&window.scrollTo(b,c)}}l.Aa=function(a,b){var c=-1,d=Y(a);-1!==d&&(c=lc(this.C,d),b&&null!=a.v&&(a.v+=b||1));return c};l.Ya=function(a,b,c){var d=Y(a);-1!==d&&(kc(this.C,d,b),c&&null!=a.v&&(a.v+=c||1),K(this.D,-1))};
|
||||
function Z(a,b,c){var d;c=(c?a.I:a.wa).v;var e,f;if(void 0!==b){b=Hd(a,b);"%"==b.charAt(0)&&(e=!0,b=b.substr(1));d=b;var g,h;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.H.length;c++){var k=a.H[c].S[d];if(null!=k){h=k.o;break}}null!=h&&(g=T(h));if(d=g)return d;0<=b.indexOf("0x")?f=16:0<=b.indexOf("0o")?f=8:0<=b.indexOf(".")&&(f=10);c=Gd(a,b,void 0)}null!=c&&(d=T(c,e,f));return d}function Td(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.eb=Ed(a,b.Oa=c[2]))}
|
||||
function Ud(a){return Ra(a/Jb,6)+" "+Ra(a%Jb,6)}function Pd(a,b){a.A=a;a.V=a.gb=536870916;a.U=null;a.M=[];b=Ed(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in H){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d<e;d++)if(d in b&&b[d]===c)break a;d=-1}0<=d&&(a.V|=H[c],a.f(c+" messages enabled"))}}function Sd(a,b){for(var c in H)if(16==H[c]){a.oa[c]=b;break}}l.lb=function(a){return Vd.indexOf(a.toUpperCase())};
|
||||
l.Va=function(a){var b;switch(a){case Wd:b=this.g.i}return b};l.message=function(a,b){b&&(a+=" @"+M(this,T(this.g.oa).v));if(!this.U||a!=this.U)if(this.U=a,this.V&1073741824)this.M.push(a);else{var c;if(this.V&-2147483648&&this.g&&(c=this.g.j.J)||Na(this,!0))this.R(),c&&(a+=" (cpu halted)");this.f(a);this.g&&(a=this.g,kd(a),a.P=0,a.D&&K(a.D,void 0))}};
|
||||
function Od(a){var b;if(!pd(a))a.i&&a.i.length&&a.f("instruction history buffer freed"),a.P=0,a.i=[];else if(!a.i||!a.i.length){a.i=Array(Xd);for(b=0;b<a.i.length;b++)a.i[b]=T();a.P=0;a.f("instruction history buffer allocated")}}function Yd(a,b,c){if(!ze(a,c))return!1;ec(a.g,b);return!0}
|
||||
function fc(a,b,c,d){if(!ze(a))return!1;var e="";null===c&&(e=(c=!a.ra||"tr"==a.ra)?"tr":"t");a.B=0;b||pd(a)&&qd(a,a.g.i,0);try{b=id(a.g,b);var f=a.g.Ia(b);0<f&&(gc(a.g,f),a.B+=f,hc(a.g,f,!0),ic(a.g,f),a.ga++)}catch(g){"number"!=typeof g&&(a.B=0,Ka(a.g,g.stack||g.message))}!1!==d&&(a.fa&&a.fa.stop(),K(a.D,-1));ad(a,c||!1,e);return 0<a.B}l.R=function(a){this.g&&this.g.R(a)};function ad(a,b,c){a.xa&&(void 0===b&&(b=!0),c&&a.f(Be+c),a.I=T(a.g.i),b&&1!=a.L?Ce(a):De(a))}
|
||||
function ze(a,b){var c;(c=!a.g||!Ma(a.g))||(c=a.g,c.j.T?c=!0:(c.f(c.toString()+" not powered"),c=!1),c=!c);return c||a.g.j.J?(b||a.f("cpu busy or unavailable, command ignored"),!1):!La(a.g)}l.ma=function(a,b){return!b&&(this.reset(!0),a)?this.restore(a):!0};l.da=function(a,b){b&&this.f(a?"suspending":"shutting down");return a?this.save():!0};l.reset=function(a){Od(this);this.ga=0;this.U=null;this.B=0;this.I=T(this.g.i);this.j.J=!1;Ee(this);a||ad(this)};
|
||||
l.save=function(){var a=new J(this);a.set(0,Qd(this.I));a.set(1,Qd(this.N));a.set(2,[this.u,this.O,this.V]);a.set(3,this.H);return a.data()};l.restore=function(a){var b=0;void 0!==a[2]&&(this.I=Rd(this,a[b++]),this.N=Rd(this,a[b++]),this.u=a[b][0],"string"==typeof this.u&&(this.u=[this.u]),this.O=a[b][1],this.V|=a[b][2]);a[3]&&(this.H=a[3]);return!0};l.start=function(a,b){this.L||this.f("running");this.j.J=!0;this.ya=a;this.Ba=b};
|
||||
l.stop=function(a,b){if(this.j.J){this.j.J=!1;this.B=b-this.Ba;if(!this.L){b="stopped";if(this.B){a-=this.ya;var c=0<a?Math.round(1E3*this.B/a):0;b+=" (";pd(this)&&(b+=this.ga+" instructions, ",this.ga=0);b+=this.B+" cycles, "+a+" ms, "+c+" hz)"}else Pa(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.f(b)}ad(this,!0);bd(this);Ee(this,this.g.i);this.U=null}};function pd(a){return 1<a.b.length||!!a.ha}
|
||||
function qd(a,b,c){var d=-1;if(!c&&(d=a.g.Z(b),2756==d>>23&&a.g.oa==b)){b=a.g;var e=b.i;b.i=(e+1)%Jb;b=e}if(0<c&&(a.ha&&!--a.ha||Vc(a,b,1,a.b)))return!0;0<=c&&a.i.length&&(a.ga++,0>d&&(d=a.g.Z(b)),0<=d&&(c=a.i[a.P],c.v=b,c.la=!1,c.ca=void 0,++a.P==a.i.length&&(a.P=0)));return!1}
|
||||
function Fe(a,b,c,d){var e=T(b.v),f=a.Aa(b,1),g,h,k,m=0,n=f/Mb|0,r;for(r in Ge)if(g=Ge[r][n&r]){h=+r;n>>=6;switch(h){case 32512:k=He;m=n&3;break;case 32256:k=Ie;m=n&7;break;case 29248:k=Je,m=(n&48)>>2|(n&6)>>1}break}k=k&&k[m]||"";"S"==k&&g>Ke&&(k="B");k=Le[g||0]+k;k=Ya(k,8);g?(k=28700==h?k+M(a,f/Nb&127,-1):k+M(a,f>>23&15,-1),k+=",",f&4194304&&(k+="@"),k+=M(a,f&262143,-1),(f=f>>18&15)&&(k+="("+M(a,f,-1)+")")):k+=Ud(f);f=k;g="";h=M(a,e.v)+":";if(-1!==e.v&&-1!==b.v){do if(k=a.Aa(e,1),g+=" "+Ud(k),null==
|
||||
e.v)break;while(e.v!=b.v)}h+=Ya(g,16)+f;c&&(h=Ya(h,60)+";"+(c||""),h=a.g.j.Da?h+("cycles="+dd(a.g).toString()+" cs="+F(a.g.qa)):h+(null!=d?"="+d.toString():""));return h}function Nd(a){var b,c;a.b=["bp"];if(a.K)for(b=1;b<a.K.length;b++){c=a.K[b];c=Y(c);var d=a.C;Uc(d.b[c>>>d.i],!1)}a.K=["br"];if(a.G)for(b=1;b<a.G.length;b++)c=a.G[b],c=Y(c),d=a.C,Uc(d.b[c>>>d.i],!0);a.G=["bw"];a.pa=0;a.ha=0}
|
||||
l.za=function(a,b,c){var d=!0;c||Me(this,a,b,!1,!0);if(a!=this.b){var e=Y(b);if(-1===e)this.f("invalid address: "+M(this,b.v)),d=!1;else{var f=this.C;f.b[e>>>f.i].za(e&16383,a==this.G)}}d&&(a.push(b),c?b.la=!0:(Ne(this,a,a.length-1,"set"),Od(this)));return d};function Me(a,b,c,d,e){var f=!1;c=Y(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==Y(h)&&(!d||h.la)){f=!0;h.la||e||Ne(a,b,g,"cleared");b.splice(g,1);b!=a.b&&(d=a.C,Uc(d.b[c>>>d.i],b==a.G));h.la||Od(a);break}}return f}
|
||||
function Oe(a,b){for(var c=1;c<b.length;c++)Ne(a,b,c);return b.length-1}function Ne(a,b,c,d){c=b[c];a.f(b[0]+" "+M(a,c.v)+(d?" "+d:c.Oa?' "'+c.Oa+'"':""))}function Ee(a,b){if(void 0!==b)Vc(a,b,1,a.b,!0),a.L=0;else for(b=1;b<a.b.length;b++){var c=a.b[b];if(c.la){if(!Me(a,a.b,c,!0))break;b=0}}}
|
||||
function Vc(a,b,c,d,e){var f=!1;if(!a.pa++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.la)for(var k=Y(h)&(d==a.b?65535:-1),m=0;m<c;m++)if(b+m==k){var n,f=!0;h.la&&(Me(a,d,h,!0),e=!0);if(n=h.eb){for(var f=!1,r=0;r<n.length;r++)if(!Pe(a,n[r],!0)){if(n[r].indexOf("if")){f=!0;break}for(var u=r+1;u<n.length&&n[u].indexOf("else");u++)r++;if(u==n.length){f=!0;break}}a.g.j.J||(f=!0)}if(f){e||Ne(a,d,g,"hit");break}}}a.pa--;return f}l.hb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function xd(a,b,c,d,e){var f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var k=h.o,m=h.a;if(void 0!==k){var n=f,k=[k>>>0,g],r=$a(n,k,a.hb);0>r&&n.splice(-(r+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.H.push({bd:b,v:c,xb:d,S:e,fb:f})}function Qe(a,b,c){var d=[],e=Y(b)>>>0;for(b=0;b<a.H.length;b++){var f=a.H[b],g=f.v>>>0,h=f.xb;if(e>=g&&e<g+h){e=$a(f.fb,[e-g],a.hb);0<=e?Re(a,b,e,d):c&&(e=~e,Re(a,b,e-1,d),Re(a,b,e,d));break}}return d}
|
||||
function Re(a,b,c,d){var e={},f=a.H[b].fb,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.H[b].S[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}function Se(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ld(a)||a.f("no variables"),!0;if(!c[2])return Ld(a,c[1]);if(!c[3])return delete a.aa[c[1]],!0;b=Gd(a,c[3]);return void 0!==b?(a.aa[c[1]]=b,!0):!1}a.f("invalid assignment:"+b);return!1}
|
||||
function Te(a,b,c){var d=null;if(b=Z(a,b,!0)){var e=Qe(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.v-e[1])&&(g=" + "+G(f)),f=e[0]+" ("+M(a,e[1])+")"+g,c&&a.f(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.v)&&(g=" - "+G(f)),f=e[4]+" ("+M(a,e[5])+")"+g,c&&a.f(f),d||(d=f))}else c&&a.f("no symbols")}return d}
|
||||
function Ce(a,b){var c;if(b&&"?"==b[1])a.f("register commands:"),a.f("\tr\tdump registers"),a.f("\trm\tdump misc registers"),a.f("\trx [#]\tset flag or register x to [#]");else{var d=!1,e=a.g;null==c&&(c=!0);if(b&&1<b.length){var f=b[1];if("m"==f)d=!0;else{var g=f.indexOf("=");if(0<g)b=f.substr(g+1),f=f.substr(0,g);else if(2<b.length)b=b[2];else{a.f("missing value for "+b[1]);return}g=Gd(a,b);if(void 0===g)return;switch(f.toUpperCase()){case "PC":e.i=g%Jb;a.I=T(e.i);break;default:a.f("unknown register: "+
|
||||
f);return}K(a.D);a.f("updated registers:")}}f=Wd;(g=Vd[f]||"")&&(g+="="+M(a,a.Va(f))+" ");f=""+g;d&&(f+="\n");a.f(f);c&&(a.I=T(e.i),De(a,M(a,a.I.v)))}}function Ue(a,b){b=Za(b);var c=b.match(/^(['"])(.*?)\1$/);c?1<c[2].length?a.f(c[2]):Kd(a,null,c[2].charCodeAt(0)):Gd(a,b,!0)}
|
||||
function Ve(a,b,c){if("?"==c)a.f("trace commands:"),a.f("\tt [#]\ttrace # instructions"),a.f("\ttr [#]\ttrace # instructions with register updates"),a.f("\ttc [#]\ttrace # cycles"),a.f("note: bn [#] breaks after # instructions without updates");else{var d="t"!=b;c=Id(a,c,null,!0)||1;var e=0;"tc"==b&&(e=c,c=1);a.ra=b;sb(c,function(){return Oa(a,!0)&&fc(a,e,d,!1)},function(){a.fa&&a.fa.stop();K(a.D,-1);Oa(a,!1)})}}
|
||||
function De(a,b,c,d){if(b=Z(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=Id(a,c.substr(1)),null!=c&&(d=c);else{d=Z(a,c,!0);if(!d||d.v<b.v)return;e=d.v-b.v;if(256<e){a.f("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=Na(a,!1)||a.L?a.B:null;var g=null!=f?"cycles":null,h=Qe(a,b),k=b.v;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.f(m)}h[3]&&(g=h[3],f=null);f=Fe(a,b,g,f);a.f(f);a.I=b;e-=b.v-k;c++}}}
|
||||
function Pe(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.f(Be+b):(a.O&&(a.f("ended assemble at "+M(a,a.N.v)),a.I=a.N,a.O=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.U=null;if(Ma(a)&&0<b.length){a.O&&(b="a "+M(a,a.N.v)+" "+b);var f=!1,g=b.replace(/ +/g," ").split(" ");g[0]=g[0].toLowerCase();if(g&&g.length)for(var h=g[0],k=h.charAt(0),m=1;m<h.length;m++){var n=h.charAt(m);if("?"==k||"r"==k||"a">n||"z"<n){g[0]=h.substr(m);g.unshift(h.substr(0,m));break}}switch(g[0].charAt(0)){case "a":var r=
|
||||
Z(a,g[1],!0);if(r)if(a.N=r,void 0===g[2])a.f("begin assemble at "+M(a,r.v)),a.O=!0,K(a.D);else{var u;a.f("not supported yet");u=[];if(u.length){for(var N=0;N<u.length;N++)a.Ya(r,u[N],1);a.f(Fe(a,a.N))}}break;case "b":a:{var Da=g[0],Fa=g[1],xf=b;if("?"==Fa)a.f("breakpoint commands:"),a.f("\tbp #\tset exec breakpoint"),a.f("\tbr #\tset read breakpoint"),a.f("\tbw #\tset write breakpoint"),a.f("\tbc #\tclear breakpoint (* to clear all)"),a.f("\tbl\tlist all breakpoints"),a.f("\tbn [#]\tbreak after # instruction(s)");
|
||||
else{var na=Da.charAt(1);if("l"==na){var sc;sc=0+Oe(a,a.b);sc+=Oe(a,a.K);(sc+=Oe(a,a.G))||a.f("no breakpoints")}else if("n"==na){var Zd=+Fa||0;Fa&&(a.ha=Zd);a.f("break after "+Zd+" instruction(s)")}else if(void 0===Fa)a.f("missing breakpoint address");else{var I=T();if("*"!=Fa&&(I=Z(a,Fa,!0),!I))break a;"c"==na?null==I.v?(Nd(a),a.f("all breakpoints cleared")):Me(a,a.b,I)||Me(a,a.K,I)||Me(a,a.G,I)||a.f("breakpoint missing: "+M(a,I.v)):null!=I.v&&(Td(a,I,xf),"p"==na?a.za(a.b,I):"r"==na?a.za(a.K,I):
|
||||
"w"==na?a.za(a.G,I):a.f("unknown breakpoint command: "+na))}}}break;case "c":a.ka&&(a.ka.value="");break;case "d":a:{var Ga,Ha=g[0],U=g[1],fa=g[2],yf=g[3];if("?"==U){var Ia="";for(Ga in H)a.oa[Ga]&&(Ia&&(Ia+=","),Ia+=Ga);Ia+=",state,symbols";a.f("dump memory commands:");a.f("\tdw [a] [n] dump n words at address a");a.f("\tds [a] [n] dump n words at address a as JSON");a.f("\tdh [p] [n] dump n instructions from history position p");Ia.length&&a.f("dump extension commands:\n\t"+Ia)}else if("state"==
|
||||
U){var tc=We(a.D,!0);"console"==fa?console.log(tc):(a.ka&&(a.ka.value=""),tc&&a.f(tc))}else if("symbols"==U)for(var uc=0;uc<a.H.length;uc++){var vc=a.H[uc],Ja;for(Ja in vc.S)if("."!=Ja.charAt(0)){var $d=vc.S[Ja].o;if(void 0!==$d){var ae=vc.S[Ja].l;ae&&(Ja=ae);a.f(M(a,$d)+" "+Ja)}}}else{if("d"==Ha){for(Ga in H)if(g[1]==Ga){var be=a.oa[Ga];be?(g.shift(),g.shift(),be(g)):a.f("no dump registered for "+U);break a}U||(Ha=a.Ca||"dw")}else a.Ca=Ha;if("dh"==Ha){var ce=U,de=fa,ee="",fe=0,S=a.P,V=a.i;if(V.length){var O=
|
||||
+ce||a.qa,bb=+de||10;isNaN(O)?O=bb:ee="more ";O>V.length&&(a.f("note: only "+V.length+" available"),O=V.length);S-=O;0>S&&(null==V[V.length-1].v?(O=S+O,S=0):S+=V.length);var wc=[];"call"==de&&(bb=1E5,wc=["CALL"]);for(void 0!==ce&&a.f(O+" instructions earlier:");0<bb&&S!=a.P;){var ge=V[S++];if(null==ge.v)break;var cb=T(ge.v),zf=O--,he=Fe(a,cb,"history",zf);(!wc.length||0<=he.indexOf(wc[0]))&&a.f(he);cb.Ua&&(S+=cb.Ua,bb-=cb.Ua,O-=cb.Ua);S>=V.length&&(S=0);a.qa=O;fe++;bb--}}fe||(a.f("no "+ee+"history available"),
|
||||
a.qa=void 0)}else{var oa=Z(a,U);if(oa){var pa=0,ie="ds"==Ha;if(fa){if("l"==fa.charAt(0))fa=fa.substr(1)||yf,pa=Id(a,fa);else{var je=Z(a,fa);je&&(pa=je.v-oa.v)}0>pa&&(pa=0);65536<pa&&(pa=65536)}var Af=a.ca;oa.ca&&(a.ca=oa.ca);for(var ke="db"==Ha?1:2,xc=pa||32,yc=1==ke?2:4,Bf=(xc+yc-1)/yc|0||1,qa="";Bf--&&0<xc;){for(var ra="",le="",U=M(a,oa.v),me=yc;0<me--&&0<xc--;){var Eb=a.Aa(oa,1);ie?(ra&&(ra+=","),ra+=Eb):(ra+=Ud(Eb),ra+=" ");for(var ne=0;1==ke&&6>ne;ne++)le+=String.fromCharCode((Eb%64|0)+32),
|
||||
Eb/=64}qa&&(qa+="\n");qa=ie?qa+(ra+","):qa+(U+": "+ra+(0>me?" "+le:""))}qa&&a.f(qa);a.wa=oa;a.ca=Af}}}}break;case "e":if("else"==g[0])break;var oe,pe,qe=g[0],zc=g[1];"e"==qe||"ew"==qe?(oe=a.Aa,pe=a.Ya):zc=null;if(null==zc)a.f("edit memory commands:"),a.f("\tew [a] [...] edit words at address a");else{var Fb=Z(a,zc);if(Fb)for(var Gb=2;Gb<g.length;Gb++){var Ac=Gd(a,g[Gb]);if(void 0===Ac){a.f("unrecognized value: "+g[Gb]);break}a.f("changing "+M(a,Fb.v)+" from "+Ud(oe.call(a,Fb))+" to "+Ud(Ac));pe.call(a,
|
||||
Fb,Ac,1)}}break;case "g":a:{var re=g[1],Cf=b;if(void 0!==re){var Bc=Z(a,re,!0);if(!Bc)break a;Td(a,Bc,Cf);a.za(a.b,Bc,!0)}Yd(a,!0,c)}break;case "h":a.j.J?(c||a.f("halting"),a.R()):Na(a,!0)||c||a.f("already halted");break;case "i":if("if"==g[0]){var Cc;var db=b.substr(2),db=Za(db);Gd(a,db)?(c||a.f("true: "+db),Cc=!0):(c||a.f("false: "+db),Cc=!1);Cc||(d=!1);break}f=!0;break;case "k":var Df=g[0];if("?"==g[1])a.f("stack trace commands:"),a.f("\tk\tshow frame addresses"),a.f("\tks\tshow symbol information");
|
||||
else{var Dc=0,Ec=T(),eb=T();for(a.f("stack trace for "+M(a,eb.v));10>Dc;){for(var sa=null,Ef=256;65536>eb.v>>>0;){Ec.v=a.Aa(eb,2);if(null==eb.v||!Ef--)break;if(!(Ec.v&1)){for(var Ff=a,Hb=Ec,se=null,fb=Hb.v,te=fb,Fc=1;6>=Fc&&fb;Fc++){if(2<Fc){Hb.v=fb;var Ib=Fe(Ff,Hb);if(0<=Ib.indexOf("JSR")){var ue=Ib.indexOf(" ");if(fb+(Ib.indexOf(" ",ue+1)-ue-1)/2==te){se=Ib;break}}}fb-=2}Hb.v=te;if(sa=se)break}}if(!sa||null==sa)break;var ve=null;if("ks"==Df){var we=sa.match(/[0-9A-F]+$/);we&&(ve=Te(a,we[0]))}sa=
|
||||
Ya(sa,50)+" ;"+(ve||"stack="+M(a,eb.v));a.f(sa);Dc++}Dc||a.f("no return addresses found")}break;case "l":if("ln"==g[0]){Te(a,g[1],!0);break}f=!0;break;case "m":a:{var W,X=null,z=g[1];"?"==z&&(z=void 0);if(void 0!==z){var ga=0;if("all"==z)ga=1879046143,z=null;else if("on"==z)X=!0,z=null;else if("off"==z)X=!1,z=null;else{"keys"==z&&(z="key");"kbd"==z&&(z="keyboard");for(W in H)if(z==W){ga=H[W];X=!!(a.V&ga);break}if(!ga){a.f("unknown message category: "+z);break a}}if(ga)if("on"==g[2])a.V|=ga,X=!0;
|
||||
else if("off"==g[2]&&(a.V&=~ga,X=!1,1073741824==ga)){for(var xe=1E3<=a.M.length?a.M.length-1E3:0;xe<a.M.length;)a.f(a.M[xe++]);a.M=[]}}var Gf=0,gb="";for(W in H)if(!z||z==W){var Hf=!!(a.V&H[W]);if(null===X||X==Hf)gb&&(gb+=","),++Gf%10||(gb+="\n\t"),"key"==W&&(W="keys"),gb+=W}void 0===z&&a.f("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.f((null!==X?X?"messages on: ":"messages off: ":"message categories:\n\t")+(gb||"none"));Od(a)}break;case "p":if("print"==g[0]){Ue(a,b.substr(5));
|
||||
break}var If=g[0];if("?"==g[1])a.f("step commands:"),a.f("\tp\tstep over instruction"),a.f("\tpr\tstep over instruction with register update");else{var Jf="pr"==If?1:0;if(a.L)a.f("step in progress");else{var ye=T(a.g.i);a.Aa(ye);a.L?(a.za(a.b,ye,!0),Yd(a)||(a.D&&hd(a.D),a.L=0)):Ve(a,Jf?"tr":"t")}}break;case "r":if("reset"==b){a.D&&a.D.reset();break}Ce(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var hb=+g[2];if(8==hb||10==hb||16==hb)a.ca=hb;else{a.f("invalid base: "+hb);break}}a.f("default base: "+
|
||||
a.ca);break;case "cs":var ib;void 0!==g[3]&&(ib=+g[3]);switch(g[2]){case "int":a.g.U=ib;break;case "start":a.g.ra=ib;break;case "stop":a.g.ba=ib;break;default:a.f("unknown cs option");break a}void 0!==ib&&$c(a.g);a.f("checksums "+(a.g.j.Da?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(ed(a.g,+g[2])||a.f("warning: using 1x multiplier, previous target not reached"));a.f("target speed: "+(a.g.N.toFixed(2)+"Mhz")+" ("+a.g.O+"x)");break;default:if(g[1]){a.f("unknown option: "+g[1]);break}case "?":a.f("debugger options:"),
|
||||
a.f("\tbase #\t\tset default base to #"),a.f("\tcs int #\tset checksum cycle interval to #"),a.f("\tcs start #\tset checksum cycle start count to #"),a.f("\tcs stop #\tset checksum cycle stop count to #"),a.f("\tsp #\t\tset speed multiplier to #")}break;case "t":Ve(a,g[0],g[1]);break;case "u":De(a,g[1],g[2],8);break;case "v":if("var"==g[0]){Se(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.f((Db||"PDP10")+" version 1.34.0 ("+a.g.bb+",RELEASE)");a.f(window?window.navigator.userAgent:"");break}f=!0;
|
||||
break;case "?":if(g[1]){Ue(a,b.substr(1));break}var Gc="commands:",Hc;for(Hc in Xe)Gc+="\n"+Ya(Hc,9)+Xe[Hc];pd(a)||(Gc+="\nnote: history disabled if no exec breakpoints");a.f(Gc);break;default:f=!0}f&&(a.f("unknown command: "+b),d=!1)}}catch(Ae){a.f("debugger error: "+(Ae.stack||Ae.message)),d=!1}return d}function cd(a,b,c){b=Ed(a,b,c);for(var d in b)if(!Pe(a,b[+d]))return!1;return!0}
|
||||
var Xe={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Ke=20,Le=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOV MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CA JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO".split(" "),
|
||||
Wd=0,Vd=["PC"],Ye={},Ge=(Ye[28672]={0:101},Ye[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Ye[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Ke,9216:53,9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,
|
||||
17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Ye[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Ye[29248]={24576:79,24640:80,25088:81,25152:82},Ye[28700]={28672:93,28676:94,28680:95,28684:96,28688:97,28692:98,28696:99,28700:100},Ye),He=["","I","M","S"],Ie=" L E LE A GE N G".split(" "),
|
||||
Je="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Xd=1E3,Be=">> ";vb(function(){for(var a=C(document,B,"debugger"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Md(d);ya(d,c)}});
|
||||
function Ze(a,b,c){t.call(this,"Computer",a,33554432);this.j.T=!1;this.O=null;$e(this,b);this.M=Yc(this,"autoPower",a,6);this.w=0;this.aa=+a.busWidth||+a.buswidth;this.K=this.G=this.L=null;this.I=this.U=!1;this.H=this.B=null;this.P=this.N=!1;this.ba=Yc(this,"url")||"";(Math.random()+.1).toString(36);this.i=af(this);if(this.g=y("CPU",this.id)){this.A=y("Debugger",this.id);this.C=new mc({id:this.Ka+".bus",busWidth:this.aa},this.g,this.A);var d,e=x(this.id);if((this.u=y("Panel",this.id))&&this.u.ka)for(b=
|
||||
0;b<e.length;b++)d=e[b],d.Y=this.u.Y,d.f=this.u.f,d.ka=this.u.ka;this.f(Db+" v1.34.0\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.ta&&d.ta(this,this.C,this.g,this.A);b=null;d=Yc(this,"resume",a);void 0!==d&&(1<d.length?b=this.G=d:this.b=parseInt(d,10));var f;if(a=Yc(this,"state")||(f=!0,a.state))this.L=b=a,f||(this.I=!0,this.b=bf),this.b&&(this.H=new J(this,"1.34.0"),cf(this.H)?b=null:
|
||||
delete this.H);!b&&this.b&&(b=df(this))&&(this.I=!0);if(b){var g=this;jb(b,null,!0,function(a,b,c){c?(g.G=null,g.I=!1,g.Y("Unable to load machine state from server (error "+c+(b?": "+Za(b):"")+")")):(g.K=b,g.U=!0);D(g)})}else D(this);this.F.power||(this.M=!0);!c&&this.M&&ef(this,this.Fa)}else w("Unable to find CPU component")}p(Ze,t);function $e(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){w(d.message+" ("+c+")")}}a.O=b}
|
||||
function Yc(a,b,c,d){var e=b.toLowerCase(),e=qb(b)||qb(e);void 0===e&&a.O&&(e=a.O[b]);void 0===e&&c&&(e=c[b]);void 0===e&&"object"==typeof resources&&resources[b]&&(e=b);void 0===e&&(e=void 0);if("string"==typeof e&&d)switch(d){case 4:e=+e;isNaN(e)&&(e=0);break;case 6:e="true"==e}return e}function ef(a,b,c){for(var d=x(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Ma(f)){Ma(f,function(){ef(a,b,c)});return}}b.call(a,c)}
|
||||
function ff(a,b){var c=new J(a,"1.34.0",gf);if(cf(c)&&hf(c)){var d=c.get(jf),e=b?b.get(jf):"unknown";d!=e&&(a.Y("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=Ze.prototype;
|
||||
l.Fa=function(a){void 0===a&&(a=this.b||(this.K?kf:bf));if(!this.w){this.w++;var b=!1,c=!1;this.N=!1;var d=this.H||new J(this,"1.34.0");if(a==lf)b=!0;else if(a>bf){if(cf(d,this.K)){this.B=new J(this,"1.34.0",mf);cf(this.B)&&(nf(this,d),a=of,pf(this.B));this.B.set(jf,ab());qf(this.B);var e=this.b&&!this.I;if(a==kf||wa("Click OK to restore the previous "+Db+" machine state, or CANCEL to reset the machine.")){if(c=hf(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?cf(d,g):("error"==f&&"no machine state"!=
|
||||
g?(this.Y("Error: "+g),"unable to verify user"==g&&(ob(rf,""),this.i=null)):this.f(f+": "+g),pf(d),cf(d)?(c=hf(d),e=!0):c=!1))}e&&ff(this,c?d:null)}else a==of&&d.clear()}else ff(this);delete this.K;delete this.H}e=x(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.g&&(c=sf(this,g,d,b,c));b=[d,a,c];a!=lf?ef(this,this.ib,b):this.ib(b)}};
|
||||
function sf(a,b,c,d,e){if(!b.j.T){b.j.T=!0;var f=null;try{if(e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,".")))),"string"===typeof f&&(f=null),!b.ma(f,d)&&f&&(w("Unable to restore state for "+b.type),a.L&&!a.U?(c.clear(),a.b=bf,window&&window.location.reload()):a.N=!0,b.ma(null),e=!1),!d&&b.ab){var g=b.ab.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(h){w("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
|
||||
l.ib=function(a){var b=a[0],c=0>a[1];a=a[2];this.P=!0;this.j.T=!0;var d=this.F.power;d&&(d.textContent="Shutdown");this.g&&(sf(this,this.g,b,c,a),K(this,-2),this.g.X());this.N&&(nf(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B);this.w=0};
|
||||
function nf(a,b){if(wa("There may be a problem with your "+Db+" machine.\n\nTo help us diagnose it, click OK to send this "+Db+" machine state to http://www.pcjs.org.")){var c=a.ba;a=a.i||"";b=b.toString();var d={};d.app=Db;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;jb("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function We(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new J(a,"1.34.0"),g=new J(a,"1.34.0",gf),h=ab();g.set(jf,h);f.set(jf,h);f.set(tf,"1.34.0");f.set(uf,window?window.location.href:null);f.set(vf,window?window.navigator.userAgent:"");a.g&&a.g.da&&(c&&(b&&(a.g.j.X=a.g.j.J),a.g.R()),d=a.g.da(b,c),"object"===typeof d&&f.set(a.g.id,d),c&&(a.g.j.T=!1,!1===d&&(e=null)));for(var h=x(a.id),k=0;k<h.length;k++){var m=h[k];m.j.T&&(m.da&&(d=m.da(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.j.T=
|
||||
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.i&&wf(a,a.i,f.toString()),qf(g)&&qf(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Kf),d&&f.clear(h)):e=f.toString());c&&(a.j.T=!1,b=a.F.power)&&(b.textContent="Power");a.w=0;return e}
|
||||
l.reset=function(){this.j.reset=!0;this.C&&this.C.reset&&(E(this,"Resetting "+this.C.type),this.C.reset());this.g&&this.g.reset&&(E(this,"Resetting "+this.g.type),this.g.reset());for(var a=x(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.C&&c!==this.g&&c.reset&&(E(this,"Resetting "+c.type),c.reset())}this.j.reset=!1;K(this,-1)};l.start=function(a,b){for(var c=x(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}K(this,-1)};
|
||||
l.stop=function(a,b){for(var c=x(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}K(this,-1)};
|
||||
function K(a,b){if(a.g){var c=a.g,d=b||0,e=c.F.speed;e&&(0>=d||30<=(c.ya+=d))&&(e.textContent=c.j.J?c.M.toFixed(2)+"Mhz":"Stopped",c.ya=0)}if(a.u&&(a=a.u,b=b||0,a.K)){c=a.g.j.J;d=!!(a.g.u&8);if(0>=b||60<=(a.I+=b)){e=a.g.i;if(a.F.PC){var f=a.A&&a.A.ba||8,e=e||0,e=8==f?Ra(e,void 0):F(e,void 0);a.F.PC.textContent!=e&&(a.F.PC.textContent=e)}a.I=0}-1>b?a.i=a.g.i:0<b&&c&&!d&&(a.i=a.g.ga);Wb(a,a.i);Qb(a,a.w)}}
|
||||
l.da=function(a,b,c){var d=this;switch(b){case "power":return this.F[b]=c,c.onclick=function(){d.w||(d.j.T?Ue(d,!1,!0):cf(d,d.Ea))},!0;case "reset":return this.F[b]=c,c.onclick=function(){if(d.j.T&&!d.w)if(d.b&&!d.G){var a=wa("Click OK to save changes to this "+Db+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Ue(d,a,!0);!a&&d.L?window&&window.location.reload():d.Ea($e)}else d.reset(),d.g&&!d.A&&d.g.X()},!0;case "save":if(Ua())c.parentNode.removeChild(c);else return this.F[b]=
|
||||
c,c.onclick=function(){var a=Ze(d,!0);if(a){var b=!!(d.b&&!d.G||d.L),c=Ue(d,b);b?uf(d,a,c):d.Y("Resume disabled, machine state not saved")}},!0}return!1};function Ze(a,b){var c=a.i;c||((c=nb(pf),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Jf(a,c))||a.Y("The user ID is invalid.")):b&&a.Y("Browser local storage is not available"));return c}
|
||||
function Jf(a,b){a.i=null;b=jb(Va()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(ob(pf,b.data),a.i=b.data)}catch(d){w(d.message+" ("+c+")")}return a.i}function bf(a){var b=null;a.i&&(b=Va()+"/api/v1/user?req=load&user="+a.i+"&state="+Kf(a,"1.34.0"));return b}
|
||||
function uf(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Kf(a,"1.34.0");d.data=c;b=jb(Va()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.Y("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.Y(c),ob(pf,""),a.i=null)}}
|
||||
function gd(a,b){if(a.ja){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a.ja.focus();!b&&window&&window.scrollTo(c,d)}}var kf="failsafe",ef="validate",gf="timestamp",rf="version",sf="url",tf="browser",pf="user",jf=-1,$e=0,hf=1,mf=2,If=3;vb(function(){for(var a=C(document,B+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=C(c,B,"computer"),e=0;e<c.length;e++){var f=c[e],g=A(f),g=new Xe(g,d,!0);ya(g,f);g.M&&cf(g,g.Ea)}});
|
||||
wb.show.push(function(){for(var a=C(document,B,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=y("Computer",c.id))&&c.P&&!c.j.T&&c.Ea(jf)}});wb.exit.push(function(){for(var a=C(document,B,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=y("Computer",c.id))&&c.j.T&&Ue(c,!(!c.b||c.G),!0)}});function J(a,b,c){this.id=a.id;this.g="";this.b={};this.A=this.C=!1;this.key=Kf(a,b,c);nf(this,a.rb)}l=J.prototype;l.set=function(a,b){try{this.b[a]=b}catch(c){}};l.get=function(a){return this.b[a]||null};
|
||||
l.data=function(){return this.b};function af(a,b){return b?(a.g=b,a.A=!0,a.C=!1,!0):a.A?!0:lb()&&(b=nb(a.key))?(a.g=b,a.A=!0):!1}function ff(a){var b=!0;if(!a.C)try{a.b=JSON.parse(a.g),a.C=!0}catch(c){w(c.message||c),b=!1}return b}function of(a){var b=!0;if(lb()){var c=JSON.stringify(a.b);ob(a.key,c)||(w("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}l.toString=function(){return this.b?JSON.stringify(this.b):this.g};
|
||||
function nf(a,b){a.g="";a.b={};a.A=a.C=!1;b&&a.set("parms",b)}l.clear=function(a){nf(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function Kf(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var Lf=0;
|
||||
function Mf(a,b,c,d,e,f,g){f("Loading "+a+"...");jb(a,null,!0,function(h,k,m){m?(k||(k="unable to load "+a+" ("+m+")"),g(k,null)):Nf(k,a,b,c,d,e,f,g)})}
|
||||
function Nf(a,b,c,d,e,f,g,h){function k(a,g){if(g)h(g,null);else{c&&(ta(c,b,a),(g=b)&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1<e.length&&(e+=",")):e='{state:"'+e+'",':e="{",e+='url:"'+g+'"}',"object"==typeof resources&&(g=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDPjs$2"),
|
||||
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){g=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?Of(a,g,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Of(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");jb(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);Of(a,b,c)}})}else c(a,null)}
|
||||
function Pf(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&C(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Wa(a))}function g(a){f("Error: "+a);m&&(--Lf||zb(!0));m=!1}var h,k,m=!0;Lf++;ua[b]={};try{if(h=document.getElementById(b)){var n;if("object"==typeof resources&&(n=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],u=document.createElement("style");u.type="text/css";u.styleSheet?u.styleSheet.cssText=n:u.appendChild(document.createTextNode(n));r.appendChild(u)}d||
|
||||
(n=a,"pdp"==a.substr(0,3)&&(n="pdpjs"),d="/versions/"+n+"/1.34.0/components.xsl");n=function(e,k){k?Mf(d,null,a,null,!1,f,function(a,e){e?(ta(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Lf||zb(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Lf||
|
||||
zb(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Mf(c,b,a,e,!0,f,n):Nf(c,null,b,a,e,!1,f,n)}else g("missing machine element: "+b)}catch(N){g(N.message)}return m}window.embedPDP10=function(a,b,c,d){zb(!1);return Pf("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){zb(!1);return Pf("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return y(b,a+".machine")};
|
||||
function K(a,b){if(a.g){var c=a.g,d=b||0,e=c.F.speed;e&&(0>=d||30<=(c.Ba+=d))&&(e.textContent=c.j.J?c.M.toFixed(2)+"Mhz":"Stopped",c.Ba=0)}if(a.u&&(a=a.u,b=b||0,a.K)){c=a.g.j.J;d=!!(a.g.u&8);if(0>=b||60<=(a.I+=b)){e=a.g.i;if(a.F.PC){var f=a.A&&a.A.ca||8,e=e||0,e=8==f?Ra(e,void 0):F(e,void 0);a.F.PC.textContent!=e&&(a.F.PC.textContent=e)}a.I=0}-1>b?a.i=a.g.i:0<b&&c&&!d&&(a.i=a.g.na);Xb(a,a.i);Rb(a,a.w)}}
|
||||
l.ea=function(a,b,c){var d=this;switch(b){case "power":return this.F[b]=c,c.onclick=function(){d.w||(d.j.T?We(d,!1,!0):ef(d,d.Fa))},!0;case "reset":return this.F[b]=c,c.onclick=function(){if(d.j.T&&!d.w)if(d.b&&!d.G){var a=wa("Click OK to save changes to this "+Db+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");We(d,a,!0);!a&&d.L?window&&window.location.reload():d.Fa(bf)}else d.reset(),d.g&&!d.A&&d.g.X()},!0;case "save":if(Ua())c.parentNode.removeChild(c);else return this.F[b]=
|
||||
c,c.onclick=function(){var a=af(d,!0);if(a){var b=!!(d.b&&!d.G||d.L),c=We(d,b);b?wf(d,a,c):d.Y("Resume disabled, machine state not saved")}},!0}return!1};function af(a,b){var c=a.i;c||((c=nb(rf),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Lf(a,c))||a.Y("The user ID is invalid.")):b&&a.Y("Browser local storage is not available"));return c}
|
||||
function Lf(a,b){a.i=null;b=jb(Va()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(ob(rf,b.data),a.i=b.data)}catch(d){w(d.message+" ("+c+")")}return a.i}function df(a){var b=null;a.i&&(b=Va()+"/api/v1/user?req=load&user="+a.i+"&state="+Mf(a,"1.34.0"));return b}
|
||||
function wf(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Mf(a,"1.34.0");d.data=c;b=jb(Va()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.Y("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.Y(c),ob(rf,""),a.i=null)}}
|
||||
function hd(a,b){if(a.ka){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a.ka.focus();!b&&window&&window.scrollTo(c,d)}}var mf="failsafe",gf="validate",jf="timestamp",tf="version",uf="url",vf="browser",rf="user",lf=-1,bf=0,kf=1,of=2,Kf=3;vb(function(){for(var a=C(document,B+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=C(c,B,"computer"),e=0;e<c.length;e++){var f=c[e],g=A(f),g=new Ze(g,d,!0);ya(g,f);g.M&&ef(g,g.Fa)}});
|
||||
wb.show.push(function(){for(var a=C(document,B,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=y("Computer",c.id))&&c.P&&!c.j.T&&c.Fa(lf)}});wb.exit.push(function(){for(var a=C(document,B,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=y("Computer",c.id))&&c.j.T&&We(c,!(!c.b||c.G),!0)}});function J(a,b,c){this.id=a.id;this.g="";this.b={};this.A=this.C=!1;this.key=Mf(a,b,c);pf(this,a.sb)}l=J.prototype;l.set=function(a,b){try{this.b[a]=b}catch(c){}};l.get=function(a){return this.b[a]||null};
|
||||
l.data=function(){return this.b};function cf(a,b){return b?(a.g=b,a.A=!0,a.C=!1,!0):a.A?!0:lb()&&(b=nb(a.key))?(a.g=b,a.A=!0):!1}function hf(a){var b=!0;if(!a.C)try{a.b=JSON.parse(a.g),a.C=!0}catch(c){w(c.message||c),b=!1}return b}function qf(a){var b=!0;if(lb()){var c=JSON.stringify(a.b);ob(a.key,c)||(w("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}l.toString=function(){return this.b?JSON.stringify(this.b):this.g};
|
||||
function pf(a,b){a.g="";a.b={};a.A=a.C=!1;b&&a.set("parms",b)}l.clear=function(a){pf(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function Mf(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var Nf=0;
|
||||
function Of(a,b,c,d,e,f,g){f("Loading "+a+"...");jb(a,null,!0,function(h,k,m){m?(k||(k="unable to load "+a+" ("+m+")"),g(k,null)):Pf(k,a,b,c,d,e,f,g)})}
|
||||
function Pf(a,b,c,d,e,f,g,h){function k(a,g){if(g)h(g,null);else{c&&(ta(c,b,a),(g=b)&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1<e.length&&(e+=",")):e='{state:"'+e+'",':e="{",e+='url:"'+g+'"}',"object"==typeof resources&&(g=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDPjs$2"),
|
||||
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){g=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?Qf(a,g,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Qf(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");jb(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);Qf(a,b,c)}})}else c(a,null)}
|
||||
function Rf(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&C(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Wa(a))}function g(a){f("Error: "+a);m&&(--Nf||zb(!0));m=!1}var h,k,m=!0;Nf++;ua[b]={};try{if(h=document.getElementById(b)){var n;if("object"==typeof resources&&(n=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],u=document.createElement("style");u.type="text/css";u.styleSheet?u.styleSheet.cssText=n:u.appendChild(document.createTextNode(n));r.appendChild(u)}d||
|
||||
(n=a,"pdp"==a.substr(0,3)&&(n="pdpjs"),d="/versions/"+n+"/1.34.0/components.xsl");n=function(e,k){k?Of(d,null,a,null,!1,f,function(a,e){e?(ta(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Nf||zb(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Nf||
|
||||
zb(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Of(c,b,a,e,!0,f,n):Pf(c,null,b,a,e,!1,f,n)}else g("missing machine element: "+b)}catch(N){g(N.message)}return m}window.embedPDP10=function(a,b,c,d){zb(!1);return Rf("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){zb(!1);return Rf("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return y(b,a+".machine")};
|
||||
window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!Aa[a]){for(var c=!0,d=Aa,e=a,f=b.length,g=[],h=[],k="",m=null,n=0;n<f;n++){var r=b[n];if('"'==r||"'"==r)m&&r!=m?k+=r:(m?m=null:m=r,k&&(h.push(k),k=""));else{if(!m){if("\r"==r||"\n"==r)r=";";if(" "==r||"\t"==r||";"==r){k&&(h.push(k),k="");";"==r&&h.length&&(g.push(h),h=[]);continue}}k+=r}}k&&h.push(k);h.length&&g.push(h);d[e]=g;za(a)||(c=!1)}return c};window.enableEvents=zb;window.sendEvent=Bb;})();//# sourceMappingURL=/tmp/pdpjs/1.34.0/pdp10-dbg.map
|
||||
|
|
|
|||
|
|
@ -32,17 +32,17 @@ var k,aa="function"==typeof Object.defineProperties?Object.defineProperty:functi
|
|||
function ea(){ba();var a=m.Symbol.iterator;a||(a=m.Symbol.iterator=m.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return fa(this)}});ea=function(){}}function fa(a){var b=0;return ga(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function ga(a){ea();a={next:a};a[m.Symbol.iterator]=function(){return this};return a}
|
||||
function n(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}function ha(a,b){if(b){var c=m;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];e in c||(c[e]={});c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&aa(c,a,{configurable:!0,writable:!0,value:b})}}
|
||||
ha("Math.trunc",function(a){return a?a:function(a){a=Number(a);if(isNaN(a)||Infinity===a||-Infinity===a||!a)return a;var b=Math.floor(Math.abs(a));return 0>a?-b:b}});ha("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}});
|
||||
var ia=Math.pow(2,36),ja=-Math.pow(2,35),r={zb:0,Oa:1,Bb:2,Cb:3,Db:4,Eb:5,Fb:6,Gb:7,Ga:8,Hb:9,Pa:10,Ib:11,Jb:12,Qa:13,Kb:14,Lb:15,Mb:16,Nb:17,Ob:18,Pb:19,Qb:20,Rb:21,Sb:22,Tb:23,Ub:24,Vb:25,Wb:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Fa:65,yb:66,Ab:67,Xb:68,E:69,Yb:70,Zb:71,$b:72,ac:73,bc:74,cc:75,dc:76,ec:77,fc:78,gc:79,hc:80,Q:81,
|
||||
ic:82,jc:83,kc:84,lc:85,mc:86,nc:87,oc:88,pc:89,Va:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,qc:97,rc:98,sc:99,d:100,e:101,tc:102,uc:103,vc:104,wc:105,xc:106,k:107,yc:108,zc:109,n:110,Ac:111,p:112,q:113,r:114,Bc:115,t:116,Cc:117,Dc:118,Ec:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Ra:127};
|
||||
function u(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ja=b.comment;this.Ua=b;this.exports={};this.i=this.bindings={};a=this.id.indexOf(".");0>a?this.ja=this.id:(this.ka=this.id.substr(0,a),this.ja=this.id.substr(a+1));this.b={ready:!1,oa:!1,Da:!1,w:!1,error:!1};this.ra=null;this.b.error=!1;this.o=this.f=this.l=this.m=this.Z=null;v.push(this)}function ka(a,b,c){la[a]&&b&&(la[a][b]=c)}function w(){return Date.now()||+new Date}
|
||||
var ia=Math.pow(2,36),ja=-Math.pow(2,35),r={Ab:0,Pa:1,Cb:2,Db:3,Eb:4,Fb:5,Gb:6,Hb:7,Ha:8,Ib:9,Qa:10,Jb:11,Kb:12,Ra:13,Lb:14,Mb:15,Nb:16,Ob:17,Pb:18,Qb:19,Rb:20,Sb:21,Tb:22,Ub:23,Vb:24,Wb:25,Xb:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Ga:65,zb:66,Bb:67,Yb:68,E:69,Zb:70,$b:71,ac:72,bc:73,cc:74,dc:75,ec:76,fc:77,gc:78,hc:79,ic:80,Q:81,
|
||||
jc:82,kc:83,lc:84,mc:85,nc:86,oc:87,pc:88,qc:89,Wa:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,rc:97,sc:98,tc:99,d:100,e:101,uc:102,vc:103,wc:104,xc:105,yc:106,k:107,zc:108,Ac:109,n:110,Bc:111,p:112,q:113,r:114,Cc:115,t:116,Dc:117,Ec:118,Fc:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Sa:127};
|
||||
function u(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ka=b.comment;this.Va=b;this.exports={};this.i=this.bindings={};a=this.id.indexOf(".");0>a?this.la=this.id:(this.ma=this.id.substr(0,a),this.la=this.id.substr(a+1));this.b={ready:!1,ra:!1,Ea:!1,w:!1,error:!1};this.ua=null;this.b.error=!1;this.o=this.f=this.l=this.m=this.aa=null;v.push(this)}function ka(a,b,c){la[a]&&b&&(la[a][b]=c)}function w(){return Date.now()||+new Date}
|
||||
function x(a){window&&window.alert(a)}function ma(a){var b=!1;window&&(b=window.confirm(a));return b}function y(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<v.length;b++){var d=v[b];a&&d.id.indexOf(a)||c.push(d)}return c}function na(a){if(void 0!==a){var b;for(b=0;b<v.length;b++)if(v[b].id===a)return v[b]}return null}
|
||||
function z(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<v.length;d++)if(c)c==v[d]&&(c=null);else if(!(a!=v[d].type||b&&v[d].id.indexOf(b)))return v[d]}return null}function A(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){x(c.message+" ("+a+")")}return b}
|
||||
function B(a,b){var c=C;b=D(b.parentNode,c+"-control");for(var d=0;d<b.length;d++)for(var e=b[d].childNodes,f=0;f<e.length;f++){var g=e[f];if(1===g.nodeType){var h=g.getAttribute("class");if(h)for(var l=h.split(" "),p=0;p<l.length;p++)switch(h=l[p],h){case c+"-binding":(h=A(g))&&h.binding&&a.S(h.type,h.binding,g,h.value),p=l.length}}}}
|
||||
function B(a,b){var c=C;b=D(b.parentNode,c+"-control");for(var d=0;d<b.length;d++)for(var e=b[d].childNodes,f=0;f<e.length;f++){var g=e[f];if(1===g.nodeType){var h=g.getAttribute("class");if(h)for(var l=h.split(" "),p=0;p<l.length;p++)switch(h=l[p],h){case c+"-binding":(h=A(g))&&h.binding&&a.T(h.type,h.binding,g,h.value),p=l.length}}}}
|
||||
function D(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
||||
function oa(a){for(var b=!0,c=pa[a];c&&c.length;){var d=c.splice(0,1)[0],e=d[0],f=null;0<=qa.indexOf(e)&&(f=function(){return function(){oa(a)}}());var g=ra[e];if(g)if(!f)b=g(d[1],d[2],d[3]);else{if(!g(f,d[1],d[2],d[3]))break}else{var b=!1,h=z(d[1],a);if(h)if(g=sa[e])b=g(h,d[2],d[3]);else{var l=h.exports;if(l&&(g=l[e]))if(b=!0,!f)b=g.call(h,d[2],d[3]);else if(!g.call(h,f,d[2],d[3]))break}}if(!b){x("Script error: "+e+(g?" failed":" unrecognized"));break}}c&&!c.length&&delete pa[a];return b}k=u.prototype;
|
||||
k.toString=function(){return this.name?this.name:this.id||this.type};
|
||||
k.S=function(a,b,c){switch(b){case "clear":return this.i[b]||(this.i[b]=c,c.onclick=function(a){return function(){a.i.print&&(a.i.print.value="")}}(this)),!0;case "print":return this.i[b]||(this.Z=this.i[b]=c,c.value="",this.I=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),this.C=function(a){this.I(a,this.ja)}),!0;default:return!1}};k.log=function(){};k.I=function(){};
|
||||
k.status=function(a){this.I(this.ja+": "+a)};k.C=function(a,b,c){c=c||this.type;b||x((c?c+": ":"")+a)};function ta(a,b){b&&(a.b.ready?b():a.ra=b);return a.b.ready}function E(a){if(!a.b.error&&(a.b.ready=!0,a.b.ready)){var b=a.ra;a.ra=null;b&&b()}}function va(a,b){a.b.Da?(a.b.oa=!1,a.b.Da=!1):a.b.error?a.I(a.toString()+" error"):a.b.oa=b}k.T=function(){return this.b.w=!0};k.N=function(a,b){b&&(this.b.w=!1);return!0};
|
||||
k.T=function(a,b,c){switch(b){case "clear":return this.i[b]||(this.i[b]=c,c.onclick=function(a){return function(){a.i.print&&(a.i.print.value="")}}(this)),!0;case "print":return this.i[b]||(this.aa=this.i[b]=c,c.value="",this.I=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),this.C=function(a){this.I(a,this.la)}),!0;default:return!1}};k.log=function(){};k.I=function(){};
|
||||
k.status=function(a){this.I(this.la+": "+a)};k.C=function(a,b,c){c=c||this.type;b||x((c?c+": ":"")+a)};function ua(a,b){b&&(a.b.ready?b():a.ua=b);return a.b.ready}function E(a){if(!a.b.error&&(a.b.ready=!0,a.b.ready)){var b=a.ua;a.ua=null;b&&b()}}function va(a,b){a.b.Ea?(a.b.ra=!1,a.b.Ea=!1):a.b.error?a.I(a.toString()+" error"):a.b.ra=b}k.U=function(){return this.b.w=!0};k.O=function(a,b){b&&(this.b.w=!1);return!0};
|
||||
window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]),window.PCjs.Commands||(window.PCjs.Commands={}));
|
||||
var la=window?window.PCjs.Machines:{},v=window?window.PCjs.Components:[],pa=window?window.PCjs.Commands:{},qa=["hold","sleep","wait"],ra={alert:function(a){x(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},sa={select:function(a,b,c){var d=!1;if(a=a.bindings[b])for(b=0;b<a.options.length;b++)if(a.options[b].textContent==c){a.selectedIndex!=b&&(a.selectedIndex=b);d=!0;break}return d}};
|
||||
Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
|
||||
|
|
@ -52,53 +52,53 @@ function xa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf(
|
|||
function Da(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
|
||||
function H(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
|
||||
f,e))});if(b&&"object"==typeof b){var l="",p;for(p in b)b.hasOwnProperty(p)&&(l&&(l+="&"),l+=p+"="+encodeURIComponent(b[p]));l=l.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(l)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g}
|
||||
function Ea(a,b){var c,d={F:null,J:null,R:null,P:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.R=g.load;d.P=g.exec;if(e=g.bytes)d.F=e;else if(e=g.words)for(d.F=Array(2*e.length),f=c=0;c<e.length;c++)d.F[f++]=e[c]&255,d.F[f++]=e[c]>>8&255;else if(e=g.data)for(d.F=Array(4*e.length),f=c=0;c<e.length;c++)d.F[f++]=e[c]&255,d.F[f++]=
|
||||
function Ea(a,b){var c,d={F:null,J:null,S:null,R:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.S=g.load;d.R=g.exec;if(e=g.bytes)d.F=e;else if(e=g.words)for(d.F=Array(2*e.length),f=c=0;c<e.length;c++)d.F[f++]=e[c]&255,d.F[f++]=e[c]>>8&255;else if(e=g.data)for(d.F=Array(4*e.length),f=c=0;c<e.length;c++)d.F[f++]=e[c]&255,d.F[f++]=
|
||||
e[c]>>8&255,d.F[f++]=e[c]>>16&255,d.F[f++]=e[c]>>24&255;else d.F=g;d.J=g.symbols;d.F.length?1==d.F.length&&(x(d.F[0]),d=null):(x("Empty resource: "+a),d=null)}catch(h){x("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){x("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.F=e)}return d}
|
||||
function G(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Fa(){if(null==Ga){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}Ga=a}return Ga}function Ha(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function Ia(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ja(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1}
|
||||
function Ka(a){if(!La){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}La=c}return La[a]}function Ma(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function I(a){J.init.push(a)}
|
||||
function Na(a){if(Oa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){x(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function K(a){!Oa&&a?(Oa=!0,Pa&&Qa("init"),Ra&&Qa("show")):Oa=a}function Qa(a){J[a]&&Na(J[a])}var La=null,J={init:[],show:[],exit:[]},Pa=!1,Ra=!1,Oa=!0,Ga=null;Ma("onload",function(){Pa=!0;Na(J.init)});Ma("onpageshow",function(){Ra=!0;Na(J.show)});Ma(Ja("Opera")||Ja("iOS")?"onunload":"onbeforeunload",function(){Na(J.exit)});
|
||||
var C="pdp10",L="PDPjs",Sa=Math.pow(2,18),Ta=Math.pow(2,18)-1,Ua=Math.pow(2,36),C="pdp10",L="PDPjs";
|
||||
function Va(a,b){u.call(this,"Panel",a);this.A=this.B=0;this.O=b;this.c=this.u=this.g=this.h=0;this.D=this.H=-1;this.K=this.L=this.s=!1;this.M=Wa;this.j={};this.a={START:[1,1,!0,!1,this.fb],STEP:[1,1,!1,!1,this.gb],ENABLE:[1,1,!1,!1,this.$a],CONT:[1,1,!0,!1,this.Ya],DEP:[0,0,!0,!1,this.Za],EXAM:[1,1,!0,!1,this.ab],LOAD:[1,1,!0,!1,this.cb],TEST:[0,0,!0,!1,this.bb]};for(a=0;22>a;a++)this.a["S"+a]=[0,0,!1,!1,this.eb,a];this.o=this.f=this.l=this.m=null;this.exports={hold:this.Xa,toggle:this.rb,reset:this.nb,
|
||||
set:this.qb};E(this)}n(Va,u);k=Va.prototype;k.reset=function(a){this.stop();a&&M(this,this.h=0)};
|
||||
k.S=function(a,b,c,d){if(this.m&&this.m.S(a,b,c,d)||this.f&&this.f.S(a,b,c,d))return!0;switch(b){case "PC":return this.i[b]=c,this.B++,!0;default:return"led"==a||"rled"==a?(this.i[b]=c,this.j[b]=d?1:0,this.B++,!0):"switch"==a?(void 0===this.a[b]&&(this.a[b]=[d?1:0,d?1:0]),this.i[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Xa(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){N(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){Xa(a,
|
||||
b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){N(a,b)}}(this,b),!0):u.prototype.S.call(this,a,b,c,d)}};k.V=function(a,b,c,d){this.m=a;this.l=b;this.f=c;this.o=d;Ya(this);Za(this)};k.T=function(a,b){if(!b)if(this.O&&$a(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};k.N=function(a){return a?this.save():!0};k.save=function(){var a=new O(this);a.set(0,[this.c,this.h,this.g]);return a.data()};
|
||||
k.restore=function(a){if(a=a[0])Q(this,this.c=a[0]),M(this,this.h=a[1]),ab(this,a[2]);return!0};k.nb=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}Za(this);return!0};function bb(a,b,c){if(a=a.i[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Ya(a,b){for(var c in a.j)bb(a,c,null!=b?b:a.j[c])}function cb(a,b,c){if(a=a.i[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function Za(a){for(var b in a.a)cb(a,b,a.a[b][1])}
|
||||
k.Xa=function(a,b,c){if(Xa(this,b)){if(c){var d=this;setTimeout(function(){N(d,b);a&&a()},+c);return!1}N(this,b)}return!0};
|
||||
k.qb=function(a,b){if("SR"==a){a=b;b=8;var c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var f,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):
|
||||
2==e&&d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f)}return ab(this,c)}return(c=this.a[a])?(c[1]=+b?1:0,cb(this,a,c[1]),!0):!1};k.rb=function(a){return Xa(this,a)?(N(this,a),!0):!1};function Xa(a,b){var c=a.a[b];return c?(cb(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=db&&(a.K=b==eb,a.L=b==fb),!0):!1}function N(a,b){var c=a.a[b];c&&(c[2]&&c[3]&&(cb(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}
|
||||
k.fb=function(a){a||this.f.b.v||(this.f.g=this.c%Sa,this.a[gb]&&this.a[gb][1]&&hb(this.f))};k.gb=function(){};k.$a=function(a){a||R(this.f)};k.Ya=function(a){if(!a&&!this.f.b.v)if(this.a[gb]&&this.a[gb][1])hb(this.f);else{a=this.o;var b;if(b=a)a.b.oa&&(a.b.Da=!0),b=!a.b.oa;if(b)va(a,!0),a.c(0,null),va(a,!1);else try{var c=this.f.va(1);0<c&&(ib(this.f,c),jb(this.f,c,!0),kb(this.f,c))}catch(d){"number"!=typeof d&&(c=this.f,a=d.stack||d.message,c.b.error=!0,c.C(a))}this.stop();this.m&&S(this.m)}};
|
||||
k.Za=function(a){a&&!this.f.b.v&&(this.K&&lb(this),a=M(this,this.h=this.g),this.M==Wa?mb(this.l,this.c,a):this.f.ua(this.c,a))};k.ab=function(a){if(!a&&!this.f.b.v){this.L&&lb(this);if(this.M==Wa){a=this.l;var b=this.c,c=a.a[(b&a.g)>>>a.c];a.h++;b=c.o(b&16383,b);a.h--;a=b}else a=this.f.W(this.c);M(this,this.h=a)}};k.cb=function(a){a||this.f.b.v||Q(this,this.g)};k.bb=function(a){a?(this.s=!0,Ya(this,!0)):(this.s=!1,Ya(this),ab(this,0))};k.eb=function(a,b){this.g=a?this.g|1<<b:this.g&~(1<<b)};
|
||||
function lb(a){var b=1,c=a.l.g;a.a[db]&&a.a[db][1]||(b=-b);Q(a,a.c&~c|a.c+b&c)}function Q(a,b){a.c=b&a.l.g;if(a.D!==a.c){a.D=a.c;b=a.D;for(var c=0;22>c;c++){var d=a,e="A"+c,f=b&1<<c;d.j[e]=f;d.s||bb(d,e,f)}}}function M(a,b){a.u=b%Ua;if(a.H!==a.u){a.H=a.u;b=a.H;for(var c=0;16>c;c++){var d=a,e="D"+c,f=b&1<<c;d.j[e]=f;d.s||bb(d,e,f)}}return a.u}function ab(a,b){a.g=b|0;for(b=0;22>b;b++)a.a["S"+b][1]=a.g&1<<b?1:0;Za(a);return!0}k.stop=function(){Q(this,this.f.g)};
|
||||
function $a(){for(var a=D(document,C,"panel"),b=0;b<a.length;b++){var c=a[b],d=A(c),e=na(d.id);e||(e=new Va(d,!0));B(e,c)}}var Wa=7,eb="DEP",gb="ENABLE",fb="EXAM",db="STEP";I($a);function nb(a,b,c){u.call(this,"Bus",a);this.f=b;this.o=c;this.u=+a.busWidth||18;this.s=1<<this.u;this.g=this.s-1;this.c=Math.log2(16384);this.j=this.s/16384|0;this.h=0;this.a=[];a=new T(this);ob(a);this.a=Array(this.j);for(b=0;b<this.j;b++)this.a[b]=a;E(this)}n(nb,u);k=nb.prototype;k.reset=function(){};
|
||||
k.T=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.N=function(a){return a?this.save():!0};k.save=function(){var a=new O(this);a.set(0,pb(this));return a.data()};k.restore=function(a){a:{a=a[0];var b;for(b=0;b<a.length-1;b+=2){var c=a[b],d=a[b+1];if(d&&4096>d.length){for(var e=0,f=Array(4096),g=0;g<d.length-1;)for(var h=d[g++],l=d[g++];h--;)f[e++]=l;d=f}e=this.a[c];if(!e||!e.restore(d)){x("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
|
||||
function qb(a,b,c,d){for(var e=b,f=c,g=e>>>a.c;0<f&&g<a.a.length;){var h=a.a[g],l=16384*g,p=16384-(e-l);p>f&&(p=f);if(h&&h.size){if(h.type==d){if(e+f<=h.Y)return h.ta+=h.Y-e,h.Y=e,!0;if(e>=h.Y+h.ta){p=h.size-(e-l);p>f&&(p=f);h.ta=e-h.Y+p;e=l+16384;f-=p;g++;continue}}return rb(sb,e,f)}e=new T(a,e,p,16384,d);ob(e,h);a.a[g++]=e;e=l+16384;f-=p}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+tb[d]+" at "+wa(b)),!0):rb(ub,b,c)}function mb(a,b,c){var d=a.a[(b&a.g)>>>a.c];a.h++;d.l(c,b&16383,b);a.h--}
|
||||
function pb(a){for(var b=0,c=[],d=0;d<a.j;d++){var e=a.a[d];if(e.qa||e.Wa){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,l=[];g<e.length;){for(var p=e[g],q=g+1;q<e.length&&e[q]===p;)q++;l[h++]=q-g;l[h++]=p;g=q}l.length<e.length&&(e=l)}c[f]=e}}return c}function rb(a,b,c){x("Memory block error ("+a+": "+F(b)+","+F(c)+")");return!1}var sb=1,ub=2;function vb(a){u.call(this,"Device",a)}n(vb,u);k=vb.prototype;k.V=function(a,b,c,d){this.l=b;this.m=a;this.f=c;this.o=d;E(this)};
|
||||
k.T=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.N=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){return(new O(this)).data()};k.restore=function(){return!0};I(function(){for(var a=D(document,C,"device"),b=0;b<a.length;b++){var c,d=a[b];c=A(d);switch(c.type){case "default":c=new vb(c),B(c,d)}}});
|
||||
function T(a,b,c,d,e){this.h=a;this.id=wb+=2;this.Y=b;this.ta=c;this.size=d||0;this.type=e||xb;this.m=e==yb;this.W=this.o=this.c=this.ca;this.ua=this.l=this.g=this.ea;this.f=this.i=0;ob(this);this.qa=this.Wa=!1;if(this.size){a=this.a=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;zb(this,Ab)}else zb(this)}k=T.prototype;k.save=function(){return this.a};k.restore=function(a){return a&&this.size==a.length?(this.a=a,this.qa=!0):!1};function zb(a,b){b||(b=Bb);Cb(a,b,void 0);Db(a,b,void 0)}
|
||||
function Cb(a,b,c){c&&a.f||(a.W=b[2]||a.ca);if(c||void 0===c)a.c=b[0]||a.ca,a.o=b[2]||a.ca}function Db(a,b,c){c&&a.i||(a.ua=!a.m&&b[3]||a.ea);if(c||void 0===c)a.g=b[1]||a.ea,a.l=b[3]||a.ea}function ob(a,b){a.f=a.i=0;b&&((a.f=b.f)&&Cb(a,Eb,!1),(a.i=b.i)&&Db(a,Eb,!1))}k.ca=function(){var a=this.h;a.h||R(a.f);return-1};k.ea=function(){};k.ib=function(a,b,c,d){a=this.a[a];return a=32>=c+d?a>>c&(1<<d)-1:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d)};k.lb=function(a){return this.a[a]};
|
||||
k.ub=function(a,b,c,d,e){c=this.a[b];var f=Math.pow(2,d);a%=Math.pow(2,e);d=c%Math.pow(2,d+e);c=c-d+a*f+d%f;this.a[b]!=c&&(this.a[b]=c,this.qa=!0)};k.wb=function(a,b){this.a[b]=a;this.qa=!0};k.hb=function(a,b,c,d){return this.c(a,b,c,d)};k.jb=function(a,b){return this.o(a,b)};k.tb=function(a,b,c,d,e){this.m||this.g(a,b,c,d,e)};k.vb=function(a,b,c){this.m||this.l(a,b,c)};
|
||||
var xb=0,yb=2,tb=["NONE","RAM","ROM"],wb=0,Bb=[],Ab=[T.prototype.ib,T.prototype.ub,T.prototype.lb,T.prototype.wb],Eb=[T.prototype.hb,T.prototype.tb,T.prototype.jb,T.prototype.vb];
|
||||
function Fb(a,b){u.call(this,"CPU",a);b=+a.cycles||b;var c=+a.multiplier||1;this.wa=0;this.Aa=b;this.M=c;this.ya=Math.round(this.Aa/1E4)/100;this.K=this.ya*this.M;this.za=this.aa=this.O=this.na=0;this.b.v=this.b.Ea=!1;this.b.G=a.autoStart;"string"==typeof this.b.G&&(this.b.G="true"==this.b.G);this.b.pa=!1;this.la=this.L=0;this.ma=+a.csStart;this.ga=+a.csInterval;this.ha=+a.csStop;this.s=[];this.Ka=this.ob.bind(this);this.D=this.j=this.A=this.B=this.h=this.fa=this.u=this.U=this.Ba=this.H=0;this.ia=
|
||||
null;E(this)}n(Fb,u);k=Fb.prototype;k.V=function(a,b,c,d){this.m=a;this.l=b;this.o=d;this.ia=a.g;for(a=0;a<Gb.length;a++)(b=this.i[Gb[a]])&&this.m.S(null,Gb[a],b);E(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
|
||||
k.T=function(a,b){var c=U(this.m,"autoStart");null!=c?this.b.G="true"==c?!0:"false"==c?!1:!!c:null==this.b.G&&(this.b.G=void 0===this.i.run);if(!b){if(a){Hb(this);if(!this.restore(a))return!1;Ib(this)}else this.reset();this.status("No debugger detected");this.b.G||this.I("CPU will not be auto-started "+(this.ia?"(click Run to start)":"(type 'go' to start)"))}return!0};k.N=function(a){return a?this.save():!0};k.G=function(){return this.b.v?!0:this.b.G?(hb(this),!0):!1};k.Ma=function(){return 0};
|
||||
function Ib(a){void 0===a.ma&&(a.ma=0);void 0===a.ga&&(a.ga=-1);void 0===a.ha&&(a.ha=-1);a.b.pa=0<=a.ma&&0<a.ga;a.b.pa&&(a.la=0,a.L=a.ma-a.D)}function kb(a,b){if(a.b.pa){var c=!1;a.la=a.la+a.Ma()|0;a.L-=b;0>=a.L&&(a.L+=a.ga,c=!0);0<=a.ha&&a.ha<=Jb(a)&&(a.ga=a.ha=-1,Ib(a),R(a),c=!0);c&&a.I(Jb(a)+" cycles: checksum="+F(a.la))}}
|
||||
k.S=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.i[b]=c,!0;case "run":return this.i[b]=c,c.onclick=function(){var a;if(a=d.m)if(a=d.m,a.b.w)a=!0;else{var b=null,c,h=y(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.b.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.b.w);c++);c==h.length&&(b=a);x("The "+b.type+" component ("+b.id+") is not "+(b.b.ready?"powered yet":"ready yet"+(b.ra?" (waiting for notification)":""))+".");a=!1}a&&(d.b.v?R(d):hb(d))},!0;case "speed":return this.i[b]=
|
||||
c,!0;case "setSpeed":return this.i[b]=c,c.onclick=function(){Kb(d,d.M<<1,!0)},c.textContent=this.K.toFixed(2)+"Mhz",!0}return!1};function jb(a,b,c){a.D+=b;c&&(a.A=a.B=0)}function Lb(a,b){var c=1;b&&1<a.M&&a.H&&(c=a.H/a.ya);a.za=Math.round(1E3/Mb);a.aa=Math.floor(a.Aa/Mb*c);b||(a.O=a.aa);a.na=0}function Jb(a){return a.D+a.j+a.A-a.B}function Hb(a){a.H=0;a.Ba=0;a.D=a.j=a.A=a.B=0;Ib(a);Kb(a,1)}
|
||||
function Kb(a,b,c){if(void 0!==b){.8>a.H/a.K&&(b=1);a.M=b;b=a.ya*a.M;if(a.K!=b){a.K=b;b=a.K.toFixed(2)+"Mhz";var d=a.i.setSpeed;d&&(d.textContent=b);a.I("target speed: "+b)}c&&a.m&&(c=a.m,c.Z&&(d=b=0,window&&(b=window.scrollX,d=window.scrollY),c.Z.focus(),window&&window.scrollTo(b,d)))}jb(a,a.j);a.j=0;a.h=w();a.u=0;Lb(a)}function Nb(a){for(var b=[],c=0;c<a.s.length;c++)b.push(a.s[c][0]);return b}
|
||||
function ib(a,b){for(var c=a.s.length-1;0<=c;c--){var d=a.s[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function Ob(a,b){var c=a.A-=a.B;a.B=0;b&&(a.A=0);return c}
|
||||
k.ob=function(){if(this.b.v){this.na>=this.Aa&&Lb(this,!0);this.U=0;this.fa=w();if(this.u){var a=this.fa-this.u;a>this.za&&(this.h+=a,this.h>this.fa&&(this.h=this.fa))}try{do{for(var b,c=this.b.pa?1:this.aa,d=this.s.length-1;0<=d;d--){var e=this.s[d];0>e[0]||c>e[0]&&(c=e[0])}b=c;try{this.va(b)}catch(f){if("number"!=typeof f)throw f;}b=Ob(this,!0);this.U+=b;this.j+=b;kb(this,b);ib(this,b);this.O-=b;if(0>=this.O){this.O+=this.aa;++this.Ba>=Pb&&(this.m&&S(this.m,void 0),this.Ba=0);break}}while(this.b.v)}catch(f){R(this);
|
||||
this.m&&this.m.stop(w(),Jb(this));a=f.stack||f.message;this.b.error=!0;this.C(a);return}if(this.b.v){a=setTimeout;b=this.Ka;this.u=w();c=this.za;this.U&&(c=Math.round(c*this.U/this.aa));c-=this.u-this.fa;if(d=this.u-this.h)this.H=Math.round(this.j/(10*d))/100,864E5<=d&&(this.D=0,Kb(this));if(0>c||this.H<this.K)-1E3>c&&(this.h-=c),c=0;this.na+=this.U;this.u+=c;a(b,c)}}};
|
||||
function hb(a){var b;a.b.error?(a.I(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.b.v)a.I(a.toString()+" busy");else{Kb(a);a.b.v=!0;a.b.Ea=!0;if(b=a.i.run)b.textContent="Halt";a.m&&a.m.start(a.h,Jb(a));a.o||a.status("Started");setTimeout(a.Ka,0)}}k.va=function(){return 0};function R(a){var b=!1;if(a.b.v){Ob(a);jb(a,a.j);a.j=0;a.b.v=!1;if(b=a.i.run)b.textContent="Run";a.m&&a.m.stop(w(),Jb(a));b=!0;a.o||a.status("Stopped")}a.b.complete=void 0;return b}var Mb=30,Pb=15,Gb=["power","reset"];
|
||||
function Qb(a){var b=+a.model||1001;Fb.call(this,a,1E6);this.Sa=b;this.Ia=+a.addrReset||0;this.Ta=Rb.bind(this);this.a=V.bind(this);this.X=null;this.Ha=[];this.b.complete=!1}n(Qb,Fb);k=Qb.prototype;k.reset=function(){this.status("Model "+this.Sa);this.b.v&&R(this);this.Ca=0;this.da=this.g=this.xa=this.Ia;this.c=0;this.W=this.kb;this.ua=this.xb;this.X=null;Hb(this);this.b.error=!1;Fb.prototype.reset.call(this)};k.Ma=function(){return 0};
|
||||
k.save=function(){var a=new O(this);a.set(0,[this.Ca,this.g,this.xa,this.da,this.c]);a.set(1,[]);a.set(2,[this.D,this.M,this.b.G]);a.set(3,Sb(this));a.set(4,Nb(this));return a.data()};
|
||||
k.restore=function(a){var b;b=a[0];ea();ba();ea();var c=b[Symbol.iterator];b=c?c.call(b):fa(b);this.Ca=b.next().value;this.g=b.next().value;this.xa=b.next().value;this.da=b.next().value;this.c=b.next().value;b=a[2];this.D=b[0];Kb(this,b[1]);this.b.G=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.Ha.length;d++){var e=this.Ha[d];if(e.sb===b[c]){d=e;break a}}d=null}d&&(d.next=this.X,this.X=d)}a=a[4];for(b=0;b<this.s.length&&b<a.length;b++)this.s[b][0]=a[b];return!0};
|
||||
function Sb(a){var b=[];for(a=a.X;a;)b.push(a.sb),a=a.next;return b}k.kb=function(a){var b=this.l;a=this.da=a;return b.a[(a&b.g)>>>b.c].W(a&16383,a)};k.xb=function(a,b){var c=this.l;a=this.da=a;c.a[(a&c.g)>>>c.c].ua(b,a&16383,a)};
|
||||
k.va=function(a){this.b.complete=!0;var b=a?this.b.Ea?0:1:-1;this.b.Ea=!1;this.A=this.B=a;this.c=this.c&-5|0;do{if(a=this.c)if(a=this.c&11)this.c&2?this.X||(this.c&=-3):this.c&1&&this.c++,a=!1;if(a){if(this.c&4&&this.o.h(this.g,b)){R(this);break}if(0>b)break}this.c&=15;var c=this.xa=this.g;a=this.W(c);this.g=(c+1)%Sa;for(var d,e=a,f=4;;){c=e&262143;(d=e>>18&15)&&(c=c+this.W(d)&Ta);if(!(e&4194304))break;if(0>--f){d=this.l;d.h||R(d.f);break}e=this.W(c)}this.Ca=c;this.Ta(a/Sa|0)}while(0<this.B);return this.b.complete?
|
||||
this.A-this.B:!1===this.b.complete?-1:0};I(function(){for(var a=D(document,C,"cpu"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Qb(d);B(d,c)}});function W(a){this.a(a)}function Tb(a){this.a(a)}function Ub(a){this.a(a)}function X(a){this.a(a)}function V(a){this.I("undefined opcode: "+wa(a));R(this.f)}function Rb(a){Vb[a>>9].call(this,a)}
|
||||
var Vb=[W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
var C="pdp10",L="PDPjs",Sa=Math.pow(2,18),Ta=Math.pow(2,18)-1,Ua=Math.pow(2,36),Va=Math.pow(2,23),C="pdp10",L="PDPjs";
|
||||
function Wa(a,b){u.call(this,"Panel",a);this.A=this.B=0;this.P=b;this.c=this.u=this.g=this.h=0;this.D=this.H=-1;this.K=this.L=this.s=!1;this.N=Xa;this.j={};this.a={START:[1,1,!0,!1,this.gb],STEP:[1,1,!1,!1,this.hb],ENABLE:[1,1,!1,!1,this.ab],CONT:[1,1,!0,!1,this.Za],DEP:[0,0,!0,!1,this.$a],EXAM:[1,1,!0,!1,this.bb],LOAD:[1,1,!0,!1,this.eb],TEST:[0,0,!0,!1,this.cb]};for(a=0;22>a;a++)this.a["S"+a]=[0,0,!1,!1,this.fb,a];this.o=this.f=this.l=this.m=null;this.exports={hold:this.Ya,toggle:this.sb,reset:this.ob,
|
||||
set:this.rb};E(this)}n(Wa,u);k=Wa.prototype;k.reset=function(a){this.stop();a&&M(this,this.h=0)};
|
||||
k.T=function(a,b,c,d){if(this.m&&this.m.T(a,b,c,d)||this.f&&this.f.T(a,b,c,d))return!0;switch(b){case "PC":return this.i[b]=c,this.B++,!0;default:return"led"==a||"rled"==a?(this.i[b]=c,this.j[b]=d?1:0,this.B++,!0):"switch"==a?(void 0===this.a[b]&&(this.a[b]=[d?1:0,d?1:0]),this.i[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Ya(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){N(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){Ya(a,
|
||||
b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){N(a,b)}}(this,b),!0):u.prototype.T.call(this,a,b,c,d)}};k.X=function(a,b,c,d){this.m=a;this.l=b;this.f=c;this.o=d;Za(this);$a(this)};k.U=function(a,b){if(!b)if(this.P&&ab(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};k.O=function(a){return a?this.save():!0};k.save=function(){var a=new O(this);a.set(0,[this.c,this.h,this.g]);return a.data()};
|
||||
k.restore=function(a){if(a=a[0])Q(this,this.c=a[0]),M(this,this.h=a[1]),bb(this,a[2]);return!0};k.ob=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}$a(this);return!0};function cb(a,b,c){if(a=a.i[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Za(a,b){for(var c in a.j)cb(a,c,null!=b?b:a.j[c])}function db(a,b,c){if(a=a.i[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function $a(a){for(var b in a.a)db(a,b,a.a[b][1])}
|
||||
k.Ya=function(a,b,c){if(Ya(this,b)){if(c){var d=this;setTimeout(function(){N(d,b);a&&a()},+c);return!1}N(this,b)}return!0};
|
||||
k.rb=function(a,b){if("SR"==a){a=b;b=8;var c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var f,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):
|
||||
2==e&&d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f)}return bb(this,c)}return(c=this.a[a])?(c[1]=+b?1:0,db(this,a,c[1]),!0):!1};k.sb=function(a){return Ya(this,a)?(N(this,a),!0):!1};function Ya(a,b){var c=a.a[b];return c?(db(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=eb&&(a.K=b==fb,a.L=b==gb),!0):!1}function N(a,b){var c=a.a[b];c&&(c[2]&&c[3]&&(db(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}
|
||||
k.gb=function(a){a||this.f.b.v||(this.f.g=this.c%Sa,this.a[hb]&&this.a[hb][1]&&ib(this.f))};k.hb=function(){};k.ab=function(a){a||R(this.f)};k.Za=function(a){if(!a&&!this.f.b.v)if(this.a[hb]&&this.a[hb][1])ib(this.f);else{a=this.o;var b;if(b=a)a.b.ra&&(a.b.Ea=!0),b=!a.b.ra;if(b)va(a,!0),a.c(0,null),va(a,!1);else try{var c=this.f.xa(1);0<c&&(jb(this.f,c),kb(this.f,c,!0),lb(this.f,c))}catch(d){"number"!=typeof d&&(c=this.f,a=d.stack||d.message,c.b.error=!0,c.C(a))}this.stop();this.m&&S(this.m)}};
|
||||
k.$a=function(a){a&&!this.f.b.v&&(this.K&&mb(this),a=M(this,this.h=this.g),this.N==Xa?nb(this.l,this.c,a):this.f.Y(this.c,a))};k.bb=function(a){if(!a&&!this.f.b.v){this.L&&mb(this);if(this.N==Xa){a=this.l;var b=this.c,c=a.a[(b&a.g)>>>a.c];a.h++;b=c.o(b&16383,b);a.h--;a=b}else a=this.f.M(this.c);M(this,this.h=a)}};k.eb=function(a){a||this.f.b.v||Q(this,this.g)};k.cb=function(a){a?(this.s=!0,Za(this,!0)):(this.s=!1,Za(this),bb(this,0))};k.fb=function(a,b){this.g=a?this.g|1<<b:this.g&~(1<<b)};
|
||||
function mb(a){var b=1,c=a.l.g;a.a[eb]&&a.a[eb][1]||(b=-b);Q(a,a.c&~c|a.c+b&c)}function Q(a,b){a.c=b&a.l.g;if(a.D!==a.c){a.D=a.c;b=a.D;for(var c=0;22>c;c++){var d=a,e="A"+c,f=b&1<<c;d.j[e]=f;d.s||cb(d,e,f)}}}function M(a,b){a.u=b%Ua;if(a.H!==a.u){a.H=a.u;b=a.H;for(var c=0;16>c;c++){var d=a,e="D"+c,f=b&1<<c;d.j[e]=f;d.s||cb(d,e,f)}}return a.u}function bb(a,b){a.g=b|0;for(b=0;22>b;b++)a.a["S"+b][1]=a.g&1<<b?1:0;$a(a);return!0}k.stop=function(){Q(this,this.f.g)};
|
||||
function ab(){for(var a=D(document,C,"panel"),b=0;b<a.length;b++){var c=a[b],d=A(c),e=na(d.id);e||(e=new Wa(d,!0));B(e,c)}}var Xa=7,fb="DEP",hb="ENABLE",gb="EXAM",eb="STEP";I(ab);function ob(a,b,c){u.call(this,"Bus",a);this.f=b;this.o=c;this.u=+a.busWidth||18;this.s=1<<this.u;this.g=this.s-1;this.c=Math.log2(16384);this.j=this.s/16384|0;this.h=0;this.a=[];a=new T(this);pb(a);this.a=Array(this.j);for(b=0;b<this.j;b++)this.a[b]=a;E(this)}n(ob,u);k=ob.prototype;k.reset=function(){};
|
||||
k.U=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.O=function(a){return a?this.save():!0};k.save=function(){var a=new O(this);a.set(0,qb(this));return a.data()};k.restore=function(a){a:{a=a[0];var b;for(b=0;b<a.length-1;b+=2){var c=a[b],d=a[b+1];if(d&&4096>d.length){for(var e=0,f=Array(4096),g=0;g<d.length-1;)for(var h=d[g++],l=d[g++];h--;)f[e++]=l;d=f}e=this.a[c];if(!e||!e.restore(d)){x("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
|
||||
function rb(a,b,c,d){for(var e=b,f=c,g=e>>>a.c;0<f&&g<a.a.length;){var h=a.a[g],l=16384*g,p=16384-(e-l);p>f&&(p=f);if(h&&h.size){if(h.type==d){if(e+f<=h.Z)return h.wa+=h.Z-e,h.Z=e,!0;if(e>=h.Z+h.wa){p=h.size-(e-l);p>f&&(p=f);h.wa=e-h.Z+p;e=l+16384;f-=p;g++;continue}}return sb(tb,e,f)}e=new T(a,e,p,16384,d);pb(e,h);a.a[g++]=e;e=l+16384;f-=p}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+ub[d]+" at "+wa(b)),!0):sb(vb,b,c)}function nb(a,b,c){var d=a.a[(b&a.g)>>>a.c];a.h++;d.l(c,b&16383,b);a.h--}
|
||||
function qb(a){for(var b=0,c=[],d=0;d<a.j;d++){var e=a.a[d];if(e.ta||e.Xa){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,l=[];g<e.length;){for(var p=e[g],q=g+1;q<e.length&&e[q]===p;)q++;l[h++]=q-g;l[h++]=p;g=q}l.length<e.length&&(e=l)}c[f]=e}}return c}function sb(a,b,c){x("Memory block error ("+a+": "+F(b)+","+F(c)+")");return!1}var tb=1,vb=2;function wb(a){u.call(this,"Device",a)}n(wb,u);k=wb.prototype;k.X=function(a,b,c,d){this.l=b;this.m=a;this.f=c;this.o=d;E(this)};
|
||||
k.U=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.O=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){return(new O(this)).data()};k.restore=function(){return!0};I(function(){for(var a=D(document,C,"device"),b=0;b<a.length;b++){var c,d=a[b];c=A(d);switch(c.type){case "default":c=new wb(c),B(c,d)}}});
|
||||
function T(a,b,c,d,e){this.h=a;this.id=xb+=2;this.Z=b;this.wa=c;this.size=d||0;this.type=e||yb;this.m=e==zb;this.M=this.o=this.c=this.ea;this.Y=this.l=this.g=this.ga;this.f=this.i=0;pb(this);this.ta=this.Xa=!1;if(this.size){a=this.a=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Ab(this,Bb)}else Ab(this)}k=T.prototype;k.save=function(){return this.a};k.restore=function(a){return a&&this.size==a.length?(this.a=a,this.ta=!0):!1};function Ab(a,b){b||(b=Cb);Db(a,b,void 0);Eb(a,b,void 0)}
|
||||
function Db(a,b,c){c&&a.f||(a.M=b[2]||a.ea);if(c||void 0===c)a.c=b[0]||a.ea,a.o=b[2]||a.ea}function Eb(a,b,c){c&&a.i||(a.Y=!a.m&&b[3]||a.ga);if(c||void 0===c)a.g=b[1]||a.ga,a.l=b[3]||a.ga}function pb(a,b){a.f=a.i=0;b&&((a.f=b.f)&&Db(a,Fb,!1),(a.i=b.i)&&Eb(a,Fb,!1))}k.ea=function(){var a=this.h;a.h||R(a.f);return-1};k.ga=function(){};k.jb=function(a,b,c,d){a=this.a[a];return a=32>=c+d?a>>c&(1<<d)-1:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d)};k.mb=function(a){return this.a[a]};
|
||||
k.vb=function(a,b,c,d,e){c=this.a[b];var f=Math.pow(2,d);a%=Math.pow(2,e);d=c%Math.pow(2,d+e);c=c-d+a*f+d%f;this.a[b]!=c&&(this.a[b]=c,this.ta=!0)};k.xb=function(a,b){this.a[b]=a;this.ta=!0};k.ib=function(a,b,c,d){return this.c(a,b,c,d)};k.kb=function(a,b){return this.o(a,b)};k.ub=function(a,b,c,d,e){this.m||this.g(a,b,c,d,e)};k.wb=function(a,b,c){this.m||this.l(a,b,c)};
|
||||
var yb=0,zb=2,ub=["NONE","RAM","ROM"],xb=0,Cb=[],Bb=[T.prototype.jb,T.prototype.vb,T.prototype.mb,T.prototype.xb],Fb=[T.prototype.ib,T.prototype.ub,T.prototype.kb,T.prototype.wb];
|
||||
function Gb(a,b){u.call(this,"CPU",a);b=+a.cycles||b;var c=+a.multiplier||1;this.ya=0;this.Ca=b;this.N=c;this.Aa=Math.round(this.Ca/1E4)/100;this.K=this.Aa*this.N;this.Ba=this.ca=this.P=this.pa=0;this.b.v=this.b.Fa=!1;this.b.G=a.autoStart;"string"==typeof this.b.G&&(this.b.G="true"==this.b.G);this.b.sa=!1;this.na=this.L=0;this.oa=+a.csStart;this.ja=+a.csInterval;this.ba=+a.csStop;this.s=[];this.La=this.pb.bind(this);this.D=this.j=this.A=this.B=this.h=this.ia=this.u=this.V=this.Da=this.H=0;this.ka=
|
||||
null;E(this)}n(Gb,u);k=Gb.prototype;k.X=function(a,b,c,d){this.m=a;this.l=b;this.o=d;this.ka=a.g;for(a=0;a<Hb.length;a++)(b=this.i[Hb[a]])&&this.m.T(null,Hb[a],b);E(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
|
||||
k.U=function(a,b){var c=U(this.m,"autoStart");null!=c?this.b.G="true"==c?!0:"false"==c?!1:!!c:null==this.b.G&&(this.b.G=void 0===this.i.run);if(!b){if(a){Ib(this);if(!this.restore(a))return!1;Jb(this)}else this.reset();this.status("No debugger detected");this.b.G||this.I("CPU will not be auto-started "+(this.ka?"(click Run to start)":"(type 'go' to start)"))}return!0};k.O=function(a){return a?this.save():!0};k.G=function(){return this.b.v?!0:this.b.G?(ib(this),!0):!1};k.Na=function(){return 0};
|
||||
function Jb(a){void 0===a.oa&&(a.oa=0);void 0===a.ja&&(a.ja=-1);void 0===a.ba&&(a.ba=-1);a.b.sa=0<=a.oa&&0<a.ja;a.b.sa&&(a.na=0,a.L=a.oa-a.D)}function lb(a,b){if(a.b.sa){var c=!1;a.na=a.na+a.Na()|0;a.L-=b;0>=a.L&&(a.L+=a.ja,c=!0);0<=a.ba&&a.ba<=Kb(a)&&(a.ja=a.ba=-1,Jb(a),R(a),c=!0);c&&a.I(Kb(a)+" cycles: checksum="+F(a.na))}}
|
||||
k.T=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.i[b]=c,!0;case "run":return this.i[b]=c,c.onclick=function(){var a;if(a=d.m)if(a=d.m,a.b.w)a=!0;else{var b=null,c,h=y(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.b.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.b.w);c++);c==h.length&&(b=a);x("The "+b.type+" component ("+b.id+") is not "+(b.b.ready?"powered yet":"ready yet"+(b.ua?" (waiting for notification)":""))+".");a=!1}a&&(d.b.v?R(d):ib(d))},!0;case "speed":return this.i[b]=
|
||||
c,!0;case "setSpeed":return this.i[b]=c,c.onclick=function(){Lb(d,d.N<<1,!0)},c.textContent=this.K.toFixed(2)+"Mhz",!0}return!1};function kb(a,b,c){a.D+=b;c&&(a.A=a.B=0)}function Mb(a,b){var c=1;b&&1<a.N&&a.H&&(c=a.H/a.Aa);a.Ba=Math.round(1E3/Nb);a.ca=Math.floor(a.Ca/Nb*c);b||(a.P=a.ca);a.pa=0}function Kb(a){return a.D+a.j+a.A-a.B}function Ib(a){a.H=0;a.Da=0;a.D=a.j=a.A=a.B=0;Jb(a);Lb(a,1)}
|
||||
function Lb(a,b,c){if(void 0!==b){.8>a.H/a.K&&(b=1);a.N=b;b=a.Aa*a.N;if(a.K!=b){a.K=b;b=a.K.toFixed(2)+"Mhz";var d=a.i.setSpeed;d&&(d.textContent=b);a.I("target speed: "+b)}c&&a.m&&(c=a.m,c.aa&&(d=b=0,window&&(b=window.scrollX,d=window.scrollY),c.aa.focus(),window&&window.scrollTo(b,d)))}kb(a,a.j);a.j=0;a.h=w();a.u=0;Mb(a)}function Ob(a){for(var b=[],c=0;c<a.s.length;c++)b.push(a.s[c][0]);return b}
|
||||
function jb(a,b){for(var c=a.s.length-1;0<=c;c--){var d=a.s[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function Pb(a,b){var c=a.A-=a.B;a.B=0;b&&(a.A=0);return c}
|
||||
k.pb=function(){if(this.b.v){this.pa>=this.Ca&&Mb(this,!0);this.V=0;this.ia=w();if(this.u){var a=this.ia-this.u;a>this.Ba&&(this.h+=a,this.h>this.ia&&(this.h=this.ia))}try{do{for(var b,c=this.b.sa?1:this.ca,d=this.s.length-1;0<=d;d--){var e=this.s[d];0>e[0]||c>e[0]&&(c=e[0])}b=c;try{this.xa(b)}catch(f){if("number"!=typeof f)throw f;}b=Pb(this,!0);this.V+=b;this.j+=b;lb(this,b);jb(this,b);this.P-=b;if(0>=this.P){this.P+=this.ca;++this.Da>=Qb&&(this.m&&S(this.m,void 0),this.Da=0);break}}while(this.b.v)}catch(f){R(this);
|
||||
this.m&&this.m.stop(w(),Kb(this));a=f.stack||f.message;this.b.error=!0;this.C(a);return}if(this.b.v){a=setTimeout;b=this.La;this.u=w();c=this.Ba;this.V&&(c=Math.round(c*this.V/this.ca));c-=this.u-this.ia;if(d=this.u-this.h)this.H=Math.round(this.j/(10*d))/100,864E5<=d&&(this.D=0,Lb(this));if(0>c||this.H<this.K)-1E3>c&&(this.h-=c),c=0;this.pa+=this.V;this.u+=c;a(b,c)}}};
|
||||
function ib(a){var b;a.b.error?(a.I(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.b.v)a.I(a.toString()+" busy");else{Lb(a);a.b.v=!0;a.b.Fa=!0;if(b=a.i.run)b.textContent="Halt";a.m&&a.m.start(a.h,Kb(a));a.o||a.status("Started");setTimeout(a.La,0)}}k.xa=function(){return 0};function R(a){var b=!1;if(a.b.v){Pb(a);kb(a,a.j);a.j=0;a.b.v=!1;if(b=a.i.run)b.textContent="Run";a.m&&a.m.stop(w(),Kb(a));b=!0;a.o||a.status("Stopped")}a.b.complete=void 0;return b}var Nb=30,Qb=15,Hb=["power","reset"];
|
||||
function Rb(a){var b=+a.model||1001;Gb.call(this,a,1E6);this.Ta=b;this.Ja=+a.addrReset||0;this.Ua=Sb.bind(this);this.a=V.bind(this);this.fa=null;this.Ia=[];this.b.complete=!1}n(Rb,Gb);k=Rb.prototype;k.reset=function(){this.status("Model "+this.Ta);this.b.v&&R(this);this.W=this.qa=0;this.ha=this.g=this.za=this.Ja;this.c=0;this.M=this.lb;this.Y=this.yb;this.fa=null;Ib(this);this.b.error=!1;Gb.prototype.reset.call(this)};k.Na=function(){return 0};
|
||||
k.save=function(){var a=new O(this);a.set(0,[this.qa,this.W,this.g,this.za,this.ha,this.c]);a.set(1,[]);a.set(2,[this.D,this.N,this.b.G]);a.set(3,Tb(this));a.set(4,Ob(this));return a.data()};
|
||||
k.restore=function(a){var b;b=a[0];ea();ba();ea();var c=b[Symbol.iterator];b=c?c.call(b):fa(b);this.qa=b.next().value;this.W=b.next().value;this.g=b.next().value;this.za=b.next().value;this.ha=b.next().value;this.c=b.next().value;b=a[2];this.D=b[0];Lb(this,b[1]);this.b.G=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.Ia.length;d++){var e=this.Ia[d];if(e.tb===b[c]){d=e;break a}}d=null}d&&(d.next=this.fa,this.fa=d)}a=a[4];for(b=0;b<this.s.length&&b<a.length;b++)this.s[b][0]=a[b];return!0};
|
||||
function Tb(a){var b=[];for(a=a.fa;a;)b.push(a.tb),a=a.next;return b}k.lb=function(a){var b=this.l;a=this.ha=a;return b.a[(a&b.g)>>>b.c].M(a&16383,a)};k.yb=function(a,b){var c=this.l;a=this.ha=a;c.a[(a&c.g)>>>c.c].Y(b,a&16383,a)};
|
||||
k.xa=function(a){this.b.complete=!0;var b=a?this.b.Fa?0:1:-1;this.b.Fa=!1;this.A=this.B=a;this.c=this.c&-5|0;do{if(a=this.c)if(a=this.c&11)this.c&2?this.fa||(this.c&=-3):this.c&1&&this.c++,a=!1;if(a){if(this.c&4&&this.o.h(this.g,b)){R(this);break}if(0>b)break}this.c&=15;var c=this.za=this.g;a=this.qa=this.M(c);this.g=(c+1)%Sa;for(var d,e=4;;){c=a&262143;(d=a>>18&15)&&(c=c+this.M(d)&Ta);if(!(a&4194304))break;if(0>--e){a=this.l;a.h||R(a.f);break}a=this.M(c)}this.W=c;this.Ua(this.qa/Va|0)}while(0<this.B);
|
||||
return this.b.complete?this.A-this.B:!1===this.b.complete?-1:0};I(function(){for(var a=D(document,C,"cpu"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Rb(d);B(d,c)}});function Sb(a){Ub[a>>4].call(this,a)}function W(a){this.a(a)}function Vb(a){this.a(a)}function Wb(a){this.a(a)}function Xb(a){a&=15;var b=this.M(this.W),c=this.M(a);this.Y(a,(c&262143)+(b-(b&262143)))}function X(a){this.a(a)}function V(a){this.I("undefined opcode: "+wa(a));R(this)}
|
||||
var Ub=[W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Tb,Ub,Ub,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Tb,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Vb,Wb,Wb,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Vb,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},V,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},V,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
|
|
@ -106,57 +106,57 @@ function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a)
|
|||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Xb,function(a){a&=15;var b=this.M(a);this.Y(a,b&262143)},function(a){a=this.M(a&15);var b=this.M(this.W);this.Y(this.W,(b&262143)+(a-(a&262143)))},function(a){a&15&&Xb.call(this,a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X];
|
||||
function Wb(a){u.call(this,"ROM",a);this.J=this.a=null;this.j=+a.addr;this.g=+a.size;this.c=a.alias;"string"==typeof this.c&&(this.c=eval(this.c));this.h=a.file;this.s=xa(this.h);if(this.h){a=this.h;var b=ya(this.s);"json"!=b&&"hex"!=b&&(a=G()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;H(a,null,!0,function(a,b,f){f?(c.C("Unable to load ROM resource (error "+f+": "+a+")"),c.h=null):(ka(c.ka,a,b),(a=Ea(a,b))?(c.a=a.F,c.J=a.J):c.h=null);Xb(c)})}}n(Wb,u);
|
||||
Wb.prototype.V=function(a,b,c,d){this.l=b;this.f=c;this.o=d;Xb(this)};Wb.prototype.T=function(){this.J&&(this.o&&this.o.a(this.id,this.j,this.g,this.J),delete this.J);return!0};Wb.prototype.N=function(){return!0};
|
||||
function Xb(a){if(!ta(a)){if(a.h){if(!a.a||!a.l)return;a.g||(a.g=a.a.length);if(a.a.length!=a.g){var b="ROM size ("+F(a.a.length,8,!0)+") does not match specified size ("+F(a.g,8,!0)+")";a.b.error=!0;a.C(b)}else{b=a.j;if(qb(a.l,b,a.g,yb)){var c;for(c=0;c<a.a.length;c++)mb(a.l,b+c,a.a[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.c?b.push(a.c):null!=a.c&&a.c.length&&(b=a.c);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.l,g=d.g,h=[],l=d.j>>>f.c;0<g&&l<f.a.length;)h.push(f.a[l++]),g-=16384;f=d.l;
|
||||
d=d.g;g=0;for(e>>>=f.c;0<d&&e<f.a.length;){l=h[g++];if(!l)break;f.a[e++]=l;d-=16384}}delete a.a}}}E(a)}}I(function(){for(var a=D(document,C,"rom"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Wb(d);B(d,c)}});
|
||||
function Y(a){u.call(this,"RAM",a);this.J=this.c=null;this.g=+a.addr;this.h=+a.size;this.R=a.load;this.P=a.exec;null!=this.R&&(this.R=+this.R);null!=this.P&&(this.P=+this.P);this.j=!1;this.a=a.file;this.s=xa(this.a);if(this.a){a=this.a;var b=ya(this.s);"json"!=b&&"hex"!=b&&(a=G()+"/api/v1/dump?file="+this.a+"&format=bytes&decimal=true");var c=this;H(a,null,!0,function(a,b,f){f?(c.C("Unable to load RAM resource (error "+f+": "+a+")"),c.a=null):(ka(c.ka,a,b),(a=Ea(a,b))?(c.c=a.F,c.J=a.J,null==c.R&&
|
||||
(c.R=a.R),null==c.P&&(c.P=a.P)):c.a=null);Yb(c)})}}n(Y,u);Y.prototype.V=function(a,b,c,d){this.l=b;this.f=c;this.o=d;Yb(this)};Y.prototype.T=function(a,b){this.J&&(this.o&&this.o.a(this.id,this.g,this.h,this.J),delete this.J);b||this.reset();return!0};Y.prototype.N=function(){return!0};
|
||||
function Yb(a){if(a.l&&(!a.j&&a.h&&(qb(a.l,a.g,a.h,1)?a.j=!0:a.h=0),!ta(a))){if(!a.j)x("No RAM allocated");else if(a.a){if(!a.c||!a.l)return;Zb(a,a.c,a.R,a.P,a.g)?a.status('Loaded image "'+a.s+'"'):a.C('Error loading image "'+a.s+'"')}E(a)}}
|
||||
Y.prototype.reset=function(){if(this.j){for(var a=this.l,b=this.g,c=this.h,d=b&16383,b=b>>>a.c;0<c&&b<a.a.length;){var e=a.a[b],f=c,g=0,h,d=d||0,g=g||0;0>g&&g>=ja&&(g+=ia);g=Math.trunc(Math.abs(g))%ia;void 0===f&&(f=e.size);for(h=d;f--&&h<e.size;h++)e.l(g,d,e.Y+d);c-=16384;b++;d=0}this.c&&Zb(this,this.c,this.R,this.P,this.g,!this.o)}};
|
||||
function Zb(a,b,c,d,e,f){var g=!1,h=!1;if(null==c)for(var l=0;l<b.length-1;){var p=b[l]&255|(b[l+1]&255)<<8;if(p)if(p&255){if(1!=p)break;if(l+6>=b.length)break;for(var l=l+2,q=b[l++]&255|(b[l++]&255)<<8,t=b[l++]&255|(b[l++]&255)<<8,p=p+((q&255)+(q>>8)+(t&255)+(t>>8)),P=l,ua=q-=6;0<q&&l<b.length;)p+=b[l++]&255,q--;if(q||l>=b.length)break;p+=b[l++]&255;if(p&255)break;if(ua)for(;ua--;)mb(a.l,t++,b[P++]);else t&1?g=!0:null==d&&(d=t);h=!0}else l++;else l+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h<b.length;h++)mb(a.l,
|
||||
c+h,b[h]);h=!0}if(h){if(null==d||g)R(a.f),f=!1;null!=d&&(a=a.f,a.Ia=d,a.g=d%Sa,f?a.b.w?a.b.v||hb(a):a.b.G=!0:a.o&&a.b.w?R(a)||a.m.b.reset||(a.o.g(),S(a.m,-1)):!1===f&&R(a),!a.b.v&&a.ia&&a.ia.stop())}return h}I(function(){for(var a=D(document,C,"ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Y(d);B(d,c)}});
|
||||
function $b(a){u.call(this,"SerialPort",a);this.h=a.upperCase;"string"==typeof this.h&&(this.h="true"==this.h);this.g=!0;this.c=[];var b=a.binding;if("console"!=b){var c;a=ac;b&&(void 0===c&&(c="Panel"),(c=z(c,this.id))&&(b=c.i[b])&&this.S(null,a,b))}this.a=this.j=null;this.exports={connect:this.Na,receiveData:this.sa,receiveStatus:this.mb,setConnection:this.pb}}n($b,u);k=$b.prototype;
|
||||
k.S=function(a,b,c){var d=this;switch(b){case ac:return this.i[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?r.Ga:r.Ra:46==c?b=r.Ga:a.ctrlKey&&c>=r.Fa&&c<=r.Va&&(b=c-(r.Fa-r.Oa));b&&(a.preventDefault&&a.preventDefault(),d.sa(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==r.Qa&&(b=r.Pa);d.sa(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
|
||||
a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.sa(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};k.V=function(a,b,c,d){this.m=a;this.l=b;this.f=c;this.o=d;E(this)};
|
||||
k.Na=function(a){if(!this.a){var b=U(this.m,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ca(c[0]);if(d!=this.ja)return;c=Ca(c[1]);if(this.a=na(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.g);if(this.j=e.receiveData){this.g=a;this.status("Connected "+this.ka+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};k.T=function(a,b){if(!b)if(this.Na(this.g),!a)this.reset();else if(!this.restore(a))return!1;return!0};
|
||||
k.N=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){var a=new O(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};k.sa=function(a){if("number"==typeof a)this.c.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d<a.length;d++){c=b;b=a.charCodeAt(d);if(10==b){if(13==c)continue;b=13}this.c.push(b)}else this.c=this.c.concat(a);return!0};k.mb=function(){};k.pb=function(a,b){return this.a?!1:(this.a=a,this.j=b,!0)};var ac="buffer";
|
||||
I(function(){for(var a=D(document,C,"serial"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new $b(d);B(d,c)}});
|
||||
function bc(a,b,c){u.call(this,"Computer",a);this.b.w=!1;this.L=null;cc(this,b);this.H=U(this,"autoPower",a,6);this.h=0;this.U=+a.busWidth||+a.buswidth;this.B=this.s=this.D=null;this.A=this.O=!1;this.u=this.j=null;this.M=this.K=!1;this.X=U(this,"url")||"";(Math.random()+.1).toString(36);this.c=dc(this);if(this.f=z("CPU",this.id)){this.o=z("Debugger",this.id);this.l=new nb({id:this.ka+".bus",busWidth:this.U},this.f,this.o);var d,e=y(this.id);if((this.g=z("Panel",this.id))&&this.g.Z)for(b=0;b<e.length;b++)d=
|
||||
e[b],d.C=this.g.C,d.I=this.g.I,d.Z=this.g.Z;this.I(L+" v1.34.0\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.V&&d.V(this,this.l,this.f,this.o);b=null;d=U(this,"resume",a);void 0!==d&&(1<d.length?b=this.s=d:this.a=parseInt(d,10));var f;if(a=U(this,"state")||(f=!0,a.state))this.D=b=a,f||(this.A=!0,this.a=ec),this.a&&(this.u=new O(this,"1.34.0"),Z(this.u)?b=null:delete this.u);!b&&this.a&&
|
||||
(b=fc(this))&&(this.A=!0);if(b){var g=this;H(b,null,!0,function(a,b,c){c?(g.s=null,g.A=!1,g.C("Unable to load machine state from server (error "+c+(b?": "+Ca(b):"")+")")):(g.B=b,g.O=!0);E(g)})}else E(this);this.i.power||(this.H=!0);!c&&this.H&&gc(this,this.ba)}else x("Unable to find CPU component")}n(bc,u);function cc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){x(d.message+" ("+c+")")}}a.L=b}
|
||||
function U(a,b,c,d){var e=b.toLowerCase(),e=Ka(b)||Ka(e);void 0===e&&a.L&&(e=a.L[b]);void 0===e&&c&&(e=c[b]);void 0===e&&"object"==typeof resources&&resources[b]&&(e=b);void 0===e&&(e=void 0);if("string"==typeof e&&d)switch(d){case 4:e=+e;isNaN(e)&&(e=0);break;case 6:e="true"==e}return e}function gc(a,b,c){for(var d=y(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ta(f)){ta(f,function(){gc(a,b,c)});return}}b.call(a,c)}
|
||||
function hc(a,b){var c=new O(a,"1.34.0",ic);if(Z(c)&&jc(c)){var d=c.get(kc),e=b?b.get(kc):"unknown";d!=e&&(a.C("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=bc.prototype;
|
||||
k.ba=function(a){void 0===a&&(a=this.a||(this.B?lc:ec));if(!this.h){this.h++;var b=!1,c=!1;this.K=!1;var d=this.u||new O(this,"1.34.0");if(a==mc)b=!0;else if(a>ec){if(Z(d,this.B)){this.j=new O(this,"1.34.0",nc);Z(this.j)&&(oc(this,d),a=pc,qc(this.j));this.j.set(kc,Da());rc(this.j);var e=this.a&&!this.A;if(a==lc||ma("Click OK to restore the previous "+L+" machine state, or CANCEL to reset the machine.")){if(c=jc(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Z(d,g):("error"==f&&"no machine state"!=
|
||||
g?(this.C("Error: "+g),"unable to verify user"==g&&(Ia(sc,""),this.c=null)):this.I(f+": "+g),qc(d),Z(d)?(c=jc(d),e=!0):c=!1))}e&&hc(this,c?d:null)}else a==pc&&d.clear()}else hc(this);delete this.B;delete this.u}e=y(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.f&&(c=tc(this,g,d,b,c));b=[d,a,c];a!=mc?gc(this,this.La,b):this.La(b)}};
|
||||
function tc(a,b,c,d,e){if(!b.b.w){b.b.w=!0;var f=null;try{if(e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,".")))),"string"===typeof f&&(f=null),!b.T(f,d)&&f&&(x("Unable to restore state for "+b.type),a.D&&!a.O?(c.clear(),a.a=ec,window&&window.location.reload()):a.K=!0,b.T(null),e=!1),!d&&b.Ja){var g=b.Ja.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(h){x("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
|
||||
k.La=function(a){var b=a[0],c=0>a[1];a=a[2];this.M=!0;this.b.w=!0;var d=this.i.power;d&&(d.textContent="Shutdown");this.f&&(tc(this,this.f,b,c,a),S(this,-2),this.f.G());this.K&&(oc(this,b),b.clear());!c&&this.j&&(this.j.clear(),delete this.j);this.h=0};
|
||||
function oc(a,b){if(ma("There may be a problem with your "+L+" machine.\n\nTo help us diagnose it, click OK to send this "+L+" machine state to http://www.pcjs.org.")){var c=a.X;a=a.c||"";b=b.toString();var d={};d.app=L;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;H("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function uc(a,b,c){var d,e="none";if(a.h)return null;a.h--;var f=new O(a,"1.34.0"),g=new O(a,"1.34.0",ic),h=Da();g.set(kc,h);f.set(kc,h);f.set(vc,"1.34.0");f.set(wc,window?window.location.href:null);f.set(xc,window?window.navigator.userAgent:"");a.f&&a.f.N&&(c&&(b&&(a.f.b.G=a.f.b.v),R(a.f)),d=a.f.N(b,c),"object"===typeof d&&f.set(a.f.id,d),c&&(a.f.b.w=!1,!1===d&&(e=null)));for(var h=y(a.id),l=0;l<h.length;l++){var p=h[l];p.b.w&&(p.N&&(d=p.N(b,c),"object"===typeof d&&f.set(p.id,d)),c&&(p.b.w=!1,!1===
|
||||
d&&(e=null)))}e&&(c?(h=d=!1,b?(a.c&&yc(a,a.c,f.toString()),rc(g)&&rc(f)||(e=null,d=h=!0)):a.a&&(d=!0,h=a.a==zc),d&&f.clear(h)):e=f.toString());c&&(a.b.w=!1,b=a.i.power)&&(b.textContent="Power");a.h=0;return e}k.reset=function(){this.b.reset=!0;this.l&&this.l.reset&&this.l.reset();this.f&&this.f.reset&&this.f.reset();for(var a=y(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.l&&c!==this.f&&c.reset&&c.reset()}this.b.reset=!1;S(this,-1)};
|
||||
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X];
|
||||
function Yb(a){u.call(this,"ROM",a);this.J=this.a=null;this.j=+a.addr;this.g=+a.size;this.c=a.alias;"string"==typeof this.c&&(this.c=eval(this.c));this.h=a.file;this.s=xa(this.h);if(this.h){a=this.h;var b=ya(this.s);"json"!=b&&"hex"!=b&&(a=G()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;H(a,null,!0,function(a,b,f){f?(c.C("Unable to load ROM resource (error "+f+": "+a+")"),c.h=null):(ka(c.ma,a,b),(a=Ea(a,b))?(c.a=a.F,c.J=a.J):c.h=null);Zb(c)})}}n(Yb,u);
|
||||
Yb.prototype.X=function(a,b,c,d){this.l=b;this.f=c;this.o=d;Zb(this)};Yb.prototype.U=function(){this.J&&(this.o&&this.o.a(this.id,this.j,this.g,this.J),delete this.J);return!0};Yb.prototype.O=function(){return!0};
|
||||
function Zb(a){if(!ua(a)){if(a.h){if(!a.a||!a.l)return;a.g||(a.g=a.a.length);if(a.a.length!=a.g){var b="ROM size ("+F(a.a.length,8,!0)+") does not match specified size ("+F(a.g,8,!0)+")";a.b.error=!0;a.C(b)}else{b=a.j;if(rb(a.l,b,a.g,zb)){var c;for(c=0;c<a.a.length;c++)nb(a.l,b+c,a.a[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.c?b.push(a.c):null!=a.c&&a.c.length&&(b=a.c);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.l,g=d.g,h=[],l=d.j>>>f.c;0<g&&l<f.a.length;)h.push(f.a[l++]),g-=16384;f=d.l;
|
||||
d=d.g;g=0;for(e>>>=f.c;0<d&&e<f.a.length;){l=h[g++];if(!l)break;f.a[e++]=l;d-=16384}}delete a.a}}}E(a)}}I(function(){for(var a=D(document,C,"rom"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Yb(d);B(d,c)}});
|
||||
function Y(a){u.call(this,"RAM",a);this.J=this.c=null;this.g=+a.addr;this.h=+a.size;this.S=a.load;this.R=a.exec;null!=this.S&&(this.S=+this.S);null!=this.R&&(this.R=+this.R);this.j=!1;this.a=a.file;this.s=xa(this.a);if(this.a){a=this.a;var b=ya(this.s);"json"!=b&&"hex"!=b&&(a=G()+"/api/v1/dump?file="+this.a+"&format=bytes&decimal=true");var c=this;H(a,null,!0,function(a,b,f){f?(c.C("Unable to load RAM resource (error "+f+": "+a+")"),c.a=null):(ka(c.ma,a,b),(a=Ea(a,b))?(c.c=a.F,c.J=a.J,null==c.S&&
|
||||
(c.S=a.S),null==c.R&&(c.R=a.R)):c.a=null);$b(c)})}}n(Y,u);Y.prototype.X=function(a,b,c,d){this.l=b;this.f=c;this.o=d;$b(this)};Y.prototype.U=function(a,b){this.J&&(this.o&&this.o.a(this.id,this.g,this.h,this.J),delete this.J);b||this.reset();return!0};Y.prototype.O=function(){return!0};
|
||||
function $b(a){if(a.l&&(!a.j&&a.h&&(rb(a.l,a.g,a.h,1)?a.j=!0:a.h=0),!ua(a))){if(!a.j)x("No RAM allocated");else if(a.a){if(!a.c||!a.l)return;ac(a,a.c,a.S,a.R,a.g)?a.status('Loaded image "'+a.s+'"'):a.C('Error loading image "'+a.s+'"')}E(a)}}
|
||||
Y.prototype.reset=function(){if(this.j){for(var a=this.l,b=this.g,c=this.h,d=b&16383,b=b>>>a.c;0<c&&b<a.a.length;){var e=a.a[b],f=c,g=0,h,d=d||0,g=g||0;0>g&&g>=ja&&(g+=ia);g=Math.trunc(Math.abs(g))%ia;void 0===f&&(f=e.size);for(h=d;f--&&h<e.size;h++)e.l(g,d,e.Z+d);c-=16384;b++;d=0}this.c&&ac(this,this.c,this.S,this.R,this.g,!this.o)}};
|
||||
function ac(a,b,c,d,e,f){var g=!1,h=!1;if(null==c)for(var l=0;l<b.length-1;){var p=b[l]&255|(b[l+1]&255)<<8;if(p)if(p&255){if(1!=p)break;if(l+6>=b.length)break;for(var l=l+2,q=b[l++]&255|(b[l++]&255)<<8,t=b[l++]&255|(b[l++]&255)<<8,p=p+((q&255)+(q>>8)+(t&255)+(t>>8)),P=l,ta=q-=6;0<q&&l<b.length;)p+=b[l++]&255,q--;if(q||l>=b.length)break;p+=b[l++]&255;if(p&255)break;if(ta)for(;ta--;)nb(a.l,t++,b[P++]);else t&1?g=!0:null==d&&(d=t);h=!0}else l++;else l+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h<b.length;h++)nb(a.l,
|
||||
c+h,b[h]);h=!0}if(h){if(null==d||g)R(a.f),f=!1;null!=d&&(a=a.f,a.Ja=d,a.g=d%Sa,f?a.b.w?a.b.v||ib(a):a.b.G=!0:a.o&&a.b.w?R(a)||a.m.b.reset||(a.o.g(),S(a.m,-1)):!1===f&&R(a),!a.b.v&&a.ka&&a.ka.stop())}return h}I(function(){for(var a=D(document,C,"ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Y(d);B(d,c)}});
|
||||
function bc(a){u.call(this,"SerialPort",a);this.h=a.upperCase;"string"==typeof this.h&&(this.h="true"==this.h);this.g=!0;this.c=[];var b=a.binding;if("console"!=b){var c;a=cc;b&&(void 0===c&&(c="Panel"),(c=z(c,this.id))&&(b=c.i[b])&&this.T(null,a,b))}this.a=this.j=null;this.exports={connect:this.Oa,receiveData:this.va,receiveStatus:this.nb,setConnection:this.qb}}n(bc,u);k=bc.prototype;
|
||||
k.T=function(a,b,c){var d=this;switch(b){case cc:return this.i[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?r.Ha:r.Sa:46==c?b=r.Ha:a.ctrlKey&&c>=r.Ga&&c<=r.Wa&&(b=c-(r.Ga-r.Pa));b&&(a.preventDefault&&a.preventDefault(),d.va(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==r.Ra&&(b=r.Qa);d.va(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
|
||||
a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.va(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};k.X=function(a,b,c,d){this.m=a;this.l=b;this.f=c;this.o=d;E(this)};
|
||||
k.Oa=function(a){if(!this.a){var b=U(this.m,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ca(c[0]);if(d!=this.la)return;c=Ca(c[1]);if(this.a=na(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.g);if(this.j=e.receiveData){this.g=a;this.status("Connected "+this.ma+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};k.U=function(a,b){if(!b)if(this.Oa(this.g),!a)this.reset();else if(!this.restore(a))return!1;return!0};
|
||||
k.O=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){var a=new O(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};k.va=function(a){if("number"==typeof a)this.c.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d<a.length;d++){c=b;b=a.charCodeAt(d);if(10==b){if(13==c)continue;b=13}this.c.push(b)}else this.c=this.c.concat(a);return!0};k.nb=function(){};k.qb=function(a,b){return this.a?!1:(this.a=a,this.j=b,!0)};var cc="buffer";
|
||||
I(function(){for(var a=D(document,C,"serial"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new bc(d);B(d,c)}});
|
||||
function dc(a,b,c){u.call(this,"Computer",a);this.b.w=!1;this.L=null;ec(this,b);this.H=U(this,"autoPower",a,6);this.h=0;this.V=+a.busWidth||+a.buswidth;this.B=this.s=this.D=null;this.A=this.P=!1;this.u=this.j=null;this.N=this.K=!1;this.W=U(this,"url")||"";(Math.random()+.1).toString(36);this.c=fc(this);if(this.f=z("CPU",this.id)){this.o=z("Debugger",this.id);this.l=new ob({id:this.ma+".bus",busWidth:this.V},this.f,this.o);var d,e=y(this.id);if((this.g=z("Panel",this.id))&&this.g.aa)for(b=0;b<e.length;b++)d=
|
||||
e[b],d.C=this.g.C,d.I=this.g.I,d.aa=this.g.aa;this.I(L+" v1.34.0\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.X&&d.X(this,this.l,this.f,this.o);b=null;d=U(this,"resume",a);void 0!==d&&(1<d.length?b=this.s=d:this.a=parseInt(d,10));var f;if(a=U(this,"state")||(f=!0,a.state))this.D=b=a,f||(this.A=!0,this.a=gc),this.a&&(this.u=new O(this,"1.34.0"),Z(this.u)?b=null:delete this.u);!b&&this.a&&
|
||||
(b=hc(this))&&(this.A=!0);if(b){var g=this;H(b,null,!0,function(a,b,c){c?(g.s=null,g.A=!1,g.C("Unable to load machine state from server (error "+c+(b?": "+Ca(b):"")+")")):(g.B=b,g.P=!0);E(g)})}else E(this);this.i.power||(this.H=!0);!c&&this.H&&ic(this,this.da)}else x("Unable to find CPU component")}n(dc,u);function ec(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){x(d.message+" ("+c+")")}}a.L=b}
|
||||
function U(a,b,c,d){var e=b.toLowerCase(),e=Ka(b)||Ka(e);void 0===e&&a.L&&(e=a.L[b]);void 0===e&&c&&(e=c[b]);void 0===e&&"object"==typeof resources&&resources[b]&&(e=b);void 0===e&&(e=void 0);if("string"==typeof e&&d)switch(d){case 4:e=+e;isNaN(e)&&(e=0);break;case 6:e="true"==e}return e}function ic(a,b,c){for(var d=y(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ua(f)){ua(f,function(){ic(a,b,c)});return}}b.call(a,c)}
|
||||
function jc(a,b){var c=new O(a,"1.34.0",kc);if(Z(c)&&lc(c)){var d=c.get(mc),e=b?b.get(mc):"unknown";d!=e&&(a.C("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=dc.prototype;
|
||||
k.da=function(a){void 0===a&&(a=this.a||(this.B?nc:gc));if(!this.h){this.h++;var b=!1,c=!1;this.K=!1;var d=this.u||new O(this,"1.34.0");if(a==oc)b=!0;else if(a>gc){if(Z(d,this.B)){this.j=new O(this,"1.34.0",pc);Z(this.j)&&(qc(this,d),a=rc,sc(this.j));this.j.set(mc,Da());tc(this.j);var e=this.a&&!this.A;if(a==nc||ma("Click OK to restore the previous "+L+" machine state, or CANCEL to reset the machine.")){if(c=lc(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Z(d,g):("error"==f&&"no machine state"!=
|
||||
g?(this.C("Error: "+g),"unable to verify user"==g&&(Ia(uc,""),this.c=null)):this.I(f+": "+g),sc(d),Z(d)?(c=lc(d),e=!0):c=!1))}e&&jc(this,c?d:null)}else a==rc&&d.clear()}else jc(this);delete this.B;delete this.u}e=y(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.f&&(c=vc(this,g,d,b,c));b=[d,a,c];a!=oc?ic(this,this.Ma,b):this.Ma(b)}};
|
||||
function vc(a,b,c,d,e){if(!b.b.w){b.b.w=!0;var f=null;try{if(e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,".")))),"string"===typeof f&&(f=null),!b.U(f,d)&&f&&(x("Unable to restore state for "+b.type),a.D&&!a.P?(c.clear(),a.a=gc,window&&window.location.reload()):a.K=!0,b.U(null),e=!1),!d&&b.Ka){var g=b.Ka.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(h){x("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
|
||||
k.Ma=function(a){var b=a[0],c=0>a[1];a=a[2];this.N=!0;this.b.w=!0;var d=this.i.power;d&&(d.textContent="Shutdown");this.f&&(vc(this,this.f,b,c,a),S(this,-2),this.f.G());this.K&&(qc(this,b),b.clear());!c&&this.j&&(this.j.clear(),delete this.j);this.h=0};
|
||||
function qc(a,b){if(ma("There may be a problem with your "+L+" machine.\n\nTo help us diagnose it, click OK to send this "+L+" machine state to http://www.pcjs.org.")){var c=a.W;a=a.c||"";b=b.toString();var d={};d.app=L;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;H("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function wc(a,b,c){var d,e="none";if(a.h)return null;a.h--;var f=new O(a,"1.34.0"),g=new O(a,"1.34.0",kc),h=Da();g.set(mc,h);f.set(mc,h);f.set(xc,"1.34.0");f.set(yc,window?window.location.href:null);f.set(zc,window?window.navigator.userAgent:"");a.f&&a.f.O&&(c&&(b&&(a.f.b.G=a.f.b.v),R(a.f)),d=a.f.O(b,c),"object"===typeof d&&f.set(a.f.id,d),c&&(a.f.b.w=!1,!1===d&&(e=null)));for(var h=y(a.id),l=0;l<h.length;l++){var p=h[l];p.b.w&&(p.O&&(d=p.O(b,c),"object"===typeof d&&f.set(p.id,d)),c&&(p.b.w=!1,!1===
|
||||
d&&(e=null)))}e&&(c?(h=d=!1,b?(a.c&&Ac(a,a.c,f.toString()),tc(g)&&tc(f)||(e=null,d=h=!0)):a.a&&(d=!0,h=a.a==Bc),d&&f.clear(h)):e=f.toString());c&&(a.b.w=!1,b=a.i.power)&&(b.textContent="Power");a.h=0;return e}k.reset=function(){this.b.reset=!0;this.l&&this.l.reset&&this.l.reset();this.f&&this.f.reset&&this.f.reset();for(var a=y(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.l&&c!==this.f&&c.reset&&c.reset()}this.b.reset=!1;S(this,-1)};
|
||||
k.start=function(a,b){for(var c=y(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}S(this,-1)};k.stop=function(a,b){for(var c=y(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}S(this,-1)};
|
||||
function S(a,b){if(a.f){var c=a.f,d=b||0,e=c.i.speed;e&&(0>=d||30<=(c.wa+=d))&&(e.textContent=c.b.v?c.H.toFixed(2)+"Mhz":"Stopped",c.wa=0)}if(a.g&&(a=a.g,b=b||0,a.B)){c=a.f.b.v;d=!!(a.f.c&8);if(0>=b||60<=(a.A+=b)){e=a.f.g;if(a.i.PC){var f=a.o&&a.o.j||8,e=e||0,e=8==f?wa(e,void 0):F(e,void 0);a.i.PC.textContent!=e&&(a.i.PC.textContent=e)}a.A=0}-1>b?a.c=a.f.g:0<b&&c&&!d&&(a.c=a.f.da);Q(a,a.c);M(a,a.h)}}
|
||||
k.S=function(a,b,c){var d=this;switch(b){case "power":return this.i[b]=c,c.onclick=function(){d.h||(d.b.w?uc(d,!1,!0):gc(d,d.ba))},!0;case "reset":return this.i[b]=c,c.onclick=function(){if(d.b.w&&!d.h)if(d.a&&!d.s){var a=ma("Click OK to save changes to this "+L+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");uc(d,a,!0);!a&&d.D?window&&window.location.reload():d.ba(ec)}else d.reset(),d.f&&!d.o&&d.f.G()},!0;case "save":if(za())c.parentNode.removeChild(c);else return this.i[b]=
|
||||
c,c.onclick=function(){var a=dc(d,!0);if(a){var b=!!(d.a&&!d.s||d.D),c=uc(d,b);b?yc(d,a,c):d.C("Resume disabled, machine state not saved")}},!0}return!1};function dc(a,b){var c=a.c;c||((c=Ha(sc),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Ac(a,c))||a.C("The user ID is invalid.")):b&&a.C("Browser local storage is not available"));return c}
|
||||
function Ac(a,b){a.c=null;b=H(G()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ia(sc,b.data),a.c=b.data)}catch(d){x(d.message+" ("+c+")")}return a.c}function fc(a){var b=null;a.c&&(b=G()+"/api/v1/user?req=load&user="+a.c+"&state="+Bc(a,"1.34.0"));return b}
|
||||
function yc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Bc(a,"1.34.0");d.data=c;b=H(G()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.C("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.C(c),Ia(sc,""),a.c=null)}}
|
||||
var nc="failsafe",ic="validate",kc="timestamp",vc="version",wc="url",xc="browser",sc="user",mc=-1,ec=0,lc=1,pc=2,zc=3;I(function(){for(var a=D(document,C+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=D(c,C,"computer"),e=0;e<c.length;e++){var f=c[e],g=A(f),g=new bc(g,d,!0);B(g,f);g.H&&gc(g,g.ba)}});J.show.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=z("Computer",c.id))&&c.M&&!c.b.w&&c.ba(mc)}});
|
||||
J.exit.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=z("Computer",c.id))&&c.b.w&&uc(c,!(!c.a||c.s),!0)}});function O(a,b,c){this.id=a.id;this.f="";this.a={};this.i=this.l=!1;this.key=Bc(a,b,c);qc(this,a.Ua)}k=O.prototype;k.set=function(a,b){try{this.a[a]=b}catch(c){}};k.get=function(a){return this.a[a]||null};k.data=function(){return this.a};function Z(a,b){return b?(a.f=b,a.i=!0,a.l=!1,!0):a.i?!0:Fa()&&(b=Ha(a.key))?(a.f=b,a.i=!0):!1}
|
||||
function jc(a){var b=!0;if(!a.l)try{a.a=JSON.parse(a.f),a.l=!0}catch(c){x(c.message||c),b=!1}return b}function rc(a){var b=!0;if(Fa()){var c=JSON.stringify(a.a);Ia(a.key,c)||(x("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.a?JSON.stringify(this.a):this.f};function qc(a,b){a.f="";a.a={};a.i=a.l=!1;b&&a.set("parms",b)}
|
||||
k.clear=function(a){qc(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function Bc(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var Cc=0;
|
||||
function Dc(a,b,c,d,e,f,g){f("Loading "+a+"...");H(a,null,!0,function(h,l,p){p?(l||(l="unable to load "+a+" ("+p+")"),g(l,null)):Ec(l,a,b,c,d,e,f,g)})}
|
||||
function Ec(a,b,c,d,e,f,g,h){function l(a,g){if(g)h(g,null);else{c&&(ka(c,b,a),(g=b)&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1<e.length&&(e+=",")):e='{state:"'+e+'",':e="{",e+='url:"'+g+'"}',"object"==typeof resources&&(g=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDPjs$2"),
|
||||
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(t){g=null,a=t.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?Fc(a,g,l):l(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Fc(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");H(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],p,q=/( [a-z]+=)(['"])(.*?)\2/g;p=q.exec(f);)l=0>l.indexOf(p[1])?l.replace(">",p[0]+">"):l.replace(new RegExp(p[1]+"(['\"])(.*?)\\1"),p[0]);h[0]!=l&&(g=g.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);Fc(a,b,c)}})}else c(a,null)}
|
||||
function Gc(a,b,c,d,e){function f(a){if(void 0===l){var b=h&&D(h,"machine-warning");l=b&&b[0]||h}l&&(l.innerHTML=Aa(a))}function g(a){f("Error: "+a);p&&(--Cc||K(!0));p=!1}var h,l,p=!0;Cc++;la[b]={};try{if(h=document.getElementById(b)){var q;if("object"==typeof resources&&(q=resources.css)){var t=document.head||document.getElementsByTagName("head")[0],P=document.createElement("style");P.type="text/css";P.styleSheet?P.styleSheet.cssText=q:P.appendChild(document.createTextNode(q));t.appendChild(P)}d||
|
||||
(q=a,"pdp"==a.substr(0,3)&&(q="pdpjs"),d="/versions/"+q+"/1.34.0/components.xsl");q=function(e,l){l?Dc(d,null,a,null,!1,f,function(a,e){e?(ka(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=l.transformNode(e))?(h.outerHTML=e,--Cc||K(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(l,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Cc||
|
||||
K(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Dc(c,b,a,e,!0,f,q):Ec(c,null,b,a,e,!1,f,q)}else g("missing machine element: "+b)}catch(ua){g(ua.message)}return p}window.embedPDP10=function(a,b,c,d){K(!1);return Gc("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){K(!1);return Gc("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return z(b,a+".machine")};
|
||||
function S(a,b){if(a.f){var c=a.f,d=b||0,e=c.i.speed;e&&(0>=d||30<=(c.ya+=d))&&(e.textContent=c.b.v?c.H.toFixed(2)+"Mhz":"Stopped",c.ya=0)}if(a.g&&(a=a.g,b=b||0,a.B)){c=a.f.b.v;d=!!(a.f.c&8);if(0>=b||60<=(a.A+=b)){e=a.f.g;if(a.i.PC){var f=a.o&&a.o.j||8,e=e||0,e=8==f?wa(e,void 0):F(e,void 0);a.i.PC.textContent!=e&&(a.i.PC.textContent=e)}a.A=0}-1>b?a.c=a.f.g:0<b&&c&&!d&&(a.c=a.f.ha);Q(a,a.c);M(a,a.h)}}
|
||||
k.T=function(a,b,c){var d=this;switch(b){case "power":return this.i[b]=c,c.onclick=function(){d.h||(d.b.w?wc(d,!1,!0):ic(d,d.da))},!0;case "reset":return this.i[b]=c,c.onclick=function(){if(d.b.w&&!d.h)if(d.a&&!d.s){var a=ma("Click OK to save changes to this "+L+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");wc(d,a,!0);!a&&d.D?window&&window.location.reload():d.da(gc)}else d.reset(),d.f&&!d.o&&d.f.G()},!0;case "save":if(za())c.parentNode.removeChild(c);else return this.i[b]=
|
||||
c,c.onclick=function(){var a=fc(d,!0);if(a){var b=!!(d.a&&!d.s||d.D),c=wc(d,b);b?Ac(d,a,c):d.C("Resume disabled, machine state not saved")}},!0}return!1};function fc(a,b){var c=a.c;c||((c=Ha(uc),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Cc(a,c))||a.C("The user ID is invalid.")):b&&a.C("Browser local storage is not available"));return c}
|
||||
function Cc(a,b){a.c=null;b=H(G()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ia(uc,b.data),a.c=b.data)}catch(d){x(d.message+" ("+c+")")}return a.c}function hc(a){var b=null;a.c&&(b=G()+"/api/v1/user?req=load&user="+a.c+"&state="+Dc(a,"1.34.0"));return b}
|
||||
function Ac(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Dc(a,"1.34.0");d.data=c;b=H(G()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.C("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.C(c),Ia(uc,""),a.c=null)}}
|
||||
var pc="failsafe",kc="validate",mc="timestamp",xc="version",yc="url",zc="browser",uc="user",oc=-1,gc=0,nc=1,rc=2,Bc=3;I(function(){for(var a=D(document,C+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=D(c,C,"computer"),e=0;e<c.length;e++){var f=c[e],g=A(f),g=new dc(g,d,!0);B(g,f);g.H&&ic(g,g.da)}});J.show.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=z("Computer",c.id))&&c.N&&!c.b.w&&c.da(oc)}});
|
||||
J.exit.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=z("Computer",c.id))&&c.b.w&&wc(c,!(!c.a||c.s),!0)}});function O(a,b,c){this.id=a.id;this.f="";this.a={};this.i=this.l=!1;this.key=Dc(a,b,c);sc(this,a.Va)}k=O.prototype;k.set=function(a,b){try{this.a[a]=b}catch(c){}};k.get=function(a){return this.a[a]||null};k.data=function(){return this.a};function Z(a,b){return b?(a.f=b,a.i=!0,a.l=!1,!0):a.i?!0:Fa()&&(b=Ha(a.key))?(a.f=b,a.i=!0):!1}
|
||||
function lc(a){var b=!0;if(!a.l)try{a.a=JSON.parse(a.f),a.l=!0}catch(c){x(c.message||c),b=!1}return b}function tc(a){var b=!0;if(Fa()){var c=JSON.stringify(a.a);Ia(a.key,c)||(x("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.a?JSON.stringify(this.a):this.f};function sc(a,b){a.f="";a.a={};a.i=a.l=!1;b&&a.set("parms",b)}
|
||||
k.clear=function(a){sc(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function Dc(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var Ec=0;
|
||||
function Fc(a,b,c,d,e,f,g){f("Loading "+a+"...");H(a,null,!0,function(h,l,p){p?(l||(l="unable to load "+a+" ("+p+")"),g(l,null)):Gc(l,a,b,c,d,e,f,g)})}
|
||||
function Gc(a,b,c,d,e,f,g,h){function l(a,g){if(g)h(g,null);else{c&&(ka(c,b,a),(g=b)&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1<e.length&&(e+=",")):e='{state:"'+e+'",':e="{",e+='url:"'+g+'"}',"object"==typeof resources&&(g=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDPjs$2"),
|
||||
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(t){g=null,a=t.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?Hc(a,g,l):l(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Hc(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");H(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],p,q=/( [a-z]+=)(['"])(.*?)\2/g;p=q.exec(f);)l=0>l.indexOf(p[1])?l.replace(">",p[0]+">"):l.replace(new RegExp(p[1]+"(['\"])(.*?)\\1"),p[0]);h[0]!=l&&(g=g.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);Hc(a,b,c)}})}else c(a,null)}
|
||||
function Ic(a,b,c,d,e){function f(a){if(void 0===l){var b=h&&D(h,"machine-warning");l=b&&b[0]||h}l&&(l.innerHTML=Aa(a))}function g(a){f("Error: "+a);p&&(--Ec||K(!0));p=!1}var h,l,p=!0;Ec++;la[b]={};try{if(h=document.getElementById(b)){var q;if("object"==typeof resources&&(q=resources.css)){var t=document.head||document.getElementsByTagName("head")[0],P=document.createElement("style");P.type="text/css";P.styleSheet?P.styleSheet.cssText=q:P.appendChild(document.createTextNode(q));t.appendChild(P)}d||
|
||||
(q=a,"pdp"==a.substr(0,3)&&(q="pdpjs"),d="/versions/"+q+"/1.34.0/components.xsl");q=function(e,l){l?Fc(d,null,a,null,!1,f,function(a,e){e?(ka(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=l.transformNode(e))?(h.outerHTML=e,--Ec||K(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(l,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Ec||
|
||||
K(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Fc(c,b,a,e,!0,f,q):Gc(c,null,b,a,e,!1,f,q)}else g("missing machine element: "+b)}catch(ta){g(ta.message)}return p}window.embedPDP10=function(a,b,c,d){K(!1);return Ic("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){K(!1);return Ic("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return z(b,a+".machine")};
|
||||
window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!pa[a]){for(var c=!0,d=pa,e=a,f=b.length,g=[],h=[],l="",p=null,q=0;q<f;q++){var t=b[q];if('"'==t||"'"==t)p&&t!=p?l+=t:(p?p=null:p=t,l&&(h.push(l),l=""));else{if(!p){if("\r"==t||"\n"==t)t=";";if(" "==t||"\t"==t||";"==t){l&&(h.push(l),l="");";"==t&&h.length&&(g.push(h),h=[]);continue}}l+=t}}l&&h.push(l);h.length&&g.push(h);d[e]=g;oa(a)||(c=!1)}return c};window.enableEvents=K;window.sendEvent=Qa;})();//# sourceMappingURL=/tmp/pdpjs/1.34.0/pdp10.map
|
||||
|
|
|
|||
Loading…
Reference in a new issue