Quick turn-around for v1.18.1 to fix a CGA video config problem
This commit is contained in:
parent
cfd02bb4ae
commit
461077c5aa
25 changed files with 8182 additions and 1341 deletions
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -2474,6 +2474,16 @@ Video.prototype.reset = function()
|
|||
nMonitorType = this.chipset.getSWVideoMonitor();
|
||||
}
|
||||
|
||||
/*
|
||||
* As we noted in the constructor, when a model is specified, that takes precedence over any monitor
|
||||
* switch settings. Conversely, when no model is specified, the nCard setting is considered provisional.
|
||||
*/
|
||||
if (!this.model) {
|
||||
this.nCard = (nMonitorType == ChipSet.MONITOR.MONO? Video.CARD.MDA : Video.CARD.CGA);
|
||||
}
|
||||
|
||||
this.nModeDefault = Video.MODE.CGA_80X25;
|
||||
|
||||
switch (this.nCard) {
|
||||
case Video.CARD.VGA:
|
||||
nMonitorType = ChipSet.MONITOR.VGACOLOR;
|
||||
|
|
@ -2489,6 +2499,7 @@ Video.prototype.reset = function()
|
|||
break;
|
||||
case Video.CARD.MDA:
|
||||
nMonitorType = ChipSet.MONITOR.MONO;
|
||||
this.nModeDefault = Video.MODE.MDA_80X25;
|
||||
break;
|
||||
case Video.CARD.CGA:
|
||||
/* falls through */
|
||||
|
|
@ -2520,8 +2531,6 @@ Video.prototype.reset = function()
|
|||
this.buildFonts();
|
||||
|
||||
this.nMode = null;
|
||||
this.nModeDefault = (nMonitorType == ChipSet.MONITOR.MONO? Video.MODE.MDA_80X25 : Video.MODE.CGA_80X25);
|
||||
|
||||
this.iCellCursor = -1; // initially, there is no visible cursor cell
|
||||
this.cBlinks = -1; // initially, blinking is not active
|
||||
this.cBlinkVisible = 0; // no visible blinking characters (yet)
|
||||
|
|
|
|||
171
versions/c1pjs/1.18.1/c1p-dbg.js
Normal file
171
versions/c1pjs/1.18.1/c1p-dbg.js
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
(function(){var f;function n(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function p(a){return"0x"+n(a,2)}function q(a){return"0x"+n(a,4)}function aa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}var ba={"&":"&","<":"<",">":">",'"':""","'":"'"};
|
||||
function ca(a){return a.replace(/[&<>"']/g,function(a){return ba[a]})}var t=Date.now||function(){return+new Date};
|
||||
function u(a,b,c){var d;d=!0;var e=0,g=null,h=aa(a),k=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");d&&(k.onreadystatechange=function(){4===k.readyState&&(g=k.responseText,200==k.status||!k.status&&g.length&&"file:"==(window?window.location.protocol:"file:")||(e=k.status||-1),c&&(b?c.call(b,h,g,e,void 0):c(h,g,e,void 0)))});k.open("GET",a,d);k.send();d||(g=k.responseText,200!=k.status&&(e=k.status||-1),c&&(b?c.call(b,h,g,e,void 0):c(h,g,e,void 0)))}
|
||||
function v(a){window&&window.alert(a)}function w(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function da(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function ea(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,g=!1;a.onmousedown=function(){g||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);g=!0}}var x={init:[],show:[],exit:[]},fa=!1,ga=!0;function ha(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function y(a){x.init.push(a)}
|
||||
function ia(a){if(ga)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){v("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function z(a){!ga&&a?(ga=!0,fa&&ja("init")):ga=a}function ja(a){x[a]&&ia(x[a])}ha("onload",function(){fa=!0;ia(x.init)});ha("onpageshow",function(){ia(x.show)});ha(w("Opera")||w("iOS")?"onunload":"onbeforeunload",function(){ia(x.exit)});
|
||||
function A(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Hd=this.id.substr(0,b),this.Gd=this.id.substr(b+1)):this.Gd=this.id;this[a]=c;this.o={Ub:!1,Ta:!1,vc:!1,C:!1,Ua:!1};this.xc=null;this.o.Ua=!1;this.s={};this.m=null;this.ha=d||-1;B[B.length]=this}var ka=void 0;
|
||||
if(window){ka||(ka=window.location.search.substr(1));for(var la,ma=/\+/g,na=/([^&=]+)=?([^&]*)/g;la=na.exec(ka);)la[1].replace(ma," "),la[2].replace(ma," ")}function oa(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}function C(a){var b;b||(b=A);a.prototype=oa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var B=[];
|
||||
function pa(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<B.length;c++)if(B[c].id===a)return B[c]}return null}function D(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("({"+a+"})")}catch(c){v(c.message+" ("+a+")")}return b}window&&!window.document.ELEMENT_NODE&&(window.document.ELEMENT_NODE=1);
|
||||
function E(a,b){for(var c=F(b.parentNode,"c1pjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,g=0;g<e.length;g++){var h=e[g];if(h.nodeType===window.document.ELEMENT_NODE){var k=h.getAttribute("class");if(k)for(var l=k.split(" "),m=0;m<l.length;m++)switch(k=l[m],k){case "c1pjs-binding":(k=D(h))&&k.binding&&a.J(k.type,k.binding,h),m=l.length}}}}
|
||||
function F(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}
|
||||
A.prototype={constructor:A,parent:null,toString:function(){return this.name?this.name:this.id||this.type},J:function(a,b,c){switch(b){case "clear":return this.s[b]||(this.s[b]=c,c.onclick=function(a){return function(){a.s.print&&(a.s.print.value="")}}(this)),!0;case "print":return this.s[b]||(this.tc=this.s[b]=c,c.value="",this.i=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.Yb=function(a,b,c){this.i(a,"notice",c)}),!0;default:return!1}},log:function(){},assert:function(){},i:function(){},status:function(a){this.i(this.Gd+": "+a)},Yb:function(a,b){b||v(a)},Q:function(a){this.o.Ua||(this.o.Ub=!1!==a,this.o.Ub&&(a=this.xc,this.xc=null,a&&a()))}};function G(a,b){if(a.m){b=a===a.m?b|0:b||a.ha;var c=a.m.ha&b;return c===b||!!(c&a.m.Zi)}return!1}
|
||||
function H(a,b){if(a.o.vc)return a.o.Ta&&(a.o.Ta=!1),a.o.vc=!1;if(a.o.Ua)return a.i(a.toString()+" error"),!1;a.o.Ta=b;return a.o.Ta}function J(a,b){a.o.Ta&&(b?a.o.vc=!0:void 0===b&&a.i(a.toString()+" busy"));return a.o.Ta}function K(a,b){b&&(a.o.Ub?b():a.xc=b);return a.o.Ub}function qa(a,b){a.o.Ua=!0;a.Yb(b)}function ra(a){A.call(this,"C1PPanel",a);this.o.C=!1}C(ra);
|
||||
ra.prototype.J=function(a,b,c){return this.O&&this.O.J(a,b,c)||this.l&&this.l.J(a,b,c)||this.H&&this.H.J(a,b,c)||this.m&&this.m.J(a,b,c)?!0:A.prototype.J.call(this,a,b,c)};ra.prototype.ca=function(a,b){a&&!this.o.C&&(this.o.C=!0,this.O=b,this.l=L(b,"cpu"),this.H=L(b,"keyboard"),this.m=L(b,"debugger"),sa())};function sa(){for(var a=!1,b=F(window.document,"c1pjs","panel"),c=0;c<b.length;c++){var d=b[c],e=D(d),g=pa(e.id);g||(a=!0,g=new ra(e));E(g,d);a&&g.Q()}}y(sa);
|
||||
function ta(a){A.call(this,"C1PCPU",a);ua(this);this.o.C=!1;this.o.ia=!1;this.Dd=a.autoStart;this.Ib=0;this.rd=1;this.Na=2;this.speed=this.Ib;this.qb=1E6;this.Dc=this.Fc=30;this.Cc=5;this.Rf=1;this.nb=8;this.xd=["Slow","Fast","Max"];this.Ff=["("+this.Rf+"Mhz)","(up to "+this.nb+"Mhz)","(unlimited)"];this.Ea=[];this.ua=[];this.oc=65536;this.pc=0;this.Mb=65536;this.Nb=0;this.se=128;this.te=64;this.oe=16;this.qe=8;this.re=4;this.ue=2;this.pe=1;this.Bf=65532;this.Hb=32;this.hc=2;this.yf=0;this.qd=1;this.u=
|
||||
[this.Eg,this.Yh,this.Pi,this.j,this.j,this.$h,this.ug,this.j,this.ci,this.Xh,this.tg,this.j,this.j,this.Uh,this.rg,this.j,this.Dg,this.Zh,this.j,this.j,this.j,this.ai,this.vg,this.j,this.Hg,this.Wh,this.j,this.j,this.j,this.Vh,this.sg,this.j,this.vh,this.ng,this.j,this.j,this.Ag,this.pg,this.ii,this.j,this.ei,this.mg,this.hi,this.j,this.zg,this.jg,this.fi,this.j,this.Bg,this.og,this.j,this.j,this.j,this.qg,this.ji,this.j,this.zi,this.lg,this.j,this.j,this.j,this.kg,this.gi,this.j,this.pi,this.jh,
|
||||
this.j,this.j,this.j,this.lh,this.Rh,this.j,this.bi,this.ih,this.Qh,this.j,this.uh,this.fh,this.Oh,this.j,this.Fg,this.kh,this.j,this.j,this.j,this.mh,this.Sh,this.j,this.Jg,this.hh,this.j,this.j,this.j,this.gh,this.Ph,this.j,this.qi,this.Xd,this.j,this.j,this.j,this.Zd,this.ni,this.j,this.di,this.Wd,this.mi,this.j,this.th,this.Td,this.ki,this.j,this.Gg,this.Yd,this.j,this.j,this.j,this.$d,this.oi,this.j,this.Bi,this.Vd,this.j,this.j,this.j,this.Ud,this.li,this.j,this.j,this.Fi,this.j,this.j,this.Ni,
|
||||
this.Hi,this.Ki,this.j,this.eh,this.j,this.Ti,this.j,this.Mi,this.Ci,this.Ji,this.j,this.wg,this.Gi,this.j,this.j,this.Oi,this.Ii,this.Li,this.j,this.Vi,this.Ei,this.Ui,this.j,this.j,this.Di,this.j,this.j,this.Lh,this.Ah,this.Gh,this.j,this.Mh,this.Ch,this.Hh,this.j,this.Ri,this.zh,this.Qi,this.j,this.Jh,this.wh,this.Eh,this.j,this.xg,this.Bh,this.j,this.j,this.Nh,this.Dh,this.Ih,this.j,this.Kg,this.yh,this.Si,this.j,this.Kh,this.xh,this.Fh,this.j,this.Xg,this.Pg,this.j,this.j,this.Yg,this.Rg,this.ah,
|
||||
this.j,this.sh,this.Og,this.dh,this.j,this.Wg,this.Lg,this.Zg,this.j,this.Cg,this.Qg,this.j,this.j,this.j,this.Sg,this.bh,this.j,this.Ig,this.Ng,this.j,this.j,this.j,this.Mg,this.$g,this.j,this.Ug,this.ee,this.j,this.j,this.Vg,this.ge,this.ph,this.j,this.rh,this.de,this.Th,this.j,this.Tg,this.ae,this.nh,this.j,this.yg,this.fe,this.j,this.j,this.j,this.he,this.qh,this.j,this.Ai,this.ce,this.j,this.j,this.j,this.be,this.oh,this.j];this.Ef=[7,6,0,0,0,3,5,0,3,2,2,0,0,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,
|
||||
7,0,3,6,0,0,3,3,5,0,4,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,5,0,3,2,2,0,3,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,5,0,4,2,2,0,5,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,0,6,0,0,3,3,3,0,2,0,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,0,4,0,0,2,6,2,0,3,3,3,0,2,2,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,4,4,4,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0]}C(ta);f=ta.prototype;
|
||||
f.reset=function(a){this.o.ia&&this.U();ua(this);var b=this.Bf;this.d=this.a[b]|this.a[b+1]<<8;this.o.Ua=!1;this.m?this.m.reset():a&&(!0===this.Dd||null===this.Dd&&!this.m&&void 0===this.s.run)&&this.Aa()};
|
||||
f.J=function(a,b,c){a=!1;switch(b){case "run":this.s[b]=c;c.onclick=function(a){return function(){a.o.ia?a.U():a.Aa()}}(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.s[b]=c;a=!0;break;case "setSpeed":this.s[b]=c,c.onclick=function(a){return function(){M(a,a.speed>=a.Na?a.Ib:a.speed+1,!0)}}(this),a=!0}return a};
|
||||
f.W=function(a,b,c){this.a=a;this.aa=b;this.sc=c-b+1;this.$a=this.aa+this.sc;this.aa?v("unsupported CPU address buffer offset ("+this.aa+")"):this.Q()};f.ca=function(a,b){if(a&&!this.o.C){this.O=b;(this.m=L(b,"debugger"))&&this.m.Pf();var c=L(b,"video");c&&(this.uc=function(a){return function(){va(a)}}(c),this.X=function(a){return function(){a.X()}}(c));this.o.C=!0;this.reset(!0);this.update()}};function wa(a,b,c,d,e){0>xa(a.Ea,b,c,d,e)&&(a.oc>b&&(a.oc=b),a.pc<c&&(a.pc=c),a.Ea.push([b,c,d,e]))}
|
||||
function ya(a,b,c){for(var d=0;d<a.Ea.length;d++)b>=a.Ea[d][0]&&b<=a.Ea[d][1]&&a.Ea[d][3].call(a.Ea[d][2],b,c)}function N(a,b,c,d,e){0>xa(a.ua,b,c,d,e)&&(a.Mb>b&&(a.Mb=b),a.Nb<c&&(a.Nb=c),a.ua.push([b,c,d,e]))}function za(a,b,c){for(var d=0;d<a.ua.length;d++)b>=a.ua[d][0]&&b<=a.ua[d][1]&&a.ua[d][3].call(a.ua[d][2],b,c)}function xa(a,b,c,d,e){for(var g=0;g<a.length;g++)if(a[g][0]==b&&a[g][1]==c&&a[g][2]==d&&a[g][3]==e)return g;return-1}
|
||||
function M(a,b,c){void 0!==b&&(a.speed=b,a.s.setSpeed&&(a.s.setSpeed.innerHTML=a.xd[2<=b?0:b+1]),a.i("running at "+a.xd[b].toLowerCase()+" speed "+a.Ff[b]),c&&a.X());a.Za=0;a.Jd=t();Aa(a)}f.uc=function(){};f.X=function(){};function O(a,b,c,d){void 0!==a.s[b]&&(void 0===d&&(d=1),c="0000"+c.toString(16),a.s[b].innerHTML=c.slice(c.length-d).toUpperCase())}
|
||||
function Ba(a){O(a,"A",a.e,2);O(a,"X",a.n,2);O(a,"Y",a.q,2);var b=Ca(a);O(a,"C",b&a.pe?1:0);O(a,"Z",b&a.ue?1:0);O(a,"I",b&a.re?1:0);O(a,"D",b&a.qe?1:0);O(a,"B",b&a.oe?1:0);O(a,"V",b&a.te?1:0);O(a,"N",b&a.se?1:0);O(a,"S",a.r,4);O(a,"PC",a.d,4);a.s.speed&&a.wa&&(a.s.speed.innerHTML=a.wa.toFixed(1)+"Mhz")}
|
||||
function Aa(a,b){var c=a.Fc;c<a.Dc&&(c=a.Dc);c<a.Cc&&(c=a.Cc);var d=1;b&&a.speed>a.Ib&&a.wa&&(d=a.wa);d>a.nb&&a.speed<a.Na&&(d=a.nb);a.Tf=Math.round(1E3/a.Fc);a.Xb=Math.floor(a.qb/c*d);a.yc=Math.floor(a.qb/a.Fc*d);a.Ld=Math.floor(a.qb/a.Dc*d);a.Kd=Math.floor(a.qb/a.Cc*d);b||(a.Xa=a.yc,a.pb=a.Ld,a.ob=a.Kd);a.Bc=0}
|
||||
function Da(a){var b=t(),c=a.Tf;a.rb&&(c=Math.round(c*a.rb/a.yc));c-=b-a.Wf;if(b-=a.Jd)a.wa=Math.round(a.Za/(100*b))/10,864E5<=b&&M(a);0>c?c=0:a.speed==a.rd?a.wa<=a.nb&&(c=0):a.speed==a.Na&&(c=0);a.Bc+=a.rb;return c}
|
||||
f.Aa=function(){if(H(this,!0)){this.o.ia||(M(this),this.O&&this.O.start(),this.o.ia=!0,this.s.run&&(this.s.run.innerHTML="Halt"),this.X());this.Bc>=this.qb&&Aa(this,!0);this.rb=0;this.Wf=t();try{do{this.step(this.Xb);var a=this.xa-this.G;this.Za+=a;this.rb+=a;this.xa=this.G=0;this.pb-=this.Xb;0>=this.pb&&(this.pb+=this.Ld,this.uc());this.ob-=this.Xb;0>=this.ob&&(this.ob+=this.Kd,Ba(this));this.Xa-=this.Xb;if(0>=this.Xa){this.Xa+=this.yc;break}}while(this.o.ia)}catch(b){this.U();this.update();H(this,
|
||||
!1);qa(this,b.stack||b.message);return}setTimeout(function(a){return function(){a.Aa()}}(this),Da(this))}else this.update(),this.O&&this.O.stop(this.Jd,this.Za)};
|
||||
f.step=function(a){var b=!0;this.b=this.h=-1;var c;if(c=a&&this.m)c=this.m,c=0<c.ta.length||0<c.Da.length||0<c.Ga.length;this.xa=this.G=a;do{a=this.a[this.d];var d;if(d=c){d=this.m;var e=a,g=!1;Ea(d,this.d,d.ta,"exec")?g=!0:(d.Qa++,d.ga[e][1]++,d.Fa[d.lb++]=d.l.d,d.lb>=d.Fa.length&&(d.lb=0));d=!!g}if(d){b=void 0;this.U();break}this.d++;this.u[a].call(this);if(0<=this.b){this.b>=this.oc&&this.b<=this.pc&&ya(this,this.b,this.d);if(d=c)d=this.m,e=!1,Ea(d,this.b,d.Da,"read")&&(e=!0),d=!!e;if(d){b=!1;
|
||||
this.U();break}this.b=-1}else if(0<=this.h){this.h>=this.Mb&&this.h<=this.Nb&&za(this,this.h,this.d);if(d=c){d=this.m;var e=this.h,g=this.a[this.h],h=!1;(g&255)!=g&&(d.i("invalid value at "+q(e)+": "+g),h=!0);Ea(d,e,d.Ga,"write")&&(h=!0);d=!!h}if(d){b=!1;this.U();break}this.h=-1}this.G-=this.Ef[a]}while(0<this.G);return b};function Fa(a){a.Xa=0;a.xa-=a.G;a.G=0}f.U=function(){J(this,!0);this.xa-=this.G;this.G=0;this.o.ia&&(this.o.ia=!1,this.s.run&&(this.s.run.innerHTML="Run"))};
|
||||
f.update=function(){this.uc();Ba(this)};function Ga(a){return a.o.ia?a.Za+a.xa-a.G:0}f.I=function(a){return this.a[a]};f.P=function(a,b){this.a[a]=b};function Ca(a){var b=a.c&256?1:0,b=b|(a.g&255?0:2),b=b|((a.v&255^a.w^a.v>>1)&128?64:0),b=b|(a.f&128?128:0);return a.A&60|b}
|
||||
function Ha(a){a.A|=8;a.u[97]=a.fg;a.u[101]=a.hg;a.u[105]=a.eg;a.u[109]=a.bg;a.u[113]=a.gg;a.u[117]=a.ig;a.u[121]=a.dg;a.u[125]=a.cg;a.u[225]=a.vi;a.u[229]=a.xi;a.u[233]=a.ui;a.u[237]=a.ri;a.u[241]=a.wi;a.u[245]=a.yi;a.u[249]=a.ti;a.u[253]=a.si}function Ia(a){a.A&=-9;a.u[97]=a.Xd;a.u[101]=a.Zd;a.u[105]=a.Wd;a.u[109]=a.Td;a.u[113]=a.Yd;a.u[117]=a.$d;a.u[121]=a.Vd;a.u[125]=a.Ud;a.u[225]=a.ee;a.u[229]=a.ge;a.u[233]=a.de;a.u[237]=a.ae;a.u[241]=a.fe;a.u[245]=a.he;a.u[249]=a.ce;a.u[253]=a.be}
|
||||
function P(a,b,c){var d=a.c&256?1:0,e=(b&15)+(c&15)+d;10<=e&&(e=e+6&15|16);e+=(b&240)+(c&240);a.w=b^c;a.v=e;a.f=e&255;160<=e&&(e+=96);512<=e&&(e-=256);a.c=e;a.g=b+c+d&255;a.G--;return e&255}function Q(a,b,c){var d=a.c&256?0:1,e=(b&15)-(c&15)-d;0>e&&(e=(e-6&15)-16);e+=(b&240)-(c&240);0>e&&(e-=96);a.f=a.g=(a.c=b-c-d)&255;a.w=b^c;a.v=a.c;a.c^=256;a.G--;return e&255}function ua(a){a.e=0;a.n=0;a.q=0;a.r=256;a.A=0;a.f=0;a.g=0;a.w=0;a.v=0;a.c=0;a.d=0;a.b=-1;a.h=-1;a.wa=0;a.Za=a.xa=a.G=0}
|
||||
f.Eg=function(){this.d++;this.a[this.r--]=this.d>>8;this.r|=256;this.a[this.r--]=this.d&255;this.r|=256;this.A|=16;this.A=Ca(this);this.a[this.r--]=this.A;this.r|=256;this.A&=239;this.b=65534;this.d=this.a[this.b]|this.a[this.b+1]<<8};f.Yh=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e|=this.a[this.b]};f.$h=function(){this.b=this.a[this.d++];this.f=this.g=this.e|=this.a[this.b]};
|
||||
f.ug=function(){this.h=this.a[this.d++];this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};f.ci=function(){this.A=Ca(this);this.a[this.r--]=this.A;this.r|=256};f.Xh=function(){this.b=this.d++;this.f=this.g=this.e|=this.a[this.b]};f.tg=function(){this.c=this.e<<1;this.f=this.g=this.e=this.c&255};f.Uh=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e|=this.a[this.b]};
|
||||
f.rg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};f.Dg=function(){this.d+=(this.f&128?0:(this.G--,this.a[this.d]<<24>>24))+1};f.Zh=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.f=this.g=this.e|=this.a[this.b]};f.ai=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.e|=this.a[this.b]};
|
||||
f.vg=function(){this.h=this.a[this.d++]+this.n&255;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};f.Hg=function(){this.c=0};f.Wh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.f=this.g=this.e|=this.a[this.b]};f.Vh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e|=this.a[this.b]};f.sg=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};
|
||||
f.vh=function(){this.b=this.d++;this.a[this.r--]=this.d>>8;this.r|=256;this.a[this.r--]=this.d&255;this.r|=256;this.d=this.a[this.b]|this.a[this.b+1]<<8};f.ng=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e&=this.a[this.b]};f.Ag=function(){this.b=this.a[this.d++];this.g=this.e&this.a[this.b];this.f=this.f&127|this.a[this.b]&128;this.v=0;this.w=this.a[this.b]&64?128:0};f.pg=function(){this.b=this.a[this.d++];this.f=this.g=this.e&=this.a[this.b]};
|
||||
f.ii=function(){this.h=this.a[this.d++];this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};f.ei=function(){this.r=this.r+1&255|256;this.A=this.a[this.r];this.c=this.A&1?256:0;this.g=this.A&2?0:1;this.f=this.A&128;this.v=0;this.w=this.A&64?128:0};f.mg=function(){this.b=this.d++;this.f=this.g=this.e&=this.a[this.b]};
|
||||
f.hi=function(){this.c=this.c&65280|this.e;this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.e=this.c&255};f.zg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.g=this.e&this.a[this.b];this.f=this.f&127|this.a[this.b]&128;this.v=0;this.w=this.a[this.b]&64?128:0};f.jg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e&=this.a[this.b]};
|
||||
f.fi=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};f.Bg=function(){this.d+=(this.f&128?(this.G--,this.a[this.d]<<24>>24):0)+1};f.og=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.f=this.g=this.e&=this.a[this.b]};f.qg=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.e&=this.a[this.b]};
|
||||
f.ji=function(){this.h=this.a[this.d++]+this.n&255;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};f.zi=function(){this.c=256};f.lg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.f=this.g=this.e&=this.a[this.b]};f.kg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e&=this.a[this.b]};
|
||||
f.gi=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};f.pi=function(){this.r=this.r+1&255|256;this.A=this.a[this.r];this.c=this.A&1?256:0;this.g=this.A&2?0:1;this.f=this.A&128;this.v=0;this.w=this.A&64?128:0;this.r=this.r+2&255|256;this.d=this.a[this.r-1|256]|this.a[this.r]<<8};
|
||||
f.jh=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e^=this.a[this.b]};f.lh=function(){this.b=this.a[this.d++];this.f=this.g=this.e^=this.a[this.b]};f.Rh=function(){this.h=this.a[this.d++];this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};f.bi=function(){this.a[this.r--]=this.e;this.r|=256};f.ih=function(){this.b=this.d++;this.f=this.g=this.e^=this.a[this.b]};
|
||||
f.Qh=function(){this.c=this.c&65279|(this.e&1?256:0);this.e=(this.c=this.c&65280|this.e>>1)&255;this.f=this.g=this.c&255};f.uh=function(){this.b=this.d;this.d=this.a[this.b]|this.a[this.b+1]<<8};f.fh=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e^=this.a[this.b]};f.Oh=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
|
||||
f.Fg=function(){this.d+=((this.v&255^this.w^this.v>>1)&128?0:(this.G--,this.a[this.d]<<24>>24))+1};f.kh=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.f=this.g=this.e^=this.a[this.b]};f.mh=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.e^=this.a[this.b]};f.Sh=function(){this.h=this.a[this.d++]+this.n&255;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
|
||||
f.Jg=function(){this.A&=251};f.hh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.f=this.g=this.e^=this.a[this.b]};f.gh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e^=this.a[this.b]};f.Ph=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
|
||||
f.qi=function(){this.r=this.r+2&255|256;this.d=(this.a[this.r-1|256]|this.a[this.r]<<8)+1};f.Xd=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};f.fg=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.e=P(this,this.e,this.a[this.b])};
|
||||
f.Zd=function(){this.b=this.a[this.d++];this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};f.hg=function(){this.b=this.a[this.d++];this.e=P(this,this.e,this.a[this.b])};f.ni=function(){this.h=this.a[this.d++];this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};f.di=function(){this.r=this.r+1&255|256;this.f=this.g=this.e=this.a[this.r]};
|
||||
f.Wd=function(){this.b=this.d++;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};f.eg=function(){this.b=this.d++;this.e=P(this,this.e,this.a[this.b])};f.mi=function(){this.c=this.c&65280|this.e;this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.e=this.c&255};f.th=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.d=this.a[this.b]|this.a[this.b+1]<<8};
|
||||
f.Td=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};f.bg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.e=P(this,this.e,this.a[this.b])};f.ki=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};
|
||||
f.Gg=function(){this.d+=((this.v&255^this.w^this.v>>1)&128?(this.G--,this.a[this.d]<<24>>24):0)+1};f.Yd=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};f.gg=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.e=P(this,this.e,this.a[this.b])};
|
||||
f.$d=function(){this.b=this.a[this.d++]+this.n&255;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};f.ig=function(){this.b=this.a[this.d++]+this.n&255;this.e=P(this,this.e,this.a[this.b])};f.oi=function(){this.h=this.a[this.d++]+this.n&255;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};f.Bi=function(){this.A|=4};
|
||||
f.Vd=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};f.dg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.e=P(this,this.e,this.a[this.b])};f.Ud=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};
|
||||
f.cg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.e=P(this,this.e,this.a[this.b])};f.li=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};f.Fi=function(){this.h=this.a[this.d++]+this.n&255;this.h=this.a[this.h]|this.a[this.h+1]<<8;this.a[this.h]=this.e};f.Ni=function(){this.h=this.a[this.d++];this.a[this.h]=this.q};
|
||||
f.Hi=function(){this.h=this.a[this.d++];this.a[this.h]=this.e};f.Ki=function(){this.h=this.a[this.d++];this.a[this.h]=this.n};f.eh=function(){this.f=this.g=this.q=this.q-1&255};f.Ti=function(){this.f=this.g=this.e=this.n};f.Mi=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.q};f.Ci=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.e};f.Ji=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.n};
|
||||
f.wg=function(){this.d+=(this.c&256?0:(this.G--,this.a[this.d]<<24>>24))+1};f.Gi=function(){this.h=this.a[this.d++];this.h=(this.a[this.h]|this.a[this.h+1]<<8)+this.q;this.a[this.h]=this.e};f.Oi=function(){this.h=this.a[this.d++]+this.n&255;this.a[this.h]=this.q};f.Ii=function(){this.h=this.a[this.d++]+this.n&255;this.a[this.h]=this.e};f.Li=function(){this.h=this.a[this.d++]+this.q&255;this.a[this.h]=this.n};f.Vi=function(){this.f=this.g=this.e=this.q};
|
||||
f.Ei=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.a[this.h]=this.e};f.Ui=function(){this.r=this.n|256};f.Di=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.a[this.h]=this.e};f.Lh=function(){this.b=this.d++;this.f=this.g=this.q=this.a[this.b]};f.Ah=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e=this.a[this.b]};f.Gh=function(){this.b=this.d++;this.f=this.g=this.n=this.a[this.b]};
|
||||
f.Mh=function(){this.b=this.a[this.d++];this.f=this.g=this.q=this.a[this.b]};f.Ch=function(){this.b=this.a[this.d++];this.f=this.g=this.e=this.a[this.b]};f.Hh=function(){this.b=this.a[this.d++];this.f=this.g=this.n=this.a[this.b]};f.Ri=function(){this.f=this.g=this.q=this.e};f.zh=function(){this.b=this.d++;this.f=this.g=this.e=this.a[this.b]};f.Qi=function(){this.f=this.g=this.n=this.e};f.Jh=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.q=this.a[this.b]};
|
||||
f.wh=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e=this.a[this.b]};f.Eh=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.n=this.a[this.b]};f.xg=function(){this.d+=(this.c&256?(this.G--,this.a[this.d]<<24>>24):0)+1};f.Bh=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.f=this.g=this.e=this.a[this.b]};f.Nh=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.q=this.a[this.b]};
|
||||
f.Dh=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.e=this.a[this.b]};f.Ih=function(){this.b=this.a[this.d++]+this.q&255;this.f=this.g=this.n=this.a[this.b]};f.Kg=function(){this.w=this.v=0};f.yh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.f=this.g=this.e=this.a[this.b]};f.Si=function(){this.f=this.g=this.n=this.r&255};f.Kh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.q=this.a[this.b]};
|
||||
f.xh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e=this.a[this.b]};f.Fh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.f=this.g=this.n=this.a[this.b]};f.Xg=function(){this.b=this.d++;this.f=this.g=this.c=this.q-this.a[this.b];this.c^=256};f.Pg=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};
|
||||
f.Yg=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.q-this.a[this.b];this.c^=256};f.Rg=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.ah=function(){this.h=this.a[this.d++];this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};f.sh=function(){this.f=this.g=this.q=this.q+1&255};f.Og=function(){this.b=this.d++;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.dh=function(){this.f=this.g=this.n=this.n-1&255};
|
||||
f.Wg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.q-this.a[this.b];this.c^=256};f.Lg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.Zg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};f.Cg=function(){this.d+=(this.g&255?(this.G--,this.a[this.d]<<24>>24):0)+1};
|
||||
f.Qg=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.Sg=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.bh=function(){this.h=this.a[this.d++]+this.n&255;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};f.Ig=function(){Ia(this)};
|
||||
f.Ng=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.Mg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.$g=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};f.Ug=function(){this.b=this.d++;this.f=this.g=this.c=this.n-this.a[this.b];this.c^=256};
|
||||
f.ee=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.vi=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.e=Q(this,this.e,this.a[this.b])};f.Vg=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.n-this.a[this.b];this.c^=256};
|
||||
f.ge=function(){this.b=this.a[this.d++];this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.xi=function(){this.b=this.a[this.d++];this.e=Q(this,this.e,this.a[this.b])};f.ph=function(){this.h=this.a[this.d++];this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};f.rh=function(){this.f=this.g=this.n=this.n+1&255};
|
||||
f.de=function(){this.b=this.d++;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.ui=function(){this.b=this.d++;this.e=Q(this,this.e,this.a[this.b])};f.Th=function(){};f.Tg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.n-this.a[this.b];this.c^=256};
|
||||
f.ae=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.ri=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.e=Q(this,this.e,this.a[this.b])};f.nh=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};f.yg=function(){this.d+=(this.g&255?0:(this.G--,this.a[this.d]<<24>>24))+1};
|
||||
f.fe=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.wi=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.e=Q(this,this.e,this.a[this.b])};
|
||||
f.he=function(){this.b=this.a[this.d++]+this.n&255;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.yi=function(){this.b=this.a[this.d++]+this.n&255;this.e=Q(this,this.e,this.a[this.b])};f.qh=function(){this.h=this.a[this.d++]+this.n&255;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};f.Ai=function(){Ha(this)};
|
||||
f.ce=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.ti=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.e=Q(this,this.e,this.a[this.b])};
|
||||
f.be=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.si=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.e=Q(this,this.e,this.a[this.b])};f.oh=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};
|
||||
f.Pi=function(){var a;a=this.a[this.d++];switch(a){case this.yf:this.i("HALT");this.U();break;case this.qd:a=this.d;for(var b="";a<this.a.length;){var c=this.a[a++];if(!c)break;b+=String.fromCharCode(c)}this.d=a;b=b.replace(/%A/g,n(this.e,2)).replace(/%X/g,n(this.n,2)).replace(/%Y/g,n(this.q,2));this.i(b);Fa(this);break;default:this.d-=2,this.i("undefined opSim: "+p(a)+" at "+q(this.d)),this.U()}};f.j=function(){var a=this.a[--this.d];this.i("undefined opcode: "+p(a)+" at "+q(this.d));this.U()};
|
||||
y(function(){for(var a=F(window.document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new ta(d);E(d,c)}});function R(a){A.call(this,"C1PROM",a);this.va=this.a=null;this.Ra=a.size;if(this.ub=a.image){a=this.ub;var b;b=this.ub;var c="",d=b.lastIndexOf(".");0<=d&&(c=b.substr(d+1).toLowerCase());b=c;"json"!=b&&"hex"!=b&&(a="http://"+(window?window.location.host:"www.pcjs.org")+"/api/v1/dump?file="+this.ub+"&format=bytes");u(a,this,this.Kf)}}C(R);
|
||||
R.prototype.W=function(a,b,c,d){this.a=a;this.Hc=b;a=c-b+1;this.Ra||(this.Ra=a);a!=this.Ra?qa(this,"computer-specified ROM size ("+q(a)+") does not match component-specified size ("+q(this.Ra)+")"):(d&&(this.l=d,N(d,b,c,this,this.P)),Ja(this))};R.prototype.ca=function(a,b){a&&!this.o.C&&(this.o.C=!0,this.m=L(b,"debugger"))};R.prototype.P=function(a,b){if(void 0!==b){this.m&&S(this.m,this,a,b,this.m.ec,!0);var c=a-this.Hc;this.a[this.Hc+c]=this.va?this.va[c]:0}};
|
||||
R.prototype.Kf=function(a,b,c){if(c)this.i('Error loading ROM "'+a+'" ('+c+")");else{if("["==b.charAt(0)||"{"==b.charAt(0))try{var d=eval("("+b+")"),e=d.bytes;this.va=e?e:d}catch(g){this.i('Error processing ROM "'+a+'": '+g.message);return}else for(a=b.replace(/\n/gm," ").replace(/ +$/,"").split(" "),this.va=Array(a.length),b=0;b<a.length;b++)this.va[b]=parseInt(a[b],16);Ja(this)}};
|
||||
function Ja(a){if(!K(a))if(!a.ub)a.Q();else if(a.va&&a.a){var b=a.va.length;if(b!=a.Ra)qa(a,"ROM image size ("+q(b)+") does not match component-specified size ("+q(a.Ra)+")");else{for(var c=0;c<b;c++)a.a[a.Hc+c]=a.va[c];a.Q()}}}y(function(){for(var a=F(window.document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new R(d);E(d,c)}});function Ka(a){A.call(this,"C1PRAM",a)}C(Ka);Ka.prototype.W=function(a){this.a=a;this.Q()};
|
||||
y(function(){for(var a=F(window.document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new Ka(d);E(d,c)}});
|
||||
function La(a){A.call(this,"C1PKeyboard",a);this.o.C=!1;this.zc=a.model;this.Rc=8;this.Ie=9;this.Ge=10;this.Fe=13;this.He=16;this.Ee=17;this.Be=18;this.Ce=20;this.Sc=27;this.De=91;this.ye=this.Rc;this.ze=this.Ge;this.ve=this.Fe;this.Mc=this.Sc;this.T=224;this.p=this.He+this.T;this.Ab=this.Ee+this.T;this.dc=this.Be+this.T;this.Nc=this.Ce+this.T;this.Lc=0+this.T;this.we=3;this.xe=15;this.zb=1;this.yb=2;this.xb=4;this.bb=8;this.wb=64;this.cc=this.yb|this.xb|this.wb;this.pd=0;this.wf=1;this.vf=2;this.xf=
|
||||
3;this.uf=4;this.Xf=8192;this.Uf=250;this.Vf=100;this.Sf=300;this.Oa=[];this.Oa["break"]=this.Lc;this.Oa.esc=this.Mc;this.Oa["ctrl-c"]=this.we;this.Oa["ctrl-o"]=this.xe;this.k=[];this.k[49]=30464;this.k[33]=30464+this.p;this.k[50]=30208;this.k[34]=30208+this.p;this.k[51]=29952;this.k[35]=29952+this.p;this.k[52]=29696;this.k[36]=29696+this.p;this.k[53]=29440;this.k[37]=29440+this.p;this.k[54]=29184;this.k[38]=29184+this.p;this.k[55]=28928;this.k[39]=28928+this.p;this.k[56]=26368;this.k[40]=26368+this.p;
|
||||
this.k[57]=26112;this.k[41]=26112+this.p;this.k[48]=25856;this.k[58]=25600;this.k[42]=25600+this.p;this.k[45]=25344;this.k[61]=25344+this.p;this.k[46]=22272;this.k[62]=22272+this.p;this.k[108]=22016;this.k[76]=22016+this.p;this.k[92]=22016+this.p;this.k[111]=21760;this.k[79]=21760+this.p;this.k[this.ye]=21760+this.p;this.k[this.ze]=21504;this.k[this.ve]=21248;this.k[119]=18176;this.k[87]=18176+this.p;this.k[101]=17920;this.k[69]=17920+this.p;this.k[114]=17664;this.k[82]=17664+this.p;this.k[116]=17408;
|
||||
this.k[84]=17408+this.p;this.k[121]=17152;this.k[89]=17152+this.p;this.k[117]=16896;this.k[85]=16896+this.p;this.k[105]=16640;this.k[73]=16640+this.p;this.k[115]=14080;this.k[83]=14080+this.p;this.k[100]=13824;this.k[68]=13824+this.p;this.k[102]=13568;this.k[70]=13568+this.p;this.k[103]=13312;this.k[71]=13312+this.p;this.k[104]=13056;this.k[72]=13056+this.p;this.k[106]=12800;this.k[74]=12800+this.p;this.k[107]=12544;this.k[75]=12544+this.p;this.k[91]=12544+this.p;this.k[120]=9984;this.k[88]=9984+
|
||||
this.p;this.k[99]=9728;this.k[67]=9728+this.p;this.k[118]=9472;this.k[86]=9472+this.p;this.k[98]=9216;this.k[66]=9216+this.p;this.k[110]=8960;this.k[78]=8960+this.p;this.k[94]=8960+this.p;this.k[109]=8704;this.k[77]=8704+this.p;this.k[93]=8704+this.p;this.k[44]=8448;this.k[60]=8448+this.p;this.k[113]=5888;this.k[81]=5888+this.p;this.k[97]=5632;this.k[65]=5632+this.p;this.k[122]=5376;this.k[90]=5376+this.p;this.k[32]=5120;this.k[47]=4864;this.k[63]=4864+this.p;this.k[59]=4608;this.k[43]=4608+this.p;
|
||||
this.k[112]=4352;this.k[80]=4352+this.p;this.k[64]=4352+this.p;this.k[this.Ab]=1536;this.k[this.Mc]=1280;this.k[this.p]=512;this.k[this.dc]=256;this.k[this.Nc]=0;this.reset()}C(La);f=La.prototype;f.reset=function(){this.vb(this.zc);this.B=this.zb;this.zd=0;this.N=[this.zb,0,0,0,0,0,0,0];this.lc=[];if(this.ea)for(var a in this.ea)isNaN(a)||this.ea[a]&&clearTimeout(this.ea[a]);this.ea=[];this.ie=this.za=0;this.Ad=-1;this.yd=this.N;this.Md=this.Ec=0;this.Ka=""};
|
||||
f.J=function(a,b,c){if(void 0===this.s[b])switch(b){case "keyDown":return this.s[b]=c,c.onkeydown=function(a){return function(b){return Ma(a,b,!0)}}(this),!0;case "keyPress":return this.s[b]=c,c.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.Ka="";a.B&a.bb?a.B&=~a.bb:c=!Na(a,b);a.m&&G(a.m,a.m.Ba)&&a.m.message("keyPress("+p(b)+"): "+(c?"pass":"consume"));return c}}(this),!0;case "keyUp":return this.s[b]=c,c.onkeyup=function(a){return function(b){return Ma(a,
|
||||
b,!1)}}(this),!0;case "break":return this.s[b]=c,c.onclick=function(a){return function(){a.O&&a.O.reset(!0)}}(this),!0;default:if(void 0!==this.Oa[b])return this.s[b]=c,c.onclick=function(a,b,c){return function(){a.l&&a.l.X();return!Na(a,c)}}(this,b,this.Oa[b]),!0}return!1};f.W=function(a,b,c,d){this.a=a;this.Rd=b;this.Gf=c-b+1;this.ag=this.Rd+this.Gf;d&&(this.l=d,N(d,b,c,this,this.P));this.Q()};f.vb=function(a){this.sb=a;this.rc=255;600!=this.sb&&(this.rc=0,this.i("updated keyboard model: "+this.sb))};
|
||||
f.ca=function(a,b){a&&!this.o.C&&(this.o.C=!0,this.O=b,this.m=L(b,"debugger"))};f.Q=function(){this.wc=(this.Of=w("iOS"))||w("Android");this.m&&G(this.m,this.m.Ba)&&this.m.message("mobile keyboard support: "+(this.wc?"true":"false")+" ("+window.navigator.userAgent+")");A.prototype.Q.call(this)};function Oa(a,b){var c=b?a.Vf:a.Uf;a.l&&a.l.wa&&(c/=a.l.wa);return c}
|
||||
function Pa(a,b){!a.za||void 0!==b&&b==a.za||(a.m&&G(a.m,a.m.Ba)&&a.m.message("autoClear("+p(a.za)+")"),clearTimeout(a.ea[a.za]),T(a,a.za,!1,a.uf))}function U(a,b,c){a.Ka=b;Qa(a,c||a.Sf)}function Qa(a,b){if(0<a.Ka.length){var c=a.Ka.charCodeAt(0);10==c&&(c=13);65<=c&&90>=c&&(c+=32);a.Ka=a.Ka.substr(1);Na(a,c)}0<a.Ka.length&&setTimeout(function(a){return function(){Qa(a,b)}}(a),b)}
|
||||
function Ma(a,b,c){var d,e=!c;b=b.keyCode;c&&(a.ie=b);b==a.p-a.T?(a.B&=~a.xb,c&&(a.B|=a.xb),b+=a.T,e=!1):b==a.dc-a.T?(a.B&=~a.yb,c&&(a.B|=a.yb),b+=a.T,e=!1):b==a.Ab-a.T?(a.B&=~a.wb,c&&(a.B|=a.wb),b+=a.T,e=!1):b==a.Nc-a.T?(c=!c,a.B&=~a.zb,c&&(a.B|=a.zb),b+=a.T,e=!1):b==a.De?(a.B&=~a.bb,c&&(a.B|=a.bb),e=!1,d=!0):d=b==a.Ie?e=!1:b==a.Sc||b==a.Rc?c?!Na(a,b):!1:!0;e&&(a.B&=~a.bb,a.wc||b!=a.ie||Pa(a));void 0===d&&(d=!T(a,b,c,a.vf));a.m&&G(a.m,a.m.Ba)&&a.m.message("key"+(c?"Down":"Up")+"("+p(b)+"): "+(d?
|
||||
"pass":"consume"));return d}function Na(a,b){var c=!1;b==a.Lc?a.O&&(a.O.reset(!0),c=!0):(a.wc&&65<=b&&90>=b&&(b+=32),Pa(a,b),T(a,b,!0,a.pd)&&(a.l.speed==a.l.Na?T(a,b,!1,a.wf):(c=!1,a.ea[b]&&(clearTimeout(a.ea[b]),c=!0),c=Oa(a,c),a.ea[a.za=b]=setTimeout(function(a){return function(){T(a,b,!1,a.xf)}}(a),c),a.m&&G(a.m,a.m.Ba)&&a.m.message("keyPressSimulate("+p(b)+"): setTimeout()")),c=!0));a.m&&G(a.m,a.m.Ba)&&a.m.message("keyPressSimulate("+p(b)+"): "+(c?"true":"false"));return c}
|
||||
function T(a,b,c,d){var e=!1;c||(a.ea[b]=null,a.za==b&&(a.za=0));var g=0,h=a.k[b];void 0===h&&(1<=b&&26>=b&&(b+=64,g=a.Ab),h=a.k[b]);void 0!==h&&(b=h>>12,e=h>>8&15,g||(g=h&255),c?(a.N[b]|=1<<e,a.N[0]=g==a.Ab?a.N[0]|a.wb:g==a.p?a.N[0]|a.xb:g==a.dc?a.N[0]|a.yb:a.N[0]&~a.cc):(a.N[b]&=~(1<<e),a.N[0]&=~a.cc,a.N[0]|=a.B&a.cc),c=d==a.pd&&!a.lc.length,a.lc.push(a.N.slice()),a.bc(c),e=!0);return e}f.I=function(){};f.P=function(a){var b=this.l.I(a);this.zd=b^this.rc;this.Ec++;this.bc(!1,a,b)};
|
||||
f.bc=function(a,b){var c=Ga(this.l);if(!a)if(this.l.speed==this.l.Na)a=void 0!==b&&32<=this.Ec;else{var d=c-this.Md;a=0>d||d>=this.Xf}a&&(d=this.lc.shift(),void 0!==d&&(this.yd=d),this.Ec=0,this.Md=c);for(d=c=0;8>d;d++)this.zd&1<<d&&(c|=this.yd[d]);c^=this.rc;if(void 0!==b)this.a[b]=c;else if(b=this.Rd,c!=this.Ad)for(d=b;d<this.ag;d++)this.a[d]=c;this.Ad=c};y(function(){for(var a=F(window.document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new La(d);E(d,c)}});
|
||||
function Ra(a,b,c,d){A.call(this,"C1PVideo",a);this.zc=a.model;this.Nd=a.charCols;this.Od=a.charRows;this.Lf=a.screenWidth;this.Mf=a.screenHeight;this.Pb=a.charWidth;this.Qb=a.charHeight;Sa(this);this.Rb=b;this.Jf=c;this.mb=d;this.kb=56832}C(Ra);f=Ra.prototype;f.reset=function(a){this.vb(this.zc);if(this.a)for(var b=this.Zb;b<this.Ic;b++)this.a[b]=a?Math.floor(256*Math.random()):32};
|
||||
f.J=function(a,b,c){switch(b){case "refresh":return this.s[b]=c,c.onclick=function(a){return function(){Ta(a);va(a)}}(this),!0}return!1};f.W=function(a,b,c,d){this.a=a;this.Zb=b;this.If=c-b+1;this.Ic=this.Zb+this.If;d&&(this.l=d,void 0!==this.kb&&(wa(d,this.kb,this.kb,this,this.I),N(d,this.kb,this.kb,this,this.P)));this.reset(!0)};
|
||||
function Sa(a,b,c,d,e){a.Wb=void 0!==b?b:a.Nd;a.Yf=void 0!==c?c:a.Od;a.Sa=a.Wb*a.Yf;a.Ic=a.Zb+a.Sa;a.Fd=void 0!==d?d:0;a.Pd=void 0!==e?e:c;a.Bd=Math.floor(a.Lf/a.Wb);a.Cd=Math.floor(a.Mf/a.Pd)}f.X=function(){this.Rb.focus()};f.vb=function(a){this.sb=a;600==this.sb?(Sa(this,this.Nd,this.Od,3,25),1024==this.Sa&&this.l&&(this.Lb=this.Ic+this.Sa-1,N(this.l,this.Lb,this.Lb,this,this.ne))):(this.i("updated video model: "+this.sb),Sa(this,64,32));Ta(this);va(this)};
|
||||
f.ca=function(a,b){if(a&&!this.o.C&&K(this)){if(this.o.C=!0,this.m=L(b,"debugger"),this.H=L(b,"keyboard"))this.H.J("canvas","keyDown",this.Rb),this.H.J("canvas","keyPress",this.Rb),this.H.J("canvas","keyUp",this.Rb)}else!a&&this.o.C&&(this.o.C=!1)};f.Q=function(){this.Pb||(this.Pb=Math.floor(this.mb.width/16));this.Qb||(this.Qb=Math.floor(this.mb.height/16));A.prototype.Q.call(this)};
|
||||
f.I=function(a,b){var c=this.l.I(a);void 0!==b&&this.m&&S(this.m,this,a,b,this.m.Bb);this.l.P(a,c&127|(Math.floor(Ga(this.l)/8333)&1?128:0))};f.P=function(a,b){void 0!==b&&this.m&&S(this.m,this,a,b,this.m.Bb)};
|
||||
f.ne=function(a,b){if(void 0!==b){this.m&&S(this.m,this,a,b,this.m.Bb,!0);this.vb(540);this.H&&this.H.vb(542);var c=this.l,d=c.ua,e=[],g=xa(d,this.Lb,this.Lb,this,this.ne);if(0<=g){e.push(d[g][0]);e.push(d[g][1]);d.splice(g,1);for(var h=65536,k=0,g=0;g<d.length;g++)h>d[g][0]&&(h=d[g][0]),k<d[g][1]&&(k=d[g][1]);e.push(h);e.push(k)}4==e.length&&(c.Mb=e[2],c.Nb=e[3])}};function Ta(a){a.mc=Array(a.Sa);for(var b=0;b<=a.Sa;b++)a.mc[b]=-1}
|
||||
function va(a){var b=0;if(a.o.C)for(;b<a.Sa;){var c=a.a[a.Zb+b];if(a.mc[b]!=c){var d=Math.floor(b/a.Wb);if(d>=a.Fd&&(d-=a.Fd,d<a.Pd)){var e=c*a.Pb;a.Jf.drawImage(a.mb,e%a.mb.width,Math.floor(e/a.mb.width)*a.Qb,a.Pb,a.Qb,b%a.Wb*a.Bd,d*a.Cd,a.Bd,a.Cd)}a.mc[b]=c}b++}}
|
||||
y(function(){for(var a=F(window.document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=D(c),e=window.document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","c1pjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.setAttribute("contenteditable","true");e.setAttribute("autocapitalize","off");e.setAttribute("autocorrect","off");e.style.backgroundColor=
|
||||
d.screenColor;e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(e.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight));c.appendChild(e);var g=new Image,h=e.getContext("2d"),e=new Ra(d,e,h,g);g.onload=function(a){return function(){a.Q()}}(e,d.charSet);g.src=d.charSet;E(e,c)}});
|
||||
function Ua(a){A.call(this,"C1PSerialPort",a);this.o.C=!1;this.Ed=a.demo;this.Af=0;this.zf=1;this.reset()}C(Ua);f=Ua.prototype;f.reset=function(){if(2!=this.Ha){this.Ob=this.qc=0;var a=1;if(this.Hd){var b=this.Hd.match(/\d+/);null!==b&&(a=parseInt(b[0],10))}this.ab='10 PRINT "HELLO OSI #'+a+'"\n';this.Ha=this.Vb=0}};f.start=function(){this.H&&this.Ed&&(U(this.H," C\n\n",3E3),setTimeout(function(a){return function(){a.Ha=1;U(a.H,"LOAD\n")}}(this),12E3));this.Ed=!1};
|
||||
f.J=function(a,b,c){var d=this;switch(b){case "listSerial":return this.s[b]=c,!0;case "loadSerial":return this.s[b]=c,c.onclick=function(){d.s.listSerial&&u(d.s.listSerial.value,d,d.Id)},!0;case "mountSerial":return!w("Mobi")&&window&&"FileReader"in window?(this.s[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){var b=a.currentTarget[1].files[0],c=new FileReader;c.onload=function(){d.Id(b.name,c.result.toString(),
|
||||
0)};c.readAsText(b);return!1}):c.parentNode.removeChild(c),!0}return!1};f.W=function(a,b,c,d){this.a=a;this.Gc=b;this.Hf=c-b+1;this.Sd=this.Gc+this.Hf;if(this.l=d)wa(d,b,c,this,this.I),N(d,b,c,this,this.P);this.Q()};f.ca=function(a,b){a&&!this.o.C&&(this.o.C=!0,this.O=b,this.H=L(b,"keyboard"),this.m=L(b,"debugger"))};
|
||||
f.Id=function(a,b,c){b?(this.ab=b,this.Ha=this.Vb=0,this.O&&this.H&&this.l.o.ia?(this.i("auto-loading "+a),this.l.X(),"."!=this.ab.charAt(0)?(this.Ha=1,U(this.H,"NEW\nLOAD\n")):(this.Ha=2,this.O.reset(!0),U(this.H,"ML"))):this.i(a+" ready to load")):this.i(a+" load error ("+c+")")};f.I=function(a,b){void 0!==b&&(a&1?Va(this):this.ab&&!this.Vb&&Va(this))};f.P=function(a,b){void 0!==b&&this.m&&S(this.m,this,a,b,this.m.Tc,!0)};
|
||||
function Va(a){if(void 0!==a.ab){a.qc=0;a.Ob=0;if(a.Vb<a.ab.length){var b=a.ab.charCodeAt(a.Vb++);10==b&&(b=13);a.qc=b;a.Ob=1}else 1==a.Ha&&a.H&&U(a.H," \nRUN\n"),a.Ha=0;a.bc()}}f.bc=function(){var a;for(a=this.Gc+0;a<this.Sd;a+=2)this.a[a]=this.Ob?this.zf:this.Af;for(a=this.Gc+1;a<this.Sd;a+=2)this.a[a]=this.Ob?this.qc:0};y(function(){for(var a=F(window.document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new Ua(d);E(d,c)}});
|
||||
function Wa(a){A.call(this,"C1PDiskController",a);this.o.C=!1;this.rf=this.nd=0;this.kd=1;this.sf=this.od=2;this.ld=3;this.Oc=128;this.Pc=64;this.La=4;this.mf=1;this.fd=2;this.lf=4;this.of=8;this.nf=16;this.gd=32;this.ed=64;this.kc=128;this.jd=4;this.hd=8;this.pf=32;this.tf=this.qf=16;this.md=17;this.Qc=3;this.ud=1;this.vd=2;this.td=4;this.sd=8;this.Ae=0;this.Je=40;this.reset(!0)}C(Wa);f=Wa.prototype;
|
||||
f.reset=function(a){Xa(this);this.L=-1;a&&(this.V=[],this.V[0]={$i:this.Ae,Qd:this.Je,Nf:!0,Ya:20,ja:0,Wa:-1,Kb:[]})};
|
||||
function Xa(a){a.je={t:a.ed,ba:function(){},update:function(a){return function(c){void 0!==c&&(this.t=c);a.$b.t&a.La||V(a,a.rf,this)}}(a)};a.Ia={t:255,ba:function(){this.update()},update:function(a){return function(c){void 0===c?c=a.Ia.t:Ya(a,c,a.tb.t);c=c|a.kc|a.gd|a.of|a.lf|a.fd|a.nf;c&=~a.mf;if(0<=a.L&&a.V[a.L].Kb.length){var d=a.V[a.L];d.Nf&&(c&=~a.gd);d.ja||(c&=~a.fd);10>=--d.Ya&&(0<d.Ya?(c&=~a.kc,Za(a)):(d.Ya=100,0<=a.L&&(a.V[a.L].Wa=0,$a(a))))}this.t=c;a.$b.t&a.La&&V(a,a.nd,this)}}(a)};a.$b=
|
||||
{t:0,ba:function(){},update:function(a){return function(c){void 0!==c&&(this.t=c&~(a.Oc|a.Pc));V(a,a.kd,this);a.Ia.update();a.je.update()}}(a)};a.ke={t:255,ba:function(){},update:function(a){return function(c){void 0!==c&&(this.t=c);a.ac.t&a.La||V(a,a.sf,this)}}(a)};a.tb={t:255,ba:function(){},update:function(a){return function(c){void 0===c?c=a.tb.t:Ya(a,a.Ia.t,c);if(0<=a.L&&a.L<a.V.length){var d=a.V[a.L];d.Kb.length&&a.tb.t&a.hd&&!(c&a.hd)&&(c&a.jd?d.ja--:d.ja++,a.m&&G(a.m,a.m.Ma)&&a.m.message("stepping "+
|
||||
(c&a.jd?"down":"up")+" to track "+d.ja),d.ja>=d.Qd&&(d.ja=d.Qd),0>d.ja&&(d.ja=0),d.Ya=20,a.Ia.update(a.Ia.t|a.kc),Za(a))}this.t=c;a.ac.t&a.La&&V(a,a.od,this)}}(a)};a.ac={t:0,ba:function(){},update:function(a){return function(c){void 0!==c&&(this.t=c&~(a.Oc|a.Pc));V(a,a.ld,this);a.tb.update();a.ke.update()}}(a)};a.Wi={t:0,ba:function(){},update:function(a){return function(c){void 0!==c&&((c&a.Qc)==a.Qc&&(a.Ja.t=a.vd|a.td|a.sd),this.t=c);a.Ja.update()}}(a)};a.Ja={t:a.vd|a.td|a.sd,ba:function(){},update:function(a){return function(c){void 0===
|
||||
c&&(c=a.Ja.t);c&=~a.ud;0<=a.L&&0<=a.V[a.L].Wa&&(c|=a.ud);this.t=c;V(a,a.tf,this)}}(a)};a.Kc={t:0,ba:function(a){return function(){$a(a)}}(a),update:function(a){return function(c){void 0!==c&&(this.t=c);V(a,a.md,this)}}(a)};a.Xi={t:0,ba:function(){},update:function(){return function(){}}(a)}}
|
||||
f.J=function(a,b,c){switch(b){case "listDisk":return this.s[b]=c,!0;case "loadDisk":return this.s[b]=c,c.onclick=function(a){return function(){if(a.s.listDisk){var b=a.s.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.i("loading "+aa(b)+"...");u(c,a,a.Qf)}}}(this),!0}return!1};f.W=function(a,b,c,d){this.a=a;this.nc=b;if(this.l=d)wa(d,b,c,this,this.I),N(d,b,c,this,this.P);this.Q()};
|
||||
f.ca=function(a,b){a&&!this.o.C&&(this.o.C=!0,this.m=L(b,"debugger"))};
|
||||
f.Qf=function(a,b,c){if(c)this.i("disk load error ("+c+")");else{c=[];this.i("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.i("data error: "+d[0]);else if(this.V[0]){for(b=0;b<d.length;b++){var e,g=d[b],h=g.sectors;if(void 0===(e=g.trackNum)||void 0===h)throw Error("track "+b+" missing data");e!=b&&v("track "+e+" out of order (expected "+b+")");c=[];var k,l,m;if(e){ab(c,g,"trackSig");bb(c,g);W(c,g,"trackType");for(var r=0;r<h.length;r++){k=
|
||||
h[r];l=k.sectorData;W(c,k,"sectorSig");W(c,k,"sectorNum");W(c,k,"sectorPages");for(m=0;m<l.length;m++)c.push(l[m]);ab(c,k,"sectorEndSig")}}else for(k=h[0],l=k.sectorData,W(c,g,"trackLoad",2),W(c,k,"sectorPages"),m=0;m<l.length;m++)c.push(l[m]);d[e].me=c;this.m&&G(this.m,this.m.Ma)&&this.m.message("track "+e+": "+c.length+" bytes")}this.V[0].Kb=d;this.i("mount of "+a+" complete")}else this.i("no available drives")}else this.i("no tracks: "+a);else this.i("no data: "+a)}catch(I){this.i("disk data error: "+
|
||||
I.message)}}};function bb(a,b){var c=b.trackNum;if(void 0===c)throw Error("missing bcd value: trackNum");a.push(Math.floor(c/10)<<4|c%10)}function W(a,b,c,d){b=b[c];if(void 0===b)throw Error("missing binary value: "+c);2==d&&a.push(b>>8&255);a.push(b&255)}function ab(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 cb(a,b,c){b&=63;16>b?b&=3:32>b&&(b&=17);switch(b){case a.nd:a=a.$b.t&a.La?a.Ia:a.je;break;case a.kd:a=a.$b;break;case a.od:a=a.ac.t&a.La?a.tb:a.ke;break;case a.ld:a=a.ac;break;case a.qf:a=c?a.Wi:a.Ja;break;case a.md:a=a.Kc;break;default:a=a.Xi}return a}f.I=function(a,b){if(void 0!==b){var c=cb(this,a-this.nc,!1);this.m&&S(this.m,this,a,b,this.m.Ma,!1,c.le);c.ba()}};
|
||||
f.P=function(a,b){if(void 0!==b){var c=this.l.I(a),d=cb(this,a-this.nc,!0);if(this.m&&G(this.m,this.m.Ma|this.m.ec)&&(S(this.m,this,a,b,this.m.Ma,!0,d.le),d.Cf))for(var e=128,g=d.t^c;g&&e;)g&e&&this.m.message(" changed "+d.le+"."+d.Cf[e]+" to "+(c&e?"1":"0")),e>>=1;d.update(c)}};function Ya(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&a.pf||(d|=2),a.Ia.t&a.ed||(d|=1));a.L!=d&&(a.L=d,a.Ja.update())}function Za(a){0<=a.L&&(a.V[a.L].Wa=-1,a.Kc.update(255),a.Ja.update())}
|
||||
function $a(a){var b=null;if(0<=a.L){var b=a.V[a.L],c=b.Kb[b.ja];void 0!==c&&(0<=b.Wa&&b.Wa<c.me.length?(b.Ya=100,b=c.me[b.Wa++],a.Kc.update(b),a.Ja.update()):(b.Ya=10,Za(a)))}}function V(a,b,c){a.l.P(b+a.nc,c.t)}y(function(){for(var a=F(window.document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new Wa(d);E(d,c)}});
|
||||
function db(a){A.call(this,"C1PDebugger",a);this.m=this;this.Qa=-1;this.ya=0;this.Jc=null;this.Tb=!1;this.$=0;this.ta=[];this.Da=[];this.Ga=[];this.lb=0;this.Fa=[];this.ga=[];this.ec=1;this.Ba=16;this.Bb=32;this.Ma=64;this.Tc=128;this.ha=this.Ke=0;this.Jb={port:this.ec,kbd:this.Ba,video:this.Bb,disk:this.Ma,serial:this.Tc};this.ma=0;this.na=1;this.cb=2;this.Wc=3;this.Xc=4;this.Yc=5;this.Zc=6;this.$c=7;this.ad=8;this.bd=9;this.Le=10;this.cd=11;this.dd=12;this.Me=13;this.Ne=14;this.Oe=15;this.Pe=16;
|
||||
this.oa=17;this.fc=18;this.gc=19;this.Eb=20;this.Re=21;this.Se=22;this.pa=23;this.Fb=24;this.Te=25;this.Ue=26;this.Gb=27;this.Hb=28;this.qa=29;this.eb=30;this.fb=31;this.gb=32;this.Ve=33;this.ra=34;this.We=35;this.Xe=36;this.Ye=37;this.Ze=38;this.hb=39;this.ib=40;this.$e=41;this.af=42;this.sa=43;this.bf=44;this.cf=45;this.df=46;this.Ca=47;this.ic=48;this.jc=49;this.ef=50;this.ff=51;this.gf=52;this.hf=53;this.jf=54;this.kf=55;this.hc=56;this.Qe=57;this.jb="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.wd=["HLT","MSG"];eb(this,!0);this.Z=[[this.Le],[this.ra,1,this.ka],[this.hc,1],[],[],[this.ra,1,this.F],[this.cb,1,this.F],[],[this.Xe],[this.ra,1,this.S],[this.cb,0,this.Cb],[],[],[this.ra,2,this.D],[this.cb,2,this.D],[],[this.bd,1,this.Y],[this.ra,1,this.la],[],[],[],[this.ra,1,this.K],[this.cb,1,this.K],[],[this.Me],[this.ra,2,this.da],[],[],[],[this.ra,2,this.M],[this.cb,2,this.M],[],[this.Hb,2,this.Db],[this.na,1,this.ka],[],[],[this.Zc,1,this.F],[this.na,1,this.F],[this.hb,1,this.F],[],
|
||||
[this.Ze],[this.na,1,this.S],[this.hb,0,this.Cb],[],[this.Zc,2,this.D],[this.na,2,this.D],[this.hb,2,this.D],[],[this.$c,1,this.Y],[this.na,1,this.la],[],[],[],[this.na,1,this.K],[this.hb,1,this.K],[],[this.bf],[this.na,2,this.da],[],[],[],[this.na,2,this.M],[this.hb,2,this.M],[],[this.$e],[this.pa,1,this.ka],[],[],[],[this.pa,1,this.F],[this.gb,1,this.F],[],[this.We],[this.pa,1,this.S],[this.gb,0,this.Cb],[],[this.Gb,2,this.Db],[this.pa,2,this.D],[this.gb,2,this.D],[],[this.cd,1,this.Y],[this.pa,
|
||||
1,this.la],[],[],[],[this.pa,1,this.K],[this.gb,1,this.K],[],[this.Oe],[this.pa,2,this.da],[],[],[],[this.pa,2,this.M],[this.gb,2,this.M],[],[this.af],[this.ma,1,this.ka],[],[],[],[this.ma,1,this.F],[this.ib,1,this.F],[],[this.Ye],[this.ma,1,this.S],[this.ib,0,this.Cb],[],[this.Gb,2,this.Uc],[this.ma,2,this.D],[this.ib,2,this.D],[],[this.dd,1,this.Y],[this.ma,1,this.la],[],[],[],[this.ma,1,this.K],[this.ib,1,this.K],[],[this.df],[this.ma,2,this.da],[],[],[],[this.ma,2,this.M],[this.ib,2,this.M],[],
|
||||
[],[this.Ca,1,this.ka],[],[],[this.jc,1,this.F],[this.Ca,1,this.F],[this.ic,1,this.F],[],[this.Se],[],[this.hf],[],[this.jc,2,this.D],[this.Ca,2,this.D],[this.ic,2,this.D],[],[this.Wc,1,this.Y],[this.Ca,1,this.la],[],[],[this.jc,1,this.K],[this.Ca,1,this.K],[this.ic,1,this.Vc],[],[this.kf],[this.Ca,2,this.da],[this.jf],[],[],[this.Ca,2,this.M],[],[],[this.fb,1,this.S],[this.qa,1,this.ka],[this.eb,1,this.S],[],[this.fb,1,this.F],[this.qa,1,this.F],[this.eb,1,this.F],[],[this.ff],[this.qa,1,this.S],
|
||||
[this.ef],[],[this.fb,2,this.D],[this.qa,2,this.D],[this.eb,2,this.D],[],[this.Xc,1,this.Y],[this.qa,1,this.la],[],[],[this.fb,1,this.K],[this.qa,1,this.K],[this.eb,1,this.Vc],[],[this.Pe],[this.qa,2,this.da],[this.gf],[],[this.fb,2,this.M],[this.qa,2,this.M],[this.eb,2,this.da],[],[this.gc,1,this.S],[this.oa,1,this.ka],[],[],[this.gc,1,this.F],[this.oa,1,this.F],[this.Eb,1,this.F],[],[this.Ue],[this.oa,1,this.S],[this.Re],[],[this.gc,2,this.D],[this.oa,2,this.D],[this.Eb,2,this.D],[],[this.ad,1,
|
||||
this.Y],[this.oa,1,this.la],[],[],[],[this.oa,1,this.K],[this.Eb,1,this.K],[],[this.Ne],[this.oa,2,this.da],[],[],[],[this.oa,2,this.M],[this.Eb,2,this.M],[],[this.fc,1,this.S],[this.sa,1,this.ka],[],[],[this.fc,1,this.F],[this.sa,1,this.F],[this.Fb,1,this.F],[],[this.Te],[this.sa,1,this.S],[this.Ve],[],[this.fc,2,this.D],[this.sa,2,this.D],[this.Fb,2,this.D],[],[this.Yc,1,this.Y],[this.sa,1,this.la],[],[],[],[this.sa,1,this.K],[this.Fb,1,this.K],[],[this.cf],[this.sa,2,this.da],[],[],[],[this.sa,
|
||||
2,this.M],[this.Fb,2,this.M],[]]}C(db);f=db.prototype;f.J=function(a,b,c){var d=this;switch(b){case "debugInput":return this.Sb=this.s[b]=c,this.Sb.focus(),c.onkeypress=function(a,c){return function(d){13==d.keyCode&&(b=c.value,c.value="",fb(a,b))}}(this,c),!0;case "debugEnter":return this.s[b]=c,ea(c,function(){return d.Sb?(b=d.Sb.value,fb(d,b),!0):!1}),!0;case "step":return this.s[b]=c,ea(c,function(a){var b=!1;J(d,!0)||(H(d,!0),b=d.step(a?1:0),H(d,!1));return b}),!0}return!1};
|
||||
f.W=function(a,b,c){this.a=a;this.aa=b;this.sc=c-b+1;this.$a=this.aa+this.sc;this.Q()};f.ca=function(a,b){a&&!this.o.C&&(this.o.C=!0,this.l=L(b,"cpu"))};f.X=function(){this.Sb.focus()};
|
||||
function eb(a,b){a.Cb=0;a.S=1;a.M=2;a.da=3;a.Db=4;a.Uc=5;a.K=6;a.Vc=7;a.ka=8;a.la=9;a.D=10;a.F=11;a.Y=a.Db;var c="",d,e;if(b)for(a.fa="A #$nn $nnnn,X $nnnn,Y $nnnn ($nnnn) $nn,X $nn,Y ($nn,X) ($nn),Y $nnnn $nn".split(" "),d=0;d<a.fa.length;d++)e=a.fa[d],c+="("+e.replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/nnnn/g,"[0-9A-F][0-9A-F][0-9A-F][0-9A-F]?").replace(/nn/g,"[0-9A-F][0-9A-F]?").replace(/\$/g,"\\$")+"|)";else for(a.fa="A nn [nnnn+X] [nnnn+Y] nnnn [nnnn] [nn+X] [nn+Y] [[nn+X]] [[nn]+Y] [nnnn] [nn]".split(" "),
|
||||
d=0;d<a.fa.length;d++)e=a.fa[d],c+="("+e.replace(/\[/g,"\\[").replace(/]/g,"\\]").replace(/nnnn/g,"[0-9A-F][0-9A-F][0-9A-F][0-9A-F]?").replace(/nn/g,"[0-9A-F][0-9A-F]?").replace(/\+/g,"\\+")+"|)";a.Yi=new RegExp(c);a.Df=[a.Gb,a.Hb,a.bd,a.$c,a.cd,a.dd,a.Wc,a.Xc,a.ad,a.Yc]}f.U=function(){this.l.U()};f.info=function(){};function S(a,b,c,d,e,g,h){(a.ha&e)==e&&(e=a.l.I(c),a.message(b.id+"."+(g?"setByte":"getByte")+"("+q(c)+")"+(void 0!==d?" @"+q(d):"")+": "+(h?h+"=":"")+p(e)))}
|
||||
f.message=function(a){this.i(a);Fa(this.l)};f.Pf=function(){this.i("Type ? for list of debugger commands\n")};f.Aa=function(){if(!gb(this))return!1;this.l.Aa();return!0};f.step=function(a){if(!gb(this))return!1;var b;try{b=this.l.step(a)}catch(c){b=void 0,qa(this.l,c.stack||c.message)}void 0!==b&&this.Qa++;this.l.update(!0);this.update(!0);return b};f.update=function(a){this.ya=this.l.d;a||this.Va?hb(this):ib(this)};
|
||||
function gb(a){a.l&&K(a.l)&&!J(a.l)?(a=a.l,a.o.Ua?(a.i(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}f.reset=function(){var a;this.Fa.length||(this.Fa=Array(1E3));for(a=0;a<this.Fa.length;a++)this.Fa[a]=-1;this.ga.length||(this.ga=Array(256));for(a=0;a<this.ga.length;a++)this.ga[a]=[a,0];this.Qa&&this.update();this.Qa=0};f.start=function(){this.Va||this.i("running")};
|
||||
f.stop=function(a,b){if(!this.Va&&(this.i("stopped"),b)){var c=t();this.i(c-a+"ms ("+b+" cycles)")}this.update();this.X();this.Va||(this.Qa=0);jb(this,this.l.d)};function kb(a,b){return a+(b<<24>>24)}f.I=function(a){var b;a>=this.aa&&a<this.$a&&(ya(this.l,a),b=this.a[this.aa+a],b&=255);return b};f.P=function(a,b){a<this.aa||a>=this.$a?this.i("invalid address: "+q(a)):(this.a[this.aa+a]=b&255,za(this.l,a),this.l.update())};function lb(a,b){X(a.ta,b,void 0)||a.ta.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 mb(a,b){void 0!==b&&(jb(a,a.Pa),lb(a,b)&&(a.Pa=b))}function jb(a,b){void 0!==a.Pa&&b==a.Pa&&X(a.ta,a.Pa,!0)&&(a.Pa=void 0);a.Va=!1}function Ea(a,b,c,d){for(var e=!1,g=0;g<c.length;g++)if(c[g]==b){b!=a.Pa&&a.i("breakpoint hit: "+q(b)+" ("+d+")");e=!0;break}return e}
|
||||
function nb(a,b,c){var d=n(b,4),e=a.I(b++),g=a.Z[e],h=void 0===e?0:e,k=[],l=void 0===g[1]?0:g[1];do{d+=" "+n(h,2);if(!l--)break;h=a.I(b++);if(void 0===h)break;k.push(h)}while(1);void 0===g[0]&&(g=[a.Qe,1,a.S],k.push(e));var d=(d+" ").substr(0,15),d=d+a.jb[g[0]],m=null;if(void 0!==g[2]){l=g[2];m=a.fa[l];if(1==g[1]&&l==a.Y)m=m.replace(/nnnn/,n(kb(b,h=k.pop()),4));else for(;k.length;)m=m.replace(/nn/,n(h=k.pop(),2));l==a.S&&1==g[1]&&32<=h&&128>h&&(m+=" ;'"+String.fromCharCode(h)+"'")}if(e==a.l.hc&&
|
||||
(h<a.wd.length&&(m=a.wd[h]),h==a.l.qd)){l=0;for(m='"';h=a.I(b++);)16>l?m+=String.fromCharCode(h):16==l&&(m+="\u2026"),l++;m+='"'}m&&(d+=" "+m);c&&(d=(d+" ").substr(0,30),d+=";"+c.toString());a.$f=b;return d}
|
||||
function Y(a,b){var c=a.ya;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.i("invalid base-"+d+" address: "+b),c=void 0)}void 0!==c&&(c<a.aa||c>=a.$a)&&(a.i("address out of range: "+n(c)),c=void 0);return c}
|
||||
function ob(a,b){if("?"==b)a.i("\nfrequency commands:"),a.i("clear\tclear all frequency counts");else{var c=0,d;if(a.ga)if("clear"==b){for(d=0;d<a.ga.length;d++)a.ga[d]=[d,0];a.i("frequency data cleared");c++}else if(void 0!==b)a.i("unknown frequency command: "+b),c++;else{var e=a.ga.slice();e.sort(function(a,b){return b[1]-a[1]});for(d=0;d<e.length;d++){var g=e[d][0],h=e[d][1];h&&(a.i(a.jb[a.Z[g][0]]+" ("+p(g)+"): "+h+" times"),c++)}}c||a.i("no frequency data available")}}
|
||||
function hb(a,b,c,d){var e=Y(a,b);if(void 0!==e){void 0===d&&(d=1);b=a.$a;if(void 0!==c){b=Y(a,c);if(void 0===b||b<e)return;if(256<b-e){a.i("range too large");return}b++;d=-1}for(e!=a.ya&&a.i();d--&&e<b;)c=nb(a,e,J(a,!1)||a.Va?a.Qa:0),a.i(c),a.ya=e=a.$f}}
|
||||
function ib(a,b){if(b&&"?"==b[1])a.i("\nregister commands:"),a.i("r to display all"),a.i("r [target=value] to modify"),a.i("supported targets:"),a.i("A,X,Y,S,PC and flags C,Z,D,V,N");else{var c=!0;if(void 0!==b&&1<b.length){var c=!1,d=b[1],e=null,g=d.indexOf("=");if(0<g)e=d.substr(g+1),d=d.substr(0,g);else if(2<b.length)e=b[2];else{a.i("missing value for "+b[1]);return}g=parseInt(e,16);if(isNaN(g)){a.i("invalid value: "+e);return}switch(d.toUpperCase()){case "A":a.l.e=g&255;break;case "X":a.l.n=g&
|
||||
255;break;case "Y":a.l.q=g&255;break;case "C":a.l.c=g?256:0;break;case "Z":a.l.g=g?0:1;break;case "D":g?Ha(a.l):Ia(a.l);break;case "V":g?(d=a.l,d.v=0,d.w=128):(d=a.l,d.v=0,d.w=0);break;case "N":a.l.f=g?128:0;break;case "S":if(256!=(g&-256)){a.i("invalid stack pointer: "+e);return}a.l.r=g;break;case "PC":c=!0;a.l.d=g&65535;a.ya=a.l.d;break;default:a.i("unknown register: "+d);return}a.l.update()}a.i("A="+n(a.l.e,2)+" X="+n(a.l.n,2)+" Y="+n(a.l.q,2)+" P="+n(Ca(a.l),2)+" S="+n(a.l.r,4)+" PC="+n(a.l.d,
|
||||
4));c&&hb(a,n(a.ya=a.l.d,4))}}function pb(a,b){var c=void 0===b?1:parseInt(b,10),d=1==c?0:1;da(c,function(a){return function(){return H(a,!0)&&a.step(d)}}(a),function(a){return function(){H(a,!1)}}(a))}
|
||||
function fb(a,b){b.length||(a.Tb?(a.i("ended assemble @"+n(a.$,4)),a.ya=a.$,a.Tb=!1):a.Jc&&(b=a.Jc));if(K(a)&&!J(a,!0)&&0<b.length){a.Tb?b="a "+n(a.$,4)+" "+b:1<b.length&&1!=b.indexOf(" ")&&(b=b.charAt(0).toLowerCase()+" "+b.substr(1));var c=b.split(" ");a.Jc=c[0];switch(c[0].toLowerCase()){case "a":var d=Y(a,c[1]);if(void 0!==d)if(a.$=d,void 0===c[2])a.i("begin assemble @"+q(a.$)),a.Tb=!0,a.l.update();else{var e,g=c[2],h=c[3],c=a.$,d=[];if(void 0!==g){var k,g=g.toUpperCase();"?"==g.charAt(g.length-
|
||||
1)&&(h="?",g=g.substr(0,g.length-1));for(k=0;k<a.jb.length&&g!=a.jb[k];k++);k==a.jb.length&&(a.i("unknown operation: "+g),k=-1);var l="",m;if(0<=k&&void 0!==h)if(l=h.toUpperCase(),"?"==l){for(h=m=0;h<a.Z.length;h++)a.Z[h][0]===k&&(m||a.i("supported opcodes:"),a.i(" "+n(h,2)+": "+g+(void 0!==a.Z[h][2]?" "+a.fa[a.Z[h][2]]:"")),m++);k=-1}else if(m=l.match(a.Yi),null!==m&&m[0]==l){for(h=1;h<m.length;h++)if(m[h]==l)if(void 0===e)e=h-1;else{a.i("too many operand matches (both "+a.fa[e]+" and "+a.fa[h-
|
||||
1]+")");k=-1;break}e==a.Db&&0>a.Df.indexOf(k)&&(e=a.D);e==a.Uc&&k!=a.Gb&&(e=a.D)}else a.i("unknown operand: "+l),k=-1;if(0<=k){m=-1;for(h=0;h<a.Z.length;h++)if(a.Z[h][0]===k&&a.Z[h][2]===e)if(0>m)m=h;else{a.i("too many instruction matches (both "+p(m)+" and "+p(h)+")");m=-2;break}if(0<=m){if(d.push(m),void 0!==e)if(g=a.Z[m][1],l=l.match(/[0-9A-F]+/),null!==l)for(l=parseInt(l[0],16),1==g&&e==a.Y&&(l-=c+2,-128>l||127<l)&&(a.i("branch out of range ("+l+")"),d=[],g=0),h=0;h<g;h++)d.push(l&255),l>>>=8;
|
||||
else g&&a.i("instruction missing "+g+" bytes")}else a.i("unknown instruction: "+g+" "+l+"")}}e=d;if(e.length){for(c=0;c<e.length;c++)a.P(a.$+c,e[c]);a.i(nb(a,a.$));a.$+=e.length}}break;case "b":e=c[1];c=c[2];if(void 0===e||"?"==e)a.i("\nbreakpoint commands:"),a.i("bp [a]\tset exec breakpoint at [a]"),a.i("br [a]\tset read breakpoint at [a]"),a.i("bw [a]\tset write breakpoint at [a]"),a.i("bc [a]\tclear breakpoint at [a]"),a.i("bl\tlist all breakpoints");else if(void 0===c&&1<e.length&&(c=e.substr(1),
|
||||
e=e.substr(0,1)),"l"==e){e=0;d=a.ta;for(c=0;c<d.length;c++)a.i("breakpoint enabled: "+q(d[c])+" (exec)"),e++;d=a.Da;for(c=0;c<d.length;c++)a.i("breakpoint enabled: "+q(d[c])+" (read)"),e++;d=a.Ga;for(c=0;c<d.length;c++)a.i("breakpoint enabled: "+q(d[c])+" (write)"),e++;e||a.i("no breakpoints")}else void 0===c?a.i("missing breakpoint address"):"c"==e&&"*"==c?(a.ta=[],a.Da=[],a.Ga=[],a.i("all breakpoints cleared")):(c=Y(a,c),void 0!==c&&("p"==e?lb(a,c)?a.i("breakpoint enabled: "+q(c)+" (exec)"):a.i("breakpoint not set: "+
|
||||
q(c)):"c"==e?X(a.ta,c,!0)?a.i("breakpoint cleared: "+q(c)+" (exec)"):X(a.Da,c,!0)?a.i("breakpoint cleared: "+q(c)+" (read)"):X(a.Ga,c,!0)?a.i("breakpoint cleared: "+q(c)+" (write)"):a.i("breakpoint missing: "+q(c)):"r"==e?(X(a.Da,c,void 0)||a.Da.push(c),a.i("breakpoint enabled: "+q(c)+" (read)")):"w"==e?(X(a.Ga,c,void 0)||a.Ga.push(c),a.i("breakpoint enabled: "+q(c)+" (write)")):a.i("unknown breakpoint command: "+e)));break;case "d":e=c[1];d=c[2];if("?"==e)a.i("\ndump commands:"),a.i("d [a] [#] dump # lines of memory");
|
||||
else if(e=Y(a,e),void 0!==e){c=0;void 0!==d&&("l"==d.charAt(0)&&(d=d.substr(1)),c=parseInt(d,10));c||(c=1);for(d=0;d<c;d++){l=g="";h=e;for(k=0;8>k&&e<a.$a;k++)m=a.I(e),void 0===m&&(m=0),g+=n(m,2)+" ",l+=32<=m&&128>m?String.fromCharCode(m):".",e++;a.i(n(h,4)+" "+g+l)}a.ya=e}break;case "e":e=c[1];if(void 0===e)a.i("missing address");else if(e=Y(a,e),void 0!==e)for(d=2;d<c.length;d++)g=parseInt(c[d],16),a.P(e++,g);break;case "f":ob(a,c[1]);break;case "g":e=c[1];void 0!==e&&mb(a,Y(a,e));a.Aa()||a.l.X();
|
||||
break;case "h":a.U();break;case "o":if(void 0===c[1]||"?"==c[1])a.i("\noption commands:"),a.i("max\trun at maximum speed"),a.i("fast\trun faster (up to "+a.l.nb+"Mhz)"),a.i("slow\trun at normal speed (1Mhz)"),a.i("classic\tuse classic operand syntax"),a.i("modern\tuse modern operand syntax"),a.i("msg\tenable message categories");else switch(e=c[1],e){case "slow":M(a.l,a.l.Ib);break;case "fast":M(a.l,a.l.rd);break;case "max":M(a.l,a.l.Na);break;case "classic":eb(a,!0);a.i("classic syntax enabled");
|
||||
break;case "modern":eb(a,!1);a.i("modern syntax enabled");break;case "msg":e=0;void 0!==c[2]&&("all"==c[2]?e=255:void 0!==a.Jb[c[2]]&&(e=a.Jb[c[2]]),e&&("on"==c[3]?a.ha|=e:"off"==c[3]&&(a.ha&=~e)));for(d in a.Jb)if(void 0===c[2]||"all"==c[2]||c[2]==d)e=a.Jb[d],a.i(d+" messages: "+(a.ha&e?"on":"off"));break;default:a.i("unknown option: "+e)}break;case "p":l=c[1];e=10;c=a.lb;d=a.Fa;if(void 0!==d){g=void 0===l?a.Zf:parseInt(l,10);void 0===g&&(g=10);g>d.length&&(a.i("note: only "+d.length+" available"),
|
||||
g=d.length);void 0!==l&&(a.Ac=0,a.i(g+" instructions earlier:"));l=a.Ac?a.Ac:1;c-=g;for(0>c&&(c=d.length-1);e&&c!=a.lb;){h=d[c];if(0>h)break;a.i(nb(a,h,l++));++c==d.length&&(c=0);e--;g--}a.Zf=g;a.Ac=l}10==e&&a.i("no history available");break;case "r":ib(a,c);break;case "s":a.I(a.l.d)==a.l.Hb?(mb(a,a.l.d+3),a.Va=!0,a.Aa()||a.l.X()):pb(a);break;case "t":pb(a,c[1]);break;case "u":hb(a,c[1],c[2],8);break;case "?":case "help":a.i("\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.i("note: frequency and history commands operate only when breakpoints are set");break;default:a.i("unknown command: "+b)}}}y(function(){for(var a=F(window.document,"c1pjs","debugger"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new db(d);E(d,c)}});function Z(a,b){A.call(this,"C1PComputer",a);this.R=b}C(Z);Z.prototype.reset=function(a){var b=null,c;for(c in this.R)for(var d=0;d<this.R[c].length;d++){var e=this.R[c][d];e&&e.reset&&(e.reset(),"cpu"==c&&(b=e))}b&&(b.update(),a&&b.Aa())};
|
||||
Z.prototype.start=function(){for(var a in this.R)if("cpu"!=a)for(var b=0;b<this.R[a].length;b++){var c=this.R[a][b];c&&c.start&&c.start()}};Z.prototype.stop=function(a,b){for(var c in this.R)if("cpu"!=c)for(var d=0;d<this.R[c].length;d++){var e=this.R[c][d];e&&e.stop&&e.stop(a,b)}};Z.prototype.J=function(a,b,c){switch(b){case "reset":return this.s[b]=c,c.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function L(a,b){return a.R[b]?a.R[b][0]:null}
|
||||
function qb(a){var b=null,c;for(c in a.R)for(var d=0;d<a.R[c].length;d++){var e=a.R[c][d];if(e){if(!K(e)){K(e,function(a){return function(){qb(a)}}(a));return}"cpu"==c?b=e:e.ca&&e.ca(!0,a)}}a.Q();a.i("C1Pjs v1.18.1\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>");b&&b.ca(!0,a)}
|
||||
y(function(){for(var a=F(window.document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=D(c),e,g={},h,k=0,l=0,m=0;m<d.modules.length;m++){var r=d.modules[m];if(!m){if("cpu"!=r.type)break;k=r.start;l=r.end;h=Array(l+1-k);for(e=k;e<h.length;e++)h[e]=0}if(e=pa(r.refID,d.id)){var I=r.type;void 0===g[I]&&(g[I]=[]);g[I].push(e);e.W&&void 0!==r.start&&e.W(h,r.start,r.end,g.cpu[0])}else{v('no component for <module refid="'+r.refID+'">');return}}if(void 0===h){v('<module type="cpu"> definition must appear first in the <computer> specification');
|
||||
break}if(e=pa("debugger",d.id))g["debugger"]=[e],e.W&&e.W(h,k,l,g.cpu[0]);k=new Z(d,g);if(l=pa("panel",d.id))if(g.panel=[l],l.tc){e=d.id;d=void 0;g=[];e&&(e=0<(d=e.indexOf("."))?e.substr(0,d+1):"");for(d=0;d<B.length;d++)m=B[d],e&&m.id.indexOf(e)||g.push(m);d=g;for(g=0;g<d.length;g++)e=d[g],e!=l&&(e.Yb=l.Yb,e.i=l.i,e.tc=l.tc)}E(k,c);qb(k)}});var rb=0;function sb(a,b,c,d,e,g){e("Loading "+a+"...");u(a,null,function(h,k,l){l?(k||(k="unable to load "+a+" ("+l+")"),g(k,null)):tb(k,a,b,c,d,e,g)})}
|
||||
function tb(a,b,c,d,e,g,h){function k(a,g){if(g)h(g,null);else{if(c){var k=b;k&&0>k.indexOf("/")&&(k=window.location.pathname+k);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" state=$2"+d+"$2":"")+(k?" url=$2"+k+"$2":""))}k=null;if("<"==a.charAt(0))try{window.ActiveXObject||"ActiveXObject"in window?(e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),k=new window.ActiveXObject("Microsoft.XMLDOM"),k.async=!1,k.loadXML(a)):k=(new window.DOMParser).parseFromString(a,"text/xml")}catch(I){k=
|
||||
null,a=I.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,k)}}a?e?ub(a,g,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function ub(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");u(e,null,function(g,h,k){if(k||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+k+")");else{if(g=d[3])if(k=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=k[0],m,r=/( [a-z]+=)(['"])(.*?)\2/g;m=r.exec(g);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);k[0]!=l&&(h=h.replace(k[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);ub(a,b,c)}})}else c(a,null)}
|
||||
function vb(a,b,c){function d(a){if(void 0===h){var b=g&&F(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ca(a))}function e(a){d("Error: "+a);k&&(--rb||z(!0));k=!1}var g,h,k=!0;rb++;try{if(g=window.document.getElementById(a)){c||(c="/versions/c1pjs/1.18.1/components.xsl");var l=function(h,k){if(k){var l=function(h,l){if(l)if(l)if(d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=k.transformNode(l);m?(g.outerHTML=m,--rb||z(!0)):e("transformNodeToObject failed")}else window.document.implementation&&
|
||||
window.document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(l),(m=m.transformToFragment(k,window.document))?g.parentNode?(g.parentNode.replaceChild(m,g),--rb||z(!0)):e("invalid machine element: "+a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e("failed to load XSL file: "+c);else e(h)};k?sb(c,null,null,!1,d,l):e("failed to load XML file: "+b)}else e(h)};"<"!=b.charAt(0)?sb(b,a,void 0,!0,d,l):tb(b,null,a,void 0,!1,d,l)}else e("missing machine element: "+
|
||||
a)}catch(m){e(m.message)}return k}window.embedC1P=function(a,b,c){z(!1);return vb(a,b,c)};window.enableEvents=z;window.sendEvent=ja;})();
|
||||
129
versions/c1pjs/1.18.1/c1p.js
Normal file
129
versions/c1pjs/1.18.1/c1p.js
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
(function(){var e;function n(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function aa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}var ba={"&":"&","<":"<",">":">",'"':""","'":"'"};function ca(a){return a.replace(/[&<>"']/g,function(a){return ba[a]})}var q=Date.now||function(){return+new Date};
|
||||
function r(a,b,c){var d;d=!0;var f=0,g=null,k=aa(a),h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");d&&(h.onreadystatechange=function(){4===h.readyState&&(g=h.responseText,200==h.status||!h.status&&g.length&&"file:"==(window?window.location.protocol:"file:")||(f=h.status||-1),c&&(b?c.call(b,k,g,f,void 0):c(k,g,f,void 0)))});h.open("GET",a,d);h.send();d||(g=h.responseText,200!=h.status&&(f=h.status||-1),c&&(b?c.call(b,k,g,f,void 0):c(k,g,f,void 0)))}
|
||||
function t(a){window&&window.alert(a)}function u(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var v={init:[],show:[],exit:[]},da=!1,w=!0;function x(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function y(a){v.init.push(a)}
|
||||
function z(a){if(w)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){t("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function A(a){!w&&a?(w=!0,da&&ea("init")):w=a}function ea(a){v[a]&&z(v[a])}x("onload",function(){da=!0;z(v.init)});x("onpageshow",function(){z(v.show)});x(u("Opera")||u("iOS")?"onunload":"onbeforeunload",function(){z(v.exit)});
|
||||
function B(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.fc=this.id.substr(0,b),this.ec=this.id.substr(b+1)):this.ec=this.id;this[a]=c;this.m={Pa:!1,ra:!1,mb:!1,B:!1,sa:!1};this.nb=null;this.m.sa=!1;this.p={};C[C.length]=this}var fa=void 0;if(window){fa||(fa=window.location.search.substr(1));for(var ga,ha=/\+/g,ia=/([^&=]+)=?([^&]*)/g;ga=ia.exec(fa);)ga[1].replace(ha," "),ga[2].replace(ha," ")}
|
||||
function ja(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}function E(a){var b;b||(b=B);a.prototype=ja(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var C=[];function F(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<C.length;c++)if(C[c].id===a)return C[c]}return null}
|
||||
function G(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("({"+a+"})")}catch(c){t(c.message+" ("+a+")")}return b}window&&!window.document.ELEMENT_NODE&&(window.document.ELEMENT_NODE=1);
|
||||
function H(a,b){for(var c=I(b.parentNode,"c1pjs-control"),d=0;d<c.length;d++)for(var f=c[d].childNodes,g=0;g<f.length;g++){var k=f[g];if(k.nodeType===window.document.ELEMENT_NODE){var h=k.getAttribute("class");if(h)for(var l=h.split(" "),m=0;m<l.length;m++)switch(h=l[m],h){case "c1pjs-binding":(h=G(k))&&h.binding&&a.I(h.type,h.binding,k),m=l.length}}}}
|
||||
function I(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)f.test(a[b].className)&&c.push(a[b]);return c}
|
||||
B.prototype={constructor:B,parent:null,toString:function(){return this.name?this.name:this.id||this.type},I:function(a,b,c){switch(b){case "clear":return this.p[b]||(this.p[b]=c,c.onclick=function(a){return function(){a.p.print&&(a.p.print.value="")}}(this)),!0;case "print":return this.p[b]||(this.kb=this.p[b]=c,c.value="",this.u=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.Ua=function(a,b,c){this.u(a,"notice",c)}),!0;default:return!1}},log:function(){},assert:function(){},u:function(){},status:function(a){this.u(this.ec+": "+a)},Ua:function(a,b){b||t(a)},K:function(a){this.m.sa||(this.m.Pa=!1!==a,this.m.Pa&&(a=this.nb,this.nb=null,a&&a()))}};function ka(a,b){if(a.m.mb)return a.m.ra&&(a.m.ra=!1),a.m.mb=!1;if(a.m.sa)return a.u(a.toString()+" error"),!1;a.m.ra=b;return a.m.ra}function J(a,b){b&&(a.m.Pa?b():a.nb=b);return a.m.Pa}
|
||||
function la(a,b){a.m.sa=!0;a.Ua(b)}function K(a){B.call(this,"C1PPanel",a);this.m.B=!1}E(K);K.prototype.I=function(a,b,c){return this.H&&this.H.I(a,b,c)||this.t&&this.t.I(a,b,c)||this.D&&this.D.I(a,b,c)?!0:B.prototype.I.call(this,a,b,c)};K.prototype.T=function(a,b){a&&!this.m.B&&(this.m.B=!0,this.H=b,this.t=L(b,"cpu"),this.D=L(b,"keyboard"),ma())};function ma(){for(var a=!1,b=I(window.document,"c1pjs","panel"),c=0;c<b.length;c++){var d=b[c],f=G(d),g=F(f.id);g||(a=!0,g=new K(f));H(g,d);a&&g.K()}}y(ma);
|
||||
function na(a){B.call(this,"C1PCPU",a);oa(this);this.m.B=!1;this.m.S=!1;this.ac=a.autoStart;this.bb=0;this.zd=1;this.pa=2;this.speed=this.bb;this.wa=1E6;this.sb=this.ub=30;this.rb=5;this.Pd=1;this.Ra=8;this.Vb=["Slow","Fast","Max"];this.Ed=["("+this.Pd+"Mhz)","(up to "+this.Ra+"Mhz)","(unlimited)"];this.Z=[];this.U=[];this.gb=65536;this.hb=0;this.Ja=65536;this.Ka=0;this.Rc=128;this.Sc=64;this.Nc=16;this.Pc=8;this.Qc=4;this.Tc=2;this.Oc=1;this.Cd=65532;this.xd=0;this.yd=1;this.r=[this.Ae,this.Uf,this.Lg,
|
||||
this.i,this.i,this.Wf,this.qe,this.i,this.Zf,this.Tf,this.pe,this.i,this.i,this.Qf,this.ne,this.i,this.ze,this.Vf,this.i,this.i,this.i,this.Xf,this.re,this.i,this.De,this.Sf,this.i,this.i,this.i,this.Rf,this.oe,this.i,this.rf,this.je,this.i,this.i,this.we,this.le,this.eg,this.i,this.ag,this.ie,this.dg,this.i,this.ve,this.fe,this.bg,this.i,this.xe,this.ke,this.i,this.i,this.i,this.me,this.fg,this.i,this.vg,this.he,this.i,this.i,this.i,this.ge,this.cg,this.i,this.lg,this.ef,this.i,this.i,this.i,this.gf,
|
||||
this.Nf,this.i,this.Yf,this.df,this.Mf,this.i,this.qf,this.af,this.Kf,this.i,this.Be,this.ff,this.i,this.i,this.i,this.hf,this.Of,this.i,this.Fe,this.cf,this.i,this.i,this.i,this.bf,this.Lf,this.i,this.mg,this.wc,this.i,this.i,this.i,this.yc,this.jg,this.i,this.$f,this.vc,this.ig,this.i,this.pf,this.sc,this.gg,this.i,this.Ce,this.xc,this.i,this.i,this.i,this.zc,this.kg,this.i,this.xg,this.uc,this.i,this.i,this.i,this.tc,this.hg,this.i,this.i,this.Bg,this.i,this.i,this.Jg,this.Dg,this.Gg,this.i,this.$e,
|
||||
this.i,this.Pg,this.i,this.Ig,this.yg,this.Fg,this.i,this.se,this.Cg,this.i,this.i,this.Kg,this.Eg,this.Hg,this.i,this.Rg,this.Ag,this.Qg,this.i,this.i,this.zg,this.i,this.i,this.Hf,this.wf,this.Cf,this.i,this.If,this.yf,this.Df,this.i,this.Ng,this.vf,this.Mg,this.i,this.Ff,this.sf,this.Af,this.i,this.te,this.xf,this.i,this.i,this.Jf,this.zf,this.Ef,this.i,this.Ge,this.uf,this.Og,this.i,this.Gf,this.tf,this.Bf,this.i,this.Te,this.Le,this.i,this.i,this.Ue,this.Ne,this.Xe,this.i,this.of,this.Ke,this.Ze,
|
||||
this.i,this.Se,this.He,this.Ve,this.i,this.ye,this.Me,this.i,this.i,this.i,this.Oe,this.Ye,this.i,this.Ee,this.Je,this.i,this.i,this.i,this.Ie,this.We,this.i,this.Qe,this.Ec,this.i,this.i,this.Re,this.Gc,this.lf,this.i,this.nf,this.Dc,this.Pf,this.i,this.Pe,this.Ac,this.jf,this.i,this.ue,this.Fc,this.i,this.i,this.i,this.Hc,this.mf,this.i,this.wg,this.Cc,this.i,this.i,this.i,this.Bc,this.kf,this.i];this.Dd=[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]}E(na);e=na.prototype;
|
||||
e.reset=function(a){this.m.S&&M(this);oa(this);var b=this.Cd;this.d=this.a[b]|this.a[b+1]<<8;this.m.sa=!1;a&&(!0===this.ac||null===this.ac&&void 0===this.p.run)&&N(this)};
|
||||
e.I=function(a,b,c){a=!1;switch(b){case "run":this.p[b]=c;c.onclick=function(a){return function(){a.m.S?M(a):N(a)}}(this);a=!0;break;case "A":case "X":case "Y":case "S":case "PC":case "C":case "Z":case "I":case "D":case "B":case "V":case "N":case "speed":this.p[b]=c;a=!0;break;case "setSpeed":this.p[b]=c,c.onclick=function(a){return function(){pa(a,a.speed>=a.pa?a.bb:a.speed+1,!0)}}(this),a=!0}return a};
|
||||
e.Q=function(a,b){this.a=a;(this.qc=b)?t("unsupported CPU address buffer offset ("+this.qc+")"):this.K()};e.T=function(a,b){if(a&&!this.m.B){this.H=b;var c=L(b,"video");c&&(this.lb=function(a){return function(){qa(a)}}(c),this.ea=function(a){return function(){a.ea()}}(c));this.m.B=!0;this.reset(!0);this.update()}};function ra(a,b,c,d,f){0>sa(a.Z,b,c,d,f)&&(a.gb>b&&(a.gb=b),a.hb<c&&(a.hb=c),a.Z.push([b,c,d,f]))}
|
||||
function O(a,b,c,d,f){0>sa(a.U,b,c,d,f)&&(a.Ja>b&&(a.Ja=b),a.Ka<c&&(a.Ka=c),a.U.push([b,c,d,f]))}function sa(a,b,c,d,f){for(var g=0;g<a.length;g++)if(a[g][0]==b&&a[g][1]==c&&a[g][2]==d&&a[g][3]==f)return g;return-1}function pa(a,b,c){void 0!==b&&(a.speed=b,a.p.setSpeed&&(a.p.setSpeed.innerHTML=a.Vb[2<=b?0:b+1]),a.u("running at "+a.Vb[b].toLowerCase()+" speed "+a.Ed[b]),c&&a.ea());a.ma=0;a.hc=q();ta(a)}e.lb=function(){};e.ea=function(){};
|
||||
function P(a,b,c,d){void 0!==a.p[b]&&(void 0===d&&(d=1),c="0000"+c.toString(16),a.p[b].innerHTML=c.slice(c.length-d).toUpperCase())}function ua(a){P(a,"A",a.e,2);P(a,"X",a.k,2);P(a,"Y",a.n,2);var b=va(a);P(a,"C",b&a.Oc?1:0);P(a,"Z",b&a.Tc?1:0);P(a,"I",b&a.Qc?1:0);P(a,"D",b&a.Pc?1:0);P(a,"B",b&a.Nc?1:0);P(a,"V",b&a.Sc?1:0);P(a,"N",b&a.Rc?1:0);P(a,"S",a.o,4);P(a,"PC",a.d,4);a.p.speed&&a.X&&(a.p.speed.innerHTML=a.X.toFixed(1)+"Mhz")}
|
||||
function ta(a,b){var c=a.ub;c<a.sb&&(c=a.sb);c<a.rb&&(c=a.rb);var d=1;b&&a.speed>a.bb&&a.X&&(d=a.X);d>a.Ra&&a.speed<a.pa&&(d=a.Ra);a.Rd=Math.round(1E3/a.ub);a.Ta=Math.floor(a.wa/c*d);a.ob=Math.floor(a.wa/a.ub*d);a.jc=Math.floor(a.wa/a.sb*d);a.ic=Math.floor(a.wa/a.rb*d);b||(a.ka=a.ob,a.va=a.jc,a.ua=a.ic);a.qb=0}function wa(a){a.qb>=a.wa&&ta(a,!0);a.xa=0;a.Ud=q()}
|
||||
function xa(a){var b=q(),c=a.Rd;a.xa&&(c=Math.round(c*a.xa/a.ob));c-=b-a.Ud;if(b-=a.hc)a.X=Math.round(a.ma/(100*b))/10,864E5<=b&&pa(a);0>c?c=0:a.speed==a.zd?a.X<=a.Ra&&(c=0):a.speed==a.pa&&(c=0);a.qb+=a.xa;return c}
|
||||
function N(a){if(ka(a,!0)){a.m.S||(pa(a),a.H&&a.H.start(),a.m.S=!0,a.p.run&&(a.p.run.innerHTML="Halt"),a.ea());wa(a);try{do{a.step(a.Ta);var b=a.Y-a.C;a.ma+=b;a.xa+=b;a.Y=a.C=0;a.va-=a.Ta;0>=a.va&&(a.va+=a.jc,a.lb());a.ua-=a.Ta;0>=a.ua&&(a.ua+=a.ic,ua(a));a.ka-=a.Ta;if(0>=a.ka){a.ka+=a.ob;break}}while(a.m.S)}catch(c){M(a);a.update();ka(a,!1);la(a,c.stack||c.message);return}setTimeout(function(a){return function(){N(a)}}(a),xa(a))}else a.update(),a.H&&a.H.stop(a.hc,a.ma)}
|
||||
e.step=function(a){this.b=this.h=-1;this.Y=this.C=a;do{a=this.a[this.d];this.d++;this.r[a].call(this);if(0<=this.b){if(this.b>=this.gb&&this.b<=this.hb)for(var b=this.b,c=this.d,d=0;d<this.Z.length;d++)b>=this.Z[d][0]&&b<=this.Z[d][1]&&this.Z[d][3].call(this.Z[d][2],b,c);this.b=-1}else if(0<=this.h){if(this.h>=this.Ja&&this.h<=this.Ka)for(b=this.h,c=this.d,d=0;d<this.U.length;d++)b>=this.U[d][0]&&b<=this.U[d][1]&&this.U[d][3].call(this.U[d][2],b,c);this.h=-1}this.C-=this.Dd[a]}while(0<this.C);return!0};
|
||||
function M(a){a.m.ra&&(a.m.mb=!0);a.Y-=a.C;a.C=0;a.m.S&&(a.m.S=!1,a.p.run&&(a.p.run.innerHTML="Run"))}e.update=function(){this.lb();ua(this)};function ya(a){return a.m.S?a.ma+a.Y-a.C:0}e.O=function(a){return this.a[a]};e.M=function(a,b){this.a[a]=b};function va(a){var b=a.c&256?1:0,b=b|(a.g&255?0:2),b=b|((a.s&255^a.A^a.s>>1)&128?64:0),b=b|(a.f&128?128:0);return a.v&60|b}
|
||||
function Q(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.A=b^c;a.s=f;a.f=f&255;160<=f&&(f+=96);512<=f&&(f-=256);a.c=f;a.g=b+c+d&255;a.C--;return f&255}function R(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.f=a.g=(a.c=b-c-d)&255;a.A=b^c;a.s=a.c;a.c^=256;a.C--;return f&255}function oa(a){a.e=0;a.k=0;a.n=0;a.o=256;a.v=0;a.f=0;a.g=0;a.A=0;a.s=0;a.c=0;a.d=0;a.b=-1;a.h=-1;a.X=0;a.ma=a.Y=a.C=0}
|
||||
e.Ae=function(){this.d++;this.a[this.o--]=this.d>>8;this.o|=256;this.a[this.o--]=this.d&255;this.o|=256;this.v|=16;this.v=va(this);this.a[this.o--]=this.v;this.o|=256;this.v&=239;this.b=65534;this.d=this.a[this.b]|this.a[this.b+1]<<8};e.Uf=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e|=this.a[this.b]};e.Wf=function(){this.b=this.a[this.d++];this.f=this.g=this.e|=this.a[this.b]};
|
||||
e.qe=function(){this.h=this.a[this.d++];this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};e.Zf=function(){this.v=va(this);this.a[this.o--]=this.v;this.o|=256};e.Tf=function(){this.b=this.d++;this.f=this.g=this.e|=this.a[this.b]};e.pe=function(){this.c=this.e<<1;this.f=this.g=this.e=this.c&255};e.Qf=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e|=this.a[this.b]};
|
||||
e.ne=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};e.ze=function(){this.d+=(this.f&128?0:(this.C--,this.a[this.d]<<24>>24))+1};e.Vf=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.f=this.g=this.e|=this.a[this.b]};e.Xf=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.e|=this.a[this.b]};
|
||||
e.re=function(){this.h=this.a[this.d++]+this.k&255;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};e.De=function(){this.c=0};e.Sf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e|=this.a[this.b]};e.Rf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.e|=this.a[this.b]};e.oe=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};
|
||||
e.rf=function(){this.b=this.d++;this.a[this.o--]=this.d>>8;this.o|=256;this.a[this.o--]=this.d&255;this.o|=256;this.d=this.a[this.b]|this.a[this.b+1]<<8};e.je=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e&=this.a[this.b]};e.we=function(){this.b=this.a[this.d++];this.g=this.e&this.a[this.b];this.f=this.f&127|this.a[this.b]&128;this.s=0;this.A=this.a[this.b]&64?128:0};e.le=function(){this.b=this.a[this.d++];this.f=this.g=this.e&=this.a[this.b]};
|
||||
e.eg=function(){this.h=this.a[this.d++];this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};e.ag=function(){this.o=this.o+1&255|256;this.v=this.a[this.o];this.c=this.v&1?256:0;this.g=this.v&2?0:1;this.f=this.v&128;this.s=0;this.A=this.v&64?128:0};e.ie=function(){this.b=this.d++;this.f=this.g=this.e&=this.a[this.b]};
|
||||
e.dg=function(){this.c=this.c&65280|this.e;this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.e=this.c&255};e.ve=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.g=this.e&this.a[this.b];this.f=this.f&127|this.a[this.b]&128;this.s=0;this.A=this.a[this.b]&64?128:0};e.fe=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e&=this.a[this.b]};
|
||||
e.bg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};e.xe=function(){this.d+=(this.f&128?(this.C--,this.a[this.d]<<24>>24):0)+1};e.ke=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.f=this.g=this.e&=this.a[this.b]};e.me=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.e&=this.a[this.b]};
|
||||
e.fg=function(){this.h=this.a[this.d++]+this.k&255;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};e.vg=function(){this.c=256};e.he=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e&=this.a[this.b]};e.ge=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.e&=this.a[this.b]};
|
||||
e.cg=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};e.lg=function(){this.o=this.o+1&255|256;this.v=this.a[this.o];this.c=this.v&1?256:0;this.g=this.v&2?0:1;this.f=this.v&128;this.s=0;this.A=this.v&64?128:0;this.o=this.o+2&255|256;this.d=this.a[this.o-1|256]|this.a[this.o]<<8};
|
||||
e.ef=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e^=this.a[this.b]};e.gf=function(){this.b=this.a[this.d++];this.f=this.g=this.e^=this.a[this.b]};e.Nf=function(){this.h=this.a[this.d++];this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};e.Yf=function(){this.a[this.o--]=this.e;this.o|=256};e.df=function(){this.b=this.d++;this.f=this.g=this.e^=this.a[this.b]};
|
||||
e.Mf=function(){this.c=this.c&65279|(this.e&1?256:0);this.e=(this.c=this.c&65280|this.e>>1)&255;this.f=this.g=this.c&255};e.qf=function(){this.b=this.d;this.d=this.a[this.b]|this.a[this.b+1]<<8};e.af=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e^=this.a[this.b]};e.Kf=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
|
||||
e.Be=function(){this.d+=((this.s&255^this.A^this.s>>1)&128?0:(this.C--,this.a[this.d]<<24>>24))+1};e.ff=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.f=this.g=this.e^=this.a[this.b]};e.hf=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.e^=this.a[this.b]};e.Of=function(){this.h=this.a[this.d++]+this.k&255;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
|
||||
e.Fe=function(){this.v&=251};e.cf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e^=this.a[this.b]};e.bf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.e^=this.a[this.b]};e.Lf=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
|
||||
e.mg=function(){this.o=this.o+2&255|256;this.d=(this.a[this.o-1|256]|this.a[this.o]<<8)+1};e.wc=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};e.be=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.e=Q(this,this.e,this.a[this.b])};
|
||||
e.yc=function(){this.b=this.a[this.d++];this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};e.de=function(){this.b=this.a[this.d++];this.e=Q(this,this.e,this.a[this.b])};e.jg=function(){this.h=this.a[this.d++];this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};e.$f=function(){this.o=this.o+1&255|256;this.f=this.g=this.e=this.a[this.o]};
|
||||
e.vc=function(){this.b=this.d++;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};e.ae=function(){this.b=this.d++;this.e=Q(this,this.e,this.a[this.b])};e.ig=function(){this.c=this.c&65280|this.e;this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.e=this.c&255};e.pf=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.d=this.a[this.b]|this.a[this.b+1]<<8};
|
||||
e.sc=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};e.Yd=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.e=Q(this,this.e,this.a[this.b])};e.gg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};
|
||||
e.Ce=function(){this.d+=((this.s&255^this.A^this.s>>1)&128?(this.C--,this.a[this.d]<<24>>24):0)+1};e.xc=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};e.ce=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.e=Q(this,this.e,this.a[this.b])};
|
||||
e.zc=function(){this.b=this.a[this.d++]+this.k&255;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};e.ee=function(){this.b=this.a[this.d++]+this.k&255;this.e=Q(this,this.e,this.a[this.b])};e.kg=function(){this.h=this.a[this.d++]+this.k&255;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};e.xg=function(){this.v|=4};
|
||||
e.uc=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};e.$d=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.e=Q(this,this.e,this.a[this.b])};e.tc=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};
|
||||
e.Zd=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.e=Q(this,this.e,this.a[this.b])};e.hg=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};e.Bg=function(){this.h=this.a[this.d++]+this.k&255;this.h=this.a[this.h]|this.a[this.h+1]<<8;this.a[this.h]=this.e};e.Jg=function(){this.h=this.a[this.d++];this.a[this.h]=this.n};
|
||||
e.Dg=function(){this.h=this.a[this.d++];this.a[this.h]=this.e};e.Gg=function(){this.h=this.a[this.d++];this.a[this.h]=this.k};e.$e=function(){this.f=this.g=this.n=this.n-1&255};e.Pg=function(){this.f=this.g=this.e=this.k};e.Ig=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.n};e.yg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.e};e.Fg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.k};
|
||||
e.se=function(){this.d+=(this.c&256?0:(this.C--,this.a[this.d]<<24>>24))+1};e.Cg=function(){this.h=this.a[this.d++];this.h=(this.a[this.h]|this.a[this.h+1]<<8)+this.n;this.a[this.h]=this.e};e.Kg=function(){this.h=this.a[this.d++]+this.k&255;this.a[this.h]=this.n};e.Eg=function(){this.h=this.a[this.d++]+this.k&255;this.a[this.h]=this.e};e.Hg=function(){this.h=this.a[this.d++]+this.n&255;this.a[this.h]=this.k};e.Rg=function(){this.f=this.g=this.e=this.n};
|
||||
e.Ag=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.a[this.h]=this.e};e.Qg=function(){this.o=this.k|256};e.zg=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.a[this.h]=this.e};e.Hf=function(){this.b=this.d++;this.f=this.g=this.n=this.a[this.b]};e.wf=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e=this.a[this.b]};e.Cf=function(){this.b=this.d++;this.f=this.g=this.k=this.a[this.b]};
|
||||
e.If=function(){this.b=this.a[this.d++];this.f=this.g=this.n=this.a[this.b]};e.yf=function(){this.b=this.a[this.d++];this.f=this.g=this.e=this.a[this.b]};e.Df=function(){this.b=this.a[this.d++];this.f=this.g=this.k=this.a[this.b]};e.Ng=function(){this.f=this.g=this.n=this.e};e.vf=function(){this.b=this.d++;this.f=this.g=this.e=this.a[this.b]};e.Mg=function(){this.f=this.g=this.k=this.e};e.Ff=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.n=this.a[this.b]};
|
||||
e.sf=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e=this.a[this.b]};e.Af=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.k=this.a[this.b]};e.te=function(){this.d+=(this.c&256?(this.C--,this.a[this.d]<<24>>24):0)+1};e.xf=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.f=this.g=this.e=this.a[this.b]};e.Jf=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.n=this.a[this.b]};
|
||||
e.zf=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.e=this.a[this.b]};e.Ef=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.k=this.a[this.b]};e.Ge=function(){this.A=this.s=0};e.uf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e=this.a[this.b]};e.Og=function(){this.f=this.g=this.k=this.o&255};e.Gf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.n=this.a[this.b]};
|
||||
e.tf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.e=this.a[this.b]};e.Bf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.k=this.a[this.b]};e.Te=function(){this.b=this.d++;this.f=this.g=this.c=this.n-this.a[this.b];this.c^=256};e.Le=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};
|
||||
e.Ue=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.n-this.a[this.b];this.c^=256};e.Ne=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.Xe=function(){this.h=this.a[this.d++];this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};e.of=function(){this.f=this.g=this.n=this.n+1&255};e.Ke=function(){this.b=this.d++;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.Ze=function(){this.f=this.g=this.k=this.k-1&255};
|
||||
e.Se=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.n-this.a[this.b];this.c^=256};e.He=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.Ve=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};e.ye=function(){this.d+=(this.g&255?(this.C--,this.a[this.d]<<24>>24):0)+1};
|
||||
e.Me=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.Oe=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.Ye=function(){this.h=this.a[this.d++]+this.k&255;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};
|
||||
e.Ee=function(){this.v&=-9;this.r[97]=this.wc;this.r[101]=this.yc;this.r[105]=this.vc;this.r[109]=this.sc;this.r[113]=this.xc;this.r[117]=this.zc;this.r[121]=this.uc;this.r[125]=this.tc;this.r[225]=this.Ec;this.r[229]=this.Gc;this.r[233]=this.Dc;this.r[237]=this.Ac;this.r[241]=this.Fc;this.r[245]=this.Hc;this.r[249]=this.Cc;this.r[253]=this.Bc};e.Je=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};
|
||||
e.Ie=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.We=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};e.Qe=function(){this.b=this.d++;this.f=this.g=this.c=this.k-this.a[this.b];this.c^=256};
|
||||
e.Ec=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.rg=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.e=R(this,this.e,this.a[this.b])};e.Re=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.k-this.a[this.b];this.c^=256};
|
||||
e.Gc=function(){this.b=this.a[this.d++];this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.tg=function(){this.b=this.a[this.d++];this.e=R(this,this.e,this.a[this.b])};e.lf=function(){this.h=this.a[this.d++];this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};e.nf=function(){this.f=this.g=this.k=this.k+1&255};
|
||||
e.Dc=function(){this.b=this.d++;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.qg=function(){this.b=this.d++;this.e=R(this,this.e,this.a[this.b])};e.Pf=function(){};e.Pe=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.k-this.a[this.b];this.c^=256};
|
||||
e.Ac=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.ng=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.e=R(this,this.e,this.a[this.b])};e.jf=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};e.ue=function(){this.d+=(this.g&255?0:(this.C--,this.a[this.d]<<24>>24))+1};
|
||||
e.Fc=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.sg=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.e=R(this,this.e,this.a[this.b])};
|
||||
e.Hc=function(){this.b=this.a[this.d++]+this.k&255;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.ug=function(){this.b=this.a[this.d++]+this.k&255;this.e=R(this,this.e,this.a[this.b])};e.mf=function(){this.h=this.a[this.d++]+this.k&255;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};
|
||||
e.wg=function(){this.v|=8;this.r[97]=this.be;this.r[101]=this.de;this.r[105]=this.ae;this.r[109]=this.Yd;this.r[113]=this.ce;this.r[117]=this.ee;this.r[121]=this.$d;this.r[125]=this.Zd;this.r[225]=this.rg;this.r[229]=this.tg;this.r[233]=this.qg;this.r[237]=this.ng;this.r[241]=this.sg;this.r[245]=this.ug;this.r[249]=this.pg;this.r[253]=this.og};
|
||||
e.Cc=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.pg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.e=R(this,this.e,this.a[this.b])};
|
||||
e.Bc=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.og=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.e=R(this,this.e,this.a[this.b])};e.kf=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};
|
||||
e.Lg=function(){var a;a=this.a[this.d++];switch(a){case this.xd:this.u("HALT");M(this);break;case this.yd:a=this.d;for(var b="";a<this.a.length;){var c=this.a[a++];if(!c)break;b+=String.fromCharCode(c)}this.d=a;b=b.replace(/%A/g,n(this.e,2)).replace(/%X/g,n(this.k,2)).replace(/%Y/g,n(this.n,2));this.u(b);this.ka=0;this.Y-=this.C;this.C=0;break;default:this.d-=2,this.u("undefined opSim: 0x"+n(a,2)+" at "+("0x"+n(this.d,4))),M(this)}};
|
||||
e.i=function(){var a=this.a[--this.d];this.u("undefined opcode: 0x"+n(a,2)+" at "+("0x"+n(this.d,4)));M(this)};y(function(){for(var a=I(window.document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new na(d);H(d,c)}});
|
||||
function S(a){B.call(this,"C1PROM",a);this.V=this.a=null;this.ha=a.size;if(this.Aa=a.image){a=this.Aa;var b;b=this.Aa;var c="",d=b.lastIndexOf(".");0<=d&&(c=b.substr(d+1).toLowerCase());b=c;"json"!=b&&"hex"!=b&&(a="http://"+(window?window.location.host:"www.pcjs.org")+"/api/v1/dump?file="+this.Aa+"&format=bytes");r(a,this,this.Jd)}}E(S);
|
||||
S.prototype.Q=function(a,b,c,d){this.a=a;this.wb=b;a=c-b+1;this.ha||(this.ha=a);a!=this.ha?la(this,"computer-specified ROM size (0x"+n(a,4)+") does not match component-specified size ("+("0x"+n(this.ha,4))+")"):(d&&(this.t=d,O(d,b,c,this,this.M)),za(this))};S.prototype.T=function(a){a&&!this.m.B&&(this.m.B=!0)};S.prototype.M=function(a,b){if(void 0!==b){var c=a-this.wb;this.a[this.wb+c]=this.V?this.V[c]:0}};
|
||||
S.prototype.Jd=function(a,b,c){if(c)this.u('Error loading ROM "'+a+'" ('+c+")");else{if("["==b.charAt(0)||"{"==b.charAt(0))try{var d=eval("("+b+")"),f=d.bytes;this.V=f?f:d}catch(g){this.u('Error processing ROM "'+a+'": '+g.message);return}else for(a=b.replace(/\n/gm," ").replace(/ +$/,"").split(" "),this.V=Array(a.length),b=0;b<a.length;b++)this.V[b]=parseInt(a[b],16);za(this)}};
|
||||
function za(a){if(!J(a))if(!a.Aa)a.K();else if(a.V&&a.a){var b=a.V.length;if(b!=a.ha)la(a,"ROM image size (0x"+n(b,4)+") does not match component-specified size ("+("0x"+n(a.ha,4))+")");else{for(var c=0;c<b;c++)a.a[a.wb+c]=a.V[c];a.K()}}}y(function(){for(var a=I(window.document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new S(d);H(d,c)}});function Aa(a){B.call(this,"C1PRAM",a)}E(Aa);Aa.prototype.Q=function(a){this.a=a;this.K()};
|
||||
y(function(){for(var a=I(window.document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Aa(d);H(d,c)}});
|
||||
function Ba(a){B.call(this,"C1PKeyboard",a);this.m.B=!1;this.pb=a.model;this.Fb=8;this.gd=9;this.ed=10;this.dd=13;this.fd=16;this.cd=17;this.$c=18;this.ad=20;this.Gb=27;this.bd=91;this.Xc=this.Fb;this.Yc=this.ed;this.Uc=this.dd;this.Ab=this.Gb;this.L=224;this.l=this.fd+this.L;this.Ga=this.cd+this.L;this.$a=this.$c+this.L;this.Bb=this.ad+this.L;this.zb=0+this.L;this.Vc=3;this.Wc=15;this.Fa=1;this.Ea=2;this.Da=4;this.oa=8;this.Ca=64;this.Za=this.Ea|this.Da|this.Ca;this.Qb=0;this.vd=1;this.ud=2;this.wd=
|
||||
3;this.td=4;this.Vd=8192;this.Sd=250;this.Td=100;this.Qd=300;this.ga=[];this.ga["break"]=this.zb;this.ga.esc=this.Ab;this.ga["ctrl-c"]=this.Vc;this.ga["ctrl-o"]=this.Wc;this.j=[];this.j[49]=30464;this.j[33]=30464+this.l;this.j[50]=30208;this.j[34]=30208+this.l;this.j[51]=29952;this.j[35]=29952+this.l;this.j[52]=29696;this.j[36]=29696+this.l;this.j[53]=29440;this.j[37]=29440+this.l;this.j[54]=29184;this.j[38]=29184+this.l;this.j[55]=28928;this.j[39]=28928+this.l;this.j[56]=26368;this.j[40]=26368+this.l;
|
||||
this.j[57]=26112;this.j[41]=26112+this.l;this.j[48]=25856;this.j[58]=25600;this.j[42]=25600+this.l;this.j[45]=25344;this.j[61]=25344+this.l;this.j[46]=22272;this.j[62]=22272+this.l;this.j[108]=22016;this.j[76]=22016+this.l;this.j[92]=22016+this.l;this.j[111]=21760;this.j[79]=21760+this.l;this.j[this.Xc]=21760+this.l;this.j[this.Yc]=21504;this.j[this.Uc]=21248;this.j[119]=18176;this.j[87]=18176+this.l;this.j[101]=17920;this.j[69]=17920+this.l;this.j[114]=17664;this.j[82]=17664+this.l;this.j[116]=17408;
|
||||
this.j[84]=17408+this.l;this.j[121]=17152;this.j[89]=17152+this.l;this.j[117]=16896;this.j[85]=16896+this.l;this.j[105]=16640;this.j[73]=16640+this.l;this.j[115]=14080;this.j[83]=14080+this.l;this.j[100]=13824;this.j[68]=13824+this.l;this.j[102]=13568;this.j[70]=13568+this.l;this.j[103]=13312;this.j[71]=13312+this.l;this.j[104]=13056;this.j[72]=13056+this.l;this.j[106]=12800;this.j[74]=12800+this.l;this.j[107]=12544;this.j[75]=12544+this.l;this.j[91]=12544+this.l;this.j[120]=9984;this.j[88]=9984+
|
||||
this.l;this.j[99]=9728;this.j[67]=9728+this.l;this.j[118]=9472;this.j[86]=9472+this.l;this.j[98]=9216;this.j[66]=9216+this.l;this.j[110]=8960;this.j[78]=8960+this.l;this.j[94]=8960+this.l;this.j[109]=8704;this.j[77]=8704+this.l;this.j[93]=8704+this.l;this.j[44]=8448;this.j[60]=8448+this.l;this.j[113]=5888;this.j[81]=5888+this.l;this.j[97]=5632;this.j[65]=5632+this.l;this.j[122]=5376;this.j[90]=5376+this.l;this.j[32]=5120;this.j[47]=4864;this.j[63]=4864+this.l;this.j[59]=4608;this.j[43]=4608+this.l;
|
||||
this.j[112]=4352;this.j[80]=4352+this.l;this.j[64]=4352+this.l;this.j[this.Ga]=1536;this.j[this.Ab]=1280;this.j[this.l]=512;this.j[this.$a]=256;this.j[this.Bb]=0;this.reset()}E(Ba);e=Ba.prototype;e.reset=function(){this.Ba(this.pb);this.w=this.Fa;this.Xb=0;this.G=[this.Fa,0,0,0,0,0,0,0];this.cb=[];if(this.R)for(var a in this.R)isNaN(a)||this.R[a]&&clearTimeout(this.R[a]);this.R=[];this.Ic=this.aa=0;this.Yb=-1;this.Wb=this.G;this.kc=this.tb=0;this.da=""};
|
||||
e.I=function(a,b,c){if(void 0===this.p[b])switch(b){case "keyDown":return this.p[b]=c,c.onkeydown=function(a){return function(b){return Ca(a,b,!0)}}(this),!0;case "keyPress":return this.p[b]=c,c.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.da="";a.w&a.oa?a.w&=~a.oa:c=!T(a,b);return c}}(this),!0;case "keyUp":return this.p[b]=c,c.onkeyup=function(a){return function(b){return Ca(a,b,!1)}}(this),!0;case "break":return this.p[b]=c,c.onclick=function(a){return function(){a.H&&
|
||||
a.H.reset(!0)}}(this),!0;default:if(void 0!==this.ga[b])return this.p[b]=c,c.onclick=function(a,b,c){return function(){a.t&&a.t.ea();return!T(a,c)}}(this,b,this.ga[b]),!0}return!1};e.Q=function(a,b,c,d){this.a=a;this.pc=b;this.Fd=c-b+1;this.Xd=this.pc+this.Fd;d&&(this.t=d,O(d,b,c,this,this.M));this.K()};e.Ba=function(a){this.ya=a;this.jb=255;600!=this.ya&&(this.jb=0,this.u("updated keyboard model: "+this.ya))};e.T=function(a,b){a&&!this.m.B&&(this.m.B=!0,this.H=b)};
|
||||
e.K=function(){this.cc=(this.Nd=u("iOS"))||u("Android");B.prototype.K.call(this)};function Da(a,b){var c=b?a.Td:a.Sd;a.t&&a.t.X&&(c/=a.t.X);return c}function Ea(a,b){!a.aa||void 0!==b&&b==a.aa||(clearTimeout(a.R[a.aa]),U(a,a.aa,!1,a.td))}function V(a,b,c){a.da=b;Fa(a,c||a.Qd)}function Fa(a,b){if(0<a.da.length){var c=a.da.charCodeAt(0);10==c&&(c=13);65<=c&&90>=c&&(c+=32);a.da=a.da.substr(1);T(a,c)}0<a.da.length&&setTimeout(function(a){return function(){Fa(a,b)}}(a),b)}
|
||||
function Ca(a,b,c){var d,f=!c;b=b.keyCode;c&&(a.Ic=b);b==a.l-a.L?(a.w&=~a.Da,c&&(a.w|=a.Da),b+=a.L,f=!1):b==a.$a-a.L?(a.w&=~a.Ea,c&&(a.w|=a.Ea),b+=a.L,f=!1):b==a.Ga-a.L?(a.w&=~a.Ca,c&&(a.w|=a.Ca),b+=a.L,f=!1):b==a.Bb-a.L?(c=!c,a.w&=~a.Fa,c&&(a.w|=a.Fa),b+=a.L,f=!1):b==a.bd?(a.w&=~a.oa,c&&(a.w|=a.oa),f=!1,d=!0):d=b==a.gd?f=!1:b==a.Gb||b==a.Fb?c?!T(a,b):!1:!0;f&&(a.w&=~a.oa,a.cc||b!=a.Ic||Ea(a));void 0===d&&(d=!U(a,b,c,a.ud));return d}
|
||||
function T(a,b){var c=!1;b==a.zb?a.H&&(a.H.reset(!0),c=!0):(a.cc&&65<=b&&90>=b&&(b+=32),Ea(a,b),U(a,b,!0,a.Qb)&&(a.t.speed==a.t.pa?U(a,b,!1,a.vd):(c=!1,a.R[b]&&(clearTimeout(a.R[b]),c=!0),c=Da(a,c),a.R[a.aa=b]=setTimeout(function(a){return function(){U(a,b,!1,a.wd)}}(a),c)),c=!0));return c}
|
||||
function U(a,b,c,d){var f=!1;c||(a.R[b]=null,a.aa==b&&(a.aa=0));var g=0,k=a.j[b];void 0===k&&(1<=b&&26>=b&&(b+=64,g=a.Ga),k=a.j[b]);void 0!==k&&(b=k>>12,f=k>>8&15,g||(g=k&255),c?(a.G[b]|=1<<f,a.G[0]=g==a.Ga?a.G[0]|a.Ca:g==a.l?a.G[0]|a.Da:g==a.$a?a.G[0]|a.Ea:a.G[0]&~a.Za):(a.G[b]&=~(1<<f),a.G[0]&=~a.Za,a.G[0]|=a.w&a.Za),c=d==a.Qb&&!a.cb.length,a.cb.push(a.G.slice()),a.Ya(c),f=!0);return f}e.O=function(){};e.M=function(a){var b=this.t.O(a);this.Xb=b^this.jb;this.tb++;this.Ya(!1,a,b)};
|
||||
e.Ya=function(a,b){var c=ya(this.t);if(!a)if(this.t.speed==this.t.pa)a=void 0!==b&&32<=this.tb;else{var d=c-this.kc;a=0>d||d>=this.Vd}a&&(d=this.cb.shift(),void 0!==d&&(this.Wb=d),this.tb=0,this.kc=c);for(d=c=0;8>d;d++)this.Xb&1<<d&&(c|=this.Wb[d]);c^=this.jb;if(void 0!==b)this.a[b]=c;else if(b=this.pc,c!=this.Yb)for(d=b;d<this.Xd;d++)this.a[d]=c;this.Yb=c};y(function(){for(var a=I(window.document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Ba(d);H(d,c)}});
|
||||
function Ga(a,b,c,d){B.call(this,"C1PVideo",a);this.pb=a.model;this.lc=a.charCols;this.mc=a.charRows;this.Kd=a.screenWidth;this.Ld=a.screenHeight;this.Ma=a.charWidth;this.Na=a.charHeight;Ha(this);this.Oa=b;this.Id=c;this.ta=d;this.qa=56832}E(Ga);e=Ga.prototype;e.reset=function(a){this.Ba(this.pb);if(this.a)for(var b=this.Va;b<this.xb;b++)this.a[b]=a?Math.floor(256*Math.random()):32};
|
||||
e.I=function(a,b,c){switch(b){case "refresh":return this.p[b]=c,c.onclick=function(a){return function(){Ia(a);qa(a)}}(this),!0}return!1};e.Q=function(a,b,c,d){this.a=a;this.Va=b;this.Hd=c-b+1;this.xb=this.Va+this.Hd;d&&(this.t=d,void 0!==this.qa&&(ra(d,this.qa,this.qa,this,this.O),O(d,this.qa,this.qa,this,this.M)));this.reset(!0)};
|
||||
function Ha(a,b,c,d,f){a.Sa=void 0!==b?b:a.lc;a.Wd=void 0!==c?c:a.mc;a.ia=a.Sa*a.Wd;a.xb=a.Va+a.ia;a.dc=void 0!==d?d:0;a.nc=void 0!==f?f:c;a.Zb=Math.floor(a.Kd/a.Sa);a.$b=Math.floor(a.Ld/a.nc)}e.ea=function(){this.Oa.focus()};e.Ba=function(a){this.ya=a;600==this.ya?(Ha(this,this.lc,this.mc,3,25),1024==this.ia&&this.t&&(this.Ia=this.xb+this.ia-1,O(this.t,this.Ia,this.Ia,this,this.Mc))):(this.u("updated video model: "+this.ya),Ha(this,64,32));Ia(this);qa(this)};
|
||||
e.T=function(a,b){if(a&&!this.m.B&&J(this)){if(this.m.B=!0,this.D=L(b,"keyboard"))this.D.I("canvas","keyDown",this.Oa),this.D.I("canvas","keyPress",this.Oa),this.D.I("canvas","keyUp",this.Oa)}else!a&&this.m.B&&(this.m.B=!1)};e.K=function(){this.Ma||(this.Ma=Math.floor(this.ta.width/16));this.Na||(this.Na=Math.floor(this.ta.height/16));B.prototype.K.call(this)};e.O=function(a){var b=this.t.O(a);this.t.M(a,b&127|(Math.floor(ya(this.t)/8333)&1?128:0))};e.M=function(){};
|
||||
e.Mc=function(a,b){if(void 0!==b){this.Ba(540);this.D&&this.D.Ba(542);var c=this.t,d=c.U,f=[],g=sa(d,this.Ia,this.Ia,this,this.Mc);if(0<=g){f.push(d[g][0]);f.push(d[g][1]);d.splice(g,1);for(var k=65536,h=0,g=0;g<d.length;g++)k>d[g][0]&&(k=d[g][0]),h<d[g][1]&&(h=d[g][1]);f.push(k);f.push(h)}4==f.length&&(c.Ja=f[2],c.Ka=f[3])}};function Ia(a){a.eb=Array(a.ia);for(var b=0;b<=a.ia;b++)a.eb[b]=-1}
|
||||
function qa(a){var b=0;if(a.m.B)for(;b<a.ia;){var c=a.a[a.Va+b];if(a.eb[b]!=c){var d=Math.floor(b/a.Sa);if(d>=a.dc&&(d-=a.dc,d<a.nc)){var f=c*a.Ma;a.Id.drawImage(a.ta,f%a.ta.width,Math.floor(f/a.ta.width)*a.Na,a.Ma,a.Na,b%a.Sa*a.Zb,d*a.$b,a.Zb,a.$b)}a.eb[b]=c}b++}}
|
||||
y(function(){for(var a=I(window.document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=G(c),f=window.document.createElement("canvas");if(void 0===f||!f.getContext){c.innerHTML="<br/>Missing <canvas> support. Please try a newer web browser.";break}f.setAttribute("class","c1pjs-canvas");f.setAttribute("width",d.screenWidth);f.setAttribute("height",d.screenHeight);f.setAttribute("contenteditable","true");f.setAttribute("autocapitalize","off");f.setAttribute("autocorrect","off");f.style.backgroundColor=
|
||||
d.screenColor;f.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(f.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,f,d.screenWidth,d.screenHeight));c.appendChild(f);var g=new Image,k=f.getContext("2d"),f=new Ga(d,f,k,g);g.onload=function(a){return function(){a.K()}}(f,d.charSet);g.src=d.charSet;H(f,c)}});
|
||||
function Ja(a){B.call(this,"C1PSerialPort",a);this.m.B=!1;this.bc=a.demo;this.Bd=0;this.Ad=1;this.reset()}E(Ja);e=Ja.prototype;e.reset=function(){if(2!=this.$){this.La=this.ib=0;var a=1;if(this.fc){var b=this.fc.match(/\d+/);null!==b&&(a=parseInt(b[0],10))}this.na='10 PRINT "HELLO OSI #'+a+'"\n';this.$=this.Qa=0}};e.start=function(){this.D&&this.bc&&(V(this.D," C\n\n",3E3),setTimeout(function(a){return function(){a.$=1;V(a.D,"LOAD\n")}}(this),12E3));this.bc=!1};
|
||||
e.I=function(a,b,c){var d=this;switch(b){case "listSerial":return this.p[b]=c,!0;case "loadSerial":return this.p[b]=c,c.onclick=function(){d.p.listSerial&&r(d.p.listSerial.value,d,d.gc)},!0;case "mountSerial":return!u("Mobi")&&window&&"FileReader"in window?(this.p[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){var b=a.currentTarget[1].files[0],c=new FileReader;c.onload=function(){d.gc(b.name,c.result.toString(),
|
||||
0)};c.readAsText(b);return!1}):c.parentNode.removeChild(c),!0}return!1};e.Q=function(a,b,c,d){this.a=a;this.vb=b;this.Gd=c-b+1;this.rc=this.vb+this.Gd;if(this.t=d)ra(d,b,c,this,this.O),O(d,b,c,this,this.M);this.K()};e.T=function(a,b){a&&!this.m.B&&(this.m.B=!0,this.H=b,this.D=L(b,"keyboard"))};
|
||||
e.gc=function(a,b,c){b?(this.na=b,this.$=this.Qa=0,this.H&&this.D&&this.t.m.S?(this.u("auto-loading "+a),this.t.ea(),"."!=this.na.charAt(0)?(this.$=1,V(this.D,"NEW\nLOAD\n")):(this.$=2,this.H.reset(!0),V(this.D,"ML"))):this.u(a+" ready to load")):this.u(a+" load error ("+c+")")};e.O=function(a,b){void 0!==b&&(a&1?Ka(this):this.na&&!this.Qa&&Ka(this))};e.M=function(){};
|
||||
function Ka(a){if(void 0!==a.na){a.ib=0;a.La=0;if(a.Qa<a.na.length){var b=a.na.charCodeAt(a.Qa++);10==b&&(b=13);a.ib=b;a.La=1}else 1==a.$&&a.D&&V(a.D," \nRUN\n"),a.$=0;a.Ya()}}e.Ya=function(){var a;for(a=this.vb+0;a<this.rc;a+=2)this.a[a]=this.La?this.Ad:this.Bd;for(a=this.vb+1;a<this.rc;a+=2)this.a[a]=this.La?this.ib:0};y(function(){for(var a=I(window.document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Ja(d);H(d,c)}});
|
||||
function La(a){B.call(this,"C1PDiskController",a);this.m.B=!1;this.qd=this.Ob=0;this.Lb=1;this.rd=this.Pb=2;this.Mb=3;this.Cb=128;this.Db=64;this.fa=4;this.kd=1;this.Ib=2;this.jd=4;this.md=8;this.ld=16;this.Jb=32;this.Hb=64;this.ab=128;this.od=4;this.Kb=8;this.nd=32;this.sd=this.pd=16;this.Nb=17;this.Eb=3;this.Tb=1;this.Ub=2;this.Sb=4;this.Rb=8;this.Zc=0;this.hd=40;this.reset(!0)}E(La);e=La.prototype;
|
||||
e.reset=function(a){Ma(this);this.F=-1;a&&(this.N=[],this.N[0]={Ug:this.Zc,oc:this.hd,Md:!0,la:20,W:0,ja:-1,Ha:[]})};
|
||||
function Ma(a){a.Jc={q:a.Hb,P:function(){},update:function(a){return function(c){void 0!==c&&(this.q=c);a.Wa.q&a.fa||W(a,a.qd,this)}}(a)};a.ba={q:255,P:function(){this.update()},update:function(a){return function(c){void 0===c?c=a.ba.q:Na(a,c,a.za.q);c=c|a.ab|a.Jb|a.md|a.jd|a.Ib|a.ld;c&=~a.kd;if(0<=a.F&&a.N[a.F].Ha.length){var d=a.N[a.F];d.Md&&(c&=~a.Jb);d.W||(c&=~a.Ib);10>=--d.la&&(0<d.la?(c&=~a.ab,Oa(a)):(d.la=100,0<=a.F&&(a.N[a.F].ja=0,Pa(a))))}this.q=c;a.Wa.q&a.fa&&W(a,a.Ob,this)}}(a)};a.Wa={q:0,
|
||||
P:function(){},update:function(a){return function(c){void 0!==c&&(this.q=c&~(a.Cb|a.Db));W(a,a.Lb,this);a.ba.update();a.Jc.update()}}(a)};a.Kc={q:255,P:function(){},update:function(a){return function(c){void 0!==c&&(this.q=c);a.Xa.q&a.fa||W(a,a.rd,this)}}(a)};a.za={q:255,P:function(){},update:function(a){return function(c){void 0===c?c=a.za.q:Na(a,a.ba.q,c);if(0<=a.F&&a.F<a.N.length){var d=a.N[a.F];d.Ha.length&&a.za.q&a.Kb&&!(c&a.Kb)&&(c&a.od?d.W--:d.W++,d.W>=d.oc&&(d.W=d.oc),0>d.W&&(d.W=0),d.la=
|
||||
20,a.ba.update(a.ba.q|a.ab),Oa(a))}this.q=c;a.Xa.q&a.fa&&W(a,a.Pb,this)}}(a)};a.Xa={q:0,P:function(){},update:function(a){return function(c){void 0!==c&&(this.q=c&~(a.Cb|a.Db));W(a,a.Mb,this);a.za.update();a.Kc.update()}}(a)};a.Sg={q:0,P:function(){},update:function(a){return function(c){void 0!==c&&((c&a.Eb)==a.Eb&&(a.ca.q=a.Ub|a.Sb|a.Rb),this.q=c);a.ca.update()}}(a)};a.ca={q:a.Ub|a.Sb|a.Rb,P:function(){},update:function(a){return function(c){void 0===c&&(c=a.ca.q);c&=~a.Tb;0<=a.F&&0<=a.N[a.F].ja&&
|
||||
(c|=a.Tb);this.q=c;W(a,a.sd,this)}}(a)};a.yb={q:0,P:function(a){return function(){Pa(a)}}(a),update:function(a){return function(c){void 0!==c&&(this.q=c);W(a,a.Nb,this)}}(a)};a.Tg={q:0,P:function(){},update:function(){return function(){}}(a)}}
|
||||
e.I=function(a,b,c){switch(b){case "listDisk":return this.p[b]=c,!0;case "loadDisk":return this.p[b]=c,c.onclick=function(a){return function(){if(a.p.listDisk){var b=a.p.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.u("loading "+aa(b)+"...");r(c,a,a.Od)}}}(this),!0}return!1};e.Q=function(a,b,c,d){this.a=a;this.fb=b;if(this.t=d)ra(d,b,c,this,this.O),O(d,b,c,this,this.M);this.K()};e.T=function(a){a&&!this.m.B&&(this.m.B=!0)};
|
||||
e.Od=function(a,b,c){if(c)this.u("disk load error ("+c+")");else{c=[];this.u("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.u("data error: "+d[0]);else if(this.N[0]){for(b=0;b<d.length;b++){var f,g=d[b],k=g.sectors;if(void 0===(f=g.trackNum)||void 0===k)throw Error("track "+b+" missing data");f!=b&&t("track "+f+" out of order (expected "+b+")");c=[];var h,l,m;if(f){Qa(c,g,"trackSig");Ra(c,g);X(c,g,"trackType");for(var p=0;p<k.length;p++){h=
|
||||
k[p];l=h.sectorData;X(c,h,"sectorSig");X(c,h,"sectorNum");X(c,h,"sectorPages");for(m=0;m<l.length;m++)c.push(l[m]);Qa(c,h,"sectorEndSig")}}else for(h=k[0],l=h.sectorData,X(c,g,"trackLoad",2),X(c,h,"sectorPages"),m=0;m<l.length;m++)c.push(l[m]);d[f].Lc=c}this.N[0].Ha=d;this.u("mount of "+a+" complete")}else this.u("no available drives")}else this.u("no tracks: "+a);else this.u("no data: "+a)}catch(D){this.u("disk data error: "+D.message)}}};
|
||||
function Ra(a,b){var c=b.trackNum;if(void 0===c)throw Error("missing bcd value: trackNum");a.push(Math.floor(c/10)<<4|c%10)}function X(a,b,c,d){b=b[c];if(void 0===b)throw Error("missing binary value: "+c);2==d&&a.push(b>>8&255);a.push(b&255)}function Qa(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 Sa(a,b,c){b&=63;16>b?b&=3:32>b&&(b&=17);switch(b){case a.Ob:a=a.Wa.q&a.fa?a.ba:a.Jc;break;case a.Lb:a=a.Wa;break;case a.Pb:a=a.Xa.q&a.fa?a.za:a.Kc;break;case a.Mb:a=a.Xa;break;case a.pd:a=c?a.Sg:a.ca;break;case a.Nb:a=a.yb;break;default:a=a.Tg}return a}e.O=function(a,b){void 0!==b&&Sa(this,a-this.fb,!1).P()};e.M=function(a,b){if(void 0!==b){var c=this.t.O(a);Sa(this,a-this.fb,!0).update(c)}};
|
||||
function Na(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&a.nd||(d|=2),a.ba.q&a.Hb||(d|=1));a.F!=d&&(a.F=d,a.ca.update())}function Oa(a){0<=a.F&&(a.N[a.F].ja=-1,a.yb.update(255),a.ca.update())}function Pa(a){var b=null;if(0<=a.F){var b=a.N[a.F],c=b.Ha[b.W];void 0!==c&&(0<=b.ja&&b.ja<c.Lc.length?(b.la=100,b=c.Lc[b.ja++],a.yb.update(b),a.ca.update()):(b.la=10,Oa(a)))}}function W(a,b,c){a.t.M(b+a.fb,c.q)}
|
||||
y(function(){for(var a=I(window.document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new La(d);H(d,c)}});function Y(a,b){B.call(this,"C1PComputer",a);this.J=b}E(Y);Y.prototype.reset=function(a){var b=null,c;for(c in this.J)for(var d=0;d<this.J[c].length;d++){var f=this.J[c][d];f&&f.reset&&(f.reset(),"cpu"==c&&(b=f))}b&&(b.update(),a&&N(b))};Y.prototype.start=function(){for(var a in this.J)if("cpu"!=a)for(var b=0;b<this.J[a].length;b++){var c=this.J[a][b];c&&c.start&&c.start()}};
|
||||
Y.prototype.stop=function(a,b){for(var c in this.J)if("cpu"!=c)for(var d=0;d<this.J[c].length;d++){var f=this.J[c][d];f&&f.stop&&f.stop(a,b)}};Y.prototype.I=function(a,b,c){switch(b){case "reset":return this.p[b]=c,c.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function L(a,b){return a.J[b]?a.J[b][0]:null}
|
||||
function Ta(a){var b=null,c;for(c in a.J)for(var d=0;d<a.J[c].length;d++){var f=a.J[c][d];if(f){if(!J(f)){J(f,function(a){return function(){Ta(a)}}(a));return}"cpu"==c?b=f:f.T&&f.T(!0,a)}}a.K();a.u("C1Pjs v1.18.1\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>");b&&b.T(!0,a)}
|
||||
y(function(){for(var a=I(window.document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=G(c),f,g={},k,h=0,l=0,m=0;m<d.modules.length;m++){var p=d.modules[m];if(!m){if("cpu"!=p.type)break;h=p.start;l=p.end;k=Array(l+1-h);for(f=h;f<k.length;f++)k[f]=0}if(f=F(p.refID,d.id)){var D=p.type;void 0===g[D]&&(g[D]=[]);g[D].push(f);f.Q&&void 0!==p.start&&f.Q(k,p.start,p.end,g.cpu[0])}else{t('no component for <module refid="'+p.refID+'">');return}}if(void 0===k){t('<module type="cpu"> definition must appear first in the <computer> specification');
|
||||
break}if(f=F("debugger",d.id))g["debugger"]=[f],f.Q&&f.Q(k,h,l,g.cpu[0]);h=new Y(d,g);if(l=F("panel",d.id))if(g.panel=[l],l.kb){f=d.id;d=void 0;g=[];f&&(f=0<(d=f.indexOf("."))?f.substr(0,d+1):"");for(d=0;d<C.length;d++)m=C[d],f&&m.id.indexOf(f)||g.push(m);d=g;for(g=0;g<d.length;g++)f=d[g],f!=l&&(f.Ua=l.Ua,f.u=l.u,f.kb=l.kb)}H(h,c);Ta(h)}});var Z=0;function Ua(a,b,c,d,f,g){f("Loading "+a+"...");r(a,null,function(k,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),g(h,null)):Va(h,a,b,c,d,f,g)})}
|
||||
function Va(a,b,c,d,f,g,k){function h(a,g){if(g)k(g,null);else{if(c){var h=b;h&&0>h.indexOf("/")&&(h=window.location.pathname+h);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" state=$2"+d+"$2":"")+(h?" url=$2"+h+"$2":""))}h=null;if("<"==a.charAt(0))try{window.ActiveXObject||"ActiveXObject"in window?(f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),h=new window.ActiveXObject("Microsoft.XMLDOM"),h.async=!1,h.loadXML(a)):h=(new window.DOMParser).parseFromString(a,"text/xml")}catch(D){h=
|
||||
null,a=D.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,h)}}a?f?Wa(a,g,h):h(a,null):k("no data"+(b?" for file: "+b:""),null)}
|
||||
function Wa(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");r(f,null,function(g,k,h){if(h||!k)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(g=d[3])if(h=k.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(g);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=l&&(k=k.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+f);return}k=k.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],k);Wa(a,b,c)}})}else c(a,null)}
|
||||
function Xa(a,b,c){function d(a){if(void 0===k){var b=g&&I(g,"machine-warning");k=b&&b[0]||g}k&&(k.innerHTML=ca(a))}function f(a){d("Error: "+a);h&&(--Z||A(!0));h=!1}var g,k,h=!0;Z++;try{if(g=window.document.getElementById(a)){c||(c="/versions/c1pjs/1.18.1/components.xsl");var l=function(h,k){if(k){var l=function(h,l){if(l)if(l)if(d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=k.transformNode(l);m?(g.outerHTML=m,--Z||A(!0)):f("transformNodeToObject failed")}else window.document.implementation&&
|
||||
window.document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(l),(m=m.transformToFragment(k,window.document))?g.parentNode?(g.parentNode.replaceChild(m,g),--Z||A(!0)):f("invalid machine element: "+a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f("failed to load XSL file: "+c);else f(h)};k?Ua(c,null,null,!1,d,l):f("failed to load XML file: "+b)}else f(h)};"<"!=b.charAt(0)?Ua(b,a,void 0,!0,d,l):Va(b,null,a,void 0,!1,d,l)}else f("missing machine element: "+
|
||||
a)}catch(m){f(m.message)}return h}window.embedC1P=function(a,b,c){A(!1);return Xa(a,b,c)};window.enableEvents=A;window.sendEvent=ea;})();
|
||||
262
versions/c1pjs/1.18.1/common.css
Normal file
262
versions/c1pjs/1.18.1/common.css
Normal file
|
|
@ -0,0 +1,262 @@
|
|||
@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 {
|
||||
margin: 15px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.c1pjs {
|
||||
overflow: visible;
|
||||
}
|
||||
.machine-placeholder {
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
.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-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;
|
||||
}
|
||||
}
|
||||
46
versions/c1pjs/1.18.1/common.xsl
Normal file
46
versions/c1pjs/1.18.1/common.xsl
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
<?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 " "> <!ENTITY ne "≠"> <!ENTITY le "≤"> <!ENTITY ge "≥">
|
||||
<!ENTITY times "×"> <!ENTITY sdot "⋅"> <!ENTITY divide "÷">
|
||||
<!ENTITY copy "©"> <!ENTITY Sigma "Σ"> <!ENTITY sigma "σ"> <!ENTITY sum "∑"> <!ENTITY lbrace "{">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:template name="commonStyles">
|
||||
<meta charset="utf-8"/>
|
||||
<link rel="shortcut icon" href="/versions/images/current/favicon.ico" type="image/x-icon"/>
|
||||
<link rel="stylesheet" type="text/css" href="/versions/c1pjs/1.18.1/common.css"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="commonTop">
|
||||
<div class="common-top">
|
||||
<div class="common-top-left">
|
||||
<ul>
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/apps/pc/">Apps</a></li>
|
||||
<li><a href="/disks/pc/">Disks</a></li>
|
||||
<li><a href="/devices/">Machines</a></li>
|
||||
<li><a href="/docs/">Docs</a></li>
|
||||
<li><a href="/pubs/">Pubs</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
<li><a href="/docs/about/">About</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="common-top-right">
|
||||
<p>Powered by <a href="http://nodejs.org" target="_blank">Node.js</a> and <a href="http://aws.amazon.com/about-aws/whats-new/2013/03/11/announcing-aws-elastic-beanstalk-for-node-js/" target="_blank">AWS</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> website © 2012-2015 by <a href="http://twitter.com/jeffpar">@jeffpar</a></span><br/>
|
||||
<span class="common-copyright">PCjs and C1Pjs released under <a href="http://gnu.org/licenses/gpl.html">GPL version 3 or later</a></span>
|
||||
</p>
|
||||
</div>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
106
versions/c1pjs/1.18.1/components.css
Normal file
106
versions/c1pjs/1.18.1/components.css
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
@CHARSET "UTF-8";
|
||||
|
||||
|
||||
*:not(input,textarea) {
|
||||
-webkit-user-select: none;
|
||||
}
|
||||
.c1pjs-embed {
|
||||
}
|
||||
.c1pjs-embed:after {
|
||||
clear:both;
|
||||
}
|
||||
.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;
|
||||
}
|
||||
571
versions/c1pjs/1.18.1/components.xsl
Normal file
571
versions/c1pjs/1.18.1/components.xsl
Normal file
|
|
@ -0,0 +1,571 @@
|
|||
<?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:param name="rootDir" select="''"/>
|
||||
<xsl:param name="generator" select="'client'"/>
|
||||
|
||||
<xsl:variable name="MACHINECLASS">c1p</xsl:variable>
|
||||
<xsl:variable name="APPCLASS">c1pjs</xsl:variable>
|
||||
<xsl:variable name="APPVERSION">1.18.1</xsl:variable>
|
||||
<xsl:variable name="SITEHOST">www.pcjs.org</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="@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-2015 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>
|
||||
<h2 style="{$pos}"><xsl:apply-templates/></h2>
|
||||
</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: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:otherwise>224</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: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: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:otherwise/>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="screenColor">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@screencolor"><xsl:value-of select="@screencolor"/></xsl:when>
|
||||
<xsl:otherwise>black</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"/>'</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>
|
||||
162
versions/c1pjs/1.18.1/document.css
Normal file
162
versions/c1pjs/1.18.1/document.css
Normal 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;
|
||||
}
|
||||
450
versions/c1pjs/1.18.1/document.xsl
Normal file
450
versions/c1pjs/1.18.1/document.xsl
Normal file
|
|
@ -0,0 +1,450 @@
|
|||
<?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 " "> <!ENTITY ne "≠"> <!ENTITY le "≤"> <!ENTITY ge "≥">
|
||||
<!ENTITY times "×"> <!ENTITY sdot "⋅"> <!ENTITY divide "÷">
|
||||
<!ENTITY copy "©"> <!ENTITY Sigma "Σ"> <!ENTITY sigma "σ"> <!ENTITY sum "∑"> <!ENTITY lbrace "{">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:template name="documentStyles">
|
||||
<link rel="stylesheet" type="text/css" href="/versions/c1pjs/1.18.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 = ''"> </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"><</xsl:template>
|
||||
<xsl:template match="gt">></xsl:template>
|
||||
<xsl:template match="ne">≠</xsl:template>
|
||||
<xsl:template match="le">≤</xsl:template>
|
||||
<xsl:template match="ge">≥</xsl:template>
|
||||
<xsl:template match="times">×</xsl:template>
|
||||
<xsl:template match="dot">⋅</xsl:template>
|
||||
<xsl:template match="divide">÷</xsl:template>
|
||||
<xsl:template match="sigma">σ</xsl:template>
|
||||
|
||||
<xsl:template match="summation">
|
||||
<span class="summation">
|
||||
<span class="summation-upper"><xsl:value-of select="@upper"/></span>
|
||||
<span class="summation-symbol">∑</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">{</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><</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>></xsl:text><xsl:apply-templates mode="inner"/><xsl:text></</xsl:text><xsl:value-of select="@name"/><xsl:text>></xsl:text></xsl:when>
|
||||
<xsl:when test="normalize-space(.) != ''"><xsl:text>></xsl:text><xsl:value-of select="."/><xsl:text></</xsl:text><xsl:value-of select="@name"/><xsl:text>></xsl:text></xsl:when>
|
||||
<xsl:otherwise><xsl:text>/></xsl:text></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</blockquote>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
49
versions/c1pjs/1.18.1/machine.xsl
Normal file
49
versions/c1pjs/1.18.1/machine.xsl
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<?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 " "> <!ENTITY sect "§"> <!ENTITY copy "©"> <!ENTITY para "¶"> <!ENTITY ndash "–"> <!ENTITY mdash "—">
|
||||
<!ENTITY lsquo "‘"> <!ENTITY rsquo "’"> <!ENTITY ldquo "“"> <!ENTITY rdquo "”"> <!ENTITY dagger "†"> <!ENTITY Dagger "‡">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:output doctype-system="about:legacy-compat"/>
|
||||
|
||||
<xsl:include href="/versions/c1pjs/1.18.1/common.xsl"/>
|
||||
<xsl:include href="/versions/c1pjs/1.18.1/components.xsl"/>
|
||||
|
||||
<xsl:template match="/machine">
|
||||
<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 {@class}js">
|
||||
<xsl:call-template name="component">
|
||||
<xsl:with-param name="machine" select="@id"/>
|
||||
<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: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="@class"/>-dbg</xsl:when>
|
||||
<xsl:otherwise><xsl:value-of select="@class"/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
247
versions/c1pjs/1.18.1/manifest.xsl
Normal file
247
versions/c1pjs/1.18.1/manifest.xsl
Normal 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 " "> <!ENTITY sect "§"> <!ENTITY copy "©"> <!ENTITY para "¶"> <!ENTITY ndash "–"> <!ENTITY mdash "—">
|
||||
<!ENTITY lsquo "‘"> <!ENTITY rsquo "’"> <!ENTITY ldquo "“"> <!ENTITY rdquo "”"> <!ENTITY dagger "†"> <!ENTITY Dagger "‡">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:output doctype-system="about:legacy-compat"/>
|
||||
|
||||
<xsl:include href="/versions/c1pjs/1.18.1/common.xsl"/>
|
||||
<xsl:include href="/versions/c1pjs/1.18.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="$MACHINECLASS"/></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>
|
||||
47
versions/c1pjs/1.18.1/outline.xsl
Normal file
47
versions/c1pjs/1.18.1/outline.xsl
Normal 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 " "> <!ENTITY sect "§"> <!ENTITY copy "©"> <!ENTITY para "¶"> <!ENTITY ndash "–"> <!ENTITY mdash "—">
|
||||
<!ENTITY lsquo "‘"> <!ENTITY rsquo "’"> <!ENTITY ldquo "“"> <!ENTITY rdquo "”"> <!ENTITY dagger "†"> <!ENTITY Dagger "‡">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:output doctype-system="about:legacy-compat"/>
|
||||
|
||||
<xsl:include href="/versions/c1pjs/1.18.1/common.xsl"/>
|
||||
<xsl:include href="/versions/c1pjs/1.18.1/document.xsl"/>
|
||||
<xsl:include href="/versions/c1pjs/1.18.1/components.xsl"/>
|
||||
|
||||
<xsl:template match="/outline">
|
||||
<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="$MACHINECLASS"/></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="$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:stylesheet>
|
||||
262
versions/pcjs/1.18.1/common.css
Normal file
262
versions/pcjs/1.18.1/common.css
Normal file
|
|
@ -0,0 +1,262 @@
|
|||
@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 {
|
||||
margin: 15px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.c1pjs {
|
||||
overflow: visible;
|
||||
}
|
||||
.machine-placeholder {
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
.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-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;
|
||||
}
|
||||
}
|
||||
46
versions/pcjs/1.18.1/common.xsl
Normal file
46
versions/pcjs/1.18.1/common.xsl
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
<?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 " "> <!ENTITY ne "≠"> <!ENTITY le "≤"> <!ENTITY ge "≥">
|
||||
<!ENTITY times "×"> <!ENTITY sdot "⋅"> <!ENTITY divide "÷">
|
||||
<!ENTITY copy "©"> <!ENTITY Sigma "Σ"> <!ENTITY sigma "σ"> <!ENTITY sum "∑"> <!ENTITY lbrace "{">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:template name="commonStyles">
|
||||
<meta charset="utf-8"/>
|
||||
<link rel="shortcut icon" href="/versions/images/current/favicon.ico" type="image/x-icon"/>
|
||||
<link rel="stylesheet" type="text/css" href="/versions/pcjs/1.18.1/common.css"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="commonTop">
|
||||
<div class="common-top">
|
||||
<div class="common-top-left">
|
||||
<ul>
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/apps/pc/">Apps</a></li>
|
||||
<li><a href="/disks/pc/">Disks</a></li>
|
||||
<li><a href="/devices/">Machines</a></li>
|
||||
<li><a href="/docs/">Docs</a></li>
|
||||
<li><a href="/pubs/">Pubs</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
<li><a href="/docs/about/">About</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="common-top-right">
|
||||
<p>Powered by <a href="http://nodejs.org" target="_blank">Node.js</a> and <a href="http://aws.amazon.com/about-aws/whats-new/2013/03/11/announcing-aws-elastic-beanstalk-for-node-js/" target="_blank">AWS</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> website © 2012-2015 by <a href="http://twitter.com/jeffpar">@jeffpar</a></span><br/>
|
||||
<span class="common-copyright">PCjs and C1Pjs released under <a href="http://gnu.org/licenses/gpl.html">GPL version 3 or later</a></span>
|
||||
</p>
|
||||
</div>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
145
versions/pcjs/1.18.1/components.css
Normal file
145
versions/pcjs/1.18.1/components.css
Normal file
|
|
@ -0,0 +1,145 @@
|
|||
@CHARSET "UTF-8";
|
||||
|
||||
|
||||
*:not(input,textarea) {
|
||||
-webkit-user-select: none;
|
||||
}
|
||||
.pcjs-embed {
|
||||
}
|
||||
.pcjs-embed:after {
|
||||
clear:both;
|
||||
}
|
||||
.pcjs-name, .pcjs-menu {
|
||||
clear: both;
|
||||
font-weight: bold;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
.pcjs-menu {
|
||||
float: left;
|
||||
}
|
||||
.pcjs-canvas {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.pcjs-container {
|
||||
color: #000000;
|
||||
position: relative;
|
||||
}
|
||||
.pcjs-label {
|
||||
font-size: small;
|
||||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
float: left;
|
||||
font-family: "Lucida Console", monospace;
|
||||
}
|
||||
.pcjs-control textarea {
|
||||
font-family: Monaco, monospace;
|
||||
font-size: x-small;
|
||||
}
|
||||
.pcjs-fieldset {
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.pcjs-flag {
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.pcjs-register {
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
border: 1px solid black;
|
||||
}
|
||||
.pcjs-switches {
|
||||
float: left;
|
||||
}
|
||||
.pcjs-bitBucket {
|
||||
float: left;
|
||||
width: 19px;
|
||||
height: 38px;
|
||||
}
|
||||
.pcjs-bitCell {
|
||||
float: left;
|
||||
width: 19px;
|
||||
height: 19px;
|
||||
margin-right: -1px;
|
||||
margin-bottom: -1px;
|
||||
border: 1px solid black;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
}
|
||||
.pcjs-bitCellLeft {
|
||||
border-left: 1px solid black;
|
||||
}
|
||||
.pcjs-bitLabel {
|
||||
font-size: xx-small;
|
||||
text-align: center;
|
||||
}
|
||||
.pcjs-description, .pcjs-status {
|
||||
font-size: x-small;
|
||||
line-height: 2em;
|
||||
}
|
||||
.pcjs-key {
|
||||
border: 1px solid black;
|
||||
font-size: x-small;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
height: 34px;
|
||||
line-height: 34px;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.pcjs-led {
|
||||
float: left;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
margin: 4px;
|
||||
border: 1px solid black;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
background-color: #000000;
|
||||
}
|
||||
.pcjs-video-object {
|
||||
clear: both;
|
||||
height: auto;
|
||||
position: relative;
|
||||
}
|
||||
.pcjs-video-object textarea {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 0;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
.pcjs-reference {
|
||||
float: left;
|
||||
font-size: x-small;
|
||||
}
|
||||
.pcjs-reference a {
|
||||
text-decoration: none;
|
||||
}
|
||||
.pcjs-copyright {
|
||||
float: right;
|
||||
font-size: x-small;
|
||||
}
|
||||
.pcjs-copyright a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 900px) {
|
||||
.pcjs-textarea {
|
||||
width: 100% !important;
|
||||
}
|
||||
.pcjs-registers {
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
1001
versions/pcjs/1.18.1/components.xsl
Normal file
1001
versions/pcjs/1.18.1/components.xsl
Normal file
File diff suppressed because it is too large
Load diff
162
versions/pcjs/1.18.1/document.css
Normal file
162
versions/pcjs/1.18.1/document.css
Normal 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;
|
||||
}
|
||||
450
versions/pcjs/1.18.1/document.xsl
Normal file
450
versions/pcjs/1.18.1/document.xsl
Normal file
|
|
@ -0,0 +1,450 @@
|
|||
<?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 " "> <!ENTITY ne "≠"> <!ENTITY le "≤"> <!ENTITY ge "≥">
|
||||
<!ENTITY times "×"> <!ENTITY sdot "⋅"> <!ENTITY divide "÷">
|
||||
<!ENTITY copy "©"> <!ENTITY Sigma "Σ"> <!ENTITY sigma "σ"> <!ENTITY sum "∑"> <!ENTITY lbrace "{">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:template name="documentStyles">
|
||||
<link rel="stylesheet" type="text/css" href="/versions/pcjs/1.18.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 = ''"> </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"><</xsl:template>
|
||||
<xsl:template match="gt">></xsl:template>
|
||||
<xsl:template match="ne">≠</xsl:template>
|
||||
<xsl:template match="le">≤</xsl:template>
|
||||
<xsl:template match="ge">≥</xsl:template>
|
||||
<xsl:template match="times">×</xsl:template>
|
||||
<xsl:template match="dot">⋅</xsl:template>
|
||||
<xsl:template match="divide">÷</xsl:template>
|
||||
<xsl:template match="sigma">σ</xsl:template>
|
||||
|
||||
<xsl:template match="summation">
|
||||
<span class="summation">
|
||||
<span class="summation-upper"><xsl:value-of select="@upper"/></span>
|
||||
<span class="summation-symbol">∑</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">{</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><</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>></xsl:text><xsl:apply-templates mode="inner"/><xsl:text></</xsl:text><xsl:value-of select="@name"/><xsl:text>></xsl:text></xsl:when>
|
||||
<xsl:when test="normalize-space(.) != ''"><xsl:text>></xsl:text><xsl:value-of select="."/><xsl:text></</xsl:text><xsl:value-of select="@name"/><xsl:text>></xsl:text></xsl:when>
|
||||
<xsl:otherwise><xsl:text>/></xsl:text></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</blockquote>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
49
versions/pcjs/1.18.1/machine.xsl
Normal file
49
versions/pcjs/1.18.1/machine.xsl
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<?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 " "> <!ENTITY sect "§"> <!ENTITY copy "©"> <!ENTITY para "¶"> <!ENTITY ndash "–"> <!ENTITY mdash "—">
|
||||
<!ENTITY lsquo "‘"> <!ENTITY rsquo "’"> <!ENTITY ldquo "“"> <!ENTITY rdquo "”"> <!ENTITY dagger "†"> <!ENTITY Dagger "‡">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:output doctype-system="about:legacy-compat"/>
|
||||
|
||||
<xsl:include href="/versions/pcjs/1.18.1/common.xsl"/>
|
||||
<xsl:include href="/versions/pcjs/1.18.1/components.xsl"/>
|
||||
|
||||
<xsl:template match="/machine">
|
||||
<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 {@class}js">
|
||||
<xsl:call-template name="component">
|
||||
<xsl:with-param name="machine" select="@id"/>
|
||||
<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: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="@class"/>-dbg</xsl:when>
|
||||
<xsl:otherwise><xsl:value-of select="@class"/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
247
versions/pcjs/1.18.1/manifest.xsl
Normal file
247
versions/pcjs/1.18.1/manifest.xsl
Normal 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 " "> <!ENTITY sect "§"> <!ENTITY copy "©"> <!ENTITY para "¶"> <!ENTITY ndash "–"> <!ENTITY mdash "—">
|
||||
<!ENTITY lsquo "‘"> <!ENTITY rsquo "’"> <!ENTITY ldquo "“"> <!ENTITY rdquo "”"> <!ENTITY dagger "†"> <!ENTITY Dagger "‡">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:output doctype-system="about:legacy-compat"/>
|
||||
|
||||
<xsl:include href="/versions/pcjs/1.18.1/common.xsl"/>
|
||||
<xsl:include href="/versions/pcjs/1.18.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="$MACHINECLASS"/></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>
|
||||
47
versions/pcjs/1.18.1/outline.xsl
Normal file
47
versions/pcjs/1.18.1/outline.xsl
Normal 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 " "> <!ENTITY sect "§"> <!ENTITY copy "©"> <!ENTITY para "¶"> <!ENTITY ndash "–"> <!ENTITY mdash "—">
|
||||
<!ENTITY lsquo "‘"> <!ENTITY rsquo "’"> <!ENTITY ldquo "“"> <!ENTITY rdquo "”"> <!ENTITY dagger "†"> <!ENTITY Dagger "‡">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:output doctype-system="about:legacy-compat"/>
|
||||
|
||||
<xsl:include href="/versions/pcjs/1.18.1/common.xsl"/>
|
||||
<xsl:include href="/versions/pcjs/1.18.1/document.xsl"/>
|
||||
<xsl:include href="/versions/pcjs/1.18.1/components.xsl"/>
|
||||
|
||||
<xsl:template match="/outline">
|
||||
<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="$MACHINECLASS"/></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="$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:stylesheet>
|
||||
1153
versions/pcjs/1.18.1/pc-dbg.js
Normal file
1153
versions/pcjs/1.18.1/pc-dbg.js
Normal file
File diff suppressed because it is too large
Load diff
1029
versions/pcjs/1.18.1/pc.js
Normal file
1029
versions/pcjs/1.18.1/pc.js
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue