Fixed soft keyboard controls for both iOS and non-iOS browsers, and updated the TopView 1.01 page

This commit is contained in:
Jeff Parsons 2017-07-25 18:50:14 -07:00 committed by Jeff Parsons
commit d8804faba0
32 changed files with 1132 additions and 1067 deletions

View file

@ -75,8 +75,8 @@ function Xb(a,b){return a.b[(b&a.C)>>>a.g].mb(b&a.j,b)}function Yb(a,b){var c=b&
function bc(a){for(var b=0,c=[],d=0;d<a.L;d++){var e=a.b[d];if(e.Da||e.Dc){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,k=[];g<e.length;){for(var p=e[g],t=g+1;t<e.length&&e[t]===p;)t++;k[h++]=t-g;k[h++]=p;g=t}k.length<e.length&&(e=k)}c[f]=e}}return c}function cc(a,b){if(void 0===b)return a.D=!a.D,a.D;void 0===a.A[b]&&(a.A[b]=[null,!1]);a.A[b][1]=!a.A[b][1];return a.A[b][1]}
function dc(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var k=+e+d;k<=g;k++)void 0!==f.A[k]?r("Input port "+q(k)+" already registered"):f.A[k]=[h,!1]}}function ec(a,b,c){for(var d=1,e=0,f=0;0<d;){var g=a.A[b],h=a.S[b]||1,k=1==h?255:2==h?65535:-1,p=k;void 0!==g?(g[0]&&(p=g[0](b,c),void 0===p?p=k:p&=k),a.K&&a.D!=g[1]&&fc(a.K,b,p)):a.K&&(Hb(a.K,a,b,null,c),a.D&&fc(a.K,b,p));e|=p<<f;f+=h<<3;b+=h;d-=h}return e}
function gc(a,b){if(void 0===b)return a.G=!a.G,a.G;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function hc(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var k=+e+d;k<=g;k++)void 0!==f.B[k]?r("Output port "+q(k)+" already registered"):f.B[k]=[h,!1]}}
function ic(a,b,c,d){for(var e=1,f=0;0<e;){var g=a.B[b],h=a.T[b]||1,k=1==h?255:2==h?65535:-1,k=(c>>>=f)&k;if(void 0!==g){if(g[0])g[0](b,k,d);a.K&&a.G!=g[1]&&jc(a.K,b,k)}else a.K&&(Hb(a.K,a,b,k,d),a.G&&jc(a.K,b,k));f+=h<<3;b+=h;e-=h}}function Tb(a,b,c){r("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Ub=1,Wb=2,kc;if(Ib){var lc=new ArrayBuffer(2);(new DataView(lc)).setUint16(0,256,!0);kc=256===(new Uint16Array(lc))[0]}else kc=!1;var vc=kc;
function A(a,b,c,d){this.id=wc+=2;this.b=null;this.J=a;this.nb=b;this.size=c||0;this.type=d||xc;this.w=d==yc;Pb(this);this.Da=this.Dc=!1;if(c)if(Ib)this.R=new ArrayBuffer(c),this.j=new DataView(this.R,0,c),this.g=new Uint8Array(this.R,0,c),this.u=new Uint16Array(this.R,0,c>>1),this.b=new Int32Array(this.R,0,c>>2),zc(this,vc?Ac:Bc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;zc(this,Cc)}else zc(this)}l=A.prototype;
function ic(a,b,c,d){for(var e=1,f=0;0<e;){var g=a.B[b],h=a.T[b]||1,k=1==h?255:2==h?65535:-1,k=(c>>>=f)&k;if(void 0!==g){if(g[0])g[0](b,k,d);a.K&&a.G!=g[1]&&jc(a.K,b,k)}else a.K&&(Hb(a.K,a,b,k,d),a.G&&jc(a.K,b,k));f+=h<<3;b+=h;e-=h}}function Tb(a,b,c){r("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Ub=1,Wb=2,kc;if(Ib){var lc=new ArrayBuffer(2);(new DataView(lc)).setUint16(0,256,!0);kc=256===(new Uint16Array(lc))[0]}else kc=!1;var mc=kc;
function A(a,b,c,d){this.id=wc+=2;this.b=null;this.J=a;this.nb=b;this.size=c||0;this.type=d||xc;this.w=d==yc;Pb(this);this.Da=this.Dc=!1;if(c)if(Ib)this.R=new ArrayBuffer(c),this.j=new DataView(this.R,0,c),this.g=new Uint8Array(this.R,0,c),this.u=new Uint16Array(this.R,0,c>>1),this.b=new Int32Array(this.R,0,c>>2),zc(this,mc?Ac:Bc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;zc(this,Cc)}else zc(this)}l=A.prototype;
l.save=function(){var a,b;if(Ib)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.j.getInt32(b<<2,!0);else a=this.b;return a};l.restore=function(a){if(a&&this.size==a.length<<2){var b;if(Ib)for(b=0;b<a.length;b++)this.j.setInt32(b<<2,a[b],!0);else this.b=a;return this.Da=!0}return!1};function zc(a,b){b||(b=Dc);Ec(a,b,void 0);Fc(a,b,void 0)}function Ec(a,b,c){c&&a.I||(a.Xa=b[0]||a.Gc,a.Hc=b[2]||a.Ic);if(c||void 0===c)a.mb=b[0]||a.Gc,a.Mb=b[2]||a.Ic}
function Fc(a,b,c){c&&a.P||(a.Za=!a.w&&b[1]||a.pb,a.Kc=!a.w&&b[3]||a.Rb);if(c||void 0===c)a.ob=b[1]||a.pb,a.Sb=b[3]||a.Rb}l.Oa=function(a,b){b?this.P++||Fc(this,Gc,!1):this.I++||Ec(this,Gc,!1)};function Hc(a,b){b?--a.P||(a.Za=a.w?a.pb:a.ob,a.Kc=a.w?a.Rb:a.Sb):--a.I||(a.Xa=a.mb,a.Hc=a.Mb)}function Pb(a,b,c){a.K=b;a.I=a.P=0;c&&((a.I=c.I)&&Ec(a,Gc,!1),(a.P=c.P)&&Fc(a,Gc,!1))}l.Gc=function(){this.K&&Fb(this.K,129)&&this.K.message("attempt to read invalid block %"+n(this.J),!0);return 255};
l.pb=function(a,b){this.K&&Fb(this.K,129)&&this.K.message("attempt to write "+q(b)+" to invalid block %"+n(this.J),!0)};l.Ic=function(a,b){return this.Xa(a++,b++)|this.Xa(a,b)<<8};l.Rb=function(a,b,c){this.Za(a++,b&255,c++);this.Za(a,b>>8,c)};l.je=function(a){return this.b[a>>2]>>>((a&3)<<3)&255};l.ne=function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8};l.xe=function(a,b){var c=a>>2;a=(a&3)<<3;this.b[c]=this.b[c]&~(255<<a)|b<<a;this.Da=!0};
@ -255,15 +255,15 @@ t,void 0===f[2])a.i("begin assemble at "+bh(t.J)),a.N=!0,Qc(a.w);else{var v;a.i(
a.i("\tbl\tlist all breakpoints"),a.i("\tbn [n]\tbreak after [n] instruction(s)");else{var T=x.charAt(1);if("l"==T){var ya;ya=0+Dh(a,a.j);ya+=Dh(a,a.M);(ya+=Dh(a,a.B))||a.i("no breakpoints")}else if("n"==T)a.X=fg(a,w),a.i("break after "+a.X+" instruction(s)");else if(void 0===w)a.i("missing breakpoint address");else{var L=rg();if("*"!=w&&(L=xg(a,w,!0),!L))break a;w=q(L.J);"c"==T?null==L.J?(sg(a),a.i("all breakpoints cleared")):Bh(a,a.j,L)||Bh(a,a.M,L)||Bh(a,a.B,L)||a.i("breakpoint missing: "+bh(L.J)):
"i"==T?a.i("breakpoint "+(cc(a.I,L.J)?"enabled":"cleared")+": port "+w+" (input)"):"o"==T?a.i("breakpoint "+(gc(a.I,L.J)?"enabled":"cleared")+": port "+w+" (output)"):null!=L.J&&(ah(a,L,C),"p"==T?a.Oa(a.j,L):"r"==T?a.Oa(a.M,L):"w"==T?a.Oa(a.B,L):a.i("unknown breakpoint command: "+T))}}}break;case "c":var za=a.R;za.B&&(za.B.value="");break;case "d":a:{var sa,Aa=f[0],ta=f[1],Ba=f[2],Ki=f[3];if("?"==ta){var Qb="";for(sa in Kb)a.ka[sa]&&(Qb&&(Qb+=","),Qb+=sa);Qb+=",state,symbols";a.i("dump memory commands:");
a.i("\tdb [a] [#] dump # bytes at address a");a.i("\tdw [a] [#] dump # words at address a");a.i("\tdd [a] [#] dump # dwords at address a");a.i("\tdh [#] [#] dump # instructions from history");Qb.length&&a.i("dump extension commands:\n\t"+Qb)}else if("state"==ta){var re=gi(a.R,!0);if("console"==Ba)console.log(re);else{var zg=a.R;zg.B&&(zg.B.value="");re&&a.i(re)}}else if("symbols"==ta)for(var se=0;se<a.C.length;se++){var te=a.C[se],Rb;for(Rb in te.ra)if("."!=Rb.charAt(0)){var Ag=te.ra[Rb].o;
if(void 0!==Ag){var Bg=te.ra[Rb].l;Bg&&(Rb=Bg);a.i(bh(Ag)+" "+Rb)}}}else{if("d"==Aa){for(sa in Kb)if(f[1]==sa){var Cg=a.ka[sa];Cg?(f.shift(),f.shift(),Cg(f)):a.i("no dump registered for "+ta);break a}ta||(Aa=a.Ca||"db")}else a.Ca=Aa;if("dh"==Aa){var Dg=ta,Eg=Ba,Fg="",Gg=0,Oa=a.W,bb=a.H;if(bb.length){var Da=+Dg||a.wa,mc=+Eg||10;isNaN(Da)?Da=mc:Fg="more ";Da>bb.length&&(a.i("note: only "+bb.length+" available"),Da=bb.length);Oa-=Da;0>Oa&&(null==bb[bb.length-1].J?(Da=Oa+Da,Oa=0):Oa+=bb.length);var ue=
[];"call"==Eg&&(mc=1E5,ue=["CALL"]);for(void 0!==Dg&&a.i(Da+" instructions earlier:");0<mc&&Oa!=a.W;){var Hg=bb[Oa++];if(null==Hg.J)break;var nc=rg(Hg.J),Li=Da--,Ig=Fh(a,nc,"history",Li);(!ue.length||0<=Ig.indexOf(ue[0]))&&a.i(Ig);nc.Ib&&(Oa+=nc.Ib,mc-=nc.Ib,Da-=nc.Ib);Oa>=bb.length&&(Oa=0);a.wa=Da;Gg++;mc--}}Gg||(a.i("no "+Fg+"history available"),a.wa=void 0)}else{var dd=xg(a,ta);if(dd){var ed=0;Ba&&("l"==Ba.charAt(0)&&(Ba=Ba.substr(1)||Ki),ed=fg(a,Ba)>>>0,65536<ed&&(ed=65536));for(var oc="",fd=
"dd"==Aa?4:"dw"==Aa?2:1,gd=fd*ed||128,Mi=gd+15>>4||1;Mi--&&0<gd;){var hd=0,ve=0,pc,we="",Jg="",ta=bh(dd.J);for(pc=16;0<pc&&0<gd;pc--){var id=a.Ga(dd,1),hd=hd|id<<(ve++<<3);ve==fd&&(we+=n(hd,2*fd),we+=1==fd?9==pc?"-":" ":" ",hd=ve=0);Jg+=32<=id&&128>id?String.fromCharCode(id):".";gd--}oc&&(oc+="\n");oc+=ta+" "+we+(pc?"":" "+Jg)}oc&&a.i(oc);a.sa=dd}}}}break;case "e":if("else"==f[0])break;var jd=1,Kg=255,Lg=a.Ga,Mg=a.Xb;"ew"==f[0]&&(jd=2,Kg=65535,Lg=a.Eb,Mg=a.Qc);var Ng=jd<<1,Og=f[1];if(null==Og)a.i("edit memory commands:"),
a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");else{var kd=xg(a,Og);if(kd)for(var ld=2;ld<f.length;ld++){var qc=lg(a,f[ld]);if(void 0===qc){a.i("unrecognized value: "+f[ld]);break}qc&~Kg&&a.i("warning: "+n(qc)+" exceeds "+jd+"-byte value");var Ni=Lg.call(a,kd);a.i("changing "+bh(kd.J)+" from "+n(Ni,Ng,!0)+" to "+n(qc,Ng,!0));Mg.call(a,kd,qc,jd)}}break;case "f":ai(a,f[1]);break;case "g":a:{var Pg=f[1],Oi=b;if(void 0!==Pg){var xe=xg(a,Pg,!0);if(!xe)break a;
ah(a,xe,Oi);a.Oa(a.j,xe,!0)}wh(a,!0)||c||a.i("cpu busy or unavailable, run command ignored")}break;case "h":a:{var ye;if(a.F.ma)ye="halting",a.ea();else{if(Db(a,!0))break a;ye="already halted"}c||a.i(ye)}break;case "i":if("if"==f[0]){var ze;var rc=b.substr(2),rc=xa(rc);lg(a,rc)?(c||a.i("true: "+rc),ze=!0):(c||a.i("false: "+rc),ze=!1);ze||(d=!1);break}if("int"==f[0]){var md;var Pi=f[1];if(a.w.N&512){var Ae=lg(a,Pi);null==Ae?md=!1:(a.i("requesting interrupt level "+Ae),Td(a.w,Ae),md=!0)}else a.i("interrupts disabled (use rif=1 to enable)"),
md=!1;md||(d=!1);break}var Be=f[1];if(Be&&"?"!=Be){var Ce=fg(a,Be);if(void 0!==Ce){var Qi=ec(a.I,Ce);a.i(q(Ce)+": "+na(Qi))}}else a.i("input commands:"),a.i("\ti [p]\tread port [p]"),a.i("warning: port accesses can affect hardware state");break;case "k":var Ri=f[0];if("?"==f[1])a.i("stack trace commands:"),a.i("\tk\tshow frame addresses"),a.i("\tks\tshow symbol information");else{var De=0,Qg=rg(),sc=rg(a.w.M);for(a.i("stack trace for "+bh(sc.J));10>De;){for(var wb=null,Si=256;65536>sc.J>>>0;){Qg.J=
a.Eb(sc,2);if(null==sc.J||!Si--)break;for(var Ti=a,nd=Qg,Rg=null,tc=nd.J,Sg=tc,Ee=1;6>=Ee&&tc;Ee++){if(2<Ee){nd.J=tc;var od=Fh(Ti,nd);if(0<=od.indexOf("CALL")){var Tg=od.indexOf(" ");if(tc+(od.indexOf(" ",Tg+1)-Tg-1)/2==Sg){Rg=od;break}}}tc--}nd.J=Sg;if(wb=Rg)break}if(!wb||null==wb)break;var Ug=null;if("ks"==Ri){var Vg=wb.match(/[0-9A-F]+$/);Vg&&(Ug=ci(a,Vg[0]))}wb=wa(wb,50)+" ;"+(Ug||"stack="+bh(sc.J));a.i(wb);De++}De||a.i("no return addresses found")}break;case "l":"ln"==f[0]&&ci(a,f[1],!0);break;
case "m":a:{var cb,db=null,ba=f[1];"?"==ba&&(ba=void 0);if(void 0!==ba){var ob=0;if("all"==ba)ob=1878917119,ba=null;else if("on"==ba)db=!0,ba=null;else if("off"==ba)db=!1,ba=null;else{"keys"==ba&&(ba="key");"kbd"==ba&&(ba="keyboard");for(cb in Kb)if(ba==cb){ob=Kb[cb];db=!!(a.ha&ob);break}if(!ob){a.i("unknown message category: "+ba);break a}}if(ob)if("on"==f[2])a.ha|=ob,db=!0;else if("off"==f[2]&&(a.ha&=~ob,db=!1,1073741824==ob)){for(var Fe=0;Fe<a.Z.length;Fe++)a.i(a.Z[Fe]);a.Z=[]}}var Ui=0,uc="";
for(cb in Kb)if(!ba||ba==cb){var Vi=!!(a.ha&Kb[cb]);if(null===db||db==Vi)uc&&(uc+=","),++Ui%10||(uc+="\n\t"),"key"==cb&&(cb="keys"),uc+=cb}void 0===ba&&a.i("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.i((null!==db?db?"messages on: ":"messages off: ":"message categories:\n\t")+(uc||"none"));tg(a)}break;case "o":var Ge=f[1],Wi=f[2];if(Ge&&"?"!=Ge){var He=fg(a,Ge,"port #"),Ie=fg(a,Wi);void 0!==He&&void 0!==Ie&&(ic(a.I,He,Ie),a.i(q(He)+": "+na(Ie)))}else a.i("output commands:"),
if(void 0!==Ag){var Bg=te.ra[Rb].l;Bg&&(Rb=Bg);a.i(bh(Ag)+" "+Rb)}}}else{if("d"==Aa){for(sa in Kb)if(f[1]==sa){var Cg=a.ka[sa];Cg?(f.shift(),f.shift(),Cg(f)):a.i("no dump registered for "+ta);break a}ta||(Aa=a.Ca||"db")}else a.Ca=Aa;if("dh"==Aa){var Dg=ta,Eg=Ba,Fg="",Gg=0,Oa=a.W,bb=a.H;if(bb.length){var Da=+Dg||a.wa,nc=+Eg||10;isNaN(Da)?Da=nc:Fg="more ";Da>bb.length&&(a.i("note: only "+bb.length+" available"),Da=bb.length);Oa-=Da;0>Oa&&(null==bb[bb.length-1].J?(Da=Oa+Da,Oa=0):Oa+=bb.length);var ue=
[];"call"==Eg&&(nc=1E5,ue=["CALL"]);for(void 0!==Dg&&a.i(Da+" instructions earlier:");0<nc&&Oa!=a.W;){var Hg=bb[Oa++];if(null==Hg.J)break;var oc=rg(Hg.J),Li=Da--,Ig=Fh(a,oc,"history",Li);(!ue.length||0<=Ig.indexOf(ue[0]))&&a.i(Ig);oc.Ib&&(Oa+=oc.Ib,nc-=oc.Ib,Da-=oc.Ib);Oa>=bb.length&&(Oa=0);a.wa=Da;Gg++;nc--}}Gg||(a.i("no "+Fg+"history available"),a.wa=void 0)}else{var dd=xg(a,ta);if(dd){var ed=0;Ba&&("l"==Ba.charAt(0)&&(Ba=Ba.substr(1)||Ki),ed=fg(a,Ba)>>>0,65536<ed&&(ed=65536));for(var pc="",fd=
"dd"==Aa?4:"dw"==Aa?2:1,gd=fd*ed||128,Mi=gd+15>>4||1;Mi--&&0<gd;){var hd=0,ve=0,qc,we="",Jg="",ta=bh(dd.J);for(qc=16;0<qc&&0<gd;qc--){var id=a.Ga(dd,1),hd=hd|id<<(ve++<<3);ve==fd&&(we+=n(hd,2*fd),we+=1==fd?9==qc?"-":" ":" ",hd=ve=0);Jg+=32<=id&&128>id?String.fromCharCode(id):".";gd--}pc&&(pc+="\n");pc+=ta+" "+we+(qc?"":" "+Jg)}pc&&a.i(pc);a.sa=dd}}}}break;case "e":if("else"==f[0])break;var jd=1,Kg=255,Lg=a.Ga,Mg=a.Xb;"ew"==f[0]&&(jd=2,Kg=65535,Lg=a.Eb,Mg=a.Qc);var Ng=jd<<1,Og=f[1];if(null==Og)a.i("edit memory commands:"),
a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");else{var kd=xg(a,Og);if(kd)for(var ld=2;ld<f.length;ld++){var rc=lg(a,f[ld]);if(void 0===rc){a.i("unrecognized value: "+f[ld]);break}rc&~Kg&&a.i("warning: "+n(rc)+" exceeds "+jd+"-byte value");var Ni=Lg.call(a,kd);a.i("changing "+bh(kd.J)+" from "+n(Ni,Ng,!0)+" to "+n(rc,Ng,!0));Mg.call(a,kd,rc,jd)}}break;case "f":ai(a,f[1]);break;case "g":a:{var Pg=f[1],Oi=b;if(void 0!==Pg){var xe=xg(a,Pg,!0);if(!xe)break a;
ah(a,xe,Oi);a.Oa(a.j,xe,!0)}wh(a,!0)||c||a.i("cpu busy or unavailable, run command ignored")}break;case "h":a:{var ye;if(a.F.ma)ye="halting",a.ea();else{if(Db(a,!0))break a;ye="already halted"}c||a.i(ye)}break;case "i":if("if"==f[0]){var ze;var sc=b.substr(2),sc=xa(sc);lg(a,sc)?(c||a.i("true: "+sc),ze=!0):(c||a.i("false: "+sc),ze=!1);ze||(d=!1);break}if("int"==f[0]){var md;var Pi=f[1];if(a.w.N&512){var Ae=lg(a,Pi);null==Ae?md=!1:(a.i("requesting interrupt level "+Ae),Td(a.w,Ae),md=!0)}else a.i("interrupts disabled (use rif=1 to enable)"),
md=!1;md||(d=!1);break}var Be=f[1];if(Be&&"?"!=Be){var Ce=fg(a,Be);if(void 0!==Ce){var Qi=ec(a.I,Ce);a.i(q(Ce)+": "+na(Qi))}}else a.i("input commands:"),a.i("\ti [p]\tread port [p]"),a.i("warning: port accesses can affect hardware state");break;case "k":var Ri=f[0];if("?"==f[1])a.i("stack trace commands:"),a.i("\tk\tshow frame addresses"),a.i("\tks\tshow symbol information");else{var De=0,Qg=rg(),tc=rg(a.w.M);for(a.i("stack trace for "+bh(tc.J));10>De;){for(var wb=null,Si=256;65536>tc.J>>>0;){Qg.J=
a.Eb(tc,2);if(null==tc.J||!Si--)break;for(var Ti=a,nd=Qg,Rg=null,uc=nd.J,Sg=uc,Ee=1;6>=Ee&&uc;Ee++){if(2<Ee){nd.J=uc;var od=Fh(Ti,nd);if(0<=od.indexOf("CALL")){var Tg=od.indexOf(" ");if(uc+(od.indexOf(" ",Tg+1)-Tg-1)/2==Sg){Rg=od;break}}}uc--}nd.J=Sg;if(wb=Rg)break}if(!wb||null==wb)break;var Ug=null;if("ks"==Ri){var Vg=wb.match(/[0-9A-F]+$/);Vg&&(Ug=ci(a,Vg[0]))}wb=wa(wb,50)+" ;"+(Ug||"stack="+bh(tc.J));a.i(wb);De++}De||a.i("no return addresses found")}break;case "l":"ln"==f[0]&&ci(a,f[1],!0);break;
case "m":a:{var cb,db=null,ba=f[1];"?"==ba&&(ba=void 0);if(void 0!==ba){var ob=0;if("all"==ba)ob=1878917119,ba=null;else if("on"==ba)db=!0,ba=null;else if("off"==ba)db=!1,ba=null;else{"keys"==ba&&(ba="key");"kbd"==ba&&(ba="keyboard");for(cb in Kb)if(ba==cb){ob=Kb[cb];db=!!(a.ha&ob);break}if(!ob){a.i("unknown message category: "+ba);break a}}if(ob)if("on"==f[2])a.ha|=ob,db=!0;else if("off"==f[2]&&(a.ha&=~ob,db=!1,1073741824==ob)){for(var Fe=0;Fe<a.Z.length;Fe++)a.i(a.Z[Fe]);a.Z=[]}}var Ui=0,vc="";
for(cb in Kb)if(!ba||ba==cb){var Vi=!!(a.ha&Kb[cb]);if(null===db||db==Vi)vc&&(vc+=","),++Ui%10||(vc+="\n\t"),"key"==cb&&(cb="keys"),vc+=cb}void 0===ba&&a.i("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.i((null!==db?db?"messages on: ":"messages off: ":"message categories:\n\t")+(vc||"none"));tg(a)}break;case "o":var Ge=f[1],Wi=f[2];if(Ge&&"?"!=Ge){var He=fg(a,Ge,"port #"),Ie=fg(a,Wi);void 0!==He&&void 0!==Ie&&(ic(a.I,He,Ie),a.i(q(He)+": "+na(Ie)))}else a.i("output commands:"),
a.i("\to [p] [b]\twrite byte [b] to port [p]"),a.i("warning: port accesses can affect hardware state");break;case "p":if("print"==f[0]){ei(a,b.substr(5));break}var Wg="pr"==f[0]?1:0,Xi=1+Wg;if(a.O)a.i("step in progress");else{var Je=rg(a.w.j);switch(a.Ga(Je)){case 205:a.O=Xi,Xg(Je,3)}a.O?(a.Oa(a.j,Je,!0),wh(a)||(a.R&&a.R.Ya(),a.O=0)):fi(a,Wg?"tr":"t")}break;case "r":if("reset"==b){a.R&&a.R.reset();break}yh(a,f);break;case "s":di(a,f);break;case "t":fi(a,f[0],f[1]);break;case "u":zh(a,f[1],f[2],8);
break;case "v":if("var"==f[0]){bi(a,b.substr(3))||(d=!1);break}a.i("PC8080 version 1.36.0 ("+a.w.vb+",RELEASE"+(Ib?",TYPEDARRAYS":",LONGARRAYS")+")");a.i(Ja());break;case "?":if(f[1]){ei(a,b.substr(1));break}var Ke="commands:",Le;for(Le in hi)Ke+="\n"+wa(Le,9)+hi[Le];Ud(a)||(Ke+="\nnote: frequency/history disabled if no exec breakpoints");a.i(Ke);break;default:a.i("unknown command: "+b),d=!1}}}catch(Yg){a.i("debugger error: "+(Yg.stack||Yg.message)),d=!1}return d}
function Pc(a,b,c){b=a.yb(b,c);for(var d in b)if(!Eh(a,b[+d]))return!1;return!0}
@ -308,5 +308,5 @@ function ej(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=
function fj(a,b,c,d){function e(a){if(void 0===h){var b=g&&nb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ua(a))}function f(a){e("Error: "+a);k&&(--bj||$a(!0));k=!1}var g,h,k=!0;bj++;ib[a]={};try{if(g=document.getElementById(a)){var p;if("object"==typeof resources&&(p=resources.css)){var t=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=p:v.appendChild(document.createTextNode(p));t.appendChild(v)}c||
(c="/versions/pc8080/1.36.0/components.xsl");p=function(d,h){h?cj(c,null,null,!1,e,function(d,k){k?(hb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--bj||$a(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--bj||$a(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?cj(b,a,d,!0,e,p):dj(b,null,a,d,!1,e,p)}else f("missing machine element: "+a)}catch(z){f(z.message)}return k}window.embedPC8080=function(a,b,c,d){$a(!1);return fj(a,b,c,d)};
window.commandMachine=function(a,b,c,d,e,f){if("script"==e){d=!1;c+=".machine";if("string"==typeof f&&!ub[c]){d=!0;e=ub;for(var g=c,h=f.length,k=[],p=[],t="",v=null,z=0;z<h;z++){var x=f[z];if('"'==x||"'"==x)v&&x!=v?t+=x:(v?v=null:v=x,t&&(p.push(t),t=""));else{if(!v){if("\r"==x||"\n"==x)x=";";if(" "==x||"\t"==x||";"==x){t&&(p.push(t),t="");";"==x&&p.length&&(k.push(p),p=[]);continue}}t+=x}}t&&p.push(t);p.length&&k.push(p);e[g]=k;tb(c)||(d=!1)}return d?(b&&(a.disabled=!0),!0):!1}if(d&&(g=sb(d,c+".machine"))&&
(h=g.exports)&&(h=h[e]))return h.call(g,f)?(b&&(a.disabled=!0),!0):!1;console.log("unimplemented: commandMachine('"+c+"','"+d+"','"+e+"','"+f+"')");return!1};window.enableEvents=$a;window.sendEvent=eb;})();//# sourceMappingURL=/versions/pc8080/1.36.0/pc8080-dbg.map
window.commandMachine=function(a,b,c,d,e,f){if("script"==e){d=!1;c+=".machine";if(!f)delete ub[c],d=!0;else if("string"==typeof f&&!ub[c]){d=!0;e=ub;for(var g=c,h=f.length,k=[],p=[],t="",v=null,z=0;z<h;z++){var x=f[z];if('"'==x||"'"==x)v&&x!=v?t+=x:(v?v=null:v=x,t&&(p.push(t),t=""));else{if(!v){if("\r"==x||"\n"==x)x=";";if(" "==x||"\t"==x||";"==x){t&&(p.push(t),t="");";"==x&&p.length&&(k.push(p),p=[]);continue}}t+=x}}t&&p.push(t);p.length&&k.push(p);e[g]=k;tb(c)||(d=!1)}return d?(b&&(a.disabled=!0),
!0):!1}if(d&&(g=sb(d,c+".machine"))&&(h=g.exports)&&(h=h[e]))return h.call(g,f)?(b&&(a.disabled=!0),!0):!1;console.log("unimplemented: commandMachine('"+c+"','"+d+"','"+e+"','"+f+"')");return!1};window.enableEvents=$a;window.sendEvent=eb;})();//# sourceMappingURL=/versions/pc8080/1.36.0/pc8080-dbg.map

File diff suppressed because one or more lines are too long

View file

@ -3191,7 +3191,11 @@ class Component {
{
var fSuccess = false;
idMachine += ".machine";
if (typeof sScript == "string" && !Component.commands[idMachine]) {
if (!sScript) {
delete Component.commands[idMachine];
fSuccess = true;
}
else if (typeof sScript == "string" && !Component.commands[idMachine]) {
fSuccess = true;
Component.commands[idMachine] = Component.getScriptCommands(sScript);
if (!Component.processCommands(idMachine)) {

View file

@ -51,12 +51,12 @@ function Ha(a){if(Ia)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Ja("An unexp
Ea(Ba("iOS")?"onpagehide":Ba("Opera")?"onunload":"onbeforeunload",function(){Ha(Ga.exit)});function v(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Rb=b.comment;this.Vc=b;this.exports={};this.w=this.bindings={};a=this.id.indexOf(".");0>a?this.Tb=this.id:(this.Ja=this.id.substr(0,a),this.Tb=this.id.substr(a+1));this.i={ready:!1,Za:!1,lb:!1,mf:!1,V:!1,pb:!1,error:!1};this.bb=null;this.i.error=!1;this.K=this.m=this.u=this.D=null;w.push(this)}
function Oa(a,b,c){Pa[a]&&b&&(Pa[a][b]=c)}function Qa(){return Date.now()||+new Date}function Ja(a,b,c){b||t((c?c+": ":"")+a)}function t(a){window&&window.alert(a)}function Ra(a){var b=!1;window&&(b=window.confirm(a));return b}function Sa(a,b){a.value+=b;b=a.value;8192<b.length&&(a.value=b.substr(b.length-4096));a.scrollTop=a.scrollHeight}
function Ta(a,b){b=z(b.parentNode,"pc8080-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){var g=f.getAttribute("class");if(g)for(var h=g.split(" "),m=0;m<h.length;m++)switch(g=h[m],g){case "pc8080-binding":(g=A(f))&&g.binding&&a.S(g.type,g.binding,f,g.value),m=h.length}}}}function Ua(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<w.length;b++){var d=w[b];a&&d.id.indexOf(a)||c.push(d)}return c}
function Va(a){if(void 0!==a){var b;for(b=0;b<w.length;b++)if(w[b].id===a)return w[b]}return null}function Xa(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<w.length;d++)if(c)c==w[d]&&(c=null);else if(!(a!=w[d].type||b&&w[d].id.indexOf(b)))return w[d]}return null}function A(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){t(c.message+" ("+a+")")}return b}
function Va(a){if(void 0!==a){var b;for(b=0;b<w.length;b++)if(w[b].id===a)return w[b]}return null}function Wa(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<w.length;d++)if(c)c==w[d]&&(c=null);else if(!(a!=w[d].type||b&&w[d].id.indexOf(b)))return w[d]}return null}function A(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){t(c.message+" ("+a+")")}return b}
function z(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
function Ya(a){for(var b=!0,c=Za[a];c&&c.length;){var d=c.splice(0,1)[0],e=d[0],f=null;0<=$a.indexOf(e)&&(f=function(){return function(){Ya(a)}}());var g=ab[e];if(g)if(!f)b=g(d[1],d[2],d[3]);else{if(!g(f,d[1],d[2],d[3]))break}else{var b=!1,h=Xa(d[1],a);if(h)if(g=bb[e])b=g(h,d[2],d[3]);else{var m=h.exports;if(m&&(g=m[e]))if(b=!0,!f)b=g.call(h,d[2],d[3]);else if(!g.call(h,f,d[2],d[3]))break}}if(!b){t("Script error: '"+e+(g?" failed":" unrecognized"));break}}c&&!c.length&&delete Za[a];return b}k=v.prototype;
function Ya(a){for(var b=!0,c=Za[a];c&&c.length;){var d=c.splice(0,1)[0],e=d[0],f=null;0<=$a.indexOf(e)&&(f=function(){return function(){Ya(a)}}());var g=ab[e];if(g)if(!f)b=g(d[1],d[2],d[3]);else{if(!g(f,d[1],d[2],d[3]))break}else{var b=!1,h=Wa(d[1],a);if(h)if(g=bb[e])b=g(h,d[2],d[3]);else{var m=h.exports;if(m&&(g=m[e]))if(b=!0,!f)b=g.call(h,d[2],d[3]);else if(!g.call(h,f,d[2],d[3]))break}}if(!b){t("Script error: '"+e+(g?" failed":" unrecognized"));break}}c&&!c.length&&delete Za[a];return b}k=v.prototype;
k.toString=function(){return this.name?this.name:this.id||this.type};
k.S=function(a,b,c){switch(b){case "clear":return this.w[b]||(this.w[b]=c,c.onclick=function(a){return function(){a.w.print&&(a.w.print.value="")}}(this)),!0;case "print":return this.w[b]||(this.w[b]=c,this.G=function(a){this.aa(a,this.type);return!0},c.value="",this.print=function(a){return function(b){Sa(a,b)}}(c),this.aa=function(a,b){return function(a,c){a||(a="");if(c!=cb.Jc||"..."!=a.slice(-3))c&&(a=c+": "+a),Sa(b,a+"\n");else{c=b.value;var d=c.lastIndexOf(a);0>d?c+=a+"\n":c=c.substr(0,d)+(a+
".")+c.substr(d+a.length);8192<c.length&&(c=c.substr(c.length-4096));b.value=c;b.scrollTop=b.scrollHeight}}}(this,c)),!0;default:return!1}};k.log=function(){};k.print=function(){};k.aa=function(){};k.status=function(a){this.aa(this.type+": "+a)};k.G=function(a,b,c){if(!b){var d=Xa("Computer",this.id);if(d&&d.i.pb)return console.log("ignoring notice during unload: "+a),!1}Ja(a,b,c||this.type);return!0};function db(a,b){b&&(a.i.ready?b():a.bb=b);return a.i.ready}
".")+c.substr(d+a.length);8192<c.length&&(c=c.substr(c.length-4096));b.value=c;b.scrollTop=b.scrollHeight}}}(this,c)),!0;default:return!1}};k.log=function(){};k.print=function(){};k.aa=function(){};k.status=function(a){this.aa(this.type+": "+a)};k.G=function(a,b,c){if(!b){var d=Wa("Computer",this.id);if(d&&d.i.pb)return console.log("ignoring notice during unload: "+a),!1}Ja(a,b,c||this.type);return!0};function db(a,b){b&&(a.i.ready?b():a.bb=b);return a.i.ready}
function B(a){if(!a.i.error&&(a.i.ready=!0,a.i.ready)){var b=a.bb;a.bb=null;b&&b()}}function eb(a,b){if(a.i.lb)return a.i.Za=!1,a.i.lb=!1;if(a.i.error)return a.aa(a.toString()+" error"),!1;a.i.Za=b;return a.i.Za}k.ca=function(){return this.i.V=!0};k.ba=function(a,b){b&&(this.i.V=!1);return!0};var cb={ERROR:"error",Qe:"notice",Jc:"progress",SCRIPT:"script",kf:"warning"};
window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]),window.PCjs.Commands||(window.PCjs.Commands={}));
var Pa=window?window.PCjs.Machines:{},w=window?window.PCjs.Components:[],Za=window?window.PCjs.Commands:{},$a=["hold","sleep","wait"],ab={alert:function(a){t(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},bb={select:function(a,b,c){var d=!1;if(a=a.bindings[b])for(b=0;b<a.options.length;b++)if(a.options[b].textContent==c){a.selectedIndex!=b&&(a.selectedIndex=b);d=!0;break}return d}};
@ -173,12 +173,12 @@ function Gd(a,b,c,d){var e=8>=a.ua?8:16,f=8<e?15:0,g=a.W.length/e,h=!1===d,m={M:
k.Ga=function(){var a=!1;if(this.a){if(this.a.Ga){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.A/this.s;b>c&&(a=Math.round(c/b*100)+"%")}this.Da?(this.o.style.width=a,this.o.style.width=a,this.o.style.display="block",this.o.style.margin="auto"):(this.a.style.width=a,this.a.style.height="auto");this.a.style.backgroundColor="black";this.a.Ga();a=!0}this.J&&this.J.focus()}return a};
function xd(a,b){!b&&a.a&&(a.Da?a.o.style.width=a.o.style.height="":a.a.style.width=a.a.style.height="")}function zd(a,b){a.La=b;a.N=!1;if(void 0===a.g||a.g.length!=a.La)a.g=Array(a.La)}function Kd(a,b,c,d,e){d=a.b?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.P==Bd&&(208<=c&&236>c?e=a.O+Cd:28<=c&&72>c&&(e=a.O+Dd));a=a.I[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function dc(a,b){var c=!0;if(!b){a.ha&&(120==a.ha?a.Na&1?(Bc(a.m,2),c=!1):Bc(a.m,1):Bc(a.m,4));if(c&&a.N&&a.v){for(var d=a.u,e=a.da,f=a.v,g=!0,h=e>>>d.b,e=d.c-(e&d.f);0<f&&h<d.a.length;)d.a[h].ja&&(d.a[h].ja=g=!1,d.a[h].Zb=!0),f-=e,e=d.c,h++;g&&(c=!1)}$b(a.m,a.Pa,1E3/Math.max(a.Oa,a.ha));a.Na++}if(c)if(1<a.M)switch(a.P){case Ed:for(var c=a.da,d=-1,f=0,g=60==a.bc?2:5,e=h=0,m=-1;f<a.R;){var q=0,r=c,y=d,F=a.C;for(y!=Fd&&(F>>=1);;){var u=sb(a.u,r++);if((u&Ld)==Ld){var x=sb(a.u,r++),d=x&Md,c=(x&Nd)<<8|
sb(a.u,r),c=c+(x&Od?Pd:Qd);break}if(q<F)a.X[q++]=u;else break}if(g)g--;else{for(;q<a.X.length;)a.X[q++]=0;if(0<=y)for(r=a.N&&a.g[h]==F,a.g[h++]=F,F=0;F<q;F++){u=a.X[F];if(!r||u!==a.g[h]){a.g[m=h]=u;var x=a,G=a.ma,U=u&127;if(u=x.H[y][u&128?1:0]){var Z=(U&15)*u.M,U=(U>>4)*u.L,da,xa,Wa,qb,hd=u.M,ec=u.L;G?(da=F*x.M,xa=f*x.L,Wa=x.M,qb=x.L):(da=F*x.va,xa=f*x.wa,Wa=x.va,qb=x.wa);u.M>x.M&&(da*=2,Wa*=2);u.L>x.L&&(y==Jd&&(U+=x.L),ec=x.L);G?G.drawImage(u.canvas,Z,U,hd,ec,da,xa,Wa,qb):(da+=0,xa+=0,x.c.drawImage(u.canvas,
Z,U,hd,ec,da,xa,Wa,qb))}e++}h++}f++}}a.N=!0;!b&&a.na&&1==e&&(a.g[m]=-1,e=0);a.na=!1;(e||b)&&a.ma&&a.c.drawImage(a.l,0,a.la,a.j,a.B-a.L,0,0,a.kb,a.jc)}else{f=a.da;g=f+a.v;m=e=h=0;b=a.j;q=0;c=a.B;y=d=0;r=a.ea;F=(1<<r)-1;a.Tc&&(r=-r,y=16+r);for(;f<g;){x=a.u;G=f;u=G&x.f;Z=(G&x.g)>>>x.b;x=u!=x.f?x.a[Z].ec(u,G):x.a[Z++].fb(u,G)|x.a[Z&x.o].fb(0,G+1)<<8;if(a.N&&x===a.g[h])e+=a.Ma;else{a.g[h]=x;(G=y)&&(x=x>>8|(x&255)<<8);e<b&&(b=e);for(u=a.Ma;u--;)Z=x>>G&F,Kd(a,a.Ea,e++,m,Z),G+=r;e>q&&(q=e);m<c&&(c=m);m>=
sb(a.u,r),c=c+(x&Od?Pd:Qd);break}if(q<F)a.X[q++]=u;else break}if(g)g--;else{for(;q<a.X.length;)a.X[q++]=0;if(0<=y)for(r=a.N&&a.g[h]==F,a.g[h++]=F,F=0;F<q;F++){u=a.X[F];if(!r||u!==a.g[h]){a.g[m=h]=u;var x=a,G=a.ma,U=u&127;if(u=x.H[y][u&128?1:0]){var Z=(U&15)*u.M,U=(U>>4)*u.L,da,xa,Xa,qb,hd=u.M,ec=u.L;G?(da=F*x.M,xa=f*x.L,Xa=x.M,qb=x.L):(da=F*x.va,xa=f*x.wa,Xa=x.va,qb=x.wa);u.M>x.M&&(da*=2,Xa*=2);u.L>x.L&&(y==Jd&&(U+=x.L),ec=x.L);G?G.drawImage(u.canvas,Z,U,hd,ec,da,xa,Xa,qb):(da+=0,xa+=0,x.c.drawImage(u.canvas,
Z,U,hd,ec,da,xa,Xa,qb))}e++}h++}f++}}a.N=!0;!b&&a.na&&1==e&&(a.g[m]=-1,e=0);a.na=!1;(e||b)&&a.ma&&a.c.drawImage(a.l,0,a.la,a.j,a.B-a.L,0,0,a.kb,a.jc)}else{f=a.da;g=f+a.v;m=e=h=0;b=a.j;q=0;c=a.B;y=d=0;r=a.ea;F=(1<<r)-1;a.Tc&&(r=-r,y=16+r);for(;f<g;){x=a.u;G=f;u=G&x.f;Z=(G&x.g)>>>x.b;x=u!=x.f?x.a[Z].ec(u,G):x.a[Z++].fb(u,G)|x.a[Z&x.o].fb(0,G+1)<<8;if(a.N&&x===a.g[h])e+=a.Ma;else{a.g[h]=x;(G=y)&&(x=x>>8|(x&255)<<8);e<b&&(b=e);for(u=a.Ma;u--;)Z=x>>G&F,Kd(a,a.Ea,e++,m,Z),G+=r;e>q&&(q=e);m<c&&(c=m);m>=
d&&(d=m+1)}f+=2;h++;if(e>=a.j&&(e=0,m++,m>a.B))break}a.N=!0;b<a.j&&(f=q-b,d-=c,a.b&&(g=b,h=f,b=c,f=d,c=a.j-(g+h),d=h),a.ma.putImageData(a.Ea,0,0,b,c,f,d),a.c.drawImage(a.l,0,0,a.l.width,a.l.height,0,0,a.A,a.s))}}var Cd=0,Dd=1,Ad=2,wd=0,Bd=1,Ed=2,vd={SI1978:Bd,VT100:Ed},Fd=96,Hd=64,Id=32,Jd=0,Ld=127,Nd=15,Od=16,Md=96,Pd=8192,Qd=16384;
Fa(function(){for(var a=z(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=A(c),e=document.createElement("canvas");if(!e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(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.onresize());var f=+(d.aspect||Ca("aspect"));f&&.3<=f&&3.33>=f&&(Ea("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Ba("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new ud(d,e,g,f,c);Ta(d,c)}});
function Rd(a){v.call(this,"SerialPort",a);this.H=+a.adapter;switch(this.H){case 0:this.I=0;this.O=2;break;default:t("Unrecognized serial adapter #"+this.H);return}this.b=this.c=null;this.J=a.tabSize;this.F=a.charBOL;this.f=0;this.B=!1;this.l=!0;var b=a.binding;if("console"==b)this.c="";else{var c;a=Sd;b&&(void 0===c&&(c="Panel"),(c=Xa(c,this.id))&&(b=c.w[b])&&this.S(null,a,b))}this.g="";this.a=this.Aa=this.s=null;this.exports={connect:this.ac,receiveData:this.nb,receiveStatus:this.Kd}}l(Rd,v);
function Rd(a){v.call(this,"SerialPort",a);this.H=+a.adapter;switch(this.H){case 0:this.I=0;this.O=2;break;default:t("Unrecognized serial adapter #"+this.H);return}this.b=this.c=null;this.J=a.tabSize;this.F=a.charBOL;this.f=0;this.B=!1;this.l=!0;var b=a.binding;if("console"==b)this.c="";else{var c;a=Sd;b&&(void 0===c&&(c="Panel"),(c=Wa(c,this.id))&&(b=c.w[b])&&this.S(null,a,b))}this.g="";this.a=this.Aa=this.s=null;this.exports={connect:this.ac,receiveData:this.nb,receiveStatus:this.Kd}}l(Rd,v);
k=Rd.prototype;k.S=function(a,b,c,d){var e=this;switch(b){case Sd:return this.w[b]=this.b=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),Td(e,b);return!0},c.onkeypress=function(a){a=a||window.event;Td(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.w[b]=c,c.onclick=function(){e.nb(d);return!0},!0}return!1};
k.pa=function(a,b,c,d){this.D=a;this.u=b;this.m=c;this.K=d;var e=this;this.P=Zb(this.m,function(){e.nb()});this.R=Zb(this.m,function(){cd(e)});this.N=ib(a,"ChipSet");xb(b,this,Ud,this.I);yb(b,this,Vd,this.I);B(this)};
k.ac=function(a){if(!this.a){var b=Pb(this.D,"connection");if(b){var c=b.split("->");if(2==c.length){var d=ra(c[0]);if(d!=this.Tb)return;c=ra(c[1]);if(this.a=Va(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.l);if(this.Aa=e.receiveData){this.l=a;this.s=e.receiveStatus;this.status("Connected "+this.Ja+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};
@ -188,7 +188,7 @@ k.nb=function(a){null!=a&&(this.g="number"!=typeof a?a:this.g+String.fromCharCod
k.qd=function(a,b){this.C=b;this.U&=~(Ic|fe);if(19==b)this.B=!0;else if(17==b)this.B=!1;else if(this.Aa&&this.Aa.call(this.a,b),this.b)if(8==b)this.b.value=this.b.value.slice(0,-1),0<this.f&&this.f--;else{var c;13!=b&&10!=b&&(c=sa[b]);a=c=c?"<"+c+">":String.fromCharCode(b);c=a.length;9==b?(b=this.J||8,c=b-this.f%b,this.J&&(a=" ".slice(0,c))):13==b&&(this.f=c=0,a="\n");this.F&&!this.f&&c&&(a=String.fromCharCode(this.F)+a);this.b.value+=a;this.b.scrollTop=this.b.scrollHeight;
this.f+=c}else if(null!=this.c){if(10==b||1024<=this.c.length)this.aa(this.c),this.c="";10!=b&&(this.c+=String.fromCharCode(b))}this.m&&$b(this.m,this.R,Yd(this,ge))};k.pd=function(a,b){this.o?(this.s&&(b^this.j)&(he|ie)&&(a=0,this.l?(a|=b&he?32:0,a|=b&ie?320:0):(a|=b&he?16:0,a|=b&ie?1048576:0),this.s.call(this.a,a)),this.j=b,this.j&je&&(this.o=!1)):(this.h=b,this.o=!0)};k.od=function(a,b){this.v=b};
var $d=12,ae=16,be=192,ie=2,he=32,je=64,Ic=1,ce=2,fe=4,ee=128,de=15,ge=240,Zd=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Xd=[!1,0,0,133,142,39,238],Sd="buffer",Ud={0:Rd.prototype.cd,1:Rd.prototype.bd},Vd={0:Rd.prototype.qd,1:Rd.prototype.pd,2:Rd.prototype.od};Fa(function(){for(var a=z(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Rd(d);Ta(d,c)}});
function ke(a,b,c){v.call(this,"Computer",a);this.i.V=!1;le(this,b);this.v=Pb(this,"autoPower",a);this.c=0;this.H=a.busWidth||a.buswidth;this.a=me;this.o=null;this.j=this.C=!1;this.I=Pb(this,"url")||"";(Math.random()+.1).toString(36);this.b=ne(this);if(this.m=Xa("CPU",this.id)){this.K=Xa("Debugger",this.id);this.g=[];for(b=null;b=ib(this,"Video",b);)this.g.push(b);this.u=new kb({id:this.Ja+".bus",busWidth:this.H},this.m,this.K);var d,e=Ua(this.id);if(this.N=(this.h=Xa("Panel",this.id))&&this.h.w.print)for(b=
function ke(a,b,c){v.call(this,"Computer",a);this.i.V=!1;le(this,b);this.v=Pb(this,"autoPower",a);this.c=0;this.H=a.busWidth||a.buswidth;this.a=me;this.o=null;this.j=this.C=!1;this.I=Pb(this,"url")||"";(Math.random()+.1).toString(36);this.b=ne(this);if(this.m=Wa("CPU",this.id)){this.K=Wa("Debugger",this.id);this.g=[];for(b=null;b=ib(this,"Video",b);)this.g.push(b);this.u=new kb({id:this.Ja+".bus",busWidth:this.H},this.m,this.K);var d,e=Ua(this.id);if(this.N=(this.h=Wa("Panel",this.id))&&this.h.w.print)for(b=
0;b<e.length;b++)d=e[b],d.G=this.h.G,d.print=this.h.print,d.aa=this.h.aa;this.aa("PC8080 v1.36.0\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.pa&&d.pa(this,this.u,this.m,this.K);b=null;d=Pb(this,"resume",a);void 0!==d&&(1<d.length?b=this.l=d:this.a=parseInt(d,10));var f;if(a=Pb(this,"state")||(f=!0,a.state))b=this.A=a,f||(this.j=!0,this.a=me),this.a&&(this.s=new E(this,"1.36.0"),oe(this.s)?
b=null:delete this.s);!b&&this.a&&(b=pe(this))&&(this.j=!0);if(b){var g=this;ua(b,null,!0,function(a,b,c){c?(g.l=null,g.j=!1,g.G("Unable to load machine state from server (error "+c+(b?": "+ra(b):"")+")")):(g.o=b,g.C=!0);B(g)})}else B(this);this.w.power||(this.v=!0);!c&&this.v&&qe(this,this.Sa)}else t("Unable to find CPU component")}l(ke,v);function le(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){t(d.message+" ("+c+")")}}a.F=b}
function Pb(a,b,c){var d=b.toLowerCase(),d=Ca(b)||Ca(d);void 0===d&&a.F&&(d=a.F[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function qe(a,b,c){for(var d=Ua(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!db(f)){db(f,function(){qe(a,b,c)});return}}b.call(a,c)}
@ -207,8 +207,8 @@ function Ke(a,b){a.b=null;b=ua(oa()+"/api/v1/user?req=verify&user="+b);var c=b[1
function Ie(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Le(a,"1.36.0");d.data=c;b=ua(oa()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.G("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.G(c),Aa(Ce,""),a.b=null)}}
function ib(a,b,c){a=Ua(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}function Yb(a,b){if(a.g.length){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a=a.g[0];a.J&&a.J.focus();!b&&window&&window.scrollTo(c,d)}}
function bc(a,b){a.m&&(a=a.m,a.Na&&(b||!a.i.ka||a.i.Xb)&&(R(a,"A",a.b),R(a,"B",a.g),R(a,"C",a.c),R(a,"BC",mc(a),4),R(a,"D",a.h),R(a,"E",a.f),R(a,"DE",oc(a),4),R(a,"H",a.j),R(a,"L",a.l),R(a,"HL",H(a),4),R(a,"SP",a.A,4),R(a,"PC",a.s,4),b=lc(a),R(a,"PS",b,4),R(a,"IF",b&512?1:0,1),R(a,"SF",b&128?1:0,1),R(a,"ZF",b&64?1:0,1),R(a,"AF",b&16?1:0,1),R(a,"PF",b&4?1:0,1),R(a,"CF",b&1?1:0,1)),b=a.w.speed)&&(b.textContent=a.i.ka&&a.R?a.R.toFixed(2)+"Mhz":"Stopped")}
var xe="failsafe",se="validate",ue="timestamp",Fe="version",Ge="url",He="browser",Ce="user",we=-1,me=0,ve=1,ze=2,Je=3;Fa(function(){for(var a=z(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=z(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=A(f),g=new ke(g,d,!0);Ta(g,f);g.v&&qe(g,g.Sa)}});Ga.show.push(function(){for(var a=z(document,"pc8080","computer"),b=0;b<a.length;b++){var c=A(a[b]);if(c=Xa("Computer",c.id))c.i.pb=!1,c.J&&!c.i.V&&c.Sa(we)}});
Ga.exit.push(function(){for(var a=z(document,"pc8080","computer"),b=0;b<a.length;b++){var c=A(a[b]);if(c=Xa("Computer",c.id))c.i.pb=!0,c.i.V&&Ee(c,!(!c.a||c.l),!0)}});function E(a,b,c){this.id=a.id;this.K=a.K;this.b="";this.a={};this.m=this.u=!1;this.key=Le(a,b,c);Ae(this,a.Vc)}k=E.prototype;k.set=function(a,b){try{this.a[a]=b}catch(c){}};k.get=function(a){return this.a[a]||null};k.data=function(){return this.a};
var xe="failsafe",se="validate",ue="timestamp",Fe="version",Ge="url",He="browser",Ce="user",we=-1,me=0,ve=1,ze=2,Je=3;Fa(function(){for(var a=z(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=z(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=A(f),g=new ke(g,d,!0);Ta(g,f);g.v&&qe(g,g.Sa)}});Ga.show.push(function(){for(var a=z(document,"pc8080","computer"),b=0;b<a.length;b++){var c=A(a[b]);if(c=Wa("Computer",c.id))c.i.pb=!1,c.J&&!c.i.V&&c.Sa(we)}});
Ga.exit.push(function(){for(var a=z(document,"pc8080","computer"),b=0;b<a.length;b++){var c=A(a[b]);if(c=Wa("Computer",c.id))c.i.pb=!0,c.i.V&&Ee(c,!(!c.a||c.l),!0)}});function E(a,b,c){this.id=a.id;this.K=a.K;this.b="";this.a={};this.m=this.u=!1;this.key=Le(a,b,c);Ae(this,a.Vc)}k=E.prototype;k.set=function(a,b){try{this.a[a]=b}catch(c){}};k.get=function(a){return this.a[a]||null};k.data=function(){return this.a};
function oe(a,b){return b?(a.b=b,a.m=!0,a.u=!1,!0):a.m?!0:wa()&&(b=za(a.key))?(a.b=b,a.m=!0):!1}function te(a){var b=!0;if(!a.u)try{a.a=JSON.parse(a.b),a.u=!0}catch(c){t(c.message||c),b=!1}return b}function Be(a){var b=!0;if(wa()){var c=JSON.stringify(a.a);Aa(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.a?JSON.stringify(this.a):this.b};function Ae(a,b){a.b="";a.a={};a.m=a.u=!1;b&&a.set("parms",b)}
k.clear=function(a){Ae(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function Le(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var Me=0;
function Ne(a,b,c,d,e,f){e("Loading "+a+"...");ua(a,null,!0,function(g,h,m){m?(h||(h="unable to load "+a+" ("+m+")"),f(h,null)):Oe(h,a,b,c,d,e,f)})}
@ -220,5 +220,5 @@ function Pe(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=
function Qe(a,b,c,d){function e(a){if(void 0===h){var b=g&&z(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=pa(a))}function f(a){e("Error: "+a);m&&(--Me||Ka(!0));m=!1}var g,h,m=!0;Me++;Pa[a]={};try{if(g=document.getElementById(a)){var q;if("object"==typeof resources&&(q=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],y=document.createElement("style");y.type="text/css";y.styleSheet?y.styleSheet.cssText=q:y.appendChild(document.createTextNode(q));r.appendChild(y)}c||
(c="/versions/pc8080/1.36.0/components.xsl");q=function(d,h){h?Ne(c,null,null,!1,e,function(d,m){m?(Oa(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(m=h.transformNode(m))?(g.outerHTML=m,--Me||Ka(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(m),(m=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(m,g),--Me||Ka(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?Ne(b,a,d,!0,e,q):Oe(b,null,a,d,!1,e,q)}else f("missing machine element: "+a)}catch(F){f(F.message)}return m}window.embedPC8080=function(a,b,c,d){Ka(!1);return Qe(a,b,c,d)};
window.commandMachine=function(a,b,c,d,e,f){if("script"==e){d=!1;c+=".machine";if("string"==typeof f&&!Za[c]){d=!0;e=Za;for(var g=c,h=f.length,m=[],q=[],r="",y=null,F=0;F<h;F++){var u=f[F];if('"'==u||"'"==u)y&&u!=y?r+=u:(y?y=null:y=u,r&&(q.push(r),r=""));else{if(!y){if("\r"==u||"\n"==u)u=";";if(" "==u||"\t"==u||";"==u){r&&(q.push(r),r="");";"==u&&q.length&&(m.push(q),q=[]);continue}}r+=u}}r&&q.push(r);q.length&&m.push(q);e[g]=m;Ya(c)||(d=!1)}return d?(b&&(a.disabled=!0),!0):!1}if(d&&(g=Xa(d,c+".machine"))&&
(h=g.exports)&&(h=h[e]))return h.call(g,f)?(b&&(a.disabled=!0),!0):!1;console.log("unimplemented: commandMachine('"+c+"','"+d+"','"+e+"','"+f+"')");return!1};window.enableEvents=Ka;window.sendEvent=Ma;})();//# sourceMappingURL=/versions/pc8080/1.36.0/pc8080.map
window.commandMachine=function(a,b,c,d,e,f){if("script"==e){d=!1;c+=".machine";if(!f)delete Za[c],d=!0;else if("string"==typeof f&&!Za[c]){d=!0;e=Za;for(var g=c,h=f.length,m=[],q=[],r="",y=null,F=0;F<h;F++){var u=f[F];if('"'==u||"'"==u)y&&u!=y?r+=u:(y?y=null:y=u,r&&(q.push(r),r=""));else{if(!y){if("\r"==u||"\n"==u)u=";";if(" "==u||"\t"==u||";"==u){r&&(q.push(r),r="");";"==u&&q.length&&(m.push(q),q=[]);continue}}r+=u}}r&&q.push(r);q.length&&m.push(q);e[g]=m;Ya(c)||(d=!1)}return d?(b&&(a.disabled=!0),
!0):!1}if(d&&(g=Wa(d,c+".machine"))&&(h=g.exports)&&(h=h[e]))return h.call(g,f)?(b&&(a.disabled=!0),!0):!1;console.log("unimplemented: commandMachine('"+c+"','"+d+"','"+e+"','"+f+"')");return!1};window.enableEvents=Ka;window.sendEvent=Ma;})();//# sourceMappingURL=/versions/pc8080/1.36.0/pc8080.map

File diff suppressed because one or more lines are too long