Merge branch 'next-release'

This commit is contained in:
Jeff Parsons 2016-11-30 13:09:10 -08:00
commit 4022fc03a4
303 changed files with 14860 additions and 877 deletions

View file

@ -14,11 +14,11 @@
<xsl:variable name="CSSCLASS">pcjs</xsl:variable>
<xsl:variable name="APPCLASS">pcx86</xsl:variable>
<xsl:variable name="APPNAME">PCx86</xsl:variable>
<xsl:variable name="APPVERSION">1.30.4</xsl:variable>
<xsl:variable name="APPVERSION">1.30.5</xsl:variable>
<xsl:variable name="SITEHOST">www.pcjs.org</xsl:variable>
<xsl:template name="componentStyles">
<link rel="stylesheet" type="text/css" href="/versions/pcx86/1.30.4/components.css"/>
<link rel="stylesheet" type="text/css" href="/versions/pcx86/1.30.5/components.css"/>
</xsl:template>
<xsl:template name="componentScripts">

View file

@ -43,9 +43,10 @@
http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/save.js (C) Jeff Parsons 2012-2016
*/
var l,aa,ba={163840:[40,1,8,,254],184320:[40,1,9,,252],327680:[40,2,8,,255],368640:[40,2,9,,253],737280:[80,2,9,,249],1228800:[80,2,15,,249],1474560:[80,2,18,,240],2949120:[80,2,36,,240],21368320:[615,4,17],2494464:[203,2,12,512],5242880:[256,2,40,256],10485760:[512,2,40,256]},p={uo:1,dl:3,vo:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,
ue:65,Bi:66,Ci:67,Di:68,E:69,Ei:70,Fi:71,Gi:72,Hi:73,Ii:74,Ji:75,Ki:76,Li:77,Mi:78,Ni:79,Oi:80,Q:81,Pi:82,Qi:83,Ri:84,Si:85,Ti:86,Ui:87,Vi:88,Wi:89,og:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,ve:97,ol:98,ql:99,d:100,e:101,Al:102,Bl:103,Cl:104,Dl:105,Tm:106,k:107,Um:108,Ym:109,n:110,en:111,p:112,q:113,r:114,lo:115,t:116,oo:117,po:118,qo:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,wo:127},ca={};ca[186]=p[";"];ca[187]=p["="];ca[188]=p[","];ca[189]=p["-"];ca[190]=p["."];ca[191]=p["/"];
ca[192]=p["`"];ca[219]=p["["];ca[220]=p["\\"];ca[221]=p["]"];ca[222]=p["'"];ca[173]=p["-"];var da={};da[p["1"]]=p["!"];da[p["2"]]=p["@"];da[p["3"]]=p["#"];da[p["4"]]=p.$;da[p["5"]]=p["%"];da[p["6"]]=p["^"];da[p["7"]]=p["&"];da[p["8"]]=p["*"];da[p["9"]]=p["("];da[p["0"]]=p[")"];da[186]=p[":"];da[187]=p["+"];da[188]=p["<"];da[189]=p._;da[190]=p[">"];da[191]=p["?"];da[192]=p["~"];da[219]=p["{"];da[220]=p["|"];da[221]=p["}"];da[222]=p['"'];da[173]=p._;da[61]=p["+"];da[59]=p[":"];
var l,aa,ba={163840:[40,1,8,,254],184320:[40,1,9,,252],327680:[40,2,8,,255],368640:[40,2,9,,253],737280:[80,2,9,,249],1228800:[80,2,15,,249],1474560:[80,2,18,,240],2949120:[80,2,36,,240],21368320:[615,4,17],2494464:[203,2,12,512],5242880:[256,2,40,256],10485760:[512,2,40,256]},p={to:0,vo:1,wo:2,dl:3,xo:4,yo:5,zo:6,Ao:7,Bo:8,Co:9,Do:10,Eo:11,Fo:12,Go:13,Ho:14,Io:15,Jo:16,Ko:17,Lo:18,Mo:19,No:20,Oo:21,Po:22,Qo:23,Ro:24,So:25,To:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,
"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,ue:65,Bi:66,Ci:67,Di:68,E:69,Ei:70,Fi:71,Gi:72,Hi:73,Ii:74,Ji:75,Ki:76,Li:77,Mi:78,Ni:79,Oi:80,Q:81,Pi:82,Qi:83,Ri:84,Si:85,Ti:86,Ui:87,Vi:88,Wi:89,og:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,ve:97,ol:98,ql:99,d:100,e:101,Al:102,Bl:103,Cl:104,Dl:105,Tm:106,k:107,Um:108,Ym:109,n:110,en:111,p:112,q:113,r:114,lo:115,t:116,oo:117,po:118,qo:119,x:120,y:121,z:122,
"{":123,"|":124,"}":125,"~":126,Uo:127},ca={};ca[186]=p[";"];ca[187]=p["="];ca[188]=p[","];ca[189]=p["-"];ca[190]=p["."];ca[191]=p["/"];ca[192]=p["`"];ca[219]=p["["];ca[220]=p["\\"];ca[221]=p["]"];ca[222]=p["'"];ca[173]=p["-"];var da={};da[p["1"]]=p["!"];da[p["2"]]=p["@"];da[p["3"]]=p["#"];da[p["4"]]=p.$;da[p["5"]]=p["%"];da[p["6"]]=p["^"];da[p["7"]]=p["&"];da[p["8"]]=p["*"];da[p["9"]]=p["("];da[p["0"]]=p[")"];da[186]=p[":"];da[187]=p["+"];da[188]=p["<"];da[189]=p._;da[190]=p[">"];da[191]=p["?"];
da[192]=p["~"];da[219]=p["{"];da[220]=p["|"];da[221]=p["}"];da[222]=p['"'];da[173]=p._;da[61]=p["+"];da[59]=p[":"];
function ea(a,b){var c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var f,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):2==e&&
d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}function fa(a,b){var c="";b?32<b&&(b=32):b=32;if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;)c=(a&1?"1":"0")+c,a>>=1;return c}function ha(a,b,c){var d="";if(!b||4<b)b=4;for(var e=0;e<b;e++)d&&(d=","+d),d=fa(a&255,8)+d,a>>=8;return(c?"0b":"")+d}
function ia(a,b,c){var d="";b?11<b&&(b=11):b=a&-65536?11:6;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;)d=String.fromCharCode((a&7)+48)+d,a>>=3;return(c?"0o":"")+d}function r(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}function u(a){return r(a,2,!0)}function v(a){return r(a,4,!0)}
@ -93,7 +94,7 @@ function Pb(a,b,c,d,e){a.N.font=a.fa;a.N.fillStyle=a.Ea;a.N.fillText(b,a.C,a.U);
function Rb(a,b,c){bb.call(this,"Bus",a,Rb);this.F=b;this.ha=c;this.N=a.busWidth||20;this.W=Math.pow(2,this.N);this.Eg=this.Gb=this.W-1|0;this.La=32==this.N||20>=this.N?12:24>=this.N?14:15;this.Sb=1<<this.La;this.fa=this.Sb>>2;this.A=this.Sb-1;this.U=this.W/this.Sb|0;this.ga=this.U-1;this.B=[];this.C=[];this.L=this.V=!1;this.aa=[];this.ea=[];a=new B;Sb(a,this.ha);this.sa=Array(this.U);for(b=0;b<this.U;b++)this.sa[b]=a;a=this.F;b=this.sa;c=this.La;a.kd=a.sa=b;a.La=c;a.Sb=1<<a.La;a.Ea=a.Sb-1;a.Fd=b.length;
a.hd=a.Fd-1;a=this.F;a.Gb=a.Db=this.Gb;xb(this)}jb(Rb);Rb.prototype.reset=function(){Tb(this,!0)};Rb.prototype.hc=function(a,b){b||this.reset();return!0};
function Ub(a,b,c,d,e){for(var f=b,g=c,h=f>>>a.La;0<g&&h<a.sa.length;){var k=a.sa[h],m=h*a.Sb,n=a.Sb-(f-m);n>g&&(n=g);if(k&&k.size){if(k.type==d&&k.controller==e){if(f+g<=k.Fa)return k.Qe+=k.Fa-f,k.Fa=f,!0;if(f>=k.Fa+k.Qe){n=k.size-(f-m);n>g&&(n=g);k.Qe=f-k.Fa+n;f=m+a.Sb;g-=n;h++;continue}}return Wb(a,1,f,g)}f=new B(f,n,a.Sb,d,e);Sb(f,a.ha,k);a.sa[h++]=f;f=m+a.Sb;g-=n}return 0>=g?(Xb(a.F),a.F.la.Ib||a.status(Math.floor(c/1024)+"Kb "+Yb[d]+" at "+r(b)),!0):Wb(a,2,b,c)}
var Nb,$b={Hk:20,count:8,Lo:1,type:3},ac=0,bc;for(bc in $b){var cc=$b[bc];$b[bc]={vh:(1<<cc)-1<<ac,shift:ac};ac+=cc}Nb=$b;function Tb(a,b){32==a.N?b?a.X&&(dc(a,1048576,1048576,a.X),a.X=null):a.X||(a.X=ec(a,1048576,1048576),dc(a,1048576,1048576,ec(a,0,1048576))):20<a.N&&(b=a.Gb&-1048577|(b?1048576:0),b!=a.Gb&&(a.Gb=b,a.F&&(a=a.F,a.Gb=a.Db=b)))}l=Rb.prototype;
var Nb,$b={Hk:20,count:8,jp:1,type:3},ac=0,bc;for(bc in $b){var cc=$b[bc];$b[bc]={vh:(1<<cc)-1<<ac,shift:ac};ac+=cc}Nb=$b;function Tb(a,b){32==a.N?b?a.X&&(dc(a,1048576,1048576,a.X),a.X=null):a.X||(a.X=ec(a,1048576,1048576),dc(a,1048576,1048576,ec(a,0,1048576))):20<a.N&&(b=a.Gb&-1048577|(b?1048576:0),b!=a.Gb&&(a.Gb=b,a.F&&(a=a.F,a.Gb=a.Db=b)))}l=Rb.prototype;
l.Vg=function(a,b,c,d){if(!(a&this.A||!b||b&this.A)){for(var e=a>>>this.La;0<b;){var f=this.sa[e];if(!f.controller)return Wb(this,3,a,b,d);fc(f,c,!0);b-=this.Sb;e++}return!0}return Wb(this,4,a,b)};function gc(a,b,c){if(!(b&a.A||!c||c&a.A)){for(var d=b>>>a.La;0<c;){var e=a.sa[d];b=new B(b);Sb(b,a.ha,e);a.sa[d++]=b;b=d*a.Sb;c-=a.Sb}Xb(a.F);return!0}return Wb(a,5,b,c)}function ec(a,b,c){var d=[];for(b>>>=a.La;0<c&&b<a.sa.length;)d.push(a.sa[b++]),c-=a.Sb;return d}
function dc(a,b,c,d,e){for(var f=0,g=b>>>a.La;0<c&&g<a.sa.length;){var h=d[f++];if(!h)break;if(void 0!==e){var k=new B(b),m=k,n=e,t=a.ha;m.id=h.id|1;m.Qe=h.Qe;m.size=h.size;n&&(m.type=n,m.N=n==hc);Ab?(m.X=h.X,m.qa=h.qa,m.Za=h.Za,m.de=h.de,m.da=h.da,fc(m,ic?jc:kc)):(m.da=h.da,fc(m,lc));Sb(m,t,h);h=k}a.sa[g++]=h;c-=a.Sb}}l.Qa=function(a){return this.sa[(a&this.Gb)>>>this.La].pc(a&this.A,a)};
l.na=function(a){var b=a&this.A,c=(a&this.Gb)>>>this.La;return b!=this.A?this.sa[c].sf(b,a):this.sa[c++].pc(b,a)|this.sa[c&this.ga].pc(0,a+1)<<8};function mc(a,b){var c=b&a.A,d=(b&a.Gb)>>>a.La;return c!=a.A?a.sa[d].gg(c,b):a.sa[d++].re(c,b)|a.sa[d&a.ga].re(0,b+1)<<8}l.oa=function(a){var b=a&this.A,c=(a&this.Gb)>>>this.La;if(b<this.A-2)return this.sa[c].Md(b,a);for(var d=0,e=4,f=0,g=4-(b&3);e--;)d|=this.sa[c].pc(b++,a++)<<f,--g||(c=c+1&this.ga,b=0),f+=8;return d};
@ -415,7 +416,7 @@ a;Lf(this);return a},function(a){this.S|=2;this.A-=14+(-1===this.D?0:2);if(-1!==
this.ja?b|=-16777216:80386<=this.ja&&2!=this.ba&&(a|=b<<16);this.nb(this.D+2,b);this.A-=12}return a},function(a){-1===this.D||this.ca&131072?E.call(this,6):(this.Ec=this.oa(this.D+2)&(this.R|this.R<<8),a&=65535,this.zd=this.Ec+a,this.S|=2,this.A-=11);return a},function(a){-1===this.D||this.ca&131072?E.call(this,6):(this.Mc=this.oa(this.D+2)&(this.R|this.R<<8),a&=65535,this.Sd=this.Mc+a,this.S|=2,this.A-=12);return a},function(){this.A-=2+(-1===this.D?0:1);return this.$a},W,function(a){this.ca&131072?
E.call(this,6):(Of(this,a),this.A-=-1===this.D?3:6,this.S|=2);return a},W],tk=[W,W,W,W,Hh,Kh,Jh,Ih];
function X(a){bb.call(this,"ChipSet",a,X,32768);var b=a.model;b&&!uk[b]&&w("Unrecognized ChipSet model: "+b);this.ja=uk[b]||vk;this.C=[];b=wk(a[xk]);this.C[0]=[b,b];null==b&&(this.ia=[360,360],(b=a.floppies)&&b.length&&(this.ia=b),yk(this,zk,this.ia.length),yk(this,Ak,a.monitor||(this.ja<kg?"mono":"ega")));b=wk(a[Bk]);this.C[1]=[b,b];this.cb=this.Da=1;this.ja>=kg&&(this.cb=this.Da=2);this.ka=a.scaleTimers||!1;this.Ub=a.rtcDate;this.Db=!1;a.sound&&(this.sb=this.Ea=null,window&&(this.sb=window.AudioContext||
window.webkitAudioContext),this.sb&&(this.Ea=new this.sb));this.reset(!0);xb(this)}jb(X);var vk=5150.9,kg=5170,uk={5150:5150,5160:5160,5170:kg,att6300:5160.101,mpc1600:5150.101,z150:5160.15,compaq:5150.102,other:vk,deskpro386:5180},xk="sw1",Bk="sw2",Ck={jl:1,ONE:0,Jo:64,Ho:128,yo:192,Lc:192,Xg:6},Dk={Io:16,to:32,zo:48,Lc:48,Xg:4},zk=1,Ak=4,Ek={5150:[{},{}]};Ek[5150][0][zk]={Lc:192,gd:{1:0,2:64,3:128,4:192},Pd:"Number of Floppy Drives"};Ek[5150][0][3]={Lc:2,gd:{0:0,1:2},Pd:"FPU"};
window.webkitAudioContext),this.sb&&(this.Ea=new this.sb));this.reset(!0);xb(this)}jb(X);var vk=5150.9,kg=5170,uk={5150:5150,5160:5160,5170:kg,att6300:5160.101,mpc1600:5150.101,z150:5160.15,compaq:5150.102,other:vk,deskpro386:5180},xk="sw1",Bk="sw2",Ck={jl:1,ONE:0,hp:64,fp:128,Wo:192,Lc:192,Xg:6},Dk={gp:16,uo:32,Xo:48,Lc:48,Xg:4},zk=1,Ak=4,Ek={5150:[{},{}]};Ek[5150][0][zk]={Lc:192,gd:{1:0,2:64,3:128,4:192},Pd:"Number of Floppy Drives"};Ek[5150][0][3]={Lc:2,gd:{0:0,1:2},Pd:"FPU"};
Ek[5150][0][Ak]={Lc:48,gd:{0:0,1:16,2:32,3:48,none:0,tv:16,color:32,cga:32,mda:48,mono:48,ega:0,vga:0},Pd:"Monitor Type"};Ek[5150][0][5]={Lc:12,gd:{16:0,32:4,48:8,64:12},Pd:"Base Memory (16Kb Increments)"};Ek[5150][1][6]={Lc:31,gd:{0:0,32:1,64:2,96:3,128:4,160:5,192:6,224:7,256:8,288:9,320:10,352:11,384:12,416:13,448:14,480:15,512:16,544:17,576:18},Pd:"Expansion Memory (32Kb Increments)"};Ek[5160]=[{},{}];Ek[5160][0][zk]=Ek[5150][0][zk];Ek[5160][0][3]=Ek[5150][0][3];Ek[5160][0][Ak]=Ek[5150][0][Ak];
Ek[5160][0][5]={Lc:12,gd:{64:0,128:4,192:8,256:12},Pd:"Base Memory (64Kb Increments)"};Ek[5160][1][6]=Ek[5150][1][6];Ek[5160.101]=[{},{}];Ek[5160.101][0][5]={Lc:143,gd:{128:1,256:130,512:8,640:141},Pd:"Base Memory (128Kb Increments)"};Ek[5160.101][0][3]={Lc:16,gd:{0:0,1:16},Pd:"FPU"};Ek[5160.101][1][2]={Lc:1,gd:{0:0,1:1},Pd:"Floppy Type"};Ek[5160.101][1][zk]=Ek[5150][0][zk];Ek[5160.101][1][Ak]=Ek[5150][0][Ak];l=X.prototype;
l.Pb=function(a,b,c){switch(b){case xk:return this.qa[b]=c,Fk(this,0,b),!0;case Bk:if(5150==(this.ja|0)||5160.101==this.ja)return this.qa[b]=c,Fk(this,1,b),!0;break;case "swdesc":return this.qa[b]=c,!0}return!1};
@ -431,7 +432,7 @@ b,this.Pa]);a.set(4,[this.Ya,this.W,this.qb,this.Ca,this.ya]);this.ja>=kg&&(a.se
l.restore=function(a){var b,c;b=a[0];Array.isArray(b[0])?this.C=b[0]:(this.C[0][0]=b[0],this.C[1][0]=b[1]&15,this.C[0][1]=b[2],this.C[1][1]=b[3]&15);Tk(this);b=a[1];for(c=0;c<this.cb;c++)Uk(this,c,1==b.length?b[0][c]:b);b=a[2];for(c=0;c<this.Da;c++)Vk(this,c,c?160:32,b[0][c]);b=a[3];this.Oa=b[0];this.Pa=b[2];for(c=0;c<this.V.length;c++)Wk(this,c,b[1][c]);b=a[4];this.Ya=b[0];this.W=b[1];this.qb=b[2];this.Ca=b[3];this.ya=b[4];if(b=a[5])this.N=b[0],this.ea=b[1],this.aa=b[2],this.Ja=b[3],this.fa=b[4],
this.Ka=b[5];if(b=a[6])this.ra=b[1],this.ra[7]=b[0],this.pa=b[2],this.A=b[3],this.Ga=b[4],this.ua=b[5],Zk(this);return!0};l.start=function(){cl(this)};l.stop=function(){cl(this)};var dl=[0,null,null,0,Array(4),0];function Uk(a,b,c){var d=a.L[b];d||(d={Dc:Array(4)});c=c&&5<=c.length?c:dl;d.Yb=c[0];d.eh=c[1];d.dj=c[2];d.Kb=c[3];d.Zm=b<<2;for(var e=0;e<d.Dc.length;e++)el(d,e,c[4][e]);d.ej=c[5]||0;a.L[b]=d}var fl=[!0,[0,0],[0,0],[0,0],[0,0]];
function el(a,b,c){var d=a.Dc[b];d||(d={pg:[0,0],Fc:[0,0],Eb:[0,0],Ab:[0,0]});c=c&&8==c.length?c:fl;d.Ge=c[0];d.pg[0]=c[1][0];d.pg[1]=c[1][1];d.Fc[0]=c[2][0];d.Fc[1]=c[2][1];d.Eb[0]=c[3][0];d.Eb[1]=c[3][1];d.Ab[0]=c[4][0];d.Ab[1]=c[4][1];d.mode=c[5];d.rg=c[6];d.controller=a;d.yj=b;gl(d,c[8],c[9]);a.Dc[b]=d}function gl(a,b,c,d){"string"==typeof b&&(b=ob(b));b&&(a.done=null,a.mo=b.id,a.no=c,a.wg=b,a.mh=b[c],a.Lg=d)}var hl=[0,Array(4)];
function Vk(a,b,c,d){var e=a.vc[b];e||(e={Yc:[null,null,null,null]});d=d&&8==d.length?d:hl;e.port=c;e.Mo=b<<3;e.nf=d[0];e.Yc[0]=d[1][0];e.Yc[1]=d[1][1];e.Yc[2]=d[1][2];e.Yc[3]=d[1][3];e.Xd=d[2];e.Ad=d[3];e.lc=d[4];e.Oc=d[5];e.ye=d[6];e.Ef=d[7];a.vc[b]=e}var il=[[0,0],[0,0],[0,0],[0,0]];
function Vk(a,b,c,d){var e=a.vc[b];e||(e={Yc:[null,null,null,null]});d=d&&8==d.length?d:hl;e.port=c;e.kp=b<<3;e.nf=d[0];e.Yc[0]=d[1][0];e.Yc[1]=d[1][1];e.Yc[2]=d[1][2];e.Yc[3]=d[1][3];e.Xd=d[2];e.Ad=d[3];e.lc=d[4];e.Oc=d[5];e.ye=d[6];e.Ef=d[7];a.vc[b]=e}var il=[[0,0],[0,0],[0,0],[0,0]];
function Wk(a,b,c){var d=a.V[b];d||(d={Fc:[0,0],$c:[0,0],Ab:[0,0],Be:[0,0]});c=c&&13<=c.length?c:il;d.Fc[0]=c[0][0];d.Fc[1]=c[0][1];d.$c[0]=c[1][0];d.$c[1]=c[1][1];d.Ab[0]=c[2][0];d.Ab[1]=c[2][1];d.Be[0]=c[3][0];d.Be[1]=c[3][1];d.gh=c[4];d.mode=c[5];d.jg=c[6];d.Ed=c[7];d.md=c[8];d.td=c[9];d.af=c[10];d.De=c[11];d.vd=c[12];d.Yb=c[13]||0;d.ef=c[14]||!1;a.V[b]=d}
function Fk(a,b,c){for(var d="",e=a.qa[c],f=1;8>=f;f++){var g="pcjs-bitCell";f||(g+=" pcjs-bitCellLeft");d+='<div id="'+(c+"-"+f)+'" class="'+g+'" data-value="0">'+f+"</div>\n"}e.innerHTML=d;jl(a,b,c,!0)}function kl(a,b,c){if(b=(a=Ek[a.ja|0])&&a[b])for(var d in b)if(a=b[d],a.Lc&1<<c)return a;return null}
function Yk(a,b,c){for(var d=null,e=Ek[a.ja]||Ek[a.ja|0]||Ek[5150],f=0;f<e.length;f++){var g=e[f];if(g&&(g=g[b])){a=a.C[f][c?0:1]&g.Lc;for(var h in g.gd)if(g.gd[h]==a&&(d=h,"number"==typeof+d))break;break}}return d}function $k(a,b){if(b<+Yk(a,zk,void 0)){if(!a.ia)return 1;if(b<a.ia.length)switch(a.ia[b]){case 160:case 180:case 320:case 360:return 1;case 720:return 3;case 1200:return 2;case 1440:return 4}}return 0}function Xk(a,b){return+Yk(a,5,b)+ +Yk(a,6,b)}
@ -628,7 +629,7 @@ function jp(a){var b,c,d={},e;if(a.C&&a.C.length)for(b=a.A,c=0;c<b.length;c++)fo
112,d.Mf++,f=!0;else for(c=446,b=0;4>b;b++){if(128==cp(a,e,c+0,1)){d.cg=cp(a,e,c+8,4);(e=bp(a,d.cg))&&(f=!0);break}c+=16}if(!f)return}d.Jf||(d.Jf=cp(a,e,19,2)||cp(a,e,32,4),d.If=cp(a,e,14,2),d.th=d.If+cp(a,e,22,2)*cp(a,e,16,1),d.Dh=cp(a,e,17,2),d.Mf=cp(a,e,13,1));d.rh=d.th+((32*d.Dh+(d.Va-1))/d.Va|0);d.$m=(d.Jf-d.rh)/d.Mf|0;d.Gg=4084>=d.$m?12:16;d.Gl=12==d.Gg?4086:65526;b=[];for(e=d.th;e<d.rh;e++)b.push(d.cg+e);mp(a,d,a.Ug,"",b);for(b=0;b<a.C.length;b++){d=a.C[b];for(e=c=0;e<d.xe.length;e++){var f=
d.xe[e],g=c,h=a.ub*a.lb,k=f%h,m=k/a.lb|0,k=k%a.lb,n=void 0,t=void 0,q=void 0;(n=a.A[f/h|0])&&(t=n[m])&&(q=t[k])&&!q.file&&(q.file=d,q.fn=g);c+=a.Va}e=d;if((ma(e.kc,".EXE")||ma(e.kc,".DLL")||ma(e.kc,".DRV"))&&23117==dp(e,Po)&&64==dp(e,Qo)&&(c=dp(e,Ro),17742==dp(e,So,c))){m=dp(e,Vo,c);g=dp(e,Xo,c);h=dp(e,$o,c);if(g&&m){d=e;f=g+c;g=m;h=h||0;m=1;d.yd=[];for(d.A=[];g--;){if(k=ap(d,f)<<h)n=ap(d,f+2)||65536,d.yd[m++]={oi:k,Ik:k+n-1,we:[]};f+=8}d.yd[254]={oi:0,Ik:0,we:[]}}g=dp(e,To,c);h=dp(e,Uo,c);if(g&&
h)for(d=e,f=g+=c,g+=h,h=1;f<g;){k=ap(d,f);m=k&255;if(!m)break;k>>=8;f+=2;if(k)for(;m--;)ap(d,f,1),254>=k?(n=k,t=ap(d,f+1),f+=3):(n=ap(d,f+3,1),t=ap(d,f+4),f+=6),d.yd[n]&&(d.yd[n].we[h]=[t]),d.A[h]=[n,t],h++;else h+=m}(g=dp(e,Yo,c))&&ep(e,g+c);g=dp(e,Zo,c);h=dp(e,Wo,c);g&&h&&ep(e,g,g+h)}}}}
function mp(a,b,c,d,e){var f,g=a.C.length,h=b.Va/32|0;b.No=d+"\\";for(var k=0;k<e.length;k++)for(var m=e[k],n=0;n<h;n++){var t=a,q=b;f=n;q.te&&q.ri&&q.ri==m||(q.ri=m,q.te=bp(t,q.ri));if(q.te){f*=32;var A=cp(t,q.te,f,1);if(A){if(229==A)q.kc=null;else{q.kc=qa(np(t,q.te,f+0,8));A=qa(np(t,q.te,f+8,3));A.length&&(q.kc+="."+A);q.dh=cp(t,q.te,f+11,1);q.gj=cp(t,q.te,f+28,2);q.Fl=cp(t,q.te,f+26,2);f=q;var A=[],F=q.Fl;if(F){do{if(2>F)break;for(var C=q.rh+(F-2)*q.Mf,D=0;D<q.Mf;D++)A.push(q.cg+C++);F=lp(t,q,
function mp(a,b,c,d,e){var f,g=a.C.length,h=b.Va/32|0;b.lp=d+"\\";for(var k=0;k<e.length;k++)for(var m=e[k],n=0;n<h;n++){var t=a,q=b;f=n;q.te&&q.ri&&q.ri==m||(q.ri=m,q.te=bp(t,q.ri));if(q.te){f*=32;var A=cp(t,q.te,f,1);if(A){if(229==A)q.kc=null;else{q.kc=qa(np(t,q.te,f+0,8));A=qa(np(t,q.te,f+8,3));A.length&&(q.kc+="."+A);q.dh=cp(t,q.te,f+11,1);q.gj=cp(t,q.te,f+28,2);q.Fl=cp(t,q.te,f+26,2);f=q;var A=[],F=q.Fl;if(F){do{if(2>F)break;for(var C=q.rh+(F-2)*q.Mf,D=0;D<q.Mf;D++)A.push(q.cg+C++);F=lp(t,q,
F,0)|lp(t,q,F,1)}while(F<=q.Gl)}f.xe=A}f=!0}else f=!1}else f=!1;if(!f){k=e.length;break}null!=b.kc&&"."!=b.kc&&".."!=b.kc&&(f=new Oo(a,0,b.kc,b.dh,b.gj,b.xe),a.C.push(f))}for(e=a.C.length;g<e;g++)f=a.C[g],f.dh&16&&f.xe.length&&mp(a,b,c,d+"\\"+f.kc,f.xe)}function lp(a,b,c,d){var e=0,f=8*b.Va;c=b.Gg*c+(d?8:0);var g=c/f|0;b.wi&&b.sh&&b.sh==b.If+g||(b.sh=b.If+g,b.wi=bp(a,b.cg+b.sh));b.wi&&(c=c%f|0,e=cp(a,b.wi,c>>3,1),d?e=16==b.Gg?e<<8:c&7?e<<4:(e&15)<<8:c&7&&(e>>=4));return e}
function bp(a,b){var c=a.ub*a.lb,d=b/c|0;return d<a.Bb?(b%=c,a.seek(d,b/a.lb|0,b%a.lb+1)):null}function cp(a,b,c,d){for(var e=0,f=0;d--;){var g=a.read(b,c++);if(0>g)break;e|=g<<f;f+=8}return e}function np(a,b,c,d){for(var e="";d--;){var f=a.read(b,c++);if(0>=f)break;e+=String.fromCharCode(f)}return e}function gp(a,b,c,d,e,f){a||(a={sector:d,length:e,data:[],pattern:f});a.Hl=b;a.Il=c;a.ud=a.Zc=0;a.Wa=!1;return a}
function hp(a,b){b="action=open&volume="+b+("&mode="+a.mode);b+="&chs="+a.Bb+":"+a.ub+":"+a.lb+":"+a.Va;b+="&machine="+a.controller.gf();b+="&user="+a.controller.ie();return Ba()+"/api/v1/disk?"+b}
@ -644,7 +645,7 @@ l.restore=function(a){var b=0,c="unsupported restore format";if(a&&0<a.length){v
b+" changes applied)";b=-1;break}if(this.ff){c="unable to modify write-protected disk";b=-1;break}e=g[f++];f=g[f++];g=e+f.length;if(h=this.A[h][k][m]){for(k=h.data.length;k<e;)h.data[k++]=h.pattern;k=0;h.ud=e;for(h.Zc=f.length;e<g;)h.data[e++]=f[k++];b++}}}0>b?-2!=b&&this.controller.Na("Unable to restore disk '"+this.ga+": "+c):jp(this);return b};
l.toJSON=function(){var a;a=0;for(var b;b=bp(this,a++);)up(b);a=JSON.stringify(this.A,function(a,b){if("file"!=a)return b});a=a.replace(/,"length":512/gm,"").replace(/,"pattern":0/gm,"");a=a.replace(/"(sector|length|data|pattern)":/gm,"$1:");a=a.replace(/,"[^"]*":([0-9]+|true|false)/gm,"");a=a.replace(/(sector|length|data|pattern):/gm,'"$1":');return a=a.replace(/([\]}]),/gm,"$1,\n")};
function up(a){var b=a.data,c=b.length;if(c<<2==a.length){for(var d=c-1,e=b[d],f=0;d--&&b[d]===e;)f++;f++&&(b.length=c-f,a.pattern=e)}}function vp(a){bb.call(this,"FDC",a,vp,524288);this.dmaRead=this.el;this.dmaWrite=this.fl;this.dmaFormat=this.vl;this.U=a.autoMount||null;this.fa=a.sortBy||"name";"none"==this.fa&&(this.fa=null);this.B=[];this.ia=!La("Mobi")&&window&&"FileReader"in window}jb(vp);aa={};
var wp={3:{Ud:3,ge:0,name:aa.Go},4:{Ud:2,ge:1,name:aa.Eo},5:{Ud:9,ge:7,name:aa.Ko},6:{Ud:9,ge:7,name:aa.Ao},7:{Ud:2,ge:0,name:aa.Co},8:{Ud:1,ge:2,name:aa.Fo},10:{Ud:2,ge:7,name:aa.Bo},13:{Ud:6,ge:7,name:aa.xo},15:{Ud:3,ge:0,name:aa.Do}};l=vp.prototype;
var wp={3:{Ud:3,ge:0,name:aa.ep},4:{Ud:2,ge:1,name:aa.bp},5:{Ud:9,ge:7,name:aa.ip},6:{Ud:9,ge:7,name:aa.Yo},7:{Ud:2,ge:0,name:aa.$o},8:{Ud:1,ge:2,name:aa.cp},10:{Ud:2,ge:7,name:aa.Zo},13:{Ud:6,ge:7,name:aa.Vo},15:{Ud:3,ge:0,name:aa.ap}};l=vp.prototype;
l.Pb=function(a,b,c){var d=this;switch(b){case "listDisks":this.qa[b]=c;if(this.fa){b=[];for(a=0;a<c.options.length;a++)b.push(c.options[a]);b.sort(function(a,b){return"path"!=d.fa?a.text.localeCompare(b.text):a.value.localeCompare(b.value)});for(a=0;a<b.length;a++)try{c.options[a]=b[a]}catch(e){break}}c.onchange=function(){var a=d.qa.descDisk,b=c.options[c.selectedIndex];if(a&&b){var g={};if(b=b.getAttribute("data-value"))try{g=eval("("+b+")")}catch(h){w("FDC option error: "+h.message)}b=g.desc;
void 0===b&&(b="");g=g.href;void 0!==g&&(b='<a href="'+g+'" target="_blank">'+b+"</a>");a.innerHTML=b}};return!0;case "descDisk":case "listDrives":return this.qa[b]=c,c.onchange=function(){var a=ea(c.value,10);null!=a&&xp(d,a)},!0;case "loadDrive":return this.qa[b]=c,c.onclick=function(){var a=d.qa.listDisks;a&&yp(d,a.options[a.selectedIndex].text,a.value)},!0;case "saveDrive":if(!this.ia){c.parentNode.removeChild(c);break}this.qa[b]=c;c.onclick=function(){var a=d.qa.listDrives;a&&a.options&&d.A&&
((a=d.A[ea(a.value,10)||0])?(a=a.za)?(a=Na(tp(a),"octet-stream",!0,a.Ug.replace(".json",".img")),w(a)):d.Na("No diskette loaded in drive."):d.Na("No diskette drive selected."))};return!0;case "mountDrive":if(this.ia)return this.qa[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;yp(d,ja(b,!0),b,a)}return!1},!0;c.parentNode.removeChild(c)}return!1};
@ -824,28 +825,28 @@ g[0]){Lr(a,g[1],!0);break}Mr(a,g);break;case "m":if("mouse"==g[0]){var si=g[1],v
null;else if("off"==Ma)vc=!1,Ma=null;else{"keys"==Ma&&(Ma="key");"kbd"==Ma&&(Ma="keyboard");for(uc in Eb)if(Ma==uc){rd=Eb[uc];vc=!!(a.wc&rd);break}if(!rd){a.O("unknown message category: "+Ma);break a}}rd&&("on"==g[2]?(a.wc|=rd,vc=!0):"off"==g[2]&&(a.wc&=~rd,vc=!1))}var qs=0,af="";for(uc in Eb)if(!Ma||Ma==uc){var rs=!!(a.wc&Eb[uc]);if(null===vc||vc==rs)af&&(af+=","),++qs%10||(af+="\n\t"),"key"==uc&&(uc="keys"),af+=uc}void 0===Ma&&a.O("message commands:\n\tm [category] [on|off]\tturn categories on/off");
a.O((null!==vc?vc?"messages on: ":"messages off: ":"message categories:\n\t")+(af||"none"));yq(a)}break;case "o":var ti=g[1],ss=g[2];if(ti&&"?"!=ti){var ui=rq(a,ti,"port #"),vi=rq(a,ss);void 0!==ui&&void 0!==vi&&(zc(a.ga,ui,1,vi),a.O(v(ui)+": "+u(vi)))}else a.O("output commands:"),a.O("\to [p] [b]\twrite byte [b] to port [p]"),a.O("warning: port accesses can affect hardware state");break;case "p":if("print"==g[0]){Nr(a,b.substr(5));break}var Tn="pr"==g[0]?1:0,de=1+Tn;if(a.U)a.O("step in progress");
else{var wg,Un=!1,kb=wq(a,M(a.F),a.F.wa.Z);do switch(wg=!1,a.Qa(kb)){case 38:case 46:case 54:case 62:case 100:case 101:case 102:case 103:case 240:fr(a,kb,1);wg=!0;break;case 204:case 206:a.U=de;fr(a,kb,1);break;case 205:case 224:case 225:case 226:a.U=de;fr(a,kb,kb.Rb?4:2);break;case 232:a.U=de;fr(a,kb,kb.Rb?5:3);break;case 154:a.U=de;fr(a,kb,kb.Rb?7:5);break;case 255:var Vn=a.tb(kb)&14591;if(4351==Vn||6399==Vn)a.U=de,yr(a,kb);break;case 243:case 242:fr(a,kb,1);Un=wg=!0;break;case 108:case 109:case 110:case 111:case 164:case 165:case 166:case 167:case 170:case 171:case 172:case 173:case 174:case 175:Un&&
(a.U=de,fr(a,kb,1))}while(wg);a.U?(a.Rd(a.B,kb,!0),a.Ne()||(a.X&&a.X.wd(),a.U=0)):Pr(a,Tn?"tr":"t")}break;case "r":if("reset"==b){a.X&&a.X.reset();break}qr(a,g);break;case "t":Pr(a,g[0],g[1]);break;case "u":rr(a,g[1],g[2],8);break;case "v":if("var"==g[0]){Kr(a,b.substr(3))||(d=!1);break}a.O("PCx86 version 1.30.4 ("+a.F.ja+",RELEASE,NOPREFETCH"+(Ab?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");a.O(Ca());break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var bf;void 0!==g[3]&&(bf=+g[3]);switch(g[2]){case "int":a.F.Y.jf=
(a.U=de,fr(a,kb,1))}while(wg);a.U?(a.Rd(a.B,kb,!0),a.Ne()||(a.X&&a.X.wd(),a.U=0)):Pr(a,Tn?"tr":"t")}break;case "r":if("reset"==b){a.X&&a.X.reset();break}qr(a,g);break;case "t":Pr(a,g[0],g[1]);break;case "u":rr(a,g[1],g[2],8);break;case "v":if("var"==g[0]){Kr(a,b.substr(3))||(d=!1);break}a.O("PCx86 version 1.30.5 ("+a.F.ja+",RELEASE,NOPREFETCH"+(Ab?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");a.O(Ca());break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var bf;void 0!==g[3]&&(bf=+g[3]);switch(g[2]){case "int":a.F.Y.jf=
bf;break;case "start":a.F.Y.Nf=bf;break;case "stop":a.F.Y.lf=bf;break;default:a.O("unknown cs option");break a}void 0!==bf&&$c(a.F);a.O("checksums "+(a.F.la.Xe?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(dd(a.F,+g[2])||a.O("warning: using 1x multiplier, previous target not reached"));a.O("target speed: "+(a.F.Y.He.toFixed(2)+"Mhz")+" ("+a.F.Y.Wd+"x)");break;default:a.O("unknown option: "+g[1])}else a.O("execution options:"),a.O("\tcs int #\tset checksum cycle interval to #"),a.O("\tcs start #\tset checksum cycle start count to #"),
a.O("\tcs stop #\tset checksum cycle stop count to #"),a.O("\tsp #\t\tset speed multiplier to #");break;case "?":if(g[1]){Nr(a,b.substr(1));break}var wi="commands:",xi;for(xi in Dq)wi+="\n"+pa(xi,7)+Dq[xi];ag(a)||(wi+="\nnote: frequency/history disabled if no exec breakpoints");a.O(wi);break;default:a.O("unknown command: "+b),d=!1}}}catch(Wn){a.O("debugger error: "+(Wn.stack||Wn.message)),d=!1}return d}function Aq(a,b,c){b=a.Ng(b,c);for(var d in b)if(!xr(a,b[+d]))return!1;return!0}
Xa(function(){for(var a=tb(document,"pcx86","debugger"),b=0;b<a.length;b++){var c=a[b],d=qb(c),d=new vq(d);sb(d,c)}});
function Rr(a,b,c){bb.call(this,"Computer",a,Rr,67108864);this.la.ic=!1;Sr(this,b);this.fa=Yc(this,"autoPower",a);this.N=0;this.ra=a.busWidth||a.buswidth;this.A=Tr;this.aa=null;this.V=this.pa=!1;this.ua=Yc(this,"url")||"";this.ya=(Math.random()+.1).toString(36).substr(2,12);this.B=Ur(this);if(this.F=pb("CPU",this.id)){this.ha=pb("Debugger",this.id);this.L=[];for(b=null;b=Jb(this,"Video",b);)this.L.push(b);this.ga=new Rb({id:this.ce+".bus",busWidth:this.ra},this.F,this.ha);var d,e=nb(this.id);if((this.C=
pb("Panel",this.id))&&this.C.Gf)for(b=0;b<e.length;b++)d=e[b],d.Na=this.C.Na,d.O=this.C.O,d.Gf=this.C.Gf;this.O("PCx86 v1.30.4\nCopyright \u00a9 2012-2016 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.Ic&&d.Ic(this,this.ga,this.F,this.ha);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.W=d:this.A=parseInt(d,10));var f;if(a=Yc(this,"state")||(f=!0,a.state))b=this.ia=a,f||(this.V=!0,this.A=Tr),this.A&&(this.ea=new qf(this,
"1.30.4"),this.ea.load()?b=null:delete this.ea);!b&&this.A&&(b=Vr(this))&&(this.V=!0);if(b){var g=this;Aa(b,null,!0,function(a,b,c){c?(g.W=null,g.V=!1,g.Na("Unable to load machine state from server (error "+c+(b?": "+qa(b):"")+")")):(g.aa=b,g.pa=!0);xb(g)})}else xb(this);this.qa.power||(this.fa=!0);!c&&this.fa&&Wr(this,this.dg)}else w("Unable to find CPU component")}jb(Rr);var Tr=0;l=Rr.prototype;l.gf=function(){return this.ya};
pb("Panel",this.id))&&this.C.Gf)for(b=0;b<e.length;b++)d=e[b],d.Na=this.C.Na,d.O=this.C.O,d.Gf=this.C.Gf;this.O("PCx86 v1.30.5\nCopyright \u00a9 2012-2016 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.Ic&&d.Ic(this,this.ga,this.F,this.ha);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.W=d:this.A=parseInt(d,10));var f;if(a=Yc(this,"state")||(f=!0,a.state))b=this.ia=a,f||(this.V=!0,this.A=Tr),this.A&&(this.ea=new qf(this,
"1.30.5"),this.ea.load()?b=null:delete this.ea);!b&&this.A&&(b=Vr(this))&&(this.V=!0);if(b){var g=this;Aa(b,null,!0,function(a,b,c){c?(g.W=null,g.V=!1,g.Na("Unable to load machine state from server (error "+c+(b?": "+qa(b):"")+")")):(g.aa=b,g.pa=!0);xb(g)})}else xb(this);this.qa.power||(this.fa=!0);!c&&this.fa&&Wr(this,this.dg)}else w("Unable to find CPU component")}jb(Rr);var Tr=0;l=Rr.prototype;l.gf=function(){return this.ya};
function Sr(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){w(d.message+" ("+c+")")}}a.U=b}function Yc(a,b,c){var d=b.toLowerCase(),d=eb[b]||eb[d];void 0===d&&a.U&&(d=a.U[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}l.ie=function(){return this.B||""};function Wr(a,b,c){for(var d=nb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!yb(f)){yb(f,function(){Wr(a,b,c)});return}}b.call(a,c)}
function Xr(a,b){var c=new qf(a,"1.30.4","validate");if(c.load()&&Yr(c)){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.Na("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
l.dg=function(a){void 0===a&&(a=this.A||(this.aa?1:Tr));if(!this.N){this.N++;var b=!1,c=!1;this.ka=!1;var d=this.ea||new qf(this,"1.30.4");if(-1==a)b=!0;else if(a>Tr){if(d.load(this.aa)){this.X=new qf(this,"1.30.4","failsafe");this.X.load()&&(Zr(this,d),a=2,$r(this.X));this.X.set("timestamp",ua());as(this.X);var e=this.A&&!this.V;if(1==a||Ea("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=Yr(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):
function Xr(a,b){var c=new qf(a,"1.30.5","validate");if(c.load()&&Yr(c)){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.Na("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
l.dg=function(a){void 0===a&&(a=this.A||(this.aa?1:Tr));if(!this.N){this.N++;var b=!1,c=!1;this.ka=!1;var d=this.ea||new qf(this,"1.30.5");if(-1==a)b=!0;else if(a>Tr){if(d.load(this.aa)){this.X=new qf(this,"1.30.5","failsafe");this.X.load()&&(Zr(this,d),a=2,$r(this.X));this.X.set("timestamp",ua());as(this.X);var e=this.A&&!this.V;if(1==a||Ea("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=Yr(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):
("error"==f&&"no machine state"!=g?(this.Na("Error: "+g),"unable to verify user"==g&&(Ia("user",""),this.B=null)):this.O(f+": "+g),$r(d),d.load()?(c=Yr(d),e=!0):c=!1))}e&&Xr(this,c?d:null)}else 2==a&&d.clear()}else Xr(this);delete this.aa;delete this.ea}e=nb(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.F&&(c=bs(this,g,d,b,c));b=[d,a,c];-1!=a?Wr(this,this.qj,b):this.qj(b)}};
function bs(a,b,c,d,e){if(!b.la.ic){b.la.ic=!0;if(b.hc){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.hc(f,d)&&f&&(w("Unable to restore state for "+b.type),a.ia&&!a.pa?(c.clear(),a.A=Tr,window&&window.location.reload()):a.ka=!0,b.hc(null),e=!1)}if(!d&&b.al)for(a=b.al.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
l.qj=function(a){var b=a[0],c=0>a[1];a=a[2];this.va=!0;this.la.ic=!0;var d=this.qa.power;d&&(d.textContent="Shutdown");this.F&&(bs(this,this.F,b,c,a),this.F.Cf());this.ka&&(Zr(this,b),b.clear());!c&&this.X&&(this.X.clear(),delete this.X);this.N=0};
function Zr(a,b){if(Ea("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.ie();b=b.toString();var d={app:"PCx86",ver:"1.30.4"};d.url=a.ua;d.user=c;d.type="bug";d.data=b;Aa("http://www.pcjs.org/api/v1/report",d,!0)}}
function Qr(a,b,c){var d,e="none";if(a.N)return null;a.N--;var f=new qf(a,"1.30.4"),g=new qf(a,"1.30.4","validate"),h=ua();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.30.4");f.set("url",window?window.location.href:null);f.set("browser",Ca());a.F&&a.F.gc&&(c&&a.F.Wb(),d=a.F.gc(b,c),"object"===typeof d&&f.set(a.F.id,d),c&&(a.F.la.ic=!1,!1===d&&(e=null)));for(var h=nb(a.id),k=0;k<h.length;k++){var m=h[k];m.la.ic&&(m.gc&&(d=m.gc(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.la.ic=!1,
function Zr(a,b){if(Ea("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.ie();b=b.toString();var d={app:"PCx86",ver:"1.30.5"};d.url=a.ua;d.user=c;d.type="bug";d.data=b;Aa("http://www.pcjs.org/api/v1/report",d,!0)}}
function Qr(a,b,c){var d,e="none";if(a.N)return null;a.N--;var f=new qf(a,"1.30.5"),g=new qf(a,"1.30.5","validate"),h=ua();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.30.5");f.set("url",window?window.location.href:null);f.set("browser",Ca());a.F&&a.F.gc&&(c&&a.F.Wb(),d=a.F.gc(b,c),"object"===typeof d&&f.set(a.F.id,d),c&&(a.F.la.ic=!1,!1===d&&(e=null)));for(var h=nb(a.id),k=0;k<h.length;k++){var m=h[k];m.la.ic&&(m.gc&&(d=m.gc(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.la.ic=!1,
!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.B&&cs(a,a.B,f.toString()),as(g)&&as(f)||(e=null,d=h=!0)):a.A&&(d=!0,h=3==a.A),d&&f.clear(h)):e=f.toString());c&&(a.la.ic=!1,b=a.qa.power)&&(b.textContent="Power");a.N=0;return e}l.reset=function(){this.ga&&this.ga.reset&&(y(this,"Resetting "+this.ga.type),this.ga.reset());for(var a=nb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ga&&c.reset&&(y(this,"Resetting "+c.type),c.reset())}};
l.start=function(a,b){for(var c=nb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};l.stop=function(a,b){for(var c=nb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
l.Pb=function(a,b,c){var d=this;switch(b){case "power":return this.qa[b]=c,c.onclick=function(){d.N||(d.la.ic?Qr(d,!1,!0):Wr(d,d.dg))},!0;case "reset":return this.qa[b]=c,c.onclick=function(){if(d.la.ic&&!d.N)if(d.A&&!d.W){var a=Ea("Click OK to save changes to this PCx86 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Qr(d,a,!0);!a&&d.ia?window&&window.location.reload():(a||(d.lh=!0),d.dg(Tr),d.lh=!1)}else d.reset(),d.F&&d.F.Cf()},!0;case "save":if(ma(Ba(),"pcjs.org"))c.parentNode.removeChild(c);
else return this.qa[b]=c,c.onclick=function(){var a=Ur(d,!0);if(a){var b=!!(d.A&&!d.W||d.ia),c=Qr(d,b);b?cs(d,a,c):d.Na("Resume disabled, machine state not saved")}},!0}return!1};
function Ur(a,b){var c=a.B;c||((c=Ha("user"),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=ds(a,c))||a.Na("The user ID is invalid.")):b&&a.Na("Browser local storage is not available"));return c}
function ds(a,b){a.B=null;b=Aa(Ba()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ia("user",b.data),a.B=b.data)}catch(d){w(d.message+" ("+c+")")}return a.B}function Vr(a){var b=null;a.B&&(b=Ba()+"/api/v1/user?req=load&user="+a.B+"&state="+es(a,"1.30.4"));return b}
function cs(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=es(a,"1.30.4");d.data=c;b=Aa(Ba()+"/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.Na("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.Na(c),Ia("user",""),a.B=null)}}
function ds(a,b){a.B=null;b=Aa(Ba()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ia("user",b.data),a.B=b.data)}catch(d){w(d.message+" ("+c+")")}return a.B}function Vr(a){var b=null;a.B&&(b=Ba()+"/api/v1/user?req=load&user="+a.B+"&state="+es(a,"1.30.5"));return b}
function cs(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=es(a,"1.30.5");d.data=c;b=Aa(Ba()+"/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.Na("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.Na(c),Ia("user",""),a.B=null)}}
function Jb(a,b,c){a=nb(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}l.wd=function(a){if(this.L.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.L[0];d.X&&d.X.focus();!a&&window&&window.scrollTo(b,c)}};l.pd=function(a){this.F&&this.F.pd(a);this.C&&this.C.pd(a)};
function jd(a,b){for(var c=0;c<a.L.length;c++)un(a.L[c],b);if(a.C&&(a=a.C,a.Ja)){Ob(a,18,a.aa,a.Ga);if(a.gb){b=a.ga;var c=a.A,d,e;null==d&&(d=0);null==e&&(e=b.W-d|0);c||(c={ih:0,Td:0,Yg:[]});var f=d>>>b.La;d=d+e-1>>>b.La;c.ih=0;for(c.Td=0;f<=d;)e=b.sa[f],c.ih+=e.size,e.size&&(c.Yg.push(wa(Nb,f,0,0,e.type)),c.Td++),f++;a.A=c;a.ya=a.A.Td*a.ga.Sb/691200;d=0;a.A.fj=0;a.A.Bf||(a.A.Bf=[]);e=-1;b=0;for(var g=-1,c=0;c<a.A.Td;c++){var h=a.A.Yg[c],f=xa(Nb.type,h),h=xa(Nb.Hk,h);if(f!=e||h!=g+1)(g=c-b)&&(d+=
Qb(a,b,g,e)),e=f,b=c;g=h}d+=Qb(a,b,c-b,e);e=a.A.ul!=d;a.A.ul=d;if(e){e=new Hb(0,0,a.aa.width,a.aa.height);a.A.Se=[];b=a.A.Td;for(d=0;d<a.A.fj;d++)c=a.A.Bf[d].Td,a.A.Se.push(Ib(e,c,b,!d)),b-=c;for(d=0;d<a.A.Se.length;d++)e=a.A.Bf[d],b=c=a.A.Se[d],f=a.Ga,(g=Fc[e.type])||(g=new Gb),f.strokeStyle="black",f.strokeRect(b.x,b.y,b.ad,b.A),f.fillStyle="string"==typeof g?g:g.toString(),f.fillRect(b.x,b.y,b.ad,b.A),b=a,f=c,b.fa=b.ua,b.W=b.va,c=f.x+(f.ad>>1),g=f.y+(f.A>>1),h=f.A,f.ad<f.A&&(h=f.ad,b.ra=!0,b.N.save(),
@ -860,9 +861,9 @@ a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pcx86$2")
function ts(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Aa(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],g);ts(a,b,c)}})}else c(a,null)}
function us(a,b,c,d){function e(a){if(void 0===h){var b=g&&tb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=oa(a))}function f(a){e("Error: "+a);k&&(--fs||Za(!0));k=!1}var g,h,k=!0;fs++;lb[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css";t.styleSheet?t.styleSheet.cssText=m:t.appendChild(document.createTextNode(m));n.appendChild(t)}c||
(c="/versions/pcx86/1.30.4/components.xsl");m=function(d,h){h?gs(c,null,null,!1,e,function(d,k){k?(mb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--fs||Za(!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),--fs||Za(!0)):f("invalid machine element: "+
(c="/versions/pcx86/1.30.5/components.xsl");m=function(d,h){h?gs(c,null,null,!1,e,function(d,k){k?(mb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--fs||Za(!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),--fs||Za(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?gs(b,a,d,!0,e,m):hs(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(q){f(q.message)}return k}function vs(a,b,c,d){Za(!1);return us(a,b,c,d)}window.embedPC=vs;window.embedPCx86=vs;window.enableEvents=Za;window.sendEvent=$a;
function ws(a,b,c,d){if(!c&&b){d.push(b);a=lb[d[0]];b=null;for(var e in a)if(ma(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?Aa(b,null,!0,function(a,b){xs(b,d)}):xs(null,d)}else w("Error ("+c+") requesting "+a)}
function xs(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=lb[f],k={},m;for(m in h){var n=h[m],t=ka(m);if("xml"==t){for(t=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=t.exec(h[m]);){var q=d[2];q&&(h[q]||(n=n.replace(d[0],"")))}d=m=ja(m)}else"xsl"==t&&(e=m=ja(m));k[m]=n}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(a=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),a=Na(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('<div id="'+f+'"></div>\n')+"...\n",a=a+('<script type="text/javascript" src="'+g+'">\x3c/script>\n')+('<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n')+"The machine should appear where the <div> is located.",w(a)):w("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=pb("Computer",a),e=pb("Debugger",a);if(d){var f=Qr(d,!0),g=d.U?JSON.stringify(d.U):null;b||(b="/versions/pcjs/1.30.4/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Ok:g}))return!0;Aa(b,null,!0,function(c,d,e){ws(c,d,e,[a,ja(b,!0),g,f])});return!0}w("Unable to identify machine '"+a+"'");return!1};})();
window.savePC=function(a,b,c){var d=pb("Computer",a),e=pb("Debugger",a);if(d){var f=Qr(d,!0),g=d.U?JSON.stringify(d.U):null;b||(b="/versions/pcjs/1.30.5/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Ok:g}))return!0;Aa(b,null,!0,function(c,d,e){ws(c,d,e,[a,ja(b,!0),g,f])});return!0}w("Unable to identify machine '"+a+"'");return!1};})();

View file

@ -43,9 +43,10 @@
http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/save.js (C) Jeff Parsons 2012-2016
*/
var l,ba,ca={163840:[40,1,8,,254],184320:[40,1,9,,252],327680:[40,2,8,,255],368640:[40,2,9,,253],737280:[80,2,9,,249],1228800:[80,2,15,,249],1474560:[80,2,18,,240],2949120:[80,2,36,,240],21368320:[615,4,17],2494464:[203,2,12,512],5242880:[256,2,40,256],10485760:[512,2,40,256]},n={Tm:1,Sj:3,Um:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,
Jd:65,wh:66,xh:67,yh:68,E:69,zh:70,Ah:71,Bh:72,Ch:73,Dh:74,Eh:75,Fh:76,Gh:77,Ih:78,Kh:79,Mh:80,Q:81,Ph:82,Rh:83,Th:84,Vh:85,Xh:86,Zh:87,ai:88,ci:89,vf:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Ld:97,bk:98,ck:99,d:100,e:101,mk:102,nk:103,pk:104,qk:105,Bl:106,k:107,Cl:108,Fl:109,n:110,Kl:111,p:112,q:113,r:114,Mm:115,t:116,Pm:117,Qm:118,Rm:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Vm:127},da={};da[186]=n[";"];da[187]=n["="];da[188]=n[","];da[189]=n["-"];da[190]=n["."];da[191]=n["/"];
da[192]=n["`"];da[219]=n["["];da[220]=n["\\"];da[221]=n["]"];da[222]=n["'"];da[173]=n["-"];var p={};p[n["1"]]=n["!"];p[n["2"]]=n["@"];p[n["3"]]=n["#"];p[n["4"]]=n.$;p[n["5"]]=n["%"];p[n["6"]]=n["^"];p[n["7"]]=n["&"];p[n["8"]]=n["*"];p[n["9"]]=n["("];p[n["0"]]=n[")"];p[186]=n[":"];p[187]=n["+"];p[188]=n["<"];p[189]=n._;p[190]=n[">"];p[191]=n["?"];p[192]=n["~"];p[219]=n["{"];p[220]=n["|"];p[221]=n["}"];p[222]=n['"'];p[173]=n._;p[61]=n["+"];p[59]=n[":"];
var l,ba,ca={163840:[40,1,8,,254],184320:[40,1,9,,252],327680:[40,2,8,,255],368640:[40,2,9,,253],737280:[80,2,9,,249],1228800:[80,2,15,,249],1474560:[80,2,18,,240],2949120:[80,2,36,,240],21368320:[615,4,17],2494464:[203,2,12,512],5242880:[256,2,40,256],10485760:[512,2,40,256]},n={Sm:0,Um:1,Vm:2,Sj:3,Wm:4,Xm:5,Ym:6,Zm:7,$m:8,an:9,bn:10,cn:11,dn:12,en:13,fn:14,gn:15,hn:16,jn:17,kn:18,ln:19,mn:20,nn:21,on:22,pn:23,qn:24,rn:25,sn:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,
"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Jd:65,wh:66,xh:67,yh:68,E:69,zh:70,Ah:71,Bh:72,Ch:73,Dh:74,Eh:75,Fh:76,Gh:77,Ih:78,Kh:79,Mh:80,Q:81,Ph:82,Rh:83,Th:84,Vh:85,Xh:86,Zh:87,ai:88,ci:89,vf:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Ld:97,bk:98,ck:99,d:100,e:101,mk:102,nk:103,pk:104,qk:105,Bl:106,k:107,Cl:108,Fl:109,n:110,Kl:111,p:112,q:113,r:114,Mm:115,t:116,Pm:117,Qm:118,Rm:119,x:120,y:121,z:122,
"{":123,"|":124,"}":125,"~":126,tn:127},da={};da[186]=n[";"];da[187]=n["="];da[188]=n[","];da[189]=n["-"];da[190]=n["."];da[191]=n["/"];da[192]=n["`"];da[219]=n["["];da[220]=n["\\"];da[221]=n["]"];da[222]=n["'"];da[173]=n["-"];var p={};p[n["1"]]=n["!"];p[n["2"]]=n["@"];p[n["3"]]=n["#"];p[n["4"]]=n.$;p[n["5"]]=n["%"];p[n["6"]]=n["^"];p[n["7"]]=n["&"];p[n["8"]]=n["*"];p[n["9"]]=n["("];p[n["0"]]=n[")"];p[186]=n[":"];p[187]=n["+"];p[188]=n["<"];p[189]=n._;p[190]=n[">"];p[191]=n["?"];p[192]=n["~"];
p[219]=n["{"];p[220]=n["|"];p[221]=n["}"];p[222]=n['"'];p[173]=n._;p[61]=n["+"];p[59]=n[":"];
function ea(a,b){var c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var f,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):2==e&&
d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}function fa(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}function ga(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0<d&&(c=c.substr(0,d));b&&(d=c.lastIndexOf("."),0<d&&(c=c.substring(0,d)));return c}
function ha(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function ia(a,b){return-1!==a.indexOf(b,a.length-b.length)}var ja={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function ka(a){return a.replace(/[&<>"']/g,function(a){return ja[a]})}function la(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
@ -81,7 +82,7 @@ function sb(a,b,c,d,e){a.G.font=a.P;a.G.fillStyle=a.qa;a.G.fillText(b,a.D,a.K);a
function ub(a,b,c){Ka.call(this,"Bus",a,ub);this.A=b;this.Ia=c;this.D=a.busWidth||20;this.L=Math.pow(2,this.D);this.ba=this.Fa=this.L-1|0;this.da=32==this.D||20>=this.D?12:24>=this.D?14:15;this.xb=1<<this.da;this.ia=this.xb>>2;this.B=this.xb-1;this.H=this.L/this.xb|0;this.C=this.H-1;this.I=[];this.K=[];this.S=[];this.P=[];a=new u;vb(a,this.Ia);this.R=Array(this.H);for(b=0;b<this.H;b++)this.R[b]=a;a=this.A;b=this.R;c=this.da;a.vc=a.R=b;a.da=c;a.xb=1<<a.da;a.pb=a.xb-1;a.pf=b.length;a.$d=a.pf-1;a=this.A;
a.Fa=a.oc=this.Fa;t(this)}Ta(ub);ub.prototype.reset=function(){wb(this,!0)};ub.prototype.Ub=function(a,b){b||this.reset();return!0};
function xb(a,b,c,d,e){for(var f=b,g=c,h=f>>>a.da;0<g&&h<a.R.length;){var k=a.R[h],m=h*a.xb,q=a.xb-(f-m);q>g&&(q=g);if(k&&k.size){if(k.type==d&&k.controller==e){if(f+g<=k.he)return k.Ge+=k.he-f,k.he=f,!0;if(f>=k.he+k.Ge){q=k.size-(f-m);q>g&&(q=g);k.Ge=f-k.he+q;f=m+a.xb;g-=q;h++;continue}}return zb(a,1,f,g)}f=new u(f,q,a.xb,d,e);vb(f,a.Ia,k);a.R[h++]=f;f=m+a.xb;g-=q}return 0>=g?(e=a.A,e.Pa&-2147483648&&Ab(e),a.A.ea.Nb||a.status(Math.floor(c/1024)+"Kb "+Bb[d]+" at "+fa(b)),!0):zb(a,2,b,c)}
var qb,Cb={Cj:20,count:8,kn:1,type:3},Db=0,Eb;for(Eb in Cb){var Fb=Cb[Eb];Cb[Eb]={sg:(1<<Fb)-1<<Db,shift:Db};Db+=Fb}qb=Cb;function wb(a,b){32==a.D?b?a.G&&(Gb(a,1048576,1048576,a.G),a.G=null):a.G||(a.G=Hb(a,1048576,1048576),Gb(a,1048576,1048576,Hb(a,0,1048576))):20<a.D&&(b=a.Fa&-1048577|(b?1048576:0),b!=a.Fa&&(a.Fa=b,a.A&&(a=a.A,a.Fa=a.oc=b)))}l=ub.prototype;
var qb,Cb={Cj:20,count:8,In:1,type:3},Db=0,Eb;for(Eb in Cb){var Fb=Cb[Eb];Cb[Eb]={sg:(1<<Fb)-1<<Db,shift:Db};Db+=Fb}qb=Cb;function wb(a,b){32==a.D?b?a.G&&(Gb(a,1048576,1048576,a.G),a.G=null):a.G||(a.G=Hb(a,1048576,1048576),Gb(a,1048576,1048576,Hb(a,0,1048576))):20<a.D&&(b=a.Fa&-1048577|(b?1048576:0),b!=a.Fa&&(a.Fa=b,a.A&&(a=a.A,a.Fa=a.oc=b)))}l=ub.prototype;
l.$f=function(a,b,c,d){if(!(a&this.B||!b||b&this.B)){for(var e=a>>>this.da;0<b;){var f=this.R[e];if(!f.controller)return zb(this,3,a,b,d);Ib(f,c,!0);b-=this.xb;e++}return!0}return zb(this,4,a,b)};function Jb(a,b,c){if(!(b&a.B||!c||c&a.B)){for(var d=b>>>a.da;0<c;){var e=a.R[d];b=new u(b);vb(b,a.Ia,e);a.R[d++]=b;b=d*a.xb;c-=a.xb}a=a.A;a.Pa&-2147483648&&Ab(a);return!0}return zb(a,5,b,c)}function Hb(a,b,c){var d=[];for(b>>>=a.da;0<c&&b<a.R.length;)d.push(a.R[b++]),c-=a.xb;return d}
function Gb(a,b,c,d,e){for(var f=0,g=b>>>a.da;0<c&&g<a.R.length;){var h=d[f++];if(!h)break;if(void 0!==e){var k=new u(b),m=k,q=e,y=a.Ia;m.id=h.id|1;m.Ge=h.Ge;m.size=h.size;q&&(m.type=q,m.I=q==Kb);fb?(m.R=h.R,m.S=h.S,m.Ka=h.Ka,m.td=h.td,m.V=h.V,Ib(m,Lb?Mb:Nb)):(m.V=h.V,Ib(m,Ob));vb(m,y,h);h=k}a.R[g++]=h;c-=a.xb}}l.Jb=function(a){return this.R[(a&this.Fa)>>>this.da].Wb(a&this.B,a)};
l.ga=function(a){var b=a&this.B,c=(a&this.Fa)>>>this.da;return b!=this.B?this.R[c].Ae(b,a):this.R[c++].Wb(b,a)|this.R[c&this.C].Wb(0,a+1)<<8};function Pb(a,b){var c=b&a.B,d=(b&a.Fa)>>>a.da;return c!=a.B?a.R[d].hf(c,b):a.R[d++].Ed(c,b)|a.R[d&a.C].Ed(0,b+1)<<8}l.fa=function(a){var b=a&this.B,c=(a&this.Fa)>>>this.da;if(b<this.B-2)return this.R[c].Fd(b,a);for(var d=0,e=4,f=0,g=4-(b&3);e--;)d|=this.R[c].Wb(b++,a++)<<f,--g||(c=c+1&this.C,b=0),f+=8;return d};
@ -400,7 +401,7 @@ var ce=[function(){this.A-=2+(-1===this.F?0:1);return this.Zb.ja},function(){thi
var b=this.Ab;80286==this.ca?b|=-16777216:80386<=this.ca&&2!=this.U&&(a|=b<<16);this.Va(this.F+2,b);this.A-=12}return a},function(a){-1===this.F||this.X&131072?v.call(this,6):(this.ub=this.fa(this.F+2)&(this.N|this.N<<8),a&=65535,this.wc=this.ub+a,this.L|=2,this.A-=11);return a},function(a){-1===this.F||this.X&131072?v.call(this,6):(this.Ab=this.fa(this.F+2)&(this.N|this.N<<8),a&=65535,this.xc=this.Ab+a,this.L|=2,this.A-=12);return a},function(){this.A-=2+(-1===this.F?0:1);return this.Pa},T,function(a){this.X&
131072?v.call(this,6):(Ce(this,a),this.A-=-1===this.F?3:6,this.L|=2);return a},T],Ai=[T,T,T,T,hg,kg,jg,ig];
function U(a){Ka.call(this,"ChipSet",a,U);var b=a.model;b&&!Bi[b]&&r("Unrecognized ChipSet model: "+b);this.ca=Bi[b]||Ci;this.D=[];b=Di(a[Ei]);this.D[0]=[b,b];null==b&&(this.Y=[360,360],(b=a.floppies)&&b.length&&(this.Y=b),Fi(this,Gi,this.Y.length),Fi(this,Hi,a.monitor||(this.ca<Se?"mono":"ega")));b=Di(a[Ii]);this.D[1]=[b,b];this.Ea=this.pa=1;this.ca>=Se&&(this.Ea=this.pa=2);this.Z=a.scaleTimers||!1;this.Xa=a.rtcDate;this.Oa=!1;a.sound&&(this.La=this.qa=null,window&&(this.La=window.AudioContext||
window.webkitAudioContext),this.La&&(this.qa=new this.La));this.reset(!0);t(this)}Ta(U);var Ci=5150.9,Se=5170,Bi={5150:5150,5160:5160,5170:Se,att6300:5160.101,mpc1600:5150.101,z150:5160.15,compaq:5150.102,other:Ci,deskpro386:5180},Ei="sw1",Ii="sw2",Ji={Yj:1,ONE:0,hn:64,fn:128,Xm:192,lc:192,eg:6},Ki={gn:16,Sm:32,Ym:48,lc:48,eg:4},Gi=1,Hi=4,W={5150:[{},{}]};W[5150][0][Gi]={lc:192,Nc:{1:0,2:64,3:128,4:192},ed:"Number of Floppy Drives"};W[5150][0][3]={lc:2,Nc:{0:0,1:2},ed:"FPU"};
window.webkitAudioContext),this.La&&(this.qa=new this.La));this.reset(!0);t(this)}Ta(U);var Ci=5150.9,Se=5170,Bi={5150:5150,5160:5160,5170:Se,att6300:5160.101,mpc1600:5150.101,z150:5160.15,compaq:5150.102,other:Ci,deskpro386:5180},Ei="sw1",Ii="sw2",Ji={Yj:1,ONE:0,Gn:64,En:128,vn:192,lc:192,eg:6},Ki={Fn:16,Tm:32,wn:48,lc:48,eg:4},Gi=1,Hi=4,W={5150:[{},{}]};W[5150][0][Gi]={lc:192,Nc:{1:0,2:64,3:128,4:192},ed:"Number of Floppy Drives"};W[5150][0][3]={lc:2,Nc:{0:0,1:2},ed:"FPU"};
W[5150][0][Hi]={lc:48,Nc:{0:0,1:16,2:32,3:48,none:0,tv:16,color:32,cga:32,mda:48,mono:48,ega:0,vga:0},ed:"Monitor Type"};W[5150][0][5]={lc:12,Nc:{16:0,32:4,48:8,64:12},ed:"Base Memory (16Kb Increments)"};W[5150][1][6]={lc:31,Nc:{0:0,32:1,64:2,96:3,128:4,160:5,192:6,224:7,256:8,288:9,320:10,352:11,384:12,416:13,448:14,480:15,512:16,544:17,576:18},ed:"Expansion Memory (32Kb Increments)"};W[5160]=[{},{}];W[5160][0][Gi]=W[5150][0][Gi];W[5160][0][3]=W[5150][0][3];W[5160][0][Hi]=W[5150][0][Hi];
W[5160][0][5]={lc:12,Nc:{64:0,128:4,192:8,256:12},ed:"Base Memory (64Kb Increments)"};W[5160][1][6]=W[5150][1][6];W[5160.101]=[{},{}];W[5160.101][0][5]={lc:143,Nc:{128:1,256:130,512:8,640:141},ed:"Base Memory (128Kb Increments)"};W[5160.101][0][3]={lc:16,Nc:{0:0,1:16},ed:"FPU"};W[5160.101][1][2]={lc:1,Nc:{0:0,1:1},ed:"Floppy Type"};W[5160.101][1][Gi]=W[5150][0][Gi];W[5160.101][1][Hi]=W[5150][0][Hi];l=U.prototype;
l.zb=function(a,b,c){switch(b){case Ei:return this.la[b]=c,Li(this,0,b),!0;case Ii:if(5150==(this.ca|0)||5160.101==this.ca)return this.la[b]=c,Li(this,1,b),!0;break;case "swdesc":return this.la[b]=c,!0}return!1};
@ -414,7 +415,7 @@ b,this.za]);a.set(4,[this.Da,this.S,this.Ja,this.oa,this.ma]);this.ca>=Se&&(a.se
l.restore=function(a){var b,c;b=a[0];Array.isArray(b[0])?this.D=b[0]:(this.D[0][0]=b[0],this.D[1][0]=b[1]&15,this.D[0][1]=b[2],this.D[1][1]=b[3]&15);Wi(this);b=a[1];for(c=0;c<this.Ea;c++)Xi(this,c,1==b.length?b[0][c]:b);b=a[2];for(c=0;c<this.pa;c++)Yi(this,c,c?160:32,b[0][c]);b=a[3];this.xa=b[0];this.za=b[2];for(c=0;c<this.K.length;c++)Zi(this,c,b[1][c]);b=a[4];this.Da=b[0];this.S=b[1];this.Ja=b[2];this.oa=b[3];this.ma=b[4];if(b=a[5])this.H=b[0],this.P=b[1],this.R=b[2],this.ua=b[3],this.W=b[4],this.va=
b[5];if(b=a[6])this.I=b[1],this.I[7]=b[0],this.da=b[2],this.B=b[3],this.ra=b[4],this.ha=b[5],bj(this);return!0};l.start=function(){fj(this)};l.stop=function(){fj(this)};var gj=[0,null,null,0,Array(4),0];function Xi(a,b,c){var d=a.G[b];d||(d={$b:Array(4)});c=c&&5<=c.length?c:gj;d.Db=c[0];d.hg=c[1];d.hi=c[2];d.Ib=c[3];d.Gl=b<<2;for(var e=0;e<d.$b.length;e++)hj(d,e,c[4][e]);d.jg=c[5]||0;a.G[b]=d}var ij=[!0,[0,0],[0,0],[0,0],[0,0]];
function hj(a,b,c){var d=a.$b[b];d||(d={wf:[0,0],jc:[0,0],gb:[0,0],hb:[0,0]});c=c&&8==c.length?c:ij;d.Rd=c[0];d.wf[0]=c[1][0];d.wf[1]=c[1][1];d.jc[0]=c[2][0];d.jc[1]=c[2][1];d.gb[0]=c[3][0];d.gb[1]=c[3][1];d.hb[0]=c[4][0];d.hb[1]=c[4][1];d.mode=c[5];d.xf=c[6];d.controller=a;d.vi=b;jj(d,c[8],c[9]);a.$b[b]=d}function jj(a,b,c,d){"string"==typeof b&&(b=Xa(b));b&&(a.done=null,a.Nm=b.id,a.Om=c,a.Ef=b,a.qg=b[c],a.Sf=d)}var kj=[0,Array(4)];
function Yi(a,b,c,d){var e=a.gc[b];e||(e={Rc:[null,null,null,null]});d=d&&8==d.length?d:kj;e.port=c;e.ln=b<<3;e.We=d[0];e.Rc[0]=d[1][0];e.Rc[1]=d[1][1];e.Rc[2]=d[1][2];e.Rc[3]=d[1][3];e.kd=d[2];e.Uc=d[3];e.ac=d[4];e.Cc=d[5];e.Md=d[6];e.Ne=d[7];a.gc[b]=e}var lj=[[0,0],[0,0],[0,0],[0,0]];
function Yi(a,b,c,d){var e=a.gc[b];e||(e={Rc:[null,null,null,null]});d=d&&8==d.length?d:kj;e.port=c;e.Jn=b<<3;e.We=d[0];e.Rc[0]=d[1][0];e.Rc[1]=d[1][1];e.Rc[2]=d[1][2];e.Rc[3]=d[1][3];e.kd=d[2];e.Uc=d[3];e.ac=d[4];e.Cc=d[5];e.Md=d[6];e.Ne=d[7];a.gc[b]=e}var lj=[[0,0],[0,0],[0,0],[0,0]];
function Zi(a,b,c){var d=a.K[b];d||(d={jc:[0,0],Ec:[0,0],hb:[0,0],Nd:[0,0]});c=c&&13<=c.length?c:lj;d.jc[0]=c[0][0];d.jc[1]=c[0][1];d.Ec[0]=c[1][0];d.Ec[1]=c[1][1];d.hb[0]=c[2][0];d.hb[1]=c[2][1];d.Nd[0]=c[3][0];d.Nd[1]=c[3][1];d.kg=c[4];d.mode=c[5];d.mf=c[6];d.Wc=c[7];d.hd=c[8];d.Sc=c[9];d.oe=c[10];d.Pd=c[11];d.jd=c[12];d.Db=c[13]||0;d.se=c[14]||!1;a.K[b]=d}
function Li(a,b,c){for(var d="",e=a.la[c],f=1;8>=f;f++){var g="pcjs-bitCell";f||(g+=" pcjs-bitCellLeft");d+='<div id="'+(c+"-"+f)+'" class="'+g+'" data-value="0">'+f+"</div>\n"}e.innerHTML=d;mj(a,b,c,!0)}function nj(a,b,c){if(b=(a=W[a.ca|0])&&a[b])for(var d in b)if(a=b[d],a.lc&1<<c)return a;return null}
function aj(a,b,c){for(var d=null,e=W[a.ca]||W[a.ca|0]||W[5150],f=0;f<e.length;f++){var g=e[f];if(g&&(g=g[b])){a=a.D[f][c?0:1]&g.lc;for(var h in g.Nc)if(g.Nc[h]==a&&(d=h,"number"==typeof+d))break;break}}return d}function cj(a,b){if(b<+aj(a,Gi,void 0)){if(!a.Y)return 1;if(b<a.Y.length)switch(a.Y[b]){case 160:case 180:case 320:case 360:return 1;case 720:return 3;case 1200:return 2;case 1440:return 4}}return 0}function $i(a,b){return+aj(a,5,b)+ +aj(a,6,b)}
@ -593,7 +594,7 @@ l.restore=function(a){var b=0,c="unsupported restore format";if(a&&0<a.length){v
b+" changes applied)";b=-1;break}if(this.te){c="unable to modify write-protected disk";b=-1;break}e=g[f++];f=g[f++];g=e+f.length;if(h=this.A[h][k][m]){for(k=h.data.length;k<e;)h.data[k++]=h.pattern;k=0;h.Tc=e;for(h.Dc=f.length;e<g;)h.data[e++]=f[k++];b++}}}0>b&&-2!=b&&this.controller.Ba("Unable to restore disk '"+this.B+": "+c);return b};
l.toJSON=function(){var a;a=0;for(var b;b=km(this,a++);)sm(b);a=JSON.stringify(this.A,function(a,b){if("file"!=a)return b});a=a.replace(/,"length":512/gm,"").replace(/,"pattern":0/gm,"");a=a.replace(/"(sector|length|data|pattern)":/gm,"$1:");a=a.replace(/,"[^"]*":([0-9]+|true|false)/gm,"");a=a.replace(/(sector|length|data|pattern):/gm,'"$1":');return a=a.replace(/([\]}]),/gm,"$1,\n")};
function sm(a){var b=a.data,c=b.length;if(c<<2==a.length){for(var d=c-1,e=b[d],f=0;d--&&b[d]===e;)f++;f++&&(b.length=c-f,a.pattern=e)}}function tm(a){Ka.call(this,"FDC",a,tm);this.dmaRead=this.Tj;this.dmaWrite=this.Uj;this.dmaFormat=this.hk;this.K=a.autoMount||null;this.W=a.sortBy||"name";"none"==this.W&&(this.W=null);this.C=[];this.Y=!za("Mobi")&&window&&"FileReader"in window}Ta(tm);ba={};
var um={3:{gd:3,wd:0,name:ba.en},4:{gd:2,wd:1,name:ba.cn},5:{gd:9,wd:7,name:ba.jn},6:{gd:9,wd:7,name:ba.Zm},7:{gd:2,wd:0,name:ba.an},8:{gd:1,wd:2,name:ba.dn},10:{gd:2,wd:7,name:ba.$m},13:{gd:6,wd:7,name:ba.Wm},15:{gd:3,wd:0,name:ba.bn}};l=tm.prototype;
var um={3:{gd:3,wd:0,name:ba.Dn},4:{gd:2,wd:1,name:ba.Bn},5:{gd:9,wd:7,name:ba.Hn},6:{gd:9,wd:7,name:ba.xn},7:{gd:2,wd:0,name:ba.zn},8:{gd:1,wd:2,name:ba.Cn},10:{gd:2,wd:7,name:ba.yn},13:{gd:6,wd:7,name:ba.un},15:{gd:3,wd:0,name:ba.An}};l=tm.prototype;
l.zb=function(a,b,c){var d=this;switch(b){case "listDisks":this.la[b]=c;if(this.W){b=[];for(a=0;a<c.options.length;a++)b.push(c.options[a]);b.sort(function(a,b){return"path"!=d.W?a.text.localeCompare(b.text):a.value.localeCompare(b.value)});for(a=0;a<b.length;a++)try{c.options[a]=b[a]}catch(e){break}}c.onchange=function(){var a=d.la.descDisk,b=c.options[c.selectedIndex];if(a&&b){var g={};if(b=b.getAttribute("data-value"))try{g=eval("("+b+")")}catch(h){r("FDC option error: "+h.message)}b=g.desc;void 0===
b&&(b="");g=g.href;void 0!==g&&(b='<a href="'+g+'" target="_blank">'+b+"</a>");a.innerHTML=b}};return!0;case "descDisk":case "listDrives":return this.la[b]=c,c.onchange=function(){var a=ea(c.value,10);null!=a&&vm(d,a)},!0;case "loadDrive":return this.la[b]=c,c.onclick=function(){var a=d.la.listDisks;a&&wm(d,a.options[a.selectedIndex].text,a.value)},!0;case "saveDrive":if(!this.Y){c.parentNode.removeChild(c);break}this.la[b]=c;c.onclick=function(){var a=d.la.listDrives;a&&a.options&&d.B&&((a=d.B[ea(a.value,
10)||0])?(a=a.ta)?(a=Aa(rm(a),"octet-stream",!0,a.th.replace(".json",".img")),r(a)):d.Ba("No diskette loaded in drive."):d.Ba("No diskette drive selected."))};return!0;case "mountDrive":if(this.Y)return this.la[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;wm(d,ga(b,!0),b,a)}return!1},!0;c.parentNode.removeChild(c)}return!1};
@ -647,23 +648,23 @@ function an(a,b){if(a.errorCode)return-1;do{if(a.Wa&&a.ta.write(a.Wa,a.Ua++,b))b
var Qm={800:Z.prototype.wl,801:Z.prototype.xl,802:Z.prototype.vl},Pm={496:Z.prototype.Xj,497:Z.prototype.Dk,498:Z.prototype.Fk,499:Z.prototype.Gk,500:Z.prototype.Bk,501:Z.prototype.Ak,502:Z.prototype.Ck,503:Z.prototype.Hk},Sm={800:Z.prototype.Im,801:Z.prototype.Lm,802:Z.prototype.Km,803:Z.prototype.Jm,807:Z.prototype.nh,811:Z.prototype.nh,815:Z.prototype.nh},Rm={496:Z.prototype.Tl,497:Z.prototype.Yl,498:Z.prototype.Wl,499:Z.prototype.Xl,500:Z.prototype.Sl,501:Z.prototype.Rl,502:Z.prototype.Ul,503:Z.prototype.Ql,
1014:Z.prototype.Vl};Ga(function(){for(var a=bb(document,"pcx86","hdc"),b=0;b<a.length;b++){var c=a[b],d=Za(c),d=new Z(d);ab(d,c)}});
function nn(a,b,c){Ka.call(this,"Computer",a,nn);this.ea.Vb=!1;on(this,b);this.ba=nc(this,"autoPower",a);this.G=0;this.da=a.busWidth||a.buswidth;this.B=pn;this.R=null;this.K=this.Z=!1;this.ha=nc(this,"url")||"";this.ma=(Math.random()+.1).toString(36).substr(2,12);this.C=qn(this);if(this.A=Ya("CPU",this.id)){this.Ia=Ya("Debugger",this.id);this.I=[];for(b=null;b=mb(this,"Video",b);)this.I.push(b);this.ia=new ub({id:this.Fe+".bus",busWidth:this.da},this.A,this.Ia);var d,e=Wa(this.id);if((this.D=Ya("Panel",
this.id))&&this.D.ng)for(b=0;b<e.length;b++)d=e[b],d.Ba=this.D.Ba,d.rc=this.D.rc,d.ng=this.D.ng;this.rc("PCx86 v1.30.4\nCopyright \u00a9 2012-2016 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.pc&&d.pc(this,this.ia,this.A,this.Ia);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.S=d:this.B=parseInt(d,10));var f;if(a=nc(this,"state")||(f=!0,a.state))b=this.W=a,f||(this.K=!0,this.B=pn),this.B&&(this.P=new de(this,"1.30.4"),
this.id))&&this.D.ng)for(b=0;b<e.length;b++)d=e[b],d.Ba=this.D.Ba,d.rc=this.D.rc,d.ng=this.D.ng;this.rc("PCx86 v1.30.5\nCopyright \u00a9 2012-2016 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.pc&&d.pc(this,this.ia,this.A,this.Ia);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.S=d:this.B=parseInt(d,10));var f;if(a=nc(this,"state")||(f=!0,a.state))b=this.W=a,f||(this.K=!0,this.B=pn),this.B&&(this.P=new de(this,"1.30.5"),
this.P.load()?b=null:delete this.P);!b&&this.B&&(b=rn(this))&&(this.K=!0);if(b){var g=this;sa(b,null,!0,function(a,b,c){c?(g.S=null,g.K=!1,g.Ba("Unable to load machine state from server (error "+c+(b?": "+la(b):"")+")")):(g.R=b,g.Z=!0);t(g)})}else t(this);this.la.power||(this.ba=!0);!c&&this.ba&&sn(this,this.gf)}else r("Unable to find CPU component")}Ta(nn);var pn=0;l=nn.prototype;l.ue=function(){return this.ma};
function on(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.L=b}function nc(a,b,c){var d=b.toLowerCase(),d=Na[b]||Na[d];void 0===d&&a.L&&(d=a.L[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}l.yd=function(){return this.C||""};function sn(a,b,c){for(var d=Wa(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!db(f)){db(f,function(){sn(a,b,c)});return}}b.call(a,c)}
function tn(a,b){var c=new de(a,"1.30.4","validate");if(c.load()&&un(c)){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.Ba("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
l.gf=function(a){void 0===a&&(a=this.B||(this.R?1:pn));if(!this.G){this.G++;var b=!1,c=!1;this.Y=!1;var d=this.P||new de(this,"1.30.4");if(-1==a)b=!0;else if(a>pn){if(d.load(this.R)){this.H=new de(this,"1.30.4","failsafe");this.H.load()&&(vn(this,d),a=2,wn(this.H));this.H.set("timestamp",oa());xn(this.H);var e=this.B&&!this.K;if(1==a||ua("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=un(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==
function tn(a,b){var c=new de(a,"1.30.5","validate");if(c.load()&&un(c)){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.Ba("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
l.gf=function(a){void 0===a&&(a=this.B||(this.R?1:pn));if(!this.G){this.G++;var b=!1,c=!1;this.Y=!1;var d=this.P||new de(this,"1.30.5");if(-1==a)b=!0;else if(a>pn){if(d.load(this.R)){this.H=new de(this,"1.30.5","failsafe");this.H.load()&&(vn(this,d),a=2,wn(this.H));this.H.set("timestamp",oa());xn(this.H);var e=this.B&&!this.K;if(1==a||ua("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=un(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==
f&&"no machine state"!=g?(this.Ba("Error: "+g),"unable to verify user"==g&&(ya("user",""),this.C=null)):this.rc(f+": "+g),wn(d),d.load()?(c=un(d),e=!0):c=!1))}e&&tn(this,c?d:null)}else 2==a&&d.clear()}else tn(this);delete this.R;delete this.P}e=Wa(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.A&&(c=yn(this,g,d,b,c));b=[d,a,c];-1!=a?sn(this,this.pi,b):this.pi(b)}};
function yn(a,b,c,d,e){if(!b.ea.Vb){b.ea.Vb=!0;if(b.Ub){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Ub(f,d)&&f&&(r("Unable to restore state for "+b.type),a.W&&!a.Z?(c.clear(),a.B=pn,window&&window.location.reload()):a.Y=!0,b.Ub(null),e=!1)}if(!d&&b.Yh)for(a=b.Yh.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
l.pi=function(a){var b=a[0],c=0>a[1];a=a[2];this.ka=!0;this.ea.Vb=!0;var d=this.la.power;d&&(d.textContent="Shutdown");this.A&&(yn(this,this.A,b,c,a),this.A.Le());this.Y&&(vn(this,b),b.clear());!c&&this.H&&(this.H.clear(),delete this.H);this.G=0};
function vn(a,b){if(ua("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.yd();b=b.toString();var d={app:"PCx86",ver:"1.30.4"};d.url=a.ha;d.user=c;d.type="bug";d.data=b;sa("http://www.pcjs.org/api/v1/report",d,!0)}}
function zn(a,b,c){var d,e="none";if(a.G)return null;a.G--;var f=new de(a,"1.30.4"),g=new de(a,"1.30.4","validate"),h=oa();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.30.4");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.A&&a.A.Tb&&(c&&rc(a.A),d=a.A.Tb(b,c),"object"===typeof d&&f.set(a.A.id,d),c&&(a.A.ea.Vb=!1,!1===d&&(e=null)));for(var h=Wa(a.id),k=0;k<h.length;k++){var m=h[k];m.ea.Vb&&(m.Tb&&(d=m.Tb(b,c),"object"===typeof d&&
function vn(a,b){if(ua("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.yd();b=b.toString();var d={app:"PCx86",ver:"1.30.5"};d.url=a.ha;d.user=c;d.type="bug";d.data=b;sa("http://www.pcjs.org/api/v1/report",d,!0)}}
function zn(a,b,c){var d,e="none";if(a.G)return null;a.G--;var f=new de(a,"1.30.5"),g=new de(a,"1.30.5","validate"),h=oa();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.30.5");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.A&&a.A.Tb&&(c&&rc(a.A),d=a.A.Tb(b,c),"object"===typeof d&&f.set(a.A.id,d),c&&(a.A.ea.Vb=!1,!1===d&&(e=null)));for(var h=Wa(a.id),k=0;k<h.length;k++){var m=h[k];m.ea.Vb&&(m.Tb&&(d=m.Tb(b,c),"object"===typeof d&&
f.set(m.id,d)),c&&(m.ea.Vb=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.C&&An(a,a.C,f.toString()),xn(g)&&xn(f)||(e=null,d=h=!0)):a.B&&(d=!0,h=3==a.B),d&&f.clear(h)):e=f.toString());c&&(a.ea.Vb=!1,b=a.la.power)&&(b.textContent="Power");a.G=0;return e}l.reset=function(){this.ia&&this.ia.reset&&this.ia.reset();for(var a=Wa(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ia&&c.reset&&c.reset()}};
l.start=function(a,b){for(var c=Wa(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};l.stop=function(a,b){for(var c=Wa(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
l.zb=function(a,b,c){var d=this;switch(b){case "power":return this.la[b]=c,c.onclick=function(){d.G||(d.ea.Vb?zn(d,!1,!0):sn(d,d.gf))},!0;case "reset":return this.la[b]=c,c.onclick=function(){if(d.ea.Vb&&!d.G)if(d.B&&!d.S){var a=ua("Click OK to save changes to this PCx86 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");zn(d,a,!0);!a&&d.W?window&&window.location.reload():(a||(d.pg=!0),d.gf(pn),d.pg=!1)}else d.reset(),d.A&&d.A.Le()},!0;case "save":if(ia(ta(),"pcjs.org"))c.parentNode.removeChild(c);
else return this.la[b]=c,c.onclick=function(){var a=qn(d,!0);if(a){var b=!!(d.B&&!d.S||d.W),c=zn(d,b);b?An(d,a,c):d.Ba("Resume disabled, machine state not saved")}},!0}return!1};
function qn(a,b){var c=a.C;c||((c=xa("user"),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Bn(a,c))||a.Ba("The user ID is invalid.")):b&&a.Ba("Browser local storage is not available"));return c}
function Bn(a,b){a.C=null;b=sa(ta()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(ya("user",b.data),a.C=b.data)}catch(d){r(d.message+" ("+c+")")}return a.C}function rn(a){var b=null;a.C&&(b=ta()+"/api/v1/user?req=load&user="+a.C+"&state="+Cn(a,"1.30.4"));return b}
function An(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Cn(a,"1.30.4");d.data=c;b=sa(ta()+"/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.Ba("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.Ba(c),ya("user",""),a.C=null)}}
function Bn(a,b){a.C=null;b=sa(ta()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(ya("user",b.data),a.C=b.data)}catch(d){r(d.message+" ("+c+")")}return a.C}function rn(a){var b=null;a.C&&(b=ta()+"/api/v1/user?req=load&user="+a.C+"&state="+Cn(a,"1.30.5"));return b}
function An(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Cn(a,"1.30.5");d.data=c;b=sa(ta()+"/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.Ba("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.Ba(c),ya("user",""),a.C=null)}}
function mb(a,b,c){a=Wa(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 xc(a,b){if(a.I.length){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a=a.I[0];a.G&&a.G.focus();!b&&window&&window.scrollTo(c,d)}}l.Zd=function(a){this.A&&this.A.Zd(a);this.D&&this.D.Zd(a)};
function Ac(a,b){for(var c=0;c<a.I.length;c++)nl(a.I[c],b);if(a.D&&(a=a.D,a.ua)){rb(a,18,a.S,a.ra);if(a.Ga){b=a.ia;var c=a.B,d,e;null==d&&(d=0);null==e&&(e=b.L-d|0);c||(c={mg:0,fd:0,fg:[]});var f=d>>>b.da;d=d+e-1>>>b.da;c.mg=0;for(c.fd=0;f<=d;)e=b.R[f],c.mg+=e.size,e.size&&(c.fg.push(qa(qb,f,0,0,e.type)),c.fd++),f++;a.B=c;a.ma=a.B.fd*a.ia.xb/691200;d=0;a.B.ii=0;a.B.Ke||(a.B.Ke=[]);e=-1;b=0;for(var g=-1,c=0;c<a.B.fd;c++){var h=a.B.fg[c],f=ra(qb.type,h),h=ra(qb.Cj,h);if(f!=e||h!=g+1)(g=c-b)&&(d+=tb(a,
b,g,e)),e=f,b=c;g=h}d+=tb(a,b,c-b,e);e=a.B.fk!=d;a.B.fk=d;if(e){e=new kb(0,0,a.S.width,a.S.height);a.B.ee=[];b=a.B.fd;for(d=0;d<a.B.ii;d++)c=a.B.Ke[d].fd,a.B.ee.push(lb(e,c,b,!d)),b-=c;for(d=0;d<a.B.ee.length;d++)e=a.B.Ke[d],b=c=a.B.ee[d],f=a.ra,(g=ac[e.type])||(g=new jb),f.strokeStyle="black",f.strokeRect(b.x,b.y,b.Fc,b.A),f.fillStyle="string"==typeof g?g:g.toString(),f.fillRect(b.x,b.y,b.Fc,b.A),b=a,f=c,b.P=b.ha,b.L=b.ka,c=f.x+(f.Fc>>1),g=f.y+(f.A>>1),h=f.A,f.Fc<f.A&&(h=f.Fc,b.da=!0,b.G.save(),
@ -678,9 +679,9 @@ a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pcx86$2")
function Gn(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");sa(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,q=/( [a-z]+=)(['"])(.*?)\2/g;m=q.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],g);Gn(a,b,c)}})}else c(a,null)}
function Hn(a,b,c,d){function e(a){if(void 0===h){var b=g&&bb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ka(a))}function f(a){e("Error: "+a);k&&(--Dn||Ia(!0));k=!1}var g,h,k=!0;Dn++;Ua[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var q=document.head||document.getElementsByTagName("head")[0],y=document.createElement("style");y.type="text/css";y.styleSheet?y.styleSheet.cssText=m:y.appendChild(document.createTextNode(m));q.appendChild(y)}c||
(c="/versions/pcx86/1.30.4/components.xsl");m=function(d,h){h?En(c,null,null,!1,e,function(d,k){k?(Va(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--Dn||Ia(!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),--Dn||Ia(!0)):f("invalid machine element: "+
(c="/versions/pcx86/1.30.5/components.xsl");m=function(d,h){h?En(c,null,null,!1,e,function(d,k){k?(Va(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--Dn||Ia(!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),--Dn||Ia(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?En(b,a,d,!0,e,m):Fn(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(w){f(w.message)}return k}function In(a,b,c,d){Ia(!1);return Hn(a,b,c,d)}window.embedPC=In;window.embedPCx86=In;window.enableEvents=Ia;window.sendEvent=Ja;
function Jn(a,b,c,d){if(!c&&b){d.push(b);a=Ua[d[0]];b=null;for(var e in a)if(ia(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?sa(b,null,!0,function(a,b){Kn(b,d)}):Kn(null,d)}else r("Error ("+c+") requesting "+a)}
function Kn(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=Ua[f],k={},m;for(m in h){var q=h[m],y=ha(m);if("xml"==y){for(y=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=y.exec(h[m]);){var w=d[2];w&&(h[w]||(q=q.replace(d[0],"")))}d=m=ga(m)}else"xsl"==y&&(e=m=ga(m));k[m]=q}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(a=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),a=Aa(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('<div id="'+f+'"></div>\n')+"...\n",a=a+('<script type="text/javascript" src="'+g+'">\x3c/script>\n')+('<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n')+"The machine should appear where the <div> is located.",r(a)):r("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=Ya("Computer",a),e=Ya("Debugger",a);if(d){var f=zn(d,!0),g=d.L?JSON.stringify(d.L):null;b||(b="/versions/pcjs/1.30.4/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Gj:g}))return!0;sa(b,null,!0,function(c,d,e){Jn(c,d,e,[a,ga(b,!0),g,f])});return!0}r("Unable to identify machine '"+a+"'");return!1};})();
window.savePC=function(a,b,c){var d=Ya("Computer",a),e=Ya("Debugger",a);if(d){var f=zn(d,!0),g=d.L?JSON.stringify(d.L):null;b||(b="/versions/pcjs/1.30.5/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Gj:g}))return!0;sa(b,null,!0,function(c,d,e){Jn(c,d,e,[a,ga(b,!0),g,f])});return!0}r("Unable to identify machine '"+a+"'");return!1};})();