Fixed PCx86 default keystroke injection delay

This commit is contained in:
Jeff Parsons 2017-09-24 18:49:35 -07:00 committed by Jeff Parsons
commit 0228094f1d
61 changed files with 193839 additions and 0 deletions

View file

@ -0,0 +1,199 @@
(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 f,aa="function"==typeof Object.create?Object.create:function(a){function b(){}b.prototype=a;return new b},ba;if("function"==typeof Object.setPrototypeOf)ba=Object.setPrototypeOf;else{var ca;a:{var ea={Jb:!0},fa={};try{fa.__proto__=ea;ca=fa.Jb;break a}catch(a){}ca=!1}ba=ca?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+" is not extensible");return a}:null}var ha=ba;
function p(a,b){a.prototype=aa(b.prototype);a.prototype.constructor=a;if(ha)ha(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.Ue=b.prototype}
for(var ia="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},q="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,ja=["Math","trunc"],ka=0;ka<ja.length-1;ka++){var la=ja[ka];la in q||(q[la]={});q=q[la]}
var ma=ja[ja.length-1],na=q[ma],oa=na?na:function(a){a=Number(a);if(isNaN(a)||Infinity===a||-Infinity===a||0===a)return a;var b=Math.floor(Math.abs(a));return 0>a?-b:b};oa!=na&&null!=oa&&ia(q,ma,{configurable:!0,writable:!0,value:oa});
function r(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=void 0===d?0:d;var e="";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||(e=","+e,g=d);if(null==a)e="?"+e;else{var k=a%16;k+=0<=k&&9>=k?48:55;e=String.fromCharCode(k)+e;a=Math.trunc(a/16)}g--}return(void 0===c?"":c)+e}function u(a){return r(a,2,!0)}function w(a){return r(a,4,!0)}
function pa(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 qa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function ra(a){return a.replace(/[&<>"']/g,function(a){return sa[a]})}var sa={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"},ta=Date.now||function(){return+new Date};
function x(a,b){var c=!0;c=void 0===c?!1:c;var d=0,e=null;if("object"==typeof resources&&(e=resources[a]))b&&b(a,e,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&&(e=g.responseText,200==g.status||!g.status&&e.length&&"file:"==(window?window.location.protocol:"file:")||(d=g.status||-1),b&&b(a,e,d))});g.open("GET",
a,c);g.send();c||(e=g.responseText,200!=g.status&&(d=g.status||-1),b&&b(a,e,d))}}function y(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 ua(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
function va(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,g=!1;a.onmousedown=function(){g||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);g=!0}}function wa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function z(a){A.init.push(a)}
function xa(a){if(ya)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){!ya&&a?(ya=!0,za&&Aa("init"),Ba&&Aa("show")):ya=a}function Aa(a){A[a]&&xa(A[a])}var Ca=null,A={init:[],show:[],exit:[]},za=!1,Ba=!1,ya=!0;wa("onload",function(){za=!0;xa(A.init)});wa("onpageshow",function(){Ba=!0;xa(A.show)});wa(y("iOS")?"onpagehide":y("Opera")?"onunload":"onbeforeunload",function(){xa(A.exit)});
function D(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.exports={};this.H=this.bindings={};a=this.id.indexOf(".");0>a||(this.lb=this.id.substr(0,a));this.C={ready:!1,Ga:!1,ab:!1,Te:!1,N:!1,Oe:!1,error:!1};this.cb=null;this.C.error=!1;this.ma=c||0;this.u=this.s=this.U=null;E.push(this)}function B(a){window&&window.alert(a)}function Da(a,b){a.value+=b;b=a.value;8192<b.length&&(a.value=b.substr(b.length-4096));a.scrollTop=a.scrollHeight}
function F(a,b){b=G(b.parentNode,"c1pjs-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var g=d[e];if(1===g.nodeType){var k=g.getAttribute("class");if(k)for(var l=k.split(" "),h=0;h<l.length;h++)switch(k=l[h],k){case "c1pjs-binding":(k=H(g))&&k.binding&&a.T(k.type,k.binding,g,k.value),h=l.length}}}}function Ea(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<E.length;c++)if(E[c].id===a)return E[c]}return null}
function Fa(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<E.length;d++)if(c)c==E[d]&&(c=null);else if(!(a!=E[d].type||b&&E[d].id.indexOf(b)))return E[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 G(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
function Ga(a){for(var b=!0,c=I[a];c&&c.length;){var d=c.splice(0,1)[0],e=d[0],g=null;0<=Ha.indexOf(e)&&(g=function(){return function(){Ga(a)}}());var k=Ia[e];if(k)if(!g)b=k(d[1],d[2],d[3]);else{if(!k(g,d[1],d[2],d[3]))break}else{b=!1;var l=Fa(d[1],a);if(l)if(k=Ja[e])b=k(l,d[2],d[3]);else{var h=l.exports;if(h&&(k=h[e]))if(b=!0,!g)b=k.call(l,d[2],d[3]);else if(!k.call(l,g,d[2],d[3]))break}}if(!b){B("Script error: '"+e+(k?" failed":" unrecognized"));break}}c&&!c.length&&delete I[a];return b}f=D.prototype;
f.toString=function(){return this.name?this.name:this.id||this.type};
f.T=function(a,b,c){switch(b){case "clear":return this.H[b]||(this.H[b]=c,c.onclick=function(a){return function(){a.H.print&&(a.H.print.value="")}}(this)),!0;case "print":return this.H[b]||(this.H[b]=c,this.Va=function(a){this.l(a,this.type);return!0},c.value="",this.print=function(a){return function(b){Da(a,b)}}(c),this.l=function(a,b){return function(a,c){a||(a="");if(c!=Ka||"..."!=a.slice(-3))c&&(a=c+": "+a),Da(b,a+"\n");else{c=b.value;var d=c.lastIndexOf(a);0>d?c+=a+"\n":c=c.substr(0,d)+(a+".")+
c.substr(d+a.length);8192<c.length&&(c=c.substr(c.length-4096));b.value=c;b.scrollTop=b.scrollHeight}}}(this,c)),!0;default:return!1}};f.log=function(){};f.print=function(){};f.l=function(){};f.status=function(a){this.l(this.type+": "+a)};f.Va=function(a,b,c){if(!b){var d=Fa("Computer",this.id);if(d&&d.C.Oe)return console.log("ignoring notice during unload: "+a),!1}c=c||this.type;b||B((c?c+": ":"")+a);return!0};function La(a,b){a.C.error=!0;a.Va(b)}
function J(a,b){b&&(a.C.ready?b():a.cb=b);return a.C.ready}f.X=function(a){this.C.error||(this.C.ready=!1!==a,this.C.ready&&(a=this.cb,this.cb=null,a&&a()))};function K(a,b){a.C.Ga&&(b?a.C.ab=!0:void 0===b&&a.l(a.toString()+" busy"));return a.C.Ga}function L(a,b){if(a.C.ab)return a.C.Ga=!1,a.C.ab=!1;if(a.C.error)return a.l(a.toString()+" error"),!1;a.C.Ga=b;return a.C.Ga}function M(a,b){if(a.u){a===a.u?b|=0:b=b||a.ma;var c=a.u.ma&b;return!!b&&c===b||!!(c&a.u.Re)}return!1}var Ka="progress";
window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]),window.PCjs.Commands||(window.PCjs.Commands={}));
var N=window?window.PCjs.Machines:{},E=window?window.PCjs.Components:[],I=window?window.PCjs.Commands:{},Ha=["hold","sleep","wait"],Ia={alert:function(a){B(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},Ja={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 e.apply(this instanceof c&&a?this:a,d.concat(Array.prototype.slice.call(arguments)))}function c(){}if("function"!=typeof this)throw new TypeError("Function.prototype.bind: non-callable object");var d=Array.prototype.slice.call(arguments,1),e=this;c.prototype=this.prototype;b.prototype=new c;return b});function Ma(a){D.call(this,"C1PPanel",a);this.C.N=!1}p(Ma,D);
Ma.prototype.T=function(a,b,c,d){return this.U&&this.U.T(a,b,c,d)||this.s&&this.s.T(a,b,c,d)||this.b&&this.b.T(a,b,c,d)||this.u&&this.u.T(a,b,c,d)?!0:D.prototype.T.call(this,a,b,c,d)};Ma.prototype.ia=function(a,b){a&&!this.C.N&&(this.C.N=!0,this.U=b,this.s=O(b,"cpu"),this.b=O(b,"keyboard"),this.u=O(b,"debugger"),Na())};function Na(){for(var a=!1,b=G(document,"c1pjs","panel"),c=0;c<b.length;c++){var d=b[c],e=H(d),g=Ea(e.id);g||(a=!0,g=new Ma(e));F(g,d);a&&g.X()}}z(Na);
function Oa(a){D.call(this,"C1PCPU",a);Pa(this);this.C.N=!1;this.C.oa=!1;this.Ua=a.autoStart;this.Pa=0;this.Me=1;this.Ne=2;this.I=this.Pa;this.La=30;this.Ka=5;this.Ea=8;this.Ta=["Slow","Fast","Max"];this.hb=["(1Mhz)","(up to "+this.Ea+"Mhz)","(unlimited)"];this.R=[];this.K=[];this.qa=65536;this.ra=0;this.fa=65536;this.ka=0;this.Oa=32;this.$a=2;this.Le=1;this.o=[this.rc,this.Ld,this.Ce,this.m,this.m,this.Nd,this.hc,this.m,this.Qd,this.Kd,this.gc,this.m,this.m,this.Hd,this.ec,this.m,this.qc,this.Md,
this.m,this.m,this.m,this.Od,this.ic,this.m,this.uc,this.Jd,this.m,this.m,this.m,this.Id,this.fc,this.m,this.hd,this.ac,this.m,this.m,this.nc,this.cc,this.Wd,this.m,this.Sd,this.$b,this.Vd,this.m,this.mc,this.Xb,this.Td,this.m,this.oc,this.bc,this.m,this.m,this.m,this.dc,this.Xd,this.m,this.me,this.Zb,this.m,this.m,this.m,this.Yb,this.Ud,this.m,this.ce,this.Wc,this.m,this.m,this.m,this.Yc,this.Ed,this.m,this.Pd,this.Vc,this.Dd,this.m,this.gd,this.Sc,this.Bd,this.m,this.sc,this.Xc,this.m,this.m,this.m,
this.Zc,this.Fd,this.m,this.wc,this.Uc,this.m,this.m,this.m,this.Tc,this.Cd,this.m,this.de,this.qb,this.m,this.m,this.m,this.sb,this.ae,this.m,this.Rd,this.pb,this.$d,this.m,this.fd,this.mb,this.Yd,this.m,this.tc,this.rb,this.m,this.m,this.m,this.tb,this.be,this.m,this.oe,this.ob,this.m,this.m,this.m,this.nb,this.Zd,this.m,this.m,this.se,this.m,this.m,this.Ae,this.ue,this.xe,this.m,this.Rc,this.m,this.Ge,this.m,this.ze,this.pe,this.we,this.m,this.jc,this.te,this.m,this.m,this.Be,this.ve,this.ye,this.m,
this.Ie,this.re,this.He,this.m,this.m,this.qe,this.m,this.m,this.yd,this.nd,this.td,this.m,this.zd,this.pd,this.ud,this.m,this.Ee,this.md,this.De,this.m,this.wd,this.jd,this.rd,this.m,this.kc,this.od,this.m,this.m,this.Ad,this.qd,this.vd,this.m,this.xc,this.ld,this.Fe,this.m,this.xd,this.kd,this.sd,this.m,this.Kc,this.Cc,this.m,this.m,this.Lc,this.Ec,this.Oc,this.m,this.ed,this.Bc,this.Qc,this.m,this.Jc,this.yc,this.Mc,this.m,this.pc,this.Dc,this.m,this.m,this.m,this.Fc,this.Pc,this.m,this.vc,this.Ac,
this.m,this.m,this.m,this.zc,this.Nc,this.m,this.Hc,this.yb,this.m,this.m,this.Ic,this.Ab,this.bd,this.m,this.dd,this.xb,this.Gd,this.m,this.Gc,this.ub,this.$c,this.m,this.lc,this.zb,this.m,this.m,this.m,this.Bb,this.cd,this.m,this.ne,this.wb,this.m,this.m,this.m,this.vb,this.ad,this.m];this.gb=[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]}p(Oa,D);f=Oa.prototype;
f.reset=function(a){this.C.oa&&this.aa();Pa(this);this.f=this.a[65532]|this.a[65533]<<8;this.C.error=!1;this.u?this.u.reset():a&&(!0===this.Ua||null===this.Ua&&!this.u&&void 0===this.H.run)&&this.ua()};
f.T=function(a,b,c){a=!1;switch(b){case "run":this.H[b]=c;c.onclick=function(a){return function(){a.C.oa?a.aa():a.ua()}}(this);a=!0;break;case "A":case "X":case "Y":case "S":case "PC":case "C":case "Z":case "I":case "D":case "B":case "V":case "N":case "speed":this.H[b]=c;a=!0;break;case "setSpeed":this.H[b]=c,c.onclick=function(a){return function(){P(a,2<=a.I?a.Pa:a.I+1,!0)}}(this),a=!0}return a};
f.ca=function(a,b,c){this.a=a;this.M=b;this.sa=c-b+1;this.Ca=this.M+this.sa;this.M?B("unsupported CPU address buffer offset ("+this.M+")"):this.X()};f.ia=function(a,b){if(a&&!this.C.N){this.U=b;(this.u=O(b,"debugger"))&&this.u.Nb();if(a=O(b,"video"))this.bb=function(a){return function(){Qa(a)}}(a),this.da=function(a){return function(){a.da()}}(a);this.C.N=!0;this.reset(!0);this.update()}};function Ra(a,b,c,d,e){0>Sa(a.R,b,c,d,e)&&(a.qa>b&&(a.qa=b),a.ra<c&&(a.ra=c),a.R.push([b,c,d,e]))}
function Ta(a,b,c){for(var d=0;d<a.R.length;d++)b>=a.R[d][0]&&b<=a.R[d][1]&&a.R[d][3].call(a.R[d][2],b,c)}function Q(a,b,c,d,e){0>Sa(a.K,b,c,d,e)&&(a.fa>b&&(a.fa=b),a.ka<c&&(a.ka=c),a.K.push([b,c,d,e]))}function Ua(a,b,c){for(var d=0;d<a.K.length;d++)b>=a.K[d][0]&&b<=a.K[d][1]&&a.K[d][3].call(a.K[d][2],b,c)}function Sa(a,b,c,d,e){for(var g=0;g<a.length;g++)if(a[g][0]==b&&a[g][1]==c&&a[g][2]==d&&a[g][3]==e)return g;return-1}
function P(a,b,c){void 0!==b&&(a.I=b,a.H.setSpeed&&(a.H.setSpeed.innerHTML=a.Ta[2<=b?0:b+1]),a.l("running at "+a.Ta[b].toLowerCase()+" speed "+a.hb[b]),c&&a.da());a.W=0;a.Wa=ta();Va(a)}f.bb=function(){};f.da=function(){};function R(a,b,c,d){void 0!==a.H[b]&&(void 0===d&&(d=1),c="0000"+c.toString(16),a.H[b].innerHTML=c.slice(c.length-d).toUpperCase())}
function Wa(a){R(a,"A",a.h,2);R(a,"X",a.w,2);R(a,"Y",a.F,2);var b=Xa(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.G,4);R(a,"PC",a.f,4);a.H.speed&&a.L&&(a.H.speed.innerHTML=a.L.toFixed(1)+"Mhz")}
function Va(a,b){var c=30;c<a.La&&(c=a.La);c<a.Ka&&(c=a.Ka);var d=1;b&&a.I>a.Pa&&a.L&&(d=a.L);d>a.Ea&&2>a.I&&(d=a.Ea);a.Pe=Math.round(1E3/30);a.ja=Math.floor(1E6/c*d);a.Ha=Math.floor(1E6/30*d);a.Ya=Math.floor(1E6/a.La*d);a.Xa=Math.floor(1E6/a.Ka*d);b||(a.V=a.Ha,a.$=a.Ya,a.Z=a.Xa);a.Ia=0}function Ya(a){var b=ta(),c=a.Pe;a.ba&&(c=Math.round(c*a.ba/a.Ha));c-=b-a.Qe;if(b-=a.Wa)a.L=Math.round(a.W/(100*b))/10,864E5<=b&&P(a);0>c?c=0:1==a.I?a.L<=a.Ea&&(c=0):2==a.I&&(c=0);a.Ia+=a.ba;return c}
f.ua=function(){if(L(this,!0)){this.C.oa||(P(this),this.U&&this.U.start(),this.C.oa=!0,this.H.run&&(this.H.run.innerHTML="Halt"),this.da());1E6<=this.Ia&&Va(this,!0);this.ba=0;this.Qe=ta();try{do{this.step(this.ja);var a=this.O-this.D;this.W+=a;this.ba+=a;this.O=this.D=0;this.$-=this.ja;0>=this.$&&(this.$+=this.Ya,this.bb());this.Z-=this.ja;0>=this.Z&&(this.Z+=this.Xa,Wa(this));this.V-=this.ja;if(0>=this.V){this.V+=this.Ha;break}}while(this.C.oa)}catch(b){this.aa();this.update();L(this,!1);La(this,
b.stack||b.message);return}setTimeout(function(a){return function(){a.ua()}}(this),Ya(this))}else this.update(),this.U&&this.U.stop(this.Wa,this.W)};
f.step=function(a){var b=!0;this.b=this.g=-1;var c;if(c=a&&this.u)c=this.u,c=0<c.pa.length||0<c.va.length||0<c.xa.length;this.O=this.D=a;do{a=this.a[this.f];var d;if(d=c){d=this.u;var e=a,g=!1;Za(d,this.f,d.pa,"exec")?g=!0:(d.L++,d.B[e][1]++,d.wa[d.Ja++]=d.s.f,d.Ja>=d.wa.length&&(d.Ja=0));d=!!g}if(d){b=void 0;this.aa();break}this.f++;this.o[a].call(this);if(0<=this.b){this.b>=this.qa&&this.b<=this.ra&&Ta(this,this.b,this.f);if(d=c)d=this.u,e=!1,Za(d,this.b,d.va,"read")&&(e=!0),d=!!e;if(d){b=!1;this.aa();
break}this.b=-1}else if(0<=this.g){this.g>=this.fa&&this.g<=this.ka&&Ua(this,this.g,this.f);if(d=c){d=this.u;e=this.g;g=this.a[this.g];var k=!1;(g&255)!=g&&(d.l("invalid value at "+w(e)+": "+g),k=!0);Za(d,e,d.xa,"write")&&(k=!0);d=!!k}if(d){b=!1;this.aa();break}this.g=-1}this.D-=this.gb[a]}while(0<this.D);return b};function $a(a){a.V=0;a.O-=a.D;a.D=0}f.aa=function(){K(this,!0);this.O-=this.D;this.D=0;this.C.oa&&(this.C.oa=!1,this.H.run&&(this.H.run.innerHTML="Run"))};
f.update=function(){this.bb();Wa(this)};function ab(a){return a.C.oa?a.W+a.O-a.D:0}f.S=function(a){return this.a[a]};function Xa(a){var b=a.c&256?1:0;b|=a.j&255?0:2;b|=(a.v&255^a.A^a.v>>1)&128?64:0;b|=a.i&128?128:0;return a.B&60|b}function bb(a){a.B|=8;a.o[97]=a.Tb;a.o[101]=a.Vb;a.o[105]=a.Sb;a.o[109]=a.Pb;a.o[113]=a.Ub;a.o[117]=a.Wb;a.o[121]=a.Rb;a.o[125]=a.Qb;a.o[225]=a.ie;a.o[229]=a.ke;a.o[233]=a.he;a.o[237]=a.ee;a.o[241]=a.je;a.o[245]=a.le;a.o[249]=a.ge;a.o[253]=a.fe}
function cb(a){a.B&=-9;a.o[97]=a.qb;a.o[101]=a.sb;a.o[105]=a.pb;a.o[109]=a.mb;a.o[113]=a.rb;a.o[117]=a.tb;a.o[121]=a.ob;a.o[125]=a.nb;a.o[225]=a.yb;a.o[229]=a.Ab;a.o[233]=a.xb;a.o[237]=a.ub;a.o[241]=a.zb;a.o[245]=a.Bb;a.o[249]=a.wb;a.o[253]=a.vb}function S(a,b,c){var d=a.c&256?1:0,e=(b&15)+(c&15)+d;10<=e&&(e=e+6&15|16);e+=(b&240)+(c&240);a.A=b^c;a.v=e;a.i=e&255;160<=e&&(e+=96);512<=e&&(e-=256);a.c=e;a.j=b+c+d&255;a.D--;return e&255}
function T(a,b,c){var d=a.c&256?0:1,e=(b&15)-(c&15)-d;0>e&&(e=(e-6&15)-16);e+=(b&240)-(c&240);0>e&&(e-=96);a.i=a.j=(a.c=b-c-d)&255;a.A=b^c;a.v=a.c;a.c^=256;a.D--;return e&255}function Pa(a){a.h=0;a.w=0;a.F=0;a.G=256;a.B=0;a.i=0;a.j=0;a.A=0;a.v=0;a.c=0;a.f=0;a.b=-1;a.g=-1;a.L=0;a.W=a.O=a.D=0}
f.rc=function(){this.f++;this.a[this.G--]=this.f>>8;this.G|=256;this.a[this.G--]=this.f&255;this.G|=256;this.B|=16;this.B=Xa(this);this.a[this.G--]=this.B;this.G|=256;this.B&=239;this.b=65534;this.f=this.a[this.b]|this.a[this.b+1]<<8};f.Ld=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.i=this.j=this.h|=this.a[this.b]};f.Nd=function(){this.b=this.a[this.f++];this.i=this.j=this.h|=this.a[this.b]};
f.hc=function(){this.g=this.a[this.f++];this.c=this.a[this.g]<<1;this.i=this.j=this.a[this.g]=this.c&255};f.Qd=function(){this.B=Xa(this);this.a[this.G--]=this.B;this.G|=256};f.Kd=function(){this.b=this.f++;this.i=this.j=this.h|=this.a[this.b]};f.gc=function(){this.c=this.h<<1;this.i=this.j=this.h=this.c&255};f.Hd=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.h|=this.a[this.b]};
f.ec=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.a[this.g]<<1;this.i=this.j=this.a[this.g]=this.c&255};f.qc=function(){this.f+=(this.i&128?0:(this.D--,this.a[this.f]<<24>>24))+1};f.Md=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.i=this.j=this.h|=this.a[this.b]};f.Od=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.h|=this.a[this.b]};
f.ic=function(){this.g=this.a[this.f++]+this.w&255;this.c=this.a[this.g]<<1;this.i=this.j=this.a[this.g]=this.c&255};f.uc=function(){this.c=0};f.Jd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.h|=this.a[this.b]};f.Id=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.h|=this.a[this.b]};f.fc=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.a[this.g]<<1;this.i=this.j=this.a[this.g]=this.c&255};
f.hd=function(){this.b=this.f++;this.a[this.G--]=this.f>>8;this.G|=256;this.a[this.G--]=this.f&255;this.G|=256;this.f=this.a[this.b]|this.a[this.b+1]<<8};f.ac=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.i=this.j=this.h&=this.a[this.b]};f.nc=function(){this.b=this.a[this.f++];this.j=this.h&this.a[this.b];this.i=this.i&127|this.a[this.b]&128;this.v=0;this.A=this.a[this.b]&64?128:0};f.cc=function(){this.b=this.a[this.f++];this.i=this.j=this.h&=this.a[this.b]};
f.Wd=function(){this.g=this.a[this.f++];this.c=this.c&65280|this.a[this.g];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.i=this.j=this.a[this.g]=this.c&255};f.Sd=function(){this.G=this.G+1&255|256;this.B=this.a[this.G];this.c=this.B&1?256:0;this.j=this.B&2?0:1;this.i=this.B&128;this.v=0;this.A=this.B&64?128:0};f.$b=function(){this.b=this.f++;this.i=this.j=this.h&=this.a[this.b]};
f.Vd=function(){this.c=this.c&65280|this.h;this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.i=this.j=this.h=this.c&255};f.mc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.j=this.h&this.a[this.b];this.i=this.i&127|this.a[this.b]&128;this.v=0;this.A=this.a[this.b]&64?128:0};f.Xb=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.h&=this.a[this.b]};
f.Td=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.c&65280|this.a[this.g];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.i=this.j=this.a[this.g]=this.c&255};f.oc=function(){this.f+=(this.i&128?(this.D--,this.a[this.f]<<24>>24):0)+1};f.bc=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.i=this.j=this.h&=this.a[this.b]};f.dc=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.h&=this.a[this.b]};
f.Xd=function(){this.g=this.a[this.f++]+this.w&255;this.c=this.c&65280|this.a[this.g];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.i=this.j=this.a[this.g]=this.c&255};f.me=function(){this.c=256};f.Zb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.h&=this.a[this.b]};f.Yb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.h&=this.a[this.b]};
f.Ud=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.c&65280|this.a[this.g];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.i=this.j=this.a[this.g]=this.c&255};f.ce=function(){this.G=this.G+1&255|256;this.B=this.a[this.G];this.c=this.B&1?256:0;this.j=this.B&2?0:1;this.i=this.B&128;this.v=0;this.A=this.B&64?128:0;this.G=this.G+2&255|256;this.f=this.a[this.G-1|256]|this.a[this.G]<<8};
f.Wc=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.i=this.j=this.h^=this.a[this.b]};f.Yc=function(){this.b=this.a[this.f++];this.i=this.j=this.h^=this.a[this.b]};f.Ed=function(){this.g=this.a[this.f++];this.c=this.c&65279|(this.a[this.g]&1?256:0);this.a[this.g]=(this.c=this.c&65280|this.a[this.g]>>1)&255;this.i=this.j=this.c&255};f.Pd=function(){this.a[this.G--]=this.h;this.G|=256};f.Vc=function(){this.b=this.f++;this.i=this.j=this.h^=this.a[this.b]};
f.Dd=function(){this.c=this.c&65279|(this.h&1?256:0);this.h=(this.c=this.c&65280|this.h>>1)&255;this.i=this.j=this.c&255};f.gd=function(){this.b=this.f;this.f=this.a[this.b]|this.a[this.b+1]<<8};f.Sc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.h^=this.a[this.b]};f.Bd=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.c&65279|(this.a[this.g]&1?256:0);this.a[this.g]=(this.c=this.c&65280|this.a[this.g]>>1)&255;this.i=this.j=this.c&255};
f.sc=function(){this.f+=((this.v&255^this.A^this.v>>1)&128?0:(this.D--,this.a[this.f]<<24>>24))+1};f.Xc=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.i=this.j=this.h^=this.a[this.b]};f.Zc=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.h^=this.a[this.b]};f.Fd=function(){this.g=this.a[this.f++]+this.w&255;this.c=this.c&65279|(this.a[this.g]&1?256:0);this.a[this.g]=(this.c=this.c&65280|this.a[this.g]>>1)&255;this.i=this.j=this.c&255};
f.wc=function(){this.B&=251};f.Uc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.h^=this.a[this.b]};f.Tc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.h^=this.a[this.b]};f.Cd=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.c&65279|(this.a[this.g]&1?256:0);this.a[this.g]=(this.c=this.c&65280|this.a[this.g]>>1)&255;this.i=this.j=this.c&255};
f.de=function(){this.G=this.G+2&255|256;this.f=(this.a[this.G-1|256]|this.a[this.G]<<8)+1};f.qb=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.Tb=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=S(this,this.h,this.a[this.b])};
f.sb=function(){this.b=this.a[this.f++];this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.Vb=function(){this.b=this.a[this.f++];this.h=S(this,this.h,this.a[this.b])};f.ae=function(){this.g=this.a[this.f++];this.c=this.c&65280|this.a[this.g];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.i=this.j=this.a[this.g]=this.c&255};f.Rd=function(){this.G=this.G+1&255|256;this.i=this.j=this.h=this.a[this.G]};
f.pb=function(){this.b=this.f++;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.Sb=function(){this.b=this.f++;this.h=S(this,this.h,this.a[this.b])};f.$d=function(){this.c=this.c&65280|this.h;this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.i=this.j=this.h=this.c&255};f.fd=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.f=this.a[this.b]|this.a[this.b+1]<<8};
f.mb=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.Pb=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=S(this,this.h,this.a[this.b])};f.Yd=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.c&65280|this.a[this.g];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.i=this.j=this.a[this.g]=this.c&255};
f.tc=function(){this.f+=((this.v&255^this.A^this.v>>1)&128?(this.D--,this.a[this.f]<<24>>24):0)+1};f.rb=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.Ub=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.h=S(this,this.h,this.a[this.b])};
f.tb=function(){this.b=this.a[this.f++]+this.w&255;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.Wb=function(){this.b=this.a[this.f++]+this.w&255;this.h=S(this,this.h,this.a[this.b])};f.be=function(){this.g=this.a[this.f++]+this.w&255;this.c=this.c&65280|this.a[this.g];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.i=this.j=this.a[this.g]=this.c&255};f.oe=function(){this.B|=4};
f.ob=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};f.Rb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.h=S(this,this.h,this.a[this.b])};f.nb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.h+this.a[this.b]+(this.c&256?1:0);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255};
f.Qb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.h=S(this,this.h,this.a[this.b])};f.Zd=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.c&65280|this.a[this.g];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.i=this.j=this.a[this.g]=this.c&255};f.se=function(){this.g=this.a[this.f++]+this.w&255;this.g=this.a[this.g]|this.a[this.g+1]<<8;this.a[this.g]=this.h};f.Ae=function(){this.g=this.a[this.f++];this.a[this.g]=this.F};
f.ue=function(){this.g=this.a[this.f++];this.a[this.g]=this.h};f.xe=function(){this.g=this.a[this.f++];this.a[this.g]=this.w};f.Rc=function(){this.i=this.j=this.F=this.F-1&255};f.Ge=function(){this.i=this.j=this.h=this.w};f.ze=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.a[this.g]=this.F};f.pe=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.a[this.g]=this.h};f.we=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.a[this.g]=this.w};
f.jc=function(){this.f+=(this.c&256?0:(this.D--,this.a[this.f]<<24>>24))+1};f.te=function(){this.g=this.a[this.f++];this.g=(this.a[this.g]|this.a[this.g+1]<<8)+this.F;this.a[this.g]=this.h};f.Be=function(){this.g=this.a[this.f++]+this.w&255;this.a[this.g]=this.F};f.ve=function(){this.g=this.a[this.f++]+this.w&255;this.a[this.g]=this.h};f.ye=function(){this.g=this.a[this.f++]+this.F&255;this.a[this.g]=this.w};f.Ie=function(){this.i=this.j=this.h=this.F};
f.re=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.a[this.g]=this.h};f.He=function(){this.G=this.w|256};f.qe=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.a[this.g]=this.h};f.yd=function(){this.b=this.f++;this.i=this.j=this.F=this.a[this.b]};f.nd=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.i=this.j=this.h=this.a[this.b]};f.td=function(){this.b=this.f++;this.i=this.j=this.w=this.a[this.b]};
f.zd=function(){this.b=this.a[this.f++];this.i=this.j=this.F=this.a[this.b]};f.pd=function(){this.b=this.a[this.f++];this.i=this.j=this.h=this.a[this.b]};f.ud=function(){this.b=this.a[this.f++];this.i=this.j=this.w=this.a[this.b]};f.Ee=function(){this.i=this.j=this.F=this.h};f.md=function(){this.b=this.f++;this.i=this.j=this.h=this.a[this.b]};f.De=function(){this.i=this.j=this.w=this.h};f.wd=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.F=this.a[this.b]};
f.jd=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.h=this.a[this.b]};f.rd=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.w=this.a[this.b]};f.kc=function(){this.f+=(this.c&256?(this.D--,this.a[this.f]<<24>>24):0)+1};f.od=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.i=this.j=this.h=this.a[this.b]};f.Ad=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.F=this.a[this.b]};
f.qd=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.h=this.a[this.b]};f.vd=function(){this.b=this.a[this.f++]+this.F&255;this.i=this.j=this.w=this.a[this.b]};f.xc=function(){this.A=this.v=0};f.ld=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.h=this.a[this.b]};f.Fe=function(){this.i=this.j=this.w=this.G&255};f.xd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.F=this.a[this.b]};
f.kd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.h=this.a[this.b]};f.sd=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.w=this.a[this.b]};f.Kc=function(){this.b=this.f++;this.i=this.j=this.c=this.F-this.a[this.b];this.c^=256};f.Cc=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};
f.Lc=function(){this.b=this.a[this.f++];this.i=this.j=this.c=this.F-this.a[this.b];this.c^=256};f.Ec=function(){this.b=this.a[this.f++];this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Oc=function(){this.g=this.a[this.f++];this.i=this.j=this.a[this.g]=this.a[this.g]-1&255};f.ed=function(){this.i=this.j=this.F=this.F+1&255};f.Bc=function(){this.b=this.f++;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Qc=function(){this.i=this.j=this.w=this.w-1&255};
f.Jc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.c=this.F-this.a[this.b];this.c^=256};f.yc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Mc=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.a[this.g]=this.a[this.g]-1&255};f.pc=function(){this.f+=(this.j&255?(this.D--,this.a[this.f]<<24>>24):0)+1};
f.Dc=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Fc=function(){this.b=this.a[this.f++]+this.w&255;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Pc=function(){this.g=this.a[this.f++]+this.w&255;this.i=this.j=this.a[this.g]=this.a[this.g]-1&255};f.vc=function(){cb(this)};
f.Ac=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.zc=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.c=this.h-this.a[this.b];this.c^=256};f.Nc=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.a[this.g]=this.a[this.g]-1&255};f.Hc=function(){this.b=this.f++;this.i=this.j=this.c=this.w-this.a[this.b];this.c^=256};
f.yb=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.ie=function(){this.b=this.a[this.f++]+this.w&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=T(this,this.h,this.a[this.b])};f.Ic=function(){this.b=this.a[this.f++];this.i=this.j=this.c=this.w-this.a[this.b];this.c^=256};
f.Ab=function(){this.b=this.a[this.f++];this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.ke=function(){this.b=this.a[this.f++];this.h=T(this,this.h,this.a[this.b])};f.bd=function(){this.g=this.a[this.f++];this.i=this.j=this.a[this.g]=this.a[this.g]+1&255};f.dd=function(){this.i=this.j=this.w=this.w+1&255};
f.xb=function(){this.b=this.f++;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.he=function(){this.b=this.f++;this.h=T(this,this.h,this.a[this.b])};f.Gd=function(){};f.Gc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.c=this.w-this.a[this.b];this.c^=256};
f.ub=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.ee=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=T(this,this.h,this.a[this.b])};f.$c=function(){this.g=this.a[this.f++]|this.a[this.f++]<<8;this.i=this.j=this.a[this.g]=this.a[this.g]+1&255};f.lc=function(){this.f+=(this.j&255?0:(this.D--,this.a[this.f]<<24>>24))+1};
f.zb=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.je=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.F;this.h=T(this,this.h,this.a[this.b])};
f.Bb=function(){this.b=this.a[this.f++]+this.w&255;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.le=function(){this.b=this.a[this.f++]+this.w&255;this.h=T(this,this.h,this.a[this.b])};f.cd=function(){this.g=this.a[this.f++]+this.w&255;this.i=this.j=this.a[this.g]=this.a[this.g]+1&255};f.ne=function(){bb(this)};
f.wb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.ge=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.h=T(this,this.h,this.a[this.b])};
f.vb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.fe=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.h=T(this,this.h,this.a[this.b])};f.ad=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.a[this.g]=this.a[this.g]+1&255};
f.Ce=function(){var a=this.a[this.f++];switch(a){case 0:this.l("HALT");this.aa();break;case 1:a=this.f;for(var b="";a<this.a.length;){var c=this.a[a++];if(!c)break;b+=String.fromCharCode(c)}this.f=a;b=b.replace(/%A/g,r(this.h,2)).replace(/%X/g,r(this.w,2)).replace(/%Y/g,r(this.F,2));this.l(b);$a(this);break;default:this.f-=2,this.l("undefined opSim: "+u(a)+" at "+w(this.f)),this.aa()}};f.m=function(){var a=this.a[--this.f];this.l("undefined opcode: "+u(a)+" at "+w(this.f));this.aa()};
z(function(){for(var a=G(document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=H(c);d=new Oa(d);F(d,c)}});function db(a){D.call(this,"C1PROM",a);this.b=this.a=null;this.g=a.size;if(this.o=a.image){a=this.o;var b=qa(this.o);"json"!=b&&"hex"!=b&&(a="http://"+(window?window.location.host:"www.pcjs.org")+"/api/v1/dump?file="+this.o+"&format=bytes");var c=this;x(a,function(a,b,g){eb(c,a,b,g)})}}p(db,D);
db.prototype.ca=function(a,b,c,d){this.a=a;this.v=b;a=c-b+1;this.g||(this.g=a);a!=this.g?La(this,"computer-specified ROM size ("+w(a)+") does not match component-specified size ("+w(this.g)+")"):(d&&(this.s=d,Q(d,b,c,this,this.A)),fb(this))};db.prototype.ia=function(a,b){a&&!this.C.N&&(this.C.N=!0,this.u=O(b,"debugger"))};db.prototype.A=function(a,b){void 0!==b&&(this.u&&U(this.u,this,a,b,this.u.jb,!0),a-=this.v,this.a[this.v+a]=this.b?this.b[a]:0)};
function eb(a,b,c,d){if(d)a.l('Error loading ROM "'+b+'" ('+d+")");else{if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),g=e.bytes;g?a.b=g:a.b=e}catch(k){a.l('Error processing ROM "'+b+'": '+k.message);return}else for(b=c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.b=Array(b.length),c=0;c<b.length;c++)a.b[c]=parseInt(b[c],16);fb(a)}}
function fb(a){if(!J(a))if(!a.o)a.X();else if(a.b&&a.a){var b=a.b.length;if(b!=a.g)La(a,"ROM image size ("+w(b)+") does not match component-specified size ("+w(a.g)+")");else{for(var c=0;c<b;c++)a.a[a.v+c]=a.b[c];a.X()}}}z(function(){for(var a=G(document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=H(c);d=new db(d);F(d,c)}});function gb(a){D.call(this,"C1PRAM",a)}p(gb,D);gb.prototype.ca=function(a){this.a=a;this.X()};
z(function(){for(var a=G(document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=H(c);d=new gb(d);F(d,c)}});
function hb(a){D.call(this,"C1PKeyboard",a);this.C.N=!1;this.Ha=a.model;this.$=8;this.Xa=10;this.Wa=13;this.ba=27;this.Ta=this.$;this.Ua=this.Xa;this.Ia=this.Wa;this.Z=this.ba;this.K=241;this.W=224;this.Ka=3;this.La=15;this.I=1;this.D={};this.D["break"]=this.W;this.D.esc=this.Z;this.D["ctrl-c"]=this.Ka;this.D["ctrl-o"]=this.La;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.Ta]=22E3;this.b[this.Ua]=21504;this.b[this.Ia]=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.K]=1536;this.b[this.Z]=1280;this.b[240]=512;this.b[242]=256;this.b[244]=0;this.reset()}p(hb,D);
f=hb.prototype;f.reset=function(){this.Ma(this.Ha);this.g=this.I;this.ka=0;this.o=[this.I,0,0,0,0,0,0,0];this.L=[];if(this.v)for(var a in this.v)isNaN(+a)||this.v[a]&&clearTimeout(this.v[a]);this.v=[];this.sa=this.A=0;this.ja=-1;this.fa=this.o;this.qa=this.V=0;this.B=""};
f.T=function(a,b,c){if(void 0===this.H[b])switch(b){case "keyDown":return this.H[b]=c,c.onkeydown=function(a){return function(b){return ib(a,b,!0)}}(this),!0;case "keyPress":return this.H[b]=c,c.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.B="";a.g&8?a.g&=-9:c=!jb(a,b);a.u&&M(a.u,a.u.ya)&&a.u.message("keyPress("+u(b)+"): "+(c?"pass":"consume"));return c}}(this),!0;case "keyUp":return this.H[b]=c,c.onkeyup=function(a){return function(b){return ib(a,b,
!1)}}(this),!0;case "break":return this.H[b]=c,c.onclick=function(a){return function(){a.U&&a.U.reset(!0)}}(this),!0;default:if(void 0!==this.D[b])return this.H[b]=c,c.onclick=function(a,b,c){return function(){a.s&&a.s.da();return!jb(a,c)}}(this,b,this.D[b]),!0}return!1};f.ca=function(a,b,c,d){this.a=a;this.ra=b;this.Ya=c-b+1;this.hb=this.ra+this.Ya;d&&(this.s=d,Q(d,b,c,this,this.Gb));this.X()};f.Ma=function(a){this.M=a;this.O=255;600!=this.M&&(this.O=0,this.l("updated keyboard model: "+this.M))};
f.ia=function(a,b){a&&!this.C.N&&(this.C.N=!0,this.U=b,this.u=O(b,"debugger"))};f.X=function(){this.R=(this.gb=y("iOS"))||y("Android");this.u&&M(this.u,this.u.ya)&&this.u.message("mobile keyboard support: "+(this.R?"true":"false")+" ("+window.navigator.userAgent+")");D.prototype.X.call(this)};function kb(a,b){b=b?100:250;a.s&&a.s.L&&(b/=a.s.L);return b}function lb(a,b){!a.A||void 0!==b&&b==a.A||(a.u&&M(a.u,a.u.ya)&&a.u.message("autoClear("+u(a.A)+")"),clearTimeout(a.v[a.A]),mb(a,a.A,!1,4))}
function nb(a,b,c){a.B=b;ob(a,c||300)}function ob(a,b){if(0<a.B.length){var c=a.B.charCodeAt(0);10==c&&(c=13);65<=c&&90>=c&&(c+=32);a.B=a.B.substr(1);jb(a,c)}0<a.B.length&&setTimeout(function(a){return function(){ob(a,b)}}(a),b)}
function ib(a,b,c){var d=!c;b=b.keyCode;c&&(a.sa=b);if(16==b)a.g&=-5,c&&(a.g|=4),b+=224,d=!1;else if(18==b)a.g&=-3,c&&(a.g|=2),b+=224,d=!1;else if(b==a.K-224)a.g&=-65,c&&(a.g|=64),b+=224,d=!1;else if(20==b)c=!c,a.g&=~a.I,c&&(a.g|=a.I),b+=224,d=!1;else if(91==b){a.g&=-9;c&&(a.g|=8);d=!1;var e=!0}else e=9==b?d=!1:b==a.ba||b==a.$?c?!jb(a,b):!1:!0;d&&(a.g&=-9,a.R||b!=a.sa||lb(a));void 0===e&&(e=!mb(a,b,c,2));a.u&&M(a.u,a.u.ya)&&a.u.message("key"+(c?"Down":"Up")+"("+u(b)+"): "+(e?"pass":"consume"));return e}
function jb(a,b){var c=!1;b==a.W?a.U&&(a.U.reset(!0),c=!0):(a.R&&65<=b&&90>=b&&(b+=32),lb(a,b),mb(a,b,!0,0)&&(2==a.s.I?mb(a,b,!1,1):(c=!1,a.v[b]&&(clearTimeout(a.v[b]),c=!0),c=kb(a,c),a.v[a.A=b]=setTimeout(function(a){return function(){mb(a,b,!1,3)}}(a),c),a.u&&M(a.u,a.u.ya)&&a.u.message("keyPressSimulate("+u(b)+"): setTimeout()")),c=!0));a.u&&M(a.u,a.u.ya)&&a.u.message("keyPressSimulate("+u(b)+"): "+(c?"true":"false"));return c}
function mb(a,b,c,d){var e=!1;c||(a.v[b]=null,a.A==b&&(a.A=0));var g=0,k=a.b[b];void 0===k&&(1<=b&&26>=b&&(b+=64,g=a.K),k=a.b[b]);void 0!==k&&(b=k>>12,e=k>>8&15,g||(g=k&255),c?(a.o[b]|=1<<e,a.o[0]=g==a.K?a.o[0]|64:240==g?a.o[0]|4:242==g?a.o[0]|2:a.o[0]&-71):(a.o[b]&=~(1<<e),a.o[0]&=-71,a.o[0]|=a.g&70),c=0==d&&!a.L.length,a.L.push(a.o.slice()),pb(a,c),e=!0);return e}f.S=function(){};f.Gb=function(a){this.ka=this.s.S(a)^this.O;this.V++;pb(this,!1,a)};
function pb(a,b,c){var d=ab(a.s);b||(2==a.s.I?b=void 0!==c&&32<=a.V:(b=d-a.qa,b=0>b||8192<=b));b&&(b=a.L.shift(),void 0!==b&&(a.fa=b),a.V=0,a.qa=d);for(b=d=0;8>b;b++)a.ka&1<<b&&(d|=a.fa[b]);d^=a.O;if(void 0!==c)a.a[c]=d;else if(c=a.ra,d!=a.ja)for(;c<a.hb;c++)a.a[c]=d;a.ja=d}z(function(){for(var a=G(document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=H(c);d=new hb(d);F(d,c)}});
function qb(a,b,c,d){D.call(this,"C1PVideo",a);this.ka=a.model;this.$=a.charCols;this.ba=a.charRows;this.qa=a.screenWidth;this.ra=a.screenHeight;this.B=a.charWidth;this.D=a.charHeight;rb(this);this.A=b;this.O=c;this.o=d;var e;b=["","moz","ms","webkit"];a=a.smoothing;if(!Ca){c={};if(window){e||(e=window.location.search.substr(1));for(var g=/\+/g,k=/([^&=]+)=?([^&]*)/g;d=k.exec(e);)c[decodeURIComponent(d[1].replace(g," "))]=decodeURIComponent(d[2].replace(g," "))}Ca=c}(e=Ca.smoothing||Ca.smoothing)&&
(a="true"==e);if(null!=a)for(e=0;e<b.length;e++)if(c=(c=b[e])?c+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.O[c]){this.O[c]=a;break}}p(qb,D);f=qb.prototype;f.reset=function(a){this.Ma(this.ka);if(this.a)for(var b=this.K;b<this.R;b++)this.a[b]=a?Math.floor(256*Math.random()):32};f.T=function(a,b,c){switch(b){case "refresh":return this.H[b]=c,c.onclick=function(a){return function(){sb(a);Qa(a)}}(this),!0}return!1};
f.ca=function(a,b,c,d){this.a=a;this.K=b;this.ja=c-b+1;this.R=this.K+this.ja;d&&(this.s=d,Ra(d,56832,56832,this,this.S),Q(d,56832,56832,this,this.Ib));this.reset(!0)};function rb(a,b,c,d,e){a.I=void 0!==b?b:a.$;a.sa=void 0!==c?c:a.ba;a.g=a.I*a.sa;a.R=a.K+a.g;a.Z=void 0!==d?d:0;a.fa=void 0!==e?e:c;a.V=Math.floor(a.qa/a.I);a.W=Math.floor(a.ra/a.fa)}f.da=function(){this.A.focus()};
f.Ma=function(a){this.M=a;600==this.M?(rb(this,this.$,this.ba,3,25),1024==this.g&&this.s&&(this.v=this.R+this.g-1,Q(this.s,this.v,this.v,this,this.Eb))):(this.l("updated video model: "+this.M),rb(this,64,32));sb(this);Qa(this)};f.ia=function(a,b){if(a&&!this.C.N&&J(this)){if(this.C.N=!0,this.u=O(b,"debugger"),this.b=O(b,"keyboard"))this.b.T("canvas","keyDown",this.A),this.b.T("canvas","keyPress",this.A),this.b.T("canvas","keyUp",this.A)}else!a&&this.C.N&&(this.C.N=!1)};
f.X=function(){this.B||(this.B=Math.floor(this.o.width/16));this.D||(this.D=Math.floor(this.o.height/16));D.prototype.X.call(this)};f.S=function(a,b){var c=this.s.S(a);void 0!==b&&this.u&&U(this.u,this,a,b,this.u.Za);this.s.a[a]=c&127|(Math.floor(ab(this.s)/8333)&1?128:0)};f.Ib=function(a,b){void 0!==b&&this.u&&U(this.u,this,a,b,this.u.Za)};
f.Eb=function(a,b){if(void 0!==b){this.u&&U(this.u,this,a,b,this.u.Za,!0);this.Ma(540);this.b&&this.b.Ma(542);a=this.s;b=a.K;var c=[],d=Sa(b,this.v,this.v,this,this.Eb);if(0<=d){c.push(b[d][0]);c.push(b[d][1]);b.splice(d,1);var e=65536,g=0;for(d=0;d<b.length;d++)e>b[d][0]&&(e=b[d][0]),g<b[d][1]&&(g=b[d][1]);c.push(e);c.push(g)}4==c.length&&(a.fa=c[2],a.ka=c[3])}};function sb(a){a.L=Array(a.g);for(var b=0;b<=a.g;b++)a.L[b]=-1}
function Qa(a){var b=0;if(a.C.N)for(;b<a.g;){var c=a.a[a.K+b];if(a.L[b]!=c){var d=Math.floor(b/a.I);if(d>=a.Z&&(d-=a.Z,d<a.fa)){var e=c*a.B;a.O.drawImage(a.o,e%a.o.width,Math.floor(e/a.o.width)*a.D,a.B,a.D,b%a.I*a.V,d*a.W,a.V,a.W)}a.L[b]=c}b++}}
z(function(){for(var a=G(document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=H(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","c1pjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.setAttribute("contenteditable","true");e.setAttribute("autocapitalize","off");e.setAttribute("autocorrect","off");e.style.backgroundColor=d.screenColor;
e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(e.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight));c.appendChild(e);var g=new Image,k=e.getContext("2d");e=new qb(d,e,k,g);g.onload=function(a){return function(){a.X()}}(e,d.charSet);g.src=d.charSet;F(e,c)}});
function tb(a){D.call(this,"C1PSerialPort",a);this.C.N=!1;this.D=a.demo;this.reset(!0)}p(tb,D);f=tb.prototype;f.reset=function(a){if(a||this.o!=ub){this.v=-1;this.A=0;this.g="";if(this.D){a=1;if(this.lb){var b=this.lb.match(/\d+/);null!==b&&(a=parseInt(b[0],10))}this.g='10 PRINT "HELLO OSI #'+a+'"\n'}this.B=!0;this.o=vb}};f.start=function(){this.b&&this.D&&(nb(this.b," C\n\n",3E3),setTimeout(function(a){return function(){a.o=wb;nb(a.b,"LOAD\n")}}(this),12E3));this.D=!1};
f.T=function(a,b,c){var d=this;switch(b){case "listSerial":return this.H[b]=c,!0;case "loadSerial":return this.H[b]=c,c.onclick=function(){d.H.listSerial&&x(d.H.listSerial.value,function(a,b,c){xb(d,a,b,c)})},!0;case "mountSerial":return!y("Mobi")&&window&&"FileReader"in window?(this.H[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(){xb(d,b.name,c.result.toString(),
0)};c.readAsText(b);return!1}):c.parentNode.removeChild(c),!0}return!1};f.ca=function(a,b,c,d){this.a=a;this.M=b;this.K=c-b+1;this.I=this.M+this.K;if(this.s=d)Ra(d,b,c,this,this.S),Q(d,b,c,this,this.Hb);this.X()};f.ia=function(a,b){a&&!this.C.N&&(this.C.N=!0,this.U=b,this.b=O(b,"keyboard"),this.u=O(b,"debugger"))};
function xb(a,b,c,d){if(c){a.A=0;a.g=c;a.B=!0;a.o=vb;if(-1!==b.indexOf(".json",b.length-5))try{d="";var e=eval("("+c+")").bytes;for(c=0;c<e.length;c++)d+=String.fromCharCode(e[c]);a.g=d;a.B=!1}catch(g){a.l('Error processing file "'+b+'": '+g.message);return}a.U&&a.b&&a.s.C.oa?(a.l("auto-loading "+b),a.s.da(),"."!=a.g.charAt(0)?(a.o=wb,nb(a.b,"NEW\nLOAD\n")):(a.o=ub,a.U.reset(!0),nb(a.b,"ML"))):a.l(b+" ready to load")}else a.l('Error loading file "'+b+'" ('+d+")")}
f.S=function(a,b){void 0!==b&&(a&1?yb(this):this.g&&!this.A&&yb(this))};f.Hb=function(a,b){void 0!==b&&this.u&&U(this.u,this,a,b,this.u.Je,!0)};function yb(a){if(void 0!==a.g){a.v=-1;if(a.A<a.g.length){var b=a.g.charCodeAt(a.A++)&255;a.B&&10==b&&(b=13);a.v=b}else a.g="",a.A=0,a.o==wb&&a.b&&nb(a.b," \nRUN\n"),a.o=vb;for(b=a.M+0;b<a.I;b+=2)a.a[b]=0<=a.v?zb:Ab;for(b=a.M+1;b<a.I;b+=2)a.a[b]=0<=a.v?a.v:0}}var Ab=0,zb=1,vb=0,wb=1,ub=2;
z(function(){for(var a=G(document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=H(c);d=new tb(d);F(d,c)}});function Bb(a){D.call(this,"C1PDiskController",a);this.C.N=!1;this.reset(!0)}p(Bb,D);f=Bb.prototype;f.reset=function(a){Cb(this);this.b=-1;a&&(this.g=[],this.g[0]={Se:0,kb:40,Mb:!0,Ba:20,na:0,Aa:-1,Ra:[]})};
function Cb(a){a.K={J:64,read:function(){},update:function(a){return function(b){void 0!==b&&(this.J=b);a.B.J&4||V(a,0,this)}}(a)};a.o={J:255,read:function(){this.update()},update:function(a){return function(b){void 0===b?b=a.o.J:Db(a,b,a.A.J);b=(b|190)&-2;if(0<=a.b&&a.g[a.b].Ra.length){var c=a.g[a.b];c.Mb&&(b&=-33);c.na||(b&=-3);10>=--c.Ba&&(0<c.Ba?(b&=-129,Eb(a)):(c.Ba=100,0<=a.b&&(a.g[a.b].Aa=0,Fb(a))))}this.J=b;a.B.J&4&&V(a,0,this)}}(a)};a.B={J:0,read:function(){},update:function(a){return function(b){void 0!==
b&&(this.J=b&-193);V(a,1,this);a.o.update();a.K.update()}}(a)};a.L={J:255,read:function(){},update:function(a){return function(b){void 0!==b&&(this.J=b);a.D.J&4||V(a,2,this)}}(a)};a.A={J:255,read:function(){},update:function(a){return function(b){void 0===b?b=a.A.J:Db(a,a.o.J,b);if(0<=a.b&&a.b<a.g.length){var c=a.g[a.b];c.Ra.length&&a.A.J&8&&!(b&8)&&(b&4?c.na--:c.na++,a.u&&M(a.u,a.u.Da)&&a.u.message("stepping "+(b&4?"down":"up")+" to track "+c.na),c.na>=c.kb&&(c.na=c.kb),0>c.na&&(c.na=0),c.Ba=20,
a.o.update(a.o.J|128),Eb(a))}this.J=b;a.D.J&4&&V(a,2,this)}}(a)};a.D={J:0,read:function(){},update:function(a){return function(b){void 0!==b&&(this.J=b&-193);V(a,3,this);a.A.update();a.L.update()}}(a)};a.O={J:0,read:function(){},update:function(a){return function(b){void 0!==b&&(3==(b&3)&&(a.v.J=14),this.J=b);a.v.update()}}(a)};a.v={J:14,read:function(){},update:function(a){return function(b){void 0===b&&(b=a.v.J);b&=-2;0<=a.b&&0<=a.g[a.b].Aa&&(b|=1);this.J=b;V(a,16,this)}}(a)};a.I={J:0,read:function(a){return function(){Fb(a)}}(a),
update:function(a){return function(b){void 0!==b&&(this.J=b);V(a,17,this)}}(a)};a.R={J:0,read:function(){},update:function(){return function(){}}(a)}}f.T=function(a,b,c){switch(b){case "listDisk":return this.H[b]=c,!0;case "loadDisk":return this.H[b]=c,c.onclick=function(a){return function(){if(a.H.listDisk){var b=a.H.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.l("loading "+pa(b)+"...");x(c,function(b,c,d){Gb(a,b,c,d)})}}}(this),!0}return!1};
f.ca=function(a,b,c,d){this.a=a;this.M=b;if(this.s=d)Ra(d,b,c,this,this.S),Q(d,b,c,this,this.Fb);this.X()};f.ia=function(a,b){a&&!this.C.N&&(this.C.N=!0,this.u=O(b,"debugger"))};
function Gb(a,b,c,d){if(d)a.l("disk load error ("+d+")");else{d=[];a.l("mounting "+b+"...");try{if(d=eval("("+c+")"),d.length)if(d[0].length){var e=d[0];if(void 0===e[0].trackNum)a.l("data error: "+e[0]);else if(a.g[0]){for(c=0;c<e.length;c++){var g,k=e[c],l=k.sectors;if(void 0===(g=k.trackNum)||void 0===l)throw Error("track "+c+" missing data");g!=c&&B("track "+g+" out of order (expected "+c+")");d=[];var h;if(g){Hb(d,k,"trackSig");Ib(d,k);W(d,k,"trackType");for(var m=0;m<l.length;m++){var n=l[m];
var t=n.sectorData;W(d,n,"sectorSig");W(d,n,"sectorNum");W(d,n,"sectorPages");for(h=0;h<t.length;h++)d.push(t[h]);Hb(d,n,"sectorEndSig")}}else for(n=l[0],t=n.sectorData,W(d,k,"trackLoad",2),W(d,n,"sectorPages"),h=0;h<t.length;h++)d.push(t[h]);e[g].Db=d;a.u&&M(a.u,a.u.Da)&&a.u.message("track "+g+": "+d.length+" bytes")}a.g[0].Ra=e;a.l("mount of "+b+" complete")}else a.l("no available drives")}else a.l("no tracks: "+b);else a.l("no data: "+b)}catch(da){a.l("disk data error: "+da.message)}}}
function Ib(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 W(a,b,c,d){b=b[c];if(void 0===b)throw Error("missing binary value: "+c);2==d&&a.push(b>>8&255);a.push(b&255)}function Hb(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 Jb(a,b,c){b&=63;16>b?b&=3:32>b&&(b&=17);switch(b){case 0:a=a.B.J&4?a.o:a.K;break;case 1:a=a.B;break;case 2:a=a.D.J&4?a.A:a.L;break;case 3:a=a.D;break;case 16:a=c?a.O:a.v;break;case 17:a=a.I;break;default:a=a.R}return a}f.S=function(a,b){if(void 0!==b){var c=Jb(this,a-this.M,!1);this.u&&U(this.u,this,a,b,this.u.Da,!1,c.Cb);c.read()}};
f.Fb=function(a,b){if(void 0!==b){var c=this.s.S(a),d=Jb(this,a-this.M,!0);if(this.u&&M(this.u,this.u.Da|this.u.jb)&&(U(this.u,this,a,b,this.u.Da,!0,d.Cb),d.Kb))for(a=128,b=d.J^c;b&&a;)b&a&&this.u.message(" changed "+d.Cb+"."+d.Kb[a]+" to "+(c&a?"1":"0")),a>>=1;d.update(c)}};function Db(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&32||(d|=2),a.o.J&64||(d|=1));a.b!=d&&(a.b=d,a.v.update())}function Eb(a){0<=a.b&&(a.g[a.b].Aa=-1,a.I.update(255),a.v.update())}
function Fb(a){if(0<=a.b){var b=a.g[a.b];var c=b.Ra[b.na];void 0!==c&&(0<=b.Aa&&b.Aa<c.Db.length?(b.Ba=100,b=c.Db[b.Aa++],a.I.update(b),a.v.update()):(b.Ba=10,Eb(a)))}}function V(a,b,c){a.s.a[b+a.M]=c.J}z(function(){for(var a=G(document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=H(c);d=new Bb(d);F(d,c)}});
function Kb(a){D.call(this,"C1PDebugger",a);this.u=this;this.L=-1;this.ta=0;this.fb=null;this.Sa=!1;this.ha=0;this.pa=[];this.va=[];this.xa=[];this.Ja=0;this.wa=[];this.B=[];this.jb=1;this.ya=16;this.Za=32;this.Da=64;this.Je=128;this.ma=this.Z=0;this.Qa={port:1,kbd:16,video:32,disk:64,serial:128};this.Oa=28;this.$a=56;this.Fa="ADC AND ASL BCC BCS BEQ BIT BMI BNE BPL BRK BVC BVS CLC CLD CLI CLV CMP CPX CPY DEC DEX DEY EOR INC INX INY JMP JSR LDA LDX LDY LSR NOP ORA PHA PHP PLA PLP ROL ROR RTI RTS SBC SEC SED SEI STA STX STY TAX TAY TSX TXA TXS TYA SIM .DB".split(" ");
this.W=["HLT","MSG"];Lb(this,!0);this.ga=[[10],[34,1,this.D],[this.$a,1],[],[],[34,1,this.b],[2,1,this.b],[],[36],[34,1,this.v],[2,0,this.O],[],[],[34,2,this.P],[2,2,this.P],[],[9,1,this.ea],[34,1,this.I],[],[],[],[34,1,this.g],[2,1,this.g],[],[13],[34,2,this.A],[],[],[],[34,2,this.o],[2,2,this.o],[],[this.Oa,2,this.Na],[1,1,this.D],[],[],[6,1,this.b],[1,1,this.b],[39,1,this.b],[],[38],[1,1,this.v],[39,0,this.O],[],[6,2,this.P],[1,2,this.P],[39,2,this.P],[],[7,1,this.ea],[1,1,this.I],[],[],[],[1,
1,this.g],[39,1,this.g],[],[44],[1,2,this.A],[],[],[],[1,2,this.o],[39,2,this.o],[],[41],[23,1,this.D],[],[],[],[23,1,this.b],[32,1,this.b],[],[35],[23,1,this.v],[32,0,this.O],[],[27,2,this.Na],[23,2,this.P],[32,2,this.P],[],[11,1,this.ea],[23,1,this.I],[],[],[],[23,1,this.g],[32,1,this.g],[],[15],[23,2,this.A],[],[],[],[23,2,this.o],[32,2,this.o],[],[42],[0,1,this.D],[],[],[],[0,1,this.b],[40,1,this.b],[],[37],[0,1,this.v],[40,0,this.O],[],[27,2,this.ib],[0,2,this.P],[40,2,this.P],[],[12,1,this.ea],
[0,1,this.I],[],[],[],[0,1,this.g],[40,1,this.g],[],[46],[0,2,this.A],[],[],[],[0,2,this.o],[40,2,this.o],[],[],[47,1,this.D],[],[],[49,1,this.b],[47,1,this.b],[48,1,this.b],[],[22],[],[53],[],[49,2,this.P],[47,2,this.P],[48,2,this.P],[],[3,1,this.ea],[47,1,this.I],[],[],[49,1,this.g],[47,1,this.g],[48,1,this.V],[],[55],[47,2,this.A],[54],[],[],[47,2,this.o],[],[],[31,1,this.v],[29,1,this.D],[30,1,this.v],[],[31,1,this.b],[29,1,this.b],[30,1,this.b],[],[51],[29,1,this.v],[50],[],[31,2,this.P],[29,
2,this.P],[30,2,this.P],[],[4,1,this.ea],[29,1,this.I],[],[],[31,1,this.g],[29,1,this.g],[30,1,this.V],[],[16],[29,2,this.A],[52],[],[31,2,this.o],[29,2,this.o],[30,2,this.A],[],[19,1,this.v],[17,1,this.D],[],[],[19,1,this.b],[17,1,this.b],[20,1,this.b],[],[26],[17,1,this.v],[21],[],[19,2,this.P],[17,2,this.P],[20,2,this.P],[],[8,1,this.ea],[17,1,this.I],[],[],[],[17,1,this.g],[20,1,this.g],[],[14],[17,2,this.A],[],[],[],[17,2,this.o],[20,2,this.o],[],[18,1,this.v],[43,1,this.D],[],[],[18,1,this.b],
[43,1,this.b],[24,1,this.b],[],[25],[43,1,this.v],[33],[],[18,2,this.P],[43,2,this.P],[24,2,this.P],[],[5,1,this.ea],[43,1,this.I],[],[],[],[43,1,this.g],[24,1,this.g],[],[45],[43,2,this.A],[],[],[],[43,2,this.o],[24,2,this.o],[]]}p(Kb,D);f=Kb.prototype;
f.T=function(a,b,c){var d=this;switch(b){case "debugInput":return this.R=this.H[b]=c,this.R.focus(),c.onkeypress=function(a,c){return function(d){13==d.keyCode&&(b=c.value,c.value="",Mb(a,b))}}(this,c),!0;case "debugEnter":return this.H[b]=c,va(c,function(){return d.R?(b=d.R.value,Mb(d,b),!0):!1}),!0;case "step":return this.H[b]=c,va(c,function(a){var b=!1;K(d,!0)||(L(d,!0),b=d.step(a?1:0),L(d,!1));return b}),!0}return!1};
f.ca=function(a,b,c){this.a=a;this.M=b;this.sa=c-b+1;this.Ca=this.M+this.sa;this.X()};f.ia=function(a,b){a&&!this.C.N&&(this.C.N=!0,this.s=O(b,"cpu"))};f.da=function(){this.R.focus()};
function Lb(a,b){a.O=0;a.v=1;a.o=2;a.A=3;a.Na=4;a.ib=5;a.g=6;a.V=7;a.D=8;a.I=9;a.P=10;a.b=11;a.ea=a.Na;var c="";if(b)for(a.la="A #$nn $nnnn,X $nnnn,Y $nnnn ($nnnn) $nn,X $nn,Y ($nn,X) ($nn),Y $nnnn $nn".split(" "),b=0;b<a.la.length;b++){var d=a.la[b];c+="("+d.replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/nnnn/g,"[0-9A-F][0-9A-F][0-9A-F][0-9A-F]?").replace(/nn/g,"[0-9A-F][0-9A-F]?").replace(/\$/g,"\\$")+"|)"}else for(a.la="A nn [nnnn+X] [nnnn+Y] nnnn [nnnn] [nn+X] [nn+Y] [[nn+X]] [[nn]+Y] [nnnn] [nn]".split(" "),
b=0;b<a.la.length;b++)d=a.la[b],c+="("+d.replace(/\[/g,"\\[").replace(/]/g,"\\]").replace(/nnnn/g,"[0-9A-F][0-9A-F][0-9A-F][0-9A-F]?").replace(/nn/g,"[0-9A-F][0-9A-F]?").replace(/\+/g,"\\+")+"|)";a.Ke=new RegExp(c);a.Lb=[27,a.Oa,9,7,11,12,3,4,8,5]}f.aa=function(){this.s.aa()};function U(a,b,c,d,e,g,k){(a.ma&e)==e&&(e=a.s.S(c),a.message(b.id+"."+(g?"setByte":"getByte")+"("+w(c)+")"+(void 0!==d?" @"+w(d):"")+": "+(k?k+"=":"")+u(e)))}f.message=function(a){this.l(a);$a(this.s)};f.Nb=function(){this.l("Type ? for list of debugger commands\n")};
f.ua=function(){if(!Nb(this))return!1;this.s.ua();return!0};f.step=function(a){if(!Nb(this))return!1;try{var b=this.s.step(a)}catch(c){b=void 0,La(this.s,c.stack||c.message)}void 0!==b&&this.L++;this.s.update(!0);this.update(!0);return b};f.update=function(a){this.ta=this.s.f;a||this.za?Ob(this):Pb(this)};function Nb(a){a.s&&J(a.s)&&!K(a.s)?(a=a.s,a.C.error?(a.l(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}
f.reset=function(){var a;this.wa.length||(this.wa=Array(1E3));for(a=0;a<this.wa.length;a++)this.wa[a]=-1;this.B.length||(this.B=Array(256));for(a=0;a<this.B.length;a++)this.B[a]=[a,0];this.L&&this.update();this.L=0};f.start=function(){this.za||this.l("running")};f.stop=function(a,b){if(!this.za&&(this.l("stopped"),b)){var c=ta();this.l(c-a+"ms ("+b+" cycles)")}this.update();this.da();this.za||(this.L=0);Qb(this,this.s.f)};function Rb(a,b){return a+(b<<24>>24)}
f.S=function(a){if(a>=this.M&&a<this.Ca){Ta(this.s,a);var b=this.a[this.M+a];b&=255}return b};function Sb(a,b,c){b<a.M||b>=a.Ca?a.l("invalid address: "+w(b)):(a.a[a.M+b]=c&255,Ua(a.s,b),a.s.update())}function Tb(a,b){X(a.pa,b,void 0)||a.pa.push(b);return!0}function X(a,b,c){for(var d=!1,e=0;e<a.length;e++)if(a[e]==b){c&&a.splice(e,1);d=!0;break}return d}function Ub(a,b){void 0!==b&&(Qb(a,a.K),Tb(a,b)&&(a.K=b))}function Qb(a,b){void 0!==a.K&&b==a.K&&X(a.pa,a.K,!0)&&(a.K=void 0);a.za=!1}
function Za(a,b,c,d){for(var e=!1,g=0;g<c.length;g++)if(c[g]==b){b!=a.K&&a.l("breakpoint hit: "+w(b)+" ("+d+")");e=!0;break}return e}
function Vb(a,b,c){var d=r(b,4),e=a.S(b++),g=void 0===e?0:e,k=a.ga[g],l=[],h=void 0===k[1]?0:k[1];do{d+=" "+r(g,2);if(!h--)break;g=a.S(b++);if(void 0===g)break;l.push(g)}while(1);void 0===k[0]&&(k=[57,1,a.v],l.push(e));d=(d+" ").substr(0,15);d+=a.Fa[k[0]];var m=null;if(void 0!==k[2]){h=k[2];m=a.la[h];if(1==k[1]&&h==a.ea)m=m.replace(/nnnn/,r(Rb(b,g=l.pop()),4));else for(;l.length;)m=m.replace(/nn/,r(g=l.pop(),2));h==a.v&&1==k[1]&&32<=g&&128>g&&(m+=" ;'"+String.fromCharCode(g)+"'")}if(e==a.s.$a&&
(g<a.W.length&&(m=a.W[g]),g==a.s.Le)){h=0;for(m='"';g=a.S(b++);)16>h?m+=String.fromCharCode(g):16==h&&(m+="\u2026"),h++;m+='"'}m&&(d+=" "+m);c&&(d=(d+" ").substr(0,30),d+=";"+c.toString());a.$=b;return d}
function Y(a,b){var c=a.ta;if(void 0!==b){var d=16;"$"==b.charAt(0)?b=b.substr(1):"0x"==b.substr(0,2)?b=b.substr(2):"."==b.charAt(b.length-1)&&(d=10,b=b.substr(0,b.length-1));c=parseInt(b,d);isNaN(c)&&(a.l("invalid base-"+d+" address: "+b),c=void 0)}void 0!==c&&(c<a.M||c>=a.Ca)&&(a.l("address out of range: "+r(c)),c=void 0);return c}
function Wb(a,b){if("?"==b)a.l("\nfrequency commands:"),a.l("clear\tclear all frequency counts");else{var c=0;if(a.B)if("clear"==b){for(b=0;b<a.B.length;b++)a.B[b]=[b,0];a.l("frequency data cleared");c++}else if(void 0!==b)a.l("unknown frequency command: "+b),c++;else{var d=a.B.slice();d.sort(function(a,b){return b[1]-a[1]});for(b=0;b<d.length;b++){var e=d[b][0],g=d[b][1];g&&(a.l(a.Fa[a.ga[e][0]]+" ("+u(e)+"): "+g+" times"),c++)}}c||a.l("no frequency data available")}}
function Ob(a,b,c,d){var e=Y(a,b);if(void 0!==e){void 0===d&&(d=1);b=a.Ca;if(void 0!==c){b=Y(a,c);if(void 0===b||b<e)return;if(256<b-e){a.l("range too large");return}b++;d=-1}for(e!=a.ta&&a.l();d--&&e<b;)c=Vb(a,e,K(a,!1)||a.za?a.L:0),a.l(c),a.ta=e=a.$}}
function Pb(a,b){if(b&&"?"==b[1])a.l("\nregister commands:"),a.l("r to display all"),a.l("r [target=value] to modify"),a.l("supported targets:"),a.l("A,X,Y,S,PC and flags C,Z,D,V,N");else{var c=!0;if(void 0!==b&&1<b.length){c=!1;var d=b[1],e=d.indexOf("=");if(0<e)b=d.substr(e+1),d=d.substr(0,e);else if(2<b.length)b=b[2];else{a.l("missing value for "+b[1]);return}e=parseInt(b,16);if(isNaN(e)){a.l("invalid value: "+b);return}switch(d.toUpperCase()){case "A":a.s.h=e&255;break;case "X":a.s.w=e&255;break;
case "Y":a.s.F=e&255;break;case "C":a.s.c=e?256:0;break;case "Z":a.s.j=e?0:1;break;case "D":e?bb(a.s):cb(a.s);break;case "V":e?(d=a.s,d.v=0,d.A=128):(d=a.s,d.v=0,d.A=0);break;case "N":a.s.i=e?128:0;break;case "S":if(256!=(e&-256)){a.l("invalid stack pointer: "+b);return}a.s.G=e;break;case "PC":c=!0;a.s.f=e&65535;a.ta=a.s.f;break;default:a.l("unknown register: "+d);return}a.s.update()}a.l("A="+r(a.s.h,2)+" X="+r(a.s.w,2)+" Y="+r(a.s.F,2)+" P="+r(Xa(a.s),2)+" S="+r(a.s.G,4)+" PC="+r(a.s.f,4));c&&Ob(a,
r(a.ta=a.s.f,4))}}function Xb(a,b){b=void 0===b?1:parseInt(b,10);var c=1==b?0:1;ua(b,function(a){return function(){return L(a,!0)&&a.step(c)}}(a),function(a){return function(){L(a,!1)}}(a))}
function Mb(a,b){b.length||(a.Sa?(a.l("ended assemble @"+r(a.ha,4)),a.ta=a.ha,a.Sa=!1):a.fb&&(b=a.fb));if(J(a)&&!K(a,!0)&&0<b.length){a.Sa?b="a "+r(a.ha,4)+" "+b:1<b.length&&1!=b.indexOf(" ")&&(b=b.charAt(0).toLowerCase()+" "+b.substr(1));var c=b.split(" ");a.fb=c[0];switch(c[0].toLowerCase()){case "a":var d=Y(a,c[1]);if(void 0!==d)if(a.ha=d,void 0===c[2])a.l("begin assemble @"+w(a.ha)),a.Sa=!0,a.s.update();else{b=c[2];var e=c[3];c=a.ha;d=[];if(void 0!==b){var g;b=b.toUpperCase();"?"==b.charAt(b.length-
1)&&(e="?",b=b.substr(0,b.length-1));for(g=0;g<a.Fa.length&&b!=a.Fa[g];g++);g==a.Fa.length&&(a.l("unknown operation: "+b),g=-1);var k="",l;if(0<=g&&void 0!==e)if(k=e.toUpperCase(),"?"==k){for(e=l=0;e<a.ga.length;e++)a.ga[e][0]===g&&(l||a.l("supported opcodes:"),a.l(" "+r(e,2)+": "+b+(void 0!==a.ga[e][2]?" "+a.la[a.ga[e][2]]:"")),l++);g=-1}else if(l=k.match(a.Ke),null!==l&&l[0]==k){for(e=1;e<l.length;e++)if(l[e]==k)if(void 0===h)var h=e-1;else{a.l("too many operand matches (both "+a.la[h]+" and "+
a.la[e-1]+")");g=-1;break}h==a.Na&&0>a.Lb.indexOf(g)&&(h=a.P);h==a.ib&&27!=g&&(h=a.P)}else a.l("unknown operand: "+k),g=-1;if(0<=g){l=-1;for(e=0;e<a.ga.length;e++)if(a.ga[e][0]===g&&a.ga[e][2]===h)if(0>l)l=e;else{a.l("too many instruction matches (both "+u(l)+" and "+u(e)+")");l=-2;break}if(0<=l){if(d.push(l),void 0!==h)if(b=a.ga[l][1],k=k.match(/[0-9A-F]+/),null!==k)for(k=parseInt(k[0],16),1==b&&h==a.ea&&(k-=c+2,-128>k||127<k)&&(a.l("branch out of range ("+k+")"),d=[],b=0),e=0;e<b;e++)d.push(k&255),
k>>>=8;else b&&a.l("instruction missing "+b+" bytes")}else a.l("unknown instruction: "+b+" "+k+"")}}h=d;if(h.length){for(c=0;c<h.length;c++)Sb(a,a.ha+c,h[c]);a.l(Vb(a,a.ha));a.ha+=h.length}}break;case "b":h=c[1];c=c[2];if(void 0===h||"?"==h)a.l("\nbreakpoint commands:"),a.l("bp [a]\tset exec breakpoint at [a]"),a.l("br [a]\tset read breakpoint at [a]"),a.l("bw [a]\tset write breakpoint at [a]"),a.l("bc [a]\tclear breakpoint at [a]"),a.l("bl\tlist all breakpoints");else if(void 0===c&&1<h.length&&
(c=h.substr(1),h=h.charAt(0)),"l"==h){h=0;d=a.pa;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+w(d[c])+" (exec)"),h++;d=a.va;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+w(d[c])+" (read)"),h++;d=a.xa;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+w(d[c])+" (write)"),h++;h||a.l("no breakpoints")}else void 0===c?a.l("missing breakpoint address"):"c"==h&&"*"==c?(a.pa=[],a.va=[],a.xa=[],a.l("all breakpoints cleared")):(c=Y(a,c),void 0!==c&&("p"==h?Tb(a,c)?a.l("breakpoint enabled: "+w(c)+" (exec)"):
a.l("breakpoint not set: "+w(c)):"c"==h?X(a.pa,c,!0)?a.l("breakpoint cleared: "+w(c)+" (exec)"):X(a.va,c,!0)?a.l("breakpoint cleared: "+w(c)+" (read)"):X(a.xa,c,!0)?a.l("breakpoint cleared: "+w(c)+" (write)"):a.l("breakpoint missing: "+w(c)):"r"==h?(X(a.va,c,void 0)||a.va.push(c),a.l("breakpoint enabled: "+w(c)+" (read)")):"w"==h?(X(a.xa,c,void 0)||a.xa.push(c),a.l("breakpoint enabled: "+w(c)+" (write)")):a.l("unknown breakpoint command: "+h)));break;case "d":h=c[1];d=c[2];if("?"==h)a.l("\ndump commands:"),
a.l("d [a] [#] dump # lines of memory");else if(h=Y(a,h),void 0!==h){c=0;void 0!==d&&("l"==d.charAt(0)&&(d=d.substr(1)),c=parseInt(d,10));c||(c=1);for(d=0;d<c;d++){k=b="";e=h;for(g=0;8>g&&h<a.Ca;g++)l=a.S(h),void 0===l&&(l=0),b+=r(l,2)+" ",k+=32<=l&&128>l?String.fromCharCode(l):".",h++;a.l(r(e,4)+" "+b+k)}a.ta=h}break;case "e":h=c[1];if(void 0===h)a.l("missing address");else if(h=Y(a,h),void 0!==h)for(d=2;d<c.length;d++)b=parseInt(c[d],16),Sb(a,h++,b);break;case "f":Wb(a,c[1]);break;case "g":h=
c[1];void 0!==h&&Ub(a,Y(a,h));a.ua()||a.s.da();break;case "h":a.aa();break;case "o":if(void 0===c[1]||"?"==c[1])a.l("\noption commands:"),a.l("max\trun at maximum speed"),a.l("fast\trun faster (up to "+a.s.Ea+"Mhz)"),a.l("slow\trun at normal speed (1Mhz)"),a.l("classic\tuse classic operand syntax"),a.l("modern\tuse modern operand syntax"),a.l("msg\tenable message categories");else switch(h=c[1],h){case "slow":P(a.s,a.s.Pa);break;case "fast":P(a.s,a.s.Me);break;case "max":P(a.s,a.s.Ne);break;case "classic":Lb(a,
!0);a.l("classic syntax enabled");break;case "modern":Lb(a,!1);a.l("modern syntax enabled");break;case "msg":h=0;void 0!==c[2]&&("all"==c[2]?h=255:void 0!==a.Qa[c[2]]&&(h=a.Qa[c[2]]),h&&("on"==c[3]?a.ma|=h:"off"==c[3]&&(a.ma&=~h)));for(d in a.Qa)if(void 0===c[2]||"all"==c[2]||c[2]==d)h=a.Qa[d],a.l(d+" messages: "+(a.ma&h?"on":"off"));break;default:a.l("unknown option: "+h)}break;case "p":k=c[1];h=10;c=a.Ja;if(d=a.wa){b=void 0===k?a.Ob:parseInt(k,10);void 0===b&&(b=10);b>d.length&&(a.l("note: only "+
d.length+" available"),b=d.length);void 0!==k&&(a.eb=0,a.l(b+" instructions earlier:"));k=a.eb?a.eb:1;c-=b;for(0>c&&(c=d.length-1);h&&c!=a.Ja;){e=d[c];if(0>e)break;a.l(Vb(a,e,k++));++c==d.length&&(c=0);h--;b--}a.Ob=b;a.eb=k}10==h&&a.l("no history available");break;case "r":Pb(a,c);break;case "s":a.S(a.s.f)==a.s.Oa?(Ub(a,a.s.f+3),a.za=!0,a.ua()||a.s.da()):Xb(a);break;case "t":Xb(a,c[1]);break;case "u":Ob(a,c[1],c[2],8);break;case "?":case "help":a.l("\ncommands:\n?\thelp\na [#]\tassemble\nb [#]\tbreakpoint\nd [#]\tdump memory\ne [#]\tedit memory\nf\tdump frequencies\ng [#]\trun to [#]\nh\thalt\no\toptions\np [#]\tdump history\nr\tdump/edit registers\ns\tstep over instruction\nt [#]\tstep instruction(s)\nu [#]\tunassemble");
a.l("note: frequency and history commands operate only when breakpoints are set");break;default:a.l("unknown command: "+b)}}}z(function(){for(var a=G(document,"c1pjs","debugger"),b=0;b<a.length;b++){var c=a[b],d=H(c);d=new Kb(d);F(d,c)}});function Z(a,b){D.call(this,"C1PComputer",a);this.Y=b}p(Z,D);Z.prototype.reset=function(a){var b=null,c;for(c in this.Y)for(var d=0;d<this.Y[c].length;d++){var e=this.Y[c][d];e&&e.reset&&(e.reset(),"cpu"==c&&(b=e))}b&&(b.update(),a&&b.ua())};
Z.prototype.start=function(){for(var a in this.Y)if("cpu"!=a)for(var b=0;b<this.Y[a].length;b++){var c=this.Y[a][b];c&&c.start&&c.start()}};Z.prototype.stop=function(a,b){for(var c in this.Y)if("cpu"!=c)for(var d=0;d<this.Y[c].length;d++){var e=this.Y[c][d];e&&e.stop&&e.stop(a,b)}};Z.prototype.T=function(a,b,c){switch(b){case "reset":return this.H[b]=c,c.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function O(a,b){return a.Y[b]?a.Y[b][0]:null}
function Yb(a){var b=null,c;for(c in a.Y)for(var d=0;d<a.Y[c].length;d++){var e=a.Y[c][d];if(e){if(!J(e)){J(e,function(a){return function(){Yb(a)}}(a));return}"cpu"==c?b=e:e.ia&&e.ia(!0,a)}}a.X();a.l("C1Pjs v1.37.1\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>");b&&b.ia(!0,a)}
z(function(){for(var a=G(document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=H(c),e,g={},k,l=0,h=0,m=0;m<d.modules.length;m++){var n=d.modules[m];if(!m){if("cpu"!=n.type)break;l=n.start;h=n.end;k=Array(h+1-l);for(e=l;e<k.length;e++)k[e]=0}if(e=Ea(n.refID,d.id)){var t=n.type;void 0===g[t]&&(g[t]=[]);g[t].push(e);e.ca&&void 0!==n.start&&e.ca(k,n.start,n.end,g.cpu[0])}else{B('no component for <module refid="'+n.refID+'">');return}}if(!k){B('<module type="cpu"> definition must appear first in the <computer> specification');
break}if(e=Ea("debugger",d.id))g["debugger"]=[e],e.ca&&e.ca(k,l,h,g.cpu[0]);l=new Z(d,g);if(h=Ea("panel",d.id))if(g.panel=[h],h.H.print){e=void 0;d=d.id;g=[];d&&(d=0<(e=d.indexOf("."))?d.substr(0,e+1):"");for(e=0;e<E.length;e++)m=E[e],d&&m.id.indexOf(d)||g.push(m);d=g;for(g=0;g<d.length;g++)e=d[g],e!=h&&(e.Va=h.Va,e.print=h.print,e.l=h.l)}F(l,c);Yb(l)}});var Zb=0;
function $b(a,b,c,d,e,g){e("Loading "+a+"...");x(a,function(k,l,h){h?(l||(l="unable to load "+a+" ("+h+")"),g(l,null)):ac(l,a,b,c,d,e,g)})}
function ac(a,b,c,d,e,g,k){function l(a,g){if(g)k(g,null);else{c&&(N[c]&&b&&(N[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+'"':"")));e||(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{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(n){g=null,a=n.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,g)}}a?e?bc(a,g,l):l(a,null):k("no data"+(b?" for file: "+
b:""),null)}
function bc(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");x(e,function(g,k,l){if(l||!k)c(a,"unable to resolve XML reference: "+d[0]+" ("+l+")");else{if(g=d[3])if(l=k.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var h=l[0],m,n=/( [a-z]+=)(['"])(.*?)\2/gi;m=n.exec(g);)h=0>h.toLowerCase().indexOf(m[1].toLowerCase())?h.replace(">",m[0]+">"):h.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);l[0]!=h&&(k=k.replace(l[0],h))}else{c(a,"missing <"+d[1]+"> in "+
e);return}k=k.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(d[0],k);bc(a,b,c)}})}else c(a,null)}
function cc(a,b,c){function d(a){if(void 0===k){var b=g&&G(g,"machine-warning");k=b&&b[0]||g}k&&(k.innerHTML=ra(a))}function e(a){d("Error: "+a);l&&(--Zb||C(!0));l=!1}var g,k,l=!0;Zb++;N[a]={};try{if(g=document.getElementById(a)){var h;if("object"==typeof resources&&(h=resources.css)){var m=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css";n.styleSheet?n.styleSheet.cssText=h:n.appendChild(document.createTextNode(h));m.appendChild(n)}c||(c=
"/versions/c1pjs/1.37.1/components.xsl");h=function(h,k){k?$b(c,null,null,!1,d,function(h,l){l?(N[a]&&c&&(N[a][c]=h),d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=k.transformNode(l))?(g.outerHTML=l,--Zb||C(!0)):e("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),--Zb||C(!0)):e("invalid machine element: "+
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser")):e(h)}):e(h)};"<"!=b.charAt(0)?$b(b,a,void 0,!0,d,h):ac(b,null,a,void 0,!1,d,h)}else e("missing machine element: "+a)}catch(t){e(t.message)}return l}window.embedC1P=function(a,b,c){C(!1);return cc(a,b,c)};
window.commandMachine=function(a,b,c,d,e,g){if("script"==e){d=!1;c+=".machine";if(!g)delete I[c],d=!0;else if("string"==typeof g&&!I[c]){d=!0;e=I;for(var k=c,l=g.length,h=[],m=[],n="",t=null,da=0;da<l;da++){var v=g[da];if('"'==v||"'"==v)t&&v!=t?n+=v:(t?t=null:t=v,n&&(m.push(n),n=""));else{if(!t){if("\r"==v||"\n"==v)v=";";if(" "==v||"\t"==v||";"==v){n&&(m.push(n),n="");";"==v&&m.length&&(h.push(m),m=[]);continue}}n+=v}}n&&m.push(n);m.length&&h.push(m);e[k]=h;Ga(c)||(d=!1)}return d?(b&&(a.disabled=
!0),!0):!1}if(d&&(k=Fa(d,c+".machine"))&&(l=k.exports)&&(l=l[e]))return l.call(k,g)?(b&&(a.disabled=!0),!0):!1;console.log("unimplemented: commandMachine('"+c+"','"+d+"','"+e+"','"+g+"')");return!1};window.enableEvents=C;window.sendEvent=Aa;})();//# sourceMappingURL=/versions/c1pjs/1.37.1/c1p-dbg.map

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,160 @@
(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,aa="function"==typeof Object.create?Object.create:function(a){function b(){}b.prototype=a;return new b},ba;if("function"==typeof Object.setPrototypeOf)ba=Object.setPrototypeOf;else{var ca;a:{var da={cb:!0},ea={};try{ea.__proto__=da;ca=ea.cb;break a}catch(a){}ca=!1}ba=ca?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+" is not extensible");return a}:null}var fa=ba;
function p(a,b){a.prototype=aa(b.prototype);a.prototype.constructor=a;if(fa)fa(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.ge=b.prototype}
for(var ha="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},t="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,u=["Math","trunc"],ia=0;ia<u.length-1;ia++){var ja=u[ia];ja in t||(t[ja]={});t=t[ja]}var ka=u[u.length-1],la=t[ka],ma=la?la:function(a){a=Number(a);if(isNaN(a)||Infinity===a||-Infinity===a||0===a)return a;var b=Math.floor(Math.abs(a));return 0>a?-b:b};
ma!=la&&null!=ma&&ha(t,ka,{configurable:!0,writable:!0,value:ma});function v(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=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+=0<=h&&9>=h?48:55;f=String.fromCharCode(h)+f;a=Math.trunc(a/16)}g--}return(void 0===c?"":c)+f}
function na(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function oa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function pa(a){return a.replace(/[&<>"']/g,function(a){return qa[a]})}var qa={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"},ra=Date.now||function(){return+new Date};
function w(a,b){var c=!0;c=void 0===c?!1:c;var 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 x(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 sa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function y(a){z.init.push(a)}
function A(a){if(B)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){C(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function D(a){!B&&a?(B=!0,ta&&ua("init"),va&&ua("show")):B=a}function ua(a){z[a]&&A(z[a])}var E=null,z={init:[],show:[],exit:[]},ta=!1,va=!1,B=!0;sa("onload",function(){ta=!0;A(z.init)});sa("onpageshow",function(){va=!0;A(z.show)});sa(x("iOS")?"onpagehide":x("Opera")?"onunload":"onbeforeunload",function(){A(z.exit)});
function F(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.exports={};this.A=this.bindings={};a=this.id.indexOf(".");0>a||(this.ya=this.id.substr(0,a));this.u={ready:!1,qa:!1,ta:!1,fe:!1,I:!1,de:!1,error:!1};this.sa=null;this.u.error=!1;this.G=this.J=null;G.push(this)}function C(a){window&&window.alert(a)}function wa(a,b){a.value+=b;b=a.value;8192<b.length&&(a.value=b.substr(b.length-4096));a.scrollTop=a.scrollHeight}
function H(a,b){b=I(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 k=h.split(" "),l=0;l<k.length;l++)switch(h=k[l],h){case "c1pjs-binding":(h=J(g))&&h.binding&&a.L(h.type,h.binding,g,h.value),l=k.length}}}}function K(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<G.length;c++)if(G[c].id===a)return G[c]}return null}
function xa(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<G.length;d++)if(c)c==G[d]&&(c=null);else if(!(a!=G[d].type||b&&G[d].id.indexOf(b)))return G[d]}return null}function J(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){C(c.message+" ("+a+")")}return b}
function I(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)f.test(a[b].className)&&c.push(a[b]);return c}
function ya(a){for(var b=!0,c=L[a];c&&c.length;){var d=c.splice(0,1)[0],f=d[0],g=null;0<=za.indexOf(f)&&(g=function(){return function(){ya(a)}}());var h=Aa[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{b=!1;var k=xa(d[1],a);if(k)if(h=Ba[f])b=h(k,d[2],d[3]);else{var l=k.exports;if(l&&(h=l[f]))if(b=!0,!g)b=h.call(k,d[2],d[3]);else if(!h.call(k,g,d[2],d[3]))break}}if(!b){C("Script error: '"+f+(h?" failed":" unrecognized"));break}}c&&!c.length&&delete L[a];return b}e=F.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.A[b]||(this.A[b]=c,c.onclick=function(a){return function(){a.A.print&&(a.A.print.value="")}}(this)),!0;case "print":return this.A[b]||(this.A[b]=c,this.ra=function(a){this.F(a,this.type);return!0},c.value="",this.print=function(a){return function(b){wa(a,b)}}(c),this.F=function(a,b){return function(a,c){a||(a="");if(c!=Ca||"..."!=a.slice(-3))c&&(a=c+": "+a),wa(b,a+"\n");else{c=b.value;var d=c.lastIndexOf(a);0>d?c+=a+"\n":c=c.substr(0,d)+(a+".")+
c.substr(d+a.length);8192<c.length&&(c=c.substr(c.length-4096));b.value=c;b.scrollTop=b.scrollHeight}}}(this,c)),!0;default:return!1}};e.log=function(){};e.print=function(){};e.F=function(){};e.status=function(a){this.F(this.type+": "+a)};e.ra=function(a,b,c){if(!b){var d=xa("Computer",this.id);if(d&&d.u.de)return console.log("ignoring notice during unload: "+a),!1}c=c||this.type;b||C((c?c+": ":"")+a);return!0};function Da(a,b){a.u.error=!0;a.ra(b)}
function Ea(a,b){b&&(a.u.ready?b():a.sa=b);return a.u.ready}e.R=function(a){this.u.error||(this.u.ready=!1!==a,this.u.ready&&(a=this.sa,this.sa=null,a&&a()))};function Fa(a,b){if(a.u.ta)return a.u.qa=!1,a.u.ta=!1;if(a.u.error)return a.F(a.toString()+" error"),!1;a.u.qa=b;return a.u.qa}var Ca="progress";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:{},G=window?window.PCjs.Components:[],L=window?window.PCjs.Commands:{},za=["hold","sleep","wait"],Aa={alert:function(a){C(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},Ba={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 Ga(a){F.call(this,"C1PPanel",a);this.u.I=!1}p(Ga,F);
Ga.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:F.prototype.L.call(this,a,b,c,d)};Ga.prototype.Z=function(a,b){a&&!this.u.I&&(this.u.I=!0,this.J=b,this.G=N(b,"cpu"),this.b=N(b,"keyboard"),Ha())};function Ha(){for(var a=!1,b=I(document,"c1pjs","panel"),c=0;c<b.length;c++){var d=b[c],f=J(d),g=K(f.id);g||(a=!0,g=new Ga(f));H(g,d);a&&g.R()}}y(Ha);
function Ia(a){F.call(this,"C1PCPU",a);Ja(this);this.u.I=!1;this.u.Y=!1;this.xa=a.autoStart;this.K=this.ja=0;this.ua=30;this.na=5;this.ea=8;this.wa=["Slow","Fast","Max"];this.gb=["(1Mhz)","(up to "+this.ea+"Mhz)","(unlimited)"];this.S=[];this.M=[];this.ka=65536;this.la=0;this.ca=65536;this.da=0;this.v=[this.Mb,this.ed,this.Xd,this.l,this.l,this.gd,this.Cb,this.l,this.kd,this.dd,this.Bb,this.l,this.l,this.ad,this.zb,this.l,this.Lb,this.fd,this.l,this.l,this.l,this.hd,this.Db,this.l,this.Pb,this.cd,
this.l,this.l,this.l,this.bd,this.Ab,this.l,this.Cc,this.vb,this.l,this.l,this.Ib,this.xb,this.qd,this.l,this.md,this.ub,this.pd,this.l,this.Hb,this.rb,this.nd,this.l,this.Jb,this.wb,this.l,this.l,this.l,this.yb,this.rd,this.l,this.Hd,this.tb,this.l,this.l,this.l,this.sb,this.od,this.l,this.xd,this.qc,this.l,this.l,this.l,this.sc,this.Yc,this.l,this.jd,this.pc,this.Xc,this.l,this.Bc,this.mc,this.Vc,this.l,this.Nb,this.rc,this.l,this.l,this.l,this.tc,this.Zc,this.l,this.Rb,this.oc,this.l,this.l,this.l,
this.nc,this.Wc,this.l,this.yd,this.Ia,this.l,this.l,this.l,this.Ka,this.vd,this.l,this.ld,this.Ha,this.ud,this.l,this.Ac,this.Ea,this.sd,this.l,this.Ob,this.Ja,this.l,this.l,this.l,this.La,this.wd,this.l,this.Jd,this.Ga,this.l,this.l,this.l,this.Fa,this.td,this.l,this.l,this.Nd,this.l,this.l,this.Vd,this.Pd,this.Sd,this.l,this.lc,this.l,this.ae,this.l,this.Ud,this.Kd,this.Rd,this.l,this.Eb,this.Od,this.l,this.l,this.Wd,this.Qd,this.Td,this.l,this.ce,this.Md,this.be,this.l,this.l,this.Ld,this.l,this.l,
this.Sc,this.Hc,this.Nc,this.l,this.Tc,this.Jc,this.Oc,this.l,this.Zd,this.Gc,this.Yd,this.l,this.Qc,this.Dc,this.Lc,this.l,this.Fb,this.Ic,this.l,this.l,this.Uc,this.Kc,this.Pc,this.l,this.Sb,this.Fc,this.$d,this.l,this.Rc,this.Ec,this.Mc,this.l,this.ec,this.Xb,this.l,this.l,this.fc,this.Zb,this.ic,this.l,this.zc,this.Wb,this.kc,this.l,this.dc,this.Tb,this.gc,this.l,this.Kb,this.Yb,this.l,this.l,this.l,this.$b,this.jc,this.l,this.Qb,this.Vb,this.l,this.l,this.l,this.Ub,this.hc,this.l,this.bc,this.Qa,
this.l,this.l,this.cc,this.Sa,this.wc,this.l,this.yc,this.Pa,this.$c,this.l,this.ac,this.Ma,this.uc,this.l,this.Gb,this.Ra,this.l,this.l,this.l,this.Ta,this.xc,this.l,this.Id,this.Oa,this.l,this.l,this.l,this.Na,this.vc,this.l];this.fb=[7,6,0,0,0,3,5,0,3,2,2,0,0,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,3,6,0,0,3,3,5,0,4,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,5,0,3,2,2,0,3,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,5,0,4,2,2,0,5,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,0,6,0,0,
3,3,3,0,2,0,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,0,4,0,0,2,6,2,0,3,3,3,0,2,2,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,4,4,4,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0]}p(Ia,F);e=Ia.prototype;e.reset=function(a){this.u.Y&&O(this);Ja(this);this.f=this.a[65532]|this.a[65533]<<8;this.u.error=!1;a&&(!0===this.xa||null===this.xa&&void 0===this.A.run)&&Ka(this)};
e.L=function(a,b,c){a=!1;switch(b){case "run":this.A[b]=c;c.onclick=function(a){return function(){a.u.Y?O(a):Ka(a)}}(this);a=!0;break;case "A":case "X":case "Y":case "S":case "PC":case "C":case "Z":case "I":case "D":case "B":case "V":case "N":case "speed":this.A[b]=c;a=!0;break;case "setSpeed":this.A[b]=c,c.onclick=function(a){return function(){La(a,2<=a.K?a.ja:a.K+1,!0)}}(this),a=!0}return a};e.X=function(a,b){this.a=a;(this.Ca=b)?C("unsupported CPU address buffer offset ("+this.Ca+")"):this.R()};
e.Z=function(a,b){if(a&&!this.u.I){this.J=b;if(a=N(b,"video"))this.va=function(a){return function(){Ma(a)}}(a),this.ba=function(a){return function(){a.ba()}}(a);this.u.I=!0;this.reset(!0);this.update()}};function Na(a,b,c,d,f){0>Oa(a.S,b,c,d,f)&&(a.ka>b&&(a.ka=b),a.la<c&&(a.la=c),a.S.push([b,c,d,f]))}function P(a,b,c,d,f){0>Oa(a.M,b,c,d,f)&&(a.ca>b&&(a.ca=b),a.da<c&&(a.da=c),a.M.push([b,c,d,f]))}
function Oa(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 La(a,b,c){void 0!==b&&(a.K=b,a.A.setSpeed&&(a.A.setSpeed.innerHTML=a.wa[2<=b?0:b+1]),a.F("running at "+a.wa[b].toLowerCase()+" speed "+a.gb[b]),c&&a.ba());a.U=0;a.za=ra();Pa(a)}e.va=function(){};e.ba=function(){};function Q(a,b,c,d){void 0!==a.A[b]&&(void 0===d&&(d=1),c="0000"+c.toString(16),a.A[b].innerHTML=c.slice(c.length-d).toUpperCase())}
function Qa(a){Q(a,"A",a.g,2);Q(a,"X",a.m,2);Q(a,"Y",a.o,2);var b=Ra(a);Q(a,"C",b&1?1:0);Q(a,"Z",b&2?1:0);Q(a,"I",b&4?1:0);Q(a,"D",b&8?1:0);Q(a,"B",b&16?1:0);Q(a,"V",b&64?1:0);Q(a,"N",b&128?1:0);Q(a,"S",a.s,4);Q(a,"PC",a.f,4);a.A.speed&&a.N&&(a.A.speed.innerHTML=a.N.toFixed(1)+"Mhz")}
function Pa(a,b){var c=30;c<a.ua&&(c=a.ua);c<a.na&&(c=a.na);var d=1;b&&a.K>a.ja&&a.N&&(d=a.N);d>a.ea&&2>a.K&&(d=a.ea);a.hb=Math.round(1E3/30);a.fa=Math.floor(1E6/c*d);a.ia=Math.floor(1E6/30*d);a.Ba=Math.floor(1E6/a.ua*d);a.Aa=Math.floor(1E6/a.na*d);b||(a.T=a.ia,a.W=a.Ba,a.V=a.Aa);a.ma=0}function Sa(a){1E6<=a.ma&&Pa(a,!0);a.aa=0;a.ib=ra()}
function Ta(a){var b=ra(),c=a.hb;a.aa&&(c=Math.round(c*a.aa/a.ia));c-=b-a.ib;if(b-=a.za)a.N=Math.round(a.U/(100*b))/10,864E5<=b&&La(a);0>c?c=0:1==a.K?a.N<=a.ea&&(c=0):2==a.K&&(c=0);a.ma+=a.aa;return c}
function Ka(a){if(Fa(a,!0)){a.u.Y||(La(a),a.J&&a.J.start(),a.u.Y=!0,a.A.run&&(a.A.run.innerHTML="Halt"),a.ba());Sa(a);try{do{Ua(a,a.fa);var b=a.O-a.H;a.U+=b;a.aa+=b;a.O=a.H=0;a.W-=a.fa;0>=a.W&&(a.W+=a.Ba,a.va());a.V-=a.fa;0>=a.V&&(a.V+=a.Aa,Qa(a));a.T-=a.fa;if(0>=a.T){a.T+=a.ia;break}}while(a.u.Y)}catch(c){O(a);a.update();Fa(a,!1);Da(a,c.stack||c.message);return}setTimeout(function(a){return function(){Ka(a)}}(a),Ta(a))}else a.update(),a.J&&a.J.stop(a.za,a.U)}
function Ua(a,b){a.b=a.j=-1;a.O=a.H=b;do{b=a.a[a.f];a.f++;a.v[b].call(a);if(0<=a.b){if(a.b>=a.ka&&a.b<=a.la)for(var c=a,d=a.b,f=a.f,g=0;g<c.S.length;g++)d>=c.S[g][0]&&d<=c.S[g][1]&&c.S[g][3].call(c.S[g][2],d,f);a.b=-1}else if(0<=a.j){if(a.j>=a.ca&&a.j<=a.da)for(c=a,d=a.j,f=a.f,g=0;g<c.M.length;g++)d>=c.M[g][0]&&d<=c.M[g][1]&&c.M[g][3].call(c.M[g][2],d,f);a.j=-1}a.H-=a.fb[b]}while(0<a.H)}function O(a){a.u.qa&&(a.u.ta=!0);a.O-=a.H;a.H=0;a.u.Y&&(a.u.Y=!1,a.A.run&&(a.A.run.innerHTML="Run"))}
e.update=function(){this.va();Qa(this)};function Va(a){return a.u.Y?a.U+a.O-a.H:0}function Ra(a){var b=a.c&256?1:0;b|=a.i&255?0:2;b|=(a.w&255^a.D^a.w>>1)&128?64:0;b|=a.h&128?128:0;return a.B&60|b}function R(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 S(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 Ja(a){a.g=0;a.m=0;a.o=0;a.s=256;a.B=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.Mb=function(){this.f++;this.a[this.s--]=this.f>>8;this.s|=256;this.a[this.s--]=this.f&255;this.s|=256;this.B|=16;this.B=Ra(this);this.a[this.s--]=this.B;this.s|=256;this.B&=239;this.b=65534;this.f=this.a[this.b]|this.a[this.b+1]<<8};e.ed=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.gd=function(){this.b=this.a[this.f++];this.h=this.i=this.g|=this.a[this.b]};
e.Cb=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.kd=function(){this.B=Ra(this);this.a[this.s--]=this.B;this.s|=256};e.dd=function(){this.b=this.f++;this.h=this.i=this.g|=this.a[this.b]};e.Bb=function(){this.c=this.g<<1;this.h=this.i=this.g=this.c&255};e.ad=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;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.c=this.a[this.j]<<1;this.h=this.i=this.a[this.j]=this.c&255};e.Lb=function(){this.f+=(this.h&128?0:(this.H--,this.a[this.f]<<24>>24))+1};e.fd=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.hd=function(){this.b=this.a[this.f++]+this.m&255;this.h=this.i=this.g|=this.a[this.b]};
e.Db=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.Pb=function(){this.c=0};e.cd=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.bd=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.Ab=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.Cc=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.vb=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.Ib=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.xb=function(){this.b=this.a[this.f++];this.h=this.i=this.g&=this.a[this.b]};
e.qd=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.md=function(){this.s=this.s+1&255|256;this.B=this.a[this.s];this.c=this.B&1?256:0;this.i=this.B&2?0:1;this.h=this.B&128;this.w=0;this.D=this.B&64?128:0};e.ub=function(){this.b=this.f++;this.h=this.i=this.g&=this.a[this.b]};
e.pd=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.Hb=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.rb=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;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.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.Jb=function(){this.f+=(this.h&128?(this.H--,this.a[this.f]<<24>>24):0)+1};e.wb=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.yb=function(){this.b=this.a[this.f++]+this.m&255;this.h=this.i=this.g&=this.a[this.b]};
e.rd=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.Hd=function(){this.c=256};e.tb=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.sb=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.od=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.xd=function(){this.s=this.s+1&255|256;this.B=this.a[this.s];this.c=this.B&1?256:0;this.i=this.B&2?0:1;this.h=this.B&128;this.w=0;this.D=this.B&64?128:0;this.s=this.s+2&255|256;this.f=this.a[this.s-1|256]|this.a[this.s]<<8};
e.qc=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.sc=function(){this.b=this.a[this.f++];this.h=this.i=this.g^=this.a[this.b]};e.Yc=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.jd=function(){this.a[this.s--]=this.g;this.s|=256};e.pc=function(){this.b=this.f++;this.h=this.i=this.g^=this.a[this.b]};
e.Xc=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.Bc=function(){this.b=this.f;this.f=this.a[this.b]|this.a[this.b+1]<<8};e.mc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;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.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.Nb=function(){this.f+=((this.w&255^this.D^this.w>>1)&128?0:(this.H--,this.a[this.f]<<24>>24))+1};e.rc=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.g^=this.a[this.b]};e.Zc=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.Rb=function(){this.B&=251};e.oc=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.nc=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.Wc=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.yd=function(){this.s=this.s+2&255|256;this.f=(this.a[this.s-1|256]|this.a[this.s]<<8)+1};e.Ia=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.nb=function(){this.b=this.a[this.f++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.g=R(this,this.g,this.a[this.b])};
e.Ka=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.pb=function(){this.b=this.a[this.f++];this.g=R(this,this.g,this.a[this.b])};e.vd=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.ld=function(){this.s=this.s+1&255|256;this.h=this.i=this.g=this.a[this.s]};
e.Ha=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.mb=function(){this.b=this.f++;this.g=R(this,this.g,this.a[this.b])};e.ud=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.Ac=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.Ea=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.jb=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.g=R(this,this.g,this.a[this.b])};e.sd=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.Ob=function(){this.f+=((this.w&255^this.D^this.w>>1)&128?(this.H--,this.a[this.f]<<24>>24):0)+1};e.Ja=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.ob=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.o;this.g=R(this,this.g,this.a[this.b])};
e.La=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.qb=function(){this.b=this.a[this.f++]+this.m&255;this.g=R(this,this.g,this.a[this.b])};e.wd=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.Jd=function(){this.B|=4};
e.Ga=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.lb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.o;this.g=R(this,this.g,this.a[this.b])};e.Fa=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.kb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.g=R(this,this.g,this.a[this.b])};e.td=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.Nd=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.Vd=function(){this.j=this.a[this.f++];this.a[this.j]=this.o};
e.Pd=function(){this.j=this.a[this.f++];this.a[this.j]=this.g};e.Sd=function(){this.j=this.a[this.f++];this.a[this.j]=this.m};e.lc=function(){this.h=this.i=this.o=this.o-1&255};e.ae=function(){this.h=this.i=this.g=this.m};e.Ud=function(){this.j=this.a[this.f++]|this.a[this.f++]<<8;this.a[this.j]=this.o};e.Kd=function(){this.j=this.a[this.f++]|this.a[this.f++]<<8;this.a[this.j]=this.g};e.Rd=function(){this.j=this.a[this.f++]|this.a[this.f++]<<8;this.a[this.j]=this.m};
e.Eb=function(){this.f+=(this.c&256?0:(this.H--,this.a[this.f]<<24>>24))+1};e.Od=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.Wd=function(){this.j=this.a[this.f++]+this.m&255;this.a[this.j]=this.o};e.Qd=function(){this.j=this.a[this.f++]+this.m&255;this.a[this.j]=this.g};e.Td=function(){this.j=this.a[this.f++]+this.o&255;this.a[this.j]=this.m};e.ce=function(){this.h=this.i=this.g=this.o};
e.Md=function(){this.j=(this.a[this.f++]|this.a[this.f++]<<8)+this.o;this.a[this.j]=this.g};e.be=function(){this.s=this.m|256};e.Ld=function(){this.j=(this.a[this.f++]|this.a[this.f++]<<8)+this.m;this.a[this.j]=this.g};e.Sc=function(){this.b=this.f++;this.h=this.i=this.o=this.a[this.b]};e.Hc=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.Nc=function(){this.b=this.f++;this.h=this.i=this.m=this.a[this.b]};
e.Tc=function(){this.b=this.a[this.f++];this.h=this.i=this.o=this.a[this.b]};e.Jc=function(){this.b=this.a[this.f++];this.h=this.i=this.g=this.a[this.b]};e.Oc=function(){this.b=this.a[this.f++];this.h=this.i=this.m=this.a[this.b]};e.Zd=function(){this.h=this.i=this.o=this.g};e.Gc=function(){this.b=this.f++;this.h=this.i=this.g=this.a[this.b]};e.Yd=function(){this.h=this.i=this.m=this.g};e.Qc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;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.h=this.i=this.g=this.a[this.b]};e.Lc=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.h=this.i=this.m=this.a[this.b]};e.Fb=function(){this.f+=(this.c&256?(this.H--,this.a[this.f]<<24>>24):0)+1};e.Ic=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.Uc=function(){this.b=this.a[this.f++]+this.m&255;this.h=this.i=this.o=this.a[this.b]};
e.Kc=function(){this.b=this.a[this.f++]+this.m&255;this.h=this.i=this.g=this.a[this.b]};e.Pc=function(){this.b=this.a[this.f++]+this.o&255;this.h=this.i=this.m=this.a[this.b]};e.Sb=function(){this.D=this.w=0};e.Fc=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.$d=function(){this.h=this.i=this.m=this.s&255};e.Rc=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.Ec=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.Mc=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.ec=function(){this.b=this.f++;this.h=this.i=this.c=this.o-this.a[this.b];this.c^=256};e.Xb=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.fc=function(){this.b=this.a[this.f++];this.h=this.i=this.c=this.o-this.a[this.b];this.c^=256};e.Zb=function(){this.b=this.a[this.f++];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.h=this.i=this.a[this.j]=this.a[this.j]-1&255};e.zc=function(){this.h=this.i=this.o=this.o+1&255};e.Wb=function(){this.b=this.f++;this.h=this.i=this.c=this.g-this.a[this.b];this.c^=256};e.kc=function(){this.h=this.i=this.m=this.m-1&255};
e.dc=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.Tb=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.gc=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.Kb=function(){this.f+=(this.i&255?(this.H--,this.a[this.f]<<24>>24):0)+1};
e.Yb=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.$b=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.jc=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.Qb=function(){this.B&=-9;this.v[97]=this.Ia;this.v[101]=this.Ka;this.v[105]=this.Ha;this.v[109]=this.Ea;this.v[113]=this.Ja;this.v[117]=this.La;this.v[121]=this.Ga;this.v[125]=this.Fa;this.v[225]=this.Qa;this.v[229]=this.Sa;this.v[233]=this.Pa;this.v[237]=this.Ma;this.v[241]=this.Ra;this.v[245]=this.Ta;this.v[249]=this.Oa;this.v[253]=this.Na};e.Vb=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.Ub=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.hc=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.bc=function(){this.b=this.f++;this.h=this.i=this.c=this.m-this.a[this.b];this.c^=256};
e.Qa=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.Dd=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.cc=function(){this.b=this.a[this.f++];this.h=this.i=this.c=this.m-this.a[this.b];this.c^=256};
e.Sa=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.Fd=function(){this.b=this.a[this.f++];this.g=S(this,this.g,this.a[this.b])};e.wc=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.m=this.m+1&255};
e.Pa=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.Cd=function(){this.b=this.f++;this.g=S(this,this.g,this.a[this.b])};e.$c=function(){};e.ac=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.Ma=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.zd=function(){this.b=this.a[this.f++]|this.a[this.f++]<<8;this.g=S(this,this.g,this.a[this.b])};e.uc=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.Gb=function(){this.f+=(this.i&255?0:(this.H--,this.a[this.f]<<24>>24))+1};
e.Ra=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.Ed=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.Ta=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.Gd=function(){this.b=this.a[this.f++]+this.m&255;this.g=S(this,this.g,this.a[this.b])};e.xc=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.Id=function(){this.B|=8;this.v[97]=this.nb;this.v[101]=this.pb;this.v[105]=this.mb;this.v[109]=this.jb;this.v[113]=this.ob;this.v[117]=this.qb;this.v[121]=this.lb;this.v[125]=this.kb;this.v[225]=this.Dd;this.v[229]=this.Fd;this.v[233]=this.Cd;this.v[237]=this.zd;this.v[241]=this.Ed;this.v[245]=this.Gd;this.v[249]=this.Bd;this.v[253]=this.Ad};
e.Oa=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.Bd=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.Na=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.Ad=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.vc=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.Xd=function(){var a=this.a[this.f++];switch(a){case 0:this.F("HALT");O(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,v(this.g,2)).replace(/%X/g,v(this.m,2)).replace(/%Y/g,v(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: "+v(a,2,!0)+" at "+v(this.f,4,!0)),O(this)}};
e.l=function(){var a=this.a[--this.f];this.F("undefined opcode: "+v(a,2,!0)+" at "+v(this.f,4,!0));O(this)};y(function(){for(var a=I(document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=J(c);d=new Ia(d);H(d,c)}});
function T(a){F.call(this,"C1PROM",a);this.b=this.a=null;this.c=a.size;if(this.f=a.image){a=this.f;var b=oa(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;w(a,function(a,b,g){Wa(c,a,b,g)})}}p(T,F);
T.prototype.X=function(a,b,c,d){this.a=a;this.g=b;a=c-b+1;this.c||(this.c=a);a!=this.c?Da(this,"computer-specified ROM size ("+v(a,4,!0)+") does not match component-specified size ("+v(this.c,4,!0)+")"):(d&&(this.G=d,P(d,b,c,this,this.h)),Xa(this))};T.prototype.Z=function(a){a&&!this.u.I&&(this.u.I=!0)};T.prototype.h=function(a,b){void 0!==b&&(a-=this.g,this.a[this.g+a]=this.b?this.b[a]:0)};
function Wa(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);Xa(a)}}
function Xa(a){if(!Ea(a))if(!a.f)a.R();else if(a.b&&a.a){var b=a.b.length;if(b!=a.c)Da(a,"ROM image size ("+v(b,4,!0)+") does not match component-specified size ("+v(a.c,4,!0)+")");else{for(var c=0;c<b;c++)a.a[a.g+c]=a.b[c];a.R()}}}y(function(){for(var a=I(document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=J(c);d=new T(d);H(d,c)}});function Ya(a){F.call(this,"C1PRAM",a)}p(Ya,F);Ya.prototype.X=function(a){this.a=a;this.R()};
y(function(){for(var a=I(document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=J(c);d=new Ya(d);H(d,c)}});
function Za(a){F.call(this,"C1PKeyboard",a);this.u.I=!1;this.aa=a.model;this.K=8;this.la=10;this.ka=13;this.M=27;this.fa=this.K;this.ja=this.la;this.ca=this.ka;this.H=this.M;this.s=241;this.D=224;this.da=3;this.ea=15;this.o=1;this.j={};this.j["break"]=this.D;this.j.esc=this.H;this.j["ctrl-c"]=this.da;this.j["ctrl-o"]=this.ea;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.fa]=22E3;this.b[this.ja]=21504;this.b[this.ca]=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()}p(Za,F);
e=Za.prototype;e.reset=function(){this.oa(this.aa);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.B=0;this.i=""};
e.L=function(a,b,c){if(void 0===this.A[b])switch(b){case "keyDown":return this.A[b]=c,c.onkeydown=function(a){return function(b){return $a(a,b,!0)}}(this),!0;case "keyPress":return this.A[b]=c,c.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.i="";a.c&8?a.c&=-9:c=!ab(a,b);return c}}(this),!0;case "keyUp":return this.A[b]=c,c.onkeyup=function(a){return function(b){return $a(a,b,!1)}}(this),!0;case "break":return this.A[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.A[b]=c,c.onclick=function(a,b,c){return function(){a.G&&a.G.ba();return!ab(a,c)}}(this,b,this.j[b]),!0}return!1};e.X=function(a,b,c,d){this.a=a;this.V=b;this.ia=c-b+1;this.na=this.V+this.ia;d&&(this.G=d,P(d,b,c,this,this.Ya));this.R()};e.oa=function(a){this.m=a;this.w=255;600!=this.m&&(this.w=0,this.F("updated keyboard model: "+this.m))};e.Z=function(a,b){a&&!this.u.I&&(this.u.I=!0,this.J=b)};
e.R=function(){this.T=(this.ma=x("iOS"))||x("Android");F.prototype.R.call(this)};function bb(a,b){b=b?100:250;a.G&&a.G.N&&(b/=a.G.N);return b}function cb(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;db(a,c||300)}function db(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);ab(a,c)}0<a.i.length&&setTimeout(function(a){return function(){db(a,b)}}(a),b)}
function $a(a,b,c){var d=!c;b=b.keyCode;c&&(a.W=b);if(16==b)a.c&=-5,c&&(a.c|=4),b+=224,d=!1;else if(18==b)a.c&=-3,c&&(a.c|=2),b+=224,d=!1;else if(b==a.s-224)a.c&=-65,c&&(a.c|=64),b+=224,d=!1;else if(20==b)c=!c,a.c&=~a.o,c&&(a.c|=a.o),b+=224,d=!1;else if(91==b){a.c&=-9;c&&(a.c|=8);d=!1;var f=!0}else f=9==b?d=!1:b==a.M||b==a.K?c?!ab(a,b):!1:!0;d&&(a.c&=-9,a.T||b!=a.W||cb(a));void 0===f&&(f=!V(a,b,c,2));return f}
function ab(a,b){var c=!1;b==a.D?a.J&&(a.J.reset(!0),c=!0):(a.T&&65<=b&&90>=b&&(b+=32),cb(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=bb(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=0==d&&!a.v.length,a.v.push(a.f.slice()),eb(a,c),f=!0);return f}e.Ya=function(a){this.O=this.G.a[a]^this.w;this.B++;eb(this,!1,a)};
function eb(a,b,c){var d=Va(a.G);b||(2==a.G.K?b=void 0!==c&&32<=a.B:(b=d-a.U,b=0>b||8192<=b));b&&(b=a.v.shift(),void 0!==b&&(a.N=b),a.B=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.na;c++)a.a[c]=d;a.S=d}y(function(){for(var a=I(document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=J(c);d=new Za(d);H(d,c)}});
function fb(a,b,c,d){F.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;gb(this);this.h=b;this.w=c;this.f=d;var f;b=["","moz","ms","webkit"];a=a.smoothing;if(!E){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," "))}E=c}(f=E.smoothing||E.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}}p(fb,F);e=fb.prototype;e.reset=function(a){this.oa(this.S);if(this.a)for(var b=this.s;b<this.B;b++)this.a[b]=a?Math.floor(256*Math.random()):32};e.L=function(a,b,c){switch(b){case "refresh":return this.A[b]=c,c.onclick=function(a){return function(){hb(a);Ma(a)}}(this),!0}return!1};
e.X=function(a,b,c,d){this.a=a;this.s=b;this.T=c-b+1;this.B=this.s+this.T;d&&(this.G=d,Na(d,56832,56832,this,this.ab),P(d,56832,56832,this,this.bb));this.reset(!0)};function gb(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.B=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.ba=function(){this.h.focus()};
e.oa=function(a){this.m=a;600==this.m?(gb(this,this.M,this.N,3,25),1024==this.c&&this.G&&(this.g=this.B+this.c-1,P(this.G,this.g,this.g,this,this.Va))):(this.F("updated video model: "+this.m),gb(this,64,32));hb(this);Ma(this)};e.Z=function(a,b){if(a&&!this.u.I&&Ea(this)){if(this.u.I=!0,this.b=N(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));F.prototype.R.call(this)};e.ab=function(a){this.G.a[a]=this.G.a[a]&127|(Math.floor(Va(this.G)/8333)&1?128:0)};e.bb=function(){};
e.Va=function(a,b){if(void 0!==b){this.oa(540);this.b&&this.b.oa(542);a=this.G;b=a.M;var c=[],d=Oa(b,this.g,this.g,this,this.Va);if(0<=d){c.push(b[d][0]);c.push(b[d][1]);b.splice(d,1);var f=65536,g=0;for(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.ca=c[2],a.da=c[3])}};function hb(a){a.v=Array(a.c);for(var b=0;b<=a.c;b++)a.v[b]=-1}
function Ma(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++}}
y(function(){for(var a=I(document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=J(c),f=document.createElement("canvas");if(void 0===f||!f.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; 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 fb(d,f,h,g);g.onload=function(a){return function(){a.R()}}(f,d.charSet);g.src=d.charSet;H(f,c)}});
function ib(a){F.call(this,"C1PSerialPort",a);this.u.I=!1;this.j=a.demo;this.reset(!0)}p(ib,F);e=ib.prototype;e.reset=function(a){if(a||this.f!=jb){this.g=-1;this.h=0;this.c="";if(this.j){a=1;if(this.ya){var b=this.ya.match(/\d+/);null!==b&&(a=parseInt(b[0],10))}this.c='10 PRINT "HELLO OSI #'+a+'"\n'}this.i=!0;this.f=kb}};e.start=function(){this.b&&this.j&&(W(this.b," C\n\n",3E3),setTimeout(function(a){return function(){a.f=lb;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.A[b]=c,!0;case "loadSerial":return this.A[b]=c,c.onclick=function(){d.A.listSerial&&w(d.A.listSerial.value,function(a,b,c){mb(d,a,b,c)})},!0;case "mountSerial":return!x("Mobi")&&window&&"FileReader"in window?(this.A[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(){mb(d,b.name,c.result.toString(),
0)};c.readAsText(b);return!1}):c.parentNode.removeChild(c),!0}return!1};e.X=function(a,b,c,d){this.a=a;this.m=b;this.s=c-b+1;this.o=this.m+this.s;if(this.G=d)Na(d,b,c,this,this.Za),P(d,b,c,this,this.$a);this.R()};e.Z=function(a,b){a&&!this.u.I&&(this.u.I=!0,this.J=b,this.b=N(b,"keyboard"))};
function mb(a,b,c,d){if(c){a.h=0;a.c=c;a.i=!0;a.f=kb;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.Y?(a.F("auto-loading "+b),a.G.ba(),"."!=a.c.charAt(0)?(a.f=lb,W(a.b,"NEW\nLOAD\n")):(a.f=jb,a.J.reset(!0),W(a.b,"ML"))):a.F(b+" ready to load")}else a.F('Error loading file "'+b+'" ('+d+")")}
e.Za=function(a,b){void 0!==b&&(a&1?nb(this):this.c&&!this.h&&nb(this))};e.$a=function(){};function nb(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==lb&&a.b&&W(a.b," \nRUN\n"),a.f=kb;for(b=a.m+0;b<a.o;b+=2)a.a[b]=0<=a.g?ob:pb;for(b=a.m+1;b<a.o;b+=2)a.a[b]=0<=a.g?a.g:0}}var pb=0,ob=1,kb=0,lb=1,jb=2;y(function(){for(var a=I(document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=J(c);d=new ib(d);H(d,c)}});
function qb(a){F.call(this,"C1PDiskController",a);this.u.I=!1;this.reset(!0)}p(qb,F);e=qb.prototype;e.reset=function(a){rb(this);this.b=-1;a&&(this.c=[],this.c[0]={ee:0,Da:40,eb:!0,ha:20,$:0,ga:-1,pa:[]})};
function rb(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:sb(a,b,a.h.C);b=(b|190)&-2;if(0<=a.b&&a.c[a.b].pa.length){var c=a.c[a.b];c.eb&&(b&=-33);c.$||(b&=-3);10>=--c.ha&&(0<c.ha?(b&=-129,tb(a)):(c.ha=100,0<=a.b&&(a.c[a.b].ga=0,ub(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:sb(a,a.f.C,b);if(0<=a.b&&a.b<a.c.length){var c=a.c[a.b];c.pa.length&&a.h.C&8&&!(b&8)&&(b&4?c.$--:c.$++,c.$>=c.Da&&(c.$=c.Da),0>c.$&&(c.$=0),c.ha=20,a.f.update(a.f.C|128),tb(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].ga&&(b|=1);this.C=b;X(a,16,this)}}(a)};a.o={C:0,read:function(a){return function(){ub(a)}}(a),update:function(a){return function(b){void 0!==b&&(this.C=
b);X(a,17,this)}}(a)};a.B={C:0,read:function(){},update:function(){return function(){}}(a)}}e.L=function(a,b,c){switch(b){case "listDisk":return this.A[b]=c,!0;case "loadDisk":return this.A[b]=c,c.onclick=function(a){return function(){if(a.A.listDisk){var b=a.A.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.F("loading "+na(b)+"...");w(c,function(b,c,d){vb(a,b,c,d)})}}}(this),!0}return!1};
e.X=function(a,b,c,d){this.a=a;this.m=b;if(this.G=d)Na(d,b,c,this,this.Wa),P(d,b,c,this,this.Xa);this.R()};e.Z=function(a){a&&!this.u.I&&(this.u.I=!0)};
function vb(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],k=h.sectors;if(void 0===(g=h.trackNum)||void 0===k)throw Error("track "+c+" missing data");g!=c&&C("track "+g+" out of order (expected "+c+")");d=[];var l;if(g){wb(d,h,"trackSig");xb(d,h);Y(d,h,"trackType");for(var n=0;n<k.length;n++){var m=k[n];
var q=m.sectorData;Y(d,m,"sectorSig");Y(d,m,"sectorNum");Y(d,m,"sectorPages");for(l=0;l<q.length;l++)d.push(q[l]);wb(d,m,"sectorEndSig")}}else for(m=k[0],q=m.sectorData,Y(d,h,"trackLoad",2),Y(d,m,"sectorPages"),l=0;l<q.length;l++)d.push(q[l]);f[g].Ua=d}a.c[0].pa=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(U){a.F("disk data error: "+U.message)}}}
function xb(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 wb(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 yb(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.B}return a}e.Wa=function(a,b){void 0!==b&&yb(this,a-this.m,!1).read()};e.Xa=function(a,b){void 0!==b&&yb(this,a-this.m,!0).update(this.G.a[a])};function sb(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 tb(a){0<=a.b&&(a.c[a.b].ga=-1,a.o.update(255),a.g.update())}function ub(a){if(0<=a.b){var b=a.c[a.b];var c=b.pa[b.$];void 0!==c&&(0<=b.ga&&b.ga<c.Ua.length?(b.ha=100,b=c.Ua[b.ga++],a.o.update(b),a.g.update()):(b.ha=10,tb(a)))}}function X(a,b,c){a.G.a[b+a.m]=c.C}y(function(){for(var a=I(document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=J(c);d=new qb(d);H(d,c)}});function Z(a,b){F.call(this,"C1PComputer",a);this.P=b}p(Z,F);
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&&Ka(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.A[b]=c,c.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function N(a,b){return a.P[b]?a.P[b][0]:null}function zb(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(!Ea(f)){Ea(f,function(a){return function(){zb(a)}}(a));return}"cpu"==c?b=f:f.Z&&f.Z(!0,a)}}a.R();a.F("C1Pjs v1.37.1\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>");b&&b.Z(!0,a)}
y(function(){for(var a=I(document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=J(c),f,g={},h,k=0,l=0,n=0;n<d.modules.length;n++){var m=d.modules[n];if(!n){if("cpu"!=m.type)break;k=m.start;l=m.end;h=Array(l+1-k);for(f=k;f<h.length;f++)h[f]=0}if(f=K(m.refID,d.id)){var q=m.type;void 0===g[q]&&(g[q]=[]);g[q].push(f);f.X&&void 0!==m.start&&f.X(h,m.start,m.end,g.cpu[0])}else{C('no component for <module refid="'+m.refID+'">');return}}if(!h){C('<module type="cpu"> definition must appear first in the <computer> specification');
break}if(f=K("debugger",d.id))g["debugger"]=[f],f.X&&f.X(h,k,l,g.cpu[0]);k=new Z(d,g);if(l=K("panel",d.id))if(g.panel=[l],l.A.print){f=void 0;d=d.id;g=[];d&&(d=0<(f=d.indexOf("."))?d.substr(0,f+1):"");for(f=0;f<G.length;f++)n=G[f],d&&n.id.indexOf(d)||g.push(n);d=g;for(g=0;g<d.length;g++)f=d[g],f!=l&&(f.ra=l.ra,f.print=l.print,f.F=l.F)}H(k,c);zb(k)}});var Ab=0;
function Bb(a,b,c,d,f,g){f("Loading "+a+"...");w(a,function(h,k,l){l?(k||(k="unable to load "+a+" ("+l+")"),g(k,null)):Cb(k,a,b,c,d,f,g)})}
function Cb(a,b,c,d,f,g,h){function k(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?Db(a,g,k):k(a,null):h("no data"+(b?" for file: "+
b:""),null)}
function Db(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");w(f,function(g,h,k){if(k||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+k+")");else{if(g=d[3])if(k=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=k[0],n,m=/( [a-z]+=)(['"])(.*?)\2/gi;n=m.exec(g);)l=0>l.toLowerCase().indexOf(n[1].toLowerCase())?l.replace(">",n[0]+">"):l.replace(new RegExp(n[1]+"(['\"])(.*?)\\1"),n[0]);k[0]!=l&&(h=h.replace(k[0],l))}else{c(a,"missing <"+d[1]+"> in "+
f);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(d[0],h);Db(a,b,c)}})}else c(a,null)}
function Eb(a,b,c){function d(a){if(void 0===h){var b=g&&I(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=pa(a))}function f(a){d("Error: "+a);k&&(--Ab||D(!0));k=!1}var g,h,k=!0;Ab++;M[a]={};try{if(g=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],m=document.createElement("style");m.type="text/css";m.styleSheet?m.styleSheet.cssText=l:m.appendChild(document.createTextNode(l));n.appendChild(m)}c||(c=
"/versions/c1pjs/1.37.1/components.xsl");l=function(h,l){l?Bb(c,null,null,!1,d,function(h,k){k?(M[a]&&c&&(M[a][c]=h),d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=l.transformNode(k))?(g.outerHTML=k,--Ab||D(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(h=new XSLTProcessor,h.importStylesheet(k),(k=h.transformToFragment(l,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--Ab||D(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(h)}):f(h)};"<"!=b.charAt(0)?Bb(b,a,void 0,!0,d,l):Cb(b,null,a,void 0,!1,d,l)}else f("missing machine element: "+a)}catch(q){f(q.message)}return k}window.embedC1P=function(a,b,c){D(!1);return Eb(a,b,c)};
window.commandMachine=function(a,b,c,d,f,g){if("script"==f){d=!1;c+=".machine";if(!g)delete L[c],d=!0;else if("string"==typeof g&&!L[c]){d=!0;f=L;for(var h=c,k=g.length,l=[],n=[],m="",q=null,U=0;U<k;U++){var r=g[U];if('"'==r||"'"==r)q&&r!=q?m+=r:(q?q=null:q=r,m&&(n.push(m),m=""));else{if(!q){if("\r"==r||"\n"==r)r=";";if(" "==r||"\t"==r||";"==r){m&&(n.push(m),m="");";"==r&&n.length&&(l.push(n),n=[]);continue}}m+=r}}m&&n.push(m);n.length&&l.push(n);f[h]=l;ya(c)||(d=!1)}return d?(b&&(a.disabled=!0),
!0):!1}if(d&&(h=xa(d,c+".machine"))&&(k=h.exports)&&(k=k[f]))return k.call(h,g)?(b&&(a.disabled=!0),!0):!1;console.log("unimplemented: commandMachine('"+c+"','"+d+"','"+f+"','"+g+"')");return!1};window.enableEvents=D;window.sendEvent=ua;})();//# sourceMappingURL=/versions/c1pjs/1.37.1/c1p.map

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,278 @@
@CHARSET "UTF-8";
/**
@author Jeff Parsons (@jeffpar)
@website http://www.pcjs.org/
@created 2013-05-05
@modified 2014-02-23
@license http://www.gnu.org/licenses/gpl.html
*/
body {
margin: 0;
background: #202020;
}
h1, h2 {
margin-top: 0;
color: #cccccc;
}
h1, h2, h3, h4 {
word-wrap: break-word;
}
h4 a {
color: #cccccc !important;
}
p {
line-height: 1.5em;
}
img {
max-width: 100%;
}
a img {
vertical-align: bottom;
}
pre, code {
color: #000000;
background-color: #cccccc;
font-family: Monaco, Consolas, "Lucida Console", monospace;
font-size: 12px;
}
pre {
margin: 1em 2em;
padding: 1em;
border-radius: 5px;
overflow: auto;
}
code {
padding: 1px;
}
pre a, code a {
color: #006400 !important;
}
.common {
width: 100%;
margin: 0 auto;
color: #cccccc;
}
.common a {
color: #7fc07f;
text-decoration: none;
}
.common hr {
border-color: #808080;
}
.common a:hover {
text-decoration: underline;
}
.common, .machine {
font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
font-size: 15px;
}
.machine {
overflow: hidden;
}
.c1pjs {
overflow: visible;
}
.machine-placeholder {
text-align: center;
font-weight: bold;
}
.machine-floating {
position: relative;
z-index: auto;
background-color: transparent;
padding-right: 0;
}
.machine-sticky {
position: fixed !important;
z-index: 1 !important;
background-color: #404040 !important;
padding-right: 16px !important;
top: 0 !important;
}
.common-top {
background: #202020;
font-size: small;
}
.common-top-left {
float: left;
width: 60%;
}
.common-top-left ul {
line-height: 1.5em;
list-style-type: none;
margin: 0;
padding: 1em 1em 1em 9px;
overflow: hidden;
}
.common-top-left ul li {
display: block;
float: left;
}
.common-top-left ul li a {
border-right: 1px solid #6f6f6f;
padding: 2px 6px 2px 6px;
}
.common-top-left ul li:last-child a {
border-right: none;
}
.common-top-right {
float: right;
width: 40%;
}
.common-top-right p {
float: right;
margin: 0;
padding: 1em;
}
.common-middle {
clear: both;
padding: 1px 1em 1px 1em;
background: #404040;
}
.common-sidebar {
float: left;
font-size: small;
width: 140px;
padding-bottom: 20px;
overflow: hidden;
white-space: nowrap;
word-wrap: break-word;
}
.common-list {
list-style-type: none;
margin-top: 0;
margin-bottom: 0;
padding-left: 0;
}
.common-list li {
padding-bottom: 7px;
}
.common-list-data {
list-style-type: none;
margin-top: 0;
margin-bottom: 0;
padding-left: 0;
}
.common-list-data li {
line-height: 1.5em;
}
.common-list-data-items, .common-list-data-subitems {
font-size: x-small;
list-style-type: none;
margin-top: 0;
margin-bottom: 0;
padding-left: 2em;
}
.common-list-data-items li, .common-list-data-subitems li {
padding-bottom: 0;
}
.common-main {
margin-left: 150px;
}
.common-main blockquote {
text-align: justify;
}
.common-image-gallery {
margin: 0 auto;
text-align: center;
}
.common-image-gallery:after {
content: '';
display: block;
}
.common-image-frame {
display: inline-block;
margin: 8px;
text-align: center;
}
.common-image-link {
padding: 5px;
border: 1px solid black;
border-radius: 5px;
background-color: #FAEBD7;
}
.common-image-label {
font-size: x-small;
}
.common-bottom {
clear: both;
padding-top: 1em;
}
.common-bottom:after {
content: '';
display: block;
clear: both;
}
.common-reference {
float: left;
font-size: x-small;
}
.common-reference a {
text-decoration: none;
}
.common-copyright {
float: right;
font-size: x-small;
}
.common-copyright a {
text-decoration: none;
}
.md-list {
}
.md-list li {
line-height: 1.5em;
margin-bottom: 1em;
}
.md-list li p {
padding-left: 2em;
}
.md-list-compact {
}
.md-list-compact li {
margin-bottom: 0;
}
.md-list-none {
list-style-type: none;
padding-left: 2em;
}
.md-list-none li {
margin-bottom: 0;
}
@media screen and (max-width: 900px) {
.common-sidebar {
width: 100%;
white-space: normal;
}
.common-list {
padding-left: 0;
}
.common-list-data {
padding-left: 0;
}
.common-sidebar h4, .common-list li, .common-list-data li, .common-list-data-items li {
width: 130px;
float: left;
overflow: hidden;
vertical-align: top;
padding-right: 1em;
margin-top: 0;
}
.common-list-data-subitems {
display: none;
}
.common-main {
clear: both;
margin-left: 0;
padding-left: 0;
padding-right: 0;
}
.md-list-none {
padding-left: 1em;
}
}

View file

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;"> <!ENTITY ne "&#8800;"> <!ENTITY le "&#8804;"> <!ENTITY ge "&#8805;">
<!ENTITY times "&#215;"> <!ENTITY sdot "&#8901;"> <!ENTITY divide "&#247;">
<!ENTITY copy "&#169;"> <!ENTITY Sigma "&#931;"> <!ENTITY sigma "&#963;"> <!ENTITY sum "&#8721;"> <!ENTITY lbrace "&#123;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template name="commonStyles">
<meta charset="utf-8"/>
<link rel="apple-touch-icon" sizes="57x57" href="/versions/icons/current/pc-icon-57.png"/>
<link rel="apple-touch-icon" sizes="72x72" href="/versions/icons/current/pc-icon-72.png"/>
<link rel="apple-touch-icon" sizes="76x76" href="/versions/icons/current/pc-icon-76.png"/>
<link rel="apple-touch-icon" sizes="114x114" href="/versions/icons/current/pc-icon-114.png"/>
<link rel="apple-touch-icon" sizes="120x120" href="/versions/icons/current/pc-icon-120.png"/>
<link rel="apple-touch-icon" sizes="144x144" href="/versions/icons/current/pc-icon-144.png"/>
<link rel="apple-touch-icon" sizes="152x152" href="/versions/icons/current/pc-icon-152.png"/>
<link rel="apple-touch-icon" sizes="180x180" href="/versions/icons/current/pc-icon-180.png"/>
<link rel="apple-touch-icon" sizes="192x192" href="/versions/icons/current/pc-icon-192.png"/>
<link rel="apple-touch-icon" href="/versions/icons/current/apple-touch-icon.png"/>
<link rel="icon" type="image/png" sizes="192x192" href="/versions/icons/current/pc-icon-192.png"/>
<link rel="shortcut icon" type="image/x-icon" href="/versions/icons/current/favicon.ico"/>
<link rel="stylesheet" type="text/css" href="/versions/c1pjs/1.37.1/common.css"/>
</xsl:template>
<xsl:template name="commonTop">
<div class="common-top">
<div class="common-top-left">
<ul>
<li><a href="/">PCjs</a></li>
<li><a href="/blog/">Blog</a></li>
<li><a href="/apps/">Apps</a></li>
<li><a href="/devices/">Devices</a></li>
<li><a href="/disks/">Disks</a></li>
<li><a href="/pubs/docs/">Docs</a></li>
<li><a href="/pubs/docs/about/">About</a></li>
</ul>
</div>
<div class="common-top-right">
<p>Powered by <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">JavaScript</a>, <a href="http://vanilla-js.com/" target="_blank">Vanilla JS</a>, and <a href="http://github.com/jeffpar/pcjs" target="_blank">GitHub</a></p>
</div>
</div>
</xsl:template>
<xsl:template name="commonBottom">
<div class="common-bottom">
<p class="common-reference"></p>
<p class="common-copyright">
<span class="common-copyright"><a href="http://www.pcjs.org/">pcjs.org</a> © 2012-2017 by <a href="http://twitter.com/jeffpar">@jeffpar</a></span><br/>
<span class="common-copyright"><a href="http://github.com/jeffpar/pcjs">PCjs Project</a> released under <a href="http://gnu.org/licenses/gpl.html">GPLv3</a></span>
</p>
</div>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,108 @@
@CHARSET "UTF-8";
*:not(input,textarea) {
-webkit-user-select: none;
}
.c1pjs-embed {
}
.c1pjs-embed:after {
clear:both;
}
.c1pjs-machine {
}
.c1pjs-name {
clear: both;
font-weight: bold;
padding-bottom: 4px;
}
.c1pjs-canvas {
width: 100%;
height: auto;
}
.c1pjs-container {
color: #000000;
position: relative;
}
.c1pjs-label {
font-size: small;
line-height: 19px;
vertical-align: middle;
float: left;
font-family: "Lucida Console", monospace;
}
.c1pjs-control textarea {
font-family: Monaco, monospace;
font-size: x-small;
}
.c1pjs-fieldset {
border: none;
margin: 0;
padding: 0;
}
.c1pjs-flag {
font-family: "Lucida Console", monospace;
font-size: small;
text-align: center;
line-height: 19px;
vertical-align: middle;
}
.c1pjs-register {
font-family: "Lucida Console", monospace;
font-size: small;
text-align: center;
line-height: 19px;
vertical-align: middle;
border: 1px solid black;
}
.c1pjs-switches {
float: left;
}
.c1pjs-bitBucket {
float: left;
width: 19px;
height: 38px;
}
.c1pjs-bitCell {
float: left;
width: 19px;
height: 19px;
margin-right: -1px;
margin-bottom: -1px;
border: 1px solid black;
text-align: center;
line-height: 19px;
}
.c1pjs-bitCellLeft {
border-left: 1px solid black;
}
.c1pjs-bitLabel {
font-size: xx-small;
text-align: center;
}
.c1pjs-description, .c1pjs-status {
font-size: small;
line-height: 2em;
}
.c1pjs-key {
border: 1px solid black;
font-size: x-small;
text-align: center;
position: absolute;
height: 34px;
line-height: 34px;
}
.c1pjs-reference {
float: left;
font-size: x-small;
}
.c1pjs-reference a {
text-decoration: none;
}
.c1pjs-copyright {
float: right;
font-size: x-small;
}
.c1pjs-copyright a {
text-decoration: none;
}

View file

@ -0,0 +1,592 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2013-01-29" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:param name="rootDir" select="''"/>
<xsl:param name="generator" select="'client'"/>
<xsl:variable name="MACHINETYPE">c1p</xsl:variable>
<xsl:variable name="APPCLASS">c1pjs</xsl:variable>
<xsl:variable name="APPVERSION">1.37.1</xsl:variable>
<xsl:variable name="SITEHOST">www.pcjs.org</xsl:variable>
<xsl:variable name="BGNDCOLOR">#FAEBD7</xsl:variable>
<xsl:template name="componentStyles">
<link rel="stylesheet" type="text/css" href="/versions/{$APPCLASS}/{$APPVERSION}/components.css"/>
</xsl:template>
<xsl:template name="componentScripts">
<xsl:param name="component"/>
<script type="text/javascript" src="/versions/{$APPCLASS}/{$APPVERSION}/{$component}.js"> </script>
</xsl:template>
<xsl:template name="componentIncludes">
<xsl:param name="component"/>
<xsl:call-template name="componentScripts"><xsl:with-param name="component" select="$component"/></xsl:call-template>
</xsl:template>
<xsl:template match="machine[@ref]">
<xsl:variable name="componentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($componentFile)/machine"><xsl:with-param name="machine" select="@id"/></xsl:apply-templates>
</xsl:template>
<xsl:template match="machine[not(@ref)]">
<xsl:param name="machine"><xsl:value-of select="@id"/></xsl:param>
<div id="{$machine}" class="machine {@class}js">
<xsl:call-template name="component">
<xsl:with-param name="machine" select="$machine"/>
<xsl:with-param name="component" select="'machine'"/>
<xsl:with-param name="class"><xsl:value-of select="@class"/>js</xsl:with-param>
<xsl:with-param name="parms"><xsl:if test="@parms">,<xsl:value-of select="@parms"/></xsl:if></xsl:with-param>
<xsl:with-param name="url"><xsl:value-of select="@url"/></xsl:with-param>
</xsl:call-template>
</div>
</xsl:template>
<xsl:template match="component[@ref]">
<xsl:param name="machine"/>
<xsl:variable name="componentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($componentFile)/component"><xsl:with-param name="machine" select="$machine"/></xsl:apply-templates>
</xsl:template>
<xsl:template match="component[not(@ref)]">
<xsl:param name="machine"/>
<xsl:call-template name="component">
<xsl:with-param name="machine" select="$machine"/>
<xsl:with-param name="class" select="@class"/>
<xsl:with-param name="parms"><xsl:if test="@parms">,<xsl:value-of select="@parms"/></xsl:if></xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="component">
<xsl:param name="machine" select="''"/>
<xsl:param name="component" select="name(.)"/>
<xsl:param name="class" select="''"/>
<xsl:param name="parms" select="''"/>
<xsl:param name="url" select="''"/>
<xsl:variable name="id">
<xsl:choose>
<xsl:when test="$component = 'machine'"><xsl:value-of select="$machine"/>.machine</xsl:when>
<xsl:when test="$machine != ''"><xsl:value-of select="$machine"/><xsl:if test="@id">.<xsl:value-of select="@id"/></xsl:if></xsl:when>
<xsl:when test="@id"><xsl:value-of select="@id"/></xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="name">
<xsl:choose>
<xsl:when test="name"><xsl:value-of select="name"/></xsl:when>
<xsl:when test="@name"><xsl:value-of select="@name"/></xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="border">
<xsl:choose>
<xsl:when test="@border = '1'">border:1px solid black;border-radius:10px;</xsl:when>
<xsl:when test="@border">border:<xsl:value-of select="@border"/>;</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="left">
<xsl:choose>
<xsl:when test="@left">left:<xsl:value-of select="@left"/>;</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="top">
<xsl:choose>
<xsl:when test="@top">top:<xsl:value-of select="@top"/>;</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="width">
<xsl:choose>
<xsl:when test="@width">
<xsl:choose>
<xsl:when test="$left != '' or $top != ''">width:<xsl:value-of select="@width"/>;</xsl:when>
<xsl:otherwise>width:auto;max-width:<xsl:value-of select="@width"/>;</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="height">
<xsl:choose>
<xsl:when test="@height">height:<xsl:value-of select="@height"/>;</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="padding">
<xsl:choose>
<xsl:when test="@padding">padding:<xsl:value-of select="@padding"/>;</xsl:when>
<xsl:otherwise>
<xsl:if test="@padTop">padding-top:<xsl:value-of select="@padTop"/>;</xsl:if>
<xsl:if test="@padRight">padding-right:<xsl:value-of select="@padRight"/>;</xsl:if>
<xsl:if test="@padBottom">padding-bottom:<xsl:value-of select="@padBottom"/>;</xsl:if>
<xsl:if test="@padLeft">padding-left:<xsl:value-of select="@padLeft"/>;</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="pos">
<xsl:choose>
<xsl:when test="@pos = 'left'">float:left;</xsl:when>
<xsl:when test="@pos = 'right'">float:right;</xsl:when>
<xsl:when test="@pos = 'center'">margin:0 auto;</xsl:when>
<xsl:when test="@pos">position:<xsl:value-of select="@pos"/>;</xsl:when>
<xsl:when test="$left != '' or $top != ''">position:absolute;</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="style">
<xsl:if test="$component = 'machine'">overflow:auto;width:100%;</xsl:if>
<xsl:if test="@background">
<xsl:if test="@background = 'default'">background-color:<xsl:value-of select="$BGNDCOLOR"/>;</xsl:if>
<xsl:if test="@background != 'default'">background-color:<xsl:value-of select="@background"/>;</xsl:if>
</xsl:if>
<xsl:if test="@style"><xsl:value-of select="@style"/></xsl:if>
</xsl:variable>
<xsl:variable name="componentClass">
<xsl:value-of select="$APPCLASS"/><xsl:text>-</xsl:text><xsl:value-of select="$component"/><xsl:text> </xsl:text><xsl:value-of select="$APPCLASS"/><xsl:text>-component</xsl:text>
</xsl:variable>
<div id="{$id}" class="{$componentClass}" style="{$width}{$height}{$pos}{$left}{$top}{$padding}">
<xsl:if test="$component = 'machine'">
<xsl:apply-templates select="name" mode="machine"/>
</xsl:if>
<xsl:if test="$component != 'machine'">
<xsl:apply-templates select="name" mode="component"/>
</xsl:if>
<div class="{$APPCLASS}-container" style="{$border}{$style}">
<xsl:if test="$class != '' and $component != 'machine'">
<div class="{$APPCLASS}-{$class}-object" data-value="{{id:'{$id}',name:'{$name}'{$parms}}}"> </div>
</xsl:if>
<xsl:if test="control">
<div class="{$APPCLASS}-controls">
<xsl:apply-templates select="control" mode="component"/>
</div>
</xsl:if>
<xsl:apply-templates><xsl:with-param name="machine" select="$machine"/></xsl:apply-templates>
</div>
<xsl:if test="$component = 'machine'">
<xsl:choose>
<xsl:when test="$url != ''"><div class="{$APPCLASS}-reference">[<a href="{$url}">XML</a>]</div></xsl:when>
<xsl:otherwise/>
</xsl:choose>
<div class="{$APPCLASS}-copyright">
<a href="http://{$SITEHOST}/{$APPCLASS}" target="_blank">C1Pjs</a> v<xsl:value-of select="$APPVERSION"/> © 2012-2017 by <a href="http://twitter.com/jeffpar" target="_blank">@jeffpar</a>
</div>
<div style="clear:both"> </div>
</xsl:if>
</div>
</xsl:template>
<xsl:template match="name" mode="machine">
<xsl:variable name="pos">
<xsl:choose>
<xsl:when test="@pos = 'center'">text-align:center;</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<h3 style="{$pos}"><xsl:apply-templates/></h3>
</xsl:template>
<xsl:template match="name" mode="component">
<div class="{$APPCLASS}-name"><xsl:apply-templates/></div>
</xsl:template>
<xsl:template match="control" mode="component">
<xsl:variable name="type">
type:'<xsl:value-of select="@type"/>'
</xsl:variable>
<xsl:variable name="binding">
binding:'<xsl:value-of select="@binding"/>'
</xsl:variable>
<xsl:variable name="border">
<xsl:choose>
<xsl:when test="@border = '1'">border:1px solid black;</xsl:when>
<xsl:when test="@border">border:<xsl:value-of select="@border"/>;</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="width">
<xsl:choose>
<xsl:when test="@width">width:<xsl:value-of select="@width"/>;</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="height">
<xsl:choose>
<xsl:when test="@height">height:<xsl:value-of select="@height"/>;</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="left">
<xsl:choose>
<xsl:when test="@left">left:<xsl:value-of select="@left"/>;</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="top">
<xsl:choose>
<xsl:when test="@top">top:<xsl:value-of select="@top"/>;</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="pos">
<xsl:choose>
<xsl:when test="$left != '' or $top != ''">position:absolute;</xsl:when>
<xsl:when test="@pos = 'left'">float:left;</xsl:when>
<xsl:when test="@pos = 'right'">float:right;</xsl:when>
<xsl:when test="@pos = 'center'">margin:0 auto;</xsl:when>
<xsl:when test="@pos"><xsl:value-of select="@pos"/>;</xsl:when>
<xsl:otherwise><xsl:if test="$left = ''">float:left;</xsl:if></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="style">
<xsl:choose>
<xsl:when test="@style"><xsl:value-of select="@style"/></xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<div class="{$APPCLASS}-control" style="{$pos}{$left}{$top}">
<xsl:variable name="fontsize">
<xsl:choose>
<xsl:when test="@size = 'large'">font-size:<xsl:value-of select="@size"/>;</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="subclass">
<xsl:if test="@label"><xsl:text> </xsl:text><xsl:value-of select="$APPCLASS"/><xsl:text>-label</xsl:text></xsl:if>
</xsl:variable>
<xsl:variable name="labelwidth">
<xsl:if test="@labelwidth">width:<xsl:value-of select="@labelwidth"/>;</xsl:if>
</xsl:variable>
<xsl:variable name="labelstyle">
<xsl:if test="@labelstyle"><xsl:value-of select="@labelstyle"/></xsl:if>
</xsl:variable>
<xsl:if test="@label">
<xsl:if test="not(@labelpos) or @labelpos = 'left'">
<div class="{$APPCLASS}-label" style="{$labelwidth}{$labelstyle}"><xsl:value-of select="@label"/></div>
</xsl:if>
</xsl:if>
<xsl:choose>
<xsl:when test="@type = 'button'">
<button class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{{{$type},{$binding}}}"><xsl:apply-templates/></button>
</xsl:when>
<xsl:when test="@type = 'list'">
<select class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{{{$type},{$binding}}}">
<xsl:apply-templates select="item" mode="component"/>
</select>
</xsl:when>
<xsl:when test="@type = 'text'">
<input class="{$APPCLASS}-binding" type="text" style="{$border}{$width}{$height}{$style}" data-value="{{{$type},{$binding}}}" value="" autocapitalize="off" autocorrect="off"/>
</xsl:when>
<xsl:when test="@type = 'submit'">
<input class="{$APPCLASS}-binding" type="submit" style="{$border}{$fontsize}{$style}" data-value="{{{$type},{$binding}}}" value="{.}"/>
</xsl:when>
<xsl:when test="@type = 'textarea'">
<textarea class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$style}" data-value="{{{$type},{$binding}}}" readonly="readonly"> </textarea>
</xsl:when>
<xsl:when test="@type = 'heading'">
<div><xsl:value-of select="."/></div>
</xsl:when>
<xsl:when test="@type = 'file'">
<form class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$style}" data-value="{{{$type},{$binding}}}">
<fieldset class="{$APPCLASS}-fieldset">
<input type="file"/>
<input type="submit" value="Mount" disabled="true"/>
</fieldset>
</form>
</xsl:when>
<xsl:when test="@type = 'separator'">
<hr/>
</xsl:when>
<xsl:when test="not(@type)">
<div style="clear:both"> </div><br/>
</xsl:when>
<xsl:otherwise>
<div class="{$APPCLASS}-binding{$subclass}" style="{$border}{$width}{$height}{$style}" data-value="{{{$type},{$binding}}}"><xsl:apply-templates/></div>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="@label">
<xsl:if test="@labelpos = 'right'">
<div class="{$APPCLASS}-label" style="{$labelwidth}{$labelstyle}"><xsl:value-of select="@label"/></div>
</xsl:if>
<div style="clear:both"> </div>
</xsl:if>
</div>
</xsl:template>
<xsl:template match="item" mode="component">
<option value="{@ref}"><xsl:value-of select="."/></option>
</xsl:template>
<xsl:template match="name">
</xsl:template>
<xsl:template match="control">
</xsl:template>
<xsl:template match="cpu[@ref]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="componentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($componentFile)/cpu"><xsl:with-param name="machine" select="$machine"/></xsl:apply-templates>
</xsl:template>
<xsl:template match="cpu[not(@ref)]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="autoStart">
<xsl:choose>
<xsl:when test="@autostart"><xsl:value-of select="@autostart"/></xsl:when>
<xsl:otherwise>null</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="component">
<xsl:with-param name="machine" select="$machine"/>
<xsl:with-param name="class" select="'cpu'"/>
<xsl:with-param name="parms">,autoStart:<xsl:value-of select="$autoStart"/></xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="keyboard[@ref]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="componentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($componentFile)/keyboard"><xsl:with-param name="machine" select="$machine"/></xsl:apply-templates>
</xsl:template>
<xsl:template match="keyboard[not(@ref)]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="model">
<xsl:choose>
<xsl:when test="@model"><xsl:value-of select="@model"/></xsl:when>
<xsl:otherwise>600</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="component">
<xsl:with-param name="machine" select="$machine"/>
<xsl:with-param name="class">keyboard</xsl:with-param>
<xsl:with-param name="parms">,model:<xsl:value-of select="$model"/></xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="serial[@ref]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="componentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($componentFile)/serial"><xsl:with-param name="machine" select="$machine"/></xsl:apply-templates>
</xsl:template>
<xsl:template match="serial[not(@ref)]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="demo">
<xsl:choose>
<xsl:when test="@demo"><xsl:value-of select="@demo"/></xsl:when>
<xsl:otherwise>false</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="component">
<xsl:with-param name="machine" select="$machine"/>
<xsl:with-param name="class">serial</xsl:with-param>
<xsl:with-param name="parms">,demo:<xsl:value-of select="$demo"/></xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="disk[@ref]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="componentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($componentFile)/disk"><xsl:with-param name="machine" select="$machine"/></xsl:apply-templates>
</xsl:template>
<xsl:template match="disk[not(@ref)]">
<xsl:param name="machine" select="''"/>
<xsl:call-template name="component">
<xsl:with-param name="machine" select="$machine"/>
<xsl:with-param name="class">disk</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="rom[@ref]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="componentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($componentFile)/rom"><xsl:with-param name="machine" select="$machine"/></xsl:apply-templates>
</xsl:template>
<xsl:template match="rom[not(@ref)]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="size">
<xsl:choose>
<xsl:when test="@size"><xsl:value-of select="@size"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="image">
<xsl:choose>
<xsl:when test="@image"><xsl:value-of select="@image"/></xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="component">
<xsl:with-param name="machine" select="$machine"/>
<xsl:with-param name="class">rom</xsl:with-param>
<xsl:with-param name="parms">,size:<xsl:value-of select="$size"/>,image:'<xsl:value-of select="$image"/>'</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="ram[@ref]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="componentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($componentFile)/ram"><xsl:with-param name="machine" select="$machine"/></xsl:apply-templates>
</xsl:template>
<xsl:template match="ram[not(@ref)]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="size">
<xsl:choose>
<xsl:when test="@size"><xsl:value-of select="@size"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="component">
<xsl:with-param name="machine" select="$machine"/>
<xsl:with-param name="class">ram</xsl:with-param>
<xsl:with-param name="parms">,size:<xsl:value-of select="$size"/></xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="video[@ref]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="componentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($componentFile)/video"><xsl:with-param name="machine" select="$machine"/></xsl:apply-templates>
</xsl:template>
<xsl:template match="video[not(@ref)]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="model">
<xsl:choose>
<xsl:when test="@model"><xsl:value-of select="@model"/></xsl:when>
<xsl:otherwise>600</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="screenWidth">
<xsl:choose>
<xsl:when test="@screenwidth"><xsl:value-of select="@screenwidth"/></xsl:when>
<xsl:when test="@screenWidth"><xsl:value-of select="@screenWidth"/></xsl:when>
<xsl:otherwise>256</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="screenHeight">
<xsl:choose>
<xsl:when test="@screenheight"><xsl:value-of select="@screenheight"/></xsl:when>
<xsl:when test="@screenHeight"><xsl:value-of select="@screenHeight"/></xsl:when>
<xsl:otherwise>224</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="screenColor">
<xsl:choose>
<xsl:when test="@screencolor"><xsl:value-of select="@screencolor"/></xsl:when>
<xsl:when test="@screenColor"><xsl:value-of select="@screenColor"/></xsl:when>
<xsl:otherwise>black</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="charCols">
<xsl:choose>
<xsl:when test="@cols"><xsl:value-of select="@cols"/></xsl:when>
<xsl:otherwise>32</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="charRows">
<xsl:choose>
<xsl:when test="@rows"><xsl:value-of select="@rows"/></xsl:when>
<xsl:otherwise>32</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="charWidth">
<xsl:choose>
<xsl:when test="@charwidth"><xsl:value-of select="@charwidth"/></xsl:when>
<xsl:when test="@charWidth"><xsl:value-of select="@charWidth"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="charHeight">
<xsl:choose>
<xsl:when test="@charheight"><xsl:value-of select="@charheight"/></xsl:when>
<xsl:when test="@charHeight"><xsl:value-of select="@charHeight"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="charSet">
<xsl:choose>
<xsl:when test="@charset"><xsl:value-of select="@charset"/></xsl:when>
<xsl:when test="@charSet"><xsl:value-of select="@charSet"/></xsl:when>
<xsl:when test="@fontROM"><xsl:value-of select="@fontROM"/></xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="smoothing">
<xsl:choose>
<xsl:when test="@smoothing"><xsl:value-of select="@smoothing"/></xsl:when>
<xsl:otherwise>null</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="component">
<xsl:with-param name="machine" select="$machine"/>
<xsl:with-param name="class">video</xsl:with-param>
<xsl:with-param name="parms">,model:<xsl:value-of select="$model"/>,screenWidth:<xsl:value-of select="$screenWidth"/>,screenHeight:<xsl:value-of select="$screenHeight"/>,charCols:<xsl:value-of select="$charCols"/>,charRows:<xsl:value-of select="$charRows"/>,charWidth:<xsl:value-of select="$charWidth"/>,charHeight:<xsl:value-of select="$charHeight"/>,charSet:'<xsl:value-of select="$charSet"/>',screenColor:'<xsl:value-of select="$screenColor"/>',smoothing:<xsl:value-of select="$smoothing"/></xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="debugger[@ref]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="componentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($componentFile)/debugger"><xsl:with-param name="machine" select="$machine"/></xsl:apply-templates>
</xsl:template>
<xsl:template match="debugger[not(@ref)]">
<xsl:param name="machine" select="''"/>
<xsl:call-template name="component">
<xsl:with-param name="machine" select="$machine"/>
<xsl:with-param name="class">debugger</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="panel[@ref]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="componentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($componentFile)/panel"><xsl:with-param name="machine" select="$machine"/></xsl:apply-templates>
</xsl:template>
<xsl:template match="panel[not(@ref)]">
<xsl:param name="machine" select="''"/>
<xsl:call-template name="component">
<xsl:with-param name="machine" select="$machine"/>
<xsl:with-param name="class">panel</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="computer[@ref]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="componentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($componentFile)/computer"><xsl:with-param name="machine" select="$machine"/></xsl:apply-templates>
</xsl:template>
<xsl:template match="computer[not(@ref)]">
<xsl:param name="machine" select="''"/>
<xsl:variable name="modules">
[<xsl:for-each select="module">
{<xsl:call-template name="module"/>}
<xsl:if test="position() != last()">,</xsl:if>
</xsl:for-each>]
</xsl:variable>
<xsl:call-template name="component">
<xsl:with-param name="machine" select="$machine"/>
<xsl:with-param name="class">computer</xsl:with-param>
<xsl:with-param name="parms">,modules:<xsl:value-of select="$modules"/></xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="module">
type:'<xsl:value-of select="@type"/>',refID:'<xsl:value-of select="@refid"/>'<xsl:if test="@start">,start:<xsl:value-of select="@start"/>,end:<xsl:value-of select="@end"/></xsl:if>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,162 @@
@CHARSET "UTF-8";
.page {
margin: 2% 2%;
padding: 2% 2%;
min-width: 30em;
overflow: auto;
font-size: large;
font-family: Helvetica, Arial, sans-serif;
background: #303030;
color: #ccc;
}
.page-header {
}
.page-header-title {
text-align: center;
}
.page a {
color: #7fc07f;
text-decoration: none;
}
a.footlink, a.paralink {
text-decoration: none;
}
a.footlink:link, a.paralink:link {
color: blue;
}
a.footlink:visited, a.paralink:visited {
color: blue;
}
.galleryitem {
float: left;
width: 200px;
}
.item {
float: left;
width: 2em;
text-indent: 1em;
}
.list {
margin-left: 3em;
text-indent: 0;
text-align: justify;
}
ul {
list-style: none;
}
div.pnumber {
float: left;
width: 2em;
text-indent: 1em;
}
div.pitem {
margin-left: 10em;
}
p.indent, .justified p {
text-indent: 2em;
text-align: justify;
line-height: 1.5em;
}
p.noindent {
text-indent: 0;
text-align: justify;
}
p.center, .center {
text-align: center;
}
li.para {
margin-top: 1em;
margin-bottom: 1em;
}
.left {
text-align: left;
}
.right {
text-align: right;
}
blockquote.tag {
font-size: small;
font-family: Monaco, Fixed, monospace;
margin-top: 0;
margin-bottom: 0;
}
.blockquote {
padding-left: 1em;
text-indent: 0;
text-align: justify;
}
.italics {
font-style: italic;
}
.medium {
font-size: medium;
}
.small {
font-size: x-small;
}
.smallcaps {
font-variant: small-caps;
}
.strike {
text-decoration: line-through;
}
.summation, .bracelist {
display: inline-block;
position: relative;
vertical-align: middle;
text-align: center;
margin-bottom: 0.5ex;
text-indent: 0;
}
.bracelist-symbol {
font-size: 3em;
vertical-align: -40%;
}
.summation .summation-lower, .summation .summation-upper, .bracelist-item {
display: block;
font-size: 75%;
text-align: center;
}
.summation .summation-upper {
margin-bottom: 0;
margin-left: 0.8ex;
font-style: italic;
}
.summation .summation-lower{
margin-bottom: -0.6ex;
font-style: italic;
}
.summation .summation-symbol {
font-size: 2em;
}
p sup {
vertical-align: baseline;
position: relative;
bottom: .5em;
font-size: small;
}
p sub {
vertical-align: baseline;
position: relative;
bottom: -.5em;
font-size: small;
}
.footnote {
font-size: medium;
text-indent: 1em;
text-align: justify;
margin-top: .5em;
}
.image-right {
float: right;
margin-left: 1em;
margin-top: 1em;
margin-bottom: 1em;
}
.image-caption {
font-size: small;
text-align: center;
}

View file

@ -0,0 +1,452 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;"> <!ENTITY ne "&#8800;"> <!ENTITY le "&#8804;"> <!ENTITY ge "&#8805;">
<!ENTITY times "&#215;"> <!ENTITY sdot "&#8901;"> <!ENTITY divide "&#247;">
<!ENTITY copy "&#169;"> <!ENTITY Sigma "&#931;"> <!ENTITY sigma "&#963;"> <!ENTITY sum "&#8721;"> <!ENTITY lbrace "&#123;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template name="documentStyles">
<link rel="stylesheet" type="text/css" href="/versions/c1pjs/1.37.1/document.css"/>
</xsl:template>
<xsl:template match="title">
<h1><xsl:apply-templates/></h1>
</xsl:template>
<xsl:template name="p">
<xsl:if test="@id">
<a name="{@id}"></a>
</xsl:if>
<xsl:choose>
<xsl:when test="not(@class)">
<p><xsl:apply-templates/></p>
</xsl:when>
<xsl:otherwise>
<p class="{@class}"><xsl:apply-templates/></p>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="p">
<xsl:call-template name="p"/>
</xsl:template>
<xsl:template match="br">
<br/>
</xsl:template>
<xsl:template match="p[@number]">
<div class="pnumber">
<xsl:choose>
<xsl:when test="not(@number) or @number = ''">&nbsp;</xsl:when>
<xsl:otherwise><xsl:value-of select="@number"/></xsl:otherwise>
</xsl:choose>
</div>
<div class="pitem">
<xsl:call-template name="p"/>
</div>
</xsl:template>
<xsl:template match="span">
<xsl:choose>
<xsl:when test="not(@class)">
<span><xsl:apply-templates/></span>
</xsl:when>
<xsl:when test="@class = 'italics'">
<em><xsl:apply-templates/></em>
</xsl:when>
<xsl:otherwise>
<span class="{@class}"><xsl:apply-templates/></span>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="h2">
<h2><xsl:apply-templates/></h2>
</xsl:template>
<xsl:template match="h3">
<h3><xsl:apply-templates/></h3>
</xsl:template>
<xsl:template match="h4">
<h4><xsl:apply-templates/></h4>
</xsl:template>
<xsl:template match="h5">
<h5><xsl:apply-templates/></h5>
</xsl:template>
<xsl:template match="h6">
<h6><xsl:apply-templates/></h6>
</xsl:template>
<xsl:template match="em">
<em><xsl:apply-templates/></em>
</xsl:template>
<xsl:template match="strong">
<strong><xsl:apply-templates/></strong>
</xsl:template>
<xsl:template match="a">
<a href="{@href}" target="{@target}"><xsl:apply-templates/></a>
</xsl:template>
<xsl:template match="ol">
<blockquote><ol><xsl:apply-templates/></ol></blockquote>
</xsl:template>
<xsl:template match="ul">
<blockquote><ul><xsl:apply-templates/></ul></blockquote>
</xsl:template>
<xsl:template match="li">
<li><xsl:apply-templates/></li>
</xsl:template>
<xsl:template match="img">
<div><img src="{@src}" alt="image"/></div>
</xsl:template>
<xsl:template match="pre">
<pre><xsl:apply-templates/></pre>
</xsl:template>
<xsl:template match="figure">
<xsl:choose>
<xsl:when test="@pos">
<div class="{@pos}"><img src="{@ref}" alt="{.}"/><br/><xsl:value-of select="."/></div>
</xsl:when>
<xsl:otherwise>
<div><img src="{@ref}" alt="{.}"/><br/><xsl:value-of select="."/></div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="sub">
<sub><xsl:apply-templates/></sub>
</xsl:template>
<xsl:template match="sup">
<sup><xsl:apply-templates/></sup>
</xsl:template>
<xsl:template match="lt">&lt;</xsl:template>
<xsl:template match="gt">&gt;</xsl:template>
<xsl:template match="ne">&ne;</xsl:template>
<xsl:template match="le">&le;</xsl:template>
<xsl:template match="ge">&ge;</xsl:template>
<xsl:template match="times">&times;</xsl:template>
<xsl:template match="dot">&sdot;</xsl:template>
<xsl:template match="divide">&divide;</xsl:template>
<xsl:template match="sigma">&sigma;</xsl:template>
<xsl:template match="summation">
<span class="summation">
<span class="summation-upper"><xsl:value-of select="@upper"/></span>
<span class="summation-symbol">&sum;</span>
<span class="summation-lower"><xsl:value-of select="@lower"/></span>
</span>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="bracelist">
<span class="bracelist-symbol">&lbrace;</span>
<span class="bracelist">
<xsl:for-each select="item">
<span class="bracelist-item"><xsl:apply-templates/></span>
</xsl:for-each>
</span>
</xsl:template>
<xsl:template match="footlink">
<xsl:variable name="docID" select="/document/@id"/>
<a class="footlink" id="fn{$docID}_ref{@n}" href="#fn{$docID}_{@n}"><sup><xsl:if test="@quoted"><xsl:text>[</xsl:text></xsl:if><xsl:value-of select="@n"/><xsl:if test="@quoted"><xsl:text>]</xsl:text></xsl:if></sup></a>
</xsl:template>
<xsl:template match="footnote">
<xsl:variable name="docID" select="/document/@id"/>
<div class="footnote"><a id="fn{$docID}_{@n}" href="#fn{$docID}_ref{@n}"><sup><xsl:value-of select="@n"/></sup></a><xsl:text> </xsl:text>
<xsl:apply-templates/>
</div>
</xsl:template>
<xsl:template name="authors">
<xsl:for-each select="author"><xsl:if test="position() != 1"><xsl:text>, </xsl:text></xsl:if><xsl:if test="position() != 1 and position() = last()"><xsl:text>and </xsl:text></xsl:if><xsl:value-of select="."/></xsl:for-each>
</xsl:template>
<xsl:template name="formatDate">
<xsl:param name="date"/>
<xsl:param name="format">MDY</xsl:param>
<xsl:variable name="year">
<xsl:value-of select="substring-before($date,'-')"/>
</xsl:variable>
<xsl:variable name="mon-day">
<xsl:value-of select="substring-after($date,'-')"/>
</xsl:variable>
<xsl:variable name="mon">
<xsl:value-of select="substring-before($mon-day,'-')"/>
</xsl:variable>
<xsl:variable name="full-day">
<xsl:value-of select="substring-after($mon-day,'-')"/>
</xsl:variable>
<xsl:variable name="day">
<xsl:choose>
<xsl:when test="substring($full-day,1,1) = '0'"><xsl:value-of select="substring($full-day,2)"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$full-day"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="$mon = '01'">January </xsl:when>
<xsl:when test="$mon = '02'">February </xsl:when>
<xsl:when test="$mon = '03'">March </xsl:when>
<xsl:when test="$mon = '04'">April </xsl:when>
<xsl:when test="$mon = '05'">May </xsl:when>
<xsl:when test="$mon = '06'">June </xsl:when>
<xsl:when test="$mon = '07'">July </xsl:when>
<xsl:when test="$mon = '08'">August </xsl:when>
<xsl:when test="$mon = '09'">September </xsl:when>
<xsl:when test="$mon = '10'">October </xsl:when>
<xsl:when test="$mon = '11'">November </xsl:when>
<xsl:when test="$mon = '12'">December </xsl:when>
<xsl:when test="$mon = '00'"/> </xsl:choose>
<xsl:if test="$day != '0' and $format = 'MDY'">
<xsl:value-of select="$day"/><xsl:text>, </xsl:text>
</xsl:if>
<xsl:value-of select="$year"/>
</xsl:template>
<xsl:template match="gallery">
<h2><xsl:value-of select="description"/></h2>
<div class="gallery">
<xsl:apply-templates select="item" mode="gallery"/>
</div>
<div style="clear:both;"></div>
</xsl:template>
<xsl:template match="item" mode="gallery">
<div class="galleryitem">
<a href="{@ref}"><img src="/versions/images/current/pdf-192.jpg" alt="{.}"/></a><br/>
<div style="font-size:small; text-align:center;"><xsl:value-of select="."/></div>
</div>
</xsl:template>
<xsl:template match="list[@type = 'timeline']">
<xsl:if test="not(description)">
<h2>Timeline</h2>
</xsl:if>
<xsl:if test="description">
<h2><xsl:value-of select="description"/></h2>
</xsl:if>
<blockquote>
<xsl:apply-templates select="item" mode="timeline"/>
</blockquote>
</xsl:template>
<xsl:template match="item" mode="timeline">
<xsl:if test="@ref">
<xsl:variable name="documentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($documentFile)/document" mode="withDate">
<xsl:with-param name="itemRef" select="@ref"/>
</xsl:apply-templates>
</xsl:if>
<xsl:if test="not(@ref)">
<h3><xsl:call-template name="formatDate"><xsl:with-param name="date" select="@date"/></xsl:call-template></h3>
<blockquote>
<xsl:value-of select="."/>
</blockquote>
</xsl:if>
</xsl:template>
<xsl:template match="list[@type = 'people']">
<xsl:if test="not(description)">
<h2>People</h2>
</xsl:if>
<xsl:if test="description">
<h2><xsl:value-of select="description"/></h2>
</xsl:if>
<blockquote>
<xsl:apply-templates select="item" mode="people"/>
</blockquote>
</xsl:template>
<xsl:template match="item" mode="people">
<h3><xsl:value-of select="name"/></h3>
<xsl:apply-templates select="list"/>
</xsl:template>
<xsl:template match="list[@type = 'documents']">
<xsl:if test="description"><h2><xsl:value-of select="description"/></h2></xsl:if>
<ul>
<xsl:apply-templates select="item" mode="document"/>
</ul>
</xsl:template>
<xsl:template match="item" mode="document">
<xsl:variable name="documentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($documentFile)/document">
<xsl:with-param name="itemRef" select="@ref"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="document">
<xsl:param name="itemRef"/>
<li>
<xsl:call-template name="documentSummary"><xsl:with-param name="itemRef" select="$itemRef"/></xsl:call-template>
</li>
</xsl:template>
<xsl:template match="document" mode="withDate">
<xsl:param name="itemRef"/>
<h3><xsl:call-template name="formatDate"><xsl:with-param name="date" select="date"/><xsl:with-param name="format" select="MY"/></xsl:call-template></h3>
<blockquote>
<p>
<xsl:call-template name="documentSummary"><xsl:with-param name="itemRef" select="$itemRef"/><xsl:with-param name="multiLine" select="'true'"/></xsl:call-template>
</p>
</blockquote>
</xsl:template>
<xsl:template name="documentSummary">
<xsl:param name="itemRef"/>
<xsl:param name="multiLine">false</xsl:param>
<xsl:choose>
<xsl:when test="content|include">
<a href="{$itemRef}"><xsl:value-of select="title"/></a>
<xsl:if test="@ref">
<span class="small">
<xsl:text> [</xsl:text><a href="{@ref}">Original</a><xsl:text>]</xsl:text>
</span>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<a href="{$itemRef}"><xsl:value-of select="title"/></a>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="copy">
<span class="small">
<xsl:text> [</xsl:text><a href="{copy/@ref}"><xsl:value-of select="copy"/></a><xsl:text>]</xsl:text>
</span>
</xsl:if>
<xsl:if test="author"><xsl:if test="$multiLine = 'true'"><br/></xsl:if><span class="medium"><xsl:text> by </xsl:text><xsl:call-template name="authors"/></span></xsl:if>
<xsl:if test="source">
<span class="small">
<br/>
<xsl:text>[Source: </xsl:text>
<xsl:if test="site">
<a href="{site/@url}"><xsl:value-of select="site"/></a>
</xsl:if>
<xsl:if test="not(site)">
<a href="{source/@url}"><xsl:value-of select="source"/></a>
</xsl:if>
<xsl:text>]</xsl:text>
</span>
</xsl:if>
</xsl:template>
<xsl:template match="list[@type = 'resources']">
<xsl:if test="not(description)">
<h2>Resources</h2>
</xsl:if>
<xsl:if test="description">
<h2><xsl:value-of select="description"/></h2>
</xsl:if>
<blockquote>
<xsl:apply-templates select="item" mode="resources"/>
</blockquote>
</xsl:template>
<xsl:template match="item" mode="resources">
<h3><xsl:value-of select="description"/></h3>
<xsl:apply-templates select="list"/>
</xsl:template>
<xsl:template match="list[@type = 'links']">
<xsl:if test="description">
<h4><xsl:value-of select="description"/></h4>
</xsl:if>
<ul>
<xsl:apply-templates select="item" mode="links"/>
</ul>
</xsl:template>
<xsl:template match="item" mode="links">
<li><a href="{@ref}"><xsl:value-of select="."/></a></li>
</xsl:template>
<xsl:template match="list[not(@type)]">
<xsl:if test="description">
<h2><xsl:value-of select="description"/></h2>
</xsl:if>
<blockquote>
<xsl:apply-templates select="item|tag" mode="outer"/>
</blockquote>
</xsl:template>
<xsl:template match="item" mode="outer">
<xsl:if test="description">
<h3><xsl:value-of select="description"/></h3>
</xsl:if>
<xsl:apply-templates select="list|item|tag" mode="inner"/>
</xsl:template>
<xsl:template match="list" mode="inner">
<xsl:if test="description">
<h4><xsl:value-of select="description"/></h4>
</xsl:if>
<ul>
<xsl:apply-templates select="list|item|para|tag" mode="inner"/>
</ul>
</xsl:template>
<xsl:template name="innerlist">
<xsl:if test="description">
<xsl:value-of select="description"/>
</xsl:if>
<ul>
<xsl:apply-templates select="list|item|para|tag" mode="inner"/>
</ul>
</xsl:template>
<xsl:template match="item" mode="inner">
<xsl:choose>
<xsl:when test="@ref">
<li><a href="{@ref}"><xsl:apply-templates/></a></li>
</xsl:when>
<xsl:when test="description">
<li><xsl:call-template name="innerlist"/></li>
</xsl:when>
<xsl:otherwise>
<li><xsl:apply-templates/></li>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="para" mode="inner">
<li class="para"><xsl:apply-templates/></li>
</xsl:template>
<xsl:template match="tag" mode="outer">
<xsl:call-template name="tag"/>
</xsl:template>
<xsl:template match="tag" mode="inner">
<xsl:call-template name="tag"/>
</xsl:template>
<xsl:template name="tag">
<blockquote class="tag">
<xsl:text>&lt;</xsl:text><xsl:if test="@href"><a href="{@href}"><xsl:value-of select="@name"/></a></xsl:if><xsl:if test="not(@href)"><xsl:value-of select="@name"/></xsl:if><xsl:for-each select="attr"><xsl:text> </xsl:text><xsl:value-of select="@name"/><xsl:text>="</xsl:text><xsl:value-of select="@value"/><xsl:text>"</xsl:text></xsl:for-each>
<xsl:choose>
<xsl:when test="tag"><xsl:text>&gt;</xsl:text><xsl:apply-templates mode="inner"/><xsl:text>&lt;/</xsl:text><xsl:value-of select="@name"/><xsl:text>&gt;</xsl:text></xsl:when>
<xsl:when test="normalize-space(.) != ''"><xsl:text>&gt;</xsl:text><xsl:value-of select="."/><xsl:text>&lt;/</xsl:text><xsl:value-of select="@name"/><xsl:text>&gt;</xsl:text></xsl:when>
<xsl:otherwise><xsl:text>/&gt;</xsl:text></xsl:otherwise>
</xsl:choose>
</blockquote>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;"> <!ENTITY sect "&#167;"> <!ENTITY copy "&#169;"> <!ENTITY para "&#182;"> <!ENTITY ndash "&#8211;"> <!ENTITY mdash "&#8212;">
<!ENTITY lsquo "&#8216;"> <!ENTITY rsquo "&#8217;"> <!ENTITY ldquo "&#8220;"> <!ENTITY rdquo "&#8221;"> <!ENTITY dagger "&#8224;"> <!ENTITY Dagger "&#8225;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output doctype-system="about:legacy-compat" method="html"/>
<xsl:include href="/versions/c1pjs/1.37.1/common.xsl"/>
<xsl:include href="/versions/c1pjs/1.37.1/components.xsl"/>
<xsl:template match="/machine">
<xsl:variable name="machineType">
<xsl:choose>
<xsl:when test="@type"><xsl:value-of select="@type"/></xsl:when>
<xsl:otherwise><xsl:value-of select="@class"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="machineClass">
<xsl:choose>
<xsl:when test="@class = 'pc' or @class = 'c1p'"><xsl:value-of select="@class"/>js</xsl:when>
<xsl:otherwise><xsl:value-of select="@class"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<html lang="en">
<head>
<title><xsl:value-of select="$SITEHOST"/></title>
<xsl:call-template name="commonStyles"/>
<xsl:call-template name="componentStyles"/>
</head>
<body>
<div class="common">
<xsl:call-template name="commonTop"/>
<div class="common-middle">
<p></p>
<div id="{@id}" class="machine {$machineType} {$machineClass}">
<xsl:call-template name="component">
<xsl:with-param name="machine" select="@id"/>
<xsl:with-param name="component" select="'machine'"/>
<xsl:with-param name="class" select="$machineClass"/>
<xsl:with-param name="parms"><xsl:if test="@parms">,<xsl:value-of select="@parms"/></xsl:if></xsl:with-param>
</xsl:call-template>
</div>
</div>
<xsl:call-template name="commonBottom"/>
</div>
<xsl:call-template name="componentScripts">
<xsl:with-param name="component">
<xsl:choose>
<xsl:when test="debugger"><xsl:value-of select="$machineType"/>-dbg</xsl:when>
<xsl:otherwise><xsl:value-of select="$machineType"/></xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,247 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2014-04-10" modified="2014-04-10" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;"> <!ENTITY sect "&#167;"> <!ENTITY copy "&#169;"> <!ENTITY para "&#182;"> <!ENTITY ndash "&#8211;"> <!ENTITY mdash "&#8212;">
<!ENTITY lsquo "&#8216;"> <!ENTITY rsquo "&#8217;"> <!ENTITY ldquo "&#8220;"> <!ENTITY rdquo "&#8221;"> <!ENTITY dagger "&#8224;"> <!ENTITY Dagger "&#8225;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output doctype-system="about:legacy-compat" method="html"/>
<xsl:include href="/versions/c1pjs/1.37.1/common.xsl"/>
<xsl:include href="/versions/c1pjs/1.37.1/components.xsl"/>
<xsl:template match="/manifest[@type = 'document']">
<html lang="en">
<head>
<title><xsl:value-of select="$SITEHOST"/></title>
<xsl:call-template name="commonStyles"/>
<xsl:call-template name="componentStyles"/>
</head>
<body>
<div class="common">
<xsl:call-template name="commonTop"/>
<div class="common-middle">
<h4>Document Manifest</h4>
<div class="common-sidebar">
<ul class="common-list-data">
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Title'"/>
<xsl:with-param name="node" select="title"/>
<xsl:with-param name="default">None</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Version'"/>
<xsl:with-param name="node" select="version"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Source'"/>
<xsl:with-param name="node" select="source"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Documents'"/>
<xsl:with-param name="node" select="document"/>
<xsl:with-param name="default"><xsl:value-of select="title"/> <xsl:if test="version != ''"><xsl:text> </xsl:text><xsl:value-of select="version"/></xsl:if></xsl:with-param>
</xsl:call-template>
</ul>
</div>
<div class="common-main">
<p><xsl:value-of select="desc"/></p>
<xsl:call-template name="commonBottom"/>
</div>
</div>
</div>
</body>
</html>
</xsl:template>
<xsl:template match="/manifest[@type = 'software' or not(@type)]">
<xsl:variable name="machineClass">
<xsl:choose>
<xsl:when test="machine/@class"><xsl:value-of select="machine/@class"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$APPCLASS"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<html lang="en">
<head>
<title><xsl:value-of select="$SITEHOST"/></title>
<xsl:call-template name="commonStyles"/>
<xsl:call-template name="componentStyles"/>
</head>
<body>
<div class="common">
<xsl:call-template name="commonTop"/>
<div class="common-middle">
<h4>Software Manifest</h4>
<div class="common-sidebar">
<ul class="common-list-data">
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Title'"/>
<xsl:with-param name="node" select="title"/>
<xsl:with-param name="default">None</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Version'"/>
<xsl:with-param name="node" select="version"/>
<xsl:with-param name="default">Unknown</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Type'"/>
<xsl:with-param name="node" select="type"/>
<xsl:with-param name="default">None</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Category'"/>
<xsl:with-param name="node" select="category"/>
<xsl:with-param name="default">None</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Created'"/>
<xsl:with-param name="node" select="creationDate"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Creators'"/>
<xsl:with-param name="node" select="creator"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label"><xsl:if test="creationDate">Updated</xsl:if><xsl:if test="not(creationDate)">Released</xsl:if></xsl:with-param>
<xsl:with-param name="node" select="releaseDate"/>
<xsl:with-param name="default">Unknown</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Company'"/>
<xsl:with-param name="node" select="company"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Authors'"/>
<xsl:with-param name="node" select="author"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Contributors'"/>
<xsl:with-param name="node" select="contributor"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Publisher'"/>
<xsl:with-param name="node" select="publisher"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'License'"/>
<xsl:with-param name="node" select="license"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Source'"/>
<xsl:with-param name="node" select="source"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Disks'"/>
<xsl:with-param name="node" select="disk"/>
<xsl:with-param name="default"><xsl:value-of select="title"/> <xsl:if test="version != ''"><xsl:text> </xsl:text><xsl:value-of select="version"/></xsl:if></xsl:with-param>
</xsl:call-template>
</ul>
</div>
<div class="common-main">
<xsl:for-each select="machine[not(@type) or @type = 'default']">
<xsl:call-template name="machine">
<xsl:with-param name="href" select="@href"/>
<xsl:with-param name="state" select="@state"/>
</xsl:call-template>
</xsl:for-each>
<xsl:if test="not(machine[not(@type) or @type = 'default'])">
<p>No default machine specified for '<xsl:value-of select="title"/>' in manifest.xml</p>
</xsl:if>
<xsl:call-template name="commonBottom"/>
</div>
</div>
</div>
<xsl:call-template name="componentScripts">
<xsl:with-param name="component">
<xsl:choose>
<xsl:when test="machine/@debugger"><xsl:value-of select="$machineClass"/>-dbg</xsl:when>
<xsl:otherwise><xsl:value-of select="$machineClass"/></xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</body>
</html>
</xsl:template>
<xsl:template name="listItem">
<xsl:param name="label"/>
<xsl:param name="node"/>
<xsl:param name="default">Unknown</xsl:param>
<xsl:if test="$node != '' or $default != ''">
<li><xsl:value-of select="$label"/>
<ul class="common-list-data-items">
<xsl:for-each select="$node">
<xsl:variable name="desc">
<xsl:choose>
<xsl:when test="desc"><xsl:value-of select="desc"/></xsl:when>
<xsl:when test="org"><xsl:value-of select="org"/></xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<li title="{$desc}">
<xsl:variable name="value">
<xsl:choose>
<xsl:when test="name">
<xsl:value-of select="name"/>
</xsl:when>
<xsl:when test="normalize-space(./text()) != ''">
<xsl:value-of select="normalize-space(./text())"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$default"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="href">
<xsl:if test="@href"><xsl:value-of select="@href"/></xsl:if>
</xsl:variable>
<xsl:choose>
<xsl:when test="$href != ''">
<a href="{$href}"><xsl:value-of select="$value"/></a>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$value"/>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="page">
<ul class="common-list-data-subitems">
<xsl:for-each select="page">
<li>
<xsl:if test="@href">
<a href="{$href}{@href}"><xsl:value-of select="."/></a>
</xsl:if>
<xsl:if test="not(@href)">
<xsl:value-of select="."/>
</xsl:if>
</li>
</xsl:for-each>
</ul>
</xsl:if>
</li>
</xsl:for-each>
<xsl:if test="not($node)">
<xsl:if test="@href">
<a href="{@href}"><xsl:value-of select="$default"/></a>
</xsl:if>
<xsl:if test="not(@href)">
<xsl:value-of select="$default"/>
</xsl:if>
</xsl:if>
</ul>
</li>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;"> <!ENTITY sect "&#167;"> <!ENTITY copy "&#169;"> <!ENTITY para "&#182;"> <!ENTITY ndash "&#8211;"> <!ENTITY mdash "&#8212;">
<!ENTITY lsquo "&#8216;"> <!ENTITY rsquo "&#8217;"> <!ENTITY ldquo "&#8220;"> <!ENTITY rdquo "&#8221;"> <!ENTITY dagger "&#8224;"> <!ENTITY Dagger "&#8225;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output doctype-system="about:legacy-compat" method="html"/>
<xsl:include href="/versions/c1pjs/1.37.1/common.xsl"/>
<xsl:include href="/versions/c1pjs/1.37.1/document.xsl"/>
<xsl:include href="/versions/c1pjs/1.37.1/components.xsl"/>
<xsl:template match="/outline">
<xsl:variable name="machineType">
<xsl:choose>
<xsl:when test="machine/@type"><xsl:value-of select="machine/@type"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$MACHINETYPE"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<html lang="en">
<head>
<title><xsl:value-of select="title"/><xsl:text> | </xsl:text><xsl:value-of select="$SITEHOST"/></title>
<xsl:call-template name="commonStyles"/>
<xsl:call-template name="documentStyles"/>
<xsl:call-template name="componentStyles"/>
</head>
<body>
<div class="common">
<div class="page justified">
<xsl:apply-templates/>
</div>
</div>
<xsl:call-template name="componentScripts">
<xsl:with-param name="component">
<xsl:choose>
<xsl:when test="debugger"><xsl:value-of select="$machineType"/>-dbg</xsl:when>
<xsl:otherwise><xsl:value-of select="$machineType"/></xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</body>
</html>
</xsl:template>
</xsl:stylesheet>