From 53578f128d8987702e7d4ecc365e038d50b7ba96 Mon Sep 17 00:00:00 2001 From: Jeff Parsons Date: Sun, 12 Oct 2014 00:20:15 -0700 Subject: [PATCH] Final preparations for open source roll-out (including a C1Pjs control panel fix) --- docs/pcjs/demos/samples.zip | Bin 458444 -> 458444 bytes my_modules/c1pjs-client/lib/computer.js | 46 ++++++++++++------------ versions/c1pjs/1.15.4/c1p-dbg.js | 36 +++++++++---------- versions/c1pjs/1.15.4/c1p.js | 28 +++++++-------- 4 files changed, 56 insertions(+), 54 deletions(-) diff --git a/docs/pcjs/demos/samples.zip b/docs/pcjs/demos/samples.zip index a24cfbfd83412d9461883677bd2d0d4851daedc1..7a0f1441f8506ddf44a2d183f3019babe90a8abe 100644 GIT binary patch delta 273 zcmX@}SNhCf=?P{`Gc`6^OjiU_%@-BhFDf!_zo^LcjTgw@eo~+56cdOs)re^pm|kI$Jc6@i@XI-D&2cY)H=3v<~- zrq6lF!n1wuGZt4ykd7zMSr&m9V7cu;xj?Y+`&TS6Aj>9SR1|AZe#^2w`7J9?14skV zjBK!ydwFcVEHIrQQ@OYI6tj7N<*t>mT>~@Lm9a@TGG#JNKmDCehP_nVDrAm^)pWtX bYzo`?ez0Y-fut(`v1u`tYENJKk4+r_?)YXL delta 273 zcmX@}SNhCf=?P{`>FOITrYi!e=8KB$7Zn+|UsPoJ#tY entry for type="panel". - */ - var panel = Component.getComponentByID('panel', parmsComputer['id']); - if (panel) { - modules['panel'] = [panel]; - /* - * Iterate through all the other components and update their print methods if the Control Panel has provided overrides. - */ - if (panel.controlPrint) { - var aComponents = Component.getComponents(parmsComputer['id']); - for (var iComponent = 0; iComponent < aComponents.length; iComponent++) { - component = aComponents[iComponent]; - if (component == panel) continue; - component.notice = panel.notice; - component.println = panel.println; - component.controlPrint = panel.controlPrint; - } - } - } - var abMemory; var addrStart = 0, addrEnd = 0; @@ -350,10 +328,34 @@ C1PComputer.init = function() } var computer = new C1PComputer(parmsComputer, modules); + + /* + * Let's see if the Control Panel is installed (NOTE: its ID must be "panel", and only one per machine is supported); + * the Panel needs our setPower() notifications, and this relieves us from having an explicit entry for type="panel". + */ + var panel = Component.getComponentByID('panel', parmsComputer['id']); + if (panel) { + modules['panel'] = [panel]; + /* + * Iterate through all the other components and update their print methods if the Control Panel has provided overrides. + */ + if (panel.controlPrint) { + var aComponents = Component.getComponents(parmsComputer['id']); + for (var iComponent = 0; iComponent < aComponents.length; iComponent++) { + component = aComponents[iComponent]; + if (component == panel) continue; + component.notice = panel.notice; + component.println = panel.println; + component.controlPrint = panel.controlPrint; + } + } + } + /* * We may eventually add a "Power" button, but for now, all we have is a "Reset" button */ Component.bindComponentControls(computer, eComputer, C1PJSCLASS); + /* * "Power" the computer automatically */ diff --git a/versions/c1pjs/1.15.4/c1p-dbg.js b/versions/c1pjs/1.15.4/c1p-dbg.js index 4ea58e682..42361c067 100644 --- a/versions/c1pjs/1.15.4/c1p-dbg.js +++ b/versions/c1pjs/1.15.4/c1p-dbg.js @@ -1,12 +1,12 @@ (function(){var f;function aa(a,b){var c="";void 0===b?b=8:8=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function n(a){return aa(a,2)}function q(a){return aa(a,4)}function ba(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));return b}var ca={"&":"&","<":"<",">":">",'"':""","'":"'"};function da(a){return a.replace(/[&<>"']/g,function(a){return ca[a]})}function r(){return Date.now()||+new Date} -function t(a,b,c,d,e){b=!!b;var g=0,h=null,m=ba(a),l=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");b&&(l.onreadystatechange=function(){4===l.readyState&&(l.onreadystatechange=void 0,h=l.responseText,200!=l.status&&(g=l.status||-1),d&&e&&e.call(d,m,h,g,void 0))});if(c){var k="",p;for(p in c)c.hasOwnProperty(p)&&(k&&(k+="&"),k+=p+"="+encodeURIComponent(c[p]));k=k.replace(/%20/g,"+");l.open("POST",a,b);l.setRequestHeader("Content-type","application/x-www-form-urlencoded"); -l.send(k)}else l.open("GET",a,b),l.send();a=[];b||(h=l.responseText,200!=l.status&&(g=l.status||-1),d&&e&&e.call(d,m,h,g,void 0),a=[g,h]);return a}function u(a){window?window.alert(a):console.log(a)}function v(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function ea(a,b,c){function d(){a-=1;0<=a&&(b()||(a=0));0>8&255);a.push(b&255)}function Ya(a,b,c){b=b[c];if(void 0===b)throw"missing signature: "+c;for(c=0;cb?b&=3:32>b&&(b&=17);switch(b){case a.md:a=a.Zb.s&a.Ka?a.Ha:a.he;break;case a.jd:a=a.Zb;break;case a.nd:a=a.$b.s&a.Ka?a.sb:a.ie;break;case a.kd:a=a.$b;break;case a.of:a=c?a.Vi:a.Ia;break;case a.ld:a=a.Jc;break;default:a=a.Wi}return a}f.H=function(a,b){if(void 0!==b){var c=$a(this,a-this.mc,!1);this.m&&S(this.m,this,a,b,this.m.La,!1,c.je);c.aa()}}; f.O=function(a,b){if(void 0!==b){var c=this.l.H(a),d=$a(this,a-this.mc,!0);if(this.m&&T(this.m,this.m.La|this.m.dc)&&(S(this.m,this,a,b,this.m.La,!0,d.je),d.Af))for(var e=128,g=d.s^c;g&&e;)g&e&&this.m.message(" changed "+d.je+"."+d.Af[e]+" to "+(c&e?"1":"0")),e>>=1;d.update(c)}};function Va(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&a.nf||(d|=2),a.Ha.s&a.dd||(d|=1));a.K!=d&&(a.K=d,a.Ia.update())}function Wa(a){0<=a.K&&(a.U[a.K].Ua=-1,a.Jc.update(255),a.Ia.update())} @@ -137,8 +137,8 @@ f.message=function(a){this.i(a);Ca(this.l)};f.Nf=function(){this.i("Type ? for l function db(a){a.l&&I(a.l)&&!H(a.l)?(a=a.l,a.jb?(a.i(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}f.reset=function(){var a;this.Da.length||(this.Da=Array(1E3));for(a=0;a>24)}f.H=function(a){var b;a>=this.$&&a=this.Ya?this.i("invalid address: "+q(a)):(this.a[this.$+a]=b&255,va(this.l,a),this.l.update())};function ib(a,b){Y(a.ra,b,void 0)||a.ra.push(b);return!0} function Y(a,b,c){for(var d=!1,e=0;eh&&(k+=" ;'"+String.fromCharCode(h)+"'")}if(e==a.l.gc&&(h< -a.vd.length&&(k=a.vd[h]),h==a.l.pd)){l=0;for(k='"';h=a.H(b++);)16>l?k+=String.fromCharCode(h):16==l&&(k+="\u2026"),l++;k+='"'}k&&(d+=" "+k);c&&(d=(d+" ").substr(0,30),d+=";"+c.toString());a.Zf=b;return d} +function kb(a,b,c){var d=q(b),e=a.H(b++),g=a.Y[e],h=void 0===e?0:e,m=[],k=void 0===g[1]?0:g[1];do{d+=" "+n(h);if(!k--)break;h=a.H(b++);if(void 0===h)break;m.push(h)}while(1);void 0===g[0]&&(g=[a.Oe,1,a.R],m.push(e));var d=(d+" ").substr(0,15),d=d+a.hb[g[0]],l=null;if(void 0!==g[2]){k=g[2];l=a.ea[k];if(1==g[1]&&k==a.X)l=l.replace(/nnnn/,q(hb(b,h=m.pop())));else for(;m.length;)l=l.replace(/nn/,n(h=m.pop()));k==a.R&&1==g[1]&&32<=h&&128>h&&(l+=" ;'"+String.fromCharCode(h)+"'")}if(e==a.l.gc&&(h< +a.vd.length&&(l=a.vd[h]),h==a.l.pd)){k=0;for(l='"';h=a.H(b++);)16>k?l+=String.fromCharCode(h):16==k&&(l+="\u2026"),k++;l+='"'}l&&(d+=" "+l);c&&(d=(d+" ").substr(0,30),d+=";"+c.toString());a.Zf=b;return d} function Z(a,b){var c=a.wa;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.Ya)&&(a.i("address out of range: "+aa(c)),c=void 0);return c} function lb(a,b){if("?"==b)a.i("\nfrequency commands:"),a.i("clear\tclear all frequency counts");else{var c=0,d;if(a.fa)if("clear"==b){for(d=0;da.Bf.indexOf(m)&&(e=a.B);e==a.Tc&&m!=a.Fb&&(e=a.B)}else a.i("unknown operand: "+l),m=-1;if(0<=m){k=-1;for(h=0;hk)k=h;else{a.i("too many instruction matches (both "+n(k)+" and "+n(h)+")");k=-2;break}if(0<=k){if(d.push(k),void 0!==e)if(g=a.Y[k][1],l=l.match(/[0-9A-F]+/),null!==l)for(l=parseInt(l[0],16),1==g&&e==a.X&&(l-=c+2,-128>l||127>>=8;else g&& -a.i("instruction missing "+g+" bytes")}else a.i("unknown instruction: "+g+" "+l+"")}}e=d;if(e.length){for(c=0;ca.Bf.indexOf(m)&&(e=a.B);e==a.Tc&&m!=a.Fb&&(e=a.B)}else a.i("unknown operand: "+k),m=-1;if(0<=m){l=-1;for(h=0;hl)l=h;else{a.i("too many instruction matches (both "+n(l)+" and "+n(h)+")");l=-2;break}if(0<=l){if(d.push(l),void 0!==e)if(g=a.Y[l][1],k=k.match(/[0-9A-F]+/),null!==k)for(k=parseInt(k[0],16),1==g&&e==a.X&&(k-=c+2,-128>k||127>>=8;else g&& +a.i("instruction missing "+g+" bytes")}else a.i("unknown instruction: "+g+" "+k+"")}}e=d;if(e.length){for(c=0;cm&&ek?String.fromCharCode(k):".",e++;a.i(q(h)+" "+g+l)}a.wa=e}break;case "e":e=c[1];if(void 0===e)a.i("missing address");else if(e=Z(a,e),void 0!==e)for(d=2;dm&&el?String.fromCharCode(l):".",e++;a.i(q(h)+" "+g+k)}a.wa=e}break;case "e":e=c[1];if(void 0===e)a.i("missing address");else if(e=Z(a,e),void 0!==e)for(d=2;dd.length&&(a.i("note: only "+d.length+" available"),g=d.length); -void 0!==l&&(a.zc=0,a.i(g+" instructions earlier:"));l=a.zc?a.zc:1;c-=g;for(0>c&&(c=d.length-1);e&&c!=a.kb;){h=d[c];if(0>h)break;a.i(kb(a,h,l++));++c==d.length&&(c=0);e--;g--}a.Yf=g;a.zc=l}10==e&&a.i("no history available");break;case "r":fb(a,c);break;case "s":a.H(a.l.d)==a.l.Gb?(jb(a,a.l.d+3),a.Ta=!0,a.ya()||a.l.W()):mb(a);break;case "t":mb(a,c[1]);break;case "u":eb(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"); +case "modern":bb(a,!1);a.i("modern syntax enabled");break;case "msg":e=0;void 0!==c[2]&&("all"==c[2]?e=255:void 0!==a.Ib[c[2]]&&(e=a.Ib[c[2]]),e&&("on"==c[3]?a.Ga|=e:"off"==c[3]&&(a.Ga&=~e)));for(d in a.Ib)if(void 0===c[2]||"all"==c[2]||c[2]==d)e=a.Ib[d],a.i(d+" messages: "+(a.Ga&e?"on":"off"));break;default:a.i("unknown option: "+e)}break;case "p":k=c[1];e=10;c=a.kb;d=a.Da;if(void 0!==d){g=void 0===k?a.Yf:parseInt(k,10);void 0===g&&(g=10);g>d.length&&(a.i("note: only "+d.length+" available"),g=d.length); +void 0!==k&&(a.zc=0,a.i(g+" instructions earlier:"));k=a.zc?a.zc:1;c-=g;for(0>c&&(c=d.length-1);e&&c!=a.kb;){h=d[c];if(0>h)break;a.i(kb(a,h,k++));++c==d.length&&(c=0);e--;g--}a.Yf=g;a.zc=k}10==e&&a.i("no history available");break;case "r":fb(a,c);break;case "s":a.H(a.l.d)==a.l.Gb?(jb(a,a.l.d+3),a.Ta=!0,a.ya()||a.l.W()):mb(a);break;case "t":mb(a,c[1]);break;case "u":eb(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)}}}x(function(){for(var a=F(window.document,"c1pjs","debugger"),b=0;b");b&&b.ba(!0,a)} -x(function(){for(var a=F(window.document,"c1pjs","computer"),b=0;b');return}}if(void 0===p){u(' definition must appear first in the specification');break}if(e=C("debugger",d.id))g["debugger"]=[e],e.V&&e.V(p,h,m,g.cpu[0]);d=new $(d,g);E(d,c);nb(d)}});function ob(a,b,c,d){var e=t(a);if(e[0])throw Error(e[1]);return pb(e[1],a,b,c,d)} -function pb(a,b,c,d,e){var g=null;if(a){if(e)for(var h=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g;g=h.exec(a);){var m=g[2],l=t(m),k=l[1];if(l[0]||!k)throw c="unable to resolve XML reference: "+g[0]+" ("+l[0]+")",Error(c);if(l=g[3]){var p=k.match(new RegExp("<"+g[1]+"[^>]*>"));if(p){for(var m=p[0],s,wa=/( [a-z]+=)(['"])(.*?)\2/g;s=wa.exec(l);)m=0>m.indexOf(s[1])?m.replace(">",s[0]+">"):m.replace(new RegExp(s[1]+"(['\"])(.*?)\\1"),s[0]);p[0]!=m&&(k=k.replace(p[0],m))}else throw c="missing <"+g[1]+"> in "+m, -Error(c);}k=k.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(g[0],k);h.lastIndex=0}c&&(b&&0>b.indexOf("/")&&(b=window.location.pathname+b),a=a.replace(/(]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" state=$2"+d+"$2":"")+(b?" url=$2"+b+"$2":"")));if(0===a.indexOf("<"))window.ActiveXObject||"ActiveXObject"in window?(e||(a=a.replace(/\s*/g,"")),g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml");else throw Error("unrecognized XML: "+ +x(function(){for(var a=F(window.document,"c1pjs","computer"),b=0;b');return}}if(void 0===h){u(' definition must appear first in the specification'); +break}if(e=C("debugger",d.id))g["debugger"]=[e],e.V&&e.V(h,m,k,g.cpu[0]);m=new $(d,g);if(k=C("panel",d.id))if(g.panel=[k],k.sc){e=d.id;d=void 0;g=[];e&&(e=0<(d=e.indexOf("."))?e.substr(0,d+1):"");for(d=0;d/g;g=h.exec(a);){var m=g[2],k=t(m),l=k[1];if(k[0]||!l)throw c="unable to resolve XML reference: "+g[0]+" ("+k[0]+")",Error(c);if(k=g[3]){var p=l.match(new RegExp("<"+g[1]+"[^>]*>"));if(p){for(var m=p[0],s,wa=/( [a-z]+=)(['"])(.*?)\2/g;s=wa.exec(k);)m=0>m.indexOf(s[1])?m.replace(">",s[0]+">"):m.replace(new RegExp(s[1]+"(['\"])(.*?)\\1"),s[0]);p[0]!=m&&(l=l.replace(p[0],m))}else throw c="missing <"+g[1]+"> in "+m, +Error(c);}l=l.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(g[0],l);h.lastIndex=0}c&&(b&&0>b.indexOf("/")&&(b=window.location.pathname+b),a=a.replace(/(]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" state=$2"+d+"$2":"")+(b?" url=$2"+b+"$2":"")));if(0===a.indexOf("<"))window.ActiveXObject||"ActiveXObject"in window?(e||(a=a.replace(/\s*/g,"")),g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml");else throw Error("unrecognized XML: "+ (255=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));return b}var ba={"&":"&","<":"<",">":">",'"':""","'":"'"};function ca(a){return a.replace(/[&<>"']/g,function(a){return ba[a]})} -function r(a,b,c,d,f){b=!!b;var g=0,l=null,h=aa(a),m=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");b&&(m.onreadystatechange=function(){4===m.readyState&&(m.onreadystatechange=void 0,l=m.responseText,200!=m.status&&(g=m.status||-1),d&&f&&f.call(d,h,l,g,void 0))});if(c){var k="",n;for(n in c)c.hasOwnProperty(n)&&(k&&(k+="&"),k+=n+"="+encodeURIComponent(c[n]));k=k.replace(/%20/g,"+");m.open("POST",a,b);m.setRequestHeader("Content-type","application/x-www-form-urlencoded"); -m.send(k)}else m.open("GET",a,b),m.send();a=[];b||(l=m.responseText,200!=m.status&&(g=m.status||-1),d&&f&&f.call(d,h,l,g,void 0),a=[g,l]);return a}function s(a){window?window.alert(a):console.log(a)}function t(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 u={init:[],show:[],exit:[]},da=!0; +function r(a,b,c,d,f){b=!!b;var g=0,m=null,l=aa(a),h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");b&&(h.onreadystatechange=function(){4===h.readyState&&(h.onreadystatechange=void 0,m=h.responseText,200!=h.status&&(g=h.status||-1),d&&f&&f.call(d,l,m,g,void 0))});if(c){var k="",n;for(n in c)c.hasOwnProperty(n)&&(k&&(k+="&"),k+=n+"="+encodeURIComponent(c[n]));k=k.replace(/%20/g,"+");h.open("POST",a,b);h.setRequestHeader("Content-type","application/x-www-form-urlencoded"); +h.send(k)}else h.open("GET",a,b),h.send();a=[];b||(m=h.responseText,200!=h.status&&(g=h.status||-1),d&&f&&f.call(d,l,m,g,void 0),a=[g,m]);return a}function s(a){window?window.alert(a):console.log(a)}function t(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 u={init:[],show:[],exit:[]},da=!0; function v(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function w(a){u.init.push(a)}function x(a){if(da)for(var b=0;b=c&&(c+=32);a.ca=a.ca.substr(1);V(a,c)}0=b&&(b+=32),za(a,b),W(a,b,!0,a.Pb)&&(a.s.speed==a.s.oa?W(a,b,!1,a.td):(c=!1,a.Q[b]&&(clearTimeout(a.Q[b]),c=!0),c=ya(a,c),a.Q[a.$=b]=setTimeout(function(a){return function(){W(a,b,!1,a.ud)}}(a),c)),c=!0));return c} -function W(a,b,c,d){var f=!1;c||(a.Q[b]=null,a.$==b&&(a.$=0));var g=0,l=a.j[b];void 0===l&&(1<=b&&26>=b&&(b+=64,g=a.Ea),l=a.j[b]);void 0!==l&&(b=l>>12,f=l>>8&15,g||(g=l&255),c?(a.F[b]|=1<=b&&(b+=64,g=a.Ea),m=a.j[b]);void 0!==m&&(b=m>>12,f=m>>8&15,g||(g=m&255),c?(a.F[b]|=1<d||d>=this.Ud}a&&(d=this.bb.shift(),void 0!==d&&(this.Vb=d),this.sb=0,this.ic=c);for(d=c=0;8>d;d++)this.Wb&1<d[g][0]&&(l=d[g][0]),hd[g][0]&&(m=d[g][0]),l=a.cc&&(d-=a.cc,dMissing <canvas> support; try a new 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,l=f.getContext("2d"),f=new Ba(d,f,l,g);g.onload=function(a){return function(){a.J()}}(f,d.charSet);g.src=d.charSet;F(f,c)}}); +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,m=f.getContext("2d"),f=new Ba(d,f,m,g);g.onload=function(a){return function(){a.J()}}(f,d.charSet);g.src=d.charSet;F(f,c)}}); function Ea(a){y.call(this,"C1PSerialPort",a);this.A=!1;this.ac=a.demo;this.zd=0;this.yd=1;this.reset()}C(Ea);e=Ea.prototype;e.reset=function(){2!=this.Z&&(this.Ja=this.hb=0,this.ma='10 PRINT "HELLO OSI #'+ea(this)+'"\n',this.Z=this.Pa=0)};e.start=function(){this.C&&this.ac&&(X(this.C," C\n\n",3E3),setTimeout(function(a){return function(){a.Z=1;X(a.C,"LOAD\n")}}(this),12E3));this.ac=!1}; e.H=function(a,b,c,d){switch(c){case "listSerial":return this.o[c]=d,!0;case "loadSerial":return this.o[c]=d,d.onclick=function(a){return function(){a.o.listSerial&&r(a.o.listSerial.value,!0,null,a,a.Nd)}}(this),!0}return!1};e.P=function(a,b,c,d){this.a=a;this.ub=b;this.Ed=c-b+1;this.pc=this.ub+this.Ed;if(this.s=d)ma(d,b,c,this,this.N),Q(d,b,c,this,this.L);this.J()};e.S=function(a,b){a&&!this.A&&(this.A=!0,this.G=b,this.C=K(b,"keyboard"))}; e.Nd=function(a,b,c){b?(this.ma=b,this.Z=this.Pa=0,this.G&&this.C&&this.s.R?(this.t("auto-loading "+a),this.s.da(),"."!=this.ma.charAt(0)?(this.Z=1,X(this.C,"NEW\nLOAD\n")):(this.Z=2,this.G.reset(!0),X(this.C,"ML"))):this.t(a+" ready to load")):this.t(a+" load error ("+c+")")};e.N=function(a,b){void 0!==b&&(a&1?Fa(this):this.ma&&!this.Pa&&Fa(this))};e.L=function(){}; @@ -110,18 +110,18 @@ O:function(){},update:function(a){return function(c){void 0!==c&&(this.p=c&~(a.B 20,a.aa.update(a.aa.p|a.$a),Ja(a))}this.p=c;a.Wa.p&a.ea&&Y(a,a.Ob,this)}}(a)};a.Wa={p:0,O:function(){},update:function(a){return function(c){void 0!==c&&(this.p=c&~(a.Bb|a.Cb));Y(a,a.Lb,this);a.xa.update();a.Ic.update()}}(a)};a.Rg={p:0,O:function(){},update:function(a){return function(c){void 0!==c&&((c&a.Db)==a.Db&&(a.ba.p=a.Tb|a.Rb|a.Qb),this.p=c);a.ba.update()}}(a)};a.ba={p:a.Tb|a.Rb|a.Qb,O:function(){},update:function(a){return function(c){void 0===c&&(c=a.ba.p);c&=~a.Sb;0<=a.D&&0<=a.M[a.D].ia&& (c|=a.Sb);this.p=c;Y(a,a.qd,this)}}(a)};a.xb={p:0,O:function(a){return function(){Ka(a)}}(a),update:function(a){return function(c){void 0!==c&&(this.p=c);Y(a,a.Mb,this)}}(a)};a.Sg={p:0,O:function(){},update:function(){return function(){}}(a)}} e.H=function(a,b,c,d){switch(c){case "listDisk":return this.o[c]=d,!0;case "loadDisk":return this.o[c]=d,d.onclick=function(a){return function(){if(a.o.listDisk){var b=a.o.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.t("loading "+aa(b)+"...");r(c,!0,null,a,a.Md)}}}(this),!0}return!1};e.P=function(a,b,c,d){this.a=a;this.eb=b;if(this.s=d)ma(d,b,c,this,this.N),Q(d,b,c,this,this.L);this.J()};e.S=function(a){a&&!this.A&&(this.A=!0)}; -e.Md=function(a,b,c){if(c)this.t("disk load error ("+c+")");else{c=[];this.t("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.t("data error: "+d[0]);else if(this.M[0]){for(b=0;b>8&255);a.push(b&255)}function La(a,b,c){b=b[c];if(void 0===b)throw"missing signature: "+c;for(c=0;cb?b&=3:32>b&&(b&=17);switch(b){case a.Nb:a=a.Va.p&a.ea?a.aa:a.Hc;break;case a.Kb:a=a.Va;break;case a.Ob:a=a.Wa.p&a.ea?a.xa:a.Ic;break;case a.Lb:a=a.Wa;break;case a.nd:a=c?a.Rg:a.ba;break;case a.Mb:a=a.xb;break;default:a=a.Sg}return a}e.N=function(a,b){void 0!==b&&Na(this,a-this.eb,!1).O()};e.L=function(a,b){if(void 0!==b){var c=this.s.N(a);Na(this,a-this.eb,!0).update(c)}}; function Ia(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&a.ld||(d|=2),a.aa.p&a.Gb||(d|=1));a.D!=d&&(a.D=d,a.ba.update())}function Ja(a){0<=a.D&&(a.M[a.D].ia=-1,a.xb.update(255),a.ba.update())}function Ka(a){var b=null;if(0<=a.D){var b=a.M[a.D],c=b.Fa[b.V];void 0!==c&&(0<=b.ia&&b.ia");b&&b.S(!0,a)} -w(function(){for(var a=G(window.document,"c1pjs","computer"),b=0;b');return}}if(void 0===n){s(' definition must appear first in the specification');break}if(f=D("debugger",d.id))g["debugger"]=[f],f.P&&f.P(n,l,h,g.cpu[0]);d=new $(d,g);F(d,c);Oa(d)}});function Pa(a,b,c,d){var f=r(a);if(f[0])throw Error(f[1]);return Qa(f[1],a,b,c,d)} -function Qa(a,b,c,d,f){var g=null;if(a){if(f)for(var l=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g;g=l.exec(a);){var h=g[2],m=r(h),k=m[1];if(m[0]||!k)throw c="unable to resolve XML reference: "+g[0]+" ("+m[0]+")",Error(c);if(m=g[3]){var n=k.match(new RegExp("<"+g[1]+"[^>]*>"));if(n){for(var h=n[0],p,ka=/( [a-z]+=)(['"])(.*?)\2/g;p=ka.exec(m);)h=0>h.indexOf(p[1])?h.replace(">",p[0]+">"):h.replace(new RegExp(p[1]+"(['\"])(.*?)\\1"),p[0]);n[0]!=h&&(k=k.replace(n[0],h))}else throw c="missing <"+g[1]+"> in "+h, -Error(c);}k=k.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(g[0],k);l.lastIndex=0}c&&(b&&0>b.indexOf("/")&&(b=window.location.pathname+b),a=a.replace(/(]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" state=$2"+d+"$2":"")+(b?" url=$2"+b+"$2":"")));if(0===a.indexOf("<"))window.ActiveXObject||"ActiveXObject"in window?(f||(a=a.replace(/\s*/g,"")),g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml");else throw Error("unrecognized XML: "+ +w(function(){for(var a=G(window.document,"c1pjs","computer"),b=0;b');return}}if(void 0===m){s(' definition must appear first in the specification'); +break}if(f=D("debugger",d.id))g["debugger"]=[f],f.P&&f.P(m,l,h,g.cpu[0]);l=new $(d,g);if(h=D("panel",d.id))if(g.panel=[h],h.jb){f=d.id;d=void 0;g=[];f&&(f=0<(d=f.indexOf("."))?f.substr(0,d+1):"");for(d=0;d/g;g=m.exec(a);){var l=g[2],h=r(l),k=h[1];if(h[0]||!k)throw c="unable to resolve XML reference: "+g[0]+" ("+h[0]+")",Error(c);if(h=g[3]){var n=k.match(new RegExp("<"+g[1]+"[^>]*>"));if(n){for(var l=n[0],p,ka=/( [a-z]+=)(['"])(.*?)\2/g;p=ka.exec(h);)l=0>l.indexOf(p[1])?l.replace(">",p[0]+">"):l.replace(new RegExp(p[1]+"(['\"])(.*?)\\1"),p[0]);n[0]!=l&&(k=k.replace(n[0],l))}else throw c="missing <"+g[1]+"> in "+l, +Error(c);}k=k.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(g[0],k);m.lastIndex=0}c&&(b&&0>b.indexOf("/")&&(b=window.location.pathname+b),a=a.replace(/(]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" state=$2"+d+"$2":"")+(b?" url=$2"+b+"$2":"")));if(0===a.indexOf("<"))window.ActiveXObject||"ActiveXObject"in window?(f||(a=a.replace(/\s*/g,"")),g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml");else throw Error("unrecognized XML: "+ (255