158 lines
57 KiB
JavaScript
158 lines
57 KiB
JavaScript
(function(){/*
|
|
http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/c1pjs/lib/defines.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/c1pjs/lib/panel.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/c1pjs/lib/cpu.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/c1pjs/lib/rom.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/c1pjs/lib/ram.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/c1pjs/lib/keyboard.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/c1pjs/lib/video.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/c1pjs/lib/serial.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/c1pjs/lib/disk.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/c1pjs/lib/debugger.js (C) Jeff Parsons 2012-2017
|
|
http://pcjs.org/modules/c1pjs/lib/computer.js (C) Jeff Parsons 2012-2017
|
|
*/
|
|
var e;function q(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 f=Object.getOwnPropertyDescriptor(b,d);f&&Object.defineProperty(a,d,f)}else a[d]=b[d]}
|
|
for(var 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)},r="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this,t=["Math","trunc"],ba=0;ba<t.length-1;ba++){var ca=t[ba];ca in r||(r[ca]={});r=r[ca]}
|
|
var da=t[t.length-1],ea=r[da],fa=ea?ea: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};fa!=ea&&null!=fa&&aa(r,da,{configurable:!0,writable:!0,value:fa});
|
|
function u(a,b,c){b?9<b&&(b=9):(b=Math.abs(a),b=65535>=b?4:4294967295>=b?8:9);c=c?"0x":"";var d;d=void 0===d?0:d;var f="";isNaN(a)?a=null:null!=a&&(0>a&&-1<a&&(a=-1),0>a&&(a+=Math.pow(16,b)),a>=Math.pow(16,b)&&(b=Math.ceil(Math.log(a)/Math.log(16))));for(var g=d||-1;0<b--;){g||(f=","+f,g=d);if(null==a)f="?"+f;else{var h=a%16,h=h+(0<=h&&9>=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/16)}g--}return(void 0===c?"":c)+f}
|
|
function ga(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function ha(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function ia(a){return a.replace(/[&<>"']/g,function(a){return ja[a]})}var ja={"&":"&","<":"<",">":">",'"':""","'":"'"},ka=Date.now||function(){return+new Date};
|
|
function v(a,b){var c=!0,c=void 0===c?!1:c,d=0,f=null;if("object"==typeof resources&&(f=resources[a]))b&&b(a,f,d);else if(c&&"function"==typeof resources)resources(a,function(c,d){b&&b(a,c,d)});else{var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(d=g.status||-1),b&&b(a,f,d))});g.open("GET",
|
|
a,c);g.send();c||(f=g.responseText,200!=g.status&&(d=g.status||-1),b&&b(a,f,d))}}function w(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 la(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function x(a){y.init.push(a)}
|
|
function z(a){if(A)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){B(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function C(a){!A&&a?(A=!0,ma&&na("init"),oa&&na("show")):A=a}function na(a){y[a]&&z(y[a])}var D=null,y={init:[],show:[],exit:[]},ma=!1,oa=!1,A=!0;la("onload",function(){ma=!0;z(y.init)});la("onpageshow",function(){oa=!0;z(y.show)});la(w("iOS")?"onpagehide":w("Opera")?"onunload":"onbeforeunload",function(){z(y.exit)});
|
|
function E(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.exports={};this.B=this.bindings={};a=this.id.indexOf(".");0>a?this.va=this.id:(this.Ba=this.id.substr(0,a),this.va=this.id.substr(a+1));this.u={ready:!1,ra:!1,wa:!1,I:!1,ce:!1,error:!1};this.ua=null;this.u.error=!1;this.G=this.J=this.sa=null;F.push(this)}function B(a){window&&window.alert(a)}
|
|
function G(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<F.length;c++)if(F[c].id===a)return F[c]}return null}function pa(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<F.length;d++)if(c)c==F[d]&&(c=null);else if(!(a!=F[d].type||b&&F[d].id.indexOf(b)))return F[d]}return null}function H(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){B(c.message+" ("+a+")")}return b}
|
|
function I(a,b){b=J(b.parentNode,"c1pjs-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,f=0;f<d.length;f++){var g=d[f];if(1===g.nodeType){var h=g.getAttribute("class");if(h)for(var l=h.split(" "),k=0;k<l.length;k++)switch(h=l[k],h){case "c1pjs-binding":(h=H(g))&&h.binding&&a.L(h.type,h.binding,g,h.value),k=l.length}}}}
|
|
function J(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)f.test(a[b].className)&&c.push(a[b]);return c}
|
|
function qa(a){for(var b=!0,c=K[a];c&&c.length;){var d=c.splice(0,1)[0],f=d[0],g=null;0<=ra.indexOf(f)&&(g=function(){return function(){qa(a)}}());var h=sa[f];if(h)if(!g)b=h(d[1],d[2],d[3]);else{if(!h(g,d[1],d[2],d[3]))break}else{var b=!1,l=pa(d[1],a);if(l)if(h=ta[f])b=h(l,d[2],d[3]);else{var k=l.exports;if(k&&(h=k[f]))if(b=!0,!g)b=h.call(l,d[2],d[3]);else if(!h.call(l,g,d[2],d[3]))break}}if(!b){B("Script error: "+f+(h?" failed":" unrecognized"));break}}c&&!c.length&&delete K[a];return b}e=E.prototype;
|
|
e.toString=function(){return this.name?this.name:this.id||this.type};
|
|
e.L=function(a,b,c){switch(b){case "clear":return this.B[b]||(this.B[b]=c,c.onclick=function(a){return function(){a.B.print&&(a.B.print.value="")}}(this)),!0;case "print":return this.B[b]||(this.sa=this.B[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.ta=function(a){this.F(a,this.va);return!0}),!0;default:return!1}};e.log=function(){};e.F=function(){};
|
|
e.status=function(a){this.F(this.va+": "+a)};e.ta=function(a,b,c){if(!b){var d=pa("Computer",this.id);if(d&&d.u.ce)return console.log("ignoring notice during unload: "+a),!1}c=c||this.type;b||B((c?c+": ":"")+a);return!0};function ua(a,b){a.u.error=!0;a.ta(b)}function L(a,b){b&&(a.u.ready?b():a.ua=b);return a.u.ready}e.R=function(a){this.u.error||(this.u.ready=!1!==a,this.u.ready&&(a=this.ua,this.ua=null,a&&a()))};
|
|
function va(a,b){if(a.u.wa)return a.u.ra=!1,a.u.wa=!1;if(a.u.error)return a.F(a.toString()+" error"),!1;a.u.ra=b;return a.u.ra}window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]),window.PCjs.Commands||(window.PCjs.Commands={}));
|
|
var M=window?window.PCjs.Machines:{},F=window?window.PCjs.Components:[],K=window?window.PCjs.Commands:{},ra=["hold","sleep","wait"],sa={alert:function(a){B(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},ta={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)});
|
|
Function.prototype.bind||(Function.prototype.bind=function(a){function b(){return f.apply(this instanceof c&&a?this:a,d.concat(Array.prototype.slice.call(arguments)))}function c(){}if("function"!=typeof this)throw new TypeError("Function.prototype.bind: non-callable object");var d=Array.prototype.slice.call(arguments,1),f=this;c.prototype=this.prototype;b.prototype=new c;return b});function N(a){E.call(this,"C1PPanel",a);this.u.I=!1}q(N,E);
|
|
N.prototype.L=function(a,b,c,d){return this.J&&this.J.L(a,b,c,d)||this.G&&this.G.L(a,b,c,d)||this.b&&this.b.L(a,b,c,d)?!0:E.prototype.L.call(this,a,b,c,d)};N.prototype.$=function(a,b){a&&!this.u.I&&(this.u.I=!0,this.J=b,this.G=O(b,"cpu"),this.b=O(b,"keyboard"),wa())};function wa(){for(var a=!1,b=J(document,"c1pjs","panel"),c=0;c<b.length;c++){var d=b[c],f=H(d),g=G(f.id);g||(a=!0,g=new N(f));I(g,d);a&&g.R()}}x(wa);
|
|
function xa(a){E.call(this,"C1PCPU",a);ya(this);this.u.I=!1;this.u.Z=!1;this.Aa=a.autoStart;this.K=this.ka=0;this.xa=30;this.oa=5;this.fa=8;this.za=["Slow","Fast","Max"];this.fb=["(1Mhz)","(up to "+this.fa+"Mhz)","(unlimited)"];this.S=[];this.M=[];this.la=65536;this.ma=0;this.da=65536;this.ea=0;this.v=[this.Lb,this.dd,this.Wd,this.l,this.l,this.fd,this.Bb,this.l,this.jd,this.cd,this.Ab,this.l,this.l,this.$c,this.yb,this.l,this.Kb,this.ed,this.l,this.l,this.l,this.gd,this.Cb,this.l,this.Ob,this.bd,
|
|
this.l,this.l,this.l,this.ad,this.zb,this.l,this.Bc,this.ub,this.l,this.l,this.Hb,this.wb,this.pd,this.l,this.ld,this.tb,this.od,this.l,this.Gb,this.qb,this.md,this.l,this.Ib,this.vb,this.l,this.l,this.l,this.xb,this.qd,this.l,this.Gd,this.sb,this.l,this.l,this.l,this.rb,this.nd,this.l,this.wd,this.pc,this.l,this.l,this.l,this.rc,this.Xc,this.l,this.hd,this.oc,this.Wc,this.l,this.Ac,this.lc,this.Uc,this.l,this.Mb,this.qc,this.l,this.l,this.l,this.sc,this.Yc,this.l,this.Qb,this.nc,this.l,this.l,this.l,
|
|
this.mc,this.Vc,this.l,this.xd,this.La,this.l,this.l,this.l,this.Na,this.ud,this.l,this.kd,this.Ka,this.td,this.l,this.zc,this.Ha,this.rd,this.l,this.Nb,this.Ma,this.l,this.l,this.l,this.Oa,this.vd,this.l,this.Id,this.Ja,this.l,this.l,this.l,this.Ia,this.sd,this.l,this.l,this.Md,this.l,this.l,this.Ud,this.Od,this.Rd,this.l,this.kc,this.l,this.$d,this.l,this.Td,this.Jd,this.Qd,this.l,this.Db,this.Nd,this.l,this.l,this.Vd,this.Pd,this.Sd,this.l,this.be,this.Ld,this.ae,this.l,this.l,this.Kd,this.l,this.l,
|
|
this.Rc,this.Gc,this.Mc,this.l,this.Sc,this.Ic,this.Nc,this.l,this.Yd,this.Fc,this.Xd,this.l,this.Pc,this.Cc,this.Kc,this.l,this.Eb,this.Hc,this.l,this.l,this.Tc,this.Jc,this.Oc,this.l,this.Rb,this.Ec,this.Zd,this.l,this.Qc,this.Dc,this.Lc,this.l,this.dc,this.Wb,this.l,this.l,this.ec,this.Yb,this.hc,this.l,this.yc,this.Vb,this.jc,this.l,this.cc,this.Sb,this.fc,this.l,this.Jb,this.Xb,this.l,this.l,this.l,this.Zb,this.ic,this.l,this.Pb,this.Ub,this.l,this.l,this.l,this.Tb,this.gc,this.l,this.ac,this.Ta,
|
|
this.l,this.l,this.bc,this.Va,this.vc,this.l,this.xc,this.Sa,this.Zc,this.l,this.$b,this.Pa,this.tc,this.l,this.Fb,this.Ua,this.l,this.l,this.l,this.Wa,this.wc,this.l,this.Hd,this.Ra,this.l,this.l,this.l,this.Qa,this.uc,this.l];this.eb=[7,6,0,0,0,3,5,0,3,2,2,0,0,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,3,6,0,0,3,3,5,0,4,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,5,0,3,2,2,0,3,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,5,0,4,2,2,0,5,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,0,6,0,0,
|
|
3,3,3,0,2,0,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,0,4,0,0,2,6,2,0,3,3,3,0,2,2,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,4,4,4,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0]}q(xa,E);e=xa.prototype;e.reset=function(a){this.u.Z&&P(this);ya(this);this.f=this.a[65532]|this.a[65533]<<8;this.u.error=!1;a&&(!0===this.Aa||null===this.Aa&&void 0===this.B.run)&&za(this)};
|
|
e.L=function(a,b,c){a=!1;switch(b){case "run":this.B[b]=c;c.onclick=function(a){return function(){a.u.Z?P(a):za(a)}}(this);a=!0;break;case "A":case "X":case "Y":case "S":case "PC":case "C":case "Z":case "I":case "D":case "B":case "V":case "N":case "speed":this.B[b]=c;a=!0;break;case "setSpeed":this.B[b]=c,c.onclick=function(a){return function(){Aa(a,2<=a.K?a.ka:a.K+1,!0)}}(this),a=!0}return a};e.Y=function(a,b){this.a=a;(this.Fa=b)?B("unsupported CPU address buffer offset ("+this.Fa+")"):this.R()};
|
|
e.$=function(a,b){if(a&&!this.u.I){this.J=b;if(a=O(b,"video"))this.ya=function(a){return function(){Ba(a)}}(a),this.ca=function(a){return function(){a.ca()}}(a);this.u.I=!0;this.reset(!0);this.update()}};function Ca(a,b,c,d,f){0>Da(a.S,b,c,d,f)&&(a.la>b&&(a.la=b),a.ma<c&&(a.ma=c),a.S.push([b,c,d,f]))}function Q(a,b,c,d,f){0>Da(a.M,b,c,d,f)&&(a.da>b&&(a.da=b),a.ea<c&&(a.ea=c),a.M.push([b,c,d,f]))}
|
|
function Da(a,b,c,d,f){for(var g=0;g<a.length;g++)if(a[g][0]==b&&a[g][1]==c&&a[g][2]==d&&a[g][3]==f)return g;return-1}function Aa(a,b,c){void 0!==b&&(a.K=b,a.B.setSpeed&&(a.B.setSpeed.innerHTML=a.za[2<=b?0:b+1]),a.F("running at "+a.za[b].toLowerCase()+" speed "+a.fb[b]),c&&a.ca());a.U=0;a.Ca=ka();Ea(a)}e.ya=function(){};e.ca=function(){};function R(a,b,c,d){void 0!==a.B[b]&&(void 0===d&&(d=1),c="0000"+c.toString(16),a.B[b].innerHTML=c.slice(c.length-d).toUpperCase())}
|
|
function Fa(a){R(a,"A",a.g,2);R(a,"X",a.m,2);R(a,"Y",a.o,2);var b=Ga(a);R(a,"C",b&1?1:0);R(a,"Z",b&2?1:0);R(a,"I",b&4?1:0);R(a,"D",b&8?1:0);R(a,"B",b&16?1:0);R(a,"V",b&64?1:0);R(a,"N",b&128?1:0);R(a,"S",a.s,4);R(a,"PC",a.f,4);a.B.speed&&a.N&&(a.B.speed.innerHTML=a.N.toFixed(1)+"Mhz")}
|
|
function Ea(a,b){var c=30;c<a.xa&&(c=a.xa);c<a.oa&&(c=a.oa);var d=1;b&&a.K>a.ka&&a.N&&(d=a.N);d>a.fa&&2>a.K&&(d=a.fa);a.gb=Math.round(1E3/30);a.ga=Math.floor(1E6/c*d);a.ja=Math.floor(1E6/30*d);a.Ea=Math.floor(1E6/a.xa*d);a.Da=Math.floor(1E6/a.oa*d);b||(a.T=a.ja,a.W=a.Ea,a.V=a.Da);a.na=0}function Ha(a){1E6<=a.na&&Ea(a,!0);a.ba=0;a.hb=ka()}
|
|
function Ia(a){var b=ka(),c=a.gb;a.ba&&(c=Math.round(c*a.ba/a.ja));c-=b-a.hb;if(b-=a.Ca)a.N=Math.round(a.U/(100*b))/10,864E5<=b&&Aa(a);0>c?c=0:1==a.K?a.N<=a.fa&&(c=0):2==a.K&&(c=0);a.na+=a.ba;return c}
|
|
function za(a){if(va(a,!0)){a.u.Z||(Aa(a),a.J&&a.J.start(),a.u.Z=!0,a.B.run&&(a.B.run.innerHTML="Halt"),a.ca());Ha(a);try{do{a.step(a.ga);var b=a.O-a.H;a.U+=b;a.ba+=b;a.O=a.H=0;a.W-=a.ga;0>=a.W&&(a.W+=a.Ea,a.ya());a.V-=a.ga;0>=a.V&&(a.V+=a.Da,Fa(a));a.T-=a.ga;if(0>=a.T){a.T+=a.ja;break}}while(a.u.Z)}catch(c){P(a);a.update();va(a,!1);ua(a,c.stack||c.message);return}setTimeout(function(a){return function(){za(a)}}(a),Ia(a))}else a.update(),a.J&&a.J.stop(a.Ca,a.U)}
|
|
e.step=function(a){this.b=this.j=-1;this.O=this.H=a;do{a=this.a[this.f];this.f++;this.v[a].call(this);if(0<=this.b){if(this.b>=this.la&&this.b<=this.ma)for(var b=this.b,c=this.f,d=0;d<this.S.length;d++)b>=this.S[d][0]&&b<=this.S[d][1]&&this.S[d][3].call(this.S[d][2],b,c);this.b=-1}else if(0<=this.j){if(this.j>=this.da&&this.j<=this.ea)for(b=this.j,c=this.f,d=0;d<this.M.length;d++)b>=this.M[d][0]&&b<=this.M[d][1]&&this.M[d][3].call(this.M[d][2],b,c);this.j=-1}this.H-=this.eb[a]}while(0<this.H);return!0};
|
|
function P(a){a.u.ra&&(a.u.wa=!0);a.O-=a.H;a.H=0;a.u.Z&&(a.u.Z=!1,a.B.run&&(a.B.run.innerHTML="Run"))}e.update=function(){this.ya();Fa(this)};function Ja(a){return a.u.Z?a.U+a.O-a.H:0}e.X=function(a){return this.a[a]};function Ga(a){var b=a.c&256?1:0,b=b|(a.i&255?0:2),b=b|((a.w&255^a.D^a.w>>1)&128?64:0),b=b|(a.h&128?128:0);return a.A&60|b}
|
|
function S(a,b,c){var d=a.c&256?1:0,f=(b&15)+(c&15)+d;10<=f&&(f=f+6&15|16);f+=(b&240)+(c&240);a.D=b^c;a.w=f;a.h=f&255;160<=f&&(f+=96);512<=f&&(f-=256);a.c=f;a.i=b+c+d&255;a.H--;return f&255}function T(a,b,c){var d=a.c&256?0:1,f=(b&15)-(c&15)-d;0>f&&(f=(f-6&15)-16);f+=(b&240)-(c&240);0>f&&(f-=96);a.h=a.i=(a.c=b-c-d)&255;a.D=b^c;a.w=a.c;a.c^=256;a.H--;return f&255}function ya(a){a.g=0;a.m=0;a.o=0;a.s=256;a.A=0;a.h=0;a.i=0;a.D=0;a.w=0;a.c=0;a.f=0;a.b=-1;a.j=-1;a.N=0;a.U=a.O=a.H=0}
|
|
e.Lb=function(){this.f++;this.a[this.s--]=this.f>>8;this.s|=256;this.a[this.s--]=this.f&255;this.s|=256;this.A|=16;this.A=Ga(this);this.a[this.s--]=this.A;this.s|=256;this.A&=239;this.b=65534;this.f=this.a[this.b]|this.a[this.b+1]<<8};e.dd=function(){this.b=this.a[this.f++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.g|=this.a[this.b]};e.fd=function(){this.b=this.a[this.f++];this.h=this.i=this.g|=this.a[this.b]};
|
|
e.Bb=function(){this.j=this.a[this.f++];this.c=this.a[this.j]<<1;this.h=this.i=this.a[this.j]=this.c&255};e.jd=function(){this.A=Ga(this);this.a[this.s--]=this.A;this.s|=256};e.cd=function(){this.b=this.f++;this.h=this.i=this.g|=this.a[this.b]};e.Ab=function(){this.c=this.g<<1;this.h=this.i=this.g=this.c&255};e.$c=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=this.i=this.g|=this.a[this.b]};
|
|
e.yb=function(){this.j=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.a[this.j]<<1;this.h=this.i=this.a[this.j]=this.c&255};e.Kb=function(){this.f+=(this.h&128?0:(this.H--,this.a[this.f]<<24>>24))+1};e.ed=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.o;this.h=this.i=this.g|=this.a[this.b]};e.gd=function(){this.b=this.a[this.f++]+this.m&255;this.h=this.i=this.g|=this.a[this.b]};
|
|
e.Cb=function(){this.j=this.a[this.f++]+this.m&255;this.c=this.a[this.j]<<1;this.h=this.i=this.a[this.j]=this.c&255};e.Ob=function(){this.c=0};e.bd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.o;this.h=this.i=this.g|=this.a[this.b]};e.ad=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.h=this.i=this.g|=this.a[this.b]};e.zb=function(){this.j=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.c=this.a[this.j]<<1;this.h=this.i=this.a[this.j]=this.c&255};
|
|
e.Bc=function(){this.b=this.f++;this.a[this.s--]=this.f>>8;this.s|=256;this.a[this.s--]=this.f&255;this.s|=256;this.f=this.a[this.b]|this.a[this.b+1]<<8};e.ub=function(){this.b=this.a[this.f++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.g&=this.a[this.b]};e.Hb=function(){this.b=this.a[this.f++];this.i=this.g&this.a[this.b];this.h=this.h&127|this.a[this.b]&128;this.w=0;this.D=this.a[this.b]&64?128:0};e.wb=function(){this.b=this.a[this.f++];this.h=this.i=this.g&=this.a[this.b]};
|
|
e.pd=function(){this.j=this.a[this.f++];this.c=this.c&65280|this.a[this.j];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.h=this.i=this.a[this.j]=this.c&255};e.ld=function(){this.s=this.s+1&255|256;this.A=this.a[this.s];this.c=this.A&1?256:0;this.i=this.A&2?0:1;this.h=this.A&128;this.w=0;this.D=this.A&64?128:0};e.tb=function(){this.b=this.f++;this.h=this.i=this.g&=this.a[this.b]};
|
|
e.od=function(){this.c=this.c&65280|this.g;this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.h=this.i=this.g=this.c&255};e.Gb=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.g&this.a[this.b];this.h=this.h&127|this.a[this.b]&128;this.w=0;this.D=this.a[this.b]&64?128:0};e.qb=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=this.i=this.g&=this.a[this.b]};
|
|
e.md=function(){this.j=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.c&65280|this.a[this.j];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.h=this.i=this.a[this.j]=this.c&255};e.Ib=function(){this.f+=(this.h&128?(this.H--,this.a[this.f]<<24>>24):0)+1};e.vb=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.o;this.h=this.i=this.g&=this.a[this.b]};e.xb=function(){this.b=this.a[this.f++]+this.m&255;this.h=this.i=this.g&=this.a[this.b]};
|
|
e.qd=function(){this.j=this.a[this.f++]+this.m&255;this.c=this.c&65280|this.a[this.j];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.h=this.i=this.a[this.j]=this.c&255};e.Gd=function(){this.c=256};e.sb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.o;this.h=this.i=this.g&=this.a[this.b]};e.rb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.h=this.i=this.g&=this.a[this.b]};
|
|
e.nd=function(){this.j=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.c=this.c&65280|this.a[this.j];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.h=this.i=this.a[this.j]=this.c&255};e.wd=function(){this.s=this.s+1&255|256;this.A=this.a[this.s];this.c=this.A&1?256:0;this.i=this.A&2?0:1;this.h=this.A&128;this.w=0;this.D=this.A&64?128:0;this.s=this.s+2&255|256;this.f=this.a[this.s-1|256]|this.a[this.s]<<8};
|
|
e.pc=function(){this.b=this.a[this.f++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.g^=this.a[this.b]};e.rc=function(){this.b=this.a[this.f++];this.h=this.i=this.g^=this.a[this.b]};e.Xc=function(){this.j=this.a[this.f++];this.c=this.c&65279|(this.a[this.j]&1?256:0);this.a[this.j]=(this.c=this.c&65280|this.a[this.j]>>1)&255;this.h=this.i=this.c&255};e.hd=function(){this.a[this.s--]=this.g;this.s|=256};e.oc=function(){this.b=this.f++;this.h=this.i=this.g^=this.a[this.b]};
|
|
e.Wc=function(){this.c=this.c&65279|(this.g&1?256:0);this.g=(this.c=this.c&65280|this.g>>1)&255;this.h=this.i=this.c&255};e.Ac=function(){this.b=this.f;this.f=this.a[this.b]|this.a[this.b+1]<<8};e.lc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=this.i=this.g^=this.a[this.b]};e.Uc=function(){this.j=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.c&65279|(this.a[this.j]&1?256:0);this.a[this.j]=(this.c=this.c&65280|this.a[this.j]>>1)&255;this.h=this.i=this.c&255};
|
|
e.Mb=function(){this.f+=((this.w&255^this.D^this.w>>1)&128?0:(this.H--,this.a[this.f]<<24>>24))+1};e.qc=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.o;this.h=this.i=this.g^=this.a[this.b]};e.sc=function(){this.b=this.a[this.f++]+this.m&255;this.h=this.i=this.g^=this.a[this.b]};e.Yc=function(){this.j=this.a[this.f++]+this.m&255;this.c=this.c&65279|(this.a[this.j]&1?256:0);this.a[this.j]=(this.c=this.c&65280|this.a[this.j]>>1)&255;this.h=this.i=this.c&255};
|
|
e.Qb=function(){this.A&=251};e.nc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.o;this.h=this.i=this.g^=this.a[this.b]};e.mc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.h=this.i=this.g^=this.a[this.b]};e.Vc=function(){this.j=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.c=this.c&65279|(this.a[this.j]&1?256:0);this.a[this.j]=(this.c=this.c&65280|this.a[this.j]>>1)&255;this.h=this.i=this.c&255};
|
|
e.xd=function(){this.s=this.s+2&255|256;this.f=(this.a[this.s-1|256]|this.a[this.s]<<8)+1};e.La=function(){this.b=this.a[this.f++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.g+this.a[this.b]+(this.c&256?1:0);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255};e.mb=function(){this.b=this.a[this.f++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.g=S(this,this.g,this.a[this.b])};
|
|
e.Na=function(){this.b=this.a[this.f++];this.c=this.g+this.a[this.b]+(this.c&256?1:0);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255};e.ob=function(){this.b=this.a[this.f++];this.g=S(this,this.g,this.a[this.b])};e.ud=function(){this.j=this.a[this.f++];this.c=this.c&65280|this.a[this.j];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.h=this.i=this.a[this.j]=this.c&255};e.kd=function(){this.s=this.s+1&255|256;this.h=this.i=this.g=this.a[this.s]};
|
|
e.Ka=function(){this.b=this.f++;this.c=this.g+this.a[this.b]+(this.c&256?1:0);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255};e.lb=function(){this.b=this.f++;this.g=S(this,this.g,this.a[this.b])};e.td=function(){this.c=this.c&65280|this.g;this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.h=this.i=this.g=this.c&255};e.zc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.f=this.a[this.b]|this.a[this.b+1]<<8};
|
|
e.Ha=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.g+this.a[this.b]+(this.c&256?1:0);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255};e.ib=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.g=S(this,this.g,this.a[this.b])};e.rd=function(){this.j=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.c&65280|this.a[this.j];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.h=this.i=this.a[this.j]=this.c&255};
|
|
e.Nb=function(){this.f+=((this.w&255^this.D^this.w>>1)&128?(this.H--,this.a[this.f]<<24>>24):0)+1};e.Ma=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.o;this.c=this.g+this.a[this.b]+(this.c&256?1:0);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255};e.nb=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.o;this.g=S(this,this.g,this.a[this.b])};
|
|
e.Oa=function(){this.b=this.a[this.f++]+this.m&255;this.c=this.g+this.a[this.b]+(this.c&256?1:0);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255};e.pb=function(){this.b=this.a[this.f++]+this.m&255;this.g=S(this,this.g,this.a[this.b])};e.vd=function(){this.j=this.a[this.f++]+this.m&255;this.c=this.c&65280|this.a[this.j];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.h=this.i=this.a[this.j]=this.c&255};e.Id=function(){this.A|=4};
|
|
e.Ja=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.o;this.c=this.g+this.a[this.b]+(this.c&256?1:0);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255};e.kb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.o;this.g=S(this,this.g,this.a[this.b])};e.Ia=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.c=this.g+this.a[this.b]+(this.c&256?1:0);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255};
|
|
e.jb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.g=S(this,this.g,this.a[this.b])};e.sd=function(){this.j=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.c=this.c&65280|this.a[this.j];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.h=this.i=this.a[this.j]=this.c&255};e.Md=function(){this.j=this.a[this.f++]+this.m&255;this.j=this.a[this.j]|this.a[this.j+1]<<8;this.a[this.j]=this.g};e.Ud=function(){this.j=this.a[this.f++];this.a[this.j]=this.o};
|
|
e.Od=function(){this.j=this.a[this.f++];this.a[this.j]=this.g};e.Rd=function(){this.j=this.a[this.f++];this.a[this.j]=this.m};e.kc=function(){this.h=this.i=this.o=this.o-1&255};e.$d=function(){this.h=this.i=this.g=this.m};e.Td=function(){this.j=this.a[this.f++]|this.a[this.f++]<<8;this.a[this.j]=this.o};e.Jd=function(){this.j=this.a[this.f++]|this.a[this.f++]<<8;this.a[this.j]=this.g};e.Qd=function(){this.j=this.a[this.f++]|this.a[this.f++]<<8;this.a[this.j]=this.m};
|
|
e.Db=function(){this.f+=(this.c&256?0:(this.H--,this.a[this.f]<<24>>24))+1};e.Nd=function(){this.j=this.a[this.f++];this.j=(this.a[this.j]|this.a[this.j+1]<<8)+this.o;this.a[this.j]=this.g};e.Vd=function(){this.j=this.a[this.f++]+this.m&255;this.a[this.j]=this.o};e.Pd=function(){this.j=this.a[this.f++]+this.m&255;this.a[this.j]=this.g};e.Sd=function(){this.j=this.a[this.f++]+this.o&255;this.a[this.j]=this.m};e.be=function(){this.h=this.i=this.g=this.o};
|
|
e.Ld=function(){this.j=(this.a[this.f++]|this.a[this.f++]<<8)+this.o;this.a[this.j]=this.g};e.ae=function(){this.s=this.m|256};e.Kd=function(){this.j=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.a[this.j]=this.g};e.Rc=function(){this.b=this.f++;this.h=this.i=this.o=this.a[this.b]};e.Gc=function(){this.b=this.a[this.f++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.g=this.a[this.b]};e.Mc=function(){this.b=this.f++;this.h=this.i=this.m=this.a[this.b]};
|
|
e.Sc=function(){this.b=this.a[this.f++];this.h=this.i=this.o=this.a[this.b]};e.Ic=function(){this.b=this.a[this.f++];this.h=this.i=this.g=this.a[this.b]};e.Nc=function(){this.b=this.a[this.f++];this.h=this.i=this.m=this.a[this.b]};e.Yd=function(){this.h=this.i=this.o=this.g};e.Fc=function(){this.b=this.f++;this.h=this.i=this.g=this.a[this.b]};e.Xd=function(){this.h=this.i=this.m=this.g};e.Pc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=this.i=this.o=this.a[this.b]};
|
|
e.Cc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=this.i=this.g=this.a[this.b]};e.Kc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=this.i=this.m=this.a[this.b]};e.Eb=function(){this.f+=(this.c&256?(this.H--,this.a[this.f]<<24>>24):0)+1};e.Hc=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.o;this.h=this.i=this.g=this.a[this.b]};e.Tc=function(){this.b=this.a[this.f++]+this.m&255;this.h=this.i=this.o=this.a[this.b]};
|
|
e.Jc=function(){this.b=this.a[this.f++]+this.m&255;this.h=this.i=this.g=this.a[this.b]};e.Oc=function(){this.b=this.a[this.f++]+this.o&255;this.h=this.i=this.m=this.a[this.b]};e.Rb=function(){this.D=this.w=0};e.Ec=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.o;this.h=this.i=this.g=this.a[this.b]};e.Zd=function(){this.h=this.i=this.m=this.s&255};e.Qc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.h=this.i=this.o=this.a[this.b]};
|
|
e.Dc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.h=this.i=this.g=this.a[this.b]};e.Lc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.o;this.h=this.i=this.m=this.a[this.b]};e.dc=function(){this.b=this.f++;this.h=this.i=this.c=this.o-this.a[this.b];this.c^=256};e.Wb=function(){this.b=this.a[this.f++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.c=this.g-this.a[this.b];this.c^=256};
|
|
e.ec=function(){this.b=this.a[this.f++];this.h=this.i=this.c=this.o-this.a[this.b];this.c^=256};e.Yb=function(){this.b=this.a[this.f++];this.h=this.i=this.c=this.g-this.a[this.b];this.c^=256};e.hc=function(){this.j=this.a[this.f++];this.h=this.i=this.a[this.j]=this.a[this.j]-1&255};e.yc=function(){this.h=this.i=this.o=this.o+1&255};e.Vb=function(){this.b=this.f++;this.h=this.i=this.c=this.g-this.a[this.b];this.c^=256};e.jc=function(){this.h=this.i=this.m=this.m-1&255};
|
|
e.cc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=this.i=this.c=this.o-this.a[this.b];this.c^=256};e.Sb=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=this.i=this.c=this.g-this.a[this.b];this.c^=256};e.fc=function(){this.j=this.a[this.f++]|this.a[this.f++]<<8;this.h=this.i=this.a[this.j]=this.a[this.j]-1&255};e.Jb=function(){this.f+=(this.i&255?(this.H--,this.a[this.f]<<24>>24):0)+1};
|
|
e.Xb=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.o;this.h=this.i=this.c=this.g-this.a[this.b];this.c^=256};e.Zb=function(){this.b=this.a[this.f++]+this.m&255;this.h=this.i=this.c=this.g-this.a[this.b];this.c^=256};e.ic=function(){this.j=this.a[this.f++]+this.m&255;this.h=this.i=this.a[this.j]=this.a[this.j]-1&255};
|
|
e.Pb=function(){this.A&=-9;this.v[97]=this.La;this.v[101]=this.Na;this.v[105]=this.Ka;this.v[109]=this.Ha;this.v[113]=this.Ma;this.v[117]=this.Oa;this.v[121]=this.Ja;this.v[125]=this.Ia;this.v[225]=this.Ta;this.v[229]=this.Va;this.v[233]=this.Sa;this.v[237]=this.Pa;this.v[241]=this.Ua;this.v[245]=this.Wa;this.v[249]=this.Ra;this.v[253]=this.Qa};e.Ub=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.o;this.h=this.i=this.c=this.g-this.a[this.b];this.c^=256};
|
|
e.Tb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.h=this.i=this.c=this.g-this.a[this.b];this.c^=256};e.gc=function(){this.j=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.h=this.i=this.a[this.j]=this.a[this.j]-1&255};e.ac=function(){this.b=this.f++;this.h=this.i=this.c=this.m-this.a[this.b];this.c^=256};
|
|
e.Ta=function(){this.b=this.a[this.f++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.g-this.a[this.b]-(this.c&256?0:1);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255;this.c^=256};e.Cd=function(){this.b=this.a[this.f++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.g=T(this,this.g,this.a[this.b])};e.bc=function(){this.b=this.a[this.f++];this.h=this.i=this.c=this.m-this.a[this.b];this.c^=256};
|
|
e.Va=function(){this.b=this.a[this.f++];this.c=this.g-this.a[this.b]-(this.c&256?0:1);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255;this.c^=256};e.Ed=function(){this.b=this.a[this.f++];this.g=T(this,this.g,this.a[this.b])};e.vc=function(){this.j=this.a[this.f++];this.h=this.i=this.a[this.j]=this.a[this.j]+1&255};e.xc=function(){this.h=this.i=this.m=this.m+1&255};
|
|
e.Sa=function(){this.b=this.f++;this.c=this.g-this.a[this.b]-(this.c&256?0:1);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255;this.c^=256};e.Bd=function(){this.b=this.f++;this.g=T(this,this.g,this.a[this.b])};e.Zc=function(){};e.$b=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=this.i=this.c=this.m-this.a[this.b];this.c^=256};
|
|
e.Pa=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.g-this.a[this.b]-(this.c&256?0:1);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255;this.c^=256};e.yd=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.g=T(this,this.g,this.a[this.b])};e.tc=function(){this.j=this.a[this.f++]|this.a[this.f++]<<8;this.h=this.i=this.a[this.j]=this.a[this.j]+1&255};e.Fb=function(){this.f+=(this.i&255?0:(this.H--,this.a[this.f]<<24>>24))+1};
|
|
e.Ua=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.o;this.c=this.g-this.a[this.b]-(this.c&256?0:1);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255;this.c^=256};e.Dd=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.o;this.g=T(this,this.g,this.a[this.b])};
|
|
e.Wa=function(){this.b=this.a[this.f++]+this.m&255;this.c=this.g-this.a[this.b]-(this.c&256?0:1);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255;this.c^=256};e.Fd=function(){this.b=this.a[this.f++]+this.m&255;this.g=T(this,this.g,this.a[this.b])};e.wc=function(){this.j=this.a[this.f++]+this.m&255;this.h=this.i=this.a[this.j]=this.a[this.j]+1&255};
|
|
e.Hd=function(){this.A|=8;this.v[97]=this.mb;this.v[101]=this.ob;this.v[105]=this.lb;this.v[109]=this.ib;this.v[113]=this.nb;this.v[117]=this.pb;this.v[121]=this.kb;this.v[125]=this.jb;this.v[225]=this.Cd;this.v[229]=this.Ed;this.v[233]=this.Bd;this.v[237]=this.yd;this.v[241]=this.Dd;this.v[245]=this.Fd;this.v[249]=this.Ad;this.v[253]=this.zd};
|
|
e.Ra=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.o;this.c=this.g-this.a[this.b]-(this.c&256?0:1);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255;this.c^=256};e.Ad=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.o;this.g=T(this,this.g,this.a[this.b])};
|
|
e.Qa=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.c=this.g-this.a[this.b]-(this.c&256?0:1);this.D=this.g^this.a[this.b];this.w=this.c;this.h=this.i=this.g=this.c&255;this.c^=256};e.zd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.g=T(this,this.g,this.a[this.b])};e.uc=function(){this.j=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.h=this.i=this.a[this.j]=this.a[this.j]+1&255};
|
|
e.Wd=function(){var a;a=this.a[this.f++];switch(a){case 0:this.F("HALT");P(this);break;case 1:a=this.f;for(var b="";a<this.a.length;){var c=this.a[a++];if(!c)break;b+=String.fromCharCode(c)}this.f=a;b=b.replace(/%A/g,u(this.g,2)).replace(/%X/g,u(this.m,2)).replace(/%Y/g,u(this.o,2));this.F(b);this.T=0;this.O-=this.H;this.H=0;break;default:this.f-=2,this.F("undefined opSim: "+u(a,2,!0)+" at "+u(this.f,4,!0)),P(this)}};
|
|
e.l=function(){var a=this.a[--this.f];this.F("undefined opcode: "+u(a,2,!0)+" at "+u(this.f,4,!0));P(this)};x(function(){for(var a=J(document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=H(c),d=new xa(d);I(d,c)}});
|
|
function U(a){E.call(this,"C1PROM",a);this.b=this.a=null;this.c=a.size;if(this.f=a.image){a=this.f;var b=ha(this.f);"json"!=b&&"hex"!=b&&(a="http://"+(window?window.location.host:"www.pcjs.org")+"/api/v1/dump?file="+this.f+"&format=bytes");var c=this;v(a,function(a,b,g){Ka(c,a,b,g)})}}q(U,E);
|
|
U.prototype.Y=function(a,b,c,d){this.a=a;this.g=b;a=c-b+1;this.c||(this.c=a);a!=this.c?ua(this,"computer-specified ROM size ("+u(a,4,!0)+") does not match component-specified size ("+u(this.c,4,!0)+")"):(d&&(this.G=d,Q(d,b,c,this,this.h)),La(this))};U.prototype.$=function(a){a&&!this.u.I&&(this.u.I=!0)};U.prototype.h=function(a,b){void 0!==b&&(a-=this.g,this.a[this.g+a]=this.b?this.b[a]:0)};
|
|
function Ka(a,b,c,d){if(d)a.F('Error loading ROM "'+b+'" ('+d+")");else{if("["==c.charAt(0)||"{"==c.charAt(0))try{var f=eval("("+c+")"),g=f.bytes;g?a.b=g:a.b=f}catch(h){a.F('Error processing ROM "'+b+'": '+h.message);return}else for(b=c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.b=Array(b.length),c=0;c<b.length;c++)a.b[c]=parseInt(b[c],16);La(a)}}
|
|
function La(a){if(!L(a))if(!a.f)a.R();else if(a.b&&a.a){var b=a.b.length;if(b!=a.c)ua(a,"ROM image size ("+u(b,4,!0)+") does not match component-specified size ("+u(a.c,4,!0)+")");else{for(var c=0;c<b;c++)a.a[a.g+c]=a.b[c];a.R()}}}x(function(){for(var a=J(document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=H(c),d=new U(d);I(d,c)}});function Ma(a){E.call(this,"C1PRAM",a)}q(Ma,E);Ma.prototype.Y=function(a){this.a=a;this.R()};
|
|
x(function(){for(var a=J(document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=H(c),d=new Ma(d);I(d,c)}});
|
|
function Na(a){E.call(this,"C1PKeyboard",a);this.u.I=!1;this.ba=a.model;this.K=8;this.ma=10;this.la=13;this.M=27;this.ga=this.K;this.ka=this.ma;this.da=this.la;this.H=this.M;this.s=241;this.D=224;this.ea=3;this.fa=15;this.o=1;this.j={};this.j["break"]=this.D;this.j.esc=this.H;this.j["ctrl-c"]=this.ea;this.j["ctrl-o"]=this.fa;this.b=[];this.b[49]=30464;this.b[33]=30704;this.b[50]=30208;this.b[34]=30448;this.b[51]=29952;this.b[35]=30192;this.b[52]=29696;this.b[36]=29936;this.b[53]=29440;this.b[37]=
|
|
29680;this.b[54]=29184;this.b[38]=29424;this.b[55]=28928;this.b[39]=29168;this.b[56]=26368;this.b[40]=26608;this.b[57]=26112;this.b[41]=26352;this.b[48]=25856;this.b[58]=25600;this.b[42]=25840;this.b[45]=25344;this.b[61]=25584;this.b[46]=22272;this.b[62]=22512;this.b[108]=22016;this.b[76]=22256;this.b[92]=22256;this.b[111]=21760;this.b[79]=22E3;this.b[this.ga]=22E3;this.b[this.ka]=21504;this.b[this.da]=21248;this.b[119]=18176;this.b[87]=18416;this.b[101]=17920;this.b[69]=18160;this.b[114]=17664;this.b[82]=
|
|
17904;this.b[116]=17408;this.b[84]=17648;this.b[121]=17152;this.b[89]=17392;this.b[117]=16896;this.b[85]=17136;this.b[105]=16640;this.b[73]=16880;this.b[115]=14080;this.b[83]=14320;this.b[100]=13824;this.b[68]=14064;this.b[102]=13568;this.b[70]=13808;this.b[103]=13312;this.b[71]=13552;this.b[104]=13056;this.b[72]=13296;this.b[106]=12800;this.b[74]=13040;this.b[107]=12544;this.b[75]=12784;this.b[91]=12784;this.b[120]=9984;this.b[88]=10224;this.b[99]=9728;this.b[67]=9968;this.b[118]=9472;this.b[86]=
|
|
9712;this.b[98]=9216;this.b[66]=9456;this.b[110]=8960;this.b[78]=9200;this.b[94]=9200;this.b[109]=8704;this.b[77]=8944;this.b[93]=8944;this.b[44]=8448;this.b[60]=8688;this.b[113]=5888;this.b[81]=6128;this.b[97]=5632;this.b[65]=5872;this.b[122]=5376;this.b[90]=5616;this.b[32]=5120;this.b[47]=4864;this.b[63]=5104;this.b[59]=4608;this.b[43]=4848;this.b[112]=4352;this.b[80]=4592;this.b[64]=4592;this.b[this.s]=1536;this.b[this.H]=1280;this.b[240]=512;this.b[242]=256;this.b[244]=0;this.reset()}q(Na,E);
|
|
e=Na.prototype;e.reset=function(){this.pa(this.ba);this.c=this.o;this.O=0;this.f=[this.o,0,0,0,0,0,0,0];this.v=[];if(this.g)for(var a in this.g)isNaN(+a)||this.g[a]&&clearTimeout(this.g[a]);this.g=[];this.W=this.h=0;this.S=-1;this.N=this.f;this.U=this.A=0;this.i=""};
|
|
e.L=function(a,b,c){if(void 0===this.B[b])switch(b){case "keyDown":return this.B[b]=c,c.onkeydown=function(a){return function(b){return Oa(a,b,!0)}}(this),!0;case "keyPress":return this.B[b]=c,c.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.i="";a.c&8?a.c&=-9:c=!Pa(a,b);return c}}(this),!0;case "keyUp":return this.B[b]=c,c.onkeyup=function(a){return function(b){return Oa(a,b,!1)}}(this),!0;case "break":return this.B[b]=c,c.onclick=function(a){return function(){a.J&&
|
|
a.J.reset(!0)}}(this),!0;default:if(void 0!==this.j[b])return this.B[b]=c,c.onclick=function(a,b,c){return function(){a.G&&a.G.ca();return!Pa(a,c)}}(this,b,this.j[b]),!0}return!1};e.Y=function(a,b,c,d){this.a=a;this.V=b;this.ja=c-b+1;this.oa=this.V+this.ja;d&&(this.G=d,Q(d,b,c,this,this.$a));this.R()};e.pa=function(a){this.m=a;this.w=255;600!=this.m&&(this.w=0,this.F("updated keyboard model: "+this.m))};e.$=function(a,b){a&&!this.u.I&&(this.u.I=!0,this.J=b)};
|
|
e.R=function(){this.T=(this.na=w("iOS"))||w("Android");E.prototype.R.call(this)};function Qa(a,b){b=b?100:250;a.G&&a.G.N&&(b/=a.G.N);return b}function Ra(a,b){!a.h||void 0!==b&&b==a.h||(clearTimeout(a.g[a.h]),V(a,a.h,!1,4))}function W(a,b,c){a.i=b;Sa(a,c||300)}function Sa(a,b){if(0<a.i.length){var c=a.i.charCodeAt(0);10==c&&(c=13);65<=c&&90>=c&&(c+=32);a.i=a.i.substr(1);Pa(a,c)}0<a.i.length&&setTimeout(function(a){return function(){Sa(a,b)}}(a),b)}
|
|
function Oa(a,b,c){var d,f=!c;b=b.keyCode;c&&(a.W=b);16==b?(a.c&=-5,c&&(a.c|=4),b+=224,f=!1):18==b?(a.c&=-3,c&&(a.c|=2),b+=224,f=!1):b==a.s-224?(a.c&=-65,c&&(a.c|=64),b+=224,f=!1):20==b?(c=!c,a.c&=~a.o,c&&(a.c|=a.o),b+=224,f=!1):91==b?(a.c&=-9,c&&(a.c|=8),f=!1,d=!0):d=9==b?f=!1:b==a.M||b==a.K?c?!Pa(a,b):!1:!0;f&&(a.c&=-9,a.T||b!=a.W||Ra(a));void 0===d&&(d=!V(a,b,c,2));return d}
|
|
function Pa(a,b){var c=!1;b==a.D?a.J&&(a.J.reset(!0),c=!0):(a.T&&65<=b&&90>=b&&(b+=32),Ra(a,b),V(a,b,!0,0)&&(2==a.G.K?V(a,b,!1,1):(c=!1,a.g[b]&&(clearTimeout(a.g[b]),c=!0),c=Qa(a,c),a.g[a.h=b]=setTimeout(function(a){return function(){V(a,b,!1,3)}}(a),c)),c=!0));return c}
|
|
function V(a,b,c,d){var f=!1;c||(a.g[b]=null,a.h==b&&(a.h=0));var g=0,h=a.b[b];void 0===h&&(1<=b&&26>=b&&(b+=64,g=a.s),h=a.b[b]);void 0!==h&&(b=h>>12,f=h>>8&15,g||(g=h&255),c?(a.f[b]|=1<<f,a.f[0]=g==a.s?a.f[0]|64:240==g?a.f[0]|4:242==g?a.f[0]|2:a.f[0]&-71):(a.f[b]&=~(1<<f),a.f[0]&=-71,a.f[0]|=a.c&70),c=!d&&!a.v.length,a.v.push(a.f.slice()),Ta(a,c),f=!0);return f}e.X=function(){};e.$a=function(a){this.O=this.G.X(a)^this.w;this.A++;Ta(this,!1,a)};
|
|
function Ta(a,b,c){var d=Ja(a.G);b||(2==a.G.K?b=void 0!==c&&32<=a.A:(b=d-a.U,b=0>b||8192<=b));b&&(b=a.v.shift(),void 0!==b&&(a.N=b),a.A=0,a.U=d);for(b=d=0;8>b;b++)a.O&1<<b&&(d|=a.N[b]);d^=a.w;if(void 0!==c)a.a[c]=d;else if(c=a.V,d!=a.S)for(;c<a.oa;c++)a.a[c]=d;a.S=d}x(function(){for(var a=J(document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=H(c),d=new Na(d);I(d,c)}});
|
|
function Ua(a,b,c,d){E.call(this,"C1PVideo",a);this.S=a.model;this.M=a.charCols;this.N=a.charRows;this.U=a.screenWidth;this.V=a.screenHeight;this.i=a.charWidth;this.j=a.charHeight;Va(this);this.h=b;this.w=c;this.f=d;var f;b=["","moz","ms","webkit"];a=a.smoothing;if(!D){c={};if(window){f||(f=window.location.search.substr(1));for(var g=/\+/g,h=/([^&=]+)=?([^&]*)/g;d=h.exec(f);)c[decodeURIComponent(d[1].replace(g," "))]=decodeURIComponent(d[2].replace(g," "))}D=c}(f=D.smoothing||D.smoothing)&&(a="true"==
|
|
f);if(null!=a)for(f=0;f<b.length;f++)if(c=(c=b[f])?c+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.w[c]){this.w[c]=a;break}}q(Ua,E);e=Ua.prototype;e.reset=function(a){this.pa(this.S);if(this.a)for(var b=this.s;b<this.A;b++)this.a[b]=a?Math.floor(256*Math.random()):32};e.L=function(a,b,c){switch(b){case "refresh":return this.B[b]=c,c.onclick=function(a){return function(){Wa(a);Ba(a)}}(this),!0}return!1};
|
|
e.Y=function(a,b,c,d){this.a=a;this.s=b;this.T=c-b+1;this.A=this.s+this.T;d&&(this.G=d,Ca(d,56832,56832,this,this.X),Q(d,56832,56832,this,this.bb));this.reset(!0)};function Va(a,b,c,d,f){a.o=void 0!==b?b:a.M;a.W=void 0!==c?c:a.N;a.c=a.o*a.W;a.A=a.s+a.c;a.K=void 0!==d?d:0;a.O=void 0!==f?f:c;a.D=Math.floor(a.U/a.o);a.H=Math.floor(a.V/a.O)}e.ca=function(){this.h.focus()};
|
|
e.pa=function(a){this.m=a;600==this.m?(Va(this,this.M,this.N,3,25),1024==this.c&&this.G&&(this.g=this.A+this.c-1,Q(this.G,this.g,this.g,this,this.Ya))):(this.F("updated video model: "+this.m),Va(this,64,32));Wa(this);Ba(this)};e.$=function(a,b){if(a&&!this.u.I&&L(this)){if(this.u.I=!0,this.b=O(b,"keyboard"))this.b.L("canvas","keyDown",this.h),this.b.L("canvas","keyPress",this.h),this.b.L("canvas","keyUp",this.h)}else!a&&this.u.I&&(this.u.I=!1)};
|
|
e.R=function(){this.i||(this.i=Math.floor(this.f.width/16));this.j||(this.j=Math.floor(this.f.height/16));E.prototype.R.call(this)};e.X=function(a){var b=this.G.X(a);this.G.a[a]=b&127|(Math.floor(Ja(this.G)/8333)&1?128:0)};e.bb=function(){};
|
|
e.Ya=function(a,b){if(void 0!==b){this.pa(540);this.b&&this.b.pa(542);a=this.G;b=a.M;var c=[],d=Da(b,this.g,this.g,this,this.Ya);if(0<=d){c.push(b[d][0]);c.push(b[d][1]);b.splice(d,1);for(var f=65536,g=0,d=0;d<b.length;d++)f>b[d][0]&&(f=b[d][0]),g<b[d][1]&&(g=b[d][1]);c.push(f);c.push(g)}4==c.length&&(a.da=c[2],a.ea=c[3])}};function Wa(a){a.v=Array(a.c);for(var b=0;b<=a.c;b++)a.v[b]=-1}
|
|
function Ba(a){var b=0;if(a.u.I)for(;b<a.c;){var c=a.a[a.s+b];if(a.v[b]!=c){var d=Math.floor(b/a.o);if(d>=a.K&&(d-=a.K,d<a.O)){var f=c*a.i;a.w.drawImage(a.f,f%a.f.width,Math.floor(f/a.f.width)*a.j,a.i,a.j,b%a.o*a.D,d*a.H,a.D,a.H)}a.v[b]=c}b++}}
|
|
x(function(){for(var a=J(document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=H(c),f=document.createElement("canvas");if(!f||!f.getContext){c.innerHTML="<br/>Missing <canvas> support. Please try a newer web browser.";break}f.setAttribute("class","c1pjs-canvas");f.setAttribute("width",d.screenWidth);f.setAttribute("height",d.screenHeight);f.setAttribute("contenteditable","true");f.setAttribute("autocapitalize","off");f.setAttribute("autocorrect","off");f.style.backgroundColor=d.screenColor;
|
|
f.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(f.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,f,d.screenWidth,d.screenHeight));c.appendChild(f);var g=new Image,h=f.getContext("2d"),f=new Ua(d,f,h,g);g.onload=function(a){return function(){a.R()}}(f,d.charSet);g.src=d.charSet;I(f,c)}});
|
|
function Xa(a){E.call(this,"C1PSerialPort",a);this.u.I=!1;this.j=a.demo;this.reset(!0)}q(Xa,E);e=Xa.prototype;e.reset=function(a){if(a||this.f!=Ya){this.g=-1;this.h=0;this.c="";if(this.j){a=1;if(this.Ba){var b=this.Ba.match(/\d+/);null!==b&&(a=parseInt(b[0],10))}this.c='10 PRINT "HELLO OSI #'+a+'"\n'}this.i=!0;this.f=Za}};e.start=function(){this.b&&this.j&&(W(this.b," C\n\n",3E3),setTimeout(function(a){return function(){a.f=$a;W(a.b,"LOAD\n")}}(this),12E3));this.j=!1};
|
|
e.L=function(a,b,c){var d=this;switch(b){case "listSerial":return this.B[b]=c,!0;case "loadSerial":return this.B[b]=c,c.onclick=function(){d.B.listSerial&&v(d.B.listSerial.value,function(a,b,c){ab(d,a,b,c)})},!0;case "mountSerial":return!w("Mobi")&&window&&"FileReader"in window?(this.B[b]=c,c.onchange=function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length},c.onsubmit=function(a){var b=a.currentTarget[1].files[0],c=new FileReader;c.onload=function(){ab(d,b.name,c.result.toString(),
|
|
0)};c.readAsText(b);return!1}):c.parentNode.removeChild(c),!0}return!1};e.Y=function(a,b,c,d){this.a=a;this.m=b;this.s=c-b+1;this.o=this.m+this.s;if(this.G=d)Ca(d,b,c,this,this.X),Q(d,b,c,this,this.ab);this.R()};e.$=function(a,b){a&&!this.u.I&&(this.u.I=!0,this.J=b,this.b=O(b,"keyboard"))};
|
|
function ab(a,b,c,d){if(c){a.h=0;a.c=c;a.i=!0;a.f=Za;if(-1!==b.indexOf(".json",b.length-5))try{d="";var f=eval("("+c+")").bytes;for(c=0;c<f.length;c++)d+=String.fromCharCode(f[c]);a.c=d;a.i=!1}catch(g){a.F('Error processing file "'+b+'": '+g.message);return}a.J&&a.b&&a.G.u.Z?(a.F("auto-loading "+b),a.G.ca(),"."!=a.c.charAt(0)?(a.f=$a,W(a.b,"NEW\nLOAD\n")):(a.f=Ya,a.J.reset(!0),W(a.b,"ML"))):a.F(b+" ready to load")}else a.F('Error loading file "'+b+'" ('+d+")")}
|
|
e.X=function(a,b){void 0!==b&&(a&1?bb(this):this.c&&!this.h&&bb(this))};e.ab=function(){};function bb(a){if(void 0!==a.c){a.g=-1;if(a.h<a.c.length){var b=a.c.charCodeAt(a.h++)&255;a.i&&10==b&&(b=13);a.g=b}else a.c="",a.h=0,a.f==$a&&a.b&&W(a.b," \nRUN\n"),a.f=Za;for(b=a.m+0;b<a.o;b+=2)a.a[b]=0<=a.g?cb:db;for(b=a.m+1;b<a.o;b+=2)a.a[b]=0<=a.g?a.g:0}}var db=0,cb=1,Za=0,$a=1,Ya=2;x(function(){for(var a=J(document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=H(c),d=new Xa(d);I(d,c)}});
|
|
function eb(a){E.call(this,"C1PDiskController",a);this.u.I=!1;this.reset(!0)}q(eb,E);e=eb.prototype;e.reset=function(a){fb(this);this.b=-1;a&&(this.c=[],this.c[0]={de:0,Ga:40,cb:!0,ia:20,aa:0,ha:-1,qa:[]})};
|
|
function fb(a){a.s={C:64,read:function(){},update:function(a){return function(b){void 0!==b&&(this.C=b);a.i.C&4||X(a,0,this)}}(a)};a.f={C:255,read:function(){this.update()},update:function(a){return function(b){void 0===b?b=a.f.C:gb(a,b,a.h.C);b=(b|190)&-2;if(0<=a.b&&a.c[a.b].qa.length){var c=a.c[a.b];c.cb&&(b&=-33);c.aa||(b&=-3);10>=--c.ia&&(0<c.ia?(b&=-129,hb(a)):(c.ia=100,0<=a.b&&(a.c[a.b].ha=0,ib(a))))}this.C=b;a.i.C&4&&X(a,0,this)}}(a)};a.i={C:0,read:function(){},update:function(a){return function(b){void 0!==
|
|
b&&(this.C=b&-193);X(a,1,this);a.f.update();a.s.update()}}(a)};a.v={C:255,read:function(){},update:function(a){return function(b){void 0!==b&&(this.C=b);a.j.C&4||X(a,2,this)}}(a)};a.h={C:255,read:function(){},update:function(a){return function(b){void 0===b?b=a.h.C:gb(a,a.f.C,b);if(0<=a.b&&a.b<a.c.length){var c=a.c[a.b];c.qa.length&&a.h.C&8&&!(b&8)&&(b&4?c.aa--:c.aa++,c.aa>=c.Ga&&(c.aa=c.Ga),0>c.aa&&(c.aa=0),c.ia=20,a.f.update(a.f.C|128),hb(a))}this.C=b;a.j.C&4&&X(a,2,this)}}(a)};a.j={C:0,read:function(){},
|
|
update:function(a){return function(b){void 0!==b&&(this.C=b&-193);X(a,3,this);a.h.update();a.v.update()}}(a)};a.w={C:0,read:function(){},update:function(a){return function(b){void 0!==b&&(3==(b&3)&&(a.g.C=14),this.C=b);a.g.update()}}(a)};a.g={C:14,read:function(){},update:function(a){return function(b){void 0===b&&(b=a.g.C);b&=-2;0<=a.b&&0<=a.c[a.b].ha&&(b|=1);this.C=b;X(a,16,this)}}(a)};a.o={C:0,read:function(a){return function(){ib(a)}}(a),update:function(a){return function(b){void 0!==b&&(this.C=
|
|
b);X(a,17,this)}}(a)};a.A={C:0,read:function(){},update:function(){return function(){}}(a)}}e.L=function(a,b,c){switch(b){case "listDisk":return this.B[b]=c,!0;case "loadDisk":return this.B[b]=c,c.onclick=function(a){return function(){if(a.B.listDisk){var b=a.B.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.F("loading "+ga(b)+"...");v(c,function(b,c,d){jb(a,b,c,d)})}}}(this),!0}return!1};
|
|
e.Y=function(a,b,c,d){this.a=a;this.m=b;if(this.G=d)Ca(d,b,c,this,this.X),Q(d,b,c,this,this.Za);this.R()};e.$=function(a){a&&!this.u.I&&(this.u.I=!0)};
|
|
function jb(a,b,c,d){if(d)a.F("disk load error ("+d+")");else{d=[];a.F("mounting "+b+"...");try{if(d=eval("("+c+")"),d.length)if(d[0].length){var f=d[0];if(void 0===f[0].trackNum)a.F("data error: "+f[0]);else if(a.c[0]){for(c=0;c<f.length;c++){var g,h=f[c],l=h.sectors;if(void 0===(g=h.trackNum)||void 0===l)throw Error("track "+c+" missing data");g!=c&&B("track "+g+" out of order (expected "+c+")");d=[];var k,n,m;if(g){kb(d,h,"trackSig");lb(d,h);Y(d,h,"trackType");for(var p=0;p<l.length;p++){k=l[p];
|
|
n=k.sectorData;Y(d,k,"sectorSig");Y(d,k,"sectorNum");Y(d,k,"sectorPages");for(m=0;m<n.length;m++)d.push(n[m]);kb(d,k,"sectorEndSig")}}else for(k=l[0],n=k.sectorData,Y(d,h,"trackLoad",2),Y(d,k,"sectorPages"),m=0;m<n.length;m++)d.push(n[m]);f[g].Xa=d}a.c[0].qa=f;a.F("mount of "+b+" complete")}else a.F("no available drives")}else a.F("no tracks: "+b);else a.F("no data: "+b)}catch(sb){a.F("disk data error: "+sb.message)}}}
|
|
function lb(a,b){b=b.trackNum;if(void 0===b)throw Error("missing bcd value: trackNum");a.push(Math.floor(b/10)<<4|b%10)}function Y(a,b,c,d){b=b[c];if(void 0===b)throw Error("missing binary value: "+c);2==d&&a.push(b>>8&255);a.push(b&255)}function kb(a,b,c){b=b[c];if(void 0===b)throw Error("missing signature: "+c);for(c=0;c<b.length;c++)a.push(b.charCodeAt(c))}
|
|
function mb(a,b,c){b&=63;16>b?b&=3:32>b&&(b&=17);switch(b){case 0:a=a.i.C&4?a.f:a.s;break;case 1:a=a.i;break;case 2:a=a.j.C&4?a.h:a.v;break;case 3:a=a.j;break;case 16:a=c?a.w:a.g;break;case 17:a=a.o;break;default:a=a.A}return a}e.X=function(a,b){void 0!==b&&mb(this,a-this.m,!1).read()};e.Za=function(a,b){void 0!==b&&(b=this.G.X(a),mb(this,a-this.m,!0).update(b))};function gb(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&32||(d|=2),a.f.C&64||(d|=1));a.b!=d&&(a.b=d,a.g.update())}
|
|
function hb(a){0<=a.b&&(a.c[a.b].ha=-1,a.o.update(255),a.g.update())}function ib(a){var b;if(0<=a.b){b=a.c[a.b];var c=b.qa[b.aa];void 0!==c&&(0<=b.ha&&b.ha<c.Xa.length?(b.ia=100,b=c.Xa[b.ha++],a.o.update(b),a.g.update()):(b.ia=10,hb(a)))}}function X(a,b,c){a.G.a[b+a.m]=c.C}x(function(){for(var a=J(document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=H(c),d=new eb(d);I(d,c)}});function Z(a,b){E.call(this,"C1PComputer",a);this.P=b}q(Z,E);
|
|
Z.prototype.reset=function(a){var b=null,c;for(c in this.P)for(var d=0;d<this.P[c].length;d++){var f=this.P[c][d];f&&f.reset&&(f.reset(),"cpu"==c&&(b=f))}b&&(b.update(),a&&za(b))};Z.prototype.start=function(){for(var a in this.P)if("cpu"!=a)for(var b=0;b<this.P[a].length;b++){var c=this.P[a][b];c&&c.start&&c.start()}};Z.prototype.stop=function(a,b){for(var c in this.P)if("cpu"!=c)for(var d=0;d<this.P[c].length;d++){var f=this.P[c][d];f&&f.stop&&f.stop(a,b)}};
|
|
Z.prototype.L=function(a,b,c){switch(b){case "reset":return this.B[b]=c,c.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function O(a,b){return a.P[b]?a.P[b][0]:null}function nb(a){var b=null,c;for(c in a.P)for(var d=0;d<a.P[c].length;d++){var f=a.P[c][d];if(f){if(!L(f)){L(f,function(a){return function(){nb(a)}}(a));return}"cpu"==c?b=f:f.$&&f.$(!0,a)}}a.R();a.F("C1Pjs v1.35.2\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>");b&&b.$(!0,a)}
|
|
x(function(){for(var a=J(document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=H(c),f,g={},h,l=0,k=0,n=0;n<d.modules.length;n++){var m=d.modules[n];if(!n){if("cpu"!=m.type)break;l=m.start;k=m.end;h=Array(k+1-l);for(f=l;f<h.length;f++)h[f]=0}if(f=G(m.refID,d.id)){var p=m.type;void 0===g[p]&&(g[p]=[]);g[p].push(f);f.Y&&void 0!==m.start&&f.Y(h,m.start,m.end,g.cpu[0])}else{B('no component for <module refid="'+m.refID+'">');return}}if(!h){B('<module type="cpu"> definition must appear first in the <computer> specification');
|
|
break}if(f=G("debugger",d.id))g["debugger"]=[f],f.Y&&f.Y(h,l,k,g.cpu[0]);l=new Z(d,g);if(k=G("panel",d.id))if(g.panel=[k],k.sa){f=d.id;d=void 0;g=[];f&&(f=0<(d=f.indexOf("."))?f.substr(0,d+1):"");for(d=0;d<F.length;d++)n=F[d],f&&n.id.indexOf(f)||g.push(n);d=g;for(g=0;g<d.length;g++)f=d[g],f!=k&&(f.ta=k.ta,f.F=k.F,f.sa=k.sa)}I(l,c);nb(l)}});var ob=0;function pb(a,b,c,d,f,g){f("Loading "+a+"...");v(a,function(h,l,k){k?(l||(l="unable to load "+a+" ("+k+")"),g(l,null)):qb(l,a,b,c,d,f,g)})}
|
|
function qb(a,b,c,d,f,g,h){function l(a,g){if(g)h(g,null);else{c&&(M[c]&&b&&(M[c][b]=a),(g=b)&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{",d+='url:"'+g+'"}',"object"==typeof resources&&(g=null),d=d.replace(/\$/g,"$$$$"),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,
|
|
"$1C1Pjs$2"),a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1c1pjs$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(m){g=null,a=m.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?rb(a,g,l):l(a,null):h("no data"+(b?" for file: "+
|
|
b:""),null)}
|
|
function rb(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");v(f,function(g,h,l){if(l||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+l+")");else{if(g=d[3])if(l=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=l[0],n,m=/( [a-z]+=)(['"])(.*?)\2/g;n=m.exec(g);)k=0>k.indexOf(n[1])?k.replace(">",n[0]+">"):k.replace(new RegExp(n[1]+"(['\"])(.*?)\\1"),n[0]);l[0]!=k&&(h=h.replace(l[0],k))}else{c(a,"missing <"+d[1]+"> in "+f);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,"");
|
|
a=a.replace(d[0],h);rb(a,b,c)}})}else c(a,null)}
|
|
function tb(a,b,c){function d(a){if(void 0===h){var b=g&&J(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ia(a))}function f(a){d("Error: "+a);l&&(--ob||C(!0));l=!1}var g,h,l=!0;ob++;M[a]={};try{if(g=document.getElementById(a)){var k;if("object"==typeof resources&&(k=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],m=document.createElement("style");m.type="text/css";m.styleSheet?m.styleSheet.cssText=k:m.appendChild(document.createTextNode(k));n.appendChild(m)}c||(c=
|
|
"/versions/c1pjs/1.35.2/components.xsl");k=function(h,k){k?pb(c,null,null,!1,d,function(h,l){l?(M[a]&&c&&(M[a][c]=h),d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=k.transformNode(l))?(g.outerHTML=l,--ob||C(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(h=new XSLTProcessor,h.importStylesheet(l),(l=h.transformToFragment(k,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--ob||C(!0)):f("invalid machine element: "+
|
|
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(h)}):f(h)};"<"!=b.charAt(0)?pb(b,a,void 0,!0,d,k):qb(b,null,a,void 0,!1,d,k)}else f("missing machine element: "+a)}catch(p){f(p.message)}return l}window.embedC1P=function(a,b,c){C(!1);return tb(a,b,c)};window.findMachineComponent=function(a,b){return pa(b,a+".machine")};
|
|
window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!K[a]){for(var c=!0,d=K,f=a,g=b.length,h=[],l=[],k="",n=null,m=0;m<g;m++){var p=b[m];if('"'==p||"'"==p)n&&p!=n?k+=p:(n?n=null:n=p,k&&(l.push(k),k=""));else{if(!n){if("\r"==p||"\n"==p)p=";";if(" "==p||"\t"==p||";"==p){k&&(l.push(k),k="");";"==p&&l.length&&(h.push(l),l=[]);continue}}k+=p}}k&&l.push(k);l.length&&h.push(l);d[f]=h;qa(a)||(c=!1)}return c};window.enableEvents=C;window.sendEvent=na;})();//# sourceMappingURL=/versions/c1pjs/1.35.2/c1p.map
|