Ported some PCjs drawing code to PC8080, still needs work though

This commit is contained in:
Jeff Parsons 2016-05-02 09:01:06 -07:00
commit 59b6dd3be6
23 changed files with 781 additions and 499 deletions

View file

@ -9,7 +9,7 @@
<rom id="romF" addr="0x1000" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-F.json"/> <rom id="romF" addr="0x1000" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-F.json"/>
<rom id="romE" addr="0x1800" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-E.json"/> <rom id="romE" addr="0x1800" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-E.json"/>
<ram id="ram" addr="0x2000" size="0x0400"/> <ram id="ram" addr="0x2000" size="0x0400"/>
<video id="video" screenWidth="224" screenHeight="256" bufferAddr="0x2400" bufferCols="256" bufferRows="224" bufferBits="1" interruptRate="120" rotation="90" width="40%" pos="left" padding="8px"> <video id="video" screenWidth="896" screenHeight="1024" bufferAddr="0x2400" bufferCols="256" bufferRows="224" bufferBits="1" interruptRate="120" rotation="90" width="40%" pos="left" padding="8px">
<menu> <menu>
<title>224x256 Screen (Rotated)</title> <title>224x256 Screen (Rotated)</title>
</menu> </menu>

View file

@ -9,7 +9,9 @@ PCjs ChipSet Component
Format Format
--- ---
<chipset>...</chipset> ```xml
<chipset>...</chipset>
```
Purpose Purpose
--- ---
@ -103,15 +105,20 @@ Bindings
Example Example
--- ---
<chipset id="chipset" model="5150" sw1="01000001" sw2="11110000"/> ```xml
<chipset id="chipset" model="5150" sw1="01000001" sw2="11110000"/>
```
Output Output
--- ---
<div id="..." class="pc-chipset pc-component"> ```html
<div class="pc-container"> <div id="..." class="pc-chipset pc-component">
<div class="pcjs-chipset" data-value="id:'...',name:'...',model:'...',sw1:'...',sw2:'...'"></div> <div class="pc-container">
</div> <div class="pcjs-chipset" data-value="id:'...',name:'...',model:'...',sw1:'...',sw2:'...'">
</div> </div>
</div>
</div>
```
Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;, Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;,
with each control inside a &lt;div&gt; of class="pc-control". with each control inside a &lt;div&gt; of class="pc-control".

View file

@ -9,7 +9,9 @@ PCjs Component
Format Format
--- ---
<component>...</component> ```xml
<component>...</component>
```
Purpose Purpose
--- ---
@ -35,14 +37,20 @@ Attributes
Example Example
--- ---
<component id="ibm5150" class="pcjs" width="740px" pos="center" border="1">...</component> ```xml
<component id="ibm5150" class="pcjs" width="740px" pos="center" border="1">
...
</component>
```
Output Output
--- ---
<div id="..." class="pc-component"> ```html
<div class="pc-container"> <div id="..." class="pc-component">
... <div class="pc-container">
</div> ...
</div> </div>
</div>
```
[Return to [PCjs Documentation](..)] [Return to [PCjs Documentation](..)]

View file

@ -9,7 +9,9 @@ PCjs Computer Component
Format Format
--- ---
<computer>...</computer> ```xml
<computer>...</computer>
```
Purpose Purpose
--- ---
@ -51,16 +53,20 @@ Bindings
Example Example
--- ---
<computer id="pc" name="IBM PC"/> ```xml
<computer id="pc" name="IBM PC"/>
```
Output Output
--- ---
<div id="..." class="pc-computer pc-component" style=""> ```html
<div class="pc-container" style=""> <div id="..." class="pc-computer pc-component" style="">
<div class="pcjs-computer" data-value="id:'...',name:'...',resume:'...',state:'...'"> <div class="pc-container" style="">
</div> <div class="pcjs-computer" data-value="id:'...',name:'...',resume:'...',state:'...'">
</div> </div>
</div> </div>
</div>
```
Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;, Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;,
with each control inside a &lt;div&gt; of class="pc-control". with each control inside a &lt;div&gt; of class="pc-control".

View file

@ -9,7 +9,9 @@ PCjs CPU Component
Format Format
--- ---
<cpu>...</cpu> ```xml
<cpu>...</cpu>
```
Purpose Purpose
--- ---
@ -19,7 +21,7 @@ Attributes
--- ---
* *model* (optional; default is 8088; supported values include: 8086, 8088, 80186, 80286, and 80386) * *model* (optional; default is 8088; supported values include: 8086, 8088, 80186, 80286, and 80386)
* Defines the CPU model, adjusting the CPU's capabilities accordingly. * Defines the CPU model, adjusting the CPU's capabilities accordingly.
* *stepping* (optional; if specified, it must be a 2-character string, such as "A0" or "B1") * *stepping* (optional; if specified, it should be a 2-character string, such as "A0" or "B1")
* Defines the CPU stepping, adjusting the CPU's capabilities accordingly. * Defines the CPU stepping, adjusting the CPU's capabilities accordingly.
* Currently supported only on the 80386 model. * Currently supported only on the 80386 model.
* *cycles* (optional; default is 4772727) * *cycles* (optional; default is 4772727)
@ -44,26 +46,30 @@ Bindings
*[Computer](/docs/pcjs/computer/)* component, because every component is reset, but the CPU offers the binding *[Computer](/docs/pcjs/computer/)* component, because every component is reset, but the CPU offers the binding
for convenience. for convenience.
* *speed* * *speed*
* For use with any control with an *innerHTML* property, to display the current CPU speed. * For use with any control with an *textContent* property, to display the current CPU speed.
* *setSpeed* * *setSpeed*
* For use with a control of type *button*, to increase the CPU speed. * For use with a control of type *button*, to increase the CPU speed.
* *AX*, *BX*, *CX*, *DX*, *SP*, *BP*, *SI*, *DI*, *CS*, *DS*, *SS*, *ES*, *PC*, *PS*, *C*, *P*, *A*, *Z*, *S*, *T*, *I*, *D*, *O* * *AX*, *BX*, *CX*, *DX*, *SP*, *BP*, *SI*, *DI*, *CS*, *DS*, *SS*, *ES*, *PC*, *PS*, *C*, *P*, *A*, *Z*, *S*, *T*, *I*, *D*, *O*
* For use with any control with an *innerHTML* property, to display the corresponding register's contents. * For use with any control with an *textContent* property, to display the corresponding register's contents.
Example Example
--- ---
<cpu id="cpu8088" model="8088" autoStart="true"> ```xml
<control type="button" class="input" binding="run">Run</control> <cpu id="cpu8088" model="8088" autoStart="true">
</cpu> <control type="button" class="input" binding="run">Run</control>
</cpu>
```
Output Output
--- ---
<div id="..." class="pc-cpu pc-component" style=""> ```html
<div class="pc-container" style=""> <div id="..." class="pc-cpu pc-component" style="">
<div class="pcjs-cpu" data-value="id:'...',name:'...',model:'...',cycles:'...',multiplier:'...',autoStart:'...'"> <div class="pc-container" style="">
</div> <div class="pcjs-cpu" data-value="id:'...',name:'...',model:'...',cycles:'...',multiplier:'...',autoStart:'...'">
</div> </div>
</div> </div>
</div>
```
Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;, Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;,
with each control inside a &lt;div&gt; of class="pc-control". with each control inside a &lt;div&gt; of class="pc-control".

View file

@ -9,7 +9,9 @@ PCjs Debugger Component
Format Format
--- ---
<debugger>...</debugger> ```xml
<debugger>...</debugger>
```
Purpose Purpose
--- ---
@ -17,7 +19,7 @@ Creates an instance of the Debugger component.
Attributes Attributes
--- ---
* *message* (optional) * *messages* (optional)
* One or more message categories to enable, separated by |. By default, all message categories are disabled. * One or more message categories to enable, separated by |. By default, all message categories are disabled.
See the Debugger's "m" command for a current list of message categories. See the Debugger's "m" command for a current list of message categories.
@ -40,16 +42,20 @@ Use the Debugger's built-in help for a list of commands.
Example Example
--- ---
<debugger/> ```xml
<debugger/>
```
Output Output
--- ---
<div id="..." class="pc-debugger pc-component" style=""> ```html
<div class="pc-container" style=""> <div id="..." class="pc-debugger pc-component" style="">
<div class="pcjs-debugger" data-value="id:'...',name:'...',message:'...'"> <div class="pc-container" style="">
</div> <div class="pcjs-debugger" data-value="id:'...',name:'...',messages:'...'">
</div> </div>
</div> </div>
</div>
```
Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;, Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;,
with each control inside a &lt;div&gt; of class="pc-control". with each control inside a &lt;div&gt; of class="pc-control".

View file

@ -624,7 +624,7 @@ function Ip(a){a.xb++;a.xb>=a.Of+1&&(a.xb=1,a.kb++,a.kb>=a.Nf&&(a.kb=0,a.Qb++))}
function Kp(a){Ua.call(this,"HDC",a,Kp,1048576);this.dmaRead=this.yk;this.dmaWrite=this.zk;this.dmaWriteBuffer=this.Mk;this.dmaWriteFormat=this.Nk;this.ua=[];this.Fa=a.drives;this.ja="at"==a.type}db(Kp); function Kp(a){Ua.call(this,"HDC",a,Kp,1048576);this.dmaRead=this.yk;this.dmaWrite=this.zk;this.dmaWriteBuffer=this.Mk;this.dmaWriteFormat=this.Nk;this.ua=[];this.Fa=a.drives;this.ja="at"==a.type}db(Kp);
var Lp=["XTC","ATC","COMPAQ"],Mp=[{0:[306,2],1:[375,8],2:[306,6],3:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[940,8],5:[940,6],6:[615,4],7:[462,8],8:[733,5],9:[900,15],10:[820,3],11:[855,5],12:[855,7],13:[306,8],14:[733,7],16:[612,4],17:[977,5],18:[977,7],19:[1024,7],20:[733,5],21:[733,7],22:[733,5],23:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[1023,8],5:[940,6],6:[697,5],7:[462,8],8:[925,5],9:[900,15],10:[980,5],11:[925,7],12:[925,9],13:[612,8],14:[980,4],16:[612,4],17:[980,5],18:[966,6],19:[1023, var Lp=["XTC","ATC","COMPAQ"],Mp=[{0:[306,2],1:[375,8],2:[306,6],3:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[940,8],5:[940,6],6:[615,4],7:[462,8],8:[733,5],9:[900,15],10:[820,3],11:[855,5],12:[855,7],13:[306,8],14:[733,7],16:[612,4],17:[977,5],18:[977,7],19:[1024,7],20:[733,5],21:[733,7],22:[733,5],23:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[1023,8],5:[940,6],6:[697,5],7:[462,8],8:[925,5],9:[900,15],10:[980,5],11:[925,7],12:[925,9],13:[612,8],14:[980,4],16:[612,4],17:[980,5],18:[966,6],19:[1023,
8],20:[733,5],21:[733,7],22:[524,4,40],23:[924,8],24:[966,14],25:[966,16],26:[1023,14],27:[832,6,33],28:[1222,15,34],29:[1240,7,34],30:[615,4,25],31:[615,8,25],32:[905,9,25],33:[832,8,33],34:[966,7,34],35:[966,8,34],36:[966,9,34],37:[966,5,34],38:[612,16,63],39:[1023,11,33],40:[1023,15,34],41:[1630,15,52],42:[1023,16,63],43:[805,4,26],44:[805,2,26],45:[748,8,33],46:[748,6,33],47:[966,5,25]}];m=Kp.prototype; 8],20:[733,5],21:[733,7],22:[524,4,40],23:[924,8],24:[966,14],25:[966,16],26:[1023,14],27:[832,6,33],28:[1222,15,34],29:[1240,7,34],30:[615,4,25],31:[615,8,25],32:[905,9,25],33:[832,8,33],34:[966,7,34],35:[966,8,34],36:[966,9,34],37:[966,5,34],38:[612,16,63],39:[1023,11,33],40:[1023,15,34],41:[1630,15,52],42:[1023,16,63],43:[805,4,26],44:[805,2,26],45:[748,8,33],46:[748,6,33],47:[966,5,25]}];m=Kp.prototype;
m.Pb=function(a,b,c){var d=this;switch(b){case "saveHD0":case "saveHD1":return this.qa[b]=c,c.onclick=function(a){return function(){var b=d.A&&d.A[a];b&&b.za?(b=b.za,b=Ia(pp(b),"octet-stream",!0,b.Ng.replace(".json",".img")),w(b)):d.Na("Hard disk "+a+" is not available.")}}(+b.slice(-1)),!0}return!1}; m.Pb=function(a,b,c){var d=this;switch(b){case "saveHD0":case "saveHD1":return this.qa[b]=c,c.onclick=function(a){return function(){var b=d.A&&d.A[a];b&&b.za?(b=b.za,b=Ia(pp(b),"octet-stream",!0,b.Ng.replace(".json",".img")),w(b)):d.Na("Hard drive "+a+" is not available.")}}(+b.slice(-1)),!0}return!1};
m.Ic=function(a,b,c,d){this.ea=b;this.F=c;this.ha=d;this.V=a;if(d=Nc(a,"drives"))this.ua=d;else if(this.Fa)try{this.ua=eval("("+this.Fa+")")}catch(e){w("HDC drive configuration error: "+e.message+" ("+this.Fa+")")}this.N=Eb(a,"ChipSet");this.U=0;this.Ia=3;hc(b,this,this.ja?Np:Op);lc(b,this,this.ja?Pp:Qp);this.ja&&(this.U++,this.N&&5180==this.N.ia&&this.U++,this.Ia=2,b.aa[496]=2,b.fa[496]=2);Te(c,19,this.Zl.bind(this));Te(c,64,this.$l.bind(this));this.reset();Rp(this)||rb(this)}; m.Ic=function(a,b,c,d){this.ea=b;this.F=c;this.ha=d;this.V=a;if(d=Nc(a,"drives"))this.ua=d;else if(this.Fa)try{this.ua=eval("("+this.Fa+")")}catch(e){w("HDC drive configuration error: "+e.message+" ("+this.Fa+")")}this.N=Eb(a,"ChipSet");this.U=0;this.Ia=3;hc(b,this,this.ja?Np:Op);lc(b,this,this.ja?Pp:Qp);this.ja&&(this.U++,this.N&&5180==this.N.ia&&this.U++,this.Ia=2,b.aa[496]=2,b.fa[496]=2);Te(c,19,this.Zl.bind(this));Te(c,64,this.$l.bind(this));this.reset();Rp(this)||rb(this)};
m.ic=function(a,b){if(!b)if(!a||!this.restore)Sp(this),this.V.dh&&Rp(this,!0);else if(!this.restore(a))return!1;return!0};m.hc=function(a){return a?this.save():!0};m.ff=function(){return this.V?this.V.ff():""};m.ke=function(){return this.V?this.V.ke():""};m.reset=function(){Sp(this,null,!0)}; m.ic=function(a,b){if(!b)if(!a||!this.restore)Sp(this),this.V.dh&&Rp(this,!0);else if(!this.restore(a))return!1;return!0};m.hc=function(a){return a?this.save():!0};m.ff=function(){return this.V?this.V.ff():""};m.ke=function(){return this.V?this.V.ke():""};m.reset=function(){Sp(this,null,!0)};
m.save=function(){var a=new hf(this),b=0,c=[];this.ja?(c[b++]=this.X,c[b++]=this.Pa,c[b++]=this.aa,c[b++]=this.Ca,c[b++]=this.ya,c[b++]=this.wa,c[b++]=this.ra,c[b++]=this.ma,c[b++]=this.Ea,c[b++]=[this.ga,this.hb]):(c[b++]=this.pa,c[b++]=this.ma,c[b++]=this.W,c[b++]=this.L,c[b++]=this.C,c[b++]=this.Oa,c[b++]=this.Ka,c[b++]=this.Ja,c[b++]=this.ka);for(var d=0,e=[],f=0;f<this.A.length;f++){var g=d++,h=this.A[f],k=0,l=[];l[k++]=h.errorCode;l[k++]=h.mk;l[k++]=h.bf;l[k++]=h.Qe;l[k++]=h.Re;l[k++]=h.kb; m.save=function(){var a=new hf(this),b=0,c=[];this.ja?(c[b++]=this.X,c[b++]=this.Pa,c[b++]=this.aa,c[b++]=this.Ca,c[b++]=this.ya,c[b++]=this.wa,c[b++]=this.ra,c[b++]=this.ma,c[b++]=this.Ea,c[b++]=[this.ga,this.hb]):(c[b++]=this.pa,c[b++]=this.ma,c[b++]=this.W,c[b++]=this.L,c[b++]=this.C,c[b++]=this.Oa,c[b++]=this.Ka,c[b++]=this.Ja,c[b++]=this.ka);for(var d=0,e=[],f=0;f<this.A.length;f++){var g=d++,h=this.A[f],k=0,l=[];l[k++]=h.errorCode;l[k++]=h.mk;l[k++]=h.bf;l[k++]=h.Qe;l[k++]=h.Re;l[k++]=h.kb;

View file

@ -570,7 +570,7 @@ function Im(a){a.mb++;a.mb>=a.Ve+1&&(a.mb=1,a.Ya++,a.Ya>=a.Ue&&(a.Ya=0,a.wb++))}
function Z(a){Ia.call(this,"HDC",a,Z);this.dmaRead=this.sj;this.dmaWrite=this.tj;this.dmaWriteBuffer=this.Dj;this.dmaWriteFormat=this.Ej;this.ia=[];this.qa=a.drives;this.W="at"==a.type}Qa(Z); function Z(a){Ia.call(this,"HDC",a,Z);this.dmaRead=this.sj;this.dmaWrite=this.tj;this.dmaWriteBuffer=this.Dj;this.dmaWriteFormat=this.Ej;this.ia=[];this.qa=a.drives;this.W="at"==a.type}Qa(Z);
var Km=["XTC","ATC","COMPAQ"],Lm=[{0:[306,2],1:[375,8],2:[306,6],3:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[940,8],5:[940,6],6:[615,4],7:[462,8],8:[733,5],9:[900,15],10:[820,3],11:[855,5],12:[855,7],13:[306,8],14:[733,7],16:[612,4],17:[977,5],18:[977,7],19:[1024,7],20:[733,5],21:[733,7],22:[733,5],23:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[1023,8],5:[940,6],6:[697,5],7:[462,8],8:[925,5],9:[900,15],10:[980,5],11:[925,7],12:[925,9],13:[612,8],14:[980,4],16:[612,4],17:[980,5],18:[966,6],19:[1023, var Km=["XTC","ATC","COMPAQ"],Lm=[{0:[306,2],1:[375,8],2:[306,6],3:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[940,8],5:[940,6],6:[615,4],7:[462,8],8:[733,5],9:[900,15],10:[820,3],11:[855,5],12:[855,7],13:[306,8],14:[733,7],16:[612,4],17:[977,5],18:[977,7],19:[1024,7],20:[733,5],21:[733,7],22:[733,5],23:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[1023,8],5:[940,6],6:[697,5],7:[462,8],8:[925,5],9:[900,15],10:[980,5],11:[925,7],12:[925,9],13:[612,8],14:[980,4],16:[612,4],17:[980,5],18:[966,6],19:[1023,
8],20:[733,5],21:[733,7],22:[524,4,40],23:[924,8],24:[966,14],25:[966,16],26:[1023,14],27:[832,6,33],28:[1222,15,34],29:[1240,7,34],30:[615,4,25],31:[615,8,25],32:[905,9,25],33:[832,8,33],34:[966,7,34],35:[966,8,34],36:[966,9,34],37:[966,5,34],38:[612,16,63],39:[1023,11,33],40:[1023,15,34],41:[1630,15,52],42:[1023,16,63],43:[805,4,26],44:[805,2,26],45:[748,8,33],46:[748,6,33],47:[966,5,25]}];l=Z.prototype; 8],20:[733,5],21:[733,7],22:[524,4,40],23:[924,8],24:[966,14],25:[966,16],26:[1023,14],27:[832,6,33],28:[1222,15,34],29:[1240,7,34],30:[615,4,25],31:[615,8,25],32:[905,9,25],33:[832,8,33],34:[966,7,34],35:[966,8,34],36:[966,9,34],37:[966,5,34],38:[612,16,63],39:[1023,11,33],40:[1023,15,34],41:[1630,15,52],42:[1023,16,63],43:[805,4,26],44:[805,2,26],45:[748,8,33],46:[748,6,33],47:[966,5,25]}];l=Z.prototype;
l.zb=function(a,b,c){var d=this;switch(b){case "saveHD0":case "saveHD1":return this.ka[b]=c,c.onclick=function(a){return function(){var b=d.B&&d.B[a];b&&b.ta?(b=b.ta,b=za(pm(b),"octet-stream",!0,b.nh.replace(".json",".img")),n(b)):d.Ba("Hard disk "+a+" is not available.")}}(+b.slice(-1)),!0}return!1}; l.zb=function(a,b,c){var d=this;switch(b){case "saveHD0":case "saveHD1":return this.ka[b]=c,c.onclick=function(a){return function(){var b=d.B&&d.B[a];b&&b.ta?(b=b.ta,b=za(pm(b),"octet-stream",!0,b.nh.replace(".json",".img")),n(b)):d.Ba("Hard drive "+a+" is not available.")}}(+b.slice(-1)),!0}return!1};
l.pc=function(a,b,c,d){this.ha=b;this.A=c;this.Ia=d;this.ba=a;if(d=jc(a,"drives"))this.ia=d;else if(this.qa)try{this.ia=eval("("+this.qa+")")}catch(e){n("HDC drive configuration error: "+e.message+" ("+this.qa+")")}this.P=kb(a,"ChipSet");this.H=0;this.ra=3;Nb(b,this,this.W?Mm:Nm);Pb(b,this,this.W?Om:Pm);this.W&&(this.H++,this.P&&5180==this.P.ca&&this.H++,this.ra=2,b.P[496]=2,b.R[496]=2);Yd(c,19,this.Rk.bind(this));Yd(c,64,this.Sk.bind(this));this.reset();Qm(this)||ab(this)}; l.pc=function(a,b,c,d){this.ha=b;this.A=c;this.Ia=d;this.ba=a;if(d=jc(a,"drives"))this.ia=d;else if(this.qa)try{this.ia=eval("("+this.qa+")")}catch(e){n("HDC drive configuration error: "+e.message+" ("+this.qa+")")}this.P=kb(a,"ChipSet");this.H=0;this.ra=3;Nb(b,this,this.W?Mm:Nm);Pb(b,this,this.W?Om:Pm);this.W&&(this.H++,this.P&&5180==this.P.ca&&this.H++,this.ra=2,b.P[496]=2,b.R[496]=2);Yd(c,19,this.Rk.bind(this));Yd(c,64,this.Sk.bind(this));this.reset();Qm(this)||ab(this)};
l.Vb=function(a,b){if(!b)if(!a||!this.restore)Rm(this),this.ba.jg&&Qm(this,!0);else if(!this.restore(a))return!1;return!0};l.Ub=function(a){return a?this.save():!0};l.se=function(){return this.ba?this.ba.se():""};l.Ad=function(){return this.ba?this.ba.Ad():""};l.reset=function(){Rm(this,null,!0)}; l.Vb=function(a,b){if(!b)if(!a||!this.restore)Rm(this),this.ba.jg&&Qm(this,!0);else if(!this.restore(a))return!1;return!0};l.Ub=function(a){return a?this.save():!0};l.se=function(){return this.ba?this.ba.se():""};l.Ad=function(){return this.ba?this.ba.Ad():""};l.reset=function(){Rm(this,null,!0)};
l.save=function(){var a=new be(this),b=0,c=[];this.W?(c[b++]=this.K,c[b++]=this.za,c[b++]=this.L,c[b++]=this.oa,c[b++]=this.ma,c[b++]=this.la,c[b++]=this.Z,c[b++]=this.aa,c[b++]=this.pa,c[b++]=[this.R,this.Qa]):(c[b++]=this.da,c[b++]=this.aa,c[b++]=this.I,c[b++]=this.G,c[b++]=this.D,c[b++]=this.xa,c[b++]=this.va,c[b++]=this.ua,c[b++]=this.Y);for(var d=0,e=[],f=0;f<this.B.length;f++){var g=d++,h=this.B[f],k=0,m=[];m[k++]=h.errorCode;m[k++]=h.jj;m[k++]=h.oe;m[k++]=h.de;m[k++]=h.ee;m[k++]=h.Ya;m[k++]= l.save=function(){var a=new be(this),b=0,c=[];this.W?(c[b++]=this.K,c[b++]=this.za,c[b++]=this.L,c[b++]=this.oa,c[b++]=this.ma,c[b++]=this.la,c[b++]=this.Z,c[b++]=this.aa,c[b++]=this.pa,c[b++]=[this.R,this.Qa]):(c[b++]=this.da,c[b++]=this.aa,c[b++]=this.I,c[b++]=this.G,c[b++]=this.D,c[b++]=this.xa,c[b++]=this.va,c[b++]=this.ua,c[b++]=this.Y);for(var d=0,e=[],f=0;f<this.B.length;f++){var g=d++,h=this.B[f],k=0,m=[];m[k++]=h.errorCode;m[k++]=h.jj;m[k++]=h.oe;m[k++]=h.de;m[k++]=h.ee;m[k++]=h.Ya;m[k++]=

View file

@ -9,7 +9,9 @@ PCjs Floppy Drive Controller (FDC) Component
Format Format
--- ---
<fdc>...</fdc> ```xml
<fdc>...</fdc>
```
Purpose Purpose
--- ---
@ -53,24 +55,28 @@ Bindings
Example Example
--- ---
<fdc id="fdcNEC" autoMount="'{A: {name: "PC-DOS 1.0", path: "pcdos-1.00.json"}}'"> ```xml
<control type="container"> <fdc id="fdcNEC" autoMount="'{A: {name: "PC-DOS 1.0", path: "pcdos-1.00.json"}}'">
<control type="list" class="input" binding="listDrives"/> <control type="container">
<control type="list" class="input" binding="listDisks"> <control type="list" class="input" binding="listDrives"/>
<disk path="">None</disk> <control type="list" class="input" binding="listDisks">
<disk path="pcdos-1.00.json">PC-DOS 1.0</disk> <disk path="pcdos-1.00.json">PC-DOS 1.0</disk>
</control> </control>
<control type="button" class="input" binding="loadDrive">Load Drive</control> <control type="button" class="input" binding="loadDrive">Load Drive</control>
</control> </control>
</fdc> </fdc>
```
Output Output
--- ---
<div id="..." class="pc-fdc pc-component"> ```html
<div class="pc-container"> <div id="..." class="pc-fdc pc-component">
<div class="pcjs-fdc" data-value="id:'...',name:'...',listDrives:'...',listDisks:'...',loadDrive:'...'"></div> <div class="pc-container">
</div> <div class="pcjs-fdc" data-value="id:'...',name:'...',listDrives:'...',listDisks:'...',loadDrive:'...'">
</div> </div>
</div>
</div>
```
Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;, Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;,
with each control inside a &lt;div&gt; of class="pc-control". with each control inside a &lt;div&gt; of class="pc-control".

View file

@ -9,7 +9,9 @@ PCjs Hard Drive Controller (HDC) Component
Format Format
--- ---
<hdc>...</hdc> ```xml
<hdc>...</hdc>
```
Purpose Purpose
--- ---
@ -46,11 +48,15 @@ Attributes
For the Xebec (*'xt'*) controller, you should install the Xebec ROM; eg: For the Xebec (*'xt'*) controller, you should install the Xebec ROM; eg:
```xml
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pc/hdc/ibm-xebec-1982.json"/> <rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pc/hdc/ibm-xebec-1982.json"/>
```
For the Western Digital (*'at'*) controller, use a Model 5170 (or newer) ROM module; eg: For the Western Digital (*'at'*) controller, use a Model 5170 (or newer) ROM module; eg:
```xml
<rom id="romBIOS" addr="0xf0000" size="0x10000" alias="0xff0000" file="/devices/pc/rom/5170/1984-01-10/1984-01-10.json"/> <rom id="romBIOS" addr="0xf0000" size="0x10000" alias="0xff0000" file="/devices/pc/rom/5170/1984-01-10/1984-01-10.json"/>
```
The default *type* setting is *'xt'*. The default *type* setting is *'xt'*.
@ -62,15 +68,20 @@ This component has no bindings. Fixed disks cannot be loaded or unloaded once th
Example Example
--- ---
<hdc id="hdcXT" drives="[{name:'10Mb Hard Drive',type:3}]"/> ```xml
<hdc id="hdcXT" drives="[{name:'10Mb Hard Drive',type:3}]"/>
```
Output Output
--- ---
<div id="..." class="pc-hdc pc-component"> ```html
<div class="pc-container"> <div id="..." class="pc-hdc pc-component">
<div class="pcjs-hdc" data-value="id:'...',name:'...',drives:'...'"></div> <div class="pc-container">
</div> <div class="pcjs-hdc" data-value="id:'...',name:'...',drives:'...'">
</div> </div>
</div>
</div>
```
Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;, Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;,
with each control inside a &lt;div&gt; of class="pc-control". with each control inside a &lt;div&gt; of class="pc-control".

View file

@ -9,7 +9,9 @@ PCjs Keyboard Component
Format Format
--- ---
<keyboard>...</keyboard> ```xml
<keyboard>...</keyboard>
```
Purpose Purpose
--- ---
@ -41,18 +43,23 @@ for the specified model.
Example Example
--- ---
<keyboard id="keyboard" model="us83"/> ```xml
<keyboard id="keyboard" model="us83"/>
```
See [/devices/pc/keyboard/us83-softkeys.xml](/devices/pc/keyboard/us83-softkeys.xml) for an example that provides a See [/devices/pc/keyboard/us83-softkeys.xml](/devices/pc/keyboard/us83-softkeys.xml) for an example that provides a
complete "soft keyboard". complete "soft keyboard".
Output Output
--- ---
<div id="..." class="pc-keyboard pc-component"> ```html
<div class="pc-container"> <div id="..." class="pc-keyboard pc-component">
<div class="pcjs-keyboard" data-value="id:'...',name:'...',model:'...',sw1:'...',sw2:'...'"></div> <div class="pc-container">
</div> <div class="pcjs-keyboard" data-value="id:'...',name:'...',model:'...',sw1:'...',sw2:'...'">
</div> </div>
</div>
</div>
```
Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;, Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;,
with each control inside a &lt;div&gt; of class="pc-control". with each control inside a &lt;div&gt; of class="pc-control".

View file

@ -9,7 +9,9 @@ PCjs Machine Component
Format Format
--- ---
<machine>...</machine> ```xml
<machine>...</machine>
```
Purpose Purpose
--- ---
@ -32,14 +34,18 @@ None.
Example Example
--- ---
<machine id="ibm5150" class="pcjs" width="740px" pos="center" border="1" style="background-color:#FAEBD7">...</machine> ```xml
<machine id="ibm5150" class="pcjs" width="740px" pos="center" border="1" style="background-color:#FAEBD7">...</machine>
```
Output Output
--- ---
<div id="..." class="pc-machine pc-component" style=""> ```html
<div class="pc-container" style=""> <div id="..." class="pc-machine pc-component" style="">
... <div class="pc-container" style="">
</div> ...
</div> </div>
</div>
```
[Return to [PCjs Documentation](..)] [Return to [PCjs Documentation](..)]

View file

@ -9,7 +9,9 @@ PCjs Mouse Component
Format Format
--- ---
<mouse>...</mouse> ```xml
<mouse>...</mouse>
```
Purpose Purpose
--- ---
@ -30,14 +32,19 @@ None.
Example Example
--- ---
<mouse serial="com1"/> ```xml
<mouse serial="com1"/>
```
Output Output
--- ---
<div id="..." class="pc-mouse pc-component"> ```html
<div class="pc-container"> <div id="..." class="pc-mouse pc-component">
<div class="pcjs-mouse" data-value="id:'...',name:'...',serial:'...'></div> <div class="pc-container">
</div> <div class="pcjs-mouse" data-value="id:'...',name:'...',serial:'...'>
</div> </div>
</div>
</div>
```
[Return to [PCjs Documentation](..)] [Return to [PCjs Documentation](..)]

View file

@ -9,7 +9,9 @@ PCjs Control Panel Component
Format Format
--- ---
<panel>...</panel> ```xml
<panel>...</panel>
```
Purpose Purpose
--- ---
@ -28,27 +30,32 @@ and [Debugger](/docs/pcjs/debugger/) components.
Example Example
--- ---
<panel id="panel" pos="center" width="900px" padleft="8px"> ```xml
<name>Control Panel</name> <panel id="panel" pos="center" width="900px" padleft="8px">
<control type="container" width="500px" pos="left" padbottom="10px"> <name>Control Panel</name>
<control type="textarea" class="output" binding="print" width="480px" height="200px"/> <control type="container" width="500px" pos="left" padbottom="10px">
<control type="container"> <control type="textarea" class="output" binding="print" width="480px" height="200px"/>
<control type="text" class="input" binding="debugInput" width="360px"/> <control type="container">
<control type="button" class="input" binding="debugEnter">Enter</control> control type="text" class="input" binding="debugInput" width="360px"/>
<control type="button" class="input" binding="clear">Clear</control> <control type="button" class="input" binding="debugEnter">Enter</control>
</control> <control type="button" class="input" binding="clear">Clear</control>
</control> </control>
</panel> </control>
</panel>
```
See [/devices/pc/panel/default.xml](/devices/pc/panel/default.xml) for a more complete example. See [/devices/pc/panel/default.xml](/devices/pc/panel/default.xml) for a more complete example.
Output Output
--- ---
<div id="..." class="pc-panel pc-component"> ```html
<div class="pc-container"> <div id="..." class="pc-panel pc-component">
<div class="pcjs-panel" data-value="id:'...',name:'...'"></div> <div class="pc-container">
</div> <div class="pcjs-panel" data-value="id:'...',name:'...'">
</div> </div>
</div>
</div>
```
Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;, Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;,
with each control inside a &lt;div&gt; of class="pc-control". with each control inside a &lt;div&gt; of class="pc-control".

View file

@ -9,7 +9,9 @@ PCjs ParallelPort Component
Format Format
--- ---
<parallel>...</parallel> ```xml
<parallel>...</parallel>
```
Purpose Purpose
--- ---
@ -39,14 +41,19 @@ Bindings
Example Example
--- ---
<parallel id="lpt1" adapter="2" binding="print"/> ```xml
<parallel id="lpt1" adapter="2" binding="print"/>
```
Output Output
--- ---
<div id="..." class="pc-parallel pc-component"> ```html
<div class="pc-container"> <div id="..." class="pc-parallel pc-component">
<div class="pcjs-parallel" data-value="id:'...',name:'...',adapter:'...',binding:'...'"></div> <div class="pc-container">
</div> <div class="pcjs-parallel" data-value="id:'...',name:'...',adapter:'...',binding:'...'">
</div> </div>
</div>
</div>
```
[Return to [PCjs Documentation](..)] [Return to [PCjs Documentation](..)]

View file

@ -9,7 +9,9 @@ PCjs Random-Access Memory (RAM) Component
Format Format
--- ---
<ram>...</ram> ```xml
<ram>...</ram>
```
Purpose Purpose
--- ---
@ -43,15 +45,20 @@ Bindings
Example Example
--- ---
<ram id="ramLow" addr="0x00000"/> ```xml
<ram id="ramLow" addr="0x00000"/>
```
Output Output
--- ---
<div id="..." class="pc-ram pc-component"> ```html
<div class="pc-container"> <div id="..." class="pc-ram pc-component">
<div class="pcjs-ram" data-value="id:'...',name:'...',addr:'...',size:'...',test:'...'"></div> <div class="pc-container">
</div> <div class="pcjs-ram" data-value="id:'...',name:'...',addr:'...',size:'...',test:'...'">
</div> </div>
</div>
</div>
```
Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;, Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;,
with each control inside a &lt;div&gt; of class="pc-control". with each control inside a &lt;div&gt; of class="pc-control".

View file

@ -9,7 +9,9 @@ PCjs Read-Only Memory (ROM) Component
Format Format
--- ---
<rom>...</rom> ```xml
<rom>...</rom>
```
Purpose Purpose
--- ---
@ -43,14 +45,19 @@ None.
Example Example
--- ---
<rom id="romBIOS" addr="0xfe000" size="0x02000" file="/devices/pc/rom/5150/bios/1981-04-24.json"/> ```xml
<rom id="romBIOS" addr="0xfe000" size="0x02000" file="/devices/pc/rom/5150/bios/1981-04-24.json"/>
```
Output Output
--- ---
<div id="..." class="pc-rom pc-component"> ```html
<div class="pc-container"> <div id="..." class="pc-rom pc-component">
<div class="pcjs-rom" data-value="id:'...',name:'...',addr:'...',size:'...',test:'...'"></div> <div class="pc-container">
</div> <div class="pcjs-rom" data-value="id:'...',name:'...',addr:'...',size:'...',test:'...'">
</div> </div>
</div>
</div>
```
[Return to [PCjs Documentation](..)] [Return to [PCjs Documentation](..)]

View file

@ -9,7 +9,9 @@ PCjs SerialPort Component
Format Format
--- ---
<serial>...</serial> ```xml
<serial>...</serial>
```
Purpose Purpose
--- ---
@ -39,14 +41,19 @@ Bindings
Example Example
--- ---
<serial id="com1" adapter="1" binding="print"/> ```xml
<serial id="com1" adapter="1" binding="print"/>
```
Output Output
--- ---
<div id="..." class="pc-serial pc-component"> ```html
<div class="pc-container"> <div id="..." class="pc-serial pc-component">
<div class="pcjs-serial" data-value="id:'...',name:'...',adapter:'...',binding:'...'"></div> <div class="pc-container">
</div> <div class="pcjs-serial" data-value="id:'...',name:'...',adapter:'...',binding:'...'">
</div> </div>
</div>
</div>
```
[Return to [PCjs Documentation](..)] [Return to [PCjs Documentation](..)]

View file

@ -9,7 +9,9 @@ PCjs Video Component
Format Format
--- ---
<video>...</video> ```xml
<video>...</video>
```
Purpose Purpose
--- ---
@ -22,24 +24,6 @@ Creates an instance of the Video component. This component is responsible for:
Attributes Attributes
--- ---
* *addr* (required)
The ROM starting address (e.g., 0xfe000).
* *size* (required)
The length of ROM, in bytes (e.g., 0x02000 for an 8Kb ROM). This must match the length of the ROM image file.
* *file* (required)
URL of the ROM image file to load at the specified addr.
* *notify* (optional)
The *id* of a component to notify when *file* has been loaded. For example, the Video component may need
to know when an external video ROM has been loaded. Any component can load its own files, including ROM image files,
but it's simpler to use the ROM component and request notification.
* *model* (optional) * *model* (optional)
* "mda" (Monochrome Display Adapter) * "mda" (Monochrome Display Adapter)
@ -49,17 +33,13 @@ Attributes
If *model* is not set, the SW1 switch block settings from the [ChipSet](/docs/pcjs/chipset/) component will If *model* is not set, the SW1 switch block settings from the [ChipSet](/docs/pcjs/chipset/) component will
determine the video model to use ("mda" or "cga" only). determine the video model to use ("mda" or "cga" only).
* *scale* (optional; default is false) * *screenWidth*, *screenHeight* (required)
true scales text modes to fill the canvas;
false centers text modes on the canvas (this generally provides the sharpest rendering).
* *screenwidth*, *screenheight* (required)
The width and height of the canvas, in pixels (these are numbers, not style attributes, so do not include The width and height of the canvas, in pixels (these are numbers, not style attributes, so do not include
a "px" suffix). a "px" suffix); the canvas resolution does not need to match the *model* resolution (in fact, it should probably
be closer to the resolution of modern monitors, but still proportional to the resolution of the *model* being used).
* *fontrom* (formerly *charset*; required for models "mda" and "cga") * *fontROM* (formerly *charset*; required for models "mda" and "cga")
The name of a character generator (font ROM) file. The MDA and CGA adapters did not contain a separate The name of a character generator (font ROM) file. The MDA and CGA adapters did not contain a separate
system ROM, but they did contain on-board font data in ROM that the adapter used internally to generate character system ROM, but they did contain on-board font data in ROM that the adapter used internally to generate character
@ -68,6 +48,11 @@ Attributes
The EGA uses font data stored in its system ROM, which is loaded by the ROM component, so do not use this The EGA uses font data stored in its system ROM, which is loaded by the ROM component, so do not use this
setting with model "ega". setting with model "ega".
* *scale* (optional; default is false)
true scales text modes to fill the canvas;
false centers text modes on the canvas (this generally provides the sharpest rendering).
Also supports the attributes of *[Component](/docs/pcjs/component/)*. Also supports the attributes of *[Component](/docs/pcjs/component/)*.
Bindings Bindings
@ -79,17 +64,22 @@ Bindings
Example Example
--- ---
<video id="videoMDA" screenwidth="720" screenheight="350" scale="true" fontrom="ibm-mda-cga.json"> ```xml
<name>Monochrome Display</name> <video id="videoMDA" screenWidth="720" screenHeight="350" fontROM="ibm-mda-cga.json" scale="true">
</video> <name>Monochrome Display</name>
</video>
```
Output Output
--- ---
<div id="..." class="pc-video pc-component"> ```html
<div class="pc-container"> <div id="..." class="pc-video pc-component">
<div class="pcjs-video" data-value="id:'...',name:'...',addr:'...',size:'...',test:'...'"></div> <div class="pc-container">
</div> <div class="pcjs-video" data-value="...">
</div> </div>
</div>
</div>
```
Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;, Also, if any controls are defined, another &lt;div&gt; of class="pc-controls" is created in the container &lt;div&gt;,
with each control inside a &lt;div&gt; of class="pc-control". with each control inside a &lt;div&gt; of class="pc-control".

View file

@ -1091,11 +1091,11 @@ CPUSim.prototype.updateStatus = function(fForce)
this.updateReg("PC", this.getPC(), 4); this.updateReg("PC", this.getPC(), 4);
var regPS = this.getPS(); var regPS = this.getPS();
this.updateReg("PS", regPS, 4); this.updateReg("PS", regPS, 4);
this.updateReg("SF", (regPS & CPUDef.PS.SF), 1); this.updateReg("SF", (regPS & CPUDef.PS.SF)? 1 : 0, 1);
this.updateReg("ZF", (regPS & CPUDef.PS.ZF), 1); this.updateReg("ZF", (regPS & CPUDef.PS.ZF)? 1 : 0, 1);
this.updateReg("AF", (regPS & CPUDef.PS.AF), 1); this.updateReg("AF", (regPS & CPUDef.PS.AF)? 1 : 0, 1);
this.updateReg("PF", (regPS & CPUDef.PS.PF), 1); this.updateReg("PF", (regPS & CPUDef.PS.PF)? 1 : 0, 1);
this.updateReg("CF", (regPS & CPUDef.PS.CF), 1); this.updateReg("CF", (regPS & CPUDef.PS.CF)? 1 : 0, 1);
} }
} }
var controlSpeed = this.bindings["speed"]; var controlSpeed = this.bindings["speed"];

View file

@ -55,7 +55,7 @@ if (NODE) {
* bufferAddr: the starting address of the frame buffer (eg, 0x2400) * bufferAddr: the starting address of the frame buffer (eg, 0x2400)
* bufferCols: the width of a single frame buffer row, in pixels (eg, 256) * bufferCols: the width of a single frame buffer row, in pixels (eg, 256)
* bufferRows: the number of frame buffer rows (eg, 224) * bufferRows: the number of frame buffer rows (eg, 224)
* bufferBits: the number of bits per pixel (eg, 1) * bufferBits: the number of bits per pixel (default is 1 if omitted)
* interruptRate: normally the same as (or some multiple of) the refreshRate (eg, 120) * interruptRate: normally the same as (or some multiple of) the refreshRate (eg, 120)
* refreshRate: how many times updateScreen() should be called per second (eg, 60) * refreshRate: how many times updateScreen() should be called per second (eg, 60)
* *
@ -75,9 +75,35 @@ if (NODE) {
function Video(parmsVideo, canvas, context, textarea, container) function Video(parmsVideo, canvas, context, textarea, container)
{ {
Component.call(this, "Video", parmsVideo, Video, Messages.VIDEO); Component.call(this, "Video", parmsVideo, Video, Messages.VIDEO);
this.cxScreen = parmsVideo['screenWidth'];
this.cyScreen = parmsVideo['screenHeight'];
this.addrBuffer = parmsVideo['bufferAddr'];
this.cxBuffer = parmsVideo['bufferCols'];
this.cyBuffer = parmsVideo['bufferRows'];
this.nBitsPerPixel = parmsVideo['bufferBits'] || 1;
this.interruptRate = parmsVideo['interruptRate']; this.interruptRate = parmsVideo['interruptRate'];
this.refreshRate = parmsVideo['refreshRate'] || 60; this.refreshRate = parmsVideo['refreshRate'] || 60;
this.setReady();
this.canvasScreen = canvas;
this.contextScreen = context;
this.textareaScreen = textarea;
this.inputScreen = textarea || canvas || null;
this.initColors();
/*
* Allocate off-screen buffers.
*
* TODO: Do this only if there is a mismatch between the screen's (canvas) dimensions and the frame buffer's.
*/
this.imageBuffer = this.contextScreen.createImageData(this.cxBuffer, this.cyBuffer);
this.canvasBuffer = document.createElement("canvas");
this.canvasBuffer.width = this.cxBuffer;
this.canvasBuffer.height = this.cyBuffer;
this.contextBuffer = this.canvasBuffer.getContext("2d");
} }
Component.subclass(Video); Component.subclass(Video);
@ -97,6 +123,20 @@ Video.prototype.initBus = function(cmp, bus, cpu, dbg)
this.bus = bus; this.bus = bus;
this.cpu = cpu; this.cpu = cpu;
this.dbg = dbg; this.dbg = dbg;
/*
* Compute the size of the frame buffer and allocate.
*/
this.sizeBuffer = ((this.cxBuffer * this.nBitsPerPixel) >> 3) * this.cyBuffer;
if (this.bus.addMemory(this.addrBuffer, this.sizeBuffer, Memory.TYPE.VIDEO)) {
/*
* Compute the number of cells and initialize the cell cache.
*/
this.nCellCache = this.sizeBuffer >> 1;
this.nPixelsPerCell = (16 / this.nBitsPerPixel)|0;
this.initCache();
}
this.setReady();
}; };
/** /**
@ -110,6 +150,62 @@ Video.prototype.getRefreshRate = function()
return Math.max(this.refreshRate, this.interruptRate); return Math.max(this.refreshRate, this.interruptRate);
}; };
/**
* initCache()
*
* Initializes the contents of our internal cell cache.
*
* @this {Video}
*/
Video.prototype.initCache = function()
{
this.fCellCacheValid = false;
if (this.aCellCache === undefined || this.aCellCache.length != this.nCellCache) {
this.aCellCache = new Array(this.nCellCache);
}
};
/**
* initColors()
*
* @this {Video}
*/
Video.prototype.initColors = function()
{
this.aRGB = [
[0x00, 0x00, 0x00, 0xff], // black
[0xff, 0xff, 0xff, 0xff] // white
];
};
/**
* getColors()
*
* @this {Video}
*/
Video.prototype.getColors = function()
{
return this.aRGB;
};
/**
* setPixel(imageData, x, y, rgb)
*
* @this {Video}
* @param {Object} imageData
* @param {number} x
* @param {number} y
* @param {Array.<number>} rgb is a 4-element array containing the red, green, blue and alpha values
*/
Video.prototype.setPixel = function(imageData, x, y, rgb)
{
var index = (x + y * imageData.width) * rgb.length;
imageData.data[index] = rgb[0];
imageData.data[index+1] = rgb[1];
imageData.data[index+2] = rgb[2];
imageData.data[index+3] = rgb[3];
};
/** /**
* updateScreen(n) * updateScreen(n)
* *
@ -126,18 +222,100 @@ Video.prototype.getRefreshRate = function()
*/ */
Video.prototype.updateScreen = function(n) Video.prototype.updateScreen = function(n)
{ {
if (!(n & 1)) { if (n >= 0) {
if (!(n & 1)) {
/*
* On even updates, call cpu.requestINTR(1), and also update our copy of the screen.
*/
this.cpu.requestINTR(1);
} else {
/*
* On odd updates, call cpu.requestINTR(2), but do NOT update our copy of the screen, because
* the machine has presumably only updated the top half of the frame buffer at this point; it will
* update the bottom half of the frame buffer after acknowledging this interrupt.
*/
this.cpu.requestINTR(2);
return;
}
/* /*
* On even updates, call cpu.requestINTR(1), and also update our copy of the screen. * Since this is not a forced update, if our cell cache is valid AND the buffer is clean, then do nothing.
*/ */
this.cpu.requestINTR(1); if (this.fCellCacheValid && this.bus.cleanMemory(this.addrBuffer, this.sizeBuffer)) {
} else { return;
}
}
/*
* If we're still here, then either this is a forced update, or our cell cache hasn't been filled yet, or
* the frame buffer is dirty. Time to actually update the screen.
*/
var addr = this.addrBuffer;
var addrLimit = addr + this.sizeBuffer;
var iCell = 0;
var wPixelMask = 0x10000;
var nPixelShift = 1;
var aPixelColors = this.getColors();
var x = 0, y = 0;
var xDirty = this.cxBuffer, xMaxDirty = 0, yDirty = this.cyBuffer, yMaxDirty = 0;
while (addr < addrLimit) {
var data = this.bus.getShortDirect(addr);
this.assert(iCell < this.aCellCache.length);
if (this.fCellCacheValid && data === this.aCellCache[iCell]) {
x += this.nPixelsPerCell;
} else {
this.aCellCache[iCell] = data;
var wPixels = (data >> 8) | ((data & 0xff) << 8);
var wMask = wPixelMask, nShift = 16;
if (x < xDirty) xDirty = x;
for (var iPixel = 0; iPixel < this.nPixelsPerCell; iPixel++) {
var bPixel = (wPixels & (wMask >>= nPixelShift)) >> (nShift -= nPixelShift);
this.setPixel(this.imageBuffer, x++, y, aPixelColors[bPixel]);
}
if (x > xMaxDirty) xMaxDirty = x;
if (y < yDirty) yDirty = y;
if (y >= yMaxDirty) yMaxDirty = y + 1;
}
addr += 2;
iCell++;
if (x >= this.cxBuffer) {
x = 0;
y++;
if (y > this.cyBuffer) break;
}
}
this.fCellCacheValid = true;
/*
* Instead of blasting the ENTIRE imageBuffer into contextBuffer, and then blasting the ENTIRE
* canvasBuffer onto contextScreen, even for the smallest change, let's try to be a bit smarter about
* the update (well, to the extent that the canvas APIs permit).
*/
if (xDirty < this.cxBuffer) {
var cxDirty = xMaxDirty - xDirty;
var cyDirty = yMaxDirty - yDirty;
// this.contextBuffer.putImageData(this.imageBuffer, 0, 0);
this.contextBuffer.putImageData(this.imageBuffer, 0, 0, xDirty, yDirty, cxDirty, cyDirty);
/* /*
* On odd updates, call cpu.requestINTR(2), but do NOT update our copy of the screen, because * While ideally I would draw only the dirty portion of canvasBuffer, there usually isn't a 1-1 pixel mapping
* the machine has presumably only updated the top half of the frame buffer at this point; it will * between canvasBuffer and contextScreen. In fact, the WHOLE POINT of the canvasBuffer is to leverage
* update the bottom half of the frame buffer after acknowledging this interrupt. * drawImage()'s scaling ability; for example, a CGA graphics mode might be 640x200, whereas the canvas representing
* the screen might be 960x400. In those situations, if we draw interior rectangles, we often end up with subpixel
* artifacts along the edges of those rectangles. So it appears I must continue to redraw the entire canvasBuffer
* on every change.
*
var xScreen = (((xDirty * this.cxScreen) / this.cxBuffer) | 0);
var yScreen = (((yDirty * this.cyScreen) / this.cyBuffer) | 0);
var cxScreen = (((cxDirty * this.cxScreen) / this.cxBuffer) | 0);
var cyScreen = (((cyDirty * this.cyScreen) / this.cyBuffer) | 0);
this.contextScreen.drawImage(this.canvasBuffer, xDirty, yDirty, cxDirty, cyDirty, xScreen, yScreen, cxScreen, cyScreen);
*/ */
this.cpu.requestINTR(2); this.contextScreen.drawImage(this.canvasBuffer, 0, 0, this.cxBuffer, this.cyBuffer, 0, 0, this.cxScreen, this.cyScreen);
} }
}; };

View file

@ -1,202 +1,206 @@
(function(){var m;function aa(a,b){var c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c} (function(){var m;function aa(a,b){var c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c}
function q(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function r(a){return"0x"+q(a,4)}function ba(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 ca(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b} function q(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function r(a){return"0x"+q(a,4)}function ba(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 da(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
function da(a,b){return-1!==a.indexOf(b,a.length-b.length)}var ea={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function fa(a){return a.replace(/[&<>"']/g,function(a){return ea[a]})}function ga(a,b){return(a+" ").slice(0,b)}function ha(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")} function ea(a,b){return-1!==a.indexOf(b,a.length-b.length)}var fa={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function ga(a){return a.replace(/[&<>"']/g,function(a){return fa[a]})}function ha(a,b){return(a+" ").slice(0,b)}function ia(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
function ia(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var h=d+e>>1,g;g=c(b,a[h]);0<g?d=h+1:(e=h,f=!g)}return f?d:~d}var ja=Date.now||function(){return+new Date};function ka(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())} function ja(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var h=d+e>>1,g;g=c(b,a[h]);0<g?d=h+1:(e=h,f=!g)}return f?d:~d}var ka=Date.now||function(){return+new Date};function la(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
function la(a,b){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;c<d;c++)if(c in a&&a[c]===b)return c;return-1} function ma(a,b){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;c<d;c++)if(c in a&&a[c]===b)return c;return-1}
function ma(a,b,c,d){var e=0,f=null,h=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),d&&d(a,f,e))});if(b&&"object"== function na(a,b,c,d){var e=0,f=null,h=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),d&&d(a,f,e))});if(b&&"object"==
typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");g.open("POST",a,!!c);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(k)}else g.open("GET",a,!!c),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();c||(f=g.responseText,200!=g.status&&(e=g.status||-1),d&&d(a,f,e),h=[f,e]);return h}function na(){return"http://"+(window?window.location.host:"www.pcjs.org")} typeof b){var l="",k;for(k in b)b.hasOwnProperty(k)&&(l&&(l+="&"),l+=k+"="+encodeURIComponent(b[k]));l=l.replace(/%20/g,"+");g.open("POST",a,!!c);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(l)}else g.open("GET",a,!!c),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();c||(f=g.responseText,200!=g.status&&(e=g.status||-1),d&&d(a,f,e),h=[f,e]);return h}function oa(){return"http://"+(window?window.location.host:"www.pcjs.org")}
function oa(){return window?window.navigator.userAgent:""}function t(a){window&&window.alert(a)}function pa(a){var b=!1;window&&(b=window.confirm(a));return b}var qa=null;function ra(){if(null==qa){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}qa=a}return qa} function pa(){return window?window.navigator.userAgent:""}function t(a){window&&window.alert(a)}function qa(a){var b=!1;window&&(b=window.confirm(a));return b}var ra=null;function sa(){if(null==ra){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}ra=a}return ra}
function xa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function ya(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function za(a){if(window){var b=oa();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Aa(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()} function ta(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function ua(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ba(a){if(window){var b=pa();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ca(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
function Ba(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var Ca={init:[],show:[],exit:[]},Fa=!1,Ga=!0;function Ha(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ma(a){Ca.init.push(a)} function Da(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var Ea={init:[],show:[],exit:[]},Fa=!1,Ga=!0;function Ia(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ja(a){Ea.init.push(a)}
function Na(a){if(Ga)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){t("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function Oa(a){!Ga&&a?(Ga=!0,Fa&&Pa("init")):Ga=a}function Pa(a){Ca[a]&&Na(Ca[a])}Ha("onload",function(){Fa=!0;Na(Ca.init)});Ha("onpageshow",function(){Na(Ca.show)});Ha(za("Opera")||za("iOS")?"onunload":"onbeforeunload",function(){Na(Ca.exit)}); function Ka(a){if(Ga)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){t("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function Pa(a){!Ga&&a?(Ga=!0,Fa&&Qa("init")):Ga=a}function Qa(a){Ea[a]&&Ka(Ea[a])}Ia("onload",function(){Fa=!0;Ka(Ea.init)});Ia("onpageshow",function(){Ka(Ea.show)});Ia(Ba("Opera")||Ba("iOS")?"onunload":"onbeforeunload",function(){Ka(Ea.exit)});
function u(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.Db=b.comment;this.Qb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Hb=this.id.substr(0,b),this.ab=this.id.substr(b+1)):this.ab=this.id;this[a]=c;this.w={Qa:!1,Na:!1,tb:!1,ga:!1,Pa:!1};this.ob=null;this.w.Pa=!1;this.T={};this.C=null;this.fa=d||0;w.push(this)}var Qa=void 0,Ra={}; function v(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.Db=b.comment;this.Rb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Hb=this.id.substr(0,b),this.ab=this.id.substr(b+1)):this.ab=this.id;this[a]=c;this.A={Qa:!1,Na:!1,tb:!1,ha:!1,Pa:!1};this.ob=null;this.A.Pa=!1;this.U={};this.F=null;this.ga=d||0;y.push(this)}var Ra=void 0,Sa={};
if(window){Qa||(Qa=window.location.search.substr(1));for(var Sa,Ta=/\+/g,Ua=/([^&=]+)=?([^&]*)/g;Sa=Ua.exec(Qa);)Ra[decodeURIComponent(Sa[1].replace(Ta," "))]=decodeURIComponent(Sa[2].replace(Ta," "))}function Va(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b} if(window){Ra||(Ra=window.location.search.substr(1));for(var Ta,Ua=/\+/g,Va=/([^&=]+)=?([^&]*)/g;Ta=Va.exec(Ra);)Sa[decodeURIComponent(Ta[1].replace(Ua," "))]=decodeURIComponent(Ta[2].replace(Ua," "))}function Wa(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
function x(a,b){b||(b=u);a.prototype=Va(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var w=[],Wa={};function Xa(a,b,c){Wa[a]&&b&&(Wa[a][b]=c)}function ab(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 z(a,b){b||(b=v);a.prototype=Wa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var y=[],Xa={};function Ya(a,b,c){Xa[a]&&b&&(Xa[a][b]=c)}function Za(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<y.length;b++){var d=y[b];a&&d.id.indexOf(a)||c.push(d)}return c}
function db(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 y(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){t(c.message+" ("+a+")")}return b} function $a(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<y.length;d++)if(c)c==y[d]&&(c=null);else if(!(a!=y[d].type||b&&y[d].id.indexOf(b)))return y[d]}return null}function B(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){t(c.message+" ("+a+")")}return b}
function eb(a,b){for(var c=A(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pc8080-binding":(g=y(h))&&g.binding&&a.pa(g.type,g.binding,h,g.value),l=k.length}}}} function ab(a,b){for(var c=D(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var l=g.split(" "),k=0;k<l.length;k++)switch(g=l[k],g){case "pc8080-binding":(g=B(h))&&g.binding&&a.qa(g.type,g.binding,h,g.value),k=l.length}}}}
function A(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 D(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}
u.prototype={constructor:u,parent:null,toString:function(){return this.name?this.name:this.id||this.type},pa:function(a,b,c){switch(b){case "clear":return this.T[b]||(this.T[b]=c,c.onclick=function(a){return function(){a.T.print&&(a.T.print.value="")}}(this)),!0;case "print":return this.T[b]||(this.ra=this.T[b]=c,c.value="",this.g=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c), v.prototype={constructor:v,parent:null,toString:function(){return this.name?this.name:this.id||this.type},qa:function(a,b,c){switch(b){case "clear":return this.U[b]||(this.U[b]=c,c.onclick=function(a){return function(){a.U.print&&(a.U.print.value="")}}(this)),!0;case "print":return this.U[b]||(this.sa=this.U[b]=c,c.value="",this.g=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
this.na=function(a,b,c){this.g(a,"notice",c)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.ab+": "+a)},na:function(a,b){b||t(a)},xa:function(){return this.w.ga=!0},wa:function(a,b){b&&(this.w.ga=!1);return!0}};function fb(a,b,c,d,e,f){var h=!0;a.C&&(!0===h?h=0:null==h&&(h=a.fa),gb(a.C,a,b,c,d,e,f,h))}function hb(a,b){if(a.C){a===a.C?b|=0:b=b||a.fa;var c=a.C.fa&b;return!!b&&c===b||!!(c&a.C.Wb)}return!1} this.oa=function(a,b,c){this.g(a,"notice",c)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.ab+": "+a)},oa:function(a,b){b||t(a)},ya:function(){return this.A.ha=!0},xa:function(a,b){b&&(this.A.ha=!1);return!0}};function db(a,b,c,d,e,f){var h=!0;a.F&&(!0===h?h=0:null==h&&(h=a.ga),eb(a.F,a,b,c,d,e,f,h))}function fb(a,b){if(a.F){a===a.F?b|=0:b=b||a.ga;var c=a.F.ga&b;return!!b&&c===b||!!(c&a.F.Xb)}return!1}
function ib(a,b){if(a.w.tb)return a.w.Na&&(a.w.Na=!1),a.w.tb=!1;if(a.w.Pa)return a.g(a.toString()+" error"),!1;a.w.Na=b;return a.w.Na}function jb(a,b){a.w.Na&&(b?a.w.tb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.w.Na}function B(a){if(!a.w.Pa&&(a.w.Qa=!0,a.w.Qa)){var b=a.ob;a.ob=null;b&&b()}}function kb(a,b){b&&(a.w.Qa?b():a.ob=b);return a.w.Qa}function lb(a,b){a.w.Pa=!0;a.na(b)} function gb(a,b){if(a.A.tb)return a.A.Na&&(a.A.Na=!1),a.A.tb=!1;if(a.A.Pa)return a.g(a.toString()+" error"),!1;a.A.Na=b;return a.A.Na}function hb(a,b){a.A.Na&&(b?a.A.tb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.A.Na}function E(a){if(!a.A.Pa&&(a.A.Qa=!0,a.A.Qa)){var b=a.ob;a.ob=null;b&&b()}}function ib(a,b){b&&(a.A.Qa?b():a.ob=b);return a.A.Qa}function jb(a,b){a.A.Pa=!0;a.oa(b)}
var mb="undefined"!==typeof ArrayBuffer,nb=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1, var kb="undefined"!==typeof ArrayBuffer,lb=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function ob(a){u.call(this,"Panel",a,ob)}x(ob);m=ob.prototype;m.pa=function(a,b,c,d){return this.u&&this.u.pa(a,b,c,d)||this.b&&this.b.pa(a,b,c,d)||this.A&&this.A.pa(a,b,c,d)||this.C&&this.C.pa(a,b,c,d)?!0:this.parent.pa.call(this,a,b,c,d)};m.Ba=function(a,b,c,d){this.u=a;this.D=b;this.b=c;this.C=d;this.A=pb(a,"Keyboard")};m.xa=function(a,b){b||qb();return!0};m.wa=function(){return!0};m.sa=function(){}; 0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function mb(a){v.call(this,"Panel",a,mb)}z(mb);m=mb.prototype;m.qa=function(a,b,c,d){return this.w&&this.w.qa(a,b,c,d)||this.b&&this.b.qa(a,b,c,d)||this.u&&this.u.qa(a,b,c,d)||this.F&&this.F.qa(a,b,c,d)?!0:this.parent.qa.call(this,a,b,c,d)};m.Ba=function(a,b,c,d){this.w=a;this.B=b;this.b=c;this.F=d;this.u=nb(a,"Keyboard")};m.ya=function(a,b){b||ob();return!0};m.xa=function(){return!0};m.ta=function(){};
function qb(){for(var a=!1,b=A(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=y(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<w.length;h++)if(w[h].id===f){f=w[h];break a}f=null}f||(a=!0,f=new ob(e));eb(f,d);a&&B(f)}}Ma(qb); function ob(){for(var a=!1,b=D(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=B(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<y.length;h++)if(y[h].id===f){f=y[h];break a}f=null}f||(a=!0,f=new mb(e));ab(f,d);a&&E(f)}}Ja(ob);
function rb(a,b,c){u.call(this,"Bus",a,rb);this.b=b;this.C=c;this.U=a.busWidth||16;this.Y=Math.pow(2,this.U);this.H=this.Y-1|0;this.Z=16>=this.U?10:20>=this.U?12:24>=this.U?14:15;this.ma=1<<this.Z;this.aa=this.ma>>2;this.F=this.ma-1;this.L=this.Y/this.ma|0;this.W=this.L-1;this.u=[];this.A=[];this.I=this.J=!1;this.ba=[];this.ea=[];a=new C;sb(a,this.C);this.D=Array(this.L);for(b=0;b<this.L;b++)this.D[b]=a;a=this.b;b=this.D;c=this.Z;var d=this.H;a.la=b;a.Z=c;a.ma=1<<a.Z;a.H=a.ma-1;a.aa=b.length;a.Y= function pb(a,b,c){v.call(this,"Bus",a,pb);this.b=b;this.F=c;this.M=a.busWidth||16;this.X=Math.pow(2,this.M);this.G=this.X-1|0;this.aa=16>=this.M?10:20>=this.M?12:24>=this.M?14:15;this.la=1<<this.aa;this.Z=this.la>>2;this.D=this.la-1;this.K=this.X/this.la|0;this.V=this.K-1;this.w=[];this.u=[];this.H=this.J=!1;this.ba=[];this.ca=[];a=new F;qb(a,this.F);this.B=Array(this.K);for(b=0;b<this.K;b++)this.B[b]=a;a=this.b;b=this.B;c=this.aa;var d=this.G;a.na=b;a.aa=c;a.la=1<<a.aa;a.G=a.la-1;a.Z=b.length;a.X=
a.aa-1;a.L=d;B(this)}x(rb);rb.prototype.reset=function(){};rb.prototype.xa=function(a,b){b||this.reset();return!0};function tb(a,b,c,d){for(var e=b>>>a.Z;0<c&&e<a.D.length;){var f=a.D[e],h=e*a.ma,g=a.ma-(b-h);g>c&&(g=c);if(f&&f.size){if(f.type==d){if(b+c<=f.B)return f.kb+=f.B-b,f.B=b,!0;if(b>=f.B+f.kb){g=f.size-(b-h);g>c&&(g=c);f.kb=b-f.B+g;b=h+a.ma;c-=g;e++;continue}}return ub(1,b,c)}b=new C(b,g,a.ma,d);sb(b,a.C,f);a.D[e++]=b;b=h+a.ma;c-=g}return 0>=c?!0:ub(2,b,c)} a.Z-1;a.K=d;E(this)}z(pb);pb.prototype.reset=function(){};pb.prototype.ya=function(a,b){b||this.reset();return!0};function rb(a,b,c,d){for(var e=b>>>a.aa;0<c&&e<a.B.length;){var f=a.B[e],h=e*a.la,g=a.la-(b-h);g>c&&(g=c);if(f&&f.size){if(f.type==d){if(b+c<=f.C)return f.kb+=f.C-b,f.C=b,!0;if(b>=f.C+f.kb){g=f.size-(b-h);g>c&&(g=c);f.kb=b-f.C+g;b=h+a.la;c-=g;e++;continue}}return sb(1,b,c)}b=new F(b,g,a.la,d);qb(b,a.F,f);a.B[e++]=b;b=h+a.la;c-=g}return 0>=c?!0:sb(2,b,c)}
rb.prototype.V=function(a){return this.D[(a&this.H)>>>this.Z].Ka(a&this.F,a)};function vb(a,b){return a.D[(b&a.H)>>>a.Z].ib(b&a.F,b)}function wb(a,b,c){a.D[(b&a.H)>>>a.Z].lb(b&a.F,c&255,b)}function xb(a,b){if(void 0===b)return a.I=!a.I,a.I;void 0===a.u[b]&&(a.u[b]=[null,!1]);a.u[b][1]=!a.u[b][1];return a.u[b][1]} pb.prototype.W=function(a){return this.B[(a&this.G)>>>this.aa].Ka(a&this.D,a)};function tb(a,b){return a.B[(b&a.G)>>>a.aa].ib(b&a.D,b)}function ub(a,b){var c=b&a.D,d=(b&a.G)>>>a.aa;return c!=a.D?a.B[d].yb(c,b):a.B[d++].ib(c,b)|a.B[d&a.V].ib(0,b+1)<<8}function vb(a,b,c){a.B[(b&a.G)>>>a.aa].lb(b&a.D,c&255,b)}function wb(a,b){if(void 0===b)return a.H=!a.H,a.H;void 0===a.w[b]&&(a.w[b]=[null,!1]);a.w[b][1]=!a.w[b][1];return a.w[b][1]}
function Gb(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.u[b],g=a.ba[b]||1,k=1==g?255:2==g?65535:-1,l=k;void 0!==h?(h[0]&&(l=h[0](b,c),void 0===l?l=k:l&=k),a.C&&a.I!=h[1]&&Hb(a.C,b,l)):a.C&&(gb(a.C,a,b,null,c),a.I&&Hb(a.C,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Ib(a,b){if(void 0===b)return a.J=!a.J,a.J;void 0===a.A[b]&&(a.A[b]=[null,!1]);a.A[b][1]=!a.A[b][1];return a.A[b][1]} function xb(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.w[b],g=a.ba[b]||1,l=1==g?255:2==g?65535:-1,k=l;void 0!==h?(h[0]&&(k=h[0](b,c),void 0===k?k=l:k&=l),a.F&&a.H!=h[1]&&Gb(a.F,b,k)):a.F&&(eb(a.F,a,b,null,c),a.H&&Gb(a.F,b,k));e|=k<<f;f+=g<<3;b+=g;d-=g}return e}function Hb(a,b){if(void 0===b)return a.J=!a.J,a.J;void 0===a.u[b]&&(a.u[b]=[null,!1]);a.u[b][1]=!a.u[b][1];return a.u[b][1]}
function Jb(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.A[b],g=a.ea[b]||1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h){if(h[0])h[0](b,k,d);a.C&&a.J!=h[1]&&Kb(a.C,b,k)}else a.C&&(gb(a.C,a,b,k,d),a.J&&Kb(a.C,b,k));f+=g<<3;b+=g;e-=g}}function ub(a,b,c){t("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Lb;if(mb){var Mb=new ArrayBuffer(2);(new DataView(Mb)).setUint16(0,256,!0);Lb=256===(new Uint16Array(Mb))[0]}else Lb=!1;var Nb=Lb; function Ib(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.u[b],g=a.ca[b]||1,l=1==g?255:2==g?65535:-1,l=(c>>>=f)&l;if(void 0!==h){if(h[0])h[0](b,l,d);a.F&&a.J!=h[1]&&Jb(a.F,b,l)}else a.F&&(eb(a.F,a,b,l,d),a.J&&Jb(a.F,b,l));f+=g<<3;b+=g;e-=g}}function sb(a,b,c){t("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Kb;if(kb){var Lb=new ArrayBuffer(2);(new DataView(Lb)).setUint16(0,256,!0);Kb=256===(new Uint16Array(Lb))[0]}else Kb=!1;var Mb=Kb;
function C(a,b,c,d){this.id=Ob+=2;this.b=null;this.B=a;this.kb=b;this.size=c||0;this.type=d||Pb;this.u=d==Qb;sb(this);this.Aa=this.Yb=!1;if(c)if(mb)this.H=new ArrayBuffer(c),this.I=new DataView(this.H,0,c),this.D=new Uint8Array(this.H,0,c),this.L=new Uint16Array(this.H,0,c>>1),this.b=new Int32Array(this.H,0,c>>2),Rb(this,Nb?Sb:Tb);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Rb(this,Ub)}else Rb(this)}var Pb=0,Qb=2,Vb=["NONE","RAM","ROM","VIDEO","H/W"],Ob=0; function F(a,b,c,d){this.id=Nb+=2;this.b=null;this.C=a;this.kb=b;this.size=c||0;this.type=d||Ob;this.w=d==Pb;qb(this);this.va=this.Jb=!1;if(c)if(kb)this.G=new ArrayBuffer(c),this.H=new DataView(this.G,0,c),this.B=new Uint8Array(this.G,0,c),this.K=new Uint16Array(this.G,0,c>>1),this.b=new Int32Array(this.G,0,c>>2),Qb(this,Mb?Rb:Sb);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Qb(this,Tb)}else Qb(this)}var Ob=0,Pb=2,Ub=["NONE","RAM","ROM","VIDEO","H/W"],Nb=0;
C.prototype={constructor:C,parent:null,save:function(){var a,b;if(mb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.I.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(mb)for(b=0;b<a.length;b++)this.I.setInt32(b<<2,a[b],!0);else this.b=a;return this.Aa=!0}return!1},Fa:function(a,b){b?0===this.A++&&Wb(this,Xb,!1):0===this.T++&&Yb(this,Xb,!1)},U:function(){this.C&&hb(this.C,129)&&this.C.message("attempt to read invalid block %"+q(this.B),!0); F.prototype={constructor:F,parent:null,save:function(){var a,b;if(kb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.H.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(kb)for(b=0;b<a.length;b++)this.H.setInt32(b<<2,a[b],!0);else this.b=a;return this.va=!0}return!1},Fa:function(a,b){b?0===this.u++&&Vb(this,Wb,!1):0===this.U++&&Xb(this,Wb,!1)},M:function(){this.F&&fb(this.F,129)&&this.F.message("attempt to read invalid block %"+q(this.C),!0);
return 255},F:function(a,b){this.C&&hb(this.C,129)&&this.C.message("attempt to write "+r(b)+" to invalid block %"+q(this.B),!0)},W:function(a,b){return this.Ka(a++,b++)|this.Ka(a,b)<<8},J:function(a,b,c){this.Za(a++,b&255,c++);this.Za(a,b>>8,c)},ea:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ta: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},Da:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.Aa=!0},ab:function(a, return 255},D:function(a,b){this.F&&fb(this.F,129)&&this.F.message("attempt to write "+r(b)+" to invalid block %"+q(this.C),!0)},V:function(a,b){return this.Ka(a++,b++)|this.Ka(a,b)<<8},J:function(a,b,c){this.Za(a++,b&255,c++);this.Za(a,b>>8,c)},ca:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ra: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},Da:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.va=!0},ab:function(a,
b){var c=a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.Aa=!0},aa:function(a,b){if(this.C&&null!=this.B){var c=this.C;Zb(c,this.B+a,1,c.ba)&&c.da(!0)}return this.ib(a,b)},ka:function(a,b){if(this.C&&null!=this.B){var c=this.C;Zb(c,this.B+a,2,c.ba)&&c.da(!0)}return this.yb(a,b)},za:function(a,b,c){if(this.C&&null!=this.B){var d=this.C;Zb(d,this.B+a,1,d.I)&&d.da(!0)}this.u?this.F(a,b,c):this.lb(a,b,c)},Ma:function(a, b){var c=a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.va=!0},Z:function(a,b){if(this.F&&null!=this.C){var c=this.F;Yb(c,this.C+a,1,c.ba)&&c.ea(!0)}return this.ib(a,b)},ja:function(a,b){if(this.F&&null!=this.C){var c=this.F;Yb(c,this.C+a,2,c.ba)&&c.ea(!0)}return this.yb(a,b)},Aa:function(a,b,c){if(this.F&&null!=this.C){var d=this.F;Yb(d,this.C+a,1,d.H)&&d.ea(!0)}this.w?this.D(a,b,c):this.lb(a,b,c)},Ma:function(a,
b,c){if(this.C&&null!=this.B){var d=this.C;Zb(d,this.B+a,2,d.I)&&d.da(!0)}this.u?this.F(a,b,c):this.zb(a,b,c)},Y:function(a){return this.D[a]},ba:function(a){return this.D[a]},ja:function(a){return this.I.getUint16(a,!0)},qa:function(a){return a&1?this.D[a]|this.D[a+1]<<8:this.L[a>>1]},ua:function(a,b){this.D[a]=b;this.Aa=!0},Ca:function(a,b){this.D[a]=b;this.Aa=!0},Ea:function(a,b){this.I.setUint16(a,b,!0);this.Aa=!0},$a:function(a,b){a&1?(this.D[a]=b,this.D[a+1]=b>>8):this.L[a>>1]=b;this.Aa=!0}}; b,c){if(this.F&&null!=this.C){var d=this.F;Yb(d,this.C+a,2,d.H)&&d.ea(!0)}this.w?this.D(a,b,c):this.zb(a,b,c)},X:function(a){return this.B[a]},ba:function(a){return this.B[a]},fa:function(a){return this.H.getUint16(a,!0)},ma:function(a){return a&1?this.B[a]|this.B[a+1]<<8:this.K[a>>1]},ua:function(a,b){this.B[a]=b;this.va=!0},Ca:function(a,b){this.B[a]=b;this.va=!0},Ea:function(a,b){this.H.setUint16(a,b,!0);this.va=!0},$a:function(a,b){a&1?(this.B[a]=b,this.B[a+1]=b>>8):this.K[a>>1]=b;this.va=!0}};
function sb(a,b,c){a.C=b;a.T=a.A=0;c&&((a.T=c.T)&&Yb(a,Xb,!1),(a.A=c.A)&&Wb(a,Xb,!1))}function $b(a,b){b?0===--a.A&&(a.Za=a.u?a.F:a.lb,a.Tb=a.u?a.J:a.zb):0===--a.T&&(a.Ka=a.ib,a.Rb=a.yb)}function Wb(a,b,c){c&&a.A||(a.Za=!a.u&&b[2]||a.F,a.Tb=!a.u&&b[3]||a.J);if(c||void 0===c)a.lb=b[2]||a.F,a.zb=b[3]||a.J}function Yb(a,b,c){c&&a.T||(a.Ka=b[0]||a.U,a.Rb=b[1]||a.W);if(c||void 0===c)a.ib=b[0]||a.U,a.yb=b[1]||a.W}function Rb(a,b){b||(b=ac);Yb(a,b,void 0);Wb(a,b,void 0)} function qb(a,b,c){a.F=b;a.U=a.u=0;c&&((a.U=c.U)&&Xb(a,Wb,!1),(a.u=c.u)&&Vb(a,Wb,!1))}function Zb(a,b){b?0===--a.u&&(a.Za=a.w?a.D:a.lb,a.Ub=a.w?a.J:a.zb):0===--a.U&&(a.Ka=a.ib,a.Sb=a.yb)}function Vb(a,b,c){c&&a.u||(a.Za=!a.w&&b[2]||a.D,a.Ub=!a.w&&b[3]||a.J);if(c||void 0===c)a.lb=b[2]||a.D,a.zb=b[3]||a.J}function Xb(a,b,c){c&&a.U||(a.Ka=b[0]||a.M,a.Sb=b[1]||a.V);if(c||void 0===c)a.ib=b[0]||a.M,a.yb=b[1]||a.V}function Qb(a,b){b||(b=$b);Xb(a,b,void 0);Vb(a,b,void 0)}
var ac=[],Ub=[C.prototype.ea,C.prototype.ta,C.prototype.Da,C.prototype.ab],Xb=[C.prototype.aa,C.prototype.ka,C.prototype.za,C.prototype.Ma];if(mb)var Tb=[C.prototype.Y,C.prototype.ja,C.prototype.ua,C.prototype.Ea],Sb=[C.prototype.ba,C.prototype.qa,C.prototype.Ca,C.prototype.$a]; var $b=[],Tb=[F.prototype.ca,F.prototype.ra,F.prototype.Da,F.prototype.ab],Wb=[F.prototype.Z,F.prototype.ja,F.prototype.Aa,F.prototype.Ma];if(kb)var Sb=[F.prototype.X,F.prototype.fa,F.prototype.ua,F.prototype.Ea],Rb=[F.prototype.ba,F.prototype.ma,F.prototype.Ca,F.prototype.$a];
function bc(a,b){u.call(this,"CPU",a,bc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.Xa=c;this.i.qb=0;this.i.Ja=d;this.i.vb=Math.round(this.i.Xa/1E4)/100;this.i.Ha=this.i.vb*this.i.Ja;this.w.ia=!1;this.w.ub=!1;this.w.Ib=a.autoStart;this.w.Jb=!1;this.w.Oa=!1;this.i.bb=this.i.Ua=0;this.i.cb=a.csStart;this.i.Ta=a.csInterval;this.i.Va=a.csStop;this.ka=this.La.bind(this);B(this)}x(bc);var cc=["power","reset"];m=bc.prototype; function ac(a,b){v.call(this,"CPU",a,ac,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.Xa=c;this.i.qb=0;this.i.Ja=d;this.i.vb=Math.round(this.i.Xa/1E4)/100;this.i.Ha=this.i.vb*this.i.Ja;this.A.ka=!1;this.A.ub=!1;this.A.Ib=a.autoStart;this.A.Kb=!1;this.A.Oa=!1;this.i.bb=this.i.Ua=0;this.i.cb=a.csStart;this.i.Ta=a.csInterval;this.i.Va=a.csStop;this.ja=this.La.bind(this);E(this)}z(ac);var bc=["power","reset"];m=ac.prototype;
m.Ba=function(a,b,c,d){this.u=a;this.D=b;this.C=d;for(b=0;b<cc.length;b++)(c=this.T[cc[b]])&&this.u.pa(null,cc[b],c);this.za=(b=pb(a,"Video"))&&Math.max(b.za,b.Zb)||60;this.W=pb(a,"ChipSet");a=oc(a,"autoStart");null!=a&&(this.w.Ib="true"==a?!0:"false"==a?!1:!!a);B(this)};m.reset=function(){this.i.qb=0};m.save=function(){return null};m.restore=function(){return!1}; m.Ba=function(a,b,c,d){this.w=a;this.B=b;this.F=d;for(b=0;b<bc.length;b++)(c=this.U[bc[b]])&&this.w.qa(null,bc[b],c);this.Aa=(b=nb(a,"Video"))&&Math.max(b.Aa,b.Zb)||60;this.V=nb(a,"ChipSet");a=cc(a,"autoStart");null!=a&&(this.A.Ib="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){this.i.qb=0};m.save=function(){return null};m.restore=function(){return!1};
m.xa=function(a,b){if(!b){if(a&&this.restore){pc(this);if(!this.restore(a))return!1;qc(this)}else this.reset();if(this.C){var c=this.C;c.g("Type ? for help with PC8080 Debugger commands");c.sa();if(c.rb){var d=c.rb;c.rb=null;rc(c,d)}}else this.g("No debugger detected")}sc(this);return!0};m.wa=function(a){return a?this.save():!0};function tc(a){(a.w.Ib||!a.C&&void 0===a.T.run)&&a.La(!0)}m.Mb=function(){return 0}; m.ya=function(a,b){if(!b){if(a&&this.restore){oc(this);if(!this.restore(a))return!1;pc(this)}else this.reset();if(this.F){var c=this.F;c.g("Type ? for help with PC8080 Debugger commands");c.ta();if(c.rb){var d=c.rb;c.rb=null;qc(c,d)}}else this.g("No debugger detected")}rc(this);return!0};m.xa=function(a){return a?this.save():!0};function sc(a){(a.A.Ib||!a.F&&void 0===a.U.run)&&a.La(!0)}m.Nb=function(){return 0};
function qc(a){void 0===a.i.cb&&(a.i.cb=0);void 0===a.i.Ta&&(a.i.Ta=-1);void 0===a.i.Va&&(a.i.Va=-1);a.w.Oa=0<=a.i.cb&&0<a.i.Ta;a.w.Oa&&(a.i.bb=0,a.i.Ua=a.i.cb-a.J)}function uc(a,b){if(a.w.Oa){var c=!1;a.i.bb=a.i.bb+a.Mb()|0;a.i.Ua-=b;0>=a.i.Ua&&(a.i.Ua+=a.i.Ta,c=!0);0<=a.i.Va&&a.i.Va<=vc(a)&&(a.i.Ta=a.i.Va=-1,qc(a),a.da(),c=!0);c&&a.g(vc(a)+" cycles: checksum="+q(a.i.bb))}} function pc(a){void 0===a.i.cb&&(a.i.cb=0);void 0===a.i.Ta&&(a.i.Ta=-1);void 0===a.i.Va&&(a.i.Va=-1);a.A.Oa=0<=a.i.cb&&0<a.i.Ta;a.A.Oa&&(a.i.bb=0,a.i.Ua=a.i.cb-a.J)}function tc(a,b){if(a.A.Oa){var c=!1;a.i.bb=a.i.bb+a.Nb()|0;a.i.Ua-=b;0>=a.i.Ua&&(a.i.Ua+=a.i.Ta,c=!0);0<=a.i.Va&&a.i.Va<=uc(a)&&(a.i.Ta=a.i.Va=-1,pc(a),a.ea(),c=!0);c&&a.g(uc(a)+" cycles: checksum="+q(a.i.bb))}}
m.pa=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.T[b]=c;a=!0;break;case "run":this.T[b]=c;c.onclick=function(){var a;if(a=d.u)if(a=d.u,a.w.ga)a=!0;else{var b=null,c,g=ab(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.w.Qa);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.w.ga);c++);c==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.w.Qa?"powered yet":"ready yet"+(b.ob?" (waiting for notification)":""))+".");a=!1}a&&(d.w.ia?d.da(!0):d.La(!0))};a= m.qa=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.U[b]=c;a=!0;break;case "run":this.U[b]=c;c.onclick=function(){var a;if(a=d.w)if(a=d.w,a.A.ha)a=!0;else{var b=null,c,g=Za(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.A.Qa);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.A.ha);c++);c==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.A.Qa?"powered yet":"ready yet"+(b.ob?" (waiting for notification)":""))+".");a=!1}a&&(d.A.ka?d.ea(!0):d.La(!0))};a=
!0;break;case "speed":this.T[b]=c;a=!0;break;case "setSpeed":this.T[b]=c,c.onclick=function(){wc(d,d.i.Ja<<1,!0)},c.textContent=this.i.Ha.toFixed(2)+"Mhz",a=!0}return a};function xc(a,b,c){a.J+=b;c&&(a.F=a.b=0)} !0;break;case "speed":this.U[b]=c;a=!0;break;case "setSpeed":this.U[b]=c,c.onclick=function(){vc(d,d.i.Ja<<1,!0)},c.textContent=this.i.Ha.toFixed(2)+"Mhz",a=!0}return a};function wc(a,b,c){a.J+=b;c&&(a.D=a.b=0)}
function yc(a,b){var c=30;c<a.za&&(c=a.za);2>c&&(c=2);var d=1;b&&1<a.i.Ja&&a.i.Ga&&(d=a.i.Ga/a.i.vb);a.i.Nb=Math.round(1E3/30);a.i.hc=Math.floor(a.i.Xa/c*d);a.i.wb=Math.floor(a.i.Xa/30*d);a.i.Pb=Math.floor(a.i.Xa/a.za*d);a.i.Ob=Math.floor(a.i.Xa/2*d);b||(a.i.Wa=a.i.wb,a.i.fb=a.i.Pb,a.i.eb=a.i.Ob);a.i.xb=0}function vc(a){return a.J+a.I+a.F-a.b}function pc(a){a.i.Ga=0;a.J=a.I=a.F=a.b=0;qc(a);wc(a,1)} function xc(a,b){var c=30;c<a.Aa&&(c=a.Aa);2>c&&(c=2);var d=1;b&&1<a.i.Ja&&a.i.Ga&&(d=a.i.Ga/a.i.vb);a.i.Ob=Math.round(1E3/30);a.i.hc=Math.floor(a.i.Xa/c*d);a.i.wb=Math.floor(a.i.Xa/30*d);a.i.Qb=Math.floor(a.i.Xa/a.Aa*d);a.i.Pb=Math.floor(a.i.Xa/2*d);b||(a.i.Wa=a.i.wb,a.i.fb=a.i.Qb,a.i.eb=a.i.Pb);a.i.xb=0}function uc(a){return a.J+a.H+a.D-a.b}function oc(a){a.i.Ga=0;a.J=a.H=a.D=a.b=0;pc(a);vc(a,1)}
function wc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.Ga/a.i.Ha?b=1:d=!0;a.i.Ja=b;b=a.i.vb*a.i.Ja;if(a.i.Ha!=b){a.i.Ha=b;b=a.i.Ha.toFixed(2)+"Mhz";var e=a.T.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.u&&a.u.jb()}xc(a,a.I);a.I=0;a.i.Sa=ja();a.i.Ia=0;yc(a);return d} function vc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.Ga/a.i.Ha?b=1:d=!0;a.i.Ja=b;b=a.i.vb*a.i.Ja;if(a.i.Ha!=b){a.i.Ha=b;b=a.i.Ha.toFixed(2)+"Mhz";var e=a.U.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.w&&a.w.jb()}wc(a,a.H);a.H=0;a.i.Sa=ka();a.i.Ia=0;xc(a);return d}
m.La=function(a){if(ib(this,!0)){if(!this.w.ia){wc(this);this.u&&this.u.start(this.i.Sa,vc(this));this.w.ia=!0;this.w.ub=!0;this.W&&this.W.start();var b=this.T.run;b&&(b.textContent="Halt");this.u&&(this.u.sa(!0),a&&this.u.jb(!0))}this.i.xb>=this.i.Xa&&yc(this,!0);this.i.gb=0;this.i.pb=ja();this.i.Ia&&(a=this.i.pb-this.i.Ia,a>this.i.Nb&&(this.i.Sa+=a,this.i.Sa>this.i.pb&&(this.i.Sa=this.i.pb)));try{do{var c=this.w.Oa?1:this.i.hc;try{this.Ya(c)}catch(e){if("number"!=typeof e)throw e;}var d=this.F- m.La=function(a){if(gb(this,!0)){if(!this.A.ka){vc(this);this.w&&this.w.start(this.i.Sa,uc(this));this.A.ka=!0;this.A.ub=!0;this.V&&this.V.start();var b=this.U.run;b&&(b.textContent="Halt");this.w&&(this.w.ta(!0),a&&this.w.jb(!0))}this.i.xb>=this.i.Xa&&xc(this,!0);this.i.gb=0;this.i.pb=ka();this.i.Ia&&(a=this.i.pb-this.i.Ia,a>this.i.Ob&&(this.i.Sa+=a,this.i.Sa>this.i.pb&&(this.i.Sa=this.i.pb)));try{do{var c=this.A.Oa?1:this.i.hc;try{this.Ya(c)}catch(e){if("number"!=typeof e)throw e;}var d=this.D-
this.b;this.I+=d;this.i.gb+=d;xc(this,0,!0);uc(this,d);this.i.fb-=d;0>=this.i.fb&&(this.i.fb+=this.i.Pb,this.u&&zc(this.u,this.i.qb++),this.i.qb>this.za&&(this.i.qb=0));this.i.eb-=d;0>=this.i.eb&&(this.i.eb+=this.i.Ob,this.u&&this.u.sa());this.i.Wa-=d;if(0>=this.i.Wa){this.i.Wa+=this.i.wb;break}}while(this.w.ia)}catch(e){this.da();sc(this);this.u&&this.u.stop(ja(),vc(this));ib(this,!1);lb(this,e.stack||e.message);return}c=setTimeout;d=this.ka;this.i.Ia=ja();a=this.i.Nb;this.i.gb&&(a=Math.round(a* this.b;this.H+=d;this.i.gb+=d;wc(this,0,!0);tc(this,d);this.i.fb-=d;0>=this.i.fb&&(this.i.fb+=this.i.Qb,this.w&&yc(this.w,this.i.qb++),this.i.qb>this.Aa&&(this.i.qb=0));this.i.eb-=d;0>=this.i.eb&&(this.i.eb+=this.i.Pb,this.w&&this.w.ta());this.i.Wa-=d;if(0>=this.i.Wa){this.i.Wa+=this.i.wb;break}}while(this.A.ka)}catch(e){this.ea();rc(this);this.w&&this.w.stop(ka(),uc(this));gb(this,!1);jb(this,e.stack||e.message);return}c=setTimeout;d=this.ja;this.i.Ia=ka();a=this.i.Ob;this.i.gb&&(a=Math.round(a*
this.i.gb/this.i.wb));a-=this.i.Ia-this.i.pb;if(b=this.i.Ia-this.i.Sa)this.i.Ga=Math.round(this.I/(10*b))/100,864E5<=b&&(this.J=0,wc(this));if(0>a||this.i.Ga<this.i.Ha)a=0;this.i.xb+=this.i.gb;this.i.Ia+=a;c(d,a)}else sc(this),this.u&&this.u.stop(ja(),vc(this))};m.Ya=function(){return 0};m.da=function(a){jb(this,!0);this.F-=this.b;this.b=0;xc(this,this.I);this.I=0;if(this.w.ia){this.w.ia=!1;this.W&&this.W.stop();var b=this.T.run;b&&(b.textContent="Run")}this.w.nb=a}; this.i.gb/this.i.wb));a-=this.i.Ia-this.i.pb;if(b=this.i.Ia-this.i.Sa)this.i.Ga=Math.round(this.H/(10*b))/100,864E5<=b&&(this.J=0,vc(this));if(0>a||this.i.Ga<this.i.Ha)a=0;this.i.xb+=this.i.gb;this.i.Ia+=a;c(d,a)}else rc(this),this.w&&this.w.stop(ka(),uc(this))};m.Ya=function(){return 0};m.ea=function(a){hb(this,!0);this.D-=this.b;this.b=0;wc(this,this.H);this.H=0;if(this.A.ka){this.A.ka=!1;this.V&&this.V.stop();var b=this.U.run;b&&(b.textContent="Run")}this.A.nb=a};
function sc(a,b){a.u&&(zc(a.u,-1),a.u.sa(b))}function Ac(a){this.Ra=a.model||8080;bc.call(this,a,1E6);this.ba=Bc;pc(this);this.w.nb=this.w.Xb=!1;this.ja=0;this.la=[];this.Z=this.ma=this.H=this.aa=this.Y=this.L=0;this.U=[];this.ea=0;Cc(this)}x(Ac,bc);function Dc(a,b){a.U.push(b)}m=Ac.prototype;m.reset=function(){this.w.ia&&this.da();Cc(this);pc(this);this.w.Pa=!1;this.parent.reset.call(this)};function Cc(a){a.j=0;a.M=0;a.N=0;a.O=0;a.P=0;a.R=0;a.S=0;a.ca=0;G(a,a.ea);Ec(a,0);a.A=0} function rc(a,b){a.w&&(yc(a.w,-1),a.w.ta(b))}function zc(a){this.Ra=a.model||8080;ac.call(this,a,1E6);this.ba=Ac;oc(this);this.A.nb=this.A.Yb=!1;this.fa=0;this.na=[];this.aa=this.la=this.G=this.Z=this.X=this.K=0;this.M=[];this.ca=0;Bc(this)}z(zc,ac);function Cc(a,b){a.M.push(b)}m=zc.prototype;m.reset=function(){this.A.ka&&this.ea();Bc(this);oc(this);this.A.Pa=!1;this.parent.reset.call(this)};function Bc(a){a.j=0;a.N=0;a.O=0;a.P=0;a.R=0;a.S=0;a.T=0;a.da=0;H(a,a.ca);Dc(a,0);a.u=0}
function Fc(a,b){a.ea=b;G(a,b)}m.Mb=function(){var a=this.j+this.M+this.N+this.O+this.P+this.R+this.S|0;return a=a+this.ca+this.K+Gc(this)|0}; function Ec(a,b){a.ca=b;H(a,b)}m.Nb=function(){var a=this.j+this.N+this.O+this.P+this.R+this.S+this.T|0;return a=a+this.da+this.L+Fc(this)|0};
m.save=function(){var a=new H(this);I(a,0,[this.j,this.M,this.N,this.O,this.P,this.R,this.S,this.ca,this.K,Gc(this)]);I(a,1,[this.A,this.J,this.i.Ja]);for(var b=this.D,c=0,d=[],e=0;e<b.L;e++){var f=b.D[e];if(f.Aa||f.Yb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var n=f[g],p=g+1;p<f.length&&f[p]===n;)p++;l[k++]=p-g;l[k++]=n;g=p}if(l.length<f.length){f=l;break a}}d[h]=f}}I(a,2,d);return a.data()}; m.save=function(){var a=new Gc(this);I(a,0,[this.j,this.N,this.O,this.P,this.R,this.S,this.T,this.da,this.L,Fc(this)]);I(a,1,[this.u,this.J,this.i.Ja]);for(var b=this.B,c=0,d=[],e=0;e<b.K;e++){var f=b.B[e];if(f.va||f.Jb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,l=0,k=[];g<f.length;){for(var n=f[g],p=g+1;p<f.length&&f[p]===n;)p++;k[l++]=p-g;k[l++]=n;g=p}if(k.length<f.length){f=k;break a}}d[h]=f}}I(a,2,d);return a.data()};
m.restore=function(a){var b=a[0];this.j=b[0];this.M=b[1];this.N=b[2];this.O=b[3];this.P=b[4];this.R=b[5];this.S=b[6];this.ca=b[7]&65535;G(this,b[8]);Ec(this,b[9]);b=a[1];this.A=b[0];this.J=b[1];wc(this,b[3]);a:{b=this.D;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.aa){for(var f=0,h=Array(b.aa),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.D[d];if(!f||!f.restore(e)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b}; m.restore=function(a){var b=a[0];this.j=b[0];this.N=b[1];this.O=b[2];this.P=b[3];this.R=b[4];this.S=b[5];this.T=b[6];this.da=b[7]&65535;H(this,b[8]);Dc(this,b[9]);b=a[1];this.u=b[0];this.J=b[1];vc(this,b[3]);a:{b=this.B;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.Z){for(var f=0,h=Array(b.Z),g=0;g<e.length-1;)for(var l=e[g++],k=e[g++];l--;)h[f++]=k;e=h}f=b.B[d];if(!f||!f.restore(e)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
m.pa=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "SF":case "ZF":case "AF":case "PF":case "CF":this.T[b]=c;this.ja++;d=!0;break;default:d=this.parent.pa.call(this,a,b,c)}return d};function Hc(a){return a.M<<8|a.N}function Ic(a,b){a.M=b>>8&255;a.N=b&255}function Jc(a){return a.O<<8|a.P}function Kc(a,b){a.O=b>>8&255;a.P=b&255}function J(a){return a.R<<8|a.S} m.qa=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "SF":case "ZF":case "AF":case "PF":case "CF":this.U[b]=c;this.fa++;d=!0;break;default:d=this.parent.qa.call(this,a,b,c)}return d};function Hc(a){return a.N<<8|a.O}function Ic(a,b){a.N=b>>8&255;a.O=b&255}function Jc(a){return a.P<<8|a.R}function Kc(a,b){a.P=b>>8&255;a.R=b&255}function J(a){return a.S<<8|a.T}
function L(a,b){a.R=b>>8&255;a.S=b&255}function G(a,b){a.K=b&65535}function Lc(a){return a.G&256?1:0}function Mc(a){return nb[a.X&255]?4:0}function Nc(a){return(a.X^a.ha)&16?16:0}function Oc(a){return a.G&255?0:64}function Pc(a){return a.X&128?128:0}function Gc(a){return a.oa&-214|Pc(a)|Oc(a)|Nc(a)|Mc(a)|Lc(a)}function Ec(a,b){a.G=a.X=a.ha=0;b&1&&(a.G|=256);b&4||(a.X|=1);b&16&&(a.ha|=16);b&64||(a.G|=255);b&128&&(a.X^=192);a.oa=a.oa&-513|b&512|2} function Lc(a,b){a.S=b>>8&255;a.T=b&255}function H(a,b){a.L=b&65535}function Mc(a){return a.I&256?1:0}function Nc(a){return lb[a.Y&255]?4:0}function Oc(a){return(a.Y^a.ia)&16?16:0}function Pc(a){return a.I&255?0:64}function Qc(a){return a.Y&128?128:0}function Fc(a){return a.pa&-214|Qc(a)|Pc(a)|Oc(a)|Nc(a)|Mc(a)}function Dc(a,b){a.I=a.Y=a.ia=0;b&1&&(a.I|=256);b&4||(a.Y|=1);b&16&&(a.ia|=16);b&64||(a.I|=255);b&128&&(a.Y^=192);a.pa=a.pa&-513|b&512|2}
function Qc(a,b){a.ha=a.j^b;return a.X=(a.G=a.j+b)&255}function Rc(a,b){a.ha=a.j^b;return a.X=(a.G=a.j+b+(a.G&256?1:0))&255}function Sc(a,b){a.G=a.X=a.ha=a.j&b;(a.j|b)&8&&(a.ha^=16);return a.G}function jd(a,b){a.ha=b^255;b=a.X=b+255&255;a.G=a.G&-256|b;return b}function kd(a,b){a.ha=b;b=a.X=b+1&255;a.G=a.G&-256|b;return b}function ld(a,b){return a.X=a.G=a.ha=a.j|b}function M(a,b){b^=255;a.ha=a.j^b;return a.X=(a.G=a.j+b+1^256)&255} function Rc(a,b){a.ia=a.j^b;return a.Y=(a.I=a.j+b)&255}function Sc(a,b){a.ia=a.j^b;return a.Y=(a.I=a.j+b+(a.I&256?1:0))&255}function Tc(a,b){a.I=a.Y=a.ia=a.j&b;(a.j|b)&8&&(a.ia^=16);return a.I}function kd(a,b){a.ia=b^255;b=a.Y=b+255&255;a.I=a.I&-256|b;return b}function ld(a,b){a.ia=b;b=a.Y=b+1&255;a.I=a.I&-256|b;return b}function md(a,b){return a.Y=a.I=a.ia=a.j|b}function K(a,b){b^=255;a.ia=a.j^b;return a.Y=(a.I=a.j+b+1^256)&255}
function md(a,b){b^=255;a.ha=a.j^b;return a.X=(a.G=a.j+b+(a.G&256?0:1)^256)&255}function nd(a,b){return a.X=a.G=a.ha=a.j^b}m.V=function(a){return this.la[(a&this.L)>>>this.Z].Ka(a&this.H,a)};function od(a,b){var c=b&a.H,d=(b&a.L)>>>a.Z;if(c<a.H)return a.la[d].Rb(c,b);c=a.la[d].Ka(c,b);return c|=a.la[d+1&a.Y].Ka(0,b+1)<<8}function N(a,b,c){a.la[(b&a.L)>>>a.Z].Za(b&a.H,c&255,b)} function nd(a,b){b^=255;a.ia=a.j^b;return a.Y=(a.I=a.j+b+(a.I&256?0:1)^256)&255}function od(a,b){return a.Y=a.I=a.ia=a.j^b}m.W=function(a){return this.na[(a&this.K)>>>this.aa].Ka(a&this.G,a)};function pd(a,b){var c=b&a.G,d=(b&a.K)>>>a.aa;if(c<a.G)return a.na[d].Sb(c,b);c=a.na[d].Ka(c,b);return c|=a.na[d+1&a.X].Ka(0,b+1)<<8}function L(a,b,c){a.na[(b&a.K)>>>a.aa].Za(b&a.G,c&255,b)}
function pd(a,b,c){var d=b&a.H,e=(b&a.L)>>>a.Z;d<a.H?a.la[e].Tb(d,c&65535,b):(a.la[e++].Za(d,c&255,b),a.la[e&a.Y].Za(0,c>>8&255,b+1))}function O(a){var b=a.V(a.K);G(a,a.K+1);return b}function P(a){var b=od(a,a.K);G(a,a.K+2);return b}function Q(a){var b=od(a,a.ca);a.ca=a.ca+2&65535;return b}function R(a,b){a.ca=a.ca-2&65535;pd(a,a.ca,b)} function qd(a,b,c){var d=b&a.G,e=(b&a.K)>>>a.aa;d<a.G?a.na[e].Ub(d,c&65535,b):(a.na[e++].Za(d,c&255,b),a.na[e&a.X].Za(0,c>>8&255,b+1))}function M(a){var b=a.W(a.L);H(a,a.L+1);return b}function N(a){var b=pd(a,a.L);H(a,a.L+2);return b}function O(a){var b=pd(a,a.da);a.da=a.da+2&65535;return b}function P(a,b){a.da=a.da-2&65535;qd(a,a.da,b)}
function T(a,b,c,d){d=d||2;a.T[b]&&(void 0===c&&(lb(a,"Value for "+b+" is invalid"),a.da()),c=!a.w.ia||a.w.Jb?q(c,d):"--------".substr(0,d),a.T[b].textContent!=c&&(a.T[b].textContent=c))} function Q(a,b,c,d){d=d||2;a.U[b]&&(void 0===c&&(jb(a,"Value for "+b+" is invalid"),a.ea()),c=!a.A.ka||a.A.Kb?q(c,d):"--------".substr(0,d),a.U[b].textContent!=c&&(a.U[b].textContent=c))}
m.sa=function(a){this.ja&&(a||!this.w.ia||this.w.Jb)&&(T(this,"A",this.j),T(this,"B",this.M),T(this,"C",this.N),T(this,"BC",Hc(this),4),T(this,"D",this.O),T(this,"E",this.P),T(this,"DE",Jc(this),4),T(this,"H",this.R),T(this,"L",this.S),T(this,"HL",J(this),4),T(this,"SP",this.ca,4),T(this,"PC",this.K,4),a=Gc(this),T(this,"PS",a,4),T(this,"SF",a&128,1),T(this,"ZF",a&64,1),T(this,"AF",a&16,1),T(this,"PF",a&4,1),T(this,"CF",a&1,1));if(a=this.T.speed)a.textContent=this.w.ia&&this.i.Ga?this.i.Ga.toFixed(2)+ m.ta=function(a){this.fa&&(a||!this.A.ka||this.A.Kb)&&(Q(this,"A",this.j),Q(this,"B",this.N),Q(this,"C",this.O),Q(this,"BC",Hc(this),4),Q(this,"D",this.P),Q(this,"E",this.R),Q(this,"DE",Jc(this),4),Q(this,"H",this.S),Q(this,"L",this.T),Q(this,"HL",J(this),4),Q(this,"SP",this.da,4),Q(this,"PC",this.L,4),a=Fc(this),Q(this,"PS",a,4),Q(this,"SF",a&128?1:0,1),Q(this,"ZF",a&64?1:0,1),Q(this,"AF",a&16?1:0,1),Q(this,"PF",a&4?1:0,1),Q(this,"CF",a&1?1:0,1));if(a=this.U.speed)a.textContent=this.A.ka&&this.i.Ga?
"Mhz":"Stopped"};m.Ya=function(a){this.w.nb=!0;var b=this.w.Xb=this.C&&qd(this.C),c=a?this.w.ub?0:1:-1;this.w.ub=!1;this.F=this.b=a;do{if(this.A){var d;this.A&8&&this.oa&512?(d=199|(this.A&7)<<3,this.A&=-16,this.oa&=-513,this.ba[d].call(this),d=!0):d=!1;if(d){if(!a){this.g("interrupt dispatched");break}}else if(this.A&16){this.b=0;break}}if(b){if(rd(this.C,this.K,c)){this.da();break}c=1}this.ba[O(this)].call(this)}while(0<this.b);return this.w.nb?this.F-this.b:void 0===this.w.nb?0:-1}; this.i.Ga.toFixed(2)+"Mhz":"Stopped"};
Ma(function(){for(var a=A(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Ac(d);eb(d,c)}});function sd(){this.b-=4}function td(){G(this,P(this));this.b-=10}function ud(){G(this,Q(this));this.b-=10}function vd(){var a=P(this);R(this,this.K);G(this,a);this.b-=17} m.Ya=function(a){this.A.nb=!0;var b=this.A.Yb=this.F&&rd(this.F),c=a?this.A.ub?0:1:-1;this.A.ub=!1;this.D=this.b=a;do{if(this.u){var d;this.u&8&&this.pa&512?(d=199|(this.u&7)<<3,this.u&=-16,this.pa&=-513,this.ba[d].call(this),d=!0):d=!1;if(d){if(!a){this.g("interrupt dispatched");break}}else if(this.u&16){this.b=0;break}}if(b){if(sd(this.F,this.L,c)){this.ea();break}c=1}this.ba[M(this)].call(this)}while(0<this.b);return this.A.nb?this.D-this.b:void 0===this.A.nb?0:-1};
var Bc=[sd,function(){Ic(this,P(this));this.b-=10},function(){N(this,Hc(this),this.j);this.b-=7},function(){Ic(this,Hc(this)+1);this.b-=5},function(){this.M=kd(this,this.M);this.b-=5},function(){this.M=jd(this,this.M);this.b-=5},function(){this.M=O(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|a>>8;this.G=this.G&255|a&256;this.b-=4},sd,function(){var a;L(this,a=J(this)+Hc(this));this.G=this.G&255|a>>8&256;this.b-=10},function(){this.j=this.V(Hc(this));this.b-=7},function(){Ic(this,Hc(this)- Ja(function(){for(var a=D(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new zc(d);ab(d,c)}});function td(){this.b-=4}function ud(){H(this,N(this));this.b-=10}function vd(){H(this,O(this));this.b-=10}function wd(){var a=N(this);P(this,this.L);H(this,a);this.b-=17}
1);this.b-=5},function(){this.N=kd(this,this.N);this.b-=5},function(){this.N=jd(this,this.N);this.b-=5},function(){this.N=O(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(a|this.j)>>1;this.G=this.G&255|a;this.b-=4},sd,function(){Kc(this,P(this));this.b-=10},function(){N(this,Jc(this),this.j);this.b-=7},function(){Kc(this,Jc(this)+1);this.b-=5},function(){this.O=kd(this,this.O);this.b-=5},function(){this.O=jd(this,this.O);this.b-=5},function(){this.O=O(this);this.b-=7},function(){var a=this.j<< var Ac=[td,function(){Ic(this,N(this));this.b-=10},function(){L(this,Hc(this),this.j);this.b-=7},function(){Ic(this,Hc(this)+1);this.b-=5},function(){this.N=ld(this,this.N);this.b-=5},function(){this.N=kd(this,this.N);this.b-=5},function(){this.N=M(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|a>>8;this.I=this.I&255|a&256;this.b-=4},td,function(){var a;Lc(this,a=J(this)+Hc(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.W(Hc(this));this.b-=7},function(){Ic(this,Hc(this)-
1;this.j=a&255|this.G>>8;this.G=this.G&255|a&256;this.b-=4},sd,function(){var a;L(this,a=J(this)+Jc(this));this.G=this.G&255|a>>8&256;this.b-=10},function(){this.j=this.V(Jc(this));this.b-=7},function(){Kc(this,Jc(this)-1);this.b-=5},function(){this.P=kd(this,this.P);this.b-=5},function(){this.P=jd(this,this.P);this.b-=5},function(){this.P=O(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(this.G&256|this.j)>>1;this.G=this.G&255|a;this.b-=4},sd,function(){L(this,P(this));this.b-=10},function(){pd(this, 1);this.b-=5},function(){this.O=ld(this,this.O);this.b-=5},function(){this.O=kd(this,this.O);this.b-=5},function(){this.O=M(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(a|this.j)>>1;this.I=this.I&255|a;this.b-=4},td,function(){Kc(this,N(this));this.b-=10},function(){L(this,Jc(this),this.j);this.b-=7},function(){Kc(this,Jc(this)+1);this.b-=5},function(){this.P=ld(this,this.P);this.b-=5},function(){this.P=kd(this,this.P);this.b-=5},function(){this.P=M(this);this.b-=7},function(){var a=this.j<<
P(this),J(this));this.b-=16},function(){L(this,J(this)+1);this.b-=5},function(){this.R=kd(this,this.R);this.b-=5},function(){this.R=jd(this,this.R);this.b-=5},function(){this.R=O(this);this.b-=7},function(){var a=0,b=Lc(this);if(Nc(this)||9<(this.j&15))a|=6;if(b||154<=this.j)a|=96,b=1;this.j=Qc(this,a);this.G=b?this.G|256:this.G&-257;this.b-=4},sd,function(){var a;L(this,a=J(this)+J(this));this.G=this.G&255|a>>8&256;this.b-=10},function(){L(this,od(this,P(this)));this.b-=16},function(){L(this,J(this)- 1;this.j=a&255|this.I>>8;this.I=this.I&255|a&256;this.b-=4},td,function(){var a;Lc(this,a=J(this)+Jc(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.W(Jc(this));this.b-=7},function(){Kc(this,Jc(this)-1);this.b-=5},function(){this.R=ld(this,this.R);this.b-=5},function(){this.R=kd(this,this.R);this.b-=5},function(){this.R=M(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(this.I&256|this.j)>>1;this.I=this.I&255|a;this.b-=4},td,function(){Lc(this,N(this));this.b-=10},function(){qd(this,
1);this.b-=5},function(){this.S=kd(this,this.S);this.b-=5},function(){this.S=jd(this,this.S);this.b-=5},function(){this.S=O(this);this.b-=7},function(){this.j=~this.j&255;this.b-=4},sd,function(){this.ca=P(this)&65535;this.b-=10},function(){N(this,P(this),this.j);this.b-=13},function(){this.ca=this.ca+1&65535;this.b-=5},function(){var a=J(this);N(this,a,kd(this,this.V(a)));this.b-=10},function(){var a=J(this);N(this,a,jd(this,this.V(a)));this.b-=10},function(){N(this,J(this),O(this));this.b-=10}, N(this),J(this));this.b-=16},function(){Lc(this,J(this)+1);this.b-=5},function(){this.S=ld(this,this.S);this.b-=5},function(){this.S=kd(this,this.S);this.b-=5},function(){this.S=M(this);this.b-=7},function(){var a=0,b=Mc(this);if(Oc(this)||9<(this.j&15))a|=6;if(b||154<=this.j)a|=96,b=1;this.j=Rc(this,a);this.I=b?this.I|256:this.I&-257;this.b-=4},td,function(){var a;Lc(this,a=J(this)+J(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){Lc(this,pd(this,N(this)));this.b-=16},function(){Lc(this,
function(){this.G|=256;this.b-=4},sd,function(){var a;L(this,a=J(this)+this.ca);this.G=this.G&255|a>>8&256;this.b-=10},function(){this.j=this.V(P(this));this.b-=13},function(){this.ca=this.ca-1&65535;this.b-=5},function(){this.j=kd(this,this.j);this.b-=5},function(){this.j=jd(this,this.j);this.b-=5},function(){this.j=O(this);this.b-=7},function(){this.G=Lc(this)?this.G&-257:this.G|256;this.b-=4},function(){this.b-=5},function(){this.M=this.N;this.b-=5},function(){this.M=this.O;this.b-=5},function(){this.M= J(this)-1);this.b-=5},function(){this.T=ld(this,this.T);this.b-=5},function(){this.T=kd(this,this.T);this.b-=5},function(){this.T=M(this);this.b-=7},function(){this.j=~this.j&255;this.b-=4},td,function(){this.da=N(this)&65535;this.b-=10},function(){L(this,N(this),this.j);this.b-=13},function(){this.da=this.da+1&65535;this.b-=5},function(){var a=J(this);L(this,a,ld(this,this.W(a)));this.b-=10},function(){var a=J(this);L(this,a,kd(this,this.W(a)));this.b-=10},function(){L(this,J(this),M(this));this.b-=
this.P;this.b-=5},function(){this.M=this.R;this.b-=5},function(){this.M=this.S;this.b-=5},function(){this.M=this.V(J(this));this.b-=7},function(){this.M=this.j;this.b-=5},function(){this.N=this.M;this.b-=5},function(){this.b-=5},function(){this.N=this.O;this.b-=5},function(){this.N=this.P;this.b-=5},function(){this.N=this.R;this.b-=5},function(){this.N=this.S;this.b-=5},function(){this.N=this.V(J(this));this.b-=7},function(){this.N=this.j;this.b-=5},function(){this.O=this.M;this.b-=5},function(){this.O= 10},function(){this.I|=256;this.b-=4},td,function(){var a;Lc(this,a=J(this)+this.da);this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.W(N(this));this.b-=13},function(){this.da=this.da-1&65535;this.b-=5},function(){this.j=ld(this,this.j);this.b-=5},function(){this.j=kd(this,this.j);this.b-=5},function(){this.j=M(this);this.b-=7},function(){this.I=Mc(this)?this.I&-257:this.I|256;this.b-=4},function(){this.b-=5},function(){this.N=this.O;this.b-=5},function(){this.N=this.P;this.b-=5},function(){this.N=
this.N;this.b-=5},function(){this.b-=5},function(){this.O=this.P;this.b-=5},function(){this.O=this.R;this.b-=5},function(){this.O=this.S;this.b-=5},function(){this.O=this.V(J(this));this.b-=7},function(){this.O=this.j;this.b-=5},function(){this.P=this.M;this.b-=5},function(){this.P=this.N;this.b-=5},function(){this.P=this.O;this.b-=5},function(){this.b-=5},function(){this.P=this.R;this.b-=5},function(){this.P=this.S;this.b-=5},function(){this.P=this.V(J(this));this.b-=7},function(){this.P=this.j; this.R;this.b-=5},function(){this.N=this.S;this.b-=5},function(){this.N=this.T;this.b-=5},function(){this.N=this.W(J(this));this.b-=7},function(){this.N=this.j;this.b-=5},function(){this.O=this.N;this.b-=5},function(){this.b-=5},function(){this.O=this.P;this.b-=5},function(){this.O=this.R;this.b-=5},function(){this.O=this.S;this.b-=5},function(){this.O=this.T;this.b-=5},function(){this.O=this.W(J(this));this.b-=7},function(){this.O=this.j;this.b-=5},function(){this.P=this.N;this.b-=5},function(){this.P=
this.b-=5},function(){this.R=this.M;this.b-=5},function(){this.R=this.N;this.b-=5},function(){this.R=this.O;this.b-=5},function(){this.R=this.P;this.b-=5},function(){this.b-=5},function(){this.R=this.S;this.b-=5},function(){this.R=this.V(J(this));this.b-=7},function(){this.R=this.j;this.b-=5},function(){this.S=this.M;this.b-=5},function(){this.S=this.N;this.b-=5},function(){this.S=this.O;this.b-=5},function(){this.S=this.P;this.b-=5},function(){this.S=this.R;this.b-=5},function(){this.b-=5},function(){this.S= this.O;this.b-=5},function(){this.b-=5},function(){this.P=this.R;this.b-=5},function(){this.P=this.S;this.b-=5},function(){this.P=this.T;this.b-=5},function(){this.P=this.W(J(this));this.b-=7},function(){this.P=this.j;this.b-=5},function(){this.R=this.N;this.b-=5},function(){this.R=this.O;this.b-=5},function(){this.R=this.P;this.b-=5},function(){this.b-=5},function(){this.R=this.S;this.b-=5},function(){this.R=this.T;this.b-=5},function(){this.R=this.W(J(this));this.b-=7},function(){this.R=this.j;
this.V(J(this));this.b-=7},function(){this.S=this.j;this.b-=5},function(){N(this,J(this),this.M);this.b-=7},function(){N(this,J(this),this.N);this.b-=7},function(){N(this,J(this),this.O);this.b-=7},function(){N(this,J(this),this.P);this.b-=7},function(){N(this,J(this),this.R);this.b-=7},function(){N(this,J(this),this.S);this.b-=7},function(){var a=this.K-1;if(this.U.length)for(var b=0;b<this.U.length;b++)if(this.U[b](a))return;this.A|=16;this.b-=7;this.C&&hb(this,-2147483648)?(G(this,a),this.C.da()): this.b-=5},function(){this.S=this.N;this.b-=5},function(){this.S=this.O;this.b-=5},function(){this.S=this.P;this.b-=5},function(){this.S=this.R;this.b-=5},function(){this.b-=5},function(){this.S=this.T;this.b-=5},function(){this.S=this.W(J(this));this.b-=7},function(){this.S=this.j;this.b-=5},function(){this.T=this.N;this.b-=5},function(){this.T=this.O;this.b-=5},function(){this.T=this.P;this.b-=5},function(){this.T=this.R;this.b-=5},function(){this.T=this.S;this.b-=5},function(){this.b-=5},function(){this.T=
this.oa&512||(this.C&&G(this,a),this.da())},function(){N(this,J(this),this.j);this.b-=7},function(){this.j=this.M;this.b-=5},function(){this.j=this.N;this.b-=5},function(){this.j=this.O;this.b-=5},function(){this.j=this.P;this.b-=5},function(){this.j=this.R;this.b-=5},function(){this.j=this.S;this.b-=5},function(){this.j=this.V(J(this));this.b-=7},function(){this.b-=5},function(){this.j=Qc(this,this.M);this.b-=4},function(){this.j=Qc(this,this.N);this.b-=4},function(){this.j=Qc(this,this.O);this.b-= this.W(J(this));this.b-=7},function(){this.T=this.j;this.b-=5},function(){L(this,J(this),this.N);this.b-=7},function(){L(this,J(this),this.O);this.b-=7},function(){L(this,J(this),this.P);this.b-=7},function(){L(this,J(this),this.R);this.b-=7},function(){L(this,J(this),this.S);this.b-=7},function(){L(this,J(this),this.T);this.b-=7},function(){var a=this.L-1;if(this.M.length)for(var b=0;b<this.M.length;b++)if(this.M[b](a))return;this.u|=16;this.b-=7;this.F&&fb(this,-2147483648)?(H(this,a),this.F.ea()):
4},function(){this.j=Qc(this,this.P);this.b-=4},function(){this.j=Qc(this,this.R);this.b-=4},function(){this.j=Qc(this,this.S);this.b-=4},function(){this.j=Qc(this,this.V(J(this)));this.b-=7},function(){this.j=Qc(this,this.j);this.b-=4},function(){this.j=Rc(this,this.M);this.b-=4},function(){this.j=Rc(this,this.N);this.b-=4},function(){this.j=Rc(this,this.O);this.b-=4},function(){this.j=Rc(this,this.P);this.b-=4},function(){this.j=Rc(this,this.R);this.b-=4},function(){this.j=Rc(this,this.S);this.b-= this.pa&512||(this.F&&H(this,a),this.ea())},function(){L(this,J(this),this.j);this.b-=7},function(){this.j=this.N;this.b-=5},function(){this.j=this.O;this.b-=5},function(){this.j=this.P;this.b-=5},function(){this.j=this.R;this.b-=5},function(){this.j=this.S;this.b-=5},function(){this.j=this.T;this.b-=5},function(){this.j=this.W(J(this));this.b-=7},function(){this.b-=5},function(){this.j=Rc(this,this.N);this.b-=4},function(){this.j=Rc(this,this.O);this.b-=4},function(){this.j=Rc(this,this.P);this.b-=
4},function(){this.j=Rc(this,this.V(J(this)));this.b-=7},function(){this.j=Rc(this,this.j);this.b-=4},function(){this.j=M(this,this.M);this.b-=4},function(){this.j=M(this,this.N);this.b-=4},function(){this.j=M(this,this.O);this.b-=4},function(){this.j=M(this,this.P);this.b-=4},function(){this.j=M(this,this.R);this.b-=4},function(){this.j=M(this,this.S);this.b-=4},function(){this.j=M(this,this.V(J(this)));this.b-=7},function(){this.j=M(this,this.j);this.b-=4},function(){this.j=md(this,this.M);this.b-= 4},function(){this.j=Rc(this,this.R);this.b-=4},function(){this.j=Rc(this,this.S);this.b-=4},function(){this.j=Rc(this,this.T);this.b-=4},function(){this.j=Rc(this,this.W(J(this)));this.b-=7},function(){this.j=Rc(this,this.j);this.b-=4},function(){this.j=Sc(this,this.N);this.b-=4},function(){this.j=Sc(this,this.O);this.b-=4},function(){this.j=Sc(this,this.P);this.b-=4},function(){this.j=Sc(this,this.R);this.b-=4},function(){this.j=Sc(this,this.S);this.b-=4},function(){this.j=Sc(this,this.T);this.b-=
4},function(){this.j=md(this,this.N);this.b-=4},function(){this.j=md(this,this.O);this.b-=4},function(){this.j=md(this,this.P);this.b-=4},function(){this.j=md(this,this.R);this.b-=4},function(){this.j=md(this,this.S);this.b-=4},function(){this.j=md(this,this.V(J(this)));this.b-=7},function(){this.j=md(this,this.j);this.b-=4},function(){this.j=Sc(this,this.M);this.b-=4},function(){this.j=Sc(this,this.N);this.b-=4},function(){this.j=Sc(this,this.O);this.b-=4},function(){this.j=Sc(this,this.P);this.b-= 4},function(){this.j=Sc(this,this.W(J(this)));this.b-=7},function(){this.j=Sc(this,this.j);this.b-=4},function(){this.j=K(this,this.N);this.b-=4},function(){this.j=K(this,this.O);this.b-=4},function(){this.j=K(this,this.P);this.b-=4},function(){this.j=K(this,this.R);this.b-=4},function(){this.j=K(this,this.S);this.b-=4},function(){this.j=K(this,this.T);this.b-=4},function(){this.j=K(this,this.W(J(this)));this.b-=7},function(){this.j=K(this,this.j);this.b-=4},function(){this.j=nd(this,this.N);this.b-=
4},function(){this.j=Sc(this,this.R);this.b-=4},function(){this.j=Sc(this,this.S);this.b-=4},function(){this.j=Sc(this,this.V(J(this)));this.b-=7},function(){this.j=Sc(this,this.j);this.b-=4},function(){this.j=nd(this,this.M);this.b-=4},function(){this.j=nd(this,this.N);this.b-=4},function(){this.j=nd(this,this.O);this.b-=4},function(){this.j=nd(this,this.P);this.b-=4},function(){this.j=nd(this,this.R);this.b-=4},function(){this.j=nd(this,this.S);this.b-=4},function(){this.j=nd(this,this.V(J(this))); 4},function(){this.j=nd(this,this.O);this.b-=4},function(){this.j=nd(this,this.P);this.b-=4},function(){this.j=nd(this,this.R);this.b-=4},function(){this.j=nd(this,this.S);this.b-=4},function(){this.j=nd(this,this.T);this.b-=4},function(){this.j=nd(this,this.W(J(this)));this.b-=7},function(){this.j=nd(this,this.j);this.b-=4},function(){this.j=Tc(this,this.N);this.b-=4},function(){this.j=Tc(this,this.O);this.b-=4},function(){this.j=Tc(this,this.P);this.b-=4},function(){this.j=Tc(this,this.R);this.b-=
this.b-=7},function(){this.j=nd(this,this.j);this.b-=4},function(){this.j=ld(this,this.M);this.b-=4},function(){this.j=ld(this,this.N);this.b-=4},function(){this.j=ld(this,this.O);this.b-=4},function(){this.j=ld(this,this.P);this.b-=4},function(){this.j=ld(this,this.R);this.b-=4},function(){this.j=ld(this,this.S);this.b-=4},function(){this.j=ld(this,this.V(J(this)));this.b-=7},function(){this.j=ld(this,this.j);this.b-=4},function(){M(this,this.M);this.b-=4},function(){M(this,this.N);this.b-=4},function(){M(this, 4},function(){this.j=Tc(this,this.S);this.b-=4},function(){this.j=Tc(this,this.T);this.b-=4},function(){this.j=Tc(this,this.W(J(this)));this.b-=7},function(){this.j=Tc(this,this.j);this.b-=4},function(){this.j=od(this,this.N);this.b-=4},function(){this.j=od(this,this.O);this.b-=4},function(){this.j=od(this,this.P);this.b-=4},function(){this.j=od(this,this.R);this.b-=4},function(){this.j=od(this,this.S);this.b-=4},function(){this.j=od(this,this.T);this.b-=4},function(){this.j=od(this,this.W(J(this)));
this.O);this.b-=4},function(){M(this,this.P);this.b-=4},function(){M(this,this.R);this.b-=4},function(){M(this,this.S);this.b-=4},function(){M(this,this.V(J(this)));this.b-=7},function(){M(this,this.j);this.b-=4},function(){Oc(this)||(G(this,Q(this)),this.b-=6);this.b-=5},function(){Ic(this,Q(this));this.b-=10},function(){var a=P(this);Oc(this)||G(this,a);this.b-=10},td,function(){var a=P(this);Oc(this)||(R(this,this.K),G(this,a),this.b-=6);this.b-=11},function(){R(this,Hc(this));this.b-=11},function(){this.j= this.b-=7},function(){this.j=od(this,this.j);this.b-=4},function(){this.j=md(this,this.N);this.b-=4},function(){this.j=md(this,this.O);this.b-=4},function(){this.j=md(this,this.P);this.b-=4},function(){this.j=md(this,this.R);this.b-=4},function(){this.j=md(this,this.S);this.b-=4},function(){this.j=md(this,this.T);this.b-=4},function(){this.j=md(this,this.W(J(this)));this.b-=7},function(){this.j=md(this,this.j);this.b-=4},function(){K(this,this.N);this.b-=4},function(){K(this,this.O);this.b-=4},function(){K(this,
Qc(this,O(this));this.b-=7},function(){R(this,this.K);G(this,0);this.b-=11},function(){Oc(this)&&(G(this,Q(this)),this.b-=6);this.b-=5},ud,function(){var a=P(this);Oc(this)&&G(this,a);this.b-=10},td,function(){var a=P(this);Oc(this)&&(R(this,this.K),G(this,a),this.b-=6);this.b-=11},vd,function(){this.j=Rc(this,O(this));this.b-=7},function(){R(this,this.K);G(this,8);this.b-=11},function(){Lc(this)||(G(this,Q(this)),this.b-=6);this.b-=5},function(){Kc(this,Q(this));this.b-=10},function(){var a=P(this); this.P);this.b-=4},function(){K(this,this.R);this.b-=4},function(){K(this,this.S);this.b-=4},function(){K(this,this.T);this.b-=4},function(){K(this,this.W(J(this)));this.b-=7},function(){K(this,this.j);this.b-=4},function(){Pc(this)||(H(this,O(this)),this.b-=6);this.b-=5},function(){Ic(this,O(this));this.b-=10},function(){var a=N(this);Pc(this)||H(this,a);this.b-=10},ud,function(){var a=N(this);Pc(this)||(P(this,this.L),H(this,a),this.b-=6);this.b-=11},function(){P(this,Hc(this));this.b-=11},function(){this.j=
Lc(this)||G(this,a);this.b-=10},function(){var a=O(this);Jb(this.D,a,this.j,this.K+-2&65535);this.b-=10},function(){var a=P(this);Lc(this)||(R(this,this.K),G(this,a),this.b-=6);this.b-=11},function(){R(this,Jc(this));this.b-=11},function(){this.j=M(this,O(this));this.b-=7},function(){R(this,this.K);G(this,16);this.b-=11},function(){Lc(this)&&(G(this,Q(this)),this.b-=6);this.b-=5},ud,function(){var a=P(this);Lc(this)&&G(this,a);this.b-=10},function(){var a=O(this);this.j=Gb(this.D,a,this.K+-2&65535)& Rc(this,M(this));this.b-=7},function(){P(this,this.L);H(this,0);this.b-=11},function(){Pc(this)&&(H(this,O(this)),this.b-=6);this.b-=5},vd,function(){var a=N(this);Pc(this)&&H(this,a);this.b-=10},ud,function(){var a=N(this);Pc(this)&&(P(this,this.L),H(this,a),this.b-=6);this.b-=11},wd,function(){this.j=Sc(this,M(this));this.b-=7},function(){P(this,this.L);H(this,8);this.b-=11},function(){Mc(this)||(H(this,O(this)),this.b-=6);this.b-=5},function(){Kc(this,O(this));this.b-=10},function(){var a=N(this);
255;this.b-=10},function(){var a=P(this);Lc(this)&&(R(this,this.K),G(this,a),this.b-=6);this.b-=11},vd,function(){this.j=md(this,O(this));this.b-=7},function(){R(this,this.K);G(this,24);this.b-=11},function(){Mc(this)||(G(this,Q(this)),this.b-=6);this.b-=5},function(){L(this,Q(this));this.b-=10},function(){var a=P(this);Mc(this)||G(this,a);this.b-=10},function(){var a=Q(this);R(this,J(this));L(this,a);this.b-=18},function(){var a=P(this);Mc(this)||(R(this,this.K),G(this,a),this.b-=6);this.b-=11}, Mc(this)||H(this,a);this.b-=10},function(){var a=M(this);Ib(this.B,a,this.j,this.L+-2&65535);this.b-=10},function(){var a=N(this);Mc(this)||(P(this,this.L),H(this,a),this.b-=6);this.b-=11},function(){P(this,Jc(this));this.b-=11},function(){this.j=K(this,M(this));this.b-=7},function(){P(this,this.L);H(this,16);this.b-=11},function(){Mc(this)&&(H(this,O(this)),this.b-=6);this.b-=5},vd,function(){var a=N(this);Mc(this)&&H(this,a);this.b-=10},function(){var a=M(this);this.j=xb(this.B,a,this.L+-2&65535)&
function(){R(this,J(this));this.b-=11},function(){this.j=Sc(this,O(this));this.b-=7},function(){R(this,this.K);G(this,32);this.b-=11},function(){Mc(this)&&(G(this,Q(this)),this.b-=6);this.b-=5},function(){G(this,J(this));this.b-=5},function(){var a=P(this);Mc(this)&&G(this,a);this.b-=10},function(){var a=J(this);L(this,Jc(this));Kc(this,a);this.b-=5},function(){var a=P(this);Mc(this)&&(R(this,this.K),G(this,a),this.b-=6);this.b-=11},vd,function(){this.j=nd(this,O(this));this.b-=7},function(){R(this, 255;this.b-=10},function(){var a=N(this);Mc(this)&&(P(this,this.L),H(this,a),this.b-=6);this.b-=11},wd,function(){this.j=nd(this,M(this));this.b-=7},function(){P(this,this.L);H(this,24);this.b-=11},function(){Nc(this)||(H(this,O(this)),this.b-=6);this.b-=5},function(){Lc(this,O(this));this.b-=10},function(){var a=N(this);Nc(this)||H(this,a);this.b-=10},function(){var a=O(this);P(this,J(this));Lc(this,a);this.b-=18},function(){var a=N(this);Nc(this)||(P(this,this.L),H(this,a),this.b-=6);this.b-=11},
this.K);G(this,40);this.b-=11},function(){Pc(this)||(G(this,Q(this)),this.b-=6);this.b-=5},function(){var a=Q(this);Ec(this,a);this.j=a>>8;this.b-=10},function(){var a=P(this);Pc(this)||G(this,a);this.b-=10},function(){this.oa&=-513;this.b-=4},function(){var a=P(this);Pc(this)||(R(this,this.K),G(this,a),this.b-=6);this.b-=11},function(){R(this,Gc(this)&255|this.j<<8);this.b-=11},function(){this.j=ld(this,O(this));this.b-=7},function(){R(this,this.K);G(this,48);this.b-=11},function(){Pc(this)&&(G(this, function(){P(this,J(this));this.b-=11},function(){this.j=Tc(this,M(this));this.b-=7},function(){P(this,this.L);H(this,32);this.b-=11},function(){Nc(this)&&(H(this,O(this)),this.b-=6);this.b-=5},function(){H(this,J(this));this.b-=5},function(){var a=N(this);Nc(this)&&H(this,a);this.b-=10},function(){var a=J(this);Lc(this,Jc(this));Kc(this,a);this.b-=5},function(){var a=N(this);Nc(this)&&(P(this,this.L),H(this,a),this.b-=6);this.b-=11},wd,function(){this.j=od(this,M(this));this.b-=7},function(){P(this,
Q(this)),this.b-=6);this.b-=5},function(){this.ca=J(this)&65535;this.b-=5},function(){var a=P(this);Pc(this)&&G(this,a);this.b-=10},function(){this.oa|=512;this.b-=4},function(){var a=P(this);Pc(this)&&(R(this,this.K),G(this,a),this.b-=6);this.b-=11},vd,function(){M(this,O(this));this.b-=7},function(){R(this,this.K);G(this,56);this.b-=11}]; this.L);H(this,40);this.b-=11},function(){Qc(this)||(H(this,O(this)),this.b-=6);this.b-=5},function(){var a=O(this);Dc(this,a);this.j=a>>8;this.b-=10},function(){var a=N(this);Qc(this)||H(this,a);this.b-=10},function(){this.pa&=-513;this.b-=4},function(){var a=N(this);Qc(this)||(P(this,this.L),H(this,a),this.b-=6);this.b-=11},function(){P(this,Fc(this)&255|this.j<<8);this.b-=11},function(){this.j=md(this,M(this));this.b-=7},function(){P(this,this.L);H(this,48);this.b-=11},function(){Qc(this)&&(H(this,
function U(a){u.call(this,"ChipSet",a,U,32768);var b=a.model;b&&!wd[b]&&t("Unrecognized ChipSet model: "+b);this.Ra=wd[b]||xd;a.sound&&(this.W=null,window&&(this.W=window.AudioContext||window.webkitAudioContext),this.W&&new this.W);B(this)}x(U);var xd=1978.1,wd={SI1978:xd};m=U.prototype;m.pa=function(){return!1}; O(this)),this.b-=6);this.b-=5},function(){this.da=J(this)&65535;this.b-=5},function(){var a=N(this);Qc(this)&&H(this,a);this.b-=10},function(){this.pa|=512;this.b-=4},function(){var a=N(this);Qc(this)&&(P(this,this.L),H(this,a),this.b-=6);this.b-=11},wd,function(){K(this,M(this));this.b-=7},function(){P(this,this.L);H(this,56);this.b-=11}];
m.Ba=function(a,b,c,d){this.D=b;this.b=c;this.C=d;this.u=a;if(this.Ra==xd){var e;a=yd;void 0===e&&(e=0);for(var f in a){c=b;d=+f+e;var h=a[f].bind(this);if(void 0!==h)for(var g=+f+e;g<=d;g++)void 0!==c.u[g]?t("Input port "+r(g)+" already registered"):c.u[g]=[h,!1]}var k;e=zd;void 0===k&&(k=0);for(var l in e)if(f=b,a=+l+k,c=e[l].bind(this),void 0!==c)for(d=+l+k;d<=a;d++)void 0!==f.A[d]?t("Output port "+r(d)+" already registered"):f.A[d]=[c,!1]}}; function R(a){v.call(this,"ChipSet",a,R,32768);var b=a.model;b&&!xd[b]&&t("Unrecognized ChipSet model: "+b);this.Ra=xd[b]||yd;a.sound&&(this.V=null,window&&(this.V=window.AudioContext||window.webkitAudioContext),this.V&&new this.V);E(this)}z(R);var yd=1978.1,xd={SI1978:yd};m=R.prototype;m.qa=function(){return!1};
m.xa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.wa=function(a){return a?this.save():!0};m.reset=function(){this.H=this.I=this.F=this.A=this.U=this.L=this.J=0};m.save=function(){var a=new H(this);this.Ra==xd&&I(a,0,[this.J,this.L,this.U,this.A,this.F,this.H,this.I]);return a.data()};m.restore=function(a){a=a[0];this.Ra==xd&&(this.J=a[0],this.L=a[1],this.U=a[2],this.A=a[3],this.F=a[4],this.H=a[5],this.I=a[6]);return!0};m.start=function(){};m.stop=function(){}; m.Ba=function(a,b,c,d){this.B=b;this.b=c;this.F=d;this.w=a;if(this.Ra==yd){var e;a=zd;void 0===e&&(e=0);for(var f in a){c=b;d=+f+e;var h=a[f].bind(this);if(void 0!==h)for(var g=+f+e;g<=d;g++)void 0!==c.w[g]?t("Input port "+r(g)+" already registered"):c.w[g]=[h,!1]}var l;e=Ad;void 0===l&&(l=0);for(var k in e)if(f=b,a=+k+l,c=e[k].bind(this),void 0!==c)for(d=+k+l;d<=a;d++)void 0!==f.u[d]?t("Output port "+r(d)+" already registered"):f.u[d]=[c,!1]}};
m.bc=function(a,b){var c=this.J;fb(this,a,null,b,"STATUS0",c);return c};m.cc=function(a,b){var c=this.L;fb(this,a,null,b,"STATUS1",c);return c};m.dc=function(a,b){var c=this.U;fb(this,a,null,b,"STATUS2",c);return c};m.ac=function(a,b){var c=this.A>>8-this.F&255;fb(this,a,null,b,"SHIFT.RESULT",c);return c};m.ic=function(a,b,c){fb(this,a,b,c,"SHIFT.COUNT",null);this.F=b};m.kc=function(a,b,c){fb(this,a,b,c,"SOUND1",null);this.H=b}; m.ya=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.xa=function(a){return a?this.save():!0};m.reset=function(){this.G=this.H=this.D=this.u=this.M=this.K=this.J=0};m.save=function(){var a=new Gc(this);this.Ra==yd&&I(a,0,[this.J,this.K,this.M,this.u,this.D,this.G,this.H]);return a.data()};m.restore=function(a){a=a[0];this.Ra==yd&&(this.J=a[0],this.K=a[1],this.M=a[2],this.u=a[3],this.D=a[4],this.G=a[5],this.H=a[6]);return!0};m.start=function(){};m.stop=function(){};
m.jc=function(a,b,c){fb(this,a,b,c,"SHIFT.DATA",null);this.A=b<<8|this.A>>8};m.lc=function(a,b,c){fb(this,a,b,c,"SOUND2",null);this.I=b};m.mc=function(a,b,c){fb(this,a,b,c,"WATCHDOG",null)};var yd={0:U.prototype.bc,1:U.prototype.cc,2:U.prototype.dc,3:U.prototype.ac},zd={2:U.prototype.ic,3:U.prototype.kc,4:U.prototype.jc,5:U.prototype.lc,6:U.prototype.mc};Ma(function(){for(var a=A(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new U(d);eb(d,c)}}); m.bc=function(a,b){var c=this.J;db(this,a,null,b,"STATUS0",c);return c};m.cc=function(a,b){var c=this.K;db(this,a,null,b,"STATUS1",c);return c};m.dc=function(a,b){var c=this.M;db(this,a,null,b,"STATUS2",c);return c};m.ac=function(a,b){var c=this.u>>8-this.D&255;db(this,a,null,b,"SHIFT.RESULT",c);return c};m.ic=function(a,b,c){db(this,a,b,c,"SHIFT.COUNT",null);this.D=b};m.kc=function(a,b,c){db(this,a,b,c,"SOUND1",null);this.G=b};
function Ad(a){u.call(this,"ROM",a,Ad);this.u=null;this.I=a.addr;this.A=a.size;this.J=a.writable;this.F=a.alias;this.H=a.file;this.L=ba(this.H);if(this.H){a=this.H;var b=ca(this.L);"json"!=b&&"hex"!=b&&(a=na()+"/api/v1/dump?file="+this.H+"&format=bytes&decimal=true");var c=this;ma(a,null,!0,function(a,b,f){Bd(c,a,b,f)})}}x(Ad);var Cd=[0,5];Ad.prototype.Ba=function(a,b,c,d){this.D=b;this.b=c;this.C=d;Dd(this)}; m.jc=function(a,b,c){db(this,a,b,c,"SHIFT.DATA",null);this.u=b<<8|this.u>>8};m.lc=function(a,b,c){db(this,a,b,c,"SOUND2",null);this.H=b};m.mc=function(a,b,c){db(this,a,b,c,"WATCHDOG",null)};var zd={0:R.prototype.bc,1:R.prototype.cc,2:R.prototype.dc,3:R.prototype.ac},Ad={2:R.prototype.ic,3:R.prototype.kc,4:R.prototype.jc,5:R.prototype.lc,6:R.prototype.mc};Ja(function(){for(var a=D(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new R(d);ab(d,c)}});
Ad.prototype.xa=function(){if(this.ya){if(this.C){var a=this.C,b=this.id,c=this.I,d=this.A,e=this.ya,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var n=f,k=[k>>>0,h],p=ia(n,k,a.Eb);0>p&&n.splice(-(p+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.J.push({nc:b,B:c,gc:d,ya:e,Bb:f})}delete this.ya}return!0};Ad.prototype.wa=function(){return!0}; function Bd(a){v.call(this,"ROM",a,Bd);this.w=null;this.H=a.addr;this.u=a.size;this.J=a.writable;this.D=a.alias;this.G=a.file;this.K=ba(this.G);if(this.G){a=this.G;var b=da(this.K);"json"!=b&&"hex"!=b&&(a=oa()+"/api/v1/dump?file="+this.G+"&format=bytes&decimal=true");var c=this;na(a,null,!0,function(a,b,f){Cd(c,a,b,f)})}}z(Bd);var Dd=[0,5];Bd.prototype.Ba=function(a,b,c,d){this.B=b;this.b=c;this.F=d;Ed(this)};
function Bd(a,b,c,d){if(d)a.na("Unable to load system ROM (error "+d+": "+b+")");else{Xa(a.Hb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.u=f;else if(h)for(a.u=Array(4*h.length),d=c=0;c<h.length;c++)a.u[d++]=h[c]&255,a.u[d++]=h[c]>>8&255,a.u[d++]=h[c]>>16&255,a.u[d++]=h[c]>>24&255;else a.u=e;a.ya=e.symbols;if(!a.u.length){t("Empty ROM: "+b);return}if(1==a.u.length){t(a.u[0]);return}}catch(g){a.na("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm, Bd.prototype.ya=function(){if(this.za){if(this.F){var a=this.F,b=this.id,c=this.H,d=this.u,e=this.za,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var l=g.o,k=g.a;if(void 0!==l){var n=f,l=[l>>>0,h],p=ja(n,l,a.Eb);0>p&&n.splice(-(p+1),0,l)}k&&(g.a=k.replace(/''/g,'"'))}a.J.push({nc:b,C:c,gc:d,za:e,Bb:f})}delete this.za}return!0};Bd.prototype.xa=function(){return!0};
" ").replace(/ +$/,"").split(" "),a.u=Array(b.length),e=0;e<b.length;e++)a.u[e]=aa(b[e],16);Dd(a)}} function Cd(a,b,c,d){if(d)a.oa("Unable to load system ROM (error "+d+": "+b+")");else{Ya(a.Hb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.w=f;else if(h)for(a.w=Array(4*h.length),d=c=0;c<h.length;c++)a.w[d++]=h[c]&255,a.w[d++]=h[c]>>8&255,a.w[d++]=h[c]>>16&255,a.w[d++]=h[c]>>24&255;else a.w=e;a.za=e.symbols;if(!a.w.length){t("Empty ROM: "+b);return}if(1==a.w.length){t(a.w[0]);return}}catch(g){a.oa("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
function Dd(a){if(!kb(a))if(!a.H)B(a);else if(a.u&&a.D){a.A||(a.A=a.u.length);if(a.u.length!=a.A)lb(a,"ROM size (0x"+q(a.u.length)+") does not match specified size ("+("0x"+q(a.A))+")");else if(Ed(a,a.I)){var b=[];"number"==typeof a.F?b.push(a.F):null!=a.F&&a.F.length&&(b=a.F);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.D,h=d.A,g=[],k=d.I>>>f.Z;0<h&&k<f.D.length;)g.push(f.D[k++]),h-=f.ma;f=d.D;d=d.A;h=0;for(e>>>=f.Z;0<d&&e<f.D.length;){k=g[h++];if(!k)break;f.D[e++]=k;d-=f.ma}}delete a.u}B(a)}} " ").replace(/ +$/,"").split(" "),a.w=Array(b.length),e=0;e<b.length;e++)a.w[e]=aa(b[e],16);Ed(a)}}
function Ed(a,b){if(tb(a.D,b,a.A,a.J?1:Qb)){var c;for(c=0;c<a.u.length;c++)wb(a.D,b+c,a.u[c]);if(a.J&&256==b){for(c=0;c<Cd.length;c++)wb(a.D,Cd[c],118);Dc(a.b,function(a){return function(b){if(0<=Cd.indexOf(b)){var c=!1,h=a.b,g=a.C;if(5==b)switch(c=!0,h.N){case 2:Fd(a,String.fromCharCode(h.P));break;case 9:for(var k=Jc(h),l="",n=255;n--;){var p=a.b.V(k++);if(36==p)break;l+=String.fromCharCode(p)}Fd(a,l);break;default:c=!1}c?ud.call(h):g&&(a.g("\nCP/M vector "+r(b)),G(h,b),g.da());b=!0}else b=!1;return b}}(a)); function Ed(a){if(!ib(a))if(!a.G)E(a);else if(a.w&&a.B){a.u||(a.u=a.w.length);if(a.w.length!=a.u)jb(a,"ROM size (0x"+q(a.w.length)+") does not match specified size ("+("0x"+q(a.u))+")");else if(Fd(a,a.H)){var b=[];"number"==typeof a.D?b.push(a.D):null!=a.D&&a.D.length&&(b=a.D);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.B,h=d.u,g=[],l=d.H>>>f.aa;0<h&&l<f.B.length;)g.push(f.B[l++]),h-=f.la;f=d.B;d=d.u;h=0;for(e>>>=f.aa;0<d&&e<f.B.length;){l=g[h++];if(!l)break;f.B[e++]=l;d-=f.la}}delete a.w}E(a)}}
Fc(a.b,b)}return!0}return!1}function Fd(a,b){b=b.replace(/\r/g,"");a.ra&&(a.ra.value+=b,a.ra.scrollTop=a.ra.scrollHeight)}Ma(function(){for(var a=A(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Ad(d);eb(d,c)}});function Gd(a){u.call(this,"RAM",a,Gd);this.F=a.addr;this.A=a.size;this.u=!1}x(Gd);m=Gd.prototype;m.Ba=function(a,b,c,d){this.D=b;this.b=c;this.C=d;B(this)};m.xa=function(a,b){b||this.reset();return!0};m.wa=function(a){return a?this.save():!0}; function Fd(a,b){if(rb(a.B,b,a.u,a.J?1:Pb)){var c;for(c=0;c<a.w.length;c++)vb(a.B,b+c,a.w[c]);if(a.J&&256==b){for(c=0;c<Dd.length;c++)vb(a.B,Dd[c],118);Cc(a.b,function(a){return function(b){if(0<=Dd.indexOf(b)){var c=!1,h=a.b,g=a.F;if(5==b)switch(c=!0,h.O){case 2:Gd(a,String.fromCharCode(h.R));break;case 9:for(var l=Jc(h),k="",n=255;n--;){var p=a.b.W(l++);if(36==p)break;k+=String.fromCharCode(p)}Gd(a,k);break;default:c=!1}c?vd.call(h):g&&(a.g("\nCP/M vector "+r(b)),H(h,b),g.ea());b=!0}else b=!1;return b}}(a));
m.reset=function(){!this.u&&this.A&&tb(this.D,this.F,this.A,1)&&(this.u=!0,this.status(Math.floor(this.A/1024)+"Kb allocated"));this.u||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ma(function(){for(var a=A(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Gd(d);eb(d,c)}});function Hd(a){u.call(this,"Keyboard",a,Hd,65536);B(this)}x(Hd); Ec(a.b,b)}return!0}return!1}function Gd(a,b){b=b.replace(/\r/g,"");a.sa&&(a.sa.value+=b,a.sa.scrollTop=a.sa.scrollHeight)}Ja(function(){for(var a=D(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Bd(d);ab(d,c)}});function Hd(a){v.call(this,"RAM",a,Hd);this.D=a.addr;this.u=a.size;this.w=!1}z(Hd);m=Hd.prototype;m.Ba=function(a,b,c,d){this.B=b;this.b=c;this.F=d;E(this)};m.ya=function(a,b){b||this.reset();return!0};m.xa=function(a){return a?this.save():!0};
Ma(function(){for(var a=A(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Hd(d);eb(d,c)}});function Id(a){u.call(this,"Video",a,Id,262144);this.Zb=a.interruptRate;this.za=a.refreshRate||60;B(this)}x(Id);Id.prototype.Ba=function(a,b,c,d){this.u=a;this.D=b;this.b=c;this.C=d}; m.reset=function(){!this.w&&this.u&&rb(this.B,this.D,this.u,1)&&(this.w=!0,this.status(Math.floor(this.u/1024)+"Kb allocated"));this.w||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ja(function(){for(var a=D(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Hd(d);ab(d,c)}});function Id(a){v.call(this,"Keyboard",a,Id,65536);E(this)}z(Id);
Ma(function(){for(var a=A(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=y(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=oa().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height= Ja(function(){for(var a=D(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Id(d);ab(d,c)}});
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Ra.aspect);f&&.3<=f&&3.33>=f&&(Ha("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");za("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);e.getContext("2d");d=new Id(d);eb(d,c)}}); function Jd(a,b,c){v.call(this,"Video",a,Jd,262144);this.ma=a.screenWidth;this.ra=a.screenHeight;this.K=a.bufferAddr;this.u=a.bufferCols;this.D=a.bufferRows;this.Z=a.bufferBits||1;this.Zb=a.interruptRate;this.Aa=a.refreshRate||60;this.V=c;this.fa=[[0,0,0,255],[255,255,255,255]];this.X=this.V.createImageData(this.u,this.D);this.H=document.createElement("canvas");this.H.width=this.u;this.H.height=this.D;this.ja=this.H.getContext("2d")}z(Jd);
function Jd(a){u.call(this,"Debugger",a,Jd);this.aa=Kd;this.ja=this.Ma=this.U=0;this.Y=W();this.Fb=W();this.H=-1;this.F=[];this.qa=!1;this.ka=W();this.J=[];this.ta={};this.A=this.ba=this.I=[];Ld(this);this.Da=0;Md(this);this.$a=[];Nd(this,a.messages);this.rb=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return rc(b,a)}):void 0===global.$&&(global.$=function(a){return rc(b,a)})}x(Jd); Jd.prototype.Ba=function(a,b,c,d){this.w=a;this.B=b;this.b=c;this.F=d;this.J=(this.u*this.Z>>3)*this.D;rb(this.B,this.K,this.J,3)&&(this.ba=this.J>>1,this.ca=16/this.Z|0,this.M=!1,void 0===this.G||this.G.length!=this.ba)&&(this.G=Array(this.ba));E(this)};
var Od={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression",k:"stack trace",ln:"list nearest symbol(s)",m:"messages","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},Kd=8080,Pd="NONE ACI ADC ADD ADI ANA ANI CALL CC CM CNC CNZ CP CPE CPO CZ CMA CMC CMP CPI DAA DAD DCR DCX DI EI HLT IN INR INX JMP JC JM JNC JNZ JP JPE JPO JZ LDA LDAX LHLD LXI MOV MVI NOP ORA ORI OUT PCHL POP PUSH RAL RAR RET RC RM RNC RNZ RP RPE RPO RZ RLC RRC RST SBB SBI SHLD SPHL STA STAX STC SUB SUI XCHG XRA XRI XTHL".split(" "), Ja(function(){for(var a=D(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=B(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=pa().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=
Qd="NONE ADC ADC ADD ADD AND AND CALL CALLC CALLS CALLNC CALLNZ CALLNS CALLP CALLNP CALLZ NOT CMC CMP CMP DAA ADD DEC DEC CLI STI HLT IN INC INC JMP JC JS JNC JNZ JNS JP JNP JZ MOV MOV MOV MOV MOV MOV NOP OR OR OUT JMP POP PUSH RCL RCR RET RETC RETS RETNC RETNZ RETNS RETP RETNP RETZ ROL ROR RST SBB SBB MOV MOV MOV MOV STC SUB SUB XCHG XOR XOR XCHG".split(" "),Rd="B C D E H L M A BC DE HL SP PC PSW".split(" "),Sd=[[45],[42,2067,32],[71,2131,18193],[29,2067],[28,17],[22,17],[44,17,32],[63],[45,32768], (a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Sa.aspect);f&&.3<=f&&3.33>=f&&(Ia("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"));c.appendChild(f);e=e.getContext("2d");d=new Jd(d,0,e);ab(d,c)}});
function Kd(a){v.call(this,"Debugger",a,Kd);this.Z=Ld;this.fa=this.Ma=this.M=0;this.X=U();this.Fb=U();this.G=-1;this.D=[];this.ma=!1;this.ja=U();this.J=[];this.ra={};this.u=this.ba=this.H=[];Md(this);this.Da=0;Nd(this);this.$a=[];Od(this,a.messages);this.rb=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return qc(b,a)}):void 0===global.$&&(global.$=function(a){return qc(b,a)})}z(Kd);
var Pd={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression",k:"stack trace",ln:"list nearest symbol(s)",m:"messages","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},Ld=8080,Qd="NONE ACI ADC ADD ADI ANA ANI CALL CC CM CNC CNZ CP CPE CPO CZ CMA CMC CMP CPI DAA DAD DCR DCX DI EI HLT IN INR INX JMP JC JM JNC JNZ JP JPE JPO JZ LDA LDAX LHLD LXI MOV MVI NOP ORA ORI OUT PCHL POP PUSH RAL RAR RET RC RM RNC RNZ RP RPE RPO RZ RLC RRC RST SBB SBI SHLD SPHL STA STAX STC SUB SUI XCHG XRA XRI XTHL".split(" "),
Rd="NONE ADC ADC ADD ADD AND AND CALL CALLC CALLS CALLNC CALLNZ CALLNS CALLP CALLNP CALLZ NOT CMC CMP CMP DAA ADD DEC DEC CLI STI HLT IN INC INC JMP JC JS JNC JNZ JNS JP JNP JZ MOV MOV MOV MOV MOV MOV NOP OR OR OUT JMP POP PUSH RCL RCR RET RETC RETS RETNC RETNZ RETNS RETP RETNP RETZ ROL ROR RST SBB SBB MOV MOV MOV MOV STC SUB SUB XCHG XOR XOR XCHG".split(" "),Sd="B C D E H L M A BC DE HL SP PC PSW".split(" "),Td=[[45],[42,2067,32],[71,2131,18193],[29,2067],[28,17],[22,17],[44,17,32],[63],[45,32768],
[21,18963,2067],[40,18193,2131],[23,2067],[28,273],[22,273],[44,273,32],[64],[45,32768],[42,2323,32],[71,2387,18193],[29,2323],[28,529],[22,529],[44,529,32],[52],[45,32768],[21,18963,2323],[40,18193,2387],[23,2323],[28,785],[22,785],[44,785,32],[53],[45,32768],[42,2579,32],[68,115,18963],[29,2579],[28,1041],[22,1041],[44,1041,32],[20],[45,32768],[21,18963,2579],[41,18963,115],[23,2579],[28,1297],[22,1297],[44,1297,32],[16,18193],[45,32768],[42,2835,32],[70,115,18193],[29,2835],[28,1617],[22,1617], [21,18963,2067],[40,18193,2131],[23,2067],[28,273],[22,273],[44,273,32],[64],[45,32768],[42,2323,32],[71,2387,18193],[29,2323],[28,529],[22,529],[44,529,32],[52],[45,32768],[21,18963,2323],[40,18193,2387],[23,2323],[28,785],[22,785],[44,785,32],[53],[45,32768],[42,2579,32],[68,115,18963],[29,2579],[28,1041],[22,1041],[44,1041,32],[20],[45,32768],[21,18963,2579],[41,18963,115],[23,2579],[28,1297],[22,1297],[44,1297,32],[16,18193],[45,32768],[42,2835,32],[70,115,18193],[29,2835],[28,1617],[22,1617],
[44,1617,32],[72],[45,32768],[21,18963,2835],[39,18193,115],[23,2835],[28,1809],[22,1809],[44,1809,32],[17],[43,17,17],[43,17,273],[43,17,529],[43,17,785],[43,17,1041],[43,17,1297],[43,17,1617],[43,17,1809],[43,273,17],[43,273,273],[43,273,529],[43,273,785],[43,273,1041],[43,273,1297],[43,273,1617],[43,273,1809],[43,529,17],[43,529,273],[43,529,529],[43,529,785],[43,529,1041],[43,529,1297],[43,529,1617],[43,529,1809],[43,785,17],[43,785,273],[43,785,529],[43,785,785],[43,785,1041],[43,785,1297],[43, [44,1617,32],[72],[45,32768],[21,18963,2835],[39,18193,115],[23,2835],[28,1809],[22,1809],[44,1809,32],[17],[43,17,17],[43,17,273],[43,17,529],[43,17,785],[43,17,1041],[43,17,1297],[43,17,1617],[43,17,1809],[43,273,17],[43,273,273],[43,273,529],[43,273,785],[43,273,1041],[43,273,1297],[43,273,1617],[43,273,1809],[43,529,17],[43,529,273],[43,529,529],[43,529,785],[43,529,1041],[43,529,1297],[43,529,1617],[43,529,1809],[43,785,17],[43,785,273],[43,785,529],[43,785,785],[43,785,1041],[43,785,1297],[43,
785,1617],[43,785,1809],[43,1041,17],[43,1041,273],[43,1041,529],[43,1041,785],[43,1041,1041],[43,1041,1297],[43,1041,1617],[43,1041,1809],[43,1297,17],[43,1297,273],[43,1297,529],[43,1297,785],[43,1297,1041],[43,1297,1297],[43,1297,1617],[43,1297,1809],[43,1617,17],[43,1617,273],[43,1617,529],[43,1617,785],[43,1617,1041],[43,1617,1297],[26],[43,1617,1809],[43,1809,17],[43,1809,273],[43,1809,529],[43,1809,785],[43,1809,1041],[43,1809,1297],[43,1809,1617],[43,1809,1809],[3,18193,17],[3,18193,273], 785,1617],[43,785,1809],[43,1041,17],[43,1041,273],[43,1041,529],[43,1041,785],[43,1041,1041],[43,1041,1297],[43,1041,1617],[43,1041,1809],[43,1297,17],[43,1297,273],[43,1297,529],[43,1297,785],[43,1297,1041],[43,1297,1297],[43,1297,1617],[43,1297,1809],[43,1617,17],[43,1617,273],[43,1617,529],[43,1617,785],[43,1617,1041],[43,1617,1297],[26],[43,1617,1809],[43,1809,17],[43,1809,273],[43,1809,529],[43,1809,785],[43,1809,1041],[43,1809,1297],[43,1809,1617],[43,1809,1809],[3,18193,17],[3,18193,273],
[3,18193,529],[3,18193,785],[3,18193,1041],[3,18193,1297],[3,18193,1617],[3,18193,1809],[2,18193,17],[2,18193,273],[2,18193,529],[2,18193,785],[2,18193,1041],[2,18193,1297],[2,18193,1617],[2,18193,1809],[73,18193,17],[73,18193,273],[73,18193,529],[73,18193,785],[73,18193,1041],[73,18193,1297],[73,18193,1617],[73,18193,1809],[66,18193,17],[66,18193,273],[66,18193,529],[66,18193,785],[66,18193,1041],[66,18193,1297],[66,18193,1617],[66,18193,1809],[5,18193,17],[5,18193,273],[5,18193,529],[5,18193,785], [3,18193,529],[3,18193,785],[3,18193,1041],[3,18193,1297],[3,18193,1617],[3,18193,1809],[2,18193,17],[2,18193,273],[2,18193,529],[2,18193,785],[2,18193,1041],[2,18193,1297],[2,18193,1617],[2,18193,1809],[73,18193,17],[73,18193,273],[73,18193,529],[73,18193,785],[73,18193,1041],[73,18193,1297],[73,18193,1617],[73,18193,1809],[66,18193,17],[66,18193,273],[66,18193,529],[66,18193,785],[66,18193,1041],[66,18193,1297],[66,18193,1617],[66,18193,1809],[5,18193,17],[5,18193,273],[5,18193,529],[5,18193,785],
[5,18193,1041],[5,18193,1297],[5,18193,1617],[5,18193,1809],[76,18193,17],[76,18193,273],[76,18193,529],[76,18193,785],[76,18193,1041],[76,18193,1297],[76,18193,1617],[76,18193,1809],[46,18193,17],[46,18193,273],[46,18193,529],[46,18193,785],[46,18193,1041],[46,18193,1297],[46,18193,1617],[46,18193,1809],[18,18193,17],[18,18193,273],[18,18193,529],[18,18193,785],[18,18193,1041],[18,18193,1297],[18,18193,1617],[18,18193,1809],[58],[50,2067],[34,51],[30,51],[11,51],[51,2067],[4,18193,33],[65,128],[62], [5,18193,1041],[5,18193,1297],[5,18193,1617],[5,18193,1809],[76,18193,17],[76,18193,273],[76,18193,529],[76,18193,785],[76,18193,1041],[76,18193,1297],[76,18193,1617],[76,18193,1809],[46,18193,17],[46,18193,273],[46,18193,529],[46,18193,785],[46,18193,1041],[46,18193,1297],[46,18193,1617],[46,18193,1809],[18,18193,17],[18,18193,273],[18,18193,529],[18,18193,785],[18,18193,1041],[18,18193,1297],[18,18193,1617],[18,18193,1809],[58],[50,2067],[34,51],[30,51],[11,51],[51,2067],[4,18193,33],[65,128],[62],
[54],[38,51],[30,32819],[15,51],[7,51],[1,18193,33],[65,128],[57],[50,2323],[33,51],[48,33,18193],[10,51],[51,2323],[74,18193,33],[65,128],[55],[54,32768],[31,51],[27,18193,33],[8,51],[7,32819],[67,18193,33],[65,128],[61],[50,2579],[37,51],[78,19283,18963],[14,51],[51,2579],[6,18193,33],[65,128],[60],[49,2579],[36,51],[75,18963,18707],[13,51],[7,32819],[77,18193,33],[65,128],[59],[50,3347],[35,51],[24],[12,51],[51,3347],[47,18193,33],[65,128],[56],[69,19219,18963],[32,51],[25],[9,51],[7,32819],[19, [54],[38,51],[30,32819],[15,51],[7,51],[1,18193,33],[65,128],[57],[50,2323],[33,51],[48,33,18193],[10,51],[51,2323],[74,18193,33],[65,128],[55],[54,32768],[31,51],[27,18193,33],[8,51],[7,32819],[67,18193,33],[65,128],[61],[50,2579],[37,51],[78,19283,18963],[14,51],[51,2579],[6,18193,33],[65,128],[60],[49,2579],[36,51],[75,18963,18707],[13,51],[7,32819],[77,18193,33],[65,128],[59],[50,3347],[35,51],[24],[12,51],[51,3347],[47,18193,33],[65,128],[56],[69,19219,18963],[32,51],[25],[9,51],[7,32819],[19,
18193,33],[65,128]],Td={cpu:1,bus:64,mem:128,port:256,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:536870912,warn:1073741824,halt:-2147483648};m=Jd.prototype; 18193,33],[65,128]],Ud={cpu:1,bus:64,mem:128,port:256,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:536870912,warn:1073741824,halt:-2147483648};m=Kd.prototype;
m.Ba=function(a,b,c,d){this.D=b;this.b=c;this.u=a;(a=oc(a,"messages"))&&Nd(this,a);this.Cb=Sd;Ud(this,function(a){a:{var b=d.b.la,c=a[0],g=a=0,k=b.length;if(c){a=X(Y(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.b.Z;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var n=b[g];n.type==c?l++||d.g("..."):(c=n.type,l=Vb[c],n&&d.g(q(n.id)+" %"+q(g<<d.b.Z)+" %%"+q(n.B)+" "+r(n.kb)+" "+r(n.size)+ m.Ba=function(a,b,c,d){this.B=b;this.b=c;this.w=a;(a=cc(a,"messages"))&&Od(this,a);this.Cb=Td;Vd(this,function(a){a:{var b=d.b.na,c=a[0],g=a=0,l=b.length;if(c){a=V(Y(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.b.aa;l=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,k=0;l--;){var n=b[g];n.type==c?k++||d.g("..."):(c=n.type,k=Ub[c],n&&d.g(q(n.id)+" %"+q(g<<d.b.aa)+" %%"+q(n.C)+" "+r(n.kb)+" "+
" "+l),c!=Pb&&(c=-1),l=0);a+=d.b.ma;g++}}});B(this)}; r(n.size)+" "+k),c!=Ob&&(c=-1),k=0);a+=d.b.la;g++}}});E(this)};
m.pa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.Ca=this.T[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",rc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.H<d.F.length-1&&(b=d.F[++d.H]):40==a.keyCode&&(0<d.H?b=d.F[--d.H]:(b="",d.H=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.T[b]=c,Ba(c,function(){if(d.Ca){var a=d.Ca.value;d.Ca.value= m.qa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.Ca=this.U[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",qc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.G<d.D.length-1&&(b=d.D[++d.G]):40==a.keyCode&&(0<d.G?b=d.D[--d.G]:(b="",d.G=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.U[b]=c,Da(c,function(){if(d.Ca){var a=d.Ca.value;d.Ca.value=
"";rc(d,a,!0);return!0}return!1}),!0;case "step":return this.T[b]=c,Ba(c,function(a){var b=!1;jb(d,!0)||(ib(d,!0),b=d.Ya(a?1:0),ib(d,!1));return b}),!0}return!1};m.jb=function(){this.Ca&&this.Ca.focus()};function X(a){a=a&&a.B;null==a&&(a=-1);return a}m.V=function(a,b){var c=255,d=X(a);-1!==d&&(c=vb(this.D,d),b&&Vd(a,b));return c};m.mb=function(a,b){var c=65535,d=X(a);if(-1!==d){var c=this.D,e=d&c.F,f=(d&c.H)>>>c.Z,c=e!=c.F?c.D[f].yb(e,d):c.D[f++].ib(e,d)|c.D[f&c.W].ib(0,d+1)<<8;b&&Vd(a,b)}return c}; "";qc(d,a,!0);return!0}return!1}),!0;case "step":return this.U[b]=c,Da(c,function(a){var b=!1;hb(d,!0)||(gb(d,!0),b=d.Ya(a?1:0),gb(d,!1));return b}),!0}return!1};m.jb=function(){this.Ca&&this.Ca.focus()};function V(a){a=a&&a.C;null==a&&(a=-1);return a}m.W=function(a,b){var c=255,d=V(a);-1!==d&&(c=tb(this.B,d),b&&Wd(a,b));return c};m.mb=function(a,b){var c=65535,d=V(a);-1!==d&&(c=ub(this.B,d),b&&Wd(a,b));return c};m.Ab=function(a,b,c){var d=V(a);-1!==d&&(vb(this.B,d,b),c&&Wd(a,c),rc(this.b,!0))};
m.Ab=function(a,b,c){var d=X(a);-1!==d&&(wb(this.D,d,b),c&&Vd(a,c),sc(this.b,!0))};m.Ub=function(a,b,c){var d=X(a);if(-1!==d){var e=this.D,f=d&e.F,h=(d&e.H)>>>e.Z;f!=e.F?e.D[h].zb(f,b&65535,d):(e.D[h++].lb(f,b&255,d),e.D[h&e.W].lb(0,b>>8&255,d+1));c&&Vd(a,c);sc(this.b,!0)}};function W(a){return{B:a,va:!1}}function Wd(a){return[a.B,a.va]}function Xd(a){return{B:a[0],va:a[1]}} m.Vb=function(a,b,c){var d=V(a);if(-1!==d){var e=this.B,f=d&e.D,h=(d&e.G)>>>e.aa;f!=e.D?e.B[h].zb(f,b&65535,d):(e.B[h++].lb(f,b&255,d),e.B[h&e.V].lb(0,b>>8&255,d+1));c&&Wd(a,c);rc(this.b,!0)}};function U(a){return{C:a,wa:!1}}function Xd(a){return[a.C,a.wa]}function Yd(a){return{C:a[0],wa:a[1]}}
function Y(a,b,c){var d;c=(c?a.Y:a.Fb).B;if(void 0!==b){d=b=Yd(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.J.length;c++){var f=a.J[c].ya[d];if(void 0!==f){d=f.o;void 0!==d&&(e=W(d));break}}if(d=e)return d;c=Zd(a,b,void 0)}null!=c&&(d=W(c));return d}function $d(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Vb=ae(a,b.Sb=c[2]))}function Vd(a,b){null!=a.B&&(a.B+=b||1)}function Z(a){return q(a,4)} function Y(a,b,c){var d;c=(c?a.X:a.Fb).C;if(void 0!==b){d=b=Zd(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.J.length;c++){var f=a.J[c].za[d];if(void 0!==f){d=f.o;void 0!==d&&(e=U(d));break}}if(d=e)return d;c=$d(a,b,void 0)}null!=c&&(d=U(c));return d}function ae(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Wb=be(a,b.Tb=c[2]))}function Wd(a,b){null!=a.C&&(a.C+=b||1)}function Z(a){return q(a,4)}
function be(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.V(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Nd(a,b){a.C=a;a.fa=a.Wb=1073741824;a.Ea=null;var c=ae(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in Td)0<=la(c,d)&&(a.fa|=Td[d],a.g(d+" messages enabled"))}function Ud(a,b){for(var c in Td)if(64==Td[c]){a.$a[c]=b;break}} function ce(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.W(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Od(a,b){a.F=a;a.ga=a.Xb=1073741824;a.Ea=null;var c=be(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in Ud)0<=ma(c,d)&&(a.ga|=Ud[d],a.g(d+" messages enabled"))}function Vd(a,b){for(var c in Ud)if(64==Ud[c]){a.$a[c]=b;break}}
function ce(a,b){var c;a=a.toUpperCase();null==b?c=la(Rd,a):(c=la(Rd,a.substr(b,3)),0>c&&(c=la(Rd,a.substr(b,2))));return c}function de(a,b){var c=0,d=ee(a,b);if(void 0!==d)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 6:c=2;break;case 8:case 9:case 10:case 11:case 12:case 13:c=4}return c?q(d,c):"??"} function de(a,b){var c;a=a.toUpperCase();null==b?c=ma(Sd,a):(c=ma(Sd,a.substr(b,3)),0>c&&(c=ma(Sd,a.substr(b,2))));return c}function ee(a,b){var c=0,d=fe(a,b);if(void 0!==d)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 6:c=2;break;case 8:case 9:case 10:case 11:case 12:case 13:c=4}return c?q(d,c):"??"}
function ee(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.j;break;case 0:c=d.M;break;case 1:c=d.N;break;case 8:c=Hc(d);break;case 2:c=d.O;break;case 3:c=d.P;break;case 9:c=Jc(d);break;case 4:c=d.R;break;case 5:c=d.S;break;case 10:c=J(d);break;case 6:c=d.V(J(d));break;case 11:c=d.ca;break;case 12:c=d.K;break;case 13:c=d.j<<8|Gc(d)&255}}return c} function fe(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.j;break;case 0:c=d.N;break;case 1:c=d.O;break;case 8:c=Hc(d);break;case 2:c=d.P;break;case 3:c=d.R;break;case 9:c=Jc(d);break;case 4:c=d.S;break;case 5:c=d.T;break;case 10:c=J(d);break;case 6:c=d.W(J(d));break;case 11:c=d.da;break;case 12:c=d.L;break;case 13:c=d.j<<8|Fc(d)&255}}return c}
function fe(a,b){b=Yd(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=ce(b,c+1),0<=e&&(b=b.substr(0,c)+de(a,e)+b.substr(c+1+Rd[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=aa(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=Y(a,e))?(d=e+' "'+be(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=Y(a,e))?(Vd(d),d=e+' "'+ function ge(a,b){b=Zd(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=de(b,c+1),0<=e&&(b=b.substr(0,c)+ee(a,e)+b.substr(c+1+Sd[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=aa(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=Y(a,e))?(d=e+' "'+ce(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=Y(a,e))?(Wd(d),d=e+' "'+
be(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+Z(W(this.b.K).B));if(!this.Ea||a!=this.Ea)if(this.Ea=a,this.fa&-2147483648&&(this.da(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.Wa=0;c.F-=c.b;c.b=0;sc(c)}};function gb(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.fa&g)!=g||a.message(b.ab+"."+(null!=d?"outPort":"inPort")+"("+r(c)+","+(f?f:"unknown")+(null!=d?",0x"+q(d,2):"")+")"+(null!=h?": 0x"+q(h,2):"")+(null!=e?" at "+Z(e):""))} ce(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+Z(U(this.b.L).C));if(!this.Ea||a!=this.Ea)if(this.Ea=a,this.ga&-2147483648&&(this.ea(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.Wa=0;c.D-=c.b;c.b=0;rc(c)}};function eb(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.ga&g)!=g||a.message(b.ab+"."+(null!=d?"outPort":"inPort")+"("+r(c)+","+(f?f:"unknown")+(null!=d?",0x"+q(d,2):"")+")"+(null!=h?": 0x"+q(h,2):"")+(null!=e?" at "+Z(e):""))}
function Md(a){var b;if(qd(a)){if(!a.W||!a.W.length){a.W=Array(1E3);for(b=0;b<a.W.length;b++)a.W[b]=W();a.ua=0;a.g("instruction history buffer allocated")}if(!a.L||!a.L.length)for(a.L=Array(256),b=0;b<a.L.length;b++)a.L[b]=[b,0]}else a.W&&a.W.length&&a.g("instruction history buffer freed"),a.ua=0,a.W=[],a.L=[]}m.La=function(a){if(!ge(this))return!1;this.b.La(a);return!0}; function Nd(a){var b;if(rd(a)){if(!a.V||!a.V.length){a.V=Array(1E3);for(b=0;b<a.V.length;b++)a.V[b]=U();a.ua=0;a.g("instruction history buffer allocated")}if(!a.K||!a.K.length)for(a.K=Array(256),b=0;b<a.K.length;b++)a.K[b]=[b,0]}else a.V&&a.V.length&&a.g("instruction history buffer freed"),a.ua=0,a.V=[],a.K=[]}m.La=function(a){if(!he(this))return!1;this.b.La(a);return!0};
m.Ya=function(a,b,c){if(!ge(this))return!1;this.U=0;a||qd(this)&&rd(this,this.b.K,0);try{var d=this.b.Ya(a);0<d&&(this.U+=d,xc(this.b,d,!0),uc(this.b,d),this.ja++)}catch(e){"number"!=typeof e&&(this.U=0,lb(this.b,e.stack||e.message))}!1!==c&&sc(this.b);this.sa(b||!1);return 0<this.U};m.da=function(a){this.b&&this.b.da(a)};m.sa=function(a){void 0===a&&(a=!0);this.Y=W(this.b.K);a&&1!=this.ea?he(this):ie(this)}; m.Ya=function(a,b,c){if(!he(this))return!1;this.M=0;a||rd(this)&&sd(this,this.b.L,0);try{var d=this.b.Ya(a);0<d&&(this.M+=d,wc(this.b,d,!0),tc(this.b,d),this.fa++)}catch(e){"number"!=typeof e&&(this.M=0,jb(this.b,e.stack||e.message))}!1!==c&&rc(this.b);this.ta(b||!1);return 0<this.M};m.ea=function(a){this.b&&this.b.ea(a)};m.ta=function(a){void 0===a&&(a=!0);this.X=U(this.b.L);a&&1!=this.ca?ie(this):je(this)};
function ge(a){var b;if(b=a.b&&kb(a.b))b=a.b,b.w.ga?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!jb(a.b)?(a=a.b,a.w.Pa?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.xa=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.wa=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Md(this);this.ja=this.Ma=0;this.Ea=null;this.U=0;this.Y=W(this.b.K);this.w.ia=!1;je(this);a||this.sa()}; function he(a){var b;if(b=a.b&&ib(a.b))b=a.b,b.A.ha?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!hb(a.b)?(a=a.b,a.A.Pa?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.ya=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.xa=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Nd(this);this.fa=this.Ma=0;this.Ea=null;this.M=0;this.X=U(this.b.L);this.A.ka=!1;ke(this);a||this.ta()};
m.save=function(){var a=new H(this);I(a,0,Wd(this.Y));I(a,1,Wd(this.ka));I(a,2,[this.F,this.qa,this.fa]);I(a,3,this.J);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.Y=Xd(a[b++]),this.ka=Xd(a[b++]),this.F=a[b][0],"string"==typeof this.F&&(this.F=[this.F]),this.qa=a[b][1],this.fa|=a[b][2]);a[3]&&(this.J=a[3]);return!0};m.start=function(a,b){this.ea||this.g("running");this.w.ia=!0;this.$b=a;this.ec=b}; m.save=function(){var a=new Gc(this);I(a,0,Xd(this.X));I(a,1,Xd(this.ja));I(a,2,[this.D,this.ma,this.ga]);I(a,3,this.J);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.X=Yd(a[b++]),this.ja=Yd(a[b++]),this.D=a[b][0],"string"==typeof this.D&&(this.D=[this.D]),this.ma=a[b][1],this.ga|=a[b][2]);a[3]&&(this.J=a[3]);return!0};m.start=function(a,b){this.ca||this.g("running");this.A.ka=!0;this.$b=a;this.ec=b};
m.stop=function(a,b){if(this.w.ia){this.w.ia=!1;this.U=b-this.ec;if(!this.ea){var c="stopped";if(this.U){var d=a-this.$b,e=0<d?Math.round(1E3*this.U/d):0,c=c+" (";qd(this)&&(c+=this.ja+" opcodes, ",this.Ma-=this.ja,this.ja=0);c+=this.U+" cycles, "+d+" ms, "+e+" hz)"}else hb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.sa(!0);this.jb();je(this,this.b.K)}};function qd(a){return 1<a.A.length||!!a.Da} m.stop=function(a,b){if(this.A.ka){this.A.ka=!1;this.M=b-this.ec;if(!this.ca){var c="stopped";if(this.M){var d=a-this.$b,e=0<d?Math.round(1E3*this.M/d):0,c=c+" (";rd(this)&&(c+=this.fa+" opcodes, ",this.Ma-=this.fa,this.fa=0);c+=this.M+" cycles, "+d+" ms, "+e+" hz)"}else fb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.ta(!0);this.jb();ke(this,this.b.L)}};function rd(a){return 1<a.u.length||!!a.Da}
function rd(a,b,c){var d=a.b;if(0<c&&(a.Da&&!--a.Da||Zb(a,b,1,a.A)))return!0;0<=c&&a.L.length&&(a.ja++,b=vb(a.D,b),null!=b&&(a.L[b][1]++,b=a.W[a.ua],b.B=d.K,b.va=!1,++a.ua==a.W.length&&(a.ua=0)));return!1}function Hb(a,b,c){a.g("break on input from port "+r(b)+": "+q(c));a.da(!0)}function Kb(a,b,c){a.g("break on output to port "+r(b)+": "+q(c));a.da(!0)} function sd(a,b,c){var d=a.b;if(0<c&&(a.Da&&!--a.Da||Yb(a,b,1,a.u)))return!0;0<=c&&a.K.length&&(a.fa++,b=tb(a.B,b),null!=b&&(a.K[b][1]++,b=a.V[a.ua],b.C=d.L,b.wa=!1,++a.ua==a.V.length&&(a.ua=0)));return!1}function Gb(a,b,c){a.g("break on input from port "+r(b)+": "+q(c));a.ea(!0)}function Jb(a,b,c){a.g("break on output to port "+r(b)+": "+q(c));a.ea(!0)}
function Ld(a){var b,c;a.A=["bp"];if(void 0!==a.ba)for(b=1;b<a.ba.length;b++){c=a.ba[b];var d=a.b;$b(d.la[X(c)>>>d.Z],!1)}a.ba=["br"];if(void 0!==a.I)for(b=1;b<a.I.length;b++)c=a.I[b],d=a.b,$b(d.la[X(c)>>>d.Z],!0);a.I=["bw"];a.Kb=0}m.Fa=function(a,b,c){var d=!0;c||ke(this,a,b,!1,!0);if(a!=this.A){var e=X(b);if(-1===e)this.g("invalid address: "+Z(b.B)),d=!1;else{var f=this.b;f.la[e>>>f.Z].Fa(e&f.H,a==this.I)}}d&&(a.push(b),c?b.va=!0:(le(this,a,a.length-1,"set"),Md(this)));return d}; function Md(a){var b,c;a.u=["bp"];if(void 0!==a.ba)for(b=1;b<a.ba.length;b++){c=a.ba[b];var d=a.b;Zb(d.na[V(c)>>>d.aa],!1)}a.ba=["br"];if(void 0!==a.H)for(b=1;b<a.H.length;b++)c=a.H[b],d=a.b,Zb(d.na[V(c)>>>d.aa],!0);a.H=["bw"];a.Lb=0}m.Fa=function(a,b,c){var d=!0;c||le(this,a,b,!1,!0);if(a!=this.u){var e=V(b);if(-1===e)this.g("invalid address: "+Z(b.C)),d=!1;else{var f=this.b;f.na[e>>>f.aa].Fa(e&f.G,a==this.H)}}d&&(a.push(b),c?b.wa=!0:(me(this,a,a.length-1,"set"),Nd(this)));return d};
function ke(a,b,c,d,e){var f=!1;c=X(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==X(g)&&(!d||g.va)){f=!0;g.va||e||le(a,b,h,"cleared");b.splice(h,1);b!=a.A&&(d=a.b,$b(d.la[c>>>d.Z],b==a.I));g.va||Md(a);break}}return f}function me(a,b){for(var c=1;c<b.length;c++)le(a,b,c);return b.length-1}function le(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.B)+(d?" "+d:c.Sb?' "'+c.Sb+'"':""))} function le(a,b,c,d,e){var f=!1;c=V(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==V(g)&&(!d||g.wa)){f=!0;g.wa||e||me(a,b,h,"cleared");b.splice(h,1);b!=a.u&&(d=a.b,Zb(d.na[c>>>d.aa],b==a.H));g.wa||Nd(a);break}}return f}function ne(a,b){for(var c=1;c<b.length;c++)me(a,b,c);return b.length-1}function me(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.C)+(d?" "+d:c.Tb?' "'+c.Tb+'"':""))}
function je(a,b){if(void 0!==b)Zb(a,b,1,a.A,!0),a.ea=0;else for(var c=1;c<a.A.length;c++){var d=a.A[c];if(d.va){if(!ke(a,a.A,d,!0))break;c=0}}} function ke(a,b){if(void 0!==b)Yb(a,b,1,a.u,!0),a.ca=0;else for(var c=1;c<a.u.length;c++){var d=a.u[c];if(d.wa){if(!le(a,a.u,d,!0))break;c=0}}}
function Zb(a,b,c,d,e){var f=!1;if(!a.Kb++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.va)for(var k=X(g),l=0;l<c;l++)if(b+l==k){var n,f=!0;g.va&&(ke(a,d,g,!0),e=!0);if(n=g.Vb){for(var f=!1,p=0;p<n.length;p++)if(!ne(a,n[p],!0)){if(n[p].indexOf("if")){f=!0;break}for(var z=p+1;z<n.length&&n[z].indexOf("else");z++)p++;if(z==n.length){f=!0;break}}a.b.w.ia||(f=!0)}if(f){e||le(a,d,h,"hit");break}}}a.Kb--;return f} function Yb(a,b,c,d,e){var f=!1;if(!a.Lb++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.wa)for(var l=V(g),k=0;k<c;k++)if(b+k==l){var n,f=!0;g.wa&&(le(a,d,g,!0),e=!0);if(n=g.Wb){for(var f=!1,p=0;p<n.length;p++)if(!oe(a,n[p],!0)){if(n[p].indexOf("if")){f=!0;break}for(var w=p+1;w<n.length&&n[w].indexOf("else");w++)p++;if(w==n.length){f=!0;break}}a.b.A.ka||(f=!0)}if(f){e||me(a,d,h,"hit");break}}}a.Lb--;return f}
function oe(a,b,c,d){for(var e=W(b.B),f=a.V(b,1),h=a.Cb[f],g="",k=(8086!=a.aa?Pd:Qd)[h[0]],l=h.length-1,n=0,p,z=1;z<=l;z++){var D="";p=h[z];if(void 0!==p&&!(p&16384&&a.aa==Kd)){var v=p&240;if(v){var Da=p&15;Da?n=Da:p|=n;p&61440||(p|=1==z?8192:4096);if(v&32)a:{var D=a,v=p,Da=b,E=" ";switch(v&15){case 1:E=q(D.V(Da,1),2);break;case 2:E=q(D.V(Da,1)<<24>>24,4);break;case 3:E=q(D.mb(Da,2),4);break;default:D="imm("+r(v)+")";break a}8086==D.aa&&v&64?E="["+E+"]":v&16||(E=(D.aa==Kd?"$":"0x")+E);D=E}else v& function pe(a,b,c,d){for(var e=U(b.C),f=a.W(b,1),h=a.Cb[f],g="",l=(8086!=a.Z?Qd:Rd)[h[0]],k=h.length-1,n=0,p,w=1;w<=k;w++){var A="";p=h[w];if(void 0!==p&&!(p&16384&&a.Z==Ld)){var u=p&240;if(u){var ca=p&15;ca?n=ca:p|=n;p&61440||(p|=1==w?8192:4096);if(u&32)a:{var A=a,u=p,ca=b,C=" ";switch(u&15){case 1:C=q(A.W(ca,1),2);break;case 2:C=q(A.W(ca,1)<<24>>24,4);break;case 3:C=q(A.mb(ca,2),4);break;default:A="imm("+r(u)+")";break a}8086==A.Z&&u&64?C="["+C+"]":u&16||(C=(A.Z==Ld?"$":"0x")+C);A=C}else u&16?(A=
16?(D=(p&3840)>>8,v=Rd[D],8086==a.aa&&p&64&&(6==D&&(v="HL"),v="["+v+"]"),D=v):v&128&&(D=(f>>3&7).toString());if(!D||!D.length){g="INVALID";break}0<g.length&&(g+=",");g+=D||"???"}}}f="";h=Z(e.B)+" ";if(-1!==e.B&&-1!==b.B){do if(f+=q(a.V(e,1),2),null==e.B)break;while(e.B!=b.B)}h+=ga(f,10);h=h+(p&32768?"*":" ")+ga(k,7);g&&(h+=" "+g);c&&(h=ga(h,40)+";"+c,h=a.b.w.Oa?h+("cycles="+vc(a.b).toString()+" cs="+q(a.b.i.bb)):h+(null!=d?"="+d.toString():""));return h} (p&3840)>>8,u=Sd[A],8086==a.Z&&p&64&&(6==A&&(u="HL"),u="["+u+"]"),A=u):u&128&&(A=(f>>3&7).toString());if(!A||!A.length){g="INVALID";break}0<g.length&&(g+=",");g+=A||"???"}}}f="";h=Z(e.C)+" ";if(-1!==e.C&&-1!==b.C){do if(f+=q(a.W(e,1),2),null==e.C)break;while(e.C!=b.C)}h+=ha(f,10);h=h+(p&32768?"*":" ")+ha(l,7);g&&(h+=" "+g);c&&(h=ha(h,40)+";"+c,h=a.b.A.Oa?h+("cycles="+uc(a.b).toString()+" cs="+q(a.b.i.bb)):h+(null!=d?"="+d.toString():""));return h}
function Ne(a,b){var c;switch(b){case "I":c=a.b.oa&512;break;case "S":c=Pc(a.b);break;case "Z":c=Oc(a.b);break;case "A":c=Nc(a.b);break;case "P":c=Mc(a.b);break;case "C":c=Lc(a.b);break;default:c=0}return b+(c?"1":"0")+" "}function Oe(a,b){return Rd[b]+"="+de(a,b)+" "}function Pe(a){return Oe(a,7)+Oe(a,8)+Oe(a,9)+Oe(a,10)+Oe(a,11)+Ne(a,"I")+Ne(a,"S")+Ne(a,"Z")+Ne(a,"A")+Ne(a,"P")+Ne(a,"C")} function Oe(a,b){var c;switch(b){case "I":c=a.b.pa&512;break;case "S":c=Qc(a.b);break;case "Z":c=Pc(a.b);break;case "A":c=Oc(a.b);break;case "P":c=Nc(a.b);break;case "C":c=Mc(a.b);break;default:c=0}return b+(c?"1":"0")+" "}function Pe(a,b){return Sd[b]+"="+ee(a,b)+" "}function Qe(a){return Pe(a,7)+Pe(a,8)+Pe(a,9)+Pe(a,10)+Pe(a,11)+Oe(a,"I")+Oe(a,"S")+Oe(a,"Z")+Oe(a,"A")+Oe(a,"P")+Oe(a,"C")}
var Qe={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9}; var Re={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function Re(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break; function Se(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
case "^":d=f^e;break;case "|":d=f|e;break;case "&&":d=f&&e?1:0;break;case "||":d=f||e?1:0;break;default:return!1}a.push(d|0)}return!0} case "^":d=f^e;break;case "|":d=f|e;break;case "&&":d=f&&e?1:0;break;case "||":d=f||e?1:0;break;default:return!1}a.push(d|0)}return!0}
function Zd(a,b,c){var d;if(b){b=Yd(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var n=l[e++],p=n.length,n=ha(n);if(!n){f=!0;break}n=Se(a,n,null,!1===c);if(void 0===n){f=!0;c=!1;break}g.push(n);if(e==l.length)break;var n=l[e++],z=n.length;k.length&&Qe[n]<Qe[k[k.length-1]]&&Re(g,k,1);k.push(n);b=b.substr(p+z)}Re(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&Te(a,null, function $d(a,b,c){var d;if(b){b=Zd(a,b);for(var e=0,f=!1,h=b,g=[],l=[],k=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<k.length;){var n=k[e++],p=n.length,n=ia(n);if(!n){f=!0;break}n=Te(a,n,null,!1===c);if(void 0===n){f=!0;c=!1;break}g.push(n);if(e==k.length)break;var n=k[e++],w=n.length;l.length&&Re[n]<Re[l[l.length-1]]&&Se(g,l,1);l.push(n);b=b.substr(p+w)}Se(g,l)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&Ue(a,null,
d))}return d}function Yd(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Zd(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?q(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=Y(a,c[1]),b=b.replace("["+c[1]+"]",d?q(a.mb(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.ja-a.Ma}if(null==e)break;c=c.replace(d[0],e.toString())}return c} d))}return d}function Zd(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=$d(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?q(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=Y(a,c[1]),b=b.replace("["+c[1]+"]",d?q(a.mb(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.fa-a.Ma}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
function Se(a,b,c,d){var e;void 0!==b?(e=ce(b),0<=e?e=ee(a,e):(e=a.ta[b],void 0===e&&(e=aa(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e} function Te(a,b,c,d){var e;void 0!==b?(e=de(b),0<=e?e=fe(a,e):(e=a.ra[b],void 0===e&&(e=aa(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
function Te(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=d&255,l=8,n="";void 0===l?l=32:32<l&&(l=32);if(null==k||isNaN(k))for(;0<l--;)n="?"+n;else for(;0<l--;)n=(k&1?"1":"0")+n,k>>=1;h=n+"b"+h;d>>=8}d="0x"+q(c)+" "+c+". ("+h+")"}a.g((null!=b?b+": ":"")+d);return e}function Ue(a,b){if(b)return Te(a,b,a.ta[b]);var c=0;for(b in a.ta)Te(a,b,a.ta[b]),c++;return 0<c}Jd.prototype.Eb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0}; function Ue(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var l=d&255,k=8,n="";void 0===k?k=32:32<k&&(k=32);if(null==l||isNaN(l))for(;0<k--;)n="?"+n;else for(;0<k--;)n=(l&1?"1":"0")+n,l>>=1;h=n+"b"+h;d>>=8}d="0x"+q(c)+" "+c+". ("+h+")"}a.g((null!=b?b+": ":"")+d);return e}function Ve(a,b){if(b)return Ue(a,b,a.ra[b]);var c=0;for(b in a.ra)Ue(a,b,a.ra[b]),c++;return 0<c}Kd.prototype.Eb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function Ve(a,b,c){var d=[],e=X(b)>>>0;for(b=0;b<a.J.length;b++){var f=a.J[b],h=f.B>>>0,g=f.gc;if(e>=h&&e<h+g){e=ia(f.Bb,[e-h],a.Eb);0<=e?We(a,b,e,d):c&&(e=~e,We(a,b,e-1,d),We(a,b,e,d));break}}return d}function We(a,b,c,d){var e={},f=a.J[b].Bb,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.J[b].ya[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)} function We(a,b,c){var d=[],e=V(b)>>>0;for(b=0;b<a.J.length;b++){var f=a.J[b],h=f.C>>>0,g=f.gc;if(e>=h&&e<h+g){e=ja(f.Bb,[e-h],a.Eb);0<=e?Xe(a,b,e,d):c&&(e=~e,Xe(a,b,e-1,d),Xe(a,b,e,d));break}}return d}function Xe(a,b,c,d){var e={},f=a.J[b].Bb,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.J[b].za[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
function Xe(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c,d=0;if(a.L)if("clear"==b){for(c=0;c<a.L.length;c++)a.L[c]=[c,0];a.g("frequency data cleared");d++}else if(void 0!==b)a.g("unknown frequency command: "+b),d++;else{var e=a.L.slice();e.sort(function(a,b){return b[1]-a[1]});var f=8086!=a.aa?Pd:Qd;for(c=0;c<e.length;c++){var h=e[c][0],g=e[c][1];g&&(a.g((f[a.Cb[h][0]]+" ").substr(0,5)+" ("+("0x"+q(h,2))+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}} function Ye(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c,d=0;if(a.K)if("clear"==b){for(c=0;c<a.K.length;c++)a.K[c]=[c,0];a.g("frequency data cleared");d++}else if(void 0!==b)a.g("unknown frequency command: "+b),d++;else{var e=a.K.slice();e.sort(function(a,b){return b[1]-a[1]});var f=8086!=a.Z?Qd:Rd;for(c=0;c<e.length;c++){var h=e[c][0],g=e[c][1];g&&(a.g((f[a.Cb[h][0]]+" ").substr(0,5)+" ("+("0x"+q(h,2))+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}}
function Ye(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ue(a)||a.g("no variables"),!0;if(!c[2])return Ue(a,c[1]);if(!c[3])return delete a.ta[c[1]],!0;var d=Zd(a,c[3]);return void 0!==d?(a.ta[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1} function Ze(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ve(a)||a.g("no variables"),!0;if(!c[2])return Ve(a,c[1]);if(!c[3])return delete a.ra[c[1]],!0;var d=$d(a,c[3]);return void 0!==d?(a.ra[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
function Ze(a,b,c){var d=null;if(b=Y(a,b,!0)){var e=Ve(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.B-e[1])&&(h=" + "+r(f)),f=e[0]+" ("+Z(e[1])+")"+h,c&&a.g(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.B)&&(h=" - "+r(f)),f=e[4]+" ("+Z(e[5])+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d} function $e(a,b,c){var d=null;if(b=Y(a,b,!0)){var e=We(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.C-e[1])&&(h=" + "+r(f)),f=e[0]+" ("+Z(e[1])+")"+h,c&&a.g(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.C)&&(h=" - "+r(f)),f=e[4]+" ("+Z(e[5])+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
function $e(a,b){switch(b[1]){case "8080":a.aa=Kd;break;case "8086":a.aa=8086;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.b.i.Ta=c;break;case "start":a.b.i.cb=c;break;case "stop":a.b.i.Va=c;break;default:a.g("unknown cs option");return}void 0!==c&&qc(a.b);a.g("checksums "+(a.b.w.Oa?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(wc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.Ha.toFixed(2)+"Mhz")+" ("+ function af(a,b){switch(b[1]){case "8080":a.Z=Ld;break;case "8086":a.Z=8086;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.b.i.Ta=c;break;case "start":a.b.i.cb=c;break;case "stop":a.b.i.Va=c;break;default:a.g("unknown cs option");return}void 0!==c&&pc(a.b);a.g("checksums "+(a.b.A.Oa?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(vc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.Ha.toFixed(2)+"Mhz")+" ("+
a.b.i.Ja+"x)");return;case "?":a.g("debugger options:");a.g("\t8080\t\tselect 8080-style mnemonics");a.g("\t8086\t\tselect 8086-style mnemonics");a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.g("unknown option: "+b[1]);return}}a.g(a.aa+"-style mnemonics enabled")} a.b.i.Ja+"x)");return;case "?":a.g("debugger options:");a.g("\t8080\t\tselect 8080-style mnemonics");a.g("\t8086\t\tselect 8086-style mnemonics");a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.g("unknown option: "+b[1]);return}}a.g(a.Z+"-style mnemonics enabled")}
function he(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.g("missing value for "+b[1]);return}var h=!1,g=Zd(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.j=g&255;break;case "B":d.M=g&255;break;case "BC":d.M=g>>8&255;case "C":d.N=g&255;break;case "D":d.O= function ie(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.g("missing value for "+b[1]);return}var h=!1,g=$d(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.j=g&255;break;case "B":d.N=g&255;break;case "BC":d.N=g>>8&255;case "C":d.O=g&255;break;case "D":d.P=
g&255;break;case "DE":d.O=g>>8&255;case "E":d.P=g&255;break;case "H":d.R=g&255;break;case "HL":d.R=g>>8&255;case "L":d.S=g&255;break;case "SP":d.ca=g&65535;break;case "PC":G(d,g);a.Y=W(d.K);break;case "PS":Ec(d,g);break;case "C":d.G=g?d.G|256:d.G&255;break;case "P":g?Mc(d)||(d.X^=1):Mc(d)&&(d.X^=1);break;case "A":d.ha=g?~d.X&16|d.ha&-17:d.X&16|d.ha&-17;break;case "Z":d.G=g?d.G&-256:d.G|255;break;case "S":g?Pc(d)||(d.X^=192):Pc(d)&&(d.X^=192);break;case "I":d.oa=g?d.oa|512:d.oa&-513;break;default:a.g("unknown register: "+ g&255;break;case "DE":d.P=g>>8&255;case "E":d.R=g&255;break;case "H":d.S=g&255;break;case "HL":d.S=g>>8&255;case "L":d.T=g&255;break;case "SP":d.da=g&65535;break;case "PC":H(d,g);a.X=U(d.L);break;case "PS":Dc(d,g);break;case "C":d.I=g?d.I|256:d.I&255;break;case "P":g?Nc(d)||(d.Y^=1):Nc(d)&&(d.Y^=1);break;case "A":d.ia=g?~d.Y&16|d.ia&-17:d.Y&16|d.ia&-17;break;case "Z":d.I=g?d.I&-256:d.I|255;break;case "S":g?Qc(d)||(d.Y^=192):Qc(d)&&(d.Y^=192);break;case "I":d.pa=g?d.pa|512:d.pa&-513;break;default:a.g("unknown register: "+
e);return}if(!h){a.g("invalid value: "+f);return}sc(d);a.g("updated registers:")}a.g(Pe(a));c&&(a.Y=W(d.K),ie(a,Z(a.Y.B)))}}function af(a,b){b=ha(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(fe(a,c[2])):Zd(a,b,!0)}function bf(a,b,c){var d="t"!=b;c=Se(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Aa(c,function(){return ib(a,!0)&&a.Ya(e,d,!1)},function(){sc(a.b);ib(a,!1)})} e);return}if(!h){a.g("invalid value: "+f);return}rc(d);a.g("updated registers:")}a.g(Qe(a));c&&(a.X=U(d.L),je(a,Z(a.X.C)))}}function bf(a,b){b=ia(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(ge(a,c[2])):$d(a,b,!0)}function cf(a,b,c){var d="t"!=b;c=Te(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ca(c,function(){return gb(a,!0)&&a.Ya(e,d,!1)},function(){rc(a.b);gb(a,!1)})}
function ie(a,b,c,d){if(b=Y(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=Y(a,c,!0);if(!d||d.B<b.B)return;e=d.B-b.B;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=jb(a,!1)||a.ea?a.U:null;var h=null!=f?"cycles":null,g=Ve(a,b),k=b.B;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.g(l)}g[3]&&(h=g[3],f=null);f=oe(a,b,h,f);a.g(f);a.Y=b;e-=b.B-k;c++}}} function je(a,b,c,d){if(b=Y(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=Y(a,c,!0);if(!d||d.C<b.C)return;e=d.C-b.C;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=hb(a,!1)||a.ca?a.M:null;var h=null!=f?"cycles":null,g=We(a,b),l=b.C;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var k=g[0]+":";g[2]&&(k+=" "+g[2]);a.g(k)}g[3]&&(h=g[3],f=null);f=pe(a,b,h,f);a.g(f);a.X=b;e-=b.C-l;c++}}}
function ae(a,b,c,d){if(c)if(b){0>a.H&&a.F.length&&(a.H=0);if(0>a.H||b!=a.F[a.H])a.F.splice(0,0,b),a.H=0;a.H--}else a.qa?b="end":b=a.F[a.H+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(ha(b.substring(c,f))),c=f+1}}return a} function be(a,b,c,d){if(c)if(b){0>a.G&&a.D.length&&(a.G=0);if(0>a.G||b!=a.D[a.G])a.D.splice(0,0,b),a.G=0;a.G--}else a.ma?b="end":b=a.D[a.G+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(ia(b.substring(c,f))),c=f+1}}return a}
function ne(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.qa&&(a.g("ended assemble at "+Z(a.ka.B)),a.Y=a.ka,a.qa=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Ea=null;if(kb(a)&&0<b.length){a.qa&&(b="a "+Z(a.ka.B)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var n=Y(a,f[1],!0);if(n)if(a.ka= function oe(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.ma&&(a.g("ended assemble at "+Z(a.ja.C)),a.X=a.ja,a.ma=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Ea=null;if(ib(a)&&0<b.length){a.ma&&(b="a "+Z(a.ja.C)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),l=1;l<h.length;l++){var k=h.charAt(l);if("?"==g||"r"==g||"a">k||"z"<k){f[0]=h.substr(l);f.unshift(h.substr(0,l));break}}switch(f[0].charAt(0)){case "a":var n=Y(a,f[1],!0);if(n)if(a.ja=
n,void 0===f[2])a.g("begin assemble at "+Z(n.B)),a.qa=!0,sc(a.b);else{var p;a.g("not supported yet");p=[];if(p.length){for(var z=0;z<p.length;z++)a.Ab(n,p[z],1);a.g(oe(a,a.ka))}}break;case "b":a:{var D=f[0],v=f[1],Da=b;if("?"==v)a.g("breakpoint commands:"),a.g("\tbi [p]\ttoggle break on input port [p]"),a.g("\tbo [p]\ttoggle break on output port [p]"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"), n,void 0===f[2])a.g("begin assemble at "+Z(n.C)),a.ma=!0,rc(a.b);else{var p;a.g("not supported yet");p=[];if(p.length){for(var w=0;w<p.length;w++)a.Ab(n,p[w],1);a.g(pe(a,a.ja))}}break;case "b":a:{var A=f[0],u=f[1],ca=b;if("?"==u)a.g("breakpoint commands:"),a.g("\tbi [p]\ttoggle break on input port [p]"),a.g("\tbo [p]\ttoggle break on output port [p]"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),
a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");else{var E=D.charAt(1);if("l"==E){var Ya=0,Ya=Ya+me(a,a.A),Ya=Ya+me(a,a.ba);(Ya+=me(a,a.I))||a.g("no breakpoints")}else if("n"==E)a.Da=Se(a,v),a.g("break after "+a.Da+" instruction(s)");else if(void 0===v)a.g("missing breakpoint address");else{var K=W();if("*"!=v&&(K=Y(a,v,!0),!K))break a;v=r(K.B);"c"==E?null==K.B?(Ld(a),a.g("all breakpoints cleared")):ke(a,a.A,K)||ke(a, a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");else{var C=A.charAt(1);if("l"==C){var va=0,va=va+ne(a,a.u),va=va+ne(a,a.ba);(va+=ne(a,a.H))||a.g("no breakpoints")}else if("n"==C)a.Da=Te(a,u),a.g("break after "+a.Da+" instruction(s)");else if(void 0===u)a.g("missing breakpoint address");else{var x=U();if("*"!=u&&(x=Y(a,u,!0),!x))break a;u=r(x.C);"c"==C?null==x.C?(Md(a),a.g("all breakpoints cleared")):le(a,a.u,x)||le(a,
a.ba,K)||ke(a,a.I,K)||a.g("breakpoint missing: "+Z(K.B)):"i"==E?a.g("breakpoint "+(xb(a.D,K.B)?"enabled":"cleared")+": port "+v+" (input)"):"o"==E?a.g("breakpoint "+(Ib(a.D,K.B)?"enabled":"cleared")+": port "+v+" (output)"):null!=K.B&&($d(a,K,Da),"p"==E?a.Fa(a.A,K):"r"==E?a.Fa(a.ba,K):"w"==E?a.Fa(a.I,K):a.g("unknown breakpoint command: "+E))}}}break;case "c":a.ra&&(a.ra.value="");break;case "d":a:{var Za,$a=f[0],sa=f[1],Ia=f[2],yf=f[3];if("?"==sa){var ta="";for(Za in Td)a.$a[Za]&&(ta&&(ta+=","),ta+= a.ba,x)||le(a,a.H,x)||a.g("breakpoint missing: "+Z(x.C)):"i"==C?a.g("breakpoint "+(wb(a.B,x.C)?"enabled":"cleared")+": port "+u+" (input)"):"o"==C?a.g("breakpoint "+(Hb(a.B,x.C)?"enabled":"cleared")+": port "+u+" (output)"):null!=x.C&&(ae(a,x,ca),"p"==C?a.Fa(a.u,x):"r"==C?a.Fa(a.ba,x):"w"==C?a.Fa(a.H,x):a.g("unknown breakpoint command: "+C))}}}break;case "c":a.sa&&(a.sa.value="");break;case "d":a:{var W,S=f[0],wa=f[1],La=f[2],zf=f[3];if("?"==wa){var xa="";for(W in Ud)a.$a[W]&&(xa&&(xa+=","),xa+=W);
Za);ta+=",state,symbols";a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");ta.length&&a.g("dump extension commands:\n\t"+ta)}else if("state"==sa){var pe=cf(a.u,!0);"console"==Ia?console.log(pe):(a.ra&&(a.ra.value=""),a.g(pe))}else if("symbols"==sa)for(var Tc=0;Tc<a.J.length;Tc++){var Uc=a.J[Tc],bb;for(bb in Uc.ya)if("."!= xa+=",state,symbols";a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");xa.length&&a.g("dump extension commands:\n\t"+xa)}else if("state"==wa){var qe=df(a.w,!0);"console"==La?console.log(qe):(a.sa&&(a.sa.value=""),a.g(qe))}else if("symbols"==wa)for(var Uc=0;Uc<a.J.length;Uc++){var Vc=a.J[Uc],bb;for(bb in Vc.za)if("."!=
bb.charAt(0)){var qe=Uc.ya[bb].o;if(void 0!==qe){var re=Uc.ya[bb].l;re&&(bb=re);a.g(Z(qe)+" "+bb)}}}else{if("d"==$a){for(Za in Td)if(f[1]==Za){var se=a.$a[Za];se?(f.shift(),f.shift(),se(f)):a.g("no dump registered for "+sa);break a}sa||($a=a.fc||"db")}else a.fc=$a;if("dh"==$a){var te=sa,ue=Ia,ve="",we=0,S=a.ua,ua=a.W;if(ua.length){var V=+te||a.Lb,cb=+ue||10;isNaN(V)?V=cb:ve="more ";V>ua.length&&(a.g("note: only "+ua.length+" available"),V=ua.length);S-=V;0>S&&(null==ua[ua.length-1].B?(V=S+V,S=0): bb.charAt(0)){var re=Vc.za[bb].o;if(void 0!==re){var se=Vc.za[bb].l;se&&(bb=se);a.g(Z(re)+" "+bb)}}}else{if("d"==S){for(W in Ud)if(f[1]==W){var te=a.$a[W];te?(f.shift(),f.shift(),te(f)):a.g("no dump registered for "+wa);break a}wa||(S=a.fc||"db")}else a.fc=S;if("dh"==S){var ue=wa,ve=La,we="",xe=0,T=a.ua,ya=a.V;if(ya.length){var X=+ue||a.Mb,cb=+ve||10;isNaN(X)?X=cb:we="more ";X>ya.length&&(a.g("note: only "+ya.length+" available"),X=ya.length);T-=X;0>T&&(null==ya[ya.length-1].C?(X=T+X,T=0):T+=ya.length);
S+=ua.length);var Vc=[];"call"==ue&&(cb=1E5,Vc=["CALL"]);for(void 0!==te&&a.g(V+" instructions earlier:");0<cb&&S!=a.ua;){var xe=ua[S++];if(null==xe.B)break;var yb=W(xe.B),zf=V--,ye=oe(a,yb,"history",zf);(!Vc.length||0<=ye.indexOf(Vc[0]))&&a.g(ye);yb.sb&&(S+=yb.sb,cb-=yb.sb,V-=yb.sb);S>=ua.length&&(S=0);a.Lb=V;we++;cb--}}we||(a.g("no "+ve+"history available"),a.Lb=void 0)}else{var dc=Y(a,sa);if(dc){var ec=0;Ia&&("l"==Ia.charAt(0)&&(Ia=Ia.substr(1)||yf),ec=Se(a,Ia)>>>0,65536<ec&&(ec=65536));for(var Ja= var Wc=[];"call"==ve&&(cb=1E5,Wc=["CALL"]);for(void 0!==ue&&a.g(X+" instructions earlier:");0<cb&&T!=a.ua;){var ye=ya[T++];if(null==ye.C)break;var yb=U(ye.C),Af=X--,ze=pe(a,yb,"history",Af);(!Wc.length||0<=ze.indexOf(Wc[0]))&&a.g(ze);yb.sb&&(T+=yb.sb,cb-=yb.sb,X-=yb.sb);T>=ya.length&&(T=0);a.Mb=X;xe++;cb--}}xe||(a.g("no "+we+"history available"),a.Mb=void 0)}else{var dc=Y(a,wa);if(dc){var ec=0;La&&("l"==La.charAt(0)&&(La=La.substr(1)||zf),ec=Te(a,La)>>>0,65536<ec&&(ec=65536));for(var Ma="",fc="dd"==
"",fc="dd"==$a?4:"dw"==$a?2:1,gc=fc*ec||128,Af=gc+15>>4||1;Af--&&0<gc;){var hc=0,Wc=0,zb,Ab="",Xc="",sa=Z(dc.B);for(zb=16;0<zb&&0<gc;zb--){var ic=a.V(dc,1),hc=hc|ic<<(Wc++<<3);Wc==fc&&(Ab+=q(hc,2*fc),Ab+=1==fc?9==zb?"-":" ":" ",hc=Wc=0);Xc+=32<=ic&&128>ic?String.fromCharCode(ic):".";gc--}Ja&&(Ja+="\n");Ja+=sa+" "+Ab+(0==zb?" "+Xc:"")}Ja&&a.g(Ja);a.Fb=dc}}}}break;case "e":if("else"==f[0])break;var jc=1,ze=255,Ae=a.V,Be=a.Ab;"ew"==f[0]&&(jc=2,ze=65535,Ae=a.mb,Be=a.Ub);var Ce=jc<<1,De=f[1];if(null== S?4:"dw"==S?2:1,gc=fc*ec||128,Bf=gc+15>>4||1;Bf--&&0<gc;){var hc=0,Xc=0,zb,Ab="",Yc="",wa=Z(dc.C);for(zb=16;0<zb&&0<gc;zb--){var ic=a.W(dc,1),hc=hc|ic<<(Xc++<<3);Xc==fc&&(Ab+=q(hc,2*fc),Ab+=1==fc?9==zb?"-":" ":" ",hc=Xc=0);Yc+=32<=ic&&128>ic?String.fromCharCode(ic):".";gc--}Ma&&(Ma+="\n");Ma+=wa+" "+Ab+(0==zb?" "+Yc:"")}Ma&&a.g(Ma);a.Fb=dc}}}}break;case "e":if("else"==f[0])break;var jc=1,Ae=255,Be=a.W,Ce=a.Ab;"ew"==f[0]&&(jc=2,Ae=65535,Be=a.mb,Ce=a.Vb);var De=jc<<1,Ee=f[1];if(null==Ee)a.g("edit memory commands:"),
De)a.g("edit memory commands:"),a.g("\teb [a] [...] edit bytes at address a"),a.g("\tew [a] [...] edit words at address a");else{var kc=Y(a,De);if(kc)for(var lc=2;lc<f.length;lc++){var Bb=Zd(a,f[lc]);if(void 0===Bb){a.g("unrecognized value: "+f[lc]);break}Bb&~ze&&a.g("warning: "+q(Bb)+" exceeds "+jc+"-byte value");var Bf=Ae.call(a,kc);a.g("changing "+Z(kc.B)+" from 0x"+q(Bf,Ce)+" to 0x"+q(Bb,Ce));Be.call(a,kc,Bb,jc)}}break;case "f":Xe(a,f[1]);break;case "g":a:{var Ee=f[1],Cf=b;if(void 0!==Ee){var Yc= a.g("\teb [a] [...] edit bytes at address a"),a.g("\tew [a] [...] edit words at address a");else{var kc=Y(a,Ee);if(kc)for(var lc=2;lc<f.length;lc++){var Bb=$d(a,f[lc]);if(void 0===Bb){a.g("unrecognized value: "+f[lc]);break}Bb&~Ae&&a.g("warning: "+q(Bb)+" exceeds "+jc+"-byte value");var Cf=Be.call(a,kc);a.g("changing "+Z(kc.C)+" from 0x"+q(Cf,De)+" to 0x"+q(Bb,De));Ce.call(a,kc,Bb,jc)}}break;case "f":Ye(a,f[1]);break;case "g":a:{var Fe=f[1],Df=b;if(void 0!==Fe){var Zc=Y(a,Fe,!0);if(!Zc)break a;
Y(a,Ee,!0);if(!Yc)break a;$d(a,Yc,Cf);a.Fa(a.A,Yc,!0)}a.La(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var Zc;if(a.w.ia)Zc="halting",a.da();else{if(jb(a,!0))break a;Zc="already halted"}c||a.g(Zc)}break;case "i":if("if"==f[0]){var $c;var Cb=b.substr(2),Cb=ha(Cb);Zd(a,Cb)?(c||a.g("true: "+Cb),$c=!0):(c||a.g("false: "+Cb),$c=!1);$c||(d=!1);break}var ad=f[1];if(ad&&"?"!=ad){var bd=Se(a,ad);if(void 0!==bd){var Df=Gb(a.D,bd);a.g(r(bd)+": "+("0x"+q(Df,2)))}}else a.g("input commands:"), ae(a,Zc,Df);a.Fa(a.u,Zc,!0)}a.La(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var $c;if(a.A.ka)$c="halting",a.ea();else{if(hb(a,!0))break a;$c="already halted"}c||a.g($c)}break;case "i":if("if"==f[0]){var ad;var Cb=b.substr(2),Cb=ia(Cb);$d(a,Cb)?(c||a.g("true: "+Cb),ad=!0):(c||a.g("false: "+Cb),ad=!1);ad||(d=!1);break}var bd=f[1];if(bd&&"?"!=bd){var cd=Te(a,bd);if(void 0!==cd){var Ef=xb(a.B,cd);a.g(r(cd)+": "+("0x"+q(Ef,2)))}}else a.g("input commands:"),a.g("\ti [p]\tread port [p]"),
a.g("\ti [p]\tread port [p]"),a.g("warning: port accesses can affect hardware state");break;case "k":var Ef=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var cd=0,Fe=W(),Db=W(a.b.ca);for(a.g("stack trace for "+Z(Db.B));10>cd;){for(var Ka=null,Ff=256;65536>Db.B>>>0;){Fe.B=a.mb(Db,2);if(null==Db.B||!Ff--)break;for(var Gf=a,mc=Fe,Ge=null,Eb=mc.B,He=Eb,dd=1;6>=dd&&Eb;dd++){if(2<dd){mc.B=Eb;var nc=oe(Gf,mc);if(0<=nc.indexOf("CALL")){var Ie= a.g("warning: port accesses can affect hardware state");break;case "k":var Ff=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var dd=0,Ge=U(),Db=U(a.b.da);for(a.g("stack trace for "+Z(Db.C));10>dd;){for(var Na=null,Gf=256;65536>Db.C>>>0;){Ge.C=a.mb(Db,2);if(null==Db.C||!Gf--)break;for(var Hf=a,mc=Ge,He=null,Eb=mc.C,Ie=Eb,ed=1;6>=ed&&Eb;ed++){if(2<ed){mc.C=Eb;var nc=pe(Hf,mc);if(0<=nc.indexOf("CALL")){var Je=nc.indexOf(" ");
nc.indexOf(" ");if(Eb+(nc.indexOf(" ",Ie+1)-Ie-1)/2==He){Ge=nc;break}}}Eb--}mc.B=He;if(Ka=Ge)break}if(!Ka||null==Ka)break;var Je=null;if("ks"==Ef){var Ke=Ka.match(/[0-9A-F]+$/);Ke&&(Je=Ze(a,Ke[0]))}Ka=ga(Ka,50)+" ;"+(Je||"stack="+Z(Db.B));a.g(Ka);cd++}cd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Ze(a,f[1],!0);break}break;case "m":a:{var va,wa=null,F=f[1];"?"==F&&(F=void 0);if(void 0!==F){var La=0;if("all"==F)La=1610481663,F=null;else if("on"==F)wa=!0,F=null;else if("off"==F)wa= if(Eb+(nc.indexOf(" ",Je+1)-Je-1)/2==Ie){He=nc;break}}}Eb--}mc.C=Ie;if(Na=He)break}if(!Na||null==Na)break;var Ke=null;if("ks"==Ff){var Le=Na.match(/[0-9A-F]+$/);Le&&(Ke=$e(a,Le[0]))}Na=ha(Na,50)+" ;"+(Ke||"stack="+Z(Db.C));a.g(Na);dd++}dd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){$e(a,f[1],!0);break}break;case "m":a:{var za,Aa=null,G=f[1];"?"==G&&(G=void 0);if(void 0!==G){var Oa=0;if("all"==G)Oa=1610481663,G=null;else if("on"==G)Aa=!0,G=null;else if("off"==G)Aa=!1,G=null;else{"keys"==
!1,F=null;else{"keys"==F&&(F="key");"kbd"==F&&(F="keyboard");for(va in Td)if(F==va){La=Td[va];wa=!!(a.fa&La);break}if(!La){a.g("unknown message category: "+F);break a}}La&&("on"==f[2]?(a.fa|=La,wa=!0):"off"==f[2]&&(a.fa&=~La,wa=!1))}var Hf=0,Ea="";for(va in Td)if(!F||F==va){var If=!!(a.fa&Td[va]);if(null===wa||wa==If)Ea&&(Ea+=","),++Hf%10||(Ea+="\n\t"),"key"==va&&(va="keys"),Ea+=va}void 0===F&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==wa?wa?"messages on: ": G&&(G="key");"kbd"==G&&(G="keyboard");for(za in Ud)if(G==za){Oa=Ud[za];Aa=!!(a.ga&Oa);break}if(!Oa){a.g("unknown message category: "+G);break a}}Oa&&("on"==f[2]?(a.ga|=Oa,Aa=!0):"off"==f[2]&&(a.ga&=~Oa,Aa=!1))}var If=0,Ha="";for(za in Ud)if(!G||G==za){var Jf=!!(a.ga&Ud[za]);if(null===Aa||Aa==Jf)Ha&&(Ha+=","),++If%10||(Ha+="\n\t"),"key"==za&&(za="keys"),Ha+=za}void 0===G&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Aa?Aa?"messages on: ":"messages off: ":"message categories:\n\t")+
"messages off: ":"message categories:\n\t")+(Ea||"none"));Md(a)}break;case "o":var ed=f[1],Jf=f[2];if(ed&&"?"!=ed){var fd=Se(a,ed,"port #"),gd=Se(a,Jf);void 0!==fd&&void 0!==gd&&(Jb(a.D,fd,gd),a.g(r(fd)+": "+("0x"+q(gd,2))))}else a.g("output commands:"),a.g("\to [p] [b]\twrite byte [b] to port [p]"),a.g("warning: port accesses can affect hardware state");break;case "p":if("print"==f[0]){af(a,b.substr(5));break}var Le="pr"==f[0]?1:0,Kf=1+Le;if(a.ea)a.g("step in progress");else{var hd=W(a.b.K);switch(a.V(hd)){case 205:a.ea= (Ha||"none"));Nd(a)}break;case "o":var fd=f[1],Kf=f[2];if(fd&&"?"!=fd){var gd=Te(a,fd,"port #"),hd=Te(a,Kf);void 0!==gd&&void 0!==hd&&(Ib(a.B,gd,hd),a.g(r(gd)+": "+("0x"+q(hd,2))))}else a.g("output commands:"),a.g("\to [p] [b]\twrite byte [b] to port [p]"),a.g("warning: port accesses can affect hardware state");break;case "p":if("print"==f[0]){bf(a,b.substr(5));break}var Me="pr"==f[0]?1:0,Lf=1+Me;if(a.ca)a.g("step in progress");else{var id=U(a.b.L);switch(a.W(id)){case 205:a.ca=Lf,Wd(id,3)}a.ca?(a.Fa(a.u,
Kf,Vd(hd,3)}a.ea?(a.Fa(a.A,hd,!0),a.La()||(a.u&&a.u.jb(),a.ea=0)):bf(a,Le?"tr":"t")}break;case "r":if("reset"==b){a.u&&a.u.reset();break}he(a,f);break;case "s":$e(a,f);break;case "t":bf(a,f[0],f[1]);break;case "u":ie(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Ye(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.22.0 ("+a.b.Ra+",RELEASE"+(mb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(oa());break;case "?":if(f[1]){af(a,b.substr(1));break}var Fb="commands:",id;for(id in Od)Fb+="\n"+ga(id,7)+Od[id];qd(a)|| id,!0),a.La()||(a.w&&a.w.jb(),a.ca=0)):cf(a,Me?"tr":"t")}break;case "r":if("reset"==b){a.w&&a.w.reset();break}ie(a,f);break;case "s":af(a,f);break;case "t":cf(a,f[0],f[1]);break;case "u":je(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Ze(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.22.0 ("+a.b.Ra+",RELEASE"+(kb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(pa());break;case "?":if(f[1]){bf(a,b.substr(1));break}var Fb="commands:",jd;for(jd in Pd)Fb+="\n"+ha(jd,7)+Pd[jd];rd(a)||(Fb+="\nnote: frequency/history disabled if no exec breakpoints");
(Fb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Fb);break;default:a.g("unknown command: "+b),d=!1}}}catch(Me){a.g("debugger error: "+(Me.stack||Me.message)),d=!1}return d}function rc(a,b,c){b=ae(a,b,c);for(var d in b)if(!ne(a,b[d]))return!1;return!0}Ma(function(){for(var a=A(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Jd(d);eb(d,c)}});function H(a,b,c){this.id=a.id;this.key=df(a,b,c);this.C=a.C;ef(this,a.Qb)} a.g(Fb);break;default:a.g("unknown command: "+b),d=!1}}}catch(Ne){a.g("debugger error: "+(Ne.stack||Ne.message)),d=!1}return d}function qc(a,b,c){b=be(a,b,c);for(var d in b)if(!oe(a,b[d]))return!1;return!0}Ja(function(){for(var a=D(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Kd(d);ab(d,c)}});function Gc(a,b,c){this.id=a.id;this.key=ef(a,b,c);this.F=a.F;ff(this,a.Rb)}
function df(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} function ef(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}
H.prototype={constructor:H,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){ef(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}}}; Gc.prototype={constructor:Gc,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){ff(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 ef(a,b){a[a.id]={};b&&I(a,"parms",b);a.b=!1}function ff(a){var b=!0;if(ra()){var c=JSON.stringify(a[a.id]);ya(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function gf(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){t(c.message||c),b=!1}return b}function hf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:ra()&&(b=xa(a.key))?(a[a.id]=b,a.b=!0):!1}function jf(a,b){return a[a.id][b]||null}function I(a,b,c){try{a[a.id][b]=c}catch(d){}} function ff(a,b){a[a.id]={};b&&I(a,"parms",b);a.b=!1}function gf(a){var b=!0;if(sa()){var c=JSON.stringify(a[a.id]);ua(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function hf(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){t(c.message||c),b=!1}return b}function jf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:sa()&&(b=ta(a.key))?(a[a.id]=b,a.b=!0):!1}function kf(a,b){return a[a.id][b]||null}function I(a,b,c){try{a[a.id][b]=c}catch(d){}}
function kf(a,b,c){u.call(this,"Computer",a,kf,67108864);this.w.ga=!1;lf(this,b);this.ba=oc(this,"autoPower",a);this.F=0;this.ta=a.busWidth||a.buswidth;this.u=mf;this.W=null;this.J=this.qa=!1;this.ua=oc(this,"url")||"";(Math.random()+.1).toString(36);this.A=nf(this);if(this.b=db("CPU",this.id)){this.C=db("Debugger",this.id);this.aa=[];for(b=null;b=pb(this,"Video",b);)this.aa.push(b);this.D=new rb({id:this.Hb+".bus",busWidth:this.ta},this.b,this.C);var d,e=ab(this.id);if((this.H=db("Panel",this.id))&& function lf(a,b,c){v.call(this,"Computer",a,lf,67108864);this.A.ha=!1;mf(this,b);this.ba=cc(this,"autoPower",a);this.D=0;this.ra=a.busWidth||a.buswidth;this.w=nf;this.V=null;this.J=this.ma=!1;this.ua=cc(this,"url")||"";(Math.random()+.1).toString(36);this.u=of(this);if(this.b=$a("CPU",this.id)){this.F=$a("Debugger",this.id);this.Z=[];for(b=null;b=nb(this,"Video",b);)this.Z.push(b);this.B=new pb({id:this.Hb+".bus",busWidth:this.ra},this.b,this.F);var d,e=Za(this.id);if((this.G=$a("Panel",this.id))&&
this.H.ra)for(b=0;b<e.length;b++)d=e[b],d.na=this.H.na,d.g=this.H.g,d.ra=this.H.ra;for(b=0;b<e.length;b++)d=e[b],d.Ba&&d.Ba(this,this.D,this.b,this.C);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.U=d:this.u=parseInt(d,10));var f;if(a=oc(this,"state")||(f=!0,a.state))b=this.ea=a,f||(this.J=!0,this.u=mf),this.u&&(this.Y=new H(this,of),hf(this.Y)?b=null:delete this.Y);!b&&this.u&&(b=pf(this))&&(this.J=!0);if(b){var h=this;ma(b,null,!0,function(a,b,c){c?(h.U=null,h.J=!1,h.na("Unable to load machine state from server (error "+ this.G.sa)for(b=0;b<e.length;b++)d=e[b],d.oa=this.G.oa,d.g=this.G.g,d.sa=this.G.sa;for(b=0;b<e.length;b++)d=e[b],d.Ba&&d.Ba(this,this.B,this.b,this.F);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.M=d:this.w=parseInt(d,10));var f;if(a=cc(this,"state")||(f=!0,a.state))b=this.ca=a,f||(this.J=!0,this.w=nf),this.w&&(this.X=new Gc(this,pf),jf(this.X)?b=null:delete this.X);!b&&this.w&&(b=qf(this))&&(this.J=!0);if(b){var h=this;na(b,null,!0,function(a,b,c){c?(h.M=null,h.J=!1,h.oa("Unable to load machine state from server (error "+
c+(b?": "+ha(b):"")+")")):(h.W=b,h.qa=!0);B(h)})}else B(this);this.T.power||(this.ba=!0);!c&&this.ba&&qf(this,this.hb)}else t("Unable to find CPU component")}x(kf);var of="1.22.0",mf=0;function lf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){t(d.message+" ("+c+")")}}a.L=b} c+(b?": "+ia(b):"")+")")):(h.V=b,h.ma=!0);E(h)})}else E(this);this.U.power||(this.ba=!0);!c&&this.ba&&rf(this,this.hb)}else t("Unable to find CPU component")}z(lf);var pf="1.22.0",nf=0;function mf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){t(d.message+" ("+c+")")}}a.K=b}
function oc(a,b,c){var d=b.toLowerCase(),d=Ra[b]||Ra[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}function qf(a,b,c){for(var d=ab(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!kb(f)){kb(f,function(){qf(a,b,c)});return}}b.call(a,c)} function cc(a,b,c){var d=b.toLowerCase(),d=Sa[b]||Sa[d];void 0===d&&a.K&&(d=a.K[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function rf(a,b,c){for(var d=Za(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ib(f)){ib(f,function(){rf(a,b,c)});return}}b.call(a,c)}
function rf(a,b){var c=new H(a,of,"validate");if(hf(c)&&gf(c)){var d=jf(c,"timestamp"),e=b?jf(b,"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())}}m=kf.prototype; function sf(a,b){var c=new Gc(a,pf,"validate");if(jf(c)&&hf(c)){var d=kf(c,"timestamp"),e=b?kf(b,"timestamp"):"unknown";d!=e&&(a.oa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=lf.prototype;
m.hb=function(a){void 0===a&&(a=this.u||(this.W?1:mf));if(!this.F){this.F++;var b=!1,c=!1;this.ka=!1;var d=this.Y||new H(this,of);if(-1==a)b=!0;else if(a>mf){if(hf(d,this.W)){this.I=new H(this,of,"failsafe");hf(this.I)&&(sf(this,d),a=2,ef(this.I));I(this.I,"timestamp",ka());ff(this.I);var e=this.u&&!this.J;if(1==a||pa("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=gf(d)){var f=jf(d,"code"),h=jf(d,"data");f&&("ok"==f?hf(d,h):("error"==f&&"no machine state"!= m.hb=function(a){void 0===a&&(a=this.w||(this.V?1:nf));if(!this.D){this.D++;var b=!1,c=!1;this.ja=!1;var d=this.X||new Gc(this,pf);if(-1==a)b=!0;else if(a>nf){if(jf(d,this.V)){this.H=new Gc(this,pf,"failsafe");jf(this.H)&&(tf(this,d),a=2,ff(this.H));I(this.H,"timestamp",la());gf(this.H);var e=this.w&&!this.J;if(1==a||qa("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=hf(d)){var f=kf(d,"code"),h=kf(d,"data");f&&("ok"==f?jf(d,h):("error"==f&&"no machine state"!=
h?(this.na("Error: "+h),"unable to verify user"==h&&(ya("user",""),this.A=null)):this.g(f+": "+h),ef(d),hf(d)?(c=gf(d),e=!0):c=!1))}e&&rf(this,c?d:null)}else 2==a&&d.clear()}else rf(this);delete this.W;delete this.Y}e=ab(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=tf(this,h,d,b,c));b=[d,a,c];-1!=a?qf(this,this.Gb,b):this.Gb(b)}}; h?(this.oa("Error: "+h),"unable to verify user"==h&&(ua("user",""),this.u=null)):this.g(f+": "+h),ff(d),jf(d)?(c=hf(d),e=!0):c=!1))}e&&sf(this,c?d:null)}else 2==a&&d.clear()}else sf(this);delete this.V;delete this.X}e=Za(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=uf(this,h,d,b,c));b=[d,a,c];-1!=a?rf(this,this.Gb,b):this.Gb(b)}};
function tf(a,b,c,d,e){if(!b.w.ga){b.w.ga=!0;if(b.xa){var f=null;e&&((f=jf(c,b.id))||(f=jf(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.xa(f,d)&&f&&(t("Unable to restore state for "+b.type),a.ea&&!a.qa?(c.clear(),a.u=mf,window&&window.location.reload()):a.ka=!0,b.xa(null),e=!1)}if(!d&&b.Db)for(a=b.Db.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e} function uf(a,b,c,d,e){if(!b.A.ha){b.A.ha=!0;if(b.ya){var f=null;e&&((f=kf(c,b.id))||(f=kf(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ya(f,d)&&f&&(t("Unable to restore state for "+b.type),a.ca&&!a.ma?(c.clear(),a.w=nf,window&&window.location.reload()):a.ja=!0,b.ya(null),e=!1)}if(!d&&b.Db)for(a=b.Db.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
m.Gb=function(a){var b=a[0],c=0>a[1];a=a[2];this.w.ga=!0;var d=this.T.power;d&&(d.textContent="Shutdown");this.ja||(this.g("PC8080 v"+of+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.ja=!0);this.b&&(tf(this,this.b,b,c,a),tc(this.b));this.ka&&(sf(this,b),b.clear());!c&&this.I&&(this.I.clear(),delete this.I);this.F=0}; m.Gb=function(a){var b=a[0],c=0>a[1];a=a[2];this.A.ha=!0;var d=this.U.power;d&&(d.textContent="Shutdown");this.fa||(this.g("PC8080 v"+pf+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.fa=!0);this.b&&(uf(this,this.b,b,c,a),sc(this.b));this.ja&&(tf(this,b),b.clear());!c&&this.H&&(this.H.clear(),delete this.H);this.D=0};
function sf(a,b){if(pa("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.ua,d=a.A||"",e=b.toString(),f={app:"PC8080"};f.ver=of;f.url=c;f.user=d;f.type="bug";f.data=e;ma("http://www.pcjs.org/api/v1/report",f,!0)}} function tf(a,b){if(qa("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.ua,d=a.u||"",e=b.toString(),f={app:"PC8080"};f.ver=pf;f.url=c;f.user=d;f.type="bug";f.data=e;na("http://www.pcjs.org/api/v1/report",f,!0)}}
function cf(a,b,c){var d,e="none";if(a.F)return null;a.F--;var f=new H(a,of),h=new H(a,of,"validate"),g=ka();I(h,"timestamp",g);I(f,"timestamp",g);I(f,"version","1.22.0");I(f,"url",window?window.location.href:null);I(f,"browser",oa());a.b&&a.b.wa&&(c&&a.b.da(),d=a.b.wa(b,c),"object"===typeof d&&I(f,a.b.id,d),c&&(a.b.w.ga=!1,!1===d&&(e=null)));for(var g=ab(a.id),k=0;k<g.length;k++){var l=g[k];l.w.ga&&(l.wa&&(d=l.wa(b,c),"object"===typeof d&&I(f,l.id,d)),c&&(l.w.ga=!1,!1===d&&(e=null)))}e&&(c?(g=d= function df(a,b,c){var d,e="none";if(a.D)return null;a.D--;var f=new Gc(a,pf),h=new Gc(a,pf,"validate"),g=la();I(h,"timestamp",g);I(f,"timestamp",g);I(f,"version","1.22.0");I(f,"url",window?window.location.href:null);I(f,"browser",pa());a.b&&a.b.xa&&(c&&a.b.ea(),d=a.b.xa(b,c),"object"===typeof d&&I(f,a.b.id,d),c&&(a.b.A.ha=!1,!1===d&&(e=null)));for(var g=Za(a.id),l=0;l<g.length;l++){var k=g[l];k.A.ha&&(k.xa&&(d=k.xa(b,c),"object"===typeof d&&I(f,k.id,d)),c&&(k.A.ha=!1,!1===d&&(e=null)))}e&&(c?(g=
!1,b?(a.A&&uf(a,a.A,f.toString()),ff(h)&&ff(f)||(e=null,d=g=!0)):a.u&&(d=!0,g=3==a.u),d&&f.clear(g)):e=f.toString());c&&(a.w.ga=!1,b=a.T.power)&&(b.textContent="Power");a.F=0;return e}m.reset=function(){this.D&&this.D.reset&&(this.C&&hb(this,0)&&this.C.message("Resetting "+this.D.type,void 0),this.D.reset());for(var a=ab(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.D&&c.reset&&(this.C&&hb(this,0)&&this.C.message("Resetting "+c.type,void 0),c.reset())}}; d=!1,b?(a.u&&vf(a,a.u,f.toString()),gf(h)&&gf(f)||(e=null,d=g=!0)):a.w&&(d=!0,g=3==a.w),d&&f.clear(g)):e=f.toString());c&&(a.A.ha=!1,b=a.U.power)&&(b.textContent="Power");a.D=0;return e}m.reset=function(){this.B&&this.B.reset&&(this.F&&fb(this,0)&&this.F.message("Resetting "+this.B.type,void 0),this.B.reset());for(var a=Za(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.B&&c.reset&&(this.F&&fb(this,0)&&this.F.message("Resetting "+c.type,void 0),c.reset())}};
m.start=function(a,b){for(var c=ab(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var c=ab(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}}; m.start=function(a,b){for(var c=Za(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var c=Za(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
m.pa=function(a,b,c){var d=this;switch(b){case "power":return this.T[b]=c,c.onclick=function(){d.F||(d.w.ga?cf(d,!1,!0):qf(d,d.hb))},!0;case "reset":return this.T[b]=c,c.onclick=function(){if(d.w.ga&&!d.F)if(d.u&&!d.U){var a=pa("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");cf(d,a,!0);!a&&d.ea?window&&window.location.reload():d.hb(mf)}else d.reset(),d.b&&tc(d.b)},!0;case "save":if(da(na(),"pcjs.org")){c.parentNode.removeChild(c); m.qa=function(a,b,c){var d=this;switch(b){case "power":return this.U[b]=c,c.onclick=function(){d.D||(d.A.ha?df(d,!1,!0):rf(d,d.hb))},!0;case "reset":return this.U[b]=c,c.onclick=function(){if(d.A.ha&&!d.D)if(d.w&&!d.M){var a=qa("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");df(d,a,!0);!a&&d.ca?window&&window.location.reload():d.hb(nf)}else d.reset(),d.b&&sc(d.b)},!0;case "save":if(ea(oa(),"pcjs.org")){c.parentNode.removeChild(c);
break}this.T[b]=c;c.onclick=function(){var a=nf(d,!0);if(a){var b=!!(d.u&&!d.U||d.ea),c=cf(d,b);b?uf(d,a,c):d.na("Resume disabled, machine state not saved")}};return!0}return!1}; break}this.U[b]=c;c.onclick=function(){var a=of(d,!0);if(a){var b=!!(d.w&&!d.M||d.ca),c=df(d,b);b?vf(d,a,c):d.oa("Resume disabled, machine state not saved")}};return!0}return!1};
function nf(a,b){var c=a.A;c||(c=xa("user"),void 0!==c?!c&&b&&(c=null,window&&(c=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&&((c=vf(a,c))||a.na("The user ID is invalid."))):b&&a.na("Browser local storage is not available"));return c} function of(a,b){var c=a.u;c||(c=ta("user"),void 0!==c?!c&&b&&(c=null,window&&(c=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&&((c=wf(a,c))||a.oa("The user ID is invalid."))):b&&a.oa("Browser local storage is not available"));return c}
function vf(a,b){a.A=null;var c=ma(na()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(ya("user",c.data),a.A=c.data)}catch(e){t(e.message+" ("+d+")")}return a.A}function pf(a){var b=null;a.A&&(b=na()+"/api/v1/user?req=load&user="+a.A+"&state="+df(a,of));return b} function wf(a,b){a.u=null;var c=na(oa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(ua("user",c.data),a.u=c.data)}catch(e){t(e.message+" ("+d+")")}return a.u}function qf(a){var b=null;a.u&&(b=oa()+"/api/v1/user?req=load&user="+a.u+"&state="+ef(a,pf));return b}
function uf(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=df(a,of);d.data=c;b=ma(na()+"/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),ya("user",""),a.A=null)}} function vf(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=ef(a,pf);d.data=c;b=na(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.oa("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.oa(c),ua("user",""),a.u=null)}}
function pb(a,b,c){a=ab(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}m.jb=function(){};m.sa=function(a){this.b&&this.b.sa(a);this.H&&this.H.sa(a)};function zc(a,b){for(var c=0;c<a.aa.length;c++){var d=a.aa[c];b&1?(d=d.b,d.A=d.A&-8|10):(d=d.b,d.A=d.A&-8|9)}} function nb(a,b,c){a=Za(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}m.jb=function(){};m.ta=function(a){this.b&&this.b.ta(a);this.G&&this.G.ta(a)};
Ma(function(){for(var a=A(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=y(c),c=A(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=y(f),h=new kf(h,d,!0);eb(h,f);h.ba&&qf(h,h.hb)}});Ca.show.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=db("Computer",c.id))&&c.ja&&!c.w.ga&&c.hb(-1)}}); function yc(a,b){for(var c=0;c<a.Z.length;c++)a:{var d=a.Z[c];if(0<=b){if(b&1){d=d.b;d.u=d.u&-8|10;break a}var e=d.b;e.u=e.u&-8|9;if(e=d.M){for(var e=d.B,f=d.J,h=!0,g=d.K>>>e.aa;0<f&&g<e.B.length;)e.B[g].va&&(e.B[g].va=h=!1,e.B[g].Jb=!0),f-=e.la,g++;e=h}if(e)break a}for(var e=d.K,f=e+d.J,h=0,g=d.fa,l=0,k=0,n=d.u,p=0,w=d.D,A=0;e<f;){var u=ub(d.B,e);if(d.M&&u===d.G[h])l+=d.ca;else{d.G[h]=u;var u=u>>8|(u&255)<<8,ca=65536,C=16;l<n&&(n=l);for(var va=0;va<d.ca;va++){var x=(u&(ca>>=1))>>--C,W=d.X,S=l++,
Ca.exit.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=db("Computer",c.id))&&c.w.ga&&cf(c,!(!c.u||c.U),!0)}});var wf=0;function xf(a,b,c,d,e,f){e("Loading "+a+"...");ma(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Lf(g,a,b,c,d,e,f)})} x=g[x],S=(S+k*W.width)*x.length;W.data[S]=x[0];W.data[S+1]=x[1];W.data[S+2]=x[2];W.data[S+3]=x[3]}l>p&&(p=l);k<w&&(w=k);k>=A&&(A=k+1)}e+=2;h++;if(l>=d.u&&(l=0,k++,k>d.D))break}d.M=!0;n<d.u&&(d.ja.putImageData(d.X,0,0,n,w,p-n,A-w),d.V.drawImage(d.H,0,0,d.u,d.D,0,0,d.ma,d.ra))}}Ja(function(){for(var a=D(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=B(c),c=D(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=B(f),h=new lf(h,d,!0);ab(h,f);h.ba&&rf(h,h.hb)}});
function Lf(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){Xa(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2")); Ea.show.push(function(){for(var a=D(document,"pc8080","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=$a("Computer",c.id))&&c.fa&&!c.A.ha&&c.hb(-1)}});Ea.exit.push(function(){for(var a=D(document,"pc8080","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=$a("Computer",c.id))&&c.A.ha&&df(c,!(!c.w||c.M),!0)}});var xf=0;function yf(a,b,c,d,e,f){e("Loading "+a+"...");na(a,null,!0,function(h,g,l){l?(g||(g="unable to load "+a+" ("+l+")"),f(g,null)):Mf(g,a,b,c,d,e,f)})}
g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){g=null,a=p.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Mf(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)} function Mf(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){Ya(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
function Mf(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");ma(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,n=/( [a-z]+=)(['"])(.*?)\2/g;l=n.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/, g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){g=null,a=p.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Nf(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
"");a=a.replace(d[0],h);Mf(a,b,c)}})}else c(a,null)} function Nf(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");na(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=g[0],k,n=/( [a-z]+=)(['"])(.*?)\2/g;k=n.exec(f);)l=0>l.indexOf(k[1])?l.replace(">",k[0]+">"):l.replace(new RegExp(k[1]+"(['\"])(.*?)\\1"),k[0]);g[0]!=l&&(h=h.replace(g[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
function Nf(a,b,c,d){function e(a){if(void 0===g){var b=h&&A(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=fa(a))}function f(a){e("Error: "+a);k&&(--wf||Oa(!0));k=!1}var h,g,k=!0;wf++;Wa[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],p=document.createElement("style");p.type="text/css";p.styleSheet?p.styleSheet.cssText=l:p.appendChild(document.createTextNode(l));n.appendChild(p)}c|| "");a=a.replace(d[0],h);Nf(a,b,c)}})}else c(a,null)}
(c="/versions/pc8080/1.22.0/components.xsl");l=function(d,g){g?xf(c,null,null,!1,e,function(d,l){if(l)if(Xa(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var k=g.transformNode(l);k?(h.outerHTML=k,--wf||Oa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(k=new XSLTProcessor,k.importStylesheet(l),(k=k.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(k,h),--wf||Oa(!0)):f("invalid machine element: "+ function Of(a,b,c,d){function e(a){if(void 0===g){var b=h&&D(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ga(a))}function f(a){e("Error: "+a);l&&(--xf||Pa(!0));l=!1}var h,g,l=!0;xf++;Xa[a]={};try{if(h=document.getElementById(a)){var k;if("object"==typeof resources&&(k=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],p=document.createElement("style");p.type="text/css";p.styleSheet?p.styleSheet.cssText=k:p.appendChild(document.createTextNode(k));n.appendChild(p)}c||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?xf(b,a,d,!0,e,l):Lf(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(z){f(z.message)}return k}window.embedPC8080=function(a,b,c,d){Oa(!1);return Nf(a,b,c,d)};window.enableEvents=Oa;window.sendEvent=Pa; (c="/versions/pc8080/1.22.0/components.xsl");k=function(d,g){g?yf(c,null,null,!1,e,function(d,l){if(l)if(Ya(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var k=g.transformNode(l);k?(h.outerHTML=k,--xf||Pa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(k=new XSLTProcessor,k.importStylesheet(l),(k=k.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(k,h),--xf||Pa(!0)):f("invalid machine element: "+
function Of(a,b,c,d){if(!c&&b){d.push(b);a=Wa[d[0]];b=null;for(var e in a)if(da(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?ma(b,null,!0,function(a,b){Pf(b,d)}):Pf(null,d)}else t("Error ("+c+") requesting "+a)} a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?yf(b,a,d,!0,e,k):Mf(b,null,a,d,!1,e,k)}else f("missing machine element: "+a)}catch(w){f(w.message)}return l}window.embedPC8080=function(a,b,c,d){Pa(!1);return Of(a,b,c,d)};window.enableEvents=Pa;window.sendEvent=Qa;
function Pf(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Wa[f],k={},l;for(l in g){var n=g[l],p=ca(l);if("xml"==p){for(p=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=p.exec(g[l]);){var z=d[2];z&&(g[z]||(n=n.replace(d[0],"")))}d=l=ba(l)}else"xsl"==p&&(e=l=ba(l));k[l]=n}a&&(k[l="css"]=a);b[2]&&(k[l="parms"]=b[2]);b[3]&&(k[l="state"]=b[3]);d&&e?(l=JSON.stringify(k),h+=".js",c=c[1]+"var resources="+l+";"+c[2]+c[3],c=c.replace(/\u00A9/g, function Pf(a,b,c,d){if(!c&&b){d.push(b);a=Xa[d[0]];b=null;for(var e in a)if(ea(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?na(b,null,!0,function(a,b){Qf(b,d)}):Qf(null,d)}else t("Error ("+c+") requesting "+a)}
"&#xA9;"),l=h,g=null,k="data:application/javascript,",k=za("Firefox")?k+encodeURIComponent(c):k+encodeURI(c),l&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=k,g.download=l,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+l+"."):(window.open(k),c="Check your browser for a new window/tab containing the requested data"+(l?" ("+l+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n', function Qf(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Xa[f],l={},k;for(k in g){var n=g[k],p=da(k);if("xml"==p){for(p=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=p.exec(g[k]);){var w=d[2];w&&(g[w]||(n=n.replace(d[0],"")))}d=k=ba(k)}else"xsl"==p&&(e=k=ba(k));l[k]=n}a&&(l[k="css"]=a);b[2]&&(l[k="parms"]=b[2]);b[3]&&(l[k="state"]=b[3]);d&&e?(k=JSON.stringify(l),h+=".js",c=c[1]+"var resources="+k+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),k=h,g=null,l="data:application/javascript,",l=Ba("Firefox")?l+encodeURIComponent(c):l+encodeURI(c),k&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=l,g.download=k,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+k+"."):(window.open(l),c="Check your browser for a new window/tab containing the requested data"+(k?" ("+k+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n',
c+='<div id="'+f+'"></div>\n',c+="...\n",c+='<script type="text/javascript" src="'+h+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",t(c)):t("Missing XML/XSL resources")} c+='<div id="'+f+'"></div>\n',c+="...\n",c+='<script type="text/javascript" src="'+h+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",t(c)):t("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=db("Computer",a),e=db("Debugger",a);if(d){var f=cf(d,!0),h=d.L?JSON.stringify(d.L):null;b||(b="/versions/pcjs/1.22.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Qb:h}))return!0;ma(b,null,!0,function(c,d,e){Of(c,d,e,[a,ba(b,!0),h,f])});return!0}t("Unable to identify machine '"+a+"'");return!1};})(); window.savePC=function(a,b,c){var d=$a("Computer",a),e=$a("Debugger",a);if(d){var f=df(d,!0),h=d.K?JSON.stringify(d.K):null;b||(b="/versions/pcjs/1.22.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Rb:h}))return!0;na(b,null,!0,function(c,d,e){Pf(c,d,e,[a,ba(b,!0),h,f])});return!0}t("Unable to identify machine '"+a+"'");return!1};})();

View file

@ -1,124 +1,129 @@
(function(){var m;function aa(a){var b=16,c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c} (function(){var m;function aa(a){var b=16,c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c}
function n(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function ba(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 ca(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b} function n(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function ba(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 ca(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
function da(a,b){return-1!==a.indexOf(b,a.length-b.length)}var ea={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function fa(a){return a.replace(/[&<>"']/g,function(a){return ea[a]})}var ga=Date.now||function(){return+new Date};function ha(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())} function da(a,b){return-1!==a.indexOf(b,a.length-b.length)}var ea={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function fa(a){return a.replace(/[&<>"']/g,function(a){return ea[a]})}var ga=Date.now||function(){return+new Date};function ia(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
function p(a,b,c,d){var e=0,f=null,h=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),d&&d(a,f,e))});if(b&&"object"== function p(a,b,c,d){var e=0,f=null,h=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),d&&d(a,f,e))});if(b&&"object"==
typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");g.open("POST",a,!!c);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(k)}else g.open("GET",a,!!c),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();c||(f=g.responseText,200!=g.status&&(e=g.status||-1),d&&d(a,f,e),h=[f,e]);return h}function ia(){return"http://"+(window?window.location.host:"www.pcjs.org")} typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");g.open("POST",a,!!c);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(k)}else g.open("GET",a,!!c),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();c||(f=g.responseText,200!=g.status&&(e=g.status||-1),d&&d(a,f,e),h=[f,e]);return h}function ja(){return"http://"+(window?window.location.host:"www.pcjs.org")}
function q(a){window&&window.alert(a)}function ja(a){var b=!1;window&&(b=window.confirm(a));return b}var ka=null;function la(){if(null==ka){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}ka=a}return ka}function ma(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b} function q(a){window&&window.alert(a)}function ka(a){var b=!1;window&&(b=window.confirm(a));return b}var ma=null;function na(){if(null==ma){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}ma=a}return ma}function oa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function na(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function oa(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var r={init:[],show:[],exit:[]},pa=!1,qa=!0;function ra(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function t(a){r.init.push(a)} function pa(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function qa(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var ta={init:[],show:[],exit:[]},ua=!1,va=!0;function wa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function xa(a){ta.init.push(a)}
function sa(a){if(qa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){q("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function ta(a){!qa&&a?(qa=!0,pa&&ua("init")):qa=a}function ua(a){r[a]&&sa(r[a])}ra("onload",function(){pa=!0;sa(r.init)});ra("onpageshow",function(){sa(r.show)});ra(oa("Opera")||oa("iOS")?"onunload":"onbeforeunload",function(){sa(r.exit)}); function ya(a){if(va)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){q("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function za(a){!va&&a?(va=!0,ua&&Aa("init")):va=a}function Aa(a){ta[a]&&ya(ta[a])}wa("onload",function(){ua=!0;ya(ta.init)});wa("onpageshow",function(){ya(ta.show)});wa(qa("Opera")||qa("iOS")?"onunload":"onbeforeunload",function(){ya(ta.exit)});
function v(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.Ra=b.comment;this.bb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Ta=this.id.substr(0,b),this.Sa=this.id.substr(b+1)):this.Sa=this.id;this[a]=c;this.g={ia:!1,ra:!1,Ja:!1,J:!1,ba:!1};this.Da=null;this.g.ba=!1;this.w={};this.I=null;w.push(this)}var va=void 0,wa={}; function t(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.Sa=b.comment;this.eb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Ua=this.id.substr(0,b),this.Ta=this.id.substr(b+1)):this.Ta=this.id;this[a]=c;this.g={ia:!1,qa:!1,Ia:!1,K:!1,ba:!1};this.Ba=null;this.g.ba=!1;this.A={};this.I=null;u.push(this)}var Ba=void 0,Ca={};
if(window){va||(va=window.location.search.substr(1));for(var xa,ya=/\+/g,za=/([^&=]+)=?([^&]*)/g;xa=za.exec(va);)wa[decodeURIComponent(xa[1].replace(ya," "))]=decodeURIComponent(xa[2].replace(ya," "))}function Aa(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b} if(window){Ba||(Ba=window.location.search.substr(1));for(var Da,Ea=/\+/g,Ha=/([^&=]+)=?([^&]*)/g;Da=Ha.exec(Ba);)Ca[decodeURIComponent(Da[1].replace(Ea," "))]=decodeURIComponent(Da[2].replace(Ea," "))}function Ia(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
function x(a,b){b||(b=v);a.prototype=Aa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var w=[],Ba={};function Ca(a,b,c){Ba[a]&&b&&(Ba[a][b]=c)}function y(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 v(a,b){b||(b=t);a.prototype=Ia(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var u=[],Ja={};function Ka(a,b,c){Ja[a]&&b&&(Ja[a][b]=c)}function w(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<u.length;b++){var d=u[b];a&&d.id.indexOf(a)||c.push(d)}return c}
function Da(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 z(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){q(c.message+" ("+a+")")}return b} function La(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<u.length;d++)if(c)c==u[d]&&(c=null);else if(!(a!=u[d].type||b&&u[d].id.indexOf(b)))return u[d]}return null}function y(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){q(c.message+" ("+a+")")}return b}
function Ea(a,b){for(var c=A(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pc8080-binding":(g=z(h))&&g.binding&&a.P(g.type,g.binding,h,g.value),l=k.length}}}} function Ma(a,b){for(var c=z(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pc8080-binding":(g=y(h))&&g.binding&&a.P(g.type,g.binding,h,g.value),l=k.length}}}}
function A(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 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}
v.prototype={constructor:v,parent:null,toString:function(){return this.name?this.name:this.id||this.type},P: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.Y=this.w[b]=c,c.value="",this.O=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c), t.prototype={constructor:t,parent:null,toString:function(){return this.name?this.name:this.id||this.type},P:function(a,b,c){switch(b){case "clear":return this.A[b]||(this.A[b]=c,c.onclick=function(a){return function(){a.A.print&&(a.A.print.value="")}}(this)),!0;case "print":return this.A[b]||(this.Z=this.A[b]=c,c.value="",this.O=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
this.K=function(a,b,c){this.O(a,"notice",c)}),!0;default:return!1}},log:function(){},O:function(){},status:function(a){this.O(this.Sa+": "+a)},K:function(a,b){b||q(a)},W:function(){return this.g.J=!0},V:function(a,b){b&&(this.g.J=!1);return!0}};function Fa(a,b){if(a.g.Ja)return a.g.ra&&(a.g.ra=!1),a.g.Ja=!1;if(a.g.ba)return a.O(a.toString()+" error"),!1;a.g.ra=b;return a.g.ra}function B(a){if(!a.g.ba&&(a.g.ia=!0,a.g.ia)){var b=a.Da;a.Da=null;b&&b()}} this.L=function(a,b,c){this.O(a,"notice",c)}),!0;default:return!1}},log:function(){},O:function(){},status:function(a){this.O(this.Ta+": "+a)},L:function(a,b){b||q(a)},X:function(){return this.g.K=!0},W:function(a,b){b&&(this.g.K=!1);return!0}};function Na(a,b){if(a.g.Ia)return a.g.qa&&(a.g.qa=!1),a.g.Ia=!1;if(a.g.ba)return a.O(a.toString()+" error"),!1;a.g.qa=b;return a.g.qa}function B(a){if(!a.g.ba&&(a.g.ia=!0,a.g.ia)){var b=a.Ba;a.Ba=null;b&&b()}}
function Ga(a,b){b&&(a.g.ia?b():a.Da=b);return a.g.ia} function Oa(a,b){b&&(a.g.ia?b():a.Ba=b);return a.g.ia}
var Ha="undefined"!==typeof ArrayBuffer,Ia=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1, var Pa="undefined"!==typeof ArrayBuffer,Qa=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function Ja(a){v.call(this,"Panel",a,Ja)}x(Ja);m=Ja.prototype;m.P=function(a,b,c,d){return this.o&&this.o.P(a,b,c,d)||this.a&&this.a.P(a,b,c,d)||this.b&&this.b.P(a,b,c,d)?!0:this.parent.P.call(this,a,b,c,d)};m.ca=function(a,b,c,d){this.o=a;this.A=b;this.a=c;this.I=d;this.b=Ka(a,"Keyboard")};m.W=function(a,b){b||La();return!0};m.V=function(){return!0};m.fa=function(){}; 0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function Ra(a){t.call(this,"Panel",a,Ra)}v(Ra);m=Ra.prototype;m.P=function(a,b,c,d){return this.v&&this.v.P(a,b,c,d)||this.a&&this.a.P(a,b,c,d)||this.b&&this.b.P(a,b,c,d)?!0:this.parent.P.call(this,a,b,c,d)};m.ca=function(a,b,c,d){this.v=a;this.w=b;this.a=c;this.I=d;this.b=Sa(a,"Keyboard")};m.X=function(a,b){b||Ta();return!0};m.W=function(){return!0};m.fa=function(){};
function La(){for(var a=!1,b=A(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<w.length;h++)if(w[h].id===f){f=w[h];break a}f=null}f||(a=!0,f=new Ja(e));Ea(f,d);a&&B(f)}}t(La); function Ta(){for(var a=!1,b=z(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=y(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<u.length;h++)if(u[h].id===f){f=u[h];break a}f=null}f||(a=!0,f=new Ra(e));Ma(f,d);a&&B(f)}}xa(Ta);
function Ma(a,b,c){v.call(this,"Bus",a,Ma);this.a=b;this.I=c;this.c=a.busWidth||16;this.m=Math.pow(2,this.c);this.h=this.m-1|0;this.G=16>=this.c?10:20>=this.c?12:24>=this.c?14:15;this.H=1<<this.G;this.o=this.H>>2;this.l=this.H-1;this.f=this.m/this.H|0;this.i=[];this.j=[];this.v=[];this.A=[];a=new C;Na(a,this.I);this.b=Array(this.f);for(b=0;b<this.f;b++)this.b[b]=a;a=this.a;b=this.b;c=this.G;var d=this.h;a.M=b;a.G=c;a.H=1<<a.G;a.S=a.H-1;a.Aa=b.length;a.pa=a.Aa-1;a.$=d;B(this)}x(Ma); function Ua(a,b,c){t.call(this,"Bus",a,Ua);this.a=b;this.I=c;this.i=a.busWidth||16;this.m=Math.pow(2,this.i);this.h=this.m-1|0;this.C=16>=this.i?10:20>=this.i?12:24>=this.i?14:15;this.H=1<<this.C;this.w=this.H>>2;this.c=this.H-1;this.f=this.m/this.H|0;this.v=this.f-1;this.j=[];this.l=[];this.o=[];this.B=[];a=new C;Va(a,this.I);this.b=Array(this.f);for(b=0;b<this.f;b++)this.b[b]=a;a=this.a;b=this.b;c=this.C;var d=this.h;a.M=b;a.C=c;a.H=1<<a.C;a.T=a.H-1;a.Oa=b.length;a.Ha=a.Oa-1;a.$=d;B(this)}v(Ua);
Ma.prototype.reset=function(){};Ma.prototype.W=function(a,b){b||this.reset();return!0};function Oa(a,b,c,d){for(var e=b>>>a.G;0<c&&e<a.b.length;){var f=a.b[e],h=e*a.H,g=a.H-(b-h);g>c&&(g=c);if(f&&f.size){if(f.type==d){if(b+c<=f.qa)return f.Ia+=f.qa-b,f.qa=b,!0;if(b>=f.qa+f.Ia){g=f.size-(b-h);g>c&&(g=c);f.Ia=b-f.qa+g;b=h+a.H;c-=g;e++;continue}}return Pa(1,b,c)}b=new C(b,g,a.H,d);Na(b,a.I,f);a.b[e++]=b;b=h+a.H;c-=g}return 0>=c?!0:Pa(2,b,c)} Ua.prototype.reset=function(){};Ua.prototype.X=function(a,b){b||this.reset();return!0};function Wa(a,b,c,d){for(var e=b>>>a.C;0<c&&e<a.b.length;){var f=a.b[e],h=e*a.H,g=a.H-(b-h);g>c&&(g=c);if(f&&f.size){if(f.type==d){if(b+c<=f.pa)return f.Ga+=f.pa-b,f.pa=b,!0;if(b>=f.pa+f.Ga){g=f.size-(b-h);g>c&&(g=c);f.Ga=b-f.pa+g;b=h+a.H;c-=g;e++;continue}}return Xa(1,b,c)}b=new C(b,g,a.H,d);Va(b,a.I,f);a.b[e++]=b;b=h+a.H;c-=g}return 0>=c?!0:Xa(2,b,c)}
Ma.prototype.B=function(a){return this.b[(a&this.h)>>>this.G].oa(a&this.l,a)};function Qa(a,b,c){a.b[(b&a.h)>>>a.G].eb(b&a.l,c&255,b)}function Pa(a,b,c){q("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Sa;if(Ha){var Ta=new ArrayBuffer(2);(new DataView(Ta)).setUint16(0,256,!0);Sa=256===(new Uint16Array(Ta))[0]}else Sa=!1;var Ua=Sa; Ua.prototype.F=function(a){return this.b[(a&this.h)>>>this.C].oa(a&this.c,a)};function Ya(a,b,c){a.b[(b&a.h)>>>a.C].hb(b&a.c,c&255,b)}function Xa(a,b,c){q("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Za;if(Pa){var $a=new ArrayBuffer(2);(new DataView($a)).setUint16(0,256,!0);Za=256===(new Uint16Array($a))[0]}else Za=!1;var ab=Za;
function C(a,b,c,d){this.id=Va+=2;this.a=null;this.qa=a;this.Ia=b;this.size=c||0;this.type=d||Wa;this.h=d==Xa;Na(this);this.Z=this.ib=!1;if(c)if(Ha)this.c=new ArrayBuffer(c),this.f=new DataView(this.c,0,c),this.b=new Uint8Array(this.c,0,c),this.l=new Uint16Array(this.c,0,c>>1),this.a=new Int32Array(this.c,0,c>>2),Ya(this,Ua?Za:$a);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;Ya(this,ab)}else Ya(this)}var Wa=0,Xa=2,Va=0; function C(a,b,c,d){this.id=bb+=2;this.a=null;this.pa=a;this.Ga=b;this.size=c||0;this.type=d||cb;this.h=d==db;Va(this);this.R=this.Xa=!1;if(c)if(Pa)this.c=new ArrayBuffer(c),this.f=new DataView(this.c,0,c),this.b=new Uint8Array(this.c,0,c),this.l=new Uint16Array(this.c,0,c>>1),this.a=new Int32Array(this.c,0,c>>2),eb(this,ab?fb:gb);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;eb(this,hb)}else eb(this)}var cb=0,db=2,bb=0;
C.prototype={constructor:C,parent:null,save:function(){var a,b;if(Ha)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.f.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(Ha)for(b=0;b<a.length;b++)this.f.setInt32(b<<2,a[b],!0);else this.a=a;return this.Z=!0}return!1},m:function(){return 255},o:function(){},w:function(a,b){return this.oa(a++,b++)|this.oa(a,b)<<8},v:function(a,b,c){this.za(a++,b&255,c++);this.za(a,b>>8,c)},G:function(a){return this.a[a>> C.prototype={constructor:C,parent:null,save:function(){var a,b;if(Pa)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.f.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(Pa)for(b=0;b<a.length;b++)this.f.setInt32(b<<2,a[b],!0);else this.a=a;return this.R=!0}return!1},m:function(){return 255},w:function(){},A:function(a,b){return this.oa(a++,b++)|this.oa(a,b)<<8},v:function(a,b,c){this.ya(a++,b&255,c++);this.ya(a,b>>8,c)},D:function(a){return this.a[a>>
2]>>>((a&3)<<3)&255},S:function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8},$:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.Z=!0},Aa:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.a[c]=this.a[c]&~(65535<<d)|b<<d:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.Z=!0},C:function(a,b){return this.D(a,b)},L:function(a,b){return this.M(a,b)},U:function(a,b,c){this.h||this.eb(a,b,c)},ga:function(a,b, 2]>>>((a&3)<<3)&255},M:function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8},V:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.R=!0},ha:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.a[c]=this.a[c]&~(65535<<d)|b<<d:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.R=!0},B:function(a,b){return this.Ma(a,b)},H:function(a,b){return this.fb(a,b)},T:function(a,b,c){this.h||this.hb(a,b,c)},$:function(a,b,
c){this.h||this.ha(a,b,c)},A:function(a){return this.b[a]},F:function(a){return this.b[a]},H:function(a){return this.f.getUint16(a,!0)},N:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.l[a>>1]},T:function(a,b){this.b[a]=b;this.Z=!0},X:function(a,b){this.b[a]=b;this.Z=!0},aa:function(a,b){this.f.setUint16(a,b,!0);this.Z=!0},pa:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.l[a>>1]=b;this.Z=!0}};function Na(a,b,c){a.I=b;a.i=a.j=0;c&&((a.i=c.i)&&bb(a,cb,!1),(a.j=c.j)&&db(a,cb,!1))} c){this.h||this.aa(a,b,c)},o:function(a){return this.b[a]},C:function(a){return this.b[a]},G:function(a){return this.f.getUint16(a,!0)},J:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.l[a>>1]},N:function(a,b){this.b[a]=b;this.R=!0},U:function(a,b){this.b[a]=b;this.R=!0},Y:function(a,b){this.f.setUint16(a,b,!0);this.R=!0},ga:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.l[a>>1]=b;this.R=!0}};function Va(a,b,c){a.I=b;a.i=a.j=0;c&&((a.i=c.i)&&ib(a,jb,!1),(a.j=c.j)&&kb(a,jb,!1))}
function db(a,b,c){c&&a.j||(a.za=!a.h&&b[2]||a.o,a.ub=!a.h&&b[3]||a.v);if(c||void 0===c)a.eb=b[2]||a.o,a.ha=b[3]||a.v}function bb(a,b,c){c&&a.i||(a.oa=b[0]||a.m,a.tb=b[1]||a.w);if(c||void 0===c)a.D=b[0]||a.m,a.M=b[1]||a.w}function Ya(a,b){b||(b=eb);bb(a,b,void 0);db(a,b,void 0)}var eb=[],ab=[C.prototype.G,C.prototype.S,C.prototype.$,C.prototype.Aa],cb=[C.prototype.C,C.prototype.L,C.prototype.U,C.prototype.ga]; function kb(a,b,c){c&&a.j||(a.ya=!a.h&&b[2]||a.w,a.wb=!a.h&&b[3]||a.v);if(c||void 0===c)a.hb=b[2]||a.w,a.aa=b[3]||a.v}function ib(a,b,c){c&&a.i||(a.oa=b[0]||a.m,a.vb=b[1]||a.A);if(c||void 0===c)a.Ma=b[0]||a.m,a.fb=b[1]||a.A}function eb(a,b){b||(b=lb);ib(a,b,void 0);kb(a,b,void 0)}var lb=[],hb=[C.prototype.D,C.prototype.M,C.prototype.V,C.prototype.ha],jb=[C.prototype.B,C.prototype.H,C.prototype.T,C.prototype.$];
if(Ha)var $a=[C.prototype.A,C.prototype.H,C.prototype.T,C.prototype.aa],Za=[C.prototype.F,C.prototype.N,C.prototype.X,C.prototype.pa]; if(Pa)var gb=[C.prototype.o,C.prototype.G,C.prototype.N,C.prototype.Y],fb=[C.prototype.C,C.prototype.J,C.prototype.U,C.prototype.ga];
function fb(a,b){v.call(this,"CPU",a,fb);var c=a.cycles||b,d=a.multiplier||1;this.c={};this.c.na=c;this.c.Ha=0;this.c.ma=d;this.c.Ka=Math.round(this.c.na/1E4)/100;this.c.ja=this.c.Ka*this.c.ma;this.g.R=!1;this.g.Xa=!1;this.g.Va=a.autoStart;this.g.Wa=!1;this.g.Ba=!1;this.c.Fa=this.c.la=0;this.c.Ga=a.csStart;this.c.sa=a.csInterval;this.c.ta=a.csStop;this.fb=this.Na.bind(this);B(this)}x(fb);var gb=["power","reset"];m=fb.prototype; function mb(a,b){t.call(this,"CPU",a,mb);var c=a.cycles||b,d=a.multiplier||1;this.c={};this.c.na=c;this.c.Fa=0;this.c.ma=d;this.c.Ja=Math.round(this.c.na/1E4)/100;this.c.ja=this.c.Ja*this.c.ma;this.g.S=!1;this.g.Za=!1;this.g.Wa=a.autoStart;this.g.Ya=!1;this.g.za=!1;this.c.Da=this.c.la=0;this.c.Ea=a.csStart;this.c.ra=a.csInterval;this.c.sa=a.csStop;this.ib=this.Na.bind(this);B(this)}v(mb);var nb=["power","reset"];m=mb.prototype;
m.ca=function(a,b,c,d){this.o=a;this.A=b;this.I=d;for(b=0;b<gb.length;b++)(c=this.w[gb[b]])&&this.o.P(null,gb[b],c);this.X=(b=Ka(a,"Video"))&&Math.max(b.X,b.gb)||60;this.ha=Ka(a,"ChipSet");a=hb(a,"autoStart");null!=a&&(this.g.Va="true"==a?!0:"false"==a?!1:!!a);B(this)};m.reset=function(){this.c.Ha=0};m.save=function(){return null};m.restore=function(){return!1}; m.ca=function(a,b,c,d){this.v=a;this.w=b;this.I=d;for(b=0;b<nb.length;b++)(c=this.A[nb[b]])&&this.v.P(null,nb[b],c);this.Y=(b=Sa(a,"Video"))&&Math.max(b.Y,b.jb)||60;this.ha=Sa(a,"ChipSet");a=ob(a,"autoStart");null!=a&&(this.g.Wa="true"==a?!0:"false"==a?!1:!!a);B(this)};m.reset=function(){this.c.Fa=0};m.save=function(){return null};m.restore=function(){return!1};
m.W=function(a,b){if(!b){if(a&&this.restore){ib(this);if(!this.restore(a))return!1;jb(this)}else this.reset();this.O("No debugger detected")}kb(this);return!0};m.V=function(a){return a?this.save():!0};function lb(a){(a.g.Va||void 0===a.w.run)&&a.Na()}m.Ya=function(){return 0};function jb(a){void 0===a.c.Ga&&(a.c.Ga=0);void 0===a.c.sa&&(a.c.sa=-1);void 0===a.c.ta&&(a.c.ta=-1);a.g.Ba=0<=a.c.Ga&&0<a.c.sa;a.g.Ba&&(a.c.Fa=0,a.c.la=a.c.Ga-a.U)} m.X=function(a,b){if(!b){if(a&&this.restore){pb(this);if(!this.restore(a))return!1;qb(this)}else this.reset();this.O("No debugger detected")}rb(this);return!0};m.W=function(a){return a?this.save():!0};function sb(a){(a.g.Wa||void 0===a.A.run)&&a.Na()}m.$a=function(){return 0};function qb(a){void 0===a.c.Ea&&(a.c.Ea=0);void 0===a.c.ra&&(a.c.ra=-1);void 0===a.c.sa&&(a.c.sa=-1);a.g.za=0<=a.c.Ea&&0<a.c.ra;a.g.za&&(a.c.Da=0,a.c.la=a.c.Ea-a.V)}
m.P=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.w[b]=c;a=!0;break;case "run":this.w[b]=c;c.onclick=function(){var a;if(a=d.o)if(a=d.o,a.g.J)a=!0;else{var b=null,c,g=y(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.g.ia);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.g.J);c++);c==g.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.g.ia?"powered yet":"ready yet"+(b.Da?" (waiting for notification)":""))+".");a=!1}a&&(d.g.R?mb(d,!0):d.Na())};a=!0;break; m.P=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.A[b]=c;a=!0;break;case "run":this.A[b]=c;c.onclick=function(){var a;if(a=d.v)if(a=d.v,a.g.K)a=!0;else{var b=null,c,g=w(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.g.ia);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.g.K);c++);c==g.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.g.ia?"powered yet":"ready yet"+(b.Ba?" (waiting for notification)":""))+".");a=!1}a&&(d.g.S?tb(d,!0):d.Na())};a=!0;break;
case "speed":this.w[b]=c;a=!0;break;case "setSpeed":this.w[b]=c,c.onclick=function(){nb(d,d.c.ma<<1)},c.textContent=this.c.ja.toFixed(2)+"Mhz",a=!0}return a};function ob(a,b,c){a.U+=b;c&&(a.T=a.a=0)} case "speed":this.A[b]=c;a=!0;break;case "setSpeed":this.A[b]=c,c.onclick=function(){ub(d,d.c.ma<<1)},c.textContent=this.c.ja.toFixed(2)+"Mhz",a=!0}return a};function vb(a,b,c){a.V+=b;c&&(a.U=a.a=0)}
function pb(a,b){var c=30;c<a.X&&(c=a.X);2>c&&(c=2);var d=1;b&&1<a.c.ma&&a.c.da&&(d=a.c.da/a.c.Ka);a.c.Za=Math.round(1E3/30);a.c.nb=Math.floor(a.c.na/c*d);a.c.La=Math.floor(a.c.na/30*d);a.c.ab=Math.floor(a.c.na/a.X*d);a.c.$a=Math.floor(a.c.na/2*d);b||(a.c.wa=a.c.La,a.c.va=a.c.ab,a.c.ua=a.c.$a);a.c.Ma=0}function qb(a){return a.U+a.N+a.T-a.a}function ib(a){a.c.da=0;a.U=a.N=a.T=a.a=0;jb(a);nb(a,1)} function xb(a,b){var c=30;c<a.Y&&(c=a.Y);2>c&&(c=2);var d=1;b&&1<a.c.ma&&a.c.da&&(d=a.c.da/a.c.Ja);a.c.ab=Math.round(1E3/30);a.c.pb=Math.floor(a.c.na/c*d);a.c.Ka=Math.floor(a.c.na/30*d);a.c.cb=Math.floor(a.c.na/a.Y*d);a.c.bb=Math.floor(a.c.na/2*d);b||(a.c.va=a.c.Ka,a.c.ua=a.c.cb,a.c.ta=a.c.bb);a.c.La=0}function yb(a){return a.V+a.N+a.U-a.a}function pb(a){a.c.da=0;a.V=a.N=a.U=a.a=0;qb(a);ub(a,1)}
function nb(a,b){if(void 0!==b){.8>a.c.da/a.c.ja&&(b=1);a.c.ma=b;var c=a.c.Ka*a.c.ma;if(a.c.ja!=c){a.c.ja=c;var c=a.c.ja.toFixed(2)+"Mhz",d=a.w.setSpeed;d&&(d.textContent=c);a.O("target speed: "+c)}}ob(a,a.N);a.N=0;a.c.ka=ga();a.c.ea=0;pb(a)} function ub(a,b){if(void 0!==b){.8>a.c.da/a.c.ja&&(b=1);a.c.ma=b;var c=a.c.Ja*a.c.ma;if(a.c.ja!=c){a.c.ja=c;var c=a.c.ja.toFixed(2)+"Mhz",d=a.A.setSpeed;d&&(d.textContent=c);a.O("target speed: "+c)}}vb(a,a.N);a.N=0;a.c.ka=ga();a.c.ea=0;xb(a)}
m.Na=function(){if(Fa(this,!0)){if(!this.g.R){nb(this);this.o&&this.o.start(this.c.ka,qb(this));this.g.R=!0;this.g.Xa=!0;this.ha&&this.ha.start();var a=this.w.run;a&&(a.textContent="Halt");this.o&&this.o.fa(!0)}this.c.Ma>=this.c.na&&pb(this,!0);this.c.xa=0;this.c.Ea=ga();this.c.ea&&(a=this.c.Ea-this.c.ea,a>this.c.Za&&(this.c.ka+=a,this.c.ka>this.c.Ea&&(this.c.ka=this.c.Ea)));try{do{var b=this.g.Ba?1:this.c.nb;try{this.cb(b)}catch(e){if("number"!=typeof e)throw e;}var c=this.T-this.a;this.N+=c;this.c.xa+= m.Na=function(){if(Na(this,!0)){if(!this.g.S){ub(this);this.v&&this.v.start(this.c.ka,yb(this));this.g.S=!0;this.g.Za=!0;this.ha&&this.ha.start();var a=this.A.run;a&&(a.textContent="Halt");this.v&&this.v.fa(!0)}this.c.La>=this.c.na&&xb(this,!0);this.c.wa=0;this.c.Ca=ga();this.c.ea&&(a=this.c.Ca-this.c.ea,a>this.c.ab&&(this.c.ka+=a,this.c.ka>this.c.Ca&&(this.c.ka=this.c.Ca)));try{do{var b=this.g.za?1:this.c.pb;try{this.gb(b)}catch(e){if("number"!=typeof e)throw e;}var c=this.U-this.a;this.N+=c;this.c.wa+=
c;ob(this,0,!0);a=c;if(this.g.Ba){var d=!1;this.c.Fa=this.c.Fa+this.Ya()|0;this.c.la-=a;0>=this.c.la&&(this.c.la+=this.c.sa,d=!0);0<=this.c.ta&&this.c.ta<=qb(this)&&(this.c.sa=this.c.ta=-1,jb(this),mb(this),d=!0);d&&this.O(qb(this)+" cycles: checksum="+n(this.c.Fa))}this.c.va-=c;0>=this.c.va&&(this.c.va+=this.c.ab,this.o&&rb(this.o,this.c.Ha++),this.c.Ha>this.X&&(this.c.Ha=0));this.c.ua-=c;0>=this.c.ua&&(this.c.ua+=this.c.$a,this.o&&this.o.fa());this.c.wa-=c;if(0>=this.c.wa){this.c.wa+=this.c.La; c;vb(this,0,!0);a=c;if(this.g.za){var d=!1;this.c.Da=this.c.Da+this.$a()|0;this.c.la-=a;0>=this.c.la&&(this.c.la+=this.c.ra,d=!0);0<=this.c.sa&&this.c.sa<=yb(this)&&(this.c.ra=this.c.sa=-1,qb(this),tb(this),d=!0);d&&this.O(yb(this)+" cycles: checksum="+n(this.c.Da))}this.c.ua-=c;0>=this.c.ua&&(this.c.ua+=this.c.cb,this.v&&zb(this.v,this.c.Fa++),this.c.Fa>this.Y&&(this.c.Fa=0));this.c.ta-=c;0>=this.c.ta&&(this.c.ta+=this.c.bb,this.v&&this.v.fa());this.c.va-=c;if(0>=this.c.va){this.c.va+=this.c.Ka;
break}}while(this.g.R)}catch(e){mb(this);kb(this);this.o&&this.o.stop(ga(),qb(this));Fa(this,!1);b=e.stack||e.message;this.g.ba=!0;this.K(b);return}b=setTimeout;c=this.fb;this.c.ea=ga();a=this.c.Za;this.c.xa&&(a=Math.round(a*this.c.xa/this.c.La));a-=this.c.ea-this.c.Ea;if(d=this.c.ea-this.c.ka)this.c.da=Math.round(this.N/(10*d))/100,864E5<=d&&(this.U=0,nb(this));if(0>a||this.c.da<this.c.ja)a=0;this.c.Ma+=this.c.xa;this.c.ea+=a;b(c,a)}else kb(this),this.o&&this.o.stop(ga(),qb(this))};m.cb=function(){return 0}; break}}while(this.g.S)}catch(e){tb(this);rb(this);this.v&&this.v.stop(ga(),yb(this));Na(this,!1);b=e.stack||e.message;this.g.ba=!0;this.L(b);return}b=setTimeout;c=this.ib;this.c.ea=ga();a=this.c.ab;this.c.wa&&(a=Math.round(a*this.c.wa/this.c.Ka));a-=this.c.ea-this.c.Ca;if(d=this.c.ea-this.c.ka)this.c.da=Math.round(this.N/(10*d))/100,864E5<=d&&(this.V=0,ub(this));if(0>a||this.c.da<this.c.ja)a=0;this.c.La+=this.c.wa;this.c.ea+=a;b(c,a)}else rb(this),this.v&&this.v.stop(ga(),yb(this))};m.gb=function(){return 0};
function mb(a,b){a.g.ra&&(a.g.Ja=!0);a.T-=a.a;a.a=0;ob(a,a.N);a.N=0;if(a.g.R){a.g.R=!1;a.ha&&a.ha.stop();var c=a.w.run;c&&(c.textContent="Run")}a.g.Ca=b}function kb(a){a.o&&(rb(a.o,-1),a.o.fa(void 0))}function sb(a){this.aa=a.model||8080;fb.call(this,a,1E6);this.Oa=tb;ib(this);this.g.Ca=this.g.hb=!1;this.Qa=0;this.M=[];this.G=this.H=this.S=this.Aa=this.pa=this.$=0;this.ga=[];this.Pa=0;ub(this)}x(sb,fb);function vb(a,b){a.ga.push(b)}m=sb.prototype; function tb(a,b){a.g.qa&&(a.g.Ia=!0);a.U-=a.a;a.a=0;vb(a,a.N);a.N=0;if(a.g.S){a.g.S=!1;a.ha&&a.ha.stop();var c=a.A.run;c&&(c.textContent="Run")}a.g.Aa=b}function rb(a){a.v&&(zb(a.v,-1),a.v.fa(void 0))}function Ab(a){this.aa=a.model||8080;mb.call(this,a,1E6);this.Pa=Bb;pb(this);this.g.Aa=this.g.kb=!1;this.Ra=0;this.M=[];this.C=this.H=this.T=this.Oa=this.Ha=this.$=0;this.ga=[];this.Qa=0;Cb(this)}v(Ab,mb);function Db(a,b){a.ga.push(b)}m=Ab.prototype;
m.reset=function(){this.g.R&&mb(this);ub(this);ib(this);this.g.ba=!1;this.parent.reset.call(this)};function ub(a){a.b=0;a.h=0;a.s=0;a.i=0;a.u=0;a.j=0;a.l=0;a.C=0;D(a,a.Pa);wb(a,0);a.F=0}function xb(a,b){a.Pa=b;D(a,b)}m.Ya=function(){var a=this.b+this.h+this.s+this.i+this.u+this.j+this.l|0;return a=a+this.C+this.m+yb(this)|0}; m.reset=function(){this.g.S&&tb(this);Cb(this);pb(this);this.g.ba=!1;this.parent.reset.call(this)};function Cb(a){a.b=0;a.h=0;a.s=0;a.i=0;a.u=0;a.j=0;a.l=0;a.B=0;D(a,a.Qa);Eb(a,0);a.G=0}function Fb(a,b){a.Qa=b;D(a,b)}m.$a=function(){var a=this.b+this.h+this.s+this.i+this.u+this.j+this.l|0;return a=a+this.B+this.m+Gb(this)|0};
m.save=function(){var a=new F(this);G(a,0,[this.b,this.h,this.s,this.i,this.u,this.j,this.l,this.C,this.m,yb(this)]);G(a,1,[this.F,this.U,this.c.ma]);for(var b=this.A,c=0,d=[],e=0;e<b.f;e++){var f=b.b[e];if(f.Z||f.ib){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var E=f[g],u=g+1;u<f.length&&f[u]===E;)u++;l[k++]=u-g;l[k++]=E;g=u}if(l.length<f.length){f=l;break a}}d[h]=f}}G(a,2,d);return a.data()}; m.save=function(){var a=new E(this);F(a,0,[this.b,this.h,this.s,this.i,this.u,this.j,this.l,this.B,this.m,Gb(this)]);F(a,1,[this.G,this.V,this.c.ma]);for(var b=this.w,c=0,d=[],e=0;e<b.f;e++){var f=b.b[e];if(f.R||f.Xa){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var x=f[g],r=g+1;r<f.length&&f[r]===x;)r++;l[k++]=r-g;l[k++]=x;g=r}if(l.length<f.length){f=l;break a}}d[h]=f}}F(a,2,d);return a.data()};
m.restore=function(a){var b=a[0];this.b=b[0];this.h=b[1];this.s=b[2];this.i=b[3];this.u=b[4];this.j=b[5];this.l=b[6];this.C=b[7]&65535;D(this,b[8]);wb(this,b[9]);b=a[1];this.F=b[0];this.U=b[1];nb(this,b[3]);a:{b=this.A;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.o){for(var f=0,h=Array(b.o),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.b[d];if(!f||!f.restore(e)){q("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b}; m.restore=function(a){var b=a[0];this.b=b[0];this.h=b[1];this.s=b[2];this.i=b[3];this.u=b[4];this.j=b[5];this.l=b[6];this.B=b[7]&65535;D(this,b[8]);Eb(this,b[9]);b=a[1];this.G=b[0];this.V=b[1];ub(this,b[3]);a:{b=this.w;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.w){for(var f=0,h=Array(b.w),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.b[d];if(!f||!f.restore(e)){q("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
m.P=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "SF":case "ZF":case "AF":case "PF":case "CF":this.w[b]=c;this.Qa++;d=!0;break;default:d=this.parent.P.call(this,a,b,c)}return d};function zb(a){return a.h<<8|a.s}function Ab(a,b){a.h=b>>8&255;a.s=b&255}function H(a){return a.i<<8|a.u}function Bb(a,b){a.i=b>>8&255;a.u=b&255}function I(a){return a.j<<8|a.l} m.P=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "SF":case "ZF":case "AF":case "PF":case "CF":this.A[b]=c;this.Ra++;d=!0;break;default:d=this.parent.P.call(this,a,b,c)}return d};function Hb(a){return a.h<<8|a.s}function Ib(a,b){a.h=b>>8&255;a.s=b&255}function G(a){return a.i<<8|a.u}function Jb(a,b){a.i=b>>8&255;a.u=b&255}function H(a){return a.j<<8|a.l}
function J(a,b){a.j=b>>8&255;a.l=b&255}function D(a,b){a.m=b&65535}function K(a){return a.f&256?1:0}function Cb(a){return Ia[a.v&255]?4:0}function yb(a){return a.L&-214|(a.v&128?128:0)|(a.f&255?0:64)|((a.v^a.D)&16?16:0)|Cb(a)|K(a)}function wb(a,b){a.f=a.v=a.D=0;b&1&&(a.f|=256);b&4||(a.v|=1);b&16&&(a.D|=16);b&64||(a.f|=255);b&128&&(a.v^=192);a.L=a.L&-513|b&512|2}function L(a,b){a.D=a.b^b;return a.v=(a.f=a.b+b)&255}function M(a,b){a.D=a.b^b;return a.v=(a.f=a.b+b+(a.f&256?1:0))&255} function I(a,b){a.j=b>>8&255;a.l=b&255}function D(a,b){a.m=b&65535}function J(a){return a.f&256?1:0}function Kb(a){return Qa[a.o&255]?4:0}function Gb(a){return a.J&-214|(a.o&128?128:0)|(a.f&255?0:64)|((a.o^a.D)&16?16:0)|Kb(a)|J(a)}function Eb(a,b){a.f=a.o=a.D=0;b&1&&(a.f|=256);b&4||(a.o|=1);b&16&&(a.D|=16);b&64||(a.f|=255);b&128&&(a.o^=192);a.J=a.J&-513|b&512|2}function K(a,b){a.D=a.b^b;return a.o=(a.f=a.b+b)&255}function L(a,b){a.D=a.b^b;return a.o=(a.f=a.b+b+(a.f&256?1:0))&255}
function N(a,b){a.f=a.v=a.D=a.b&b;(a.b|b)&8&&(a.D^=16);return a.f}function Db(a,b){a.D=b^255;b=a.v=b+255&255;a.f=a.f&-256|b;return b}function Eb(a,b){a.D=b;b=a.v=b+1&255;a.f=a.f&-256|b;return b}function O(a,b){return a.v=a.f=a.D=a.b|b}function P(a,b){b^=255;a.D=a.b^b;return a.v=(a.f=a.b+b+1^256)&255}function Q(a,b){b^=255;a.D=a.b^b;return a.v=(a.f=a.b+b+(a.f&256?0:1)^256)&255}function R(a,b){return a.v=a.f=a.D=a.b^b}m.B=function(a){return this.M[(a&this.$)>>>this.G].oa(a&this.S,a)}; function M(a,b){a.f=a.o=a.D=a.b&b;(a.b|b)&8&&(a.D^=16);return a.f}function Lb(a,b){a.D=b^255;b=a.o=b+255&255;a.f=a.f&-256|b;return b}function Mb(a,b){a.D=b;b=a.o=b+1&255;a.f=a.f&-256|b;return b}function N(a,b){return a.o=a.f=a.D=a.b|b}function O(a,b){b^=255;a.D=a.b^b;return a.o=(a.f=a.b+b+1^256)&255}function P(a,b){b^=255;a.D=a.b^b;return a.o=(a.f=a.b+b+(a.f&256?0:1)^256)&255}function Q(a,b){return a.o=a.f=a.D=a.b^b}m.F=function(a){return this.M[(a&this.$)>>>this.C].oa(a&this.T,a)};
function Fb(a,b){var c=b&a.S,d=(b&a.$)>>>a.G;if(c<a.S)return a.M[d].tb(c,b);c=a.M[d].oa(c,b);return c|=a.M[d+1&a.pa].oa(0,b+1)<<8}function S(a,b,c){a.M[(b&a.$)>>>a.G].za(b&a.S,c&255,b)}function Gb(a,b,c){var d=b&a.S,e=(b&a.$)>>>a.G;d<a.S?a.M[e].ub(d,c&65535,b):(a.M[e++].za(d,c&255,b),a.M[e&a.pa].za(0,c>>8&255,b+1))}function T(a){var b=a.B(a.m);D(a,a.m+1);return b}function U(a){var b=Fb(a,a.m);D(a,a.m+2);return b}function V(a){var b=Fb(a,a.C);a.C=a.C+2&65535;return b} function Nb(a,b){var c=b&a.T,d=(b&a.$)>>>a.C;if(c<a.T)return a.M[d].vb(c,b);c=a.M[d].oa(c,b);return c|=a.M[d+1&a.Ha].oa(0,b+1)<<8}function R(a,b,c){a.M[(b&a.$)>>>a.C].ya(b&a.T,c&255,b)}function Ob(a,b,c){var d=b&a.T,e=(b&a.$)>>>a.C;d<a.T?a.M[e].wb(d,c&65535,b):(a.M[e++].ya(d,c&255,b),a.M[e&a.Ha].ya(0,c>>8&255,b+1))}function S(a){var b=a.F(a.m);D(a,a.m+1);return b}function T(a){var b=Nb(a,a.m);D(a,a.m+2);return b}function U(a){var b=Nb(a,a.B);a.B=a.B+2&65535;return b}
function W(a,b){a.C=a.C-2&65535;Gb(a,a.C,b)}function X(a,b,c,d){d=d||2;a.w[b]&&(void 0===c&&(a.g.ba=!0,a.K("Value for "+b+" is invalid"),mb(a)),c=!a.g.R||a.g.Wa?n(c,d):"--------".substr(0,d),a.w[b].textContent!=c&&(a.w[b].textContent=c))} function V(a,b){a.B=a.B-2&65535;Ob(a,a.B,b)}function W(a,b,c,d){d=d||2;a.A[b]&&(void 0===c&&(a.g.ba=!0,a.L("Value for "+b+" is invalid"),tb(a)),c=!a.g.S||a.g.Ya?n(c,d):"--------".substr(0,d),a.A[b].textContent!=c&&(a.A[b].textContent=c))}
m.fa=function(a){this.Qa&&(a||!this.g.R||this.g.Wa)&&(X(this,"A",this.b),X(this,"B",this.h),X(this,"C",this.s),X(this,"BC",zb(this),4),X(this,"D",this.i),X(this,"E",this.u),X(this,"DE",H(this),4),X(this,"H",this.j),X(this,"L",this.l),X(this,"HL",I(this),4),X(this,"SP",this.C,4),X(this,"PC",this.m,4),a=yb(this),X(this,"PS",a,4),X(this,"SF",a&128,1),X(this,"ZF",a&64,1),X(this,"AF",a&16,1),X(this,"PF",a&4,1),X(this,"CF",a&1,1));if(a=this.w.speed)a.textContent=this.g.R&&this.c.da?this.c.da.toFixed(2)+ m.fa=function(a){this.Ra&&(a||!this.g.S||this.g.Ya)&&(W(this,"A",this.b),W(this,"B",this.h),W(this,"C",this.s),W(this,"BC",Hb(this),4),W(this,"D",this.i),W(this,"E",this.u),W(this,"DE",G(this),4),W(this,"H",this.j),W(this,"L",this.l),W(this,"HL",H(this),4),W(this,"SP",this.B,4),W(this,"PC",this.m,4),a=Gb(this),W(this,"PS",a,4),W(this,"SF",a&128?1:0,1),W(this,"ZF",a&64?1:0,1),W(this,"AF",a&16?1:0,1),W(this,"PF",a&4?1:0,1),W(this,"CF",a&1?1:0,1));if(a=this.A.speed)a.textContent=this.g.S&&this.c.da?
"Mhz":"Stopped"};m.cb=function(a){this.g.Ca=!0;this.g.hb=!1;this.g.Xa=!1;this.T=this.a=a;do{if(a=this.F)this.F&8&&this.L&512?(a=199|(this.F&7)<<3,this.F&=-16,this.L&=-513,this.Oa[a].call(this),a=!0):a=!1,a=!a;if(a&&this.F&16){this.a=0;break}this.Oa[T(this)].call(this)}while(0<this.a);return this.g.Ca?this.T-this.a:void 0===this.g.Ca?0:-1};t(function(){for(var a=A(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new sb(d);Ea(d,c)}});function Hb(){this.a-=4} this.c.da.toFixed(2)+"Mhz":"Stopped"};m.gb=function(a){this.g.Aa=!0;this.g.kb=!1;this.g.Za=!1;this.U=this.a=a;do{if(a=this.G)this.G&8&&this.J&512?(a=199|(this.G&7)<<3,this.G&=-16,this.J&=-513,this.Pa[a].call(this),a=!0):a=!1,a=!a;if(a&&this.G&16){this.a=0;break}this.Pa[S(this)].call(this)}while(0<this.a);return this.g.Aa?this.U-this.a:void 0===this.g.Aa?0:-1};xa(function(){for(var a=z(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Ab(d);Ma(d,c)}});function Pb(){this.a-=4}
function Ib(){D(this,U(this));this.a-=10}function Jb(){D(this,V(this));this.a-=10}function Kb(){var a=U(this);W(this,this.m);D(this,a);this.a-=17} function Qb(){D(this,T(this));this.a-=10}function Rb(){D(this,U(this));this.a-=10}function Sb(){var a=T(this);V(this,this.m);D(this,a);this.a-=17}
var tb=[Hb,function(){Ab(this,U(this));this.a-=10},function(){S(this,zb(this),this.b);this.a-=7},function(){Ab(this,zb(this)+1);this.a-=5},function(){this.h=Eb(this,this.h);this.a-=5},function(){this.h=Db(this,this.h);this.a-=5},function(){this.h=T(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|a>>8;this.f=this.f&255|a&256;this.a-=4},Hb,function(){var a;J(this,a=I(this)+zb(this));this.f=this.f&255|a>>8&256;this.a-=10},function(){this.b=this.B(zb(this));this.a-=7},function(){Ab(this,zb(this)- var Bb=[Pb,function(){Ib(this,T(this));this.a-=10},function(){R(this,Hb(this),this.b);this.a-=7},function(){Ib(this,Hb(this)+1);this.a-=5},function(){this.h=Mb(this,this.h);this.a-=5},function(){this.h=Lb(this,this.h);this.a-=5},function(){this.h=S(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|a>>8;this.f=this.f&255|a&256;this.a-=4},Pb,function(){var a;I(this,a=H(this)+Hb(this));this.f=this.f&255|a>>8&256;this.a-=10},function(){this.b=this.F(Hb(this));this.a-=7},function(){Ib(this,Hb(this)-
1);this.a-=5},function(){this.s=Eb(this,this.s);this.a-=5},function(){this.s=Db(this,this.s);this.a-=5},function(){this.s=T(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(a|this.b)>>1;this.f=this.f&255|a;this.a-=4},Hb,function(){Bb(this,U(this));this.a-=10},function(){S(this,H(this),this.b);this.a-=7},function(){Bb(this,H(this)+1);this.a-=5},function(){this.i=Eb(this,this.i);this.a-=5},function(){this.i=Db(this,this.i);this.a-=5},function(){this.i=T(this);this.a-=7},function(){var a=this.b<< 1);this.a-=5},function(){this.s=Mb(this,this.s);this.a-=5},function(){this.s=Lb(this,this.s);this.a-=5},function(){this.s=S(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(a|this.b)>>1;this.f=this.f&255|a;this.a-=4},Pb,function(){Jb(this,T(this));this.a-=10},function(){R(this,G(this),this.b);this.a-=7},function(){Jb(this,G(this)+1);this.a-=5},function(){this.i=Mb(this,this.i);this.a-=5},function(){this.i=Lb(this,this.i);this.a-=5},function(){this.i=S(this);this.a-=7},function(){var a=this.b<<
1;this.b=a&255|this.f>>8;this.f=this.f&255|a&256;this.a-=4},Hb,function(){var a;J(this,a=I(this)+H(this));this.f=this.f&255|a>>8&256;this.a-=10},function(){this.b=this.B(H(this));this.a-=7},function(){Bb(this,H(this)-1);this.a-=5},function(){this.u=Eb(this,this.u);this.a-=5},function(){this.u=Db(this,this.u);this.a-=5},function(){this.u=T(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(this.f&256|this.b)>>1;this.f=this.f&255|a;this.a-=4},Hb,function(){J(this,U(this));this.a-=10},function(){Gb(this, 1;this.b=a&255|this.f>>8;this.f=this.f&255|a&256;this.a-=4},Pb,function(){var a;I(this,a=H(this)+G(this));this.f=this.f&255|a>>8&256;this.a-=10},function(){this.b=this.F(G(this));this.a-=7},function(){Jb(this,G(this)-1);this.a-=5},function(){this.u=Mb(this,this.u);this.a-=5},function(){this.u=Lb(this,this.u);this.a-=5},function(){this.u=S(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(this.f&256|this.b)>>1;this.f=this.f&255|a;this.a-=4},Pb,function(){I(this,T(this));this.a-=10},function(){Ob(this,
U(this),I(this));this.a-=16},function(){J(this,I(this)+1);this.a-=5},function(){this.j=Eb(this,this.j);this.a-=5},function(){this.j=Db(this,this.j);this.a-=5},function(){this.j=T(this);this.a-=7},function(){var a=0,b=K(this);if((this.v^this.D)&16||9<(this.b&15))a|=6;if(b||154<=this.b)a|=96,b=1;this.b=L(this,a);this.f=b?this.f|256:this.f&-257;this.a-=4},Hb,function(){var a;J(this,a=I(this)+I(this));this.f=this.f&255|a>>8&256;this.a-=10},function(){J(this,Fb(this,U(this)));this.a-=16},function(){J(this, T(this),H(this));this.a-=16},function(){I(this,H(this)+1);this.a-=5},function(){this.j=Mb(this,this.j);this.a-=5},function(){this.j=Lb(this,this.j);this.a-=5},function(){this.j=S(this);this.a-=7},function(){var a=0,b=J(this);if((this.o^this.D)&16||9<(this.b&15))a|=6;if(b||154<=this.b)a|=96,b=1;this.b=K(this,a);this.f=b?this.f|256:this.f&-257;this.a-=4},Pb,function(){var a;I(this,a=H(this)+H(this));this.f=this.f&255|a>>8&256;this.a-=10},function(){I(this,Nb(this,T(this)));this.a-=16},function(){I(this,
I(this)-1);this.a-=5},function(){this.l=Eb(this,this.l);this.a-=5},function(){this.l=Db(this,this.l);this.a-=5},function(){this.l=T(this);this.a-=7},function(){this.b=~this.b&255;this.a-=4},Hb,function(){this.C=U(this)&65535;this.a-=10},function(){S(this,U(this),this.b);this.a-=13},function(){this.C=this.C+1&65535;this.a-=5},function(){var a=I(this);S(this,a,Eb(this,this.B(a)));this.a-=10},function(){var a=I(this);S(this,a,Db(this,this.B(a)));this.a-=10},function(){S(this,I(this),T(this));this.a-= H(this)-1);this.a-=5},function(){this.l=Mb(this,this.l);this.a-=5},function(){this.l=Lb(this,this.l);this.a-=5},function(){this.l=S(this);this.a-=7},function(){this.b=~this.b&255;this.a-=4},Pb,function(){this.B=T(this)&65535;this.a-=10},function(){R(this,T(this),this.b);this.a-=13},function(){this.B=this.B+1&65535;this.a-=5},function(){var a=H(this);R(this,a,Mb(this,this.F(a)));this.a-=10},function(){var a=H(this);R(this,a,Lb(this,this.F(a)));this.a-=10},function(){R(this,H(this),S(this));this.a-=
10},function(){this.f|=256;this.a-=4},Hb,function(){var a;J(this,a=I(this)+this.C);this.f=this.f&255|a>>8&256;this.a-=10},function(){this.b=this.B(U(this));this.a-=13},function(){this.C=this.C-1&65535;this.a-=5},function(){this.b=Eb(this,this.b);this.a-=5},function(){this.b=Db(this,this.b);this.a-=5},function(){this.b=T(this);this.a-=7},function(){this.f=K(this)?this.f&-257:this.f|256;this.a-=4},function(){this.a-=5},function(){this.h=this.s;this.a-=5},function(){this.h=this.i;this.a-=5},function(){this.h= 10},function(){this.f|=256;this.a-=4},Pb,function(){var a;I(this,a=H(this)+this.B);this.f=this.f&255|a>>8&256;this.a-=10},function(){this.b=this.F(T(this));this.a-=13},function(){this.B=this.B-1&65535;this.a-=5},function(){this.b=Mb(this,this.b);this.a-=5},function(){this.b=Lb(this,this.b);this.a-=5},function(){this.b=S(this);this.a-=7},function(){this.f=J(this)?this.f&-257:this.f|256;this.a-=4},function(){this.a-=5},function(){this.h=this.s;this.a-=5},function(){this.h=this.i;this.a-=5},function(){this.h=
this.u;this.a-=5},function(){this.h=this.j;this.a-=5},function(){this.h=this.l;this.a-=5},function(){this.h=this.B(I(this));this.a-=7},function(){this.h=this.b;this.a-=5},function(){this.s=this.h;this.a-=5},function(){this.a-=5},function(){this.s=this.i;this.a-=5},function(){this.s=this.u;this.a-=5},function(){this.s=this.j;this.a-=5},function(){this.s=this.l;this.a-=5},function(){this.s=this.B(I(this));this.a-=7},function(){this.s=this.b;this.a-=5},function(){this.i=this.h;this.a-=5},function(){this.i= this.u;this.a-=5},function(){this.h=this.j;this.a-=5},function(){this.h=this.l;this.a-=5},function(){this.h=this.F(H(this));this.a-=7},function(){this.h=this.b;this.a-=5},function(){this.s=this.h;this.a-=5},function(){this.a-=5},function(){this.s=this.i;this.a-=5},function(){this.s=this.u;this.a-=5},function(){this.s=this.j;this.a-=5},function(){this.s=this.l;this.a-=5},function(){this.s=this.F(H(this));this.a-=7},function(){this.s=this.b;this.a-=5},function(){this.i=this.h;this.a-=5},function(){this.i=
this.s;this.a-=5},function(){this.a-=5},function(){this.i=this.u;this.a-=5},function(){this.i=this.j;this.a-=5},function(){this.i=this.l;this.a-=5},function(){this.i=this.B(I(this));this.a-=7},function(){this.i=this.b;this.a-=5},function(){this.u=this.h;this.a-=5},function(){this.u=this.s;this.a-=5},function(){this.u=this.i;this.a-=5},function(){this.a-=5},function(){this.u=this.j;this.a-=5},function(){this.u=this.l;this.a-=5},function(){this.u=this.B(I(this));this.a-=7},function(){this.u=this.b; this.s;this.a-=5},function(){this.a-=5},function(){this.i=this.u;this.a-=5},function(){this.i=this.j;this.a-=5},function(){this.i=this.l;this.a-=5},function(){this.i=this.F(H(this));this.a-=7},function(){this.i=this.b;this.a-=5},function(){this.u=this.h;this.a-=5},function(){this.u=this.s;this.a-=5},function(){this.u=this.i;this.a-=5},function(){this.a-=5},function(){this.u=this.j;this.a-=5},function(){this.u=this.l;this.a-=5},function(){this.u=this.F(H(this));this.a-=7},function(){this.u=this.b;
this.a-=5},function(){this.j=this.h;this.a-=5},function(){this.j=this.s;this.a-=5},function(){this.j=this.i;this.a-=5},function(){this.j=this.u;this.a-=5},function(){this.a-=5},function(){this.j=this.l;this.a-=5},function(){this.j=this.B(I(this));this.a-=7},function(){this.j=this.b;this.a-=5},function(){this.l=this.h;this.a-=5},function(){this.l=this.s;this.a-=5},function(){this.l=this.i;this.a-=5},function(){this.l=this.u;this.a-=5},function(){this.l=this.j;this.a-=5},function(){this.a-=5},function(){this.l= this.a-=5},function(){this.j=this.h;this.a-=5},function(){this.j=this.s;this.a-=5},function(){this.j=this.i;this.a-=5},function(){this.j=this.u;this.a-=5},function(){this.a-=5},function(){this.j=this.l;this.a-=5},function(){this.j=this.F(H(this));this.a-=7},function(){this.j=this.b;this.a-=5},function(){this.l=this.h;this.a-=5},function(){this.l=this.s;this.a-=5},function(){this.l=this.i;this.a-=5},function(){this.l=this.u;this.a-=5},function(){this.l=this.j;this.a-=5},function(){this.a-=5},function(){this.l=
this.B(I(this));this.a-=7},function(){this.l=this.b;this.a-=5},function(){S(this,I(this),this.h);this.a-=7},function(){S(this,I(this),this.s);this.a-=7},function(){S(this,I(this),this.i);this.a-=7},function(){S(this,I(this),this.u);this.a-=7},function(){S(this,I(this),this.j);this.a-=7},function(){S(this,I(this),this.l);this.a-=7},function(){var a=this.m-1;if(this.ga.length)for(var b=0;b<this.ga.length;b++)if(this.ga[b](a))return;this.F|=16;this.a-=7;this.L&512||mb(this)},function(){S(this,I(this), this.F(H(this));this.a-=7},function(){this.l=this.b;this.a-=5},function(){R(this,H(this),this.h);this.a-=7},function(){R(this,H(this),this.s);this.a-=7},function(){R(this,H(this),this.i);this.a-=7},function(){R(this,H(this),this.u);this.a-=7},function(){R(this,H(this),this.j);this.a-=7},function(){R(this,H(this),this.l);this.a-=7},function(){var a=this.m-1;if(this.ga.length)for(var b=0;b<this.ga.length;b++)if(this.ga[b](a))return;this.G|=16;this.a-=7;this.J&512||tb(this)},function(){R(this,H(this),
this.b);this.a-=7},function(){this.b=this.h;this.a-=5},function(){this.b=this.s;this.a-=5},function(){this.b=this.i;this.a-=5},function(){this.b=this.u;this.a-=5},function(){this.b=this.j;this.a-=5},function(){this.b=this.l;this.a-=5},function(){this.b=this.B(I(this));this.a-=7},function(){this.a-=5},function(){this.b=L(this,this.h);this.a-=4},function(){this.b=L(this,this.s);this.a-=4},function(){this.b=L(this,this.i);this.a-=4},function(){this.b=L(this,this.u);this.a-=4},function(){this.b=L(this, this.b);this.a-=7},function(){this.b=this.h;this.a-=5},function(){this.b=this.s;this.a-=5},function(){this.b=this.i;this.a-=5},function(){this.b=this.u;this.a-=5},function(){this.b=this.j;this.a-=5},function(){this.b=this.l;this.a-=5},function(){this.b=this.F(H(this));this.a-=7},function(){this.a-=5},function(){this.b=K(this,this.h);this.a-=4},function(){this.b=K(this,this.s);this.a-=4},function(){this.b=K(this,this.i);this.a-=4},function(){this.b=K(this,this.u);this.a-=4},function(){this.b=K(this,
this.j);this.a-=4},function(){this.b=L(this,this.l);this.a-=4},function(){this.b=L(this,this.B(I(this)));this.a-=7},function(){this.b=L(this,this.b);this.a-=4},function(){this.b=M(this,this.h);this.a-=4},function(){this.b=M(this,this.s);this.a-=4},function(){this.b=M(this,this.i);this.a-=4},function(){this.b=M(this,this.u);this.a-=4},function(){this.b=M(this,this.j);this.a-=4},function(){this.b=M(this,this.l);this.a-=4},function(){this.b=M(this,this.B(I(this)));this.a-=7},function(){this.b=M(this, this.j);this.a-=4},function(){this.b=K(this,this.l);this.a-=4},function(){this.b=K(this,this.F(H(this)));this.a-=7},function(){this.b=K(this,this.b);this.a-=4},function(){this.b=L(this,this.h);this.a-=4},function(){this.b=L(this,this.s);this.a-=4},function(){this.b=L(this,this.i);this.a-=4},function(){this.b=L(this,this.u);this.a-=4},function(){this.b=L(this,this.j);this.a-=4},function(){this.b=L(this,this.l);this.a-=4},function(){this.b=L(this,this.F(H(this)));this.a-=7},function(){this.b=L(this,
this.b);this.a-=4},function(){this.b=P(this,this.h);this.a-=4},function(){this.b=P(this,this.s);this.a-=4},function(){this.b=P(this,this.i);this.a-=4},function(){this.b=P(this,this.u);this.a-=4},function(){this.b=P(this,this.j);this.a-=4},function(){this.b=P(this,this.l);this.a-=4},function(){this.b=P(this,this.B(I(this)));this.a-=7},function(){this.b=P(this,this.b);this.a-=4},function(){this.b=Q(this,this.h);this.a-=4},function(){this.b=Q(this,this.s);this.a-=4},function(){this.b=Q(this,this.i); this.b);this.a-=4},function(){this.b=O(this,this.h);this.a-=4},function(){this.b=O(this,this.s);this.a-=4},function(){this.b=O(this,this.i);this.a-=4},function(){this.b=O(this,this.u);this.a-=4},function(){this.b=O(this,this.j);this.a-=4},function(){this.b=O(this,this.l);this.a-=4},function(){this.b=O(this,this.F(H(this)));this.a-=7},function(){this.b=O(this,this.b);this.a-=4},function(){this.b=P(this,this.h);this.a-=4},function(){this.b=P(this,this.s);this.a-=4},function(){this.b=P(this,this.i);
this.a-=4},function(){this.b=Q(this,this.u);this.a-=4},function(){this.b=Q(this,this.j);this.a-=4},function(){this.b=Q(this,this.l);this.a-=4},function(){this.b=Q(this,this.B(I(this)));this.a-=7},function(){this.b=Q(this,this.b);this.a-=4},function(){this.b=N(this,this.h);this.a-=4},function(){this.b=N(this,this.s);this.a-=4},function(){this.b=N(this,this.i);this.a-=4},function(){this.b=N(this,this.u);this.a-=4},function(){this.b=N(this,this.j);this.a-=4},function(){this.b=N(this,this.l);this.a-= this.a-=4},function(){this.b=P(this,this.u);this.a-=4},function(){this.b=P(this,this.j);this.a-=4},function(){this.b=P(this,this.l);this.a-=4},function(){this.b=P(this,this.F(H(this)));this.a-=7},function(){this.b=P(this,this.b);this.a-=4},function(){this.b=M(this,this.h);this.a-=4},function(){this.b=M(this,this.s);this.a-=4},function(){this.b=M(this,this.i);this.a-=4},function(){this.b=M(this,this.u);this.a-=4},function(){this.b=M(this,this.j);this.a-=4},function(){this.b=M(this,this.l);this.a-=
4},function(){this.b=N(this,this.B(I(this)));this.a-=7},function(){this.b=N(this,this.b);this.a-=4},function(){this.b=R(this,this.h);this.a-=4},function(){this.b=R(this,this.s);this.a-=4},function(){this.b=R(this,this.i);this.a-=4},function(){this.b=R(this,this.u);this.a-=4},function(){this.b=R(this,this.j);this.a-=4},function(){this.b=R(this,this.l);this.a-=4},function(){this.b=R(this,this.B(I(this)));this.a-=7},function(){this.b=R(this,this.b);this.a-=4},function(){this.b=O(this,this.h);this.a-= 4},function(){this.b=M(this,this.F(H(this)));this.a-=7},function(){this.b=M(this,this.b);this.a-=4},function(){this.b=Q(this,this.h);this.a-=4},function(){this.b=Q(this,this.s);this.a-=4},function(){this.b=Q(this,this.i);this.a-=4},function(){this.b=Q(this,this.u);this.a-=4},function(){this.b=Q(this,this.j);this.a-=4},function(){this.b=Q(this,this.l);this.a-=4},function(){this.b=Q(this,this.F(H(this)));this.a-=7},function(){this.b=Q(this,this.b);this.a-=4},function(){this.b=N(this,this.h);this.a-=
4},function(){this.b=O(this,this.s);this.a-=4},function(){this.b=O(this,this.i);this.a-=4},function(){this.b=O(this,this.u);this.a-=4},function(){this.b=O(this,this.j);this.a-=4},function(){this.b=O(this,this.l);this.a-=4},function(){this.b=O(this,this.B(I(this)));this.a-=7},function(){this.b=O(this,this.b);this.a-=4},function(){P(this,this.h);this.a-=4},function(){P(this,this.s);this.a-=4},function(){P(this,this.i);this.a-=4},function(){P(this,this.u);this.a-=4},function(){P(this,this.j);this.a-= 4},function(){this.b=N(this,this.s);this.a-=4},function(){this.b=N(this,this.i);this.a-=4},function(){this.b=N(this,this.u);this.a-=4},function(){this.b=N(this,this.j);this.a-=4},function(){this.b=N(this,this.l);this.a-=4},function(){this.b=N(this,this.F(H(this)));this.a-=7},function(){this.b=N(this,this.b);this.a-=4},function(){O(this,this.h);this.a-=4},function(){O(this,this.s);this.a-=4},function(){O(this,this.i);this.a-=4},function(){O(this,this.u);this.a-=4},function(){O(this,this.j);this.a-=
4},function(){P(this,this.l);this.a-=4},function(){P(this,this.B(I(this)));this.a-=7},function(){P(this,this.b);this.a-=4},function(){this.f&255&&(D(this,V(this)),this.a-=6);this.a-=5},function(){Ab(this,V(this));this.a-=10},function(){var a=U(this);this.f&255&&D(this,a);this.a-=10},Ib,function(){var a=U(this);this.f&255&&(W(this,this.m),D(this,a),this.a-=6);this.a-=11},function(){W(this,zb(this));this.a-=11},function(){this.b=L(this,T(this));this.a-=7},function(){W(this,this.m);D(this,0);this.a-= 4},function(){O(this,this.l);this.a-=4},function(){O(this,this.F(H(this)));this.a-=7},function(){O(this,this.b);this.a-=4},function(){this.f&255&&(D(this,U(this)),this.a-=6);this.a-=5},function(){Ib(this,U(this));this.a-=10},function(){var a=T(this);this.f&255&&D(this,a);this.a-=10},Qb,function(){var a=T(this);this.f&255&&(V(this,this.m),D(this,a),this.a-=6);this.a-=11},function(){V(this,Hb(this));this.a-=11},function(){this.b=K(this,S(this));this.a-=7},function(){V(this,this.m);D(this,0);this.a-=
11},function(){this.f&255||(D(this,V(this)),this.a-=6);this.a-=5},Jb,function(){var a=U(this);this.f&255||D(this,a);this.a-=10},Ib,function(){var a=U(this);this.f&255||(W(this,this.m),D(this,a),this.a-=6);this.a-=11},Kb,function(){this.b=M(this,T(this));this.a-=7},function(){W(this,this.m);D(this,8);this.a-=11},function(){K(this)||(D(this,V(this)),this.a-=6);this.a-=5},function(){Bb(this,V(this));this.a-=10},function(){var a=U(this);K(this)||D(this,a);this.a-=10},function(){for(var a=T(this),b=this.A, 11},function(){this.f&255||(D(this,U(this)),this.a-=6);this.a-=5},Rb,function(){var a=T(this);this.f&255||D(this,a);this.a-=10},Qb,function(){var a=T(this);this.f&255||(V(this,this.m),D(this,a),this.a-=6);this.a-=11},Sb,function(){this.b=L(this,S(this));this.a-=7},function(){V(this,this.m);D(this,8);this.a-=11},function(){J(this)||(D(this,U(this)),this.a-=6);this.a-=5},function(){Jb(this,U(this));this.a-=10},function(){var a=T(this);J(this)||D(this,a);this.a-=10},function(){for(var a=S(this),b=this.w,
c=this.b,d=this.m+-2&65535,e=1,f=0;0<e;){var h=b.j[a],g=b.A[a]||1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h&&h[0])h[0](a,k,d);f+=g<<3;a+=g;e-=g}this.a-=10},function(){var a=U(this);K(this)||(W(this,this.m),D(this,a),this.a-=6);this.a-=11},function(){W(this,H(this));this.a-=11},function(){this.b=P(this,T(this));this.a-=7},function(){W(this,this.m);D(this,16);this.a-=11},function(){K(this)&&(D(this,V(this)),this.a-=6);this.a-=5},Jb,function(){var a=U(this);K(this)&&D(this,a);this.a-=10},function(){for(var a= c=this.b,d=this.m+-2&65535,e=1,f=0;0<e;){var h=b.l[a],g=b.B[a]||1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h&&h[0])h[0](a,k,d);f+=g<<3;a+=g;e-=g}this.a-=10},function(){var a=T(this);J(this)||(V(this,this.m),D(this,a),this.a-=6);this.a-=11},function(){V(this,G(this));this.a-=11},function(){this.b=O(this,S(this));this.a-=7},function(){V(this,this.m);D(this,16);this.a-=11},function(){J(this)&&(D(this,U(this)),this.a-=6);this.a-=5},Rb,function(){var a=T(this);J(this)&&D(this,a);this.a-=10},function(){for(var a=
T(this),b=this.A,c=this.m+-2&65535,d=1,e=0,f=0;0<d;){var h=b.i[a],g=b.v[a]||1,k=1==g?255:2==g?65535:-1,l=k;void 0!==h&&h[0]&&(l=h[0](a,c),void 0===l?l=k:l&=k);e|=l<<f;f+=g<<3;a+=g;d-=g}this.b=e&255;this.a-=10},function(){var a=U(this);K(this)&&(W(this,this.m),D(this,a),this.a-=6);this.a-=11},Kb,function(){this.b=Q(this,T(this));this.a-=7},function(){W(this,this.m);D(this,24);this.a-=11},function(){Cb(this)||(D(this,V(this)),this.a-=6);this.a-=5},function(){J(this,V(this));this.a-=10},function(){var a= S(this),b=this.w,c=this.m+-2&65535,d=1,e=0,f=0;0<d;){var h=b.j[a],g=b.o[a]||1,k=1==g?255:2==g?65535:-1,l=k;void 0!==h&&h[0]&&(l=h[0](a,c),void 0===l?l=k:l&=k);e|=l<<f;f+=g<<3;a+=g;d-=g}this.b=e&255;this.a-=10},function(){var a=T(this);J(this)&&(V(this,this.m),D(this,a),this.a-=6);this.a-=11},Sb,function(){this.b=P(this,S(this));this.a-=7},function(){V(this,this.m);D(this,24);this.a-=11},function(){Kb(this)||(D(this,U(this)),this.a-=6);this.a-=5},function(){I(this,U(this));this.a-=10},function(){var a=
U(this);Cb(this)||D(this,a);this.a-=10},function(){var a=V(this);W(this,I(this));J(this,a);this.a-=18},function(){var a=U(this);Cb(this)||(W(this,this.m),D(this,a),this.a-=6);this.a-=11},function(){W(this,I(this));this.a-=11},function(){this.b=N(this,T(this));this.a-=7},function(){W(this,this.m);D(this,32);this.a-=11},function(){Cb(this)&&(D(this,V(this)),this.a-=6);this.a-=5},function(){D(this,I(this));this.a-=5},function(){var a=U(this);Cb(this)&&D(this,a);this.a-=10},function(){var a=I(this);J(this, T(this);Kb(this)||D(this,a);this.a-=10},function(){var a=U(this);V(this,H(this));I(this,a);this.a-=18},function(){var a=T(this);Kb(this)||(V(this,this.m),D(this,a),this.a-=6);this.a-=11},function(){V(this,H(this));this.a-=11},function(){this.b=M(this,S(this));this.a-=7},function(){V(this,this.m);D(this,32);this.a-=11},function(){Kb(this)&&(D(this,U(this)),this.a-=6);this.a-=5},function(){D(this,H(this));this.a-=5},function(){var a=T(this);Kb(this)&&D(this,a);this.a-=10},function(){var a=H(this);I(this,
H(this));Bb(this,a);this.a-=5},function(){var a=U(this);Cb(this)&&(W(this,this.m),D(this,a),this.a-=6);this.a-=11},Kb,function(){this.b=R(this,T(this));this.a-=7},function(){W(this,this.m);D(this,40);this.a-=11},function(){this.v&128||(D(this,V(this)),this.a-=6);this.a-=5},function(){var a=V(this);wb(this,a);this.b=a>>8;this.a-=10},function(){var a=U(this);this.v&128||D(this,a);this.a-=10},function(){this.L&=-513;this.a-=4},function(){var a=U(this);this.v&128||(W(this,this.m),D(this,a),this.a-=6); G(this));Jb(this,a);this.a-=5},function(){var a=T(this);Kb(this)&&(V(this,this.m),D(this,a),this.a-=6);this.a-=11},Sb,function(){this.b=Q(this,S(this));this.a-=7},function(){V(this,this.m);D(this,40);this.a-=11},function(){this.o&128||(D(this,U(this)),this.a-=6);this.a-=5},function(){var a=U(this);Eb(this,a);this.b=a>>8;this.a-=10},function(){var a=T(this);this.o&128||D(this,a);this.a-=10},function(){this.J&=-513;this.a-=4},function(){var a=T(this);this.o&128||(V(this,this.m),D(this,a),this.a-=6);
this.a-=11},function(){W(this,yb(this)&255|this.b<<8);this.a-=11},function(){this.b=O(this,T(this));this.a-=7},function(){W(this,this.m);D(this,48);this.a-=11},function(){this.v&128&&(D(this,V(this)),this.a-=6);this.a-=5},function(){this.C=I(this)&65535;this.a-=5},function(){var a=U(this);this.v&128&&D(this,a);this.a-=10},function(){this.L|=512;this.a-=4},function(){var a=U(this);this.v&128&&(W(this,this.m),D(this,a),this.a-=6);this.a-=11},Kb,function(){P(this,T(this));this.a-=7},function(){W(this, this.a-=11},function(){V(this,Gb(this)&255|this.b<<8);this.a-=11},function(){this.b=N(this,S(this));this.a-=7},function(){V(this,this.m);D(this,48);this.a-=11},function(){this.o&128&&(D(this,U(this)),this.a-=6);this.a-=5},function(){this.B=H(this)&65535;this.a-=5},function(){var a=T(this);this.o&128&&D(this,a);this.a-=10},function(){this.J|=512;this.a-=4},function(){var a=T(this);this.o&128&&(V(this,this.m),D(this,a),this.a-=6);this.a-=11},Sb,function(){O(this,S(this));this.a-=7},function(){V(this,
this.m);D(this,56);this.a-=11}];function Y(a){v.call(this,"ChipSet",a,Y);var b=a.model;b&&!Lb[b]&&q("Unrecognized ChipSet model: "+b);this.aa=Lb[b]||Mb;a.sound&&(this.m=null,window&&(this.m=window.AudioContext||window.webkitAudioContext),this.m&&new this.m);B(this)}x(Y);var Mb=1978.1,Lb={SI1978:Mb};m=Y.prototype;m.P=function(){return!1}; this.m);D(this,56);this.a-=11}];function X(a){t.call(this,"ChipSet",a,X);var b=a.model;b&&!Tb[b]&&q("Unrecognized ChipSet model: "+b);this.aa=Tb[b]||Ub;a.sound&&(this.m=null,window&&(this.m=window.AudioContext||window.webkitAudioContext),this.m&&new this.m);B(this)}v(X);var Ub=1978.1,Tb={SI1978:Ub};m=X.prototype;m.P=function(){return!1};
m.ca=function(a,b,c,d){this.A=b;this.a=c;this.I=d;this.o=a;if(this.aa==Mb){var e;a=Nb;void 0===e&&(e=0);for(var f in a){c=b;d=+f+e;var h=a[f].bind(this);if(void 0!==h)for(var g=+f+e;g<=d;g++)void 0!==c.i[g]?q("Input port 0x"+n(g,4)+" already registered"):c.i[g]=[h,!1]}var k;e=Ob;void 0===k&&(k=0);for(var l in e)if(f=b,a=+l+k,c=e[l].bind(this),void 0!==c)for(d=+l+k;d<=a;d++)void 0!==f.j[d]?q("Output port 0x"+n(d,4)+" already registered"):f.j[d]=[c,!1]}}; m.ca=function(a,b,c,d){this.w=b;this.a=c;this.I=d;this.v=a;if(this.aa==Ub){var e;a=Vb;void 0===e&&(e=0);for(var f in a){c=b;d=+f+e;var h=a[f].bind(this);if(void 0!==h)for(var g=+f+e;g<=d;g++)void 0!==c.j[g]?q("Input port 0x"+n(g,4)+" already registered"):c.j[g]=[h,!1]}var k;e=Wb;void 0===k&&(k=0);for(var l in e)if(f=b,a=+l+k,c=e[l].bind(this),void 0!==c)for(d=+l+k;d<=a;d++)void 0!==f.l[d]?q("Output port 0x"+n(d,4)+" already registered"):f.l[d]=[c,!1]}};
m.W=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.V=function(a){return a?this.save():!0};m.reset=function(){this.f=this.h=this.c=this.b=this.l=this.j=this.i=0};m.save=function(){var a=new F(this);this.aa==Mb&&G(a,0,[this.i,this.j,this.l,this.b,this.c,this.f,this.h]);return a.data()};m.restore=function(a){a=a[0];this.aa==Mb&&(this.i=a[0],this.j=a[1],this.l=a[2],this.b=a[3],this.c=a[4],this.f=a[5],this.h=a[6]);return!0};m.start=function(){};m.stop=function(){}; m.X=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.W=function(a){return a?this.save():!0};m.reset=function(){this.f=this.h=this.c=this.b=this.l=this.j=this.i=0};m.save=function(){var a=new E(this);this.aa==Ub&&F(a,0,[this.i,this.j,this.l,this.b,this.c,this.f,this.h]);return a.data()};m.restore=function(a){a=a[0];this.aa==Ub&&(this.i=a[0],this.j=a[1],this.l=a[2],this.b=a[3],this.c=a[4],this.f=a[5],this.h=a[6]);return!0};m.start=function(){};m.stop=function(){};
m.kb=function(){return this.i};m.lb=function(){return this.j};m.mb=function(){return this.l};m.jb=function(){return this.b>>8-this.c&255};m.ob=function(a,b){this.c=b};m.qb=function(a,b){this.f=b};m.pb=function(a,b){this.b=b<<8|this.b>>8};m.rb=function(a,b){this.h=b};m.sb=function(){};var Nb={0:Y.prototype.kb,1:Y.prototype.lb,2:Y.prototype.mb,3:Y.prototype.jb},Ob={2:Y.prototype.ob,3:Y.prototype.qb,4:Y.prototype.pb,5:Y.prototype.rb,6:Y.prototype.sb}; m.mb=function(){return this.i};m.nb=function(){return this.j};m.ob=function(){return this.l};m.lb=function(){return this.b>>8-this.c&255};m.qb=function(a,b){this.c=b};m.sb=function(a,b){this.f=b};m.rb=function(a,b){this.b=b<<8|this.b>>8};m.tb=function(a,b){this.h=b};m.ub=function(){};var Vb={0:X.prototype.mb,1:X.prototype.nb,2:X.prototype.ob,3:X.prototype.lb},Wb={2:X.prototype.qb,3:X.prototype.sb,4:X.prototype.rb,5:X.prototype.tb,6:X.prototype.ub};
t(function(){for(var a=A(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Y(d);Ea(d,c)}});function Pb(a){v.call(this,"ROM",a,Pb);this.b=null;this.j=a.addr;this.c=a.size;this.l=a.writable;this.f=a.alias;this.h=a.file;this.m=ba(this.h);if(this.h){a=this.h;var b=ca(this.m);"json"!=b&&"hex"!=b&&(a=ia()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;p(a,null,!0,function(a,b,f){Qb(c,a,b,f)})}}x(Pb);var Rb=[0,5]; xa(function(){for(var a=z(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new X(d);Ma(d,c)}});function Xb(a){t.call(this,"ROM",a,Xb);this.b=null;this.j=a.addr;this.c=a.size;this.l=a.writable;this.f=a.alias;this.h=a.file;this.m=ba(this.h);if(this.h){a=this.h;var b=ca(this.m);"json"!=b&&"hex"!=b&&(a=ja()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;p(a,null,!0,function(a,b,f){Yb(c,a,b,f)})}}v(Xb);var Zb=[0,5];
Pb.prototype.ca=function(a,b,c,d){this.A=b;this.a=c;this.I=d;Sb(this)};Pb.prototype.W=function(){this.i&&(this.I&&this.I.a(this.id,this.j,this.c,this.i),delete this.i);return!0};Pb.prototype.V=function(){return!0}; Xb.prototype.ca=function(a,b,c,d){this.w=b;this.a=c;this.I=d;$b(this)};Xb.prototype.X=function(){this.i&&(this.I&&this.I.a(this.id,this.j,this.c,this.i),delete this.i);return!0};Xb.prototype.W=function(){return!0};
function Qb(a,b,c,d){if(d)a.K("Unable to load system ROM (error "+d+": "+b+")");else{Ca(a.Ta,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.b=f;else if(h)for(a.b=Array(4*h.length),d=c=0;c<h.length;c++)a.b[d++]=h[c]&255,a.b[d++]=h[c]>>8&255,a.b[d++]=h[c]>>16&255,a.b[d++]=h[c]>>24&255;else a.b=e;a.i=e.symbols;if(!a.b.length){q("Empty ROM: "+b);return}if(1==a.b.length){q(a.b[0]);return}}catch(g){a.K("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm, function Yb(a,b,c,d){if(d)a.L("Unable to load system ROM (error "+d+": "+b+")");else{Ka(a.Ua,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.b=f;else if(h)for(a.b=Array(4*h.length),d=c=0;c<h.length;c++)a.b[d++]=h[c]&255,a.b[d++]=h[c]>>8&255,a.b[d++]=h[c]>>16&255,a.b[d++]=h[c]>>24&255;else a.b=e;a.i=e.symbols;if(!a.b.length){q("Empty ROM: "+b);return}if(1==a.b.length){q(a.b[0]);return}}catch(g){a.L("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=aa(b[e]);Sb(a)}} " ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=aa(b[e]);$b(a)}}
function Sb(a){if(!Ga(a))if(!a.h)B(a);else if(a.b&&a.A){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size (0x"+n(a.b.length)+") does not match specified size ("+("0x"+n(a.c))+")";a.g.ba=!0;a.K(b)}else if(Tb(a,a.j)){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.A,h=d.c,g=[],k=d.j>>>f.G;0<h&&k<f.b.length;)g.push(f.b[k++]),h-=f.H;f=d.A;d=d.c;h=0;for(e>>>=f.G;0<d&&e<f.b.length;){k=g[h++];if(!k)break;f.b[e++]=k;d-=f.H}}delete a.b}B(a)}} function $b(a){if(!Oa(a))if(!a.h)B(a);else if(a.b&&a.w){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size (0x"+n(a.b.length)+") does not match specified size ("+("0x"+n(a.c))+")";a.g.ba=!0;a.L(b)}else if(ac(a,a.j)){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.w,h=d.c,g=[],k=d.j>>>f.C;0<h&&k<f.b.length;)g.push(f.b[k++]),h-=f.H;f=d.w;d=d.c;h=0;for(e>>>=f.C;0<d&&e<f.b.length;){k=g[h++];if(!k)break;f.b[e++]=k;d-=f.H}}delete a.b}B(a)}}
function Tb(a,b){if(Oa(a.A,b,a.c,a.l?1:Xa)){var c;for(c=0;c<a.b.length;c++)Qa(a.A,b+c,a.b[c]);if(a.l&&256==b){for(c=0;c<Rb.length;c++)Qa(a.A,Rb[c],118);vb(a.a,function(a){return function(b){if(0<=Rb.indexOf(b)){var c=!1,h=a.a,g=a.I;if(5==b)switch(c=!0,h.s){case 2:Ub(a,String.fromCharCode(h.u));break;case 9:for(var k=H(h),l="",E=255;E--;){var u=a.a.B(k++);if(36==u)break;l+=String.fromCharCode(u)}Ub(a,l);break;default:c=!1}c?Jb.call(h):g&&(a.O("\nCP/M vector 0x"+n(b,4)),D(h,b),mb(g));b=!0}else b=!1; function ac(a,b){if(Wa(a.w,b,a.c,a.l?1:db)){var c;for(c=0;c<a.b.length;c++)Ya(a.w,b+c,a.b[c]);if(a.l&&256==b){for(c=0;c<Zb.length;c++)Ya(a.w,Zb[c],118);Db(a.a,function(a){return function(b){if(0<=Zb.indexOf(b)){var c=!1,h=a.a,g=a.I;if(5==b)switch(c=!0,h.s){case 2:bc(a,String.fromCharCode(h.u));break;case 9:for(var k=G(h),l="",x=255;x--;){var r=a.a.F(k++);if(36==r)break;l+=String.fromCharCode(r)}bc(a,l);break;default:c=!1}c?Rb.call(h):g&&(a.O("\nCP/M vector 0x"+n(b,4)),D(h,b),tb(g));b=!0}else b=!1;
return b}}(a));xb(a.a,b)}return!0}return!1}function Ub(a,b){b=b.replace(/\r/g,"");a.Y&&(a.Y.value+=b,a.Y.scrollTop=a.Y.scrollHeight)}t(function(){for(var a=A(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Pb(d);Ea(d,c)}});function Vb(a){v.call(this,"RAM",a,Vb);this.f=a.addr;this.c=a.size;this.b=!1}x(Vb);m=Vb.prototype;m.ca=function(a,b,c,d){this.A=b;this.a=c;this.I=d;B(this)};m.W=function(a,b){b||this.reset();return!0};m.V=function(a){return a?this.save():!0}; return b}}(a));Fb(a.a,b)}return!0}return!1}function bc(a,b){b=b.replace(/\r/g,"");a.Z&&(a.Z.value+=b,a.Z.scrollTop=a.Z.scrollHeight)}xa(function(){for(var a=z(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Xb(d);Ma(d,c)}});function cc(a){t.call(this,"RAM",a,cc);this.f=a.addr;this.c=a.size;this.b=!1}v(cc);m=cc.prototype;m.ca=function(a,b,c,d){this.w=b;this.a=c;this.I=d;B(this)};m.X=function(a,b){b||this.reset();return!0};m.W=function(a){return a?this.save():!0};
m.reset=function(){!this.b&&this.c&&Oa(this.A,this.f,this.c,1)&&(this.b=!0,this.status(Math.floor(this.c/1024)+"Kb allocated"));this.b||q("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};t(function(){for(var a=A(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Vb(d);Ea(d,c)}});function Wb(a){v.call(this,"Keyboard",a,Wb);B(this)}x(Wb);t(function(){for(var a=A(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Wb(d);Ea(d,c)}}); m.reset=function(){!this.b&&this.c&&Wa(this.w,this.f,this.c,1)&&(this.b=!0,this.status(Math.floor(this.c/1024)+"Kb allocated"));this.b||q("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};xa(function(){for(var a=z(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new cc(d);Ma(d,c)}});function dc(a){t.call(this,"Keyboard",a,dc);B(this)}v(dc);
function Xb(a){v.call(this,"Video",a,Xb);this.gb=a.interruptRate;this.X=a.refreshRate||60;B(this)}x(Xb);Xb.prototype.ca=function(a,b,c,d){this.o=a;this.A=b;this.a=c;this.I=d}; xa(function(){for(var a=z(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new dc(d);Ma(d,c)}});
t(function(){for(var a=A(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=z(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","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, function ec(a,b,c){t.call(this,"Video",a,ec);this.J=a.screenWidth;this.M=a.screenHeight;this.j=a.bufferAddr;this.b=a.bufferCols;this.c=a.bufferRows;this.B=a.bufferBits||1;this.jb=a.interruptRate;this.Y=a.refreshRate||60;this.m=c;this.G=[[0,0,0,255],[255,255,255,255]];this.o=this.m.createImageData(this.b,this.c);this.h=document.createElement("canvas");this.h.width=this.b;this.h.height=this.c;this.H=this.h.getContext("2d")}v(ec);
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||wa.aspect);f&&.3<=f&&3.33>=f&&(ra("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");oa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);e.getContext("2d");d=new Xb(d);Ea(d,c)}}); ec.prototype.ca=function(a,b,c,d){this.v=a;this.w=b;this.a=c;this.I=d;this.i=(this.b*this.B>>3)*this.c;Wa(this.w,this.j,this.i,3)&&(this.C=this.i>>1,this.D=16/this.B|0,this.l=!1,void 0===this.f||this.f.length!=this.C)&&(this.f=Array(this.C));B(this)};
function F(a,b,c){this.id=a.id;this.key=Yb(a,b,c);this.I=a.I;Zb(this,a.bb)}function Yb(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} xa(function(){for(var a=z(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=y(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","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,
F.prototype={constructor:F,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){Zb(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}}}; 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&&(wa("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");qa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);e=e.getContext("2d");d=new ec(d,0,e);Ma(d,c)}});
function Zb(a,b){a[a.id]={};b&&G(a,"parms",b);a.a=!1}function $b(a){var b=!0;if(la()){var c=JSON.stringify(a[a.id]);na(a.key,c)||(q("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function ac(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){q(c.message||c),b=!1}return b}function bc(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:la()&&(b=ma(a.key))?(a[a.id]=b,a.a=!0):!1}function cc(a,b){return a[a.id][b]||null}function G(a,b,c){try{a[a.id][b]=c}catch(d){}} function E(a,b,c){this.id=a.id;this.key=fc(a,b,c);this.I=a.I;gc(this,a.eb)}function fc(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}
function dc(a,b,c){v.call(this,"Computer",a,dc);this.g.J=!1;ec(this,b);this.D=hb(this,"autoPower",a);this.f=0;this.M=a.busWidth||a.buswidth;this.b=fc;this.o=null;this.j=this.L=!1;this.N=hb(this,"url")||"";(Math.random()+.1).toString(36);this.c=gc(this);if(this.a=Da("CPU",this.id)){this.I=Da("Debugger",this.id);this.C=[];for(b=null;b=Ka(this,"Video",b);)this.C.push(b);this.A=new Ma({id:this.Ta+".bus",busWidth:this.M},this.a,this.I);var d,e=y(this.id);if((this.h=Da("Panel",this.id))&&this.h.Y)for(b= E.prototype={constructor:E,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){gc(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}}};
0;b<e.length;b++)d=e[b],d.K=this.h.K,d.O=this.h.O,d.Y=this.h.Y;for(b=0;b<e.length;b++)d=e[b],d.ca&&d.ca(this,this.A,this.a,this.I);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.m=d:this.b=parseInt(d,10));var f;if(a=hb(this,"state")||(f=!0,a.state))b=this.F=a,f||(this.j=!0,this.b=fc),this.b&&(this.v=new F(this,Z),bc(this.v)?b=null:delete this.v);!b&&this.b&&(b=hc(this))&&(this.j=!0);if(b){var h=this;p(b,null,!0,function(a,b,c){c?(h.m=null,h.j=!1,h.K("Unable to load machine state from server (error "+ function gc(a,b){a[a.id]={};b&&F(a,"parms",b);a.a=!1}function hc(a){var b=!0;if(na()){var c=JSON.stringify(a[a.id]);pa(a.key,c)||(q("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function ic(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){q(c.message||c),b=!1}return b}function jc(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:na()&&(b=oa(a.key))?(a[a.id]=b,a.a=!0):!1}function kc(a,b){return a[a.id][b]||null}function F(a,b,c){try{a[a.id][b]=c}catch(d){}}
c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(h.o=b,h.L=!0);B(h)})}else B(this);this.w.power||(this.D=!0);!c&&this.D&&ic(this,this.ya)}else q("Unable to find CPU component")}x(dc);var Z="1.22.0",fc=0;function ec(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){q(d.message+" ("+c+")")}}a.l=b} function lc(a,b,c){t.call(this,"Computer",a,lc);this.g.K=!1;mc(this,b);this.C=ob(this,"autoPower",a);this.f=0;this.M=a.busWidth||a.buswidth;this.b=nc;this.v=null;this.j=this.J=!1;this.N=ob(this,"url")||"";(Math.random()+.1).toString(36);this.c=oc(this);if(this.a=La("CPU",this.id)){this.I=La("Debugger",this.id);this.B=[];for(b=null;b=Sa(this,"Video",b);)this.B.push(b);this.w=new Ua({id:this.Ua+".bus",busWidth:this.M},this.a,this.I);var d,e=w(this.id);if((this.h=La("Panel",this.id))&&this.h.Z)for(b=
function hb(a,b,c){var d=b.toLowerCase(),d=wa[b]||wa[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}function ic(a,b,c){for(var d=y(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Ga(f)){Ga(f,function(){ic(a,b,c)});return}}b.call(a,c)} 0;b<e.length;b++)d=e[b],d.L=this.h.L,d.O=this.h.O,d.Z=this.h.Z;for(b=0;b<e.length;b++)d=e[b],d.ca&&d.ca(this,this.w,this.a,this.I);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.m=d:this.b=parseInt(d,10));var f;if(a=ob(this,"state")||(f=!0,a.state))b=this.D=a,f||(this.j=!0,this.b=nc),this.b&&(this.o=new E(this,Y),jc(this.o)?b=null:delete this.o);!b&&this.b&&(b=pc(this))&&(this.j=!0);if(b){var h=this;p(b,null,!0,function(a,b,c){c?(h.m=null,h.j=!1,h.L("Unable to load machine state from server (error "+
function jc(a,b){var c=new F(a,Z,"validate");if(bc(c)&&ac(c)){var d=cc(c,"timestamp"),e=b?cc(b,"timestamp"):"unknown";d!=e&&(a.K("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=dc.prototype; c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(h.v=b,h.J=!0);B(h)})}else B(this);this.A.power||(this.C=!0);!c&&this.C&&qc(this,this.xa)}else q("Unable to find CPU component")}v(lc);var Y="1.22.0",nc=0;function mc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){q(d.message+" ("+c+")")}}a.l=b}
m.ya=function(a){void 0===a&&(a=this.b||(this.o?1:fc));if(!this.f){this.f++;var b=!1,c=!1;this.H=!1;var d=this.v||new F(this,Z);if(-1==a)b=!0;else if(a>fc){if(bc(d,this.o)){this.i=new F(this,Z,"failsafe");bc(this.i)&&(kc(this,d),a=2,Zb(this.i));G(this.i,"timestamp",ha());$b(this.i);var e=this.b&&!this.j;if(1==a||ja("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=ac(d)){var f=cc(d,"code"),h=cc(d,"data");f&&("ok"==f?bc(d,h):("error"==f&&"no machine state"!= function ob(a,b,c){var d=b.toLowerCase(),d=Ca[b]||Ca[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}function qc(a,b,c){for(var d=w(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Oa(f)){Oa(f,function(){qc(a,b,c)});return}}b.call(a,c)}
h?(this.K("Error: "+h),"unable to verify user"==h&&(na("user",""),this.c=null)):this.O(f+": "+h),Zb(d),bc(d)?(c=ac(d),e=!0):c=!1))}e&&jc(this,c?d:null)}else 2==a&&d.clear()}else jc(this);delete this.o;delete this.v}e=y(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.a&&(c=lc(this,h,d,b,c));b=[d,a,c];-1!=a?ic(this,this.Ua,b):this.Ua(b)}}; function rc(a,b){var c=new E(a,Y,"validate");if(jc(c)&&ic(c)){var d=kc(c,"timestamp"),e=b?kc(b,"timestamp"):"unknown";d!=e&&(a.L("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=lc.prototype;
function lc(a,b,c,d,e){if(!b.g.J){b.g.J=!0;if(b.W){var f=null;e&&((f=cc(c,b.id))||(f=cc(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.W(f,d)&&f&&(q("Unable to restore state for "+b.type),a.F&&!a.L?(c.clear(),a.b=fc,window&&window.location.reload()):a.H=!0,b.W(null),e=!1)}if(!d&&b.Ra)for(a=b.Ra.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e} m.xa=function(a){void 0===a&&(a=this.b||(this.v?1:nc));if(!this.f){this.f++;var b=!1,c=!1;this.H=!1;var d=this.o||new E(this,Y);if(-1==a)b=!0;else if(a>nc){if(jc(d,this.v)){this.i=new E(this,Y,"failsafe");jc(this.i)&&(sc(this,d),a=2,gc(this.i));F(this.i,"timestamp",ia());hc(this.i);var e=this.b&&!this.j;if(1==a||ka("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=ic(d)){var f=kc(d,"code"),h=kc(d,"data");f&&("ok"==f?jc(d,h):("error"==f&&"no machine state"!=
m.Ua=function(a){var b=a[0],c=0>a[1];a=a[2];this.g.J=!0;var d=this.w.power;d&&(d.textContent="Shutdown");this.G||(this.O("PC8080 v"+Z+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.G=!0);this.a&&(lc(this,this.a,b,c,a),lb(this.a));this.H&&(kc(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0}; h?(this.L("Error: "+h),"unable to verify user"==h&&(pa("user",""),this.c=null)):this.O(f+": "+h),gc(d),jc(d)?(c=ic(d),e=!0):c=!1))}e&&rc(this,c?d:null)}else 2==a&&d.clear()}else rc(this);delete this.v;delete this.o}e=w(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.a&&(c=tc(this,h,d,b,c));b=[d,a,c];-1!=a?qc(this,this.Va,b):this.Va(b)}};
function kc(a,b){if(ja("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.N,d=a.c||"",e=b.toString(),f={app:"PC8080"};f.ver=Z;f.url=c;f.user=d;f.type="bug";f.data=e;p("http://www.pcjs.org/api/v1/report",f,!0)}} function tc(a,b,c,d,e){if(!b.g.K){b.g.K=!0;if(b.X){var f=null;e&&((f=kc(c,b.id))||(f=kc(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.X(f,d)&&f&&(q("Unable to restore state for "+b.type),a.D&&!a.J?(c.clear(),a.b=nc,window&&window.location.reload()):a.H=!0,b.X(null),e=!1)}if(!d&&b.Sa)for(a=b.Sa.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
function mc(a,b,c){var d,e="none";if(a.f)return null;a.f--;var f=new F(a,Z),h=new F(a,Z,"validate"),g=ha();G(h,"timestamp",g);G(f,"timestamp",g);G(f,"version","1.22.0");G(f,"url",window?window.location.href:null);G(f,"browser",window?window.navigator.userAgent:"");a.a&&a.a.V&&(c&&mb(a.a),d=a.a.V(b,c),"object"===typeof d&&G(f,a.a.id,d),c&&(a.a.g.J=!1,!1===d&&(e=null)));for(var g=y(a.id),k=0;k<g.length;k++){var l=g[k];l.g.J&&(l.V&&(d=l.V(b,c),"object"===typeof d&&G(f,l.id,d)),c&&(l.g.J=!1,!1===d&&(e= m.Va=function(a){var b=a[0],c=0>a[1];a=a[2];this.g.K=!0;var d=this.A.power;d&&(d.textContent="Shutdown");this.G||(this.O("PC8080 v"+Y+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.G=!0);this.a&&(tc(this,this.a,b,c,a),sb(this.a));this.H&&(sc(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0};
null)))}e&&(c?(g=d=!1,b?(a.c&&nc(a,a.c,f.toString()),$b(h)&&$b(f)||(e=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&f.clear(g)):e=f.toString());c&&(a.g.J=!1,b=a.w.power)&&(b.textContent="Power");a.f=0;return e}m.reset=function(){this.A&&this.A.reset&&this.A.reset();for(var a=y(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.A&&c.reset&&c.reset()}};m.start=function(a,b){for(var c=y(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}}; function sc(a,b){if(ka("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.N,d=a.c||"",e=b.toString(),f={app:"PC8080"};f.ver=Y;f.url=c;f.user=d;f.type="bug";f.data=e;p("http://www.pcjs.org/api/v1/report",f,!0)}}
m.stop=function(a,b){for(var c=y(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}}; function uc(a,b,c){var d,e="none";if(a.f)return null;a.f--;var f=new E(a,Y),h=new E(a,Y,"validate"),g=ia();F(h,"timestamp",g);F(f,"timestamp",g);F(f,"version","1.22.0");F(f,"url",window?window.location.href:null);F(f,"browser",window?window.navigator.userAgent:"");a.a&&a.a.W&&(c&&tb(a.a),d=a.a.W(b,c),"object"===typeof d&&F(f,a.a.id,d),c&&(a.a.g.K=!1,!1===d&&(e=null)));for(var g=w(a.id),k=0;k<g.length;k++){var l=g[k];l.g.K&&(l.W&&(d=l.W(b,c),"object"===typeof d&&F(f,l.id,d)),c&&(l.g.K=!1,!1===d&&(e=
m.P=function(a,b,c){var d=this;switch(b){case "power":return this.w[b]=c,c.onclick=function(){d.f||(d.g.J?mc(d,!1,!0):ic(d,d.ya))},!0;case "reset":return this.w[b]=c,c.onclick=function(){if(d.g.J&&!d.f)if(d.b&&!d.m){var a=ja("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");mc(d,a,!0);!a&&d.F?window&&window.location.reload():d.ya(fc)}else d.reset(),d.a&&lb(d.a)},!0;case "save":if(da(ia(),"pcjs.org")){c.parentNode.removeChild(c);break}this.w[b]= null)))}e&&(c?(g=d=!1,b?(a.c&&vc(a,a.c,f.toString()),hc(h)&&hc(f)||(e=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&f.clear(g)):e=f.toString());c&&(a.g.K=!1,b=a.A.power)&&(b.textContent="Power");a.f=0;return e}m.reset=function(){this.w&&this.w.reset&&this.w.reset();for(var a=w(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.w&&c.reset&&c.reset()}};m.start=function(a,b){for(var c=w(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
c;c.onclick=function(){var a=gc(d,!0);if(a){var b=!!(d.b&&!d.m||d.F),c=mc(d,b);b?nc(d,a,c):d.K("Resume disabled, machine state not saved")}};return!0}return!1}; m.stop=function(a,b){for(var c=w(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
function gc(a,b){var c=a.c;c||(c=ma("user"),void 0!==c?!c&&b&&(c=null,window&&(c=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&&((c=oc(a,c))||a.K("The user ID is invalid."))):b&&a.K("Browser local storage is not available"));return c} m.P=function(a,b,c){var d=this;switch(b){case "power":return this.A[b]=c,c.onclick=function(){d.f||(d.g.K?uc(d,!1,!0):qc(d,d.xa))},!0;case "reset":return this.A[b]=c,c.onclick=function(){if(d.g.K&&!d.f)if(d.b&&!d.m){var a=ka("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");uc(d,a,!0);!a&&d.D?window&&window.location.reload():d.xa(nc)}else d.reset(),d.a&&sb(d.a)},!0;case "save":if(da(ja(),"pcjs.org")){c.parentNode.removeChild(c);break}this.A[b]=
function oc(a,b){a.c=null;var c=p(ia()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(na("user",c.data),a.c=c.data)}catch(e){q(e.message+" ("+d+")")}return a.c}function hc(a){var b=null;a.c&&(b=ia()+"/api/v1/user?req=load&user="+a.c+"&state="+Yb(a,Z));return b} c;c.onclick=function(){var a=oc(d,!0);if(a){var b=!!(d.b&&!d.m||d.D),c=uc(d,b);b?vc(d,a,c):d.L("Resume disabled, machine state not saved")}};return!0}return!1};
function nc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Yb(a,Z);d.data=c;b=p(ia()+"/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.K("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.K(c),na("user",""),a.c=null)}} function oc(a,b){var c=a.c;c||(c=oa("user"),void 0!==c?!c&&b&&(c=null,window&&(c=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&&((c=wc(a,c))||a.L("The user ID is invalid."))):b&&a.L("Browser local storage is not available"));return c}
function Ka(a,b,c){a=y(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}m.fa=function(a){this.a&&this.a.fa(a);this.h&&this.h.fa(a)};function rb(a,b){for(var c=0;c<a.C.length;c++){var d=a.C[c];b&1?(d=d.a,d.F=d.F&-8|10):(d=d.a,d.F=d.F&-8|9)}}t(function(){for(var a=A(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=z(c),c=A(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=z(f),h=new dc(h,d,!0);Ea(h,f);h.D&&ic(h,h.ya)}}); function wc(a,b){a.c=null;var c=p(ja()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(pa("user",c.data),a.c=c.data)}catch(e){q(e.message+" ("+d+")")}return a.c}function pc(a){var b=null;a.c&&(b=ja()+"/api/v1/user?req=load&user="+a.c+"&state="+fc(a,Y));return b}
r.show.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=Da("Computer",c.id))&&c.G&&!c.g.J&&c.ya(-1)}});r.exit.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=Da("Computer",c.id))&&c.g.J&&mc(c,!(!c.b||c.m),!0)}});var pc=0;function qc(a,b,c,d,e,f){e("Loading "+a+"...");p(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):rc(g,a,b,c,d,e,f)})} function vc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=fc(a,Y);d.data=c;b=p(ja()+"/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.L("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.L(c),pa("user",""),a.c=null)}}
function rc(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){Ca(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2")); function Sa(a,b,c){a=w(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}m.fa=function(a){this.a&&this.a.fa(a);this.h&&this.h.fa(a)};
g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){g=null,a=u.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?sc(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)} function zb(a,b){for(var c=0;c<a.B.length;c++)a:{var d=a.B[c];if(0<=b){if(b&1){d=d.a;d.G=d.G&-8|10;break a}var e=d.a;e.G=e.G&-8|9;if(e=d.l){for(var e=d.w,f=d.i,h=!0,g=d.j>>>e.C;0<f&&g<e.b.length;)e.b[g].R&&(e.b[g].R=h=!1,e.b[g].Xa=!0),f-=e.H,g++;e=h}if(e)break a}for(var e=d.j,f=e+d.i,h=0,g=d.G,k=0,l=0,x=d.b,r=0,Z=d.c,wb=0;e<f;){var A;A=d.w;var ha=e,Fa=ha&A.c,ra=(ha&A.h)>>>A.C;A=Fa!=A.c?A.b[ra].fb(Fa,ha):A.b[ra++].Ma(Fa,ha)|A.b[ra&A.v].Ma(0,ha+1)<<8;if(d.l&&A===d.f[h])k+=d.D;else{d.f[h]=A;A=A>>8|(A&
function sc(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");p(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,E=/( [a-z]+=)(['"])(.*?)\2/g;l=E.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/, 255)<<8;ha=65536;Fa=16;k<x&&(x=k);for(ra=0;ra<d.D;ra++){var la=(A&(ha>>=1))>>--Fa,Ga=d.o,sa=k++,la=g[la],sa=(sa+l*Ga.width)*la.length;Ga.data[sa]=la[0];Ga.data[sa+1]=la[1];Ga.data[sa+2]=la[2];Ga.data[sa+3]=la[3]}k>r&&(r=k);l<Z&&(Z=l);l>=wb&&(wb=l+1)}e+=2;h++;if(k>=d.b&&(k=0,l++,l>d.c))break}d.l=!0;x<d.b&&(d.H.putImageData(d.o,0,0,x,Z,r-x,wb-Z),d.m.drawImage(d.h,0,0,d.b,d.c,0,0,d.J,d.M))}}
"");a=a.replace(d[0],h);sc(a,b,c)}})}else c(a,null)} xa(function(){for(var a=z(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=y(c),c=z(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=y(f),h=new lc(h,d,!0);Ma(h,f);h.C&&qc(h,h.xa)}});ta.show.push(function(){for(var a=z(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=La("Computer",c.id))&&c.G&&!c.g.K&&c.xa(-1)}});
function tc(a,b,c,d){function e(a){if(void 0===g){var b=h&&A(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=fa(a))}function f(a){e("Error: "+a);k&&(--pc||ta(!0));k=!1}var h,g,k=!0;pc++;Ba[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var E=document.head||document.getElementsByTagName("head")[0],u=document.createElement("style");u.type="text/css";u.styleSheet?u.styleSheet.cssText=l:u.appendChild(document.createTextNode(l));E.appendChild(u)}c|| ta.exit.push(function(){for(var a=z(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=La("Computer",c.id))&&c.g.K&&uc(c,!(!c.b||c.m),!0)}});var xc=0;function yc(a,b,c,d,e,f){e("Loading "+a+"...");p(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):zc(g,a,b,c,d,e,f)})}
(c="/versions/pc8080/1.22.0/components.xsl");l=function(d,g){g?qc(c,null,null,!1,e,function(d,l){if(l)if(Ca(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var k=g.transformNode(l);k?(h.outerHTML=k,--pc||ta(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(k=new XSLTProcessor,k.importStylesheet(l),(k=k.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(k,h),--pc||ta(!0)):f("invalid machine element: "+ function zc(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){Ka(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?qc(b,a,d,!0,e,l):rc(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(Ra){f(Ra.message)}return k}window.embedPC8080=function(a,b,c,d){ta(!1);return tc(a,b,c,d)};window.enableEvents=ta;window.sendEvent=ua; g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){g=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Ac(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
function uc(a,b,c,d){if(!c&&b){d.push(b);a=Ba[d[0]];b=null;for(var e in a)if(da(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?p(b,null,!0,function(a,b){vc(b,d)}):vc(null,d)}else q("Error ("+c+") requesting "+a)} function Ac(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");p(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,x=/( [a-z]+=)(['"])(.*?)\2/g;l=x.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
function vc(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Ba[f],k={},l;for(l in g){var E=g[l],u=ca(l);if("xml"==u){for(u=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=u.exec(g[l]);){var Ra=d[2];Ra&&(g[Ra]||(E=E.replace(d[0],"")))}d=l=ba(l)}else"xsl"==u&&(e=l=ba(l));k[l]=E}a&&(k[l="css"]=a);b[2]&&(k[l="parms"]=b[2]);b[3]&&(k[l="state"]=b[3]);d&&e?(l=JSON.stringify(k),h+=".js",c=c[1]+"var resources="+l+";"+c[2]+c[3],c=c.replace(/\u00A9/g, "");a=a.replace(d[0],h);Ac(a,b,c)}})}else c(a,null)}
"&#xA9;"),l=h,g=null,k="data:application/javascript,",k=oa("Firefox")?k+encodeURIComponent(c):k+encodeURI(c),l&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=k,g.download=l,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+l+"."):(window.open(k),c="Check your browser for a new window/tab containing the requested data"+(l?" ("+l+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n', function Bc(a,b,c,d){function e(a){if(void 0===g){var b=h&&z(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=fa(a))}function f(a){e("Error: "+a);k&&(--xc||za(!0));k=!1}var h,g,k=!0;xc++;Ja[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var x=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css";r.styleSheet?r.styleSheet.cssText=l:r.appendChild(document.createTextNode(l));x.appendChild(r)}c||
(c="/versions/pc8080/1.22.0/components.xsl");l=function(d,g){g?yc(c,null,null,!1,e,function(d,l){if(l)if(Ka(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var k=g.transformNode(l);k?(h.outerHTML=k,--xc||za(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(k=new XSLTProcessor,k.importStylesheet(l),(k=k.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(k,h),--xc||za(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?yc(b,a,d,!0,e,l):zc(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(Z){f(Z.message)}return k}window.embedPC8080=function(a,b,c,d){za(!1);return Bc(a,b,c,d)};window.enableEvents=za;window.sendEvent=Aa;
function Cc(a,b,c,d){if(!c&&b){d.push(b);a=Ja[d[0]];b=null;for(var e in a)if(da(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?p(b,null,!0,function(a,b){Dc(b,d)}):Dc(null,d)}else q("Error ("+c+") requesting "+a)}
function Dc(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Ja[f],k={},l;for(l in g){var x=g[l],r=ca(l);if("xml"==r){for(r=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=r.exec(g[l]);){var Z=d[2];Z&&(g[Z]||(x=x.replace(d[0],"")))}d=l=ba(l)}else"xsl"==r&&(e=l=ba(l));k[l]=x}a&&(k[l="css"]=a);b[2]&&(k[l="parms"]=b[2]);b[3]&&(k[l="state"]=b[3]);d&&e?(l=JSON.stringify(k),h+=".js",c=c[1]+"var resources="+l+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),l=h,g=null,k="data:application/javascript,",k=qa("Firefox")?k+encodeURIComponent(c):k+encodeURI(c),l&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=k,g.download=l,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+l+"."):(window.open(k),c="Check your browser for a new window/tab containing the requested data"+(l?" ("+l+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n',
c+='<div id="'+f+'"></div>\n',c+="...\n",c+='<script type="text/javascript" src="'+h+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",q(c)):q("Missing XML/XSL resources")} c+='<div id="'+f+'"></div>\n',c+="...\n",c+='<script type="text/javascript" src="'+h+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",q(c)):q("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=Da("Computer",a),e=Da("Debugger",a);if(d){var f=mc(d,!0),h=d.l?JSON.stringify(d.l):null;b||(b="/versions/pcjs/1.22.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,bb:h}))return!0;p(b,null,!0,function(c,d,e){uc(c,d,e,[a,ba(b,!0),h,f])});return!0}q("Unable to identify machine '"+a+"'");return!1};})(); window.savePC=function(a,b,c){var d=La("Computer",a),e=La("Debugger",a);if(d){var f=uc(d,!0),h=d.l?JSON.stringify(d.l):null;b||(b="/versions/pcjs/1.22.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,eb:h}))return!0;p(b,null,!0,function(c,d,e){Cc(c,d,e,[a,ba(b,!0),h,f])});return!0}q("Unable to identify machine '"+a+"'");return!1};})();