The 8080 CPU now passes all the 8080 Exerciser tests
This commit is contained in:
parent
a64a6e7e05
commit
41f58a0035
7 changed files with 1231 additions and 1231 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -441,24 +441,18 @@ CPUDef.opMVIH = function()
|
|||
*/
|
||||
CPUDef.opDAA = function()
|
||||
{
|
||||
var acc = this.regA;
|
||||
var fCarry = !!this.getCF();
|
||||
var fAuxCarry = !!this.getAF();
|
||||
if ((acc & 0xf) > 9 || fAuxCarry) {
|
||||
acc += 0x6;
|
||||
fAuxCarry = true;
|
||||
} else {
|
||||
fAuxCarry = false;
|
||||
var src = 0;
|
||||
var CF = this.getCF();
|
||||
var AF = this.getAF();
|
||||
if (AF || (this.regA & 0x0F) > 9) {
|
||||
src |= 0x06;
|
||||
}
|
||||
if (acc >= 0xa0 || fCarry) {
|
||||
acc += 0x60;
|
||||
fCarry = true;
|
||||
} else {
|
||||
fCarry = false;
|
||||
if (CF || this.regA >= 0x9A) {
|
||||
src |= 0x60;
|
||||
CF = CPUDef.PS.CF;
|
||||
}
|
||||
this.resultZeroCarry = this.resultParitySign = this.regA = (acc & 0xff);
|
||||
this.updateCF(fCarry);
|
||||
this.updateAF(fAuxCarry);
|
||||
this.regA = this.addByte(src);
|
||||
this.updateCF(!!CF);
|
||||
this.nStepCycles -= 4;
|
||||
};
|
||||
|
||||
|
|
@ -2055,7 +2049,7 @@ CPUDef.opORAA = function()
|
|||
*/
|
||||
CPUDef.opCMPB = function()
|
||||
{
|
||||
this.cmpByte(this.regB);
|
||||
this.subByte(this.regB);
|
||||
this.nStepCycles -= 4;
|
||||
};
|
||||
|
||||
|
|
@ -2066,7 +2060,7 @@ CPUDef.opCMPB = function()
|
|||
*/
|
||||
CPUDef.opCMPC = function()
|
||||
{
|
||||
this.cmpByte(this.regC);
|
||||
this.subByte(this.regC);
|
||||
this.nStepCycles -= 4;
|
||||
};
|
||||
|
||||
|
|
@ -2077,7 +2071,7 @@ CPUDef.opCMPC = function()
|
|||
*/
|
||||
CPUDef.opCMPD = function()
|
||||
{
|
||||
this.cmpByte(this.regD);
|
||||
this.subByte(this.regD);
|
||||
this.nStepCycles -= 4;
|
||||
};
|
||||
|
||||
|
|
@ -2088,7 +2082,7 @@ CPUDef.opCMPD = function()
|
|||
*/
|
||||
CPUDef.opCMPE = function()
|
||||
{
|
||||
this.cmpByte(this.regE);
|
||||
this.subByte(this.regE);
|
||||
this.nStepCycles -= 4;
|
||||
};
|
||||
|
||||
|
|
@ -2099,7 +2093,7 @@ CPUDef.opCMPE = function()
|
|||
*/
|
||||
CPUDef.opCMPH = function()
|
||||
{
|
||||
this.cmpByte(this.regH);
|
||||
this.subByte(this.regH);
|
||||
this.nStepCycles -= 4;
|
||||
};
|
||||
|
||||
|
|
@ -2110,7 +2104,7 @@ CPUDef.opCMPH = function()
|
|||
*/
|
||||
CPUDef.opCMPL = function()
|
||||
{
|
||||
this.cmpByte(this.regL);
|
||||
this.subByte(this.regL);
|
||||
this.nStepCycles -= 4;
|
||||
};
|
||||
|
||||
|
|
@ -2121,7 +2115,7 @@ CPUDef.opCMPL = function()
|
|||
*/
|
||||
CPUDef.opCMPM = function()
|
||||
{
|
||||
this.cmpByte(this.getByte(this.getHL()));
|
||||
this.subByte(this.getByte(this.getHL()));
|
||||
this.nStepCycles -= 7;
|
||||
};
|
||||
|
||||
|
|
@ -2132,7 +2126,7 @@ CPUDef.opCMPM = function()
|
|||
*/
|
||||
CPUDef.opCMPA = function()
|
||||
{
|
||||
this.cmpByte(this.regA);
|
||||
this.subByte(this.regA);
|
||||
this.nStepCycles -= 4;
|
||||
};
|
||||
|
||||
|
|
@ -2859,7 +2853,7 @@ CPUDef.opCM = function()
|
|||
*/
|
||||
CPUDef.opCPI = function()
|
||||
{
|
||||
this.cmpByte(this.getPCByte());
|
||||
this.subByte(this.getPCByte());
|
||||
this.nStepCycles -= 7;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -749,34 +749,11 @@ CPUSim.prototype.andByte = function(src)
|
|||
return this.resultZeroCarry;
|
||||
};
|
||||
|
||||
/**
|
||||
* cmpByte(src)
|
||||
*
|
||||
* We perform this operation using 8-bit two's complement arithmetic, by negating src, adding,
|
||||
* and then inverting the resulting carry (resultZeroCarry ^ 0x100). This appears to mimic how
|
||||
* the 8080 manages the Auxiliary Carry flag (AF).
|
||||
*
|
||||
* @this {CPUSim}
|
||||
* @param {number} src
|
||||
*/
|
||||
CPUSim.prototype.cmpByte = function(src)
|
||||
{
|
||||
src = -src & 0xff;
|
||||
this.resultAuxOverflow = this.regA ^ src;
|
||||
/*
|
||||
* The final AND with 0xff isn't strictly necessary, since the result of the comparison is
|
||||
* not returned, but I like limiting the result variables to tidy 8-bit values (resultZeroCarry
|
||||
* being the 9-bit exception).
|
||||
*/
|
||||
this.resultParitySign = (this.resultZeroCarry = (this.regA + src) ^ 0x100) & 0xff;
|
||||
};
|
||||
|
||||
/**
|
||||
* decByte(b)
|
||||
*
|
||||
* We perform this operation using 8-bit two's complement arithmetic, by negating src, adding,
|
||||
* and then inverting the resulting carry (resultZeroCarry ^ 0x100). This appears to mimic how
|
||||
* the 8080 manages the Auxiliary Carry flag (AF).
|
||||
* We perform this operation using 8-bit two's complement arithmetic, by negating and then adding
|
||||
* the implied src of 1. This appears to mimic how the 8080 manages the Auxiliary Carry flag (AF).
|
||||
*
|
||||
* @this {CPUSim}
|
||||
* @param {number} b
|
||||
|
|
@ -820,9 +797,32 @@ CPUSim.prototype.orByte = function(src)
|
|||
/**
|
||||
* subByte(src)
|
||||
*
|
||||
* We perform this operation using 8-bit two's complement arithmetic, by negating src, adding,
|
||||
* and then inverting the resulting carry (resultZeroCarry ^ 0x100). This appears to mimic how
|
||||
* the 8080 manages the Auxiliary Carry flag (AF).
|
||||
* We perform this operation using 8-bit two's complement arithmetic, by inverting src, adding
|
||||
* src + 1, and then inverting the resulting carry (resultZeroCarry ^ 0x100). This appears to mimic
|
||||
* how the 8080 manages the Auxiliary Carry flag (AF).
|
||||
*
|
||||
* This function is also used as a cmpByte() function; compare instructions simply ignore the
|
||||
* return value.
|
||||
*
|
||||
* Example: A=66, SUI $10
|
||||
*
|
||||
* If we created the two's complement of 0x10 by negating it, there would just be one addition:
|
||||
*
|
||||
* 0110 0110 (0x66)
|
||||
* + 1111 0000 (0xF0) (ie, -0x10)
|
||||
* ---------
|
||||
* 1 0101 0110 (0x56)
|
||||
*
|
||||
* But in order to mimic the 8080's AF flag, we must perform the two's complement of src in two steps,
|
||||
* inverting it before the add, and then incrementing after the add; eg:
|
||||
*
|
||||
* 0110 0110 (0x66)
|
||||
* + 1110 1111 (0xEF) (ie, ~0x10)
|
||||
* ---------
|
||||
* 1 0101 0101 (0x55)
|
||||
* + 0000 0001 (0x01)
|
||||
* ---------
|
||||
* 1 0101 0110 (0x56)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
* @param {number} src
|
||||
|
|
@ -830,17 +830,20 @@ CPUSim.prototype.orByte = function(src)
|
|||
*/
|
||||
CPUSim.prototype.subByte = function(src)
|
||||
{
|
||||
src = -src & 0xff;
|
||||
src ^= 0xff;
|
||||
this.resultAuxOverflow = this.regA ^ src;
|
||||
return this.resultParitySign = (this.resultZeroCarry = (this.regA + src) ^ 0x100) & 0xff;
|
||||
return this.resultParitySign = (this.resultZeroCarry = (this.regA + src + 1) ^ 0x100) & 0xff;
|
||||
};
|
||||
|
||||
/**
|
||||
* subByteBorrow(src)
|
||||
*
|
||||
* We perform this operation using 8-bit two's complement arithmetic, by negating (src + carry),
|
||||
* adding, and then inverting the resulting carry (resultZeroCarry ^ 0x100). This appears to mimic
|
||||
* how the 8080 manages the Auxiliary Carry flag (AF).
|
||||
* We perform this operation using 8-bit two's complement arithmetic, using logic similar to subByte(),
|
||||
* but changing the final increment to a conditional increment, because if the Carry flag (CF) is set, then
|
||||
* we don't need to perform the increment at all.
|
||||
*
|
||||
* This mimics the behavior of subByte() when the Carry flag (CF) is clear, and hopefully also mimics how the
|
||||
* 8080 manages the Auxiliary Carry flag (AF) when the Carry flag (CF) is set.
|
||||
*
|
||||
* @this {CPUSim}
|
||||
* @param {number} src
|
||||
|
|
@ -848,9 +851,9 @@ CPUSim.prototype.subByte = function(src)
|
|||
*/
|
||||
CPUSim.prototype.subByteBorrow = function(src)
|
||||
{
|
||||
src = -(src + ((this.resultZeroCarry & 0x100)? 1 : 0)) & 0xff;
|
||||
src ^= 0xff
|
||||
this.resultAuxOverflow = this.regA ^ src;
|
||||
return this.resultParitySign = (this.resultZeroCarry = (this.regA + src) ^ 0x100) & 0xff;
|
||||
return this.resultParitySign = (this.resultZeroCarry = (this.regA + src + ((this.resultZeroCarry & 0x100)? 0 : 1)) ^ 0x100) & 0xff;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -2544,7 +2544,7 @@ X86CPU.prototype.getPF = function()
|
|||
* getAF()
|
||||
*
|
||||
* To determine if there's been a carry out of the low 4 bits of an arithmetic operation,
|
||||
* we look at all the possible inputs for bit 4, and calculate AF = PS^(D^S):
|
||||
* we look at all the possible inputs for bit 4, and calculate AF = A^(D^S).
|
||||
*
|
||||
* D S A D^S AF
|
||||
* - - - --- --
|
||||
|
|
|
|||
|
|
@ -5,187 +5,189 @@ function ia(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){retur
|
|||
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,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")}
|
||||
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 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 wa(){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 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 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:[]},Da=!1,Ga=!0;function Ha(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ia(a){Ca.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,Da&&Pa("init")):Ga=a}function Pa(a){Ca[a]&&Na(Ca[a])}Ha("onload",function(){Da=!0;Na(Ca.init)});Ha("onpageshow",function(){Na(Ca.show)});Ha(za("Opera")||za("iOS")?"onunload":"onbeforeunload",function(){Na(Ca.exit)});
|
||||
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 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 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,ha:!1,Pa:!1};this.ob=null;this.w.Pa=!1;this.T={};this.C=null;this.ga=d||0;w.push(this)}var Qa=void 0,Ra={};
|
||||
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}
|
||||
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 Ya(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 bb(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 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 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 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 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}
|
||||
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.Fa=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),
|
||||
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)},wa:function(){return this.w.ha=!0},va:function(a,b){b&&(this.w.ha=!1);return!0}};function fb(a,b,c,d,e,f){var h=!0;a.C&&(!0===h?h=0:null==h&&(h=a.ga),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.ga;var c=a.C.ga&b;return!!b&&c===b||!!(c&a.C.Wb)}return!1}
|
||||
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.qa=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),
|
||||
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.ha=!0},wa:function(a,b){b&&(this.w.ha=!1);return!0}};function fb(a,b,c,d,e,f){var h=!0;a.C&&(!0===h?h=0:null==h&&(h=a.ga),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.ga;var c=a.C.ga&b;return!!b&&c===b||!!(c&a.C.Wb)}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)}
|
||||
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,
|
||||
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.Aa=function(a,b,c,d){this.u=a;this.D=b;this.b=c;this.C=d;this.A=pb(a,"Keyboard")};m.wa=function(a,b){b||qb();return!0};m.va=function(){return!0};m.qa=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)}}Ia(qb);
|
||||
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.K=this.Y/this.ma|0;this.W=this.K-1;this.u=[];this.A=[];this.I=this.J=!1;this.ca=[];this.ea=[];a=new F;sb(a,this.C);this.D=Array(this.K);for(b=0;b<this.K;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=
|
||||
a.aa-1;a.K=d;B(this)}x(rb);rb.prototype.reset=function(){};rb.prototype.wa=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 F(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)}
|
||||
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 Eb(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]}
|
||||
function Fb(a,b){for(var c=1,d=0,e=0;0<c;){var f=a.u[b],h=a.ca[b]||1,g=1==h?255:2==h?65535:-1,k=g;void 0!==f?(f[0]&&(k=f[0](b,void 0),void 0===k?k=g:k&=g),a.C&&a.I!=f[1]&&Gb(a.C,b,k)):a.C&&(gb(a.C,a,b,null,void 0),a.I&&Gb(a.C,b,k));d|=k<<e;e+=h<<3;b+=h;c-=h}return d}function Hb(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 Ib(a,b,c){for(var d=1,e=0;0<d;){var f=a.A[b],h=a.ea[b]||1,g=1==h?255:2==h?65535:-1,g=(c>>>=e)&g;if(void 0!==f){if(f[0])f[0](b,g,void 0);a.C&&a.J!=f[1]&&Jb(a.C,b,g)}else a.C&&(gb(a.C,a,b,g,void 0),a.J&&Jb(a.C,b,g));e+=h<<3;b+=h;d-=h}}function ub(a,b,c){t("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Kb;if(mb){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 F(a,b,c,d){this.id=Nb+=2;this.b=null;this.B=a;this.kb=b;this.size=c||0;this.type=d||Ob;this.u=d==Pb;sb(this);this.za=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.K=new Uint16Array(this.H,0,c>>1),this.b=new Int32Array(this.H,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;
|
||||
F.prototype={constructor:F,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.za=!0}return!1},Ea:function(a,b){b?0===this.A++&&Vb(this,Wb,!1):0===this.T++&&Xb(this,Wb,!1)},U:function(){this.C&&hb(this.C,129)&&this.C.message("attempt to read invalid block %"+q(this.B),!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},sa: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},Ca:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.za=!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.za=!0},aa:function(a,b){if(this.C&&null!=this.B){var c=this.C;Yb(c,this.B+a,1,c.ca)&&c.da(!0)}return this.ib(a,b)},ka:function(a,b){if(this.C&&null!=this.B){var c=this.C;Yb(c,this.B+a,2,c.ca)&&c.da(!0)}return this.yb(a,b)},ya:function(a,b,c){if(this.C&&null!=this.B){var d=this.C;Yb(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,c){if(this.C&&null!=this.B){var d=this.C;Yb(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]},ca:function(a){return this.D[a]},ja:function(a){return this.I.getUint16(a,!0)},ra:function(a){return a&1?this.D[a]|this.D[a+1]<<8:this.K[a>>1]},ta:function(a,b){this.D[a]=b;this.za=!0},Ba:function(a,b){this.D[a]=b;this.za=!0},Da:function(a,b){this.I.setUint16(a,b,!0);this.za=!0},$a:function(a,b){a&1?(this.D[a]=b,this.D[a+1]=b>>8):this.K[a>>1]=b;this.za=!0}};
|
||||
function sb(a,b,c){a.C=b;a.T=a.A=0;c&&((a.T=c.T)&&Xb(a,Wb,!1),(a.A=c.A)&&Vb(a,Wb,!1))}function Zb(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 Vb(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 Xb(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 Qb(a,b){b||(b=$b);Xb(a,b,void 0);Vb(a,b,void 0)}
|
||||
var $b=[],Tb=[F.prototype.ea,F.prototype.sa,F.prototype.Ca,F.prototype.ab],Wb=[F.prototype.aa,F.prototype.ka,F.prototype.ya,F.prototype.Ma];if(mb)var Sb=[F.prototype.Y,F.prototype.ja,F.prototype.ta,F.prototype.Da],Rb=[F.prototype.ca,F.prototype.ra,F.prototype.Ba,F.prototype.$a];
|
||||
function ac(a,b){u.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.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(ac);var bc=["power","reset"];m=ac.prototype;
|
||||
m.Aa=function(a,b,c,d){this.u=a;this.D=b;this.C=d;for(b=0;b<bc.length;b++)(c=this.T[bc[b]])&&this.u.pa(null,bc[b],c);this.ya=(b=pb(a,"Video"))&&Math.max(b.ya,b.Zb)||60;this.W=pb(a,"ChipSet");a=lc(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.wa=function(a,b){if(!b){if(a&&this.restore){mc(this);if(!this.restore(a))return!1;nc(this)}else this.reset();if(this.C){var c=this.C;c.g("Type ? for help with PC8080 Debugger commands");c.qa();if(c.rb){var d=c.rb;c.rb=null;oc(c,d)}}else this.g("No debugger detected")}G(this);return!0};m.va=function(a){return a?this.save():!0};function pc(a){(a.w.Ib||!a.C&&void 0===a.T.run)&&a.La(!0)}m.Mb=function(){return 0};
|
||||
function nc(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 qc(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<=rc(a)&&(a.i.Ta=a.i.Va=-1,nc(a),a.da(),c=!0);c&&a.g(rc(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.ha)a=!0;else{var b=null,c,g=Ya(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.ha);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=
|
||||
!0;break;case "speed":this.T[b]=c;a=!0;break;case "setSpeed":this.T[b]=c,c.onclick=function(){sc(d,d.i.Ja<<1,!0)},c.textContent=this.i.Ha.toFixed(2)+"Mhz",a=!0}return a};function tc(a,b,c){a.J+=b;c&&(a.F=a.b=0)}
|
||||
function uc(a,b){var c=30;c<a.ya&&(c=a.ya);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.ya*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 rc(a){return a.J+a.I+a.F-a.b}function mc(a){a.i.Ga=0;a.J=a.I=a.F=a.b=0;nc(a);sc(a,1)}
|
||||
function sc(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()}tc(a,a.I);a.I=0;a.i.Sa=ja();a.i.Ia=0;uc(a);return d}
|
||||
m.La=function(a){if(ib(this,!0)){if(!this.w.ia){sc(this);this.u&&this.u.start(this.i.Sa,rc(this));this.w.ia=!0;this.w.ub=!0;this.W&&this.W.mc();var b=this.T.run;b&&(b.textContent="Halt");this.u&&(this.u.qa(!0),a&&this.u.jb(!0))}this.i.xb>=this.i.Xa&&uc(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-this.b;
|
||||
this.I+=d;this.i.gb+=d;tc(this,0,!0);qc(this,d);this.i.fb-=d;0>=this.i.fb&&(this.i.fb+=this.i.Pb,this.u&&vc(this.u,this.i.qb++),this.i.qb>this.ya&&(this.i.qb=0));this.i.eb-=d;0>=this.i.eb&&(this.i.eb+=this.i.Ob,this.u&&this.u.qa());this.i.Wa-=d;if(0>=this.i.Wa){this.i.Wa+=this.i.wb;break}}while(this.w.ia)}catch(e){this.da();G(this);this.u&&this.u.stop(ja(),rc(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.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,sc(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 G(this),this.u&&this.u.stop(ja(),rc(this))};m.Ya=function(){return 0};m.da=function(a){jb(this,!0);this.F-=this.b;this.b=0;tc(this,this.I);this.I=0;if(this.w.ia){this.w.ia=!1;this.W&&this.W.mc();var b=this.T.run;b&&(b.textContent="Run")}this.w.nb=a};
|
||||
function G(a,b){a.u&&(vc(a.u,-1),a.u.qa(b))}function wc(a){this.Ra=a.model||8080;ac.call(this,a,1E6);this.ca=xc;mc(this);this.w.nb=this.w.Xb=!1;this.ja=0;this.la=[];this.Z=this.ma=this.H=this.aa=this.Y=this.K=0;this.U=[];this.ea=0;yc(this)}x(wc,ac);function zc(a,b){a.U.push(b)}m=wc.prototype;m.reset=function(){this.w.ia&&this.da();yc(this);mc(this);this.w.Pa=!1;this.parent.reset.call(this)};function yc(a){a.j=0;a.L=0;a.P=0;a.M=0;a.R=0;a.N=0;a.S=0;a.ba=0;H(a,a.ea);Ac(a,0);a.A=0}
|
||||
function Bc(a,b){a.ea=b;H(a,b)}m.Mb=function(){var a=this.j+this.L+this.P+this.M+this.R+this.N+this.S|0;return a=a+this.ba+this.O+Cc(this)|0};
|
||||
m.save=function(){var a=new I(this);K(a,0,[this.j,this.L,this.P,this.M,this.R,this.N,this.S,this.ba,this.O,Cc(this)]);K(a,1,[this.A,this.J,this.i.Ja]);for(var b=this.D,c=0,d=[],e=0;e<b.K;e++){var f=b.D[e];if(f.za||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}}K(a,2,d);return a.data()};
|
||||
m.restore=function(a){var b=a[0];this.j=b[0];this.L=b[1];this.P=b[2];this.M=b[3];this.R=b[4];this.N=b[5];this.S=b[6];this.ba=b[7]&65535;H(this,b[8]);Ac(this,b[9]);b=a[1];this.A=b[0];this.J=b[1];sc(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.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 Dc(a){return a.L<<8|a.P}function Ec(a,b){a.L=b>>8&255;a.P=b&255}function Fc(a){return a.M<<8|a.R}function Gc(a,b){a.M=b>>8&255;a.R=b&255}function L(a){return a.N<<8|a.S}
|
||||
function M(a,b){a.N=b>>8&255;a.S=b&255}function H(a,b){a.O=b&65535}function Hc(a){return a.G&256?1:0}function Ic(a){return nb[a.X&255]?4:0}function Jc(a){return(a.X^a.fa)&16?16:0}function Kc(a){return a.G&255?0:64}function Lc(a){return a.X&128?128:0}function Cc(a){return a.oa&-214|Lc(a)|Kc(a)|Jc(a)|Ic(a)|Hc(a)}function Ac(a,b){a.G=a.X=a.fa=0;b&1&&(a.G|=256);b&4||(a.X|=1);b&16&&(a.fa|=16);b&64||(a.G|=255);b&128&&(a.X^=192);a.oa=a.oa&-513|b&512|2}
|
||||
function Mc(a,b){a.fa=a.j^b;return(a.G=a.X=a.j+b)&255}function Nc(a,b){a.fa=a.j^b;return(a.G=a.X=a.j+b+(a.G&256?1:0))&255}function Oc(a,b){return a.G=a.X=a.fa=a.j&b}function hd(a,b){a.fa=a.j^b;a.G=a.X=a.j-b}function id(a,b){a.fa=b;b=(a.X=b-1)&255;a.G=a.G&-256|b;return b}function jd(a,b){a.fa=b;b=(a.X=b+1)&255;a.G=a.G&-256|b;return b}function kd(a,b){return a.G=a.X=a.fa=a.j|b}function ld(a,b){a.fa=a.j^b;return(a.G=a.X=a.j-b)&255}function md(a,b){a.fa=a.j^b;return(a.G=a.X=a.j-b-(a.G&256?1:0))&255}
|
||||
function nd(a,b){return a.G=a.X=a.fa=a.j^b}m.V=function(a){return this.la[(a&this.K)>>>this.Z].Ka(a&this.H,a)};function od(a,b){var c=b&a.H,d=(b&a.K)>>>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.K)>>>a.Z].Za(b&a.H,c&255,b)}function pd(a,b,c){var d=b&a.H,e=(b&a.K)>>>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.O);H(a,a.O+1);return b}
|
||||
function P(a){var b=od(a,a.O);H(a,a.O+2);return b}function R(a){var b=od(a,a.ba);a.ba=a.ba+2&65535;return b}function S(a,b){a.ba=a.ba-2&65535;pd(a,a.ba,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))}
|
||||
m.qa=function(a){this.ja&&(a||!this.w.ia||this.w.Jb)&&(T(this,"A",this.j),T(this,"B",this.L),T(this,"C",this.P),T(this,"BC",Dc(this),4),T(this,"D",this.M),T(this,"E",this.R),T(this,"DE",Fc(this),4),T(this,"H",this.N),T(this,"L",this.S),T(this,"HL",L(this),4),T(this,"SP",this.ba,4),T(this,"PC",this.O,4),a=Cc(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)+
|
||||
"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.ca[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.O,c)){this.da();break}c=1}this.ca[O(this)].call(this)}while(0<this.b);return this.w.nb?this.F-this.b:void 0===this.w.nb?0:-1};
|
||||
Ia(function(){for(var a=A(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new wc(d);eb(d,c)}});function sd(){this.b-=4}function td(){H(this,P(this));this.b-=10}function ud(){H(this,R(this));this.b-=10}function vd(){var a=P(this);S(this,this.O);H(this,a);this.b-=17}
|
||||
var xc=[sd,function(){Ec(this,P(this));this.b-=10},function(){N(this,Dc(this),this.j);this.b-=7},function(){Ec(this,Dc(this)+1);this.b-=5},function(){this.L=jd(this,this.L);this.b-=5},function(){this.L=id(this,this.L);this.b-=5},function(){this.L=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;M(this,a=L(this)+Dc(this));this.G=this.G&255|a>>8&256;this.b-=10},function(){this.j=this.V(Dc(this));this.b-=7},function(){Ec(this,Dc(this)-
|
||||
1);this.b-=5},function(){this.P=jd(this,this.P);this.b-=5},function(){this.P=id(this,this.P);this.b-=5},function(){this.P=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(){Gc(this,P(this));this.b-=10},function(){N(this,Fc(this),this.j);this.b-=7},function(){Gc(this,Fc(this)+1);this.b-=5},function(){this.M=jd(this,this.M);this.b-=5},function(){this.M=id(this,this.M);this.b-=5},function(){this.M=O(this);this.b-=7},function(){var a=this.j<<
|
||||
1;this.j=a&255|this.G>>8;this.G=this.G&255|a&256;this.b-=4},sd,function(){var a;M(this,a=L(this)+Fc(this));this.G=this.G&255|a>>8&256;this.b-=10},function(){this.j=this.V(Fc(this));this.b-=7},function(){Gc(this,Fc(this)-1);this.b-=5},function(){this.R=jd(this,this.R);this.b-=5},function(){this.R=id(this,this.R);this.b-=5},function(){this.R=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(){M(this,P(this));this.b-=10},function(){pd(this,
|
||||
P(this),L(this));this.b-=16},function(){M(this,L(this)+1);this.b-=5},function(){this.N=jd(this,this.N);this.b-=5},function(){this.N=id(this,this.N);this.b-=5},function(){this.N=O(this);this.b-=7},function(){var a=this.j,b=!!Hc(this),c=!!Jc(this);9<(a&15)||c?(a+=6,c=!0):c=!1;160<=a||b?(a+=96,b=!0):b=!1;this.G=this.X=this.j=a&255;this.G=b?this.G|256:this.G&-257;this.fa=c?~this.X&16|this.fa&-17:this.X&16|this.fa&-17;this.b-=4},sd,function(){var a;M(this,a=L(this)+L(this));this.G=this.G&255|a>>8&256;
|
||||
this.b-=10},function(){M(this,od(this,P(this)));this.b-=16},function(){M(this,L(this)-1);this.b-=5},function(){this.S=jd(this,this.S);this.b-=5},function(){this.S=id(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.ba=P(this)&65535;this.b-=10},function(){N(this,P(this),this.j);this.b-=13},function(){this.ba=this.ba+1&65535;this.b-=5},function(){var a=L(this);N(this,a,jd(this,this.V(a)));this.b-=10},function(){var a=L(this);N(this,
|
||||
a,id(this,this.V(a)));this.b-=10},function(){N(this,L(this),O(this));this.b-=10},function(){this.G|=256;this.b-=4},sd,function(){var a;this.ba=(a=L(this)+this.ba)&65535;this.G=this.G&255|a>>8&256;this.b-=10},function(){this.j=this.V(P(this));this.b-=13},function(){this.ba=this.ba-1&65535;this.b-=5},function(){this.j=jd(this,this.j);this.b-=5},function(){this.j=id(this,this.j);this.b-=5},function(){this.j=O(this);this.b-=7},function(){this.G=Hc(this)?this.G&-257:this.G|256;this.b-=4},function(){this.b-=
|
||||
5},function(){this.L=this.P;this.b-=5},function(){this.L=this.M;this.b-=5},function(){this.L=this.R;this.b-=5},function(){this.L=this.N;this.b-=5},function(){this.L=this.S;this.b-=5},function(){this.L=this.V(L(this));this.b-=7},function(){this.L=this.j;this.b-=5},function(){this.P=this.L;this.b-=5},function(){this.b-=5},function(){this.P=this.M;this.b-=5},function(){this.P=this.R;this.b-=5},function(){this.P=this.N;this.b-=5},function(){this.P=this.S;this.b-=5},function(){this.P=this.V(L(this));this.b-=
|
||||
7},function(){this.P=this.j;this.b-=5},function(){this.M=this.L;this.b-=5},function(){this.M=this.P;this.b-=5},function(){this.b-=5},function(){this.M=this.R;this.b-=5},function(){this.M=this.N;this.b-=5},function(){this.M=this.S;this.b-=5},function(){this.M=this.V(L(this));this.b-=7},function(){this.M=this.j;this.b-=5},function(){this.R=this.L;this.b-=5},function(){this.R=this.P;this.b-=5},function(){this.R=this.M;this.b-=5},function(){this.b-=5},function(){this.R=this.N;this.b-=5},function(){this.R=
|
||||
this.S;this.b-=5},function(){this.R=this.V(L(this));this.b-=7},function(){this.R=this.j;this.b-=5},function(){this.N=this.L;this.b-=5},function(){this.N=this.P;this.b-=5},function(){this.N=this.M;this.b-=5},function(){this.N=this.R;this.b-=5},function(){this.b-=5},function(){this.N=this.S;this.b-=5},function(){this.N=this.V(L(this));this.b-=7},function(){this.N=this.j;this.b-=5},function(){this.S=this.L;this.b-=5},function(){this.S=this.P;this.b-=5},function(){this.S=this.M;this.b-=5},function(){this.S=
|
||||
this.R;this.b-=5},function(){this.S=this.N;this.b-=5},function(){this.b-=5},function(){this.S=this.V(L(this));this.b-=7},function(){this.S=this.j;this.b-=5},function(){N(this,L(this),this.L);this.b-=7},function(){N(this,L(this),this.P);this.b-=7},function(){N(this,L(this),this.M);this.b-=7},function(){N(this,L(this),this.R);this.b-=7},function(){N(this,L(this),this.N);this.b-=7},function(){N(this,L(this),this.S);this.b-=7},function(){var a=this.O-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)?(H(this,a),this.C.da()):this.oa&512||(this.C&&H(this,a),this.da())},function(){N(this,L(this),this.j);this.b-=7},function(){this.j=this.L;this.b-=5},function(){this.j=this.P;this.b-=5},function(){this.j=this.M;this.b-=5},function(){this.j=this.R;this.b-=5},function(){this.j=this.N;this.b-=5},function(){this.j=this.S;this.b-=5},function(){this.j=this.V(L(this));this.b-=7},function(){this.b-=5},function(){this.j=Mc(this,this.L);this.b-=4},function(){this.j=
|
||||
Mc(this,this.P);this.b-=4},function(){this.j=Mc(this,this.M);this.b-=4},function(){this.j=Mc(this,this.R);this.b-=4},function(){this.j=Mc(this,this.N);this.b-=4},function(){this.j=Mc(this,this.S);this.b-=4},function(){this.j=Mc(this,this.V(L(this)));this.b-=7},function(){this.j=Mc(this,this.j);this.b-=4},function(){this.j=Nc(this,this.L);this.b-=4},function(){this.j=Nc(this,this.P);this.b-=4},function(){this.j=Nc(this,this.M);this.b-=4},function(){this.j=Nc(this,this.R);this.b-=4},function(){this.j=
|
||||
Nc(this,this.N);this.b-=4},function(){this.j=Nc(this,this.S);this.b-=4},function(){this.j=Nc(this,this.V(L(this)));this.b-=7},function(){this.j=Nc(this,this.j);this.b-=4},function(){this.j=ld(this,this.L);this.b-=4},function(){this.j=ld(this,this.P);this.b-=4},function(){this.j=ld(this,this.M);this.b-=4},function(){this.j=ld(this,this.R);this.b-=4},function(){this.j=ld(this,this.N);this.b-=4},function(){this.j=ld(this,this.S);this.b-=4},function(){this.j=ld(this,this.V(L(this)));this.b-=7},function(){this.j=
|
||||
ld(this,this.j);this.b-=4},function(){this.j=md(this,this.L);this.b-=4},function(){this.j=md(this,this.P);this.b-=4},function(){this.j=md(this,this.M);this.b-=4},function(){this.j=md(this,this.R);this.b-=4},function(){this.j=md(this,this.N);this.b-=4},function(){this.j=md(this,this.S);this.b-=4},function(){this.j=md(this,this.V(L(this)));this.b-=7},function(){this.j=md(this,this.j);this.b-=4},function(){this.j=Oc(this,this.L);this.b-=4},function(){this.j=Oc(this,this.P);this.b-=4},function(){this.j=
|
||||
Oc(this,this.M);this.b-=4},function(){this.j=Oc(this,this.R);this.b-=4},function(){this.j=Oc(this,this.N);this.b-=4},function(){this.j=Oc(this,this.S);this.b-=4},function(){this.j=Oc(this,this.V(L(this)));this.b-=7},function(){this.j=Oc(this,this.j);this.b-=4},function(){this.j=nd(this,this.L);this.b-=4},function(){this.j=nd(this,this.P);this.b-=4},function(){this.j=nd(this,this.M);this.b-=4},function(){this.j=nd(this,this.R);this.b-=4},function(){this.j=nd(this,this.N);this.b-=4},function(){this.j=
|
||||
nd(this,this.S);this.b-=4},function(){this.j=nd(this,this.V(L(this)));this.b-=7},function(){this.j=nd(this,this.j);this.b-=4},function(){this.j=kd(this,this.L);this.b-=4},function(){this.j=kd(this,this.P);this.b-=4},function(){this.j=kd(this,this.M);this.b-=4},function(){this.j=kd(this,this.R);this.b-=4},function(){this.j=kd(this,this.N);this.b-=4},function(){this.j=kd(this,this.S);this.b-=4},function(){this.j=kd(this,this.V(L(this)));this.b-=7},function(){this.j=kd(this,this.j);this.b-=4},function(){hd(this,
|
||||
this.L);this.b-=4},function(){hd(this,this.P);this.b-=4},function(){hd(this,this.M);this.b-=4},function(){hd(this,this.R);this.b-=4},function(){hd(this,this.N);this.b-=4},function(){hd(this,this.S);this.b-=4},function(){hd(this,this.V(L(this)));this.b-=7},function(){hd(this,this.j);this.b-=4},function(){Kc(this)||(H(this,R(this)),this.b-=6);this.b-=5},function(){Ec(this,R(this));this.b-=10},function(){var a=P(this);Kc(this)||H(this,a);this.b-=10},td,function(){var a=P(this);Kc(this)||(S(this,this.O),
|
||||
H(this,a),this.b-=6);this.b-=11},function(){S(this,Dc(this));this.b-=11},function(){this.j=Mc(this,O(this));this.b-=7},function(){S(this,this.O);H(this,0);this.b-=11},function(){Kc(this)&&(H(this,R(this)),this.b-=6);this.b-=5},ud,function(){var a=P(this);Kc(this)&&H(this,a);this.b-=10},td,function(){var a=P(this);Kc(this)&&(S(this,this.O),H(this,a),this.b-=6);this.b-=11},vd,function(){this.j=Nc(this,O(this));this.b-=7},function(){S(this,this.O);H(this,8);this.b-=11},function(){Hc(this)||(H(this,R(this)),
|
||||
this.b-=6);this.b-=5},function(){Gc(this,R(this));this.b-=10},function(){var a=P(this);Hc(this)||H(this,a);this.b-=10},function(){var a=O(this);Ib(this.D,a,this.j);this.b-=10},function(){var a=P(this);Hc(this)||(S(this,this.O),H(this,a),this.b-=6);this.b-=11},function(){S(this,Fc(this));this.b-=11},function(){this.j=ld(this,O(this));this.b-=7},function(){S(this,this.O);H(this,16);this.b-=11},function(){Hc(this)&&(H(this,R(this)),this.b-=6);this.b-=5},ud,function(){var a=P(this);Hc(this)&&H(this,a);
|
||||
this.b-=10},function(){var a=O(this);this.j=Fb(this.D,a)&255;this.b-=10},function(){var a=P(this);Hc(this)&&(S(this,this.O),H(this,a),this.b-=6);this.b-=11},vd,function(){this.j=md(this,O(this));this.b-=7},function(){S(this,this.O);H(this,24);this.b-=11},function(){Ic(this)||(H(this,R(this)),this.b-=6);this.b-=5},function(){M(this,R(this));this.b-=10},function(){var a=P(this);Ic(this)||H(this,a);this.b-=10},function(){var a=R(this);S(this,L(this));M(this,a);this.b-=18},function(){var a=P(this);Ic(this)||
|
||||
(S(this,this.O),H(this,a),this.b-=6);this.b-=11},function(){S(this,L(this));this.b-=11},function(){this.j=Oc(this,O(this));this.b-=7},function(){S(this,this.O);H(this,32);this.b-=11},function(){Ic(this)&&(H(this,R(this)),this.b-=6);this.b-=5},function(){H(this,L(this));this.b-=5},function(){var a=P(this);Ic(this)&&H(this,a);this.b-=10},function(){var a=L(this);M(this,Fc(this));Gc(this,a);this.b-=5},function(){var a=P(this);Ic(this)&&(S(this,this.O),H(this,a),this.b-=6);this.b-=11},vd,function(){this.j=
|
||||
nd(this,O(this));this.b-=7},function(){S(this,this.O);H(this,40);this.b-=11},function(){Lc(this)||(H(this,R(this)),this.b-=6);this.b-=5},function(){var a=R(this);Ac(this,a);this.j=a>>8;this.b-=10},function(){var a=P(this);Lc(this)||H(this,a);this.b-=10},function(){this.oa&=-513;this.b-=4},function(){var a=P(this);Lc(this)||(S(this,this.O),H(this,a),this.b-=6);this.b-=11},function(){S(this,Cc(this)&255|this.j<<8);this.b-=11},function(){this.j=kd(this,O(this));this.b-=7},function(){S(this,this.O);H(this,
|
||||
48);this.b-=11},function(){Lc(this)&&(H(this,R(this)),this.b-=6);this.b-=5},function(){this.ba=L(this)&65535;this.b-=5},function(){var a=P(this);Lc(this)&&H(this,a);this.b-=10},function(){this.oa|=512;this.b-=4},function(){var a=P(this);Lc(this)&&(S(this,this.O),H(this,a),this.b-=6);this.b-=11},vd,function(){hd(this,O(this));this.b-=7},function(){S(this,this.O);H(this,56);this.b-=11}];
|
||||
function V(a){u.call(this,"ChipSet",a,V,32768);var b=a.model;b&&!wd[b]&&t("Unrecognized ChipSet model: "+b);this.Ra=wd[b];a.sound&&(this.W=null,window&&(this.W=window.AudioContext||window.webkitAudioContext),this.W&&new this.W);B(this)}x(V);var wd={SI1978:1978.1};m=V.prototype;m.pa=function(){return!1};
|
||||
m.Aa=function(a,b,c,d){this.D=b;this.b=c;this.C=d;this.u=a;if(1978.1==this.Ra){var e;a=xd;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=yd;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]}};
|
||||
m.wa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.va=function(a){return a?this.save():!0};m.reset=function(){this.H=this.I=this.A=this.F=this.U=this.K=this.J=0};m.save=function(){var a=new I(this);1978.1==this.Ra&&K(a,0,[this.J,this.K,this.U,this.F,this.A,this.H,this.I]);return a.data()};m.restore=function(a){a=a[0];1978.1==this.Ra&&(this.J=a[0],this.K=a[1],this.U=a[2],this.F=a[3],this.A=a[4],this.H=a[5],this.I=a[6]);return!0};
|
||||
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.ra=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 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.K=this.Y/this.ma|0;this.W=this.K-1;this.u=[];this.A=[];this.I=this.J=!1;this.ba=[];this.fa=[];a=new C;sb(a,this.C);this.D=Array(this.K);for(b=0;b<this.K;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=
|
||||
a.aa-1;a.K=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)}
|
||||
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 Fb(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]}
|
||||
function Gb(a,b){for(var c=1,d=0,e=0;0<c;){var f=a.u[b],h=a.ba[b]||1,g=1==h?255:2==h?65535:-1,k=g;void 0!==f?(f[0]&&(k=f[0](b,void 0),void 0===k?k=g:k&=g),a.C&&a.I!=f[1]&&Hb(a.C,b,k)):a.C&&(gb(a.C,a,b,null,void 0),a.I&&Hb(a.C,b,k));d|=k<<e;e+=h<<3;b+=h;c-=h}return d}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 Jb(a,b,c){for(var d=1,e=0;0<d;){var f=a.A[b],h=a.fa[b]||1,g=1==h?255:2==h?65535:-1,g=(c>>>=e)&g;if(void 0!==f){if(f[0])f[0](b,g,void 0);a.C&&a.J!=f[1]&&Kb(a.C,b,g)}else a.C&&(gb(a.C,a,b,g,void 0),a.J&&Kb(a.C,b,g));e+=h<<3;b+=h;d-=h}}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 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.K=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;
|
||||
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);
|
||||
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)},fa: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,
|
||||
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.ea(!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.ea(!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.ea(!0)}this.u?this.F(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.ea(!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)},sa:function(a){return a&1?this.D[a]|this.D[a+1]<<8:this.K[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.K[a>>1]=b;this.Aa=!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)}
|
||||
var ac=[],Ub=[C.prototype.fa,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.sa,C.prototype.Ca,C.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 nc=["power","reset"];m=bc.prototype;
|
||||
m.Ba=function(a,b,c,d){this.u=a;this.D=b;this.C=d;for(b=0;b<nc.length;b++)(c=this.T[nc[b]])&&this.u.pa(null,nc[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.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.ra();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};
|
||||
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.ea(),c=!0);c&&a.g(vc(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.ha)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.ha);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.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)}
|
||||
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 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}
|
||||
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.mc();var b=this.T.run;b&&(b.textContent="Halt");this.u&&(this.u.ra(!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-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.ra());this.i.Wa-=d;if(0>=this.i.Wa){this.i.Wa+=this.i.wb;break}}while(this.w.ia)}catch(e){this.ea();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.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.ea=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.mc();var b=this.T.run;b&&(b.textContent="Run")}this.w.nb=a};
|
||||
function sc(a,b){a.u&&(zc(a.u,-1),a.u.ra(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.K=0;this.U=[];this.fa=0;Cc(this)}x(Ac,bc);function Dc(a,b){a.U.push(b)}m=Ac.prototype;m.reset=function(){this.w.ia&&this.ea();Cc(this);pc(this);this.w.Pa=!1;this.parent.reset.call(this)};function Cc(a){a.j=0;a.L=0;a.M=0;a.N=0;a.O=0;a.P=0;a.S=0;a.ca=0;G(a,a.fa);Ec(a,0);a.A=0}
|
||||
function Fc(a,b){a.fa=b;G(a,b)}m.Mb=function(){var a=this.j+this.L+this.M+this.N+this.O+this.P+this.S|0;return a=a+this.ca+this.R+Gc(this)|0};
|
||||
m.save=function(){var a=new H(this);I(a,0,[this.j,this.L,this.M,this.N,this.O,this.P,this.S,this.ca,this.R,Gc(this)]);I(a,1,[this.A,this.J,this.i.Ja]);for(var b=this.D,c=0,d=[],e=0;e<b.K;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.restore=function(a){var b=a[0];this.j=b[0];this.L=b[1];this.M=b[2];this.N=b[3];this.O=b[4];this.P=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.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.L<<8|a.M}function Ic(a,b){a.L=b>>8&255;a.M=b&255}function Jc(a){return a.N<<8|a.O}function Kc(a,b){a.N=b>>8&255;a.O=b&255}function J(a){return a.P<<8|a.S}
|
||||
function L(a,b){a.P=b>>8&255;a.S=b&255}function G(a,b){a.R=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.da)&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.da=0;b&1&&(a.G|=256);b&4||(a.X|=1);b&16&&(a.da|=16);b&64||(a.G|=255);b&128&&(a.X^=192);a.oa=a.oa&-513|b&512|2}
|
||||
function Qc(a,b){a.da=a.j^b;return a.X=(a.G=a.j+b)&255}function Rc(a,b){a.da=a.j^b;return a.X=(a.G=a.j+b+(a.G&256?1:0))&255}function id(a,b){a.G=a.X=a.da=a.j&b;(a.j|b)&8&&(a.da^=16);return a.G}function jd(a,b){a.da=b^255;b=a.X=b+255&255;a.G=a.G&-256|b;return b}function kd(a,b){a.da=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.da=a.j|b}function M(a,b){b^=255;a.da=a.j^b;return a.X=(a.G=a.j+b+1^256)&255}
|
||||
function md(a,b){b^=255;a.da=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.da=a.j^b}m.V=function(a){return this.la[(a&this.K)>>>this.Z].Ka(a&this.H,a)};function od(a,b){var c=b&a.H,d=(b&a.K)>>>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.K)>>>a.Z].Za(b&a.H,c&255,b)}
|
||||
function pd(a,b,c){var d=b&a.H,e=(b&a.K)>>>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.R);G(a,a.R+1);return b}function P(a){var b=od(a,a.R);G(a,a.R+2);return b}function Q(a){var b=od(a,a.ca);a.ca=a.ca+2&65535;return b}function S(a,b){a.ca=a.ca-2&65535;pd(a,a.ca,b)}
|
||||
function T(a,b,c,d){d=d||2;a.T[b]&&(void 0===c&&(lb(a,"Value for "+b+" is invalid"),a.ea()),c=!a.w.ia||a.w.Jb?q(c,d):"--------".substr(0,d),a.T[b].textContent!=c&&(a.T[b].textContent=c))}
|
||||
m.ra=function(a){this.ja&&(a||!this.w.ia||this.w.Jb)&&(T(this,"A",this.j),T(this,"B",this.L),T(this,"C",this.M),T(this,"BC",Hc(this),4),T(this,"D",this.N),T(this,"E",this.O),T(this,"DE",Jc(this),4),T(this,"H",this.P),T(this,"L",this.S),T(this,"HL",J(this),4),T(this,"SP",this.ca,4),T(this,"PC",this.R,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)+
|
||||
"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.R,c)){this.ea();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};
|
||||
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);S(this,this.R);G(this,a);this.b-=17}
|
||||
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.L=kd(this,this.L);this.b-=5},function(){this.L=jd(this,this.L);this.b-=5},function(){this.L=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)-
|
||||
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<<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.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<<
|
||||
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.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<<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,
|
||||
P(this),J(this));this.b-=16},function(){L(this,J(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,b=!!Lc(this),c=!!Nc(this);9<(a&15)||c?(a+=6,c=!0):c=!1;160<=a||b?(a+=96,b=!0):b=!1;this.G=this.X=this.j=a&255;this.G=b?this.G|256:this.G&-257;this.da=c?~this.X&16|this.da&-17:this.X&16|this.da&-17;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.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},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.L=this.M;this.b-=5},function(){this.L=this.N;this.b-=5},function(){this.L=this.O;this.b-=5},function(){this.L=this.P;this.b-=5},function(){this.L=this.S;this.b-=5},function(){this.L=this.V(J(this));this.b-=7},function(){this.L=this.j;this.b-=5},function(){this.M=this.L;this.b-=5},function(){this.b-=5},function(){this.M=this.N;this.b-=5},function(){this.M=this.O;this.b-=5},function(){this.M=this.P;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.L;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.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.L;this.b-=5},function(){this.O=this.M;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.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.L;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.S;this.b-=5},function(){this.P=this.V(J(this));this.b-=7},function(){this.P=this.j;this.b-=5},function(){this.S=this.L;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.b-=5},function(){this.S=this.V(J(this));this.b-=7},function(){this.S=this.j;this.b-=5},function(){N(this,J(this),this.L);this.b-=7},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.S);this.b-=7},function(){var a=this.R-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.ea()):this.oa&512||(this.C&&G(this,a),this.ea())},function(){N(this,J(this),this.j);this.b-=7},function(){this.j=this.L;this.b-=5},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.S;this.b-=5},function(){this.j=this.V(J(this));this.b-=7},function(){this.b-=5},function(){this.j=Qc(this,this.L);this.b-=4},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-=4},function(){this.j=Qc(this,this.P);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.L);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.S);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.L);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.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.L);this.b-=4},function(){this.j=md(this,this.M);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.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=id(this,this.L);this.b-=4},function(){this.j=id(this,this.M);this.b-=4},function(){this.j=
|
||||
id(this,this.N);this.b-=4},function(){this.j=id(this,this.O);this.b-=4},function(){this.j=id(this,this.P);this.b-=4},function(){this.j=id(this,this.S);this.b-=4},function(){this.j=id(this,this.V(J(this)));this.b-=7},function(){this.j=id(this,this.j);this.b-=4},function(){this.j=nd(this,this.L);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.S);this.b-=4},function(){this.j=nd(this,this.V(J(this)));this.b-=7},function(){this.j=nd(this,this.j);this.b-=4},function(){this.j=ld(this,this.L);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.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.L);this.b-=4},function(){M(this,this.M);this.b-=4},function(){M(this,this.N);this.b-=4},function(){M(this,this.O);this.b-=4},function(){M(this,this.P);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)||(S(this,this.R),G(this,
|
||||
a),this.b-=6);this.b-=11},function(){S(this,Hc(this));this.b-=11},function(){this.j=Qc(this,O(this));this.b-=7},function(){S(this,this.R);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)&&(S(this,this.R),G(this,a),this.b-=6);this.b-=11},vd,function(){this.j=Rc(this,O(this));this.b-=7},function(){S(this,this.R);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);Lc(this)||G(this,a);this.b-=10},function(){var a=O(this);Jb(this.D,a,this.j);this.b-=10},function(){var a=P(this);Lc(this)||(S(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){S(this,Jc(this));this.b-=11},function(){this.j=M(this,O(this));this.b-=7},function(){S(this,this.R);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)&255;this.b-=10},function(){var a=P(this);Lc(this)&&(S(this,this.R),G(this,a),this.b-=6);this.b-=11},vd,function(){this.j=md(this,O(this));this.b-=7},function(){S(this,this.R);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);S(this,J(this));L(this,a);this.b-=18},function(){var a=P(this);Mc(this)||
|
||||
(S(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){S(this,J(this));this.b-=11},function(){this.j=id(this,O(this));this.b-=7},function(){S(this,this.R);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)&&(S(this,this.R),G(this,a),this.b-=6);this.b-=11},vd,function(){this.j=
|
||||
nd(this,O(this));this.b-=7},function(){S(this,this.R);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)||(S(this,this.R),G(this,a),this.b-=6);this.b-=11},function(){S(this,Gc(this)&255|this.j<<8);this.b-=11},function(){this.j=ld(this,O(this));this.b-=7},function(){S(this,this.R);G(this,
|
||||
48);this.b-=11},function(){Pc(this)&&(G(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)&&(S(this,this.R),G(this,a),this.b-=6);this.b-=11},vd,function(){M(this,O(this));this.b-=7},function(){S(this,this.R);G(this,56);this.b-=11}];
|
||||
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];a.sound&&(this.W=null,window&&(this.W=window.AudioContext||window.webkitAudioContext),this.W&&new this.W);B(this)}x(U);var wd={SI1978:1978.1};m=U.prototype;m.pa=function(){return!1};
|
||||
m.Ba=function(a,b,c,d){this.D=b;this.b=c;this.C=d;this.u=a;if(1978.1==this.Ra){var e;a=xd;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=yd;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]}};
|
||||
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.A=this.F=this.U=this.K=this.J=0};m.save=function(){var a=new H(this);1978.1==this.Ra&&I(a,0,[this.J,this.K,this.U,this.F,this.A,this.H,this.I]);return a.data()};m.restore=function(a){a=a[0];1978.1==this.Ra&&(this.J=a[0],this.K=a[1],this.U=a[2],this.F=a[3],this.A=a[4],this.H=a[5],this.I=a[6]);return!0};
|
||||
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.K;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.F<<this.A>>8&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.A=b};m.kc=function(a,b,c){fb(this,a,b,c,"SOUND1",null);this.H=b};m.jc=function(a,b,c){fb(this,a,b,c,"SHIFT.DATA",null);this.F=b};
|
||||
m.lc=function(a,b,c){fb(this,a,b,c,"SOUND2",null);this.I=b};var xd={0:V.prototype.bc,1:V.prototype.cc,2:V.prototype.dc,3:V.prototype.ac},yd={2:V.prototype.ic,3:V.prototype.kc,4:V.prototype.jc,5:V.prototype.lc};Ia(function(){for(var a=A(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new V(d);eb(d,c)}});
|
||||
function zd(a){u.call(this,"ROM",a,zd);this.u=null;this.I=a.addr;this.A=a.size;this.J=a.writable;this.F=a.alias;this.H=a.file;this.K=ba(this.H);if(this.H){a=this.H;var b=ca(this.K);"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){Ad(c,a,b,f)})}}x(zd);var Bd=[0,5];zd.prototype.Aa=function(a,b,c,d){this.D=b;this.b=c;this.C=d;Cd(this)};
|
||||
zd.prototype.wa=function(){if(this.xa){if(this.C){var a=this.C,b=this.id,c=this.I,d=this.A,e=this.xa,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,xa:e,Bb:f})}delete this.xa}return!0};zd.prototype.va=function(){return!0};
|
||||
function Ad(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.xa=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,
|
||||
m.lc=function(a,b,c){fb(this,a,b,c,"SOUND2",null);this.I=b};var xd={0:U.prototype.bc,1:U.prototype.cc,2:U.prototype.dc,3:U.prototype.ac},yd={2:U.prototype.ic,3:U.prototype.kc,4:U.prototype.jc,5:U.prototype.lc};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)}});
|
||||
function zd(a){u.call(this,"ROM",a,zd);this.u=null;this.I=a.addr;this.A=a.size;this.J=a.writable;this.F=a.alias;this.H=a.file;this.K=ba(this.H);if(this.H){a=this.H;var b=ca(this.K);"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){Ad(c,a,b,f)})}}x(zd);var Bd=[0,5];zd.prototype.Ba=function(a,b,c,d){this.D=b;this.b=c;this.C=d;Cd(this)};
|
||||
zd.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};zd.prototype.wa=function(){return!0};
|
||||
function Ad(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,
|
||||
" ").replace(/ +$/,"").split(" "),a.u=Array(b.length),e=0;e<b.length;e++)a.u[e]=aa(b[e],16);Cd(a)}}
|
||||
function Cd(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(Dd(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)}}
|
||||
function Dd(a,b){if(tb(a.D,b,a.A,a.J?1:Pb)){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<Bd.length;c++)wb(a.D,Bd[c],118);zc(a.b,function(a){return function(b){0<=Bd.indexOf(b)&&a.C&&(a.g("CP/M vector "+r(b)),H(a.b,b),a.C.da())}}(a));Bc(a.b,b)}return!0}return!1}Ia(function(){for(var a=A(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new zd(d);eb(d,c)}});function Ed(a){u.call(this,"RAM",a,Ed);this.F=a.addr;this.A=a.size;this.u=!1}x(Ed);m=Ed.prototype;
|
||||
m.Aa=function(a,b,c,d){this.D=b;this.b=c;this.C=d;B(this)};m.wa=function(a,b){b||this.reset();return!0};m.va=function(a){return a?this.save():!0};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};Ia(function(){for(var a=A(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Ed(d);eb(d,c)}});
|
||||
function Fd(a){u.call(this,"Keyboard",a,Fd,65536);B(this)}x(Fd);Ia(function(){for(var a=A(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Fd(d);eb(d,c)}});function Gd(a){u.call(this,"Video",a,Gd,262144);this.Zb=a.interruptRate;this.ya=a.refreshRate||60;B(this)}x(Gd);Gd.prototype.Aa=function(a,b,c,d){this.u=a;this.D=b;this.b=c;this.C=d};
|
||||
Ia(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 <canvas> 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=
|
||||
(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 Gd(d);eb(d,c)}});
|
||||
function Hd(a){u.call(this,"Debugger",a,Hd);this.aa=Id;this.ja=this.Ma=this.U=0;this.Y=W();this.Fb=W();this.H=-1;this.F=[];this.sa=!1;this.ka=W();this.J=[];this.ra={};this.A=this.ca=this.I=[];Jd(this);this.Ca=0;Kd(this);this.$a=[];Ld(this,a.messages);this.rb=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return oc(b,a)}):void 0===global.$&&(global.$=function(a){return oc(b,a)})}x(Hd);
|
||||
var Md={"?":"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"},Id=8080,Nd="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(" "),
|
||||
Od="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(" "),Pd="B C D E H L M A BC DE HL SP PC PSW".split(" "),Qd=[[45],[42,2067,32],[71,2131,18193],[29,2067],[28,17],[22,17],[44,17,32],[63],[45,32768],
|
||||
function Dd(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<Bd.length;c++)wb(a.D,Bd[c],118);Dc(a.b,function(a){return function(b){if(0<=Bd.indexOf(b)){var c=!1,h=a.b,g=a.C;if(5==b)switch(c=!0,h.M){case 2:Ed(a,String.fromCharCode(h.O));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)}Ed(a,l);break;default:c=!1}c?ud.call(h):g&&(a.g("\nCP/M vector "+r(b)),G(h,b),g.ea());b=!0}else b=!1;return b}}(a));
|
||||
Fc(a.b,b)}return!0}return!1}function Ed(a,b){b=b.replace(/\r/g,"");a.qa&&(a.qa.value+=b,a.qa.scrollTop=a.qa.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 zd(d);eb(d,c)}});function Fd(a){u.call(this,"RAM",a,Fd);this.F=a.addr;this.A=a.size;this.u=!1}x(Fd);m=Fd.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};
|
||||
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 Fd(d);eb(d,c)}});function Gd(a){u.call(this,"Keyboard",a,Gd,65536);B(this)}x(Gd);
|
||||
Ma(function(){for(var a=A(document,"pc8080","keyboard"),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,"Video",a,Hd,262144);this.Zb=a.interruptRate;this.za=a.refreshRate||60;B(this)}x(Hd);Hd.prototype.Ba=function(a,b,c,d){this.u=a;this.D=b;this.b=c;this.C=d};
|
||||
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 <canvas> 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=
|
||||
(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 Hd(d);eb(d,c)}});
|
||||
function Id(a){u.call(this,"Debugger",a,Id);this.aa=Jd;this.ja=this.Ma=this.U=0;this.Y=W();this.Fb=W();this.H=-1;this.F=[];this.ta=!1;this.ka=W();this.J=[];this.sa={};this.A=this.ba=this.I=[];Kd(this);this.Da=0;Ld(this);this.$a=[];Md(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(Id);
|
||||
var Nd={"?":"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"},Jd=8080,Od="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(" "),
|
||||
Pd="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(" "),Qd="B C D E H L M A BC DE HL SP PC PSW".split(" "),Rd=[[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],
|
||||
[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],
|
||||
[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],
|
||||
[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]],Rd={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=Hd.prototype;
|
||||
m.Aa=function(a,b,c,d){this.D=b;this.b=c;this.u=a;(a=lc(a,"messages"))&&Ld(this,a);this.Cb=Qd;Sd(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=Ub[c],n&&d.g(q(n.id)+" %"+q(g<<d.b.Z)+" %%"+q(n.B)+" "+r(n.kb)+" "+r(n.size)+
|
||||
" "+l),c!=Ob&&(c=-1),l=0);a+=d.b.ma;g++}}});B(this)};
|
||||
m.pa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.Ba=this.T[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",oc(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.Ba){var a=d.Ba.value;d.Ba.value=
|
||||
"";oc(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.Ba&&this.Ba.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&&Td(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&&Td(a,b)}return c};
|
||||
m.Ab=function(a,b,c){var d=X(a);-1!==d&&(wb(this.D,d,b),c&&Td(a,c),G(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&&Td(a,c);G(this.b,!0)}};function W(a){return{B:a||0,ua:!1}}function Ud(a){return[a.B,a.ua]}function Vd(a){return{B:a[0],ua:a[1]}}
|
||||
function Y(a,b,c){var d;c=(c?a.Y:a.Fb).B;if(void 0!==b){d=b=Wd(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].xa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=W(d));break}}if(d=e)return d;c=Xd(a,b,void 0)}null!=c&&(d=W(c));return d}function Yd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Vb=Zd(a,b.Sb=c[2]))}function Td(a,b){null!=a.B&&(a.B+=b||1)}function Z(a){return q(a,4)}
|
||||
function $d(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 Ld(a,b){a.C=a;a.ga=a.Wb=1073741824;a.Da=null;var c=Zd(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in Rd)0<=la(c,d)&&(a.ga|=Rd[d],a.g(d+" messages enabled"))}function Sd(a,b){for(var c in Rd)if(64==Rd[c]){a.$a[c]=b;break}}
|
||||
function ae(a,b){var c;a=a.toUpperCase();null==b?c=la(Pd,a):(c=la(Pd,a.substr(b,3)),0>c&&(c=la(Pd,a.substr(b,2))));return c}function be(a,b){var c=0,d=ce(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 ce(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.j;break;case 0:c=d.L;break;case 1:c=d.P;break;case 8:c=Dc(d);break;case 2:c=d.M;break;case 3:c=d.R;break;case 9:c=Fc(d);break;case 4:c=d.N;break;case 5:c=d.S;break;case 10:c=L(d);break;case 6:c=d.V(L(d));break;case 11:c=d.ba;break;case 12:c=d.O;break;case 13:c=d.j<<8|Cc(d)&255}}return c}
|
||||
function de(a,b){b=Wd(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=ae(b,c+1),0<=e&&(b=b.substr(0,c)+be(a,e)+b.substr(c+1+Pd[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+' "'+$d(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))?(Td(d),d=e+' "'+
|
||||
$d(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.O).B));if(!this.Da||a!=this.Da)if(this.Da=a,this.ga&-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;G(c)}};function gb(a,b,c,d,e,f,h,g){g|=256;null!=e&&(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 Kd(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.ta=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.W&&a.W.length&&a.g("instruction history buffer freed"),a.ta=0,a.W=[],a.K=[]}m.La=function(a){if(!ee(this))return!1;this.b.La(a);return!0};
|
||||
m.Ya=function(a,b,c){if(!ee(this))return!1;this.U=0;a||qd(this)&&rd(this,this.b.O,0);try{var d=this.b.Ya(a);0<d&&(this.U+=d,tc(this.b,d,!0),qc(this.b,d),this.ja++)}catch(e){"number"!=typeof e&&(this.U=0,lb(this.b,e.stack||e.message))}!1!==c&&G(this.b);this.qa(b||!1);return 0<this.U};m.da=function(a){this.b&&this.b.da(a)};m.qa=function(a){void 0===a&&(a=!0);this.Y=W(this.b.O);a&&1!=this.ea?fe(this):ge(this)};
|
||||
function ee(a){var b;if(b=a.b&&kb(a.b))b=a.b,b.w.ha?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.wa=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.va=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Kd(this);this.ja=this.Ma=0;this.Da=null;this.U=0;this.Y=W(this.b.O);this.w.ia=!1;he(this);a||this.qa()};
|
||||
m.save=function(){var a=new I(this);K(a,0,Ud(this.Y));K(a,1,Ud(this.ka));K(a,2,[this.F,this.sa,this.ga]);K(a,3,this.J);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.Y=Vd(a[b++]),this.ka=Vd(a[b++]),this.F=a[b][0],"string"==typeof this.F&&(this.F=[this.F]),this.sa=a[b][1],this.ga|=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.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.qa(!0);this.jb();he(this,this.b.O)}};function qd(a){return 1<a.A.length||!!a.Ca}
|
||||
function rd(a,b,c){var d=a.b;if(0<c&&(a.Ca&&!--a.Ca||Yb(a,b,1,a.A)))return!0;0<=c&&a.K.length&&(a.ja++,b=vb(a.D,b),null!=b&&(a.K[b][1]++,b=a.W[a.ta],b.B=d.O,b.ua=!1,++a.ta==a.W.length&&(a.ta=0)));return!1}function Gb(a,b,c){a.g("break on input from port "+r(b)+": "+q(c));a.da(!0)}function Jb(a,b,c){a.g("break on output to port "+r(b)+": "+q(c));a.da(!0)}
|
||||
function Jd(a){var b,c;a.A=["bp"];if(void 0!==a.ca)for(b=1;b<a.ca.length;b++){c=a.ca[b];var d=a.b;Zb(d.la[X(c)>>>d.Z],!1)}a.ca=["br"];if(void 0!==a.I)for(b=1;b<a.I.length;b++)c=a.I[b],d=a.b,Zb(d.la[X(c)>>>d.Z],!0);a.I=["bw"];a.Kb=0}m.Ea=function(a,b,c){var d=!0;c||ie(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].Ea(e&f.H,a==this.I)}}d&&(a.push(b),c?b.ua=!0:(je(this,a,a.length-1,"set"),Kd(this)));return d};
|
||||
function ie(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.ua)){f=!0;g.ua||e||je(a,b,h,"cleared");b.splice(h,1);b!=a.A&&(d=a.b,Zb(d.la[c>>>d.Z],b==a.I));g.ua||Kd(a);break}}return f}function ke(a,b){for(var c=1;c<b.length;c++)je(a,b,c);return b.length-1}function je(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.B)+(d?" "+d:c.Sb?' "'+c.Sb+'"':""))}
|
||||
function he(a,b){if(void 0!==b)Yb(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.ua){if(!ie(a,a.A,d,!0))break;c=0}}}
|
||||
function Yb(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.ua)for(var k=X(g),l=0;l<c;l++)if(b+l==k){var n,f=!0;g.ua&&(ie(a,d,g,!0),e=!0);if(n=g.Vb){for(var f=!1,p=0;p<n.length;p++)if(!le(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||je(a,d,h,"hit");break}}}a.Kb--;return f}
|
||||
function me(a,b,c,d){for(var e=W(b.B),f=a.V(b,1),h=a.Cb[f],g="",k=(8086!=a.aa?Nd:Od)[h[0]],l=h.length-1,n=0,p,z=1;z<=l;z++){var C="";p=h[z];if(void 0!==p&&!(p&16384&&a.aa==Id)){var v=p&240;if(v){var Ea=p&15;Ea?n=Ea:p|=n;p&61440||(p|=1==z?8192:4096);if(v&32)a:{var C=a,v=p,Ea=b,D=" ";switch(v&15){case 1:D=q(C.V(Ea,1),2);break;case 2:D=q(C.V(Ea,1)<<24>>24,4);break;case 3:D=q(C.mb(Ea,2),4);break;default:C="imm("+r(v)+")";break a}8086==C.aa&&v&64?D="["+D+"]":v&16||(D=(C.aa==Id?"$":"0x")+D);C=D}else v&
|
||||
16?(C=(p&3840)>>8,v=Pd[C],8086==a.aa&&p&64&&(6==C&&(v="HL"),v="["+v+"]"),C=v):v&128&&(C=(f>>3&7).toString());if(!C||!C.length){g="INVALID";break}0<g.length&&(g+=",");g+=C||"???"}}}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="+rc(a.b).toString()+" cs="+q(a.b.i.bb)):h+(null!=d?"="+d.toString():""));return h}
|
||||
function Me(a,b){var c;switch(b){case "I":c=a.b.oa&512;break;case "S":c=Lc(a.b);break;case "Z":c=Kc(a.b);break;case "A":c=Jc(a.b);break;case "P":c=Ic(a.b);break;case "C":c=Hc(a.b);break;default:c=0}return b+(c?"1":"0")+" "}function Ne(a,b){return Pd[b]+"="+be(a,b)+" "}function Oe(a){return Ne(a,7)+Ne(a,8)+Ne(a,9)+Ne(a,10)+Ne(a,11)+Me(a,"I")+Me(a,"S")+Me(a,"Z")+Me(a,"A")+Me(a,"P")+Me(a,"C")}
|
||||
18193,33],[65,128]],Sd={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=Id.prototype;
|
||||
m.Ba=function(a,b,c,d){this.D=b;this.b=c;this.u=a;(a=oc(a,"messages"))&&Md(this,a);this.Cb=Rd;Td(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)+
|
||||
" "+l),c!=Pb&&(c=-1),l=0);a+=d.b.ma;g++}}});B(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=
|
||||
"";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&&Ud(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&&Ud(a,b)}return c};
|
||||
m.Ab=function(a,b,c){var d=X(a);-1!==d&&(wb(this.D,d,b),c&&Ud(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&&Ud(a,c);sc(this.b,!0)}};function W(a){return{B:a,va:!1}}function Vd(a){return[a.B,a.va]}function Wd(a){return{B:a[0],va:a[1]}}
|
||||
function Y(a,b,c){var d;c=(c?a.Y:a.Fb).B;if(void 0!==b){d=b=Xd(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=Yd(a,b,void 0)}null!=c&&(d=W(c));return d}function Zd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Vb=$d(a,b.Sb=c[2]))}function Ud(a,b){null!=a.B&&(a.B+=b||1)}function Z(a){return q(a,4)}
|
||||
function ae(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 Md(a,b){a.C=a;a.ga=a.Wb=1073741824;a.Ea=null;var c=$d(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in Sd)0<=la(c,d)&&(a.ga|=Sd[d],a.g(d+" messages enabled"))}function Td(a,b){for(var c in Sd)if(64==Sd[c]){a.$a[c]=b;break}}
|
||||
function be(a,b){var c;a=a.toUpperCase();null==b?c=la(Qd,a):(c=la(Qd,a.substr(b,3)),0>c&&(c=la(Qd,a.substr(b,2))));return c}function ce(a,b){var c=0,d=de(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;if(0<=b){var d=a.b;switch(b){case 7:c=d.j;break;case 0:c=d.L;break;case 1:c=d.M;break;case 8:c=Hc(d);break;case 2:c=d.N;break;case 3:c=d.O;break;case 9:c=Jc(d);break;case 4:c=d.P;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.R;break;case 13:c=d.j<<8|Gc(d)&255}}return c}
|
||||
function ee(a,b){b=Xd(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=be(b,c+1),0<=e&&(b=b.substr(0,c)+ce(a,e)+b.substr(c+1+Qd[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+' "'+ae(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))?(Ud(d),d=e+' "'+
|
||||
ae(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.R).B));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.F-=c.b;c.b=0;sc(c)}};function gb(a,b,c,d,e,f,h,g){g|=256;null!=e&&(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 Ld(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.K||!a.K.length)for(a.K=Array(256),b=0;b<a.K.length;b++)a.K[b]=[b,0]}else a.W&&a.W.length&&a.g("instruction history buffer freed"),a.ua=0,a.W=[],a.K=[]}m.La=function(a){if(!fe(this))return!1;this.b.La(a);return!0};
|
||||
m.Ya=function(a,b,c){if(!fe(this))return!1;this.U=0;a||qd(this)&&rd(this,this.b.R,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.ra(b||!1);return 0<this.U};m.ea=function(a){this.b&&this.b.ea(a)};m.ra=function(a){void 0===a&&(a=!0);this.Y=W(this.b.R);a&&1!=this.fa?ge(this):he(this)};
|
||||
function fe(a){var b;if(b=a.b&&kb(a.b))b=a.b,b.w.ha?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){Ld(this);this.ja=this.Ma=0;this.Ea=null;this.U=0;this.Y=W(this.b.R);this.w.ia=!1;ie(this);a||this.ra()};
|
||||
m.save=function(){var a=new H(this);I(a,0,Vd(this.Y));I(a,1,Vd(this.ka));I(a,2,[this.F,this.ta,this.ga]);I(a,3,this.J);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.Y=Wd(a[b++]),this.ka=Wd(a[b++]),this.F=a[b][0],"string"==typeof this.F&&(this.F=[this.F]),this.ta=a[b][1],this.ga|=a[b][2]);a[3]&&(this.J=a[3]);return!0};m.start=function(a,b){this.fa||this.g("running");this.w.ia=!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.fa){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.ra(!0);this.jb();ie(this,this.b.R)}};function qd(a){return 1<a.A.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.K.length&&(a.ja++,b=vb(a.D,b),null!=b&&(a.K[b][1]++,b=a.W[a.ua],b.B=d.R,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.ea(!0)}function Kb(a,b,c){a.g("break on output to port "+r(b)+": "+q(c));a.ea(!0)}
|
||||
function Kd(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||je(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:(ke(this,a,a.length-1,"set"),Ld(this)));return d};
|
||||
function je(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||ke(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||Ld(a);break}}return f}function le(a,b){for(var c=1;c<b.length;c++)ke(a,b,c);return b.length-1}function ke(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.B)+(d?" "+d:c.Sb?' "'+c.Sb+'"':""))}
|
||||
function ie(a,b){if(void 0!==b)Zb(a,b,1,a.A,!0),a.fa=0;else for(var c=1;c<a.A.length;c++){var d=a.A[c];if(d.va){if(!je(a,a.A,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&&(je(a,d,g,!0),e=!0);if(n=g.Vb){for(var f=!1,p=0;p<n.length;p++)if(!me(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||ke(a,d,h,"hit");break}}}a.Kb--;return f}
|
||||
function ne(a,b,c,d){for(var e=W(b.B),f=a.V(b,1),h=a.Cb[f],g="",k=(8086!=a.aa?Od:Pd)[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==Jd)){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==Jd?"$":"0x")+E);D=E}else v&
|
||||
16?(D=(p&3840)>>8,v=Qd[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}
|
||||
function Me(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 Ne(a,b){return Qd[b]+"="+ce(a,b)+" "}function Oe(a){return Ne(a,7)+Ne(a,8)+Ne(a,9)+Ne(a,10)+Ne(a,11)+Me(a,"I")+Me(a,"S")+Me(a,"Z")+Me(a,"A")+Me(a,"P")+Me(a,"C")}
|
||||
var Pe={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function Qe(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}
|
||||
function Xd(a,b,c){var d;if(b){b=Wd(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=Re(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&&Pe[n]<Pe[k[k.length-1]]&&Qe(g,k,1);k.push(n);b=b.substr(p+z)}Qe(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&Se(a,null,
|
||||
d))}return d}function Wd(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Xd(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}
|
||||
function Re(a,b,c,d){var e;void 0!==b?(e=ae(b),0<=e?e=ce(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 Se(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 Te(a,b){if(b)return Se(a,b,a.ra[b]);var c=0;for(b in a.ra)Se(a,b,a.ra[b]),c++;return 0<c}Hd.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=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?Ve(a,b,e,d):c&&(e=~e,Ve(a,b,e-1,d),Ve(a,b,e,d));break}}return d}function Ve(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].xa[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){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.aa?Nd:Od;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 Xe(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Te(a)||a.g("no variables"),!0;if(!c[2])return Te(a,c[1]);if(!c[3])return delete a.ra[c[1]],!0;var d=Xd(a,c[3]);return void 0!==d?(a.ra[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
|
||||
function Yd(a,b,c){var d;if(b){b=Xd(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=Re(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&&Pe[n]<Pe[k[k.length-1]]&&Qe(g,k,1);k.push(n);b=b.substr(p+z)}Qe(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&Se(a,null,
|
||||
d))}return d}function Xd(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Yd(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}
|
||||
function Re(a,b,c,d){var e;void 0!==b?(e=be(b),0<=e?e=de(a,e):(e=a.sa[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 Se(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 Te(a,b){if(b)return Se(a,b,a.sa[b]);var c=0;for(b in a.sa)Se(a,b,a.sa[b]),c++;return 0<c}Id.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=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?Ve(a,b,e,d):c&&(e=~e,Ve(a,b,e-1,d),Ve(a,b,e,d));break}}return d}function Ve(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){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.aa?Od:Pd;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 Xe(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Te(a)||a.g("no variables"),!0;if(!c[2])return Te(a,c[1]);if(!c[3])return delete a.sa[c[1]],!0;var d=Yd(a,c[3]);return void 0!==d?(a.sa[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
|
||||
function Ye(a,b,c){var d=null;if(b=Y(a,b,!0)){var e=Ue(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 Ze(a,b){switch(b[1]){case "8080":a.aa=Id;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&&nc(a.b);a.g("checksums "+(a.b.w.Oa?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(sc(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 Ze(a,b){switch(b[1]){case "8080":a.aa=Jd;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")+" ("+
|
||||
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")}
|
||||
function fe(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=Xd(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.j=g&255;break;case "B":d.L=g&255;break;case "BC":d.L=g>>8&255;case "C":d.P=g&255;break;case "D":d.M=
|
||||
g&255;break;case "DE":d.M=g>>8&255;case "E":d.R=g&255;break;case "H":d.N=g&255;break;case "HL":d.N=g>>8&255;case "L":d.S=g&255;break;case "SP":d.ba=g&65535;break;case "PC":H(d,g);a.Y=W(d.O);break;case "PS":Ac(d,g);break;case "C":d.G=g?d.G|256:d.G&255;break;case "P":g?Ic(d)||(d.X^=1):Ic(d)&&(d.X^=1);break;case "A":d.fa=g?~d.X&16|d.fa&-17:d.X&16|d.fa&-17;break;case "Z":d.G=g?d.G&-256:d.G|255;break;case "S":g?Lc(d)||(d.X^=192):Lc(d)&&(d.X^=192);break;case "I":d.oa=g?d.oa|512:d.oa&-513;break;default:a.g("unknown register: "+
|
||||
e);return}if(!h){a.g("invalid value: "+f);return}G(d);a.g("updated registers:")}a.g(Oe(a));c&&(a.Y=W(d.O),ge(a,Z(a.Y.B)))}}function $e(a,b){b=ha(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(de(a,c[2])):Xd(a,b,!0)}function af(a,b,c){var d="t"!=b;c=Re(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(){G(a.b);ib(a,!1)})}
|
||||
function ge(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=Ue(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=me(a,b,h,f);a.g(f);a.Y=b;e-=b.B-k;c++}}}
|
||||
function Zd(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 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 le(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.sa&&(a.g("ended assemble at "+Z(a.ka.B)),a.Y=a.ka,a.sa=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Da=null;if(kb(a)&&0<b.length){a.sa&&(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=
|
||||
n,void 0===f[2])a.g("begin assemble at "+Z(n.B)),a.sa=!0,G(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(me(a,a.ka))}}break;case "b":a:{var C=f[0],v=f[1],Ea=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]"),
|
||||
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 D=C.charAt(1);if("l"==D){var Za=0,Za=Za+ke(a,a.A),Za=Za+ke(a,a.ca);(Za+=ke(a,a.I))||a.g("no breakpoints")}else if("n"==D)a.Ca=Re(a,v),a.g("break after "+a.Ca+" instruction(s)");else if(void 0===v)a.g("missing breakpoint address");else{var J=W();if("*"!=v&&(J=Y(a,v,!0),!J))break a;v=r(J.B);"c"==D?null==J.B?(Jd(a),a.g("all breakpoints cleared")):ie(a,a.A,J)||ie(a,
|
||||
a.ca,J)||ie(a,a.I,J)||a.g("breakpoint missing: "+Z(J.B)):"i"==D?a.g("breakpoint "+(Eb(a.D,J.B)?"enabled":"cleared")+": port "+v+" (input)"):"o"==D?a.g("breakpoint "+(Hb(a.D,J.B)?"enabled":"cleared")+": port "+v+" (output)"):null!=J.B&&(Yd(a,J,Ea),"p"==D?a.Ea(a.A,J):"r"==D?a.Ea(a.ca,J):"w"==D?a.Ea(a.I,J):a.g("unknown breakpoint command: "+D))}}}break;case "c":a.Fa&&(a.Fa.value="");break;case "d":a:{var $a,ab=f[0],sa=f[1],Ja=f[2],xf=f[3];if("?"==sa){var ta="";for($a in Rd)a.$a[$a]&&(ta&&(ta+=","),ta+=
|
||||
$a);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 ne=bf(a.u,!0);"console"==Ja?console.log(ne):(a.Fa&&(a.Fa.value=""),a.g(ne))}else if("symbols"==sa)for(var Pc=0;Pc<a.J.length;Pc++){var Qc=a.J[Pc],cb;for(cb in Qc.xa)if("."!=
|
||||
cb.charAt(0)){var oe=Qc.xa[cb].o;if(void 0!==oe){var pe=Qc.xa[cb].l;pe&&(cb=pe);a.g(Z(oe)+" "+cb)}}}else{if("d"==ab){for($a in Rd)if(f[1]==$a){var qe=a.$a[$a];qe?(f.shift(),f.shift(),qe(f)):a.g("no dump registered for "+sa);break a}sa||(ab=a.fc||"db")}else a.fc=ab;if("dh"==ab){var re=sa,se=Ja,te="",ue=0,Q=a.ta,ua=a.W;if(ua.length){var U=+re||a.Lb,db=+se||10;isNaN(U)?U=db:te="more ";U>ua.length&&(a.g("note: only "+ua.length+" available"),U=ua.length);Q-=U;0>Q&&(null==ua[ua.length-1].B?(U=Q+U,Q=0):
|
||||
Q+=ua.length);var Rc=[];"call"==se&&(db=1E5,Rc=["CALL"]);for(void 0!==re&&a.g(U+" instructions earlier:");0<db&&Q!=a.ta;){var ve=ua[Q++];if(null==ve.B)break;var xb=W(ve.B),yf=U--,we=me(a,xb,"history",yf);(!Rc.length||0<=we.indexOf(Rc[0]))&&a.g(we);xb.sb&&(Q+=xb.sb,db-=xb.sb,U-=xb.sb);Q>=ua.length&&(Q=0);a.Lb=U;ue++;db--}}ue||(a.g("no "+te+"history available"),a.Lb=void 0)}else{var cc=Y(a,sa);if(cc){var dc=0;Ja&&("l"==Ja.charAt(0)&&(Ja=Ja.substr(1)||xf),dc=Re(a,Ja)>>>0,65536<dc&&(dc=65536));for(var Ka=
|
||||
"",zf=(dc||128)+15>>4||1,Sc="dd"==ab?4:"dw"==ab?2:1,xe=0;xe<zf;xe++){for(var ec=0,Tc=0,yb="",Uc="",sa=Z(cc.B),Vc=0;16>Vc;Vc++){var fc=a.V(cc,1),ec=ec|fc<<(Tc++<<3);Tc==Sc&&(yb+=q(ec,2*Sc),yb+=1==Sc?7==Vc?"-":" ":" ",ec=Tc=0);Uc+=32<=fc&&128>fc?String.fromCharCode(fc):"."}Ka&&(Ka+="\n");Ka+=sa+" "+yb+" "+Uc}Ka&&a.g(Ka);a.Fb=cc}}}}break;case "e":if("else"==f[0])break;var gc=1,ye=255,ze=a.V,Ae=a.Ab;"ew"==f[0]&&(gc=2,ye=65535,ze=a.mb,Ae=a.Ub);var Be=gc<<1,Ce=f[1];if(null==Ce)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 hc=Y(a,Ce);if(hc)for(var ic=2;ic<f.length;ic++){var zb=Xd(a,f[ic]);if(void 0===zb){a.g("unrecognized value: "+f[ic]);break}zb&~ye&&a.g("warning: "+q(zb)+" exceeds "+gc+"-byte value");var Af=ze.call(a,hc);a.g("changing "+Z(hc.B)+" from 0x"+q(Af,Be)+" to 0x"+q(zb,Be));Ae.call(a,hc,zb,gc)}}break;case "f":We(a,f[1]);break;case "g":a:{var De=f[1],Bf=b;if(void 0!==De){var Wc=Y(a,De,!0);if(!Wc)break a;
|
||||
Yd(a,Wc,Bf);a.Ea(a.A,Wc,!0)}a.La(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":var Xc;a.w.ia?(Xc="halting",a.da()):Xc="already halted";c||a.g(Xc);break;case "i":if("if"==f[0]){var Yc;var Ab=b.substr(2),Ab=ha(Ab);Xd(a,Ab)?(c||a.g("true: "+Ab),Yc=!0):(c||a.g("false: "+Ab),Yc=!1);Yc||(d=!1);break}var Zc=f[1];if(Zc&&"?"!=Zc){var $c=Re(a,Zc);if(void 0!==$c){var Cf=Fb(a.D,$c);a.g(r($c)+": "+("0x"+q(Cf,2)))}}else a.g("input commands:"),a.g("\ti [p]\tread port [p]"),a.g("warning: port accesses can affect hardware state");
|
||||
break;case "k":var Df=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var ad=0,Ee=W(),Bb=W(a.b.ba);for(a.g("stack trace for "+Z(Bb.B));10>ad;){for(var La=null,Ef=256;65536>Bb.B>>>0;){Ee.B=a.mb(Bb,2);if(null==Bb.B||!Ef--)break;for(var Ff=a,jc=Ee,Fe=null,Cb=jc.B,Ge=Cb,bd=1;6>=bd&&Cb;bd++){if(2<bd){jc.B=Cb;var kc=me(Ff,jc);if(0<kc.indexOf("CALL")){var He=kc.indexOf(" ");if(Cb+(kc.indexOf(" ",He+1)-He-1)/2==Ge){Fe=kc;break}}}Cb--}jc.B=
|
||||
Ge;if(La=Fe)break}if(!La||null==La)break;var Ie=null;if("ks"==Df){var Je=La.match(/[0-9A-F]+$/);Je&&(Ie=Ye(a,Je[0]))}La=ga(La,50)+" ;"+(Ie||"stack="+Z(Bb.B));a.g(La);ad++}ad||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Ye(a,f[1],!0);break}break;case "m":a:{var va,wa=null,E=f[1];"?"==E&&(E=void 0);if(void 0!==E){var Ma=0;if("all"==E)Ma=1610481663,E=null;else if("on"==E)wa=!0,E=null;else if("off"==E)wa=!1,E=null;else{"keys"==E&&(E="key");"kbd"==E&&(E="keyboard");for(va in Rd)if(E==
|
||||
va){Ma=Rd[va];wa=!!(a.ga&Ma);break}if(!Ma){a.g("unknown message category: "+E);break a}}Ma&&("on"==f[2]?(a.ga|=Ma,wa=!0):"off"==f[2]&&(a.ga&=~Ma,wa=!1))}var Gf=0,Fa="";for(va in Rd)if(!E||E==va){var Hf=!!(a.ga&Rd[va]);if(null===wa||wa==Hf)Fa&&(Fa+=","),++Gf%10||(Fa+="\n\t"),"key"==va&&(va="keys"),Fa+=va}void 0===E&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==wa?wa?"messages on: ":"messages off: ":"message categories:\n\t")+(Fa||"none"));Kd(a)}break;case "o":var cd=
|
||||
f[1],If=f[2];if(cd&&"?"!=cd){var dd=Re(a,cd,"port #"),ed=Re(a,If);void 0!==dd&&void 0!==ed&&(Ib(a.D,dd,ed),a.g(r(dd)+": "+("0x"+q(ed,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]){$e(a,b.substr(5));break}var Ke="pr"==f[0]?1:0,Jf=1+Ke;if(a.ea)a.g("step in progress");else{var fd=W(a.b.O);switch(a.V(fd)){case 205:a.ea=Jf,Td(fd,3)}a.ea?(a.Ea(a.A,fd,!0),a.La()||(a.u&&a.u.jb(),a.ea=
|
||||
0)):af(a,Ke?"tr":"t")}break;case "r":if("reset"==b){a.u&&a.u.reset();break}fe(a,f);break;case "s":Ze(a,f);break;case "t":af(a,f[0],f[1]);break;case "u":ge(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Xe(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.21.7 ("+a.b.Ra+",RELEASE"+(mb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(oa());break;case "?":if(f[1]){$e(a,b.substr(1));break}var Db="commands:",gd;for(gd in Md)Db+="\n"+ga(gd,7)+Md[gd];qd(a)||(Db+="\nnote: frequency/history disabled if no exec breakpoints");
|
||||
a.g(Db);break;default:a.g("unknown command: "+b),d=!1}}}catch(Le){a.g("debugger error: "+(Le.stack||Le.message)),d=!1}return d}function oc(a,b,c){b=Zd(a,b,c);for(var d in b)if(!le(a,b[d]))return!1;return!0}Ia(function(){for(var a=A(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Hd(d);eb(d,c)}});function I(a,b,c){this.id=a.id;this.key=cf(a,b,c);this.C=a.C;df(this,a.Qb)}
|
||||
function ge(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=Yd(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.j=g&255;break;case "B":d.L=g&255;break;case "BC":d.L=g>>8&255;case "C":d.M=g&255;break;case "D":d.N=
|
||||
g&255;break;case "DE":d.N=g>>8&255;case "E":d.O=g&255;break;case "H":d.P=g&255;break;case "HL":d.P=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.R);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.da=g?~d.X&16|d.da&-17:d.X&16|d.da&-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: "+
|
||||
e);return}if(!h){a.g("invalid value: "+f);return}sc(d);a.g("updated registers:")}a.g(Oe(a));c&&(a.Y=W(d.R),he(a,Z(a.Y.B)))}}function $e(a,b){b=ha(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(ee(a,c[2])):Yd(a,b,!0)}function af(a,b,c){var d="t"!=b;c=Re(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)})}
|
||||
function he(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.fa?a.U:null;var h=null!=f?"cycles":null,g=Ue(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=ne(a,b,h,f);a.g(f);a.Y=b;e-=b.B-k;c++}}}
|
||||
function $d(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 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 me(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.ta&&(a.g("ended assemble at "+Z(a.ka.B)),a.Y=a.ka,a.ta=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Ea=null;if(kb(a)&&0<b.length){a.ta&&(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=
|
||||
n,void 0===f[2])a.g("begin assemble at "+Z(n.B)),a.ta=!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(ne(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]"),
|
||||
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+le(a,a.A),Ya=Ya+le(a,a.ba);(Ya+=le(a,a.I))||a.g("no breakpoints")}else if("n"==E)a.Da=Re(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?(Kd(a),a.g("all breakpoints cleared")):je(a,a.A,K)||je(a,
|
||||
a.ba,K)||je(a,a.I,K)||a.g("breakpoint missing: "+Z(K.B)):"i"==E?a.g("breakpoint "+(Fb(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&&(Zd(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.qa&&(a.qa.value="");break;case "d":a:{var Za,$a=f[0],ra=f[1],Ia=f[2],xf=f[3];if("?"==ra){var sa="";for(Za in Sd)a.$a[Za]&&(sa&&(sa+=","),sa+=
|
||||
Za);sa+=",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");sa.length&&a.g("dump extension commands:\n\t"+sa)}else if("state"==ra){var oe=bf(a.u,!0);"console"==Ia?console.log(oe):(a.qa&&(a.qa.value=""),a.g(oe))}else if("symbols"==ra)for(var Sc=0;Sc<a.J.length;Sc++){var Tc=a.J[Sc],bb;for(bb in Tc.ya)if("."!=
|
||||
bb.charAt(0)){var pe=Tc.ya[bb].o;if(void 0!==pe){var qe=Tc.ya[bb].l;qe&&(bb=qe);a.g(Z(pe)+" "+bb)}}}else{if("d"==$a){for(Za in Sd)if(f[1]==Za){var re=a.$a[Za];re?(f.shift(),f.shift(),re(f)):a.g("no dump registered for "+ra);break a}ra||($a=a.fc||"db")}else a.fc=$a;if("dh"==$a){var se=ra,te=Ia,ue="",ve=0,R=a.ua,ta=a.W;if(ta.length){var V=+se||a.Lb,cb=+te||10;isNaN(V)?V=cb:ue="more ";V>ta.length&&(a.g("note: only "+ta.length+" available"),V=ta.length);R-=V;0>R&&(null==ta[ta.length-1].B?(V=R+V,R=0):
|
||||
R+=ta.length);var Uc=[];"call"==te&&(cb=1E5,Uc=["CALL"]);for(void 0!==se&&a.g(V+" instructions earlier:");0<cb&&R!=a.ua;){var we=ta[R++];if(null==we.B)break;var xb=W(we.B),yf=V--,xe=ne(a,xb,"history",yf);(!Uc.length||0<=xe.indexOf(Uc[0]))&&a.g(xe);xb.sb&&(R+=xb.sb,cb-=xb.sb,V-=xb.sb);R>=ta.length&&(R=0);a.Lb=V;ve++;cb--}}ve||(a.g("no "+ue+"history available"),a.Lb=void 0)}else{var cc=Y(a,ra);if(cc){var dc=0;Ia&&("l"==Ia.charAt(0)&&(Ia=Ia.substr(1)||xf),dc=Re(a,Ia)>>>0,65536<dc&&(dc=65536));for(var Ja=
|
||||
"",ec="dd"==$a?4:"dw"==$a?2:1,fc=ec*dc||128,zf=fc+15>>4||1;zf--&&0<fc;){var gc=0,Vc=0,yb,zb="",Wc="",ra=Z(cc.B);for(yb=16;0<yb&&0<fc;yb--){var hc=a.V(cc,1),gc=gc|hc<<(Vc++<<3);Vc==ec&&(zb+=q(gc,2*ec),zb+=1==ec?9==yb?"-":" ":" ",gc=Vc=0);Wc+=32<=hc&&128>hc?String.fromCharCode(hc):".";fc--}Ja&&(Ja+="\n");Ja+=ra+" "+zb+(0==yb?" "+Wc:"")}Ja&&a.g(Ja);a.Fb=cc}}}}break;case "e":if("else"==f[0])break;var ic=1,ye=255,ze=a.V,Ae=a.Ab;"ew"==f[0]&&(ic=2,ye=65535,ze=a.mb,Ae=a.Ub);var Be=ic<<1,Ce=f[1];if(null==
|
||||
Ce)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 jc=Y(a,Ce);if(jc)for(var kc=2;kc<f.length;kc++){var Ab=Yd(a,f[kc]);if(void 0===Ab){a.g("unrecognized value: "+f[kc]);break}Ab&~ye&&a.g("warning: "+q(Ab)+" exceeds "+ic+"-byte value");var Af=ze.call(a,jc);a.g("changing "+Z(jc.B)+" from 0x"+q(Af,Be)+" to 0x"+q(Ab,Be));Ae.call(a,jc,Ab,ic)}}break;case "f":We(a,f[1]);break;case "g":a:{var De=f[1],Bf=b;if(void 0!==De){var Xc=
|
||||
Y(a,De,!0);if(!Xc)break a;Zd(a,Xc,Bf);a.Fa(a.A,Xc,!0)}a.La(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var Yc;if(a.w.ia)Yc="halting",a.ea();else{if(jb(a,!0))break a;Yc="already halted"}c||a.g(Yc)}break;case "i":if("if"==f[0]){var Zc;var Bb=b.substr(2),Bb=ha(Bb);Yd(a,Bb)?(c||a.g("true: "+Bb),Zc=!0):(c||a.g("false: "+Bb),Zc=!1);Zc||(d=!1);break}var $c=f[1];if($c&&"?"!=$c){var ad=Re(a,$c);if(void 0!==ad){var Cf=Gb(a.D,ad);a.g(r(ad)+": "+("0x"+q(Cf,2)))}}else a.g("input commands:"),
|
||||
a.g("\ti [p]\tread port [p]"),a.g("warning: port accesses can affect hardware state");break;case "k":var Df=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var bd=0,Ee=W(),Cb=W(a.b.ca);for(a.g("stack trace for "+Z(Cb.B));10>bd;){for(var Ka=null,Ef=256;65536>Cb.B>>>0;){Ee.B=a.mb(Cb,2);if(null==Cb.B||!Ef--)break;for(var Ff=a,lc=Ee,Fe=null,Db=lc.B,Ge=Db,cd=1;6>=cd&&Db;cd++){if(2<cd){lc.B=Db;var mc=ne(Ff,lc);if(0<=mc.indexOf("CALL")){var He=
|
||||
mc.indexOf(" ");if(Db+(mc.indexOf(" ",He+1)-He-1)/2==Ge){Fe=mc;break}}}Db--}lc.B=Ge;if(Ka=Fe)break}if(!Ka||null==Ka)break;var Ie=null;if("ks"==Df){var Je=Ka.match(/[0-9A-F]+$/);Je&&(Ie=Ye(a,Je[0]))}Ka=ga(Ka,50)+" ;"+(Ie||"stack="+Z(Cb.B));a.g(Ka);bd++}bd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Ye(a,f[1],!0);break}break;case "m":a:{var ua,va=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)va=!0,F=null;else if("off"==F)va=
|
||||
!1,F=null;else{"keys"==F&&(F="key");"kbd"==F&&(F="keyboard");for(ua in Sd)if(F==ua){La=Sd[ua];va=!!(a.ga&La);break}if(!La){a.g("unknown message category: "+F);break a}}La&&("on"==f[2]?(a.ga|=La,va=!0):"off"==f[2]&&(a.ga&=~La,va=!1))}var Gf=0,Ea="";for(ua in Sd)if(!F||F==ua){var Hf=!!(a.ga&Sd[ua]);if(null===va||va==Hf)Ea&&(Ea+=","),++Gf%10||(Ea+="\n\t"),"key"==ua&&(ua="keys"),Ea+=ua}void 0===F&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==va?va?"messages on: ":
|
||||
"messages off: ":"message categories:\n\t")+(Ea||"none"));Ld(a)}break;case "o":var dd=f[1],If=f[2];if(dd&&"?"!=dd){var ed=Re(a,dd,"port #"),fd=Re(a,If);void 0!==ed&&void 0!==fd&&(Jb(a.D,ed,fd),a.g(r(ed)+": "+("0x"+q(fd,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]){$e(a,b.substr(5));break}var Ke="pr"==f[0]?1:0,Jf=1+Ke;if(a.fa)a.g("step in progress");else{var gd=W(a.b.R);switch(a.V(gd)){case 205:a.fa=
|
||||
Jf,Ud(gd,3)}a.fa?(a.Fa(a.A,gd,!0),a.La()||(a.u&&a.u.jb(),a.fa=0)):af(a,Ke?"tr":"t")}break;case "r":if("reset"==b){a.u&&a.u.reset();break}ge(a,f);break;case "s":Ze(a,f);break;case "t":af(a,f[0],f[1]);break;case "u":he(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Xe(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.21.7 ("+a.b.Ra+",RELEASE"+(mb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(oa());break;case "?":if(f[1]){$e(a,b.substr(1));break}var Eb="commands:",hd;for(hd in Nd)Eb+="\n"+ga(hd,7)+Nd[hd];qd(a)||
|
||||
(Eb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Eb);break;default:a.g("unknown command: "+b),d=!1}}}catch(Le){a.g("debugger error: "+(Le.stack||Le.message)),d=!1}return d}function rc(a,b,c){b=$d(a,b,c);for(var d in b)if(!me(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 Id(d);eb(d,c)}});function H(a,b,c){this.id=a.id;this.key=cf(a,b,c);this.C=a.C;df(this,a.Qb)}
|
||||
function cf(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}
|
||||
I.prototype={constructor:I,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){df(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 df(a,b){a[a.id]={};b&&K(a,"parms",b);a.b=!1}function ef(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 ff(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){t(c.message||c),b=!1}return b}function gf(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 hf(a,b){return a[a.id][b]||null}function K(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function jf(a,b,c){u.call(this,"Computer",a,jf,67108864);this.w.ha=!1;kf(this,b);this.ca=lc(this,"autoPower",a);this.F=0;this.sa=a.busWidth||a.buswidth;this.u=lf;this.W=null;this.J=this.ra=!1;this.ta=lc(this,"url")||"";(Math.random()+.1).toString(36);this.A=mf(this);if(this.b=bb("CPU",this.id)){this.C=bb("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.sa},this.b,this.C);var d,e=Ya(this.id);if((this.H=bb("Panel",this.id))&&
|
||||
this.H.Fa)for(b=0;b<e.length;b++)d=e[b],d.na=this.H.na,d.g=this.H.g,d.Fa=this.H.Fa;for(b=0;b<e.length;b++)d=e[b],d.Aa&&d.Aa(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=lc(this,"state")||(f=!0,a.state))b=this.ea=a,f||(this.J=!0,this.u=lf),this.u&&(this.Y=new I(this,nf),gf(this.Y)?b=null:delete this.Y);!b&&this.u&&(b=of(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 "+
|
||||
c+(b?": "+ha(b):"")+")")):(h.W=b,h.ra=!0);B(h)})}else B(this);this.T.power||(this.ca=!0);!c&&this.ca&&pf(this,this.hb)}else t("Unable to find CPU component")}x(jf);var nf="1.21.7",lf=0;function kf(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 lc(a,b,c){var d=b.toLowerCase(),d=Ra[b]||Ra[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 pf(a,b,c){for(var d=Ya(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!kb(f)){kb(f,function(){pf(a,b,c)});return}}b.call(a,c)}
|
||||
function qf(a,b){var c=new I(a,nf,"validate");if(gf(c)&&ff(c)){var d=hf(c,"timestamp"),e=b?hf(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=jf.prototype;
|
||||
m.hb=function(a){void 0===a&&(a=this.u||(this.W?1:lf));if(!this.F){this.F++;var b=!1,c=!1;this.ka=!1;var d=this.Y||new I(this,nf);if(-1==a)b=!0;else if(a>lf){if(gf(d,this.W)){this.I=new I(this,nf,"failsafe");gf(this.I)&&(rf(this,d),a=2,df(this.I));K(this.I,"timestamp",ka());ef(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=ff(d)){var f=hf(d,"code"),h=hf(d,"data");f&&("ok"==f?gf(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),df(d),gf(d)?(c=ff(d),e=!0):c=!1))}e&&qf(this,c?d:null)}else 2==a&&d.clear()}else qf(this);delete this.W;delete this.Y}e=Ya(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=sf(this,h,d,b,c));b=[d,a,c];-1!=a?pf(this,this.Gb,b):this.Gb(b)}};
|
||||
function sf(a,b,c,d,e){if(!b.w.ha){b.w.ha=!0;if(b.wa){var f=null;e&&((f=hf(c,b.id))||(f=hf(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.wa(f,d)&&f&&(t("Unable to restore state for "+b.type),a.ea&&!a.ra?(c.clear(),a.u=lf,window&&window.location.reload()):a.ka=!0,b.wa(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.ha=!0;var d=this.T.power;d&&(d.textContent="Shutdown");this.ja||(this.g("PC8080 v"+nf+"\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&&(sf(this,this.b,b,c,a),pc(this.b));this.ka&&(rf(this,b),b.clear());!c&&this.I&&(this.I.clear(),delete this.I);this.F=0};
|
||||
function rf(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.ta,d=a.A||"",e=b.toString(),f={app:"PC8080"};f.ver=nf;f.url=c;f.user=d;f.type="bug";f.data=e;ma("http://www.pcjs.org/api/v1/report",f,!0)}}
|
||||
function bf(a,b,c){var d,e="none";if(a.F)return null;a.F--;var f=new I(a,nf),h=new I(a,nf,"validate"),g=ka();K(h,"timestamp",g);K(f,"timestamp",g);K(f,"version","1.21.7");K(f,"url",window?window.location.href:null);K(f,"browser",oa());a.b&&a.b.va&&(c&&a.b.da(),d=a.b.va(b,c),"object"===typeof d&&K(f,a.b.id,d),c&&(a.b.w.ha=!1,!1===d&&(e=null)));for(var g=Ya(a.id),k=0;k<g.length;k++){var l=g[k];l.w.ha&&(l.va&&(d=l.va(b,c),"object"===typeof d&&K(f,l.id,d)),c&&(l.w.ha=!1,!1===d&&(e=null)))}e&&(c?(g=d=
|
||||
!1,b?(a.A&&tf(a,a.A,f.toString()),ef(h)&&ef(f)||(e=null,d=g=!0)):a.u&&(d=!0,g=3==a.u),d&&f.clear(g)):e=f.toString());c&&(a.w.ha=!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=Ya(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())}};
|
||||
m.start=function(a,b){for(var c=Ya(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=Ya(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.ha?bf(d,!1,!0):pf(d,d.hb))},!0;case "reset":return this.T[b]=c,c.onclick=function(){if(d.w.ha&&!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.");bf(d,a,!0);!a&&d.ea?window&&window.location.reload():d.hb(lf)}else d.reset(),d.b&&pc(d.b)},!0;case "save":if(da(na(),"pcjs.org")){c.parentNode.removeChild(c);
|
||||
break}this.T[b]=c;c.onclick=function(){var a=mf(d,!0);if(a){var b=!!(d.u&&!d.U||d.ea),c=bf(d,b);b?tf(d,a,c):d.na("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
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){df(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 df(a,b){a[a.id]={};b&&I(a,"parms",b);a.b=!1}function ef(a){var b=!0;if(wa()){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 ff(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){t(c.message||c),b=!1}return b}function gf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:wa()&&(b=xa(a.key))?(a[a.id]=b,a.b=!0):!1}function hf(a,b){return a[a.id][b]||null}function I(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function jf(a,b,c){u.call(this,"Computer",a,jf,67108864);this.w.ha=!1;kf(this,b);this.ba=oc(this,"autoPower",a);this.F=0;this.ta=a.busWidth||a.buswidth;this.u=lf;this.W=null;this.J=this.sa=!1;this.ua=oc(this,"url")||"";(Math.random()+.1).toString(36);this.A=mf(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))&&
|
||||
this.H.qa)for(b=0;b<e.length;b++)d=e[b],d.na=this.H.na,d.g=this.H.g,d.qa=this.H.qa;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.fa=a,f||(this.J=!0,this.u=lf),this.u&&(this.Y=new H(this,nf),gf(this.Y)?b=null:delete this.Y);!b&&this.u&&(b=of(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 "+
|
||||
c+(b?": "+ha(b):"")+")")):(h.W=b,h.sa=!0);B(h)})}else B(this);this.T.power||(this.ba=!0);!c&&this.ba&&pf(this,this.hb)}else t("Unable to find CPU component")}x(jf);var nf="1.21.7",lf=0;function kf(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.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 pf(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(){pf(a,b,c)});return}}b.call(a,c)}
|
||||
function qf(a,b){var c=new H(a,nf,"validate");if(gf(c)&&ff(c)){var d=hf(c,"timestamp"),e=b?hf(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=jf.prototype;
|
||||
m.hb=function(a){void 0===a&&(a=this.u||(this.W?1:lf));if(!this.F){this.F++;var b=!1,c=!1;this.ka=!1;var d=this.Y||new H(this,nf);if(-1==a)b=!0;else if(a>lf){if(gf(d,this.W)){this.I=new H(this,nf,"failsafe");gf(this.I)&&(rf(this,d),a=2,df(this.I));I(this.I,"timestamp",ka());ef(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=ff(d)){var f=hf(d,"code"),h=hf(d,"data");f&&("ok"==f?gf(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),df(d),gf(d)?(c=ff(d),e=!0):c=!1))}e&&qf(this,c?d:null)}else 2==a&&d.clear()}else qf(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=sf(this,h,d,b,c));b=[d,a,c];-1!=a?pf(this,this.Gb,b):this.Gb(b)}};
|
||||
function sf(a,b,c,d,e){if(!b.w.ha){b.w.ha=!0;if(b.xa){var f=null;e&&((f=hf(c,b.id))||(f=hf(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.fa&&!a.sa?(c.clear(),a.u=lf,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}
|
||||
m.Gb=function(a){var b=a[0],c=0>a[1];a=a[2];this.w.ha=!0;var d=this.T.power;d&&(d.textContent="Shutdown");this.ja||(this.g("PC8080 v"+nf+"\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&&(sf(this,this.b,b,c,a),tc(this.b));this.ka&&(rf(this,b),b.clear());!c&&this.I&&(this.I.clear(),delete this.I);this.F=0};
|
||||
function rf(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=nf;f.url=c;f.user=d;f.type="bug";f.data=e;ma("http://www.pcjs.org/api/v1/report",f,!0)}}
|
||||
function bf(a,b,c){var d,e="none";if(a.F)return null;a.F--;var f=new H(a,nf),h=new H(a,nf,"validate"),g=ka();I(h,"timestamp",g);I(f,"timestamp",g);I(f,"version","1.21.7");I(f,"url",window?window.location.href:null);I(f,"browser",oa());a.b&&a.b.wa&&(c&&a.b.ea(),d=a.b.wa(b,c),"object"===typeof d&&I(f,a.b.id,d),c&&(a.b.w.ha=!1,!1===d&&(e=null)));for(var g=ab(a.id),k=0;k<g.length;k++){var l=g[k];l.w.ha&&(l.wa&&(d=l.wa(b,c),"object"===typeof d&&I(f,l.id,d)),c&&(l.w.ha=!1,!1===d&&(e=null)))}e&&(c?(g=d=
|
||||
!1,b?(a.A&&tf(a,a.A,f.toString()),ef(h)&&ef(f)||(e=null,d=g=!0)):a.u&&(d=!0,g=3==a.u),d&&f.clear(g)):e=f.toString());c&&(a.w.ha=!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())}};
|
||||
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.pa=function(a,b,c){var d=this;switch(b){case "power":return this.T[b]=c,c.onclick=function(){d.F||(d.w.ha?bf(d,!1,!0):pf(d,d.hb))},!0;case "reset":return this.T[b]=c,c.onclick=function(){if(d.w.ha&&!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.");bf(d,a,!0);!a&&d.fa?window&&window.location.reload():d.hb(lf)}else d.reset(),d.b&&tc(d.b)},!0;case "save":if(da(na(),"pcjs.org")){c.parentNode.removeChild(c);
|
||||
break}this.T[b]=c;c.onclick=function(){var a=mf(d,!0);if(a){var b=!!(d.u&&!d.U||d.fa),c=bf(d,b);b?tf(d,a,c):d.na("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function mf(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=uf(a,c))||a.na("The user ID is invalid."))):b&&a.na("Browser local storage is not available"));return c}
|
||||
function uf(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 of(a){var b=null;a.A&&(b=na()+"/api/v1/user?req=load&user="+a.A+"&state="+cf(a,nf));return b}
|
||||
function tf(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=cf(a,nf);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 pb(a,b,c){a=Ya(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.qa=function(a){this.b&&this.b.qa(a);this.H&&this.H.qa(a)};function vc(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)}}
|
||||
Ia(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 jf(h,d,!0);eb(h,f);h.ca&&pf(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=bb("Computer",c.id))&&c.ja&&!c.w.ha&&c.hb(-1)}});
|
||||
Ca.exit.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=bb("Computer",c.id))&&c.w.ha&&bf(c,!(!c.u||c.U),!0)}});var vf=0;function wf(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)):Kf(g,a,b,c,d,e,f)})}
|
||||
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.ra=function(a){this.b&&this.b.ra(a);this.H&&this.H.ra(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)}}
|
||||
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 jf(h,d,!0);eb(h,f);h.ba&&pf(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.ha&&c.hb(-1)}});
|
||||
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.ha&&bf(c,!(!c.u||c.U),!0)}});var vf=0;function wf(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)):Kf(g,a,b,c,d,e,f)})}
|
||||
function Kf(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"));
|
||||
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?Lf(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Lf(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]*/,
|
||||
|
|
@ -197,4 +199,4 @@ function Nf(a,b,c,d){if(!c&&b){d.push(b);a=Wa[d[0]];b=null;for(var e in a)if(da(
|
|||
function Of(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,
|
||||
"©"),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',
|
||||
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=bb("Computer",a),e=bb("Debugger",a);if(d){var f=bf(d,!0),h=d.K?JSON.stringify(d.K):null;b||(b="/versions/pcjs/1.21.7/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Qb:h}))return!0;ma(b,null,!0,function(c,d,e){Nf(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=db("Computer",a),e=db("Debugger",a);if(d){var f=bf(d,!0),h=d.K?JSON.stringify(d.K):null;b||(b="/versions/pcjs/1.21.7/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Qb:h}))return!0;ma(b,null,!0,function(c,d,e){Nf(c,d,e,[a,ba(b,!0),h,f])});return!0}t("Unable to identify machine '"+a+"'");return!1};})();
|
||||
|
|
|
|||
|
|
@ -2,122 +2,123 @@
|
|||
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={"&":"&","<":"<",">":">",'"':""","'":"'"};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 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 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 ia(){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 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 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 u(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.Sa=b.comment;this.bb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Na=this.id.substr(0,b),this.Ta=this.id.substr(b+1)):this.Ta=this.id;this[a]=c;this.g={ha:!1,pa:!1,Ia:!1,J:!1,aa:!1};this.Aa=null;this.g.aa=!1;this.v={};this.F=null;v.push(this)}var va=void 0,wa={};
|
||||
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={};
|
||||
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}
|
||||
function x(a,b){b||(b=u);a.prototype=Aa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var v=[],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<v.length;b++){var d=v[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<v.length;d++)if(c)c==v[d]&&(c=null);else if(!(a!=v[d].type||b&&v[d].id.indexOf(b)))return v[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 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.N(g.type,g.binding,h,g.value),l=k.length}}}}
|
||||
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 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 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 l=g.split(" "),k=0;k<l.length;k++)switch(g=l[k],g){case "pc8080-binding":(g=z(h))&&g.binding&&a.P(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}
|
||||
u.prototype={constructor:u,parent:null,toString:function(){return this.name?this.name:this.id||this.type},N:function(a,b,c){switch(b){case "clear":return this.v[b]||(this.v[b]=c,c.onclick=function(a){return function(){a.v.print&&(a.v.print.value="")}}(this)),!0;case "print":return this.v[b]||(this.Ha=this.v[b]=c,c.value="",this.M=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.M(a,"notice",c)}),!0;default:return!1}},log:function(){},M:function(){},status:function(a){this.M(this.Ta+": "+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.Ia)return a.g.pa&&(a.g.pa=!1),a.g.Ia=!1;if(a.g.aa)return a.M(a.toString()+" error"),!1;a.g.pa=b;return a.g.pa}function B(a){if(!a.g.aa&&(a.g.ha=!0,a.g.ha)){var b=a.Aa;a.Aa=null;b&&b()}}
|
||||
function Ga(a,b){b&&(a.g.ha?b():a.Aa=b);return a.g.ha}
|
||||
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),
|
||||
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()}}
|
||||
function Ga(a,b){b&&(a.g.ia?b():a.Da=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,
|
||||
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){u.call(this,"Panel",a,Ja)}x(Ja);m=Ja.prototype;m.N=function(a,b,c,d){return this.w&&this.w.N(a,b,c,d)||this.a&&this.a.N(a,b,c,d)||this.b&&this.b.N(a,b,c,d)?!0:this.parent.N.call(this,a,b,c,d)};m.ba=function(a,b,c,d){this.w=a;this.B=b;this.a=c;this.F=d;this.b=Ka(a,"Keyboard")};m.W=function(a,b){b||La();return!0};m.V=function(){return!0};m.ea=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<v.length;h++)if(v[h].id===f){f=v[h];break a}f=null}f||(a=!0,f=new Ja(e));Ea(f,d);a&&B(f)}}t(La);
|
||||
function Ma(a,b,c){u.call(this,"Bus",a,Ma);this.a=b;this.F=c;this.c=a.busWidth||16;this.m=Math.pow(2,this.c);this.h=this.m-1|0;this.H=16>=this.c?10:20>=this.c?12:24>=this.c?14:15;this.I=1<<this.H;this.o=this.I>>2;this.l=this.I-1;this.f=this.m/this.I|0;this.i=[];this.j=[];this.s=[];this.u=[];a=new C;Na(a,this.F);this.b=Array(this.f);for(b=0;b<this.f;b++)this.b[b]=a;a=this.a;b=this.b;c=this.H;var d=this.h;a.O=b;a.H=c;a.I=1<<a.H;a.S=a.I-1;a.Oa=b.length;a.Ga=a.Oa-1;a.Z=d;B(this)}x(Ma);
|
||||
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.H;0<c&&e<a.b.length;){var f=a.b[e],h=e*a.I,g=a.I-(b-h);g>c&&(g=c);if(f&&f.size){if(f.type==d){if(b+c<=f.oa)return f.Fa+=f.oa-b,f.oa=b,!0;if(b>=f.oa+f.Fa){g=f.size-(b-h);g>c&&(g=c);f.Fa=b-f.oa+g;b=h+a.I;c-=g;e++;continue}}return Pa(1,b,c)}b=new C(b,g,a.I,d);Na(b,a.F,f);a.b[e++]=b;b=h+a.I;c-=g}return 0>=c?!0:Pa(2,b,c)}
|
||||
Ma.prototype.D=function(a){return this.b[(a&this.h)>>>this.H].na(a&this.l,a)};function Qa(a,b,c){a.b[(b&a.h)>>>a.H].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;
|
||||
function C(a,b,c,d){this.id=Va+=2;this.a=null;this.oa=a;this.Fa=b;this.size=c||0;this.type=d||Wa;this.h=d==Xa;Na(this);this.Y=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;
|
||||
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.Y=!0}return!1},m:function(){return 255},s:function(){},o:function(a,b){return this.na(a++,b++)|this.na(a,b)<<8},v:function(a,b,c){this.xa(a++,b&255,c++);this.xa(a,b>>8,c)},C:function(a){return this.a[a>>
|
||||
2]>>>((a&3)<<3)&255},O: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},U:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.Y=!0},ga: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.Y=!0},w:function(a,b){return this.B(a,b)},H:function(a,b){return this.I(a,b)},S:function(a,b,c){this.h||this.eb(a,b,c)},Z:function(a,b,c){this.h||
|
||||
this.$(a,b,c)},u:function(a){return this.b[a]},A:function(a){return this.b[a]},G:function(a){return this.f.getUint16(a,!0)},L:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.l[a>>1]},P:function(a,b){this.b[a]=b;this.Y=!0},T:function(a,b){this.b[a]=b;this.Y=!0},X:function(a,b){this.f.setUint16(a,b,!0);this.Y=!0},fa:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.l[a>>1]=b;this.Y=!0}};function Na(a,b,c){a.F=b;a.i=a.j=0;c&&((a.i=c.i)&&bb(a,cb,!1),(a.j=c.j)&&db(a,cb,!1))}
|
||||
function db(a,b,c){c&&a.j||(a.xa=!a.h&&b[2]||a.s,a.ub=!a.h&&b[3]||a.v);if(c||void 0===c)a.eb=b[2]||a.s,a.$=b[3]||a.v}function bb(a,b,c){c&&a.i||(a.na=b[0]||a.m,a.sb=b[1]||a.o);if(c||void 0===c)a.B=b[0]||a.m,a.I=b[1]||a.o}function Ya(a,b){b||(b=eb);bb(a,b,void 0);db(a,b,void 0)}var eb=[],ab=[C.prototype.C,C.prototype.O,C.prototype.U,C.prototype.ga],cb=[C.prototype.w,C.prototype.H,C.prototype.S,C.prototype.Z];
|
||||
if(Ha)var $a=[C.prototype.u,C.prototype.G,C.prototype.P,C.prototype.X],Za=[C.prototype.A,C.prototype.L,C.prototype.T,C.prototype.fa];
|
||||
function fb(a,b){u.call(this,"CPU",a,fb);var c=a.cycles||b,d=a.multiplier||1;this.c={};this.c.ma=c;this.c.Ea=0;this.c.la=d;this.c.Ja=Math.round(this.c.ma/1E4)/100;this.c.ia=this.c.Ja*this.c.la;this.g.R=!1;this.g.Xa=!1;this.g.Va=a.autoStart;this.g.Wa=!1;this.g.ya=!1;this.c.Ca=this.c.ka=0;this.c.Da=a.csStart;this.c.qa=a.csInterval;this.c.ra=a.csStop;this.gb=this.Ma.bind(this);B(this)}x(fb);var gb=["power","reset"];m=fb.prototype;
|
||||
m.ba=function(a,b,c,d){this.w=a;this.B=b;this.F=d;for(b=0;b<gb.length;b++)(c=this.v[gb[b]])&&this.w.N(null,gb[b],c);this.X=(b=Ka(a,"Video"))&&Math.max(b.X,b.fb)||60;this.ga=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.Ea=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.M("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.v.run)&&a.Ma()}m.Ya=function(){return 0};function jb(a){void 0===a.c.Da&&(a.c.Da=0);void 0===a.c.qa&&(a.c.qa=-1);void 0===a.c.ra&&(a.c.ra=-1);a.g.ya=0<=a.c.Da&&0<a.c.qa;a.g.ya&&(a.c.Ca=0,a.c.ka=a.c.Da-a.U)}
|
||||
m.N=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.v[b]=c;a=!0;break;case "run":this.v[b]=c;c.onclick=function(){var a;if(a=d.w)if(a=d.w,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.ha);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.ha?"powered yet":"ready yet"+(b.Aa?" (waiting for notification)":""))+".");a=!1}a&&(d.g.R?mb(d,!0):d.Ma())};a=!0;break;
|
||||
case "speed":this.v[b]=c;a=!0;break;case "setSpeed":this.v[b]=c,c.onclick=function(){nb(d,d.c.la<<1)},c.textContent=this.c.ia.toFixed(2)+"Mhz",a=!0}return a};function ob(a,b,c){a.U+=b;c&&(a.T=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.la&&a.c.ca&&(d=a.c.ca/a.c.Ja);a.c.Za=Math.round(1E3/30);a.c.nb=Math.floor(a.c.ma/c*d);a.c.Ka=Math.floor(a.c.ma/30*d);a.c.ab=Math.floor(a.c.ma/a.X*d);a.c.$a=Math.floor(a.c.ma/2*d);b||(a.c.ua=a.c.Ka,a.c.ta=a.c.ab,a.c.sa=a.c.$a);a.c.La=0}function qb(a){return a.U+a.P+a.T-a.a}function ib(a){a.c.ca=0;a.U=a.P=a.T=a.a=0;jb(a);nb(a,1)}
|
||||
function nb(a,b){if(void 0!==b){.8>a.c.ca/a.c.ia&&(b=1);a.c.la=b;var c=a.c.Ja*a.c.la;if(a.c.ia!=c){a.c.ia=c;var c=a.c.ia.toFixed(2)+"Mhz",d=a.v.setSpeed;d&&(d.textContent=c);a.M("target speed: "+c)}}ob(a,a.P);a.P=0;a.c.ja=ga();a.c.da=0;pb(a)}
|
||||
m.Ma=function(){if(Fa(this,!0)){if(!this.g.R){nb(this);this.w&&this.w.start(this.c.ja,qb(this));this.g.R=!0;this.g.Xa=!0;this.ga&&this.ga.tb();var a=this.v.run;a&&(a.textContent="Halt");this.w&&this.w.ea(!0)}this.c.La>=this.c.ma&&pb(this,!0);this.c.va=0;this.c.Ba=ga();this.c.da&&(a=this.c.Ba-this.c.da,a>this.c.Za&&(this.c.ja+=a,this.c.ja>this.c.Ba&&(this.c.ja=this.c.Ba)));try{do{var b=this.g.ya?1:this.c.nb;try{this.cb(b)}catch(e){if("number"!=typeof e)throw e;}var c=this.T-this.a;this.P+=c;this.c.va+=
|
||||
c;ob(this,0,!0);a=c;if(this.g.ya){var d=!1;this.c.Ca=this.c.Ca+this.Ya()|0;this.c.ka-=a;0>=this.c.ka&&(this.c.ka+=this.c.qa,d=!0);0<=this.c.ra&&this.c.ra<=qb(this)&&(this.c.qa=this.c.ra=-1,jb(this),mb(this),d=!0);d&&this.M(qb(this)+" cycles: checksum="+n(this.c.Ca))}this.c.ta-=c;0>=this.c.ta&&(this.c.ta+=this.c.ab,this.w&&rb(this.w,this.c.Ea++),this.c.Ea>this.X&&(this.c.Ea=0));this.c.sa-=c;0>=this.c.sa&&(this.c.sa+=this.c.$a,this.w&&this.w.ea());this.c.ua-=c;if(0>=this.c.ua){this.c.ua+=this.c.Ka;
|
||||
break}}while(this.g.R)}catch(e){mb(this);kb(this);this.w&&this.w.stop(ga(),qb(this));Fa(this,!1);b=e.stack||e.message;this.g.aa=!0;this.K(b);return}b=setTimeout;c=this.gb;this.c.da=ga();a=this.c.Za;this.c.va&&(a=Math.round(a*this.c.va/this.c.Ka));a-=this.c.da-this.c.Ba;if(d=this.c.da-this.c.ja)this.c.ca=Math.round(this.P/(10*d))/100,864E5<=d&&(this.U=0,nb(this));if(0>a||this.c.ca<this.c.ia)a=0;this.c.La+=this.c.va;this.c.da+=a;b(c,a)}else kb(this),this.w&&this.w.stop(ga(),qb(this))};m.cb=function(){return 0};
|
||||
function mb(a,b){a.g.pa&&(a.g.Ia=!0);a.T-=a.a;a.a=0;ob(a,a.P);a.P=0;if(a.g.R){a.g.R=!1;a.ga&&a.ga.tb();var c=a.v.run;c&&(c.textContent="Run")}a.g.za=b}function kb(a){a.w&&(rb(a.w,-1),a.w.ea(void 0))}function sb(a){this.$=a.model||8080;fb.call(this,a,1E6);this.Pa=tb;ib(this);this.g.za=this.g.hb=!1;this.Ra=0;this.O=[];this.H=this.I=this.S=this.Oa=this.Ga=this.Z=0;this.fa=[];this.Qa=0;ub(this)}x(sb,fb);function vb(a,b){a.fa.push(b)}m=sb.prototype;
|
||||
m.reset=function(){this.g.R&&mb(this);ub(this);ib(this);this.g.aa=!1;this.parent.reset.call(this)};function ub(a){a.b=0;a.h=0;a.i=0;a.j=0;a.l=0;a.m=0;a.o=0;a.A=0;D(a,a.Qa);wb(a,0);a.G=0}function xb(a,b){a.Qa=b;D(a,b)}m.Ya=function(){var a=this.b+this.h+this.i+this.j+this.l+this.m+this.o|0;return a=a+this.A+this.u+yb(this)|0};
|
||||
m.save=function(){var a=new E(this);F(a,0,[this.b,this.h,this.i,this.j,this.l,this.m,this.o,this.A,this.u,yb(this)]);F(a,1,[this.G,this.U,this.c.la]);for(var b=this.B,c=0,d=[],e=0;e<b.f;e++){var f=b.b[e];if(f.Y||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 H=f[g],w=g+1;w<f.length&&f[w]===H;)w++;l[k++]=w-g;l[k++]=H;g=w}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.i=b[2];this.j=b[3];this.l=b[4];this.m=b[5];this.o=b[6];this.A=b[7]&65535;D(this,b[8]);wb(this,b[9]);b=a[1];this.G=b[0];this.U=b[1];nb(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.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.N=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.v[b]=c;this.Ra++;d=!0;break;default:d=this.parent.N.call(this,a,b,c)}return d};function zb(a){return a.h<<8|a.i}function Ab(a,b){a.h=b>>8&255;a.i=b&255}function Bb(a){return a.j<<8|a.l}function Cb(a,b){a.j=b>>8&255;a.l=b&255}function G(a){return a.m<<8|a.o}
|
||||
function I(a,b){a.m=b>>8&255;a.o=b&255}function D(a,b){a.u=b&65535}function J(a){return a.f&256?1:0}function Db(a){return Ia[a.s&255]?4:0}function yb(a){return a.L&-214|(a.s&128?128:0)|(a.f&255?0:64)|((a.s^a.C)&16?16:0)|Db(a)|J(a)}function wb(a,b){a.f=a.s=a.C=0;b&1&&(a.f|=256);b&4||(a.s|=1);b&16&&(a.C|=16);b&64||(a.f|=255);b&128&&(a.s^=192);a.L=a.L&-513|b&512|2}function K(a,b){a.C=a.b^b;return(a.f=a.s=a.b+b)&255}function L(a,b){a.C=a.b^b;return(a.f=a.s=a.b+b+(a.f&256?1:0))&255}
|
||||
function M(a,b){return a.f=a.s=a.C=a.b&b}function N(a,b){a.C=a.b^b;a.f=a.s=a.b-b}function Eb(a,b){a.C=b;b=(a.s=b-1)&255;a.f=a.f&-256|b;return b}function Fb(a,b){a.C=b;b=(a.s=b+1)&255;a.f=a.f&-256|b;return b}function O(a,b){return a.f=a.s=a.C=a.b|b}function P(a,b){a.C=a.b^b;return(a.f=a.s=a.b-b)&255}function Q(a,b){a.C=a.b^b;return(a.f=a.s=a.b-b-(a.f&256?1:0))&255}function R(a,b){return a.f=a.s=a.C=a.b^b}m.D=function(a){return this.O[(a&this.Z)>>>this.H].na(a&this.S,a)};
|
||||
function Gb(a,b){var c=b&a.S,d=(b&a.Z)>>>a.H;if(c<a.S)return a.O[d].sb(c,b);c=a.O[d].na(c,b);return c|=a.O[d+1&a.Ga].na(0,b+1)<<8}function S(a,b,c){a.O[(b&a.Z)>>>a.H].xa(b&a.S,c&255,b)}function Hb(a,b,c){var d=b&a.S,e=(b&a.Z)>>>a.H;d<a.S?a.O[e].ub(d,c&65535,b):(a.O[e++].xa(d,c&255,b),a.O[e&a.Ga].xa(0,c>>8&255,b+1))}function T(a){var b=a.D(a.u);D(a,a.u+1);return b}function U(a){var b=Gb(a,a.u);D(a,a.u+2);return b}function V(a){var b=Gb(a,a.A);a.A=a.A+2&65535;return b}
|
||||
function W(a,b){a.A=a.A-2&65535;Hb(a,a.A,b)}function X(a,b,c,d){d=d||2;a.v[b]&&(void 0===c&&(a.g.aa=!0,a.K("Value for "+b+" is invalid"),mb(a)),c=!a.g.R||a.g.Wa?n(c,d):"--------".substr(0,d),a.v[b].textContent!=c&&(a.v[b].textContent=c))}
|
||||
m.ea=function(a){this.Ra&&(a||!this.g.R||this.g.Wa)&&(X(this,"A",this.b),X(this,"B",this.h),X(this,"C",this.i),X(this,"BC",zb(this),4),X(this,"D",this.j),X(this,"E",this.l),X(this,"DE",Bb(this),4),X(this,"H",this.m),X(this,"L",this.o),X(this,"HL",G(this),4),X(this,"SP",this.A,4),X(this,"PC",this.u,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.v.speed)a.textContent=this.g.R&&this.c.ca?this.c.ca.toFixed(2)+
|
||||
"Mhz":"Stopped"};m.cb=function(a){this.g.za=!0;this.g.hb=!1;this.g.Xa=!1;this.T=this.a=a;do{if(a=this.G)this.G&8&&this.L&512?(a=199|(this.G&7)<<3,this.G&=-16,this.L&=-513,this.Pa[a].call(this),a=!0):a=!1,a=!a;if(a&&this.G&16){this.a=0;break}this.Pa[T(this)].call(this)}while(0<this.a);return this.g.za?this.T-this.a:void 0===this.g.za?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 Ib(){this.a-=4}
|
||||
function Jb(){D(this,U(this));this.a-=10}function Kb(){D(this,V(this));this.a-=10}function Lb(){var a=U(this);W(this,this.u);D(this,a);this.a-=17}
|
||||
var tb=[Ib,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=Fb(this,this.h);this.a-=5},function(){this.h=Eb(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},Ib,function(){var a;I(this,a=G(this)+zb(this));this.f=this.f&255|a>>8&256;this.a-=10},function(){this.b=this.D(zb(this));this.a-=7},function(){Ab(this,zb(this)-
|
||||
1);this.a-=5},function(){this.i=Fb(this,this.i);this.a-=5},function(){this.i=Eb(this,this.i);this.a-=5},function(){this.i=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},Ib,function(){Cb(this,U(this));this.a-=10},function(){S(this,Bb(this),this.b);this.a-=7},function(){Cb(this,Bb(this)+1);this.a-=5},function(){this.j=Fb(this,this.j);this.a-=5},function(){this.j=Eb(this,this.j);this.a-=5},function(){this.j=T(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},Ib,function(){var a;I(this,a=G(this)+Bb(this));this.f=this.f&255|a>>8&256;this.a-=10},function(){this.b=this.D(Bb(this));this.a-=7},function(){Cb(this,Bb(this)-1);this.a-=5},function(){this.l=Fb(this,this.l);this.a-=5},function(){this.l=Eb(this,this.l);this.a-=5},function(){this.l=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},Ib,function(){I(this,U(this));this.a-=10},function(){Hb(this,
|
||||
U(this),G(this));this.a-=16},function(){I(this,G(this)+1);this.a-=5},function(){this.m=Fb(this,this.m);this.a-=5},function(){this.m=Eb(this,this.m);this.a-=5},function(){this.m=T(this);this.a-=7},function(){var a=this.b,b=!!J(this),c=!!((this.s^this.C)&16);9<(a&15)||c?(a+=6,c=!0):c=!1;160<=a||b?(a+=96,b=!0):b=!1;this.f=this.s=this.b=a&255;this.f=b?this.f|256:this.f&-257;this.C=c?~this.s&16|this.C&-17:this.s&16|this.C&-17;this.a-=4},Ib,function(){var a;I(this,a=G(this)+G(this));this.f=this.f&255|a>>
|
||||
8&256;this.a-=10},function(){I(this,Gb(this,U(this)));this.a-=16},function(){I(this,G(this)-1);this.a-=5},function(){this.o=Fb(this,this.o);this.a-=5},function(){this.o=Eb(this,this.o);this.a-=5},function(){this.o=T(this);this.a-=7},function(){this.b=~this.b&255;this.a-=4},Ib,function(){this.A=U(this)&65535;this.a-=10},function(){S(this,U(this),this.b);this.a-=13},function(){this.A=this.A+1&65535;this.a-=5},function(){var a=G(this);S(this,a,Fb(this,this.D(a)));this.a-=10},function(){var a=G(this);
|
||||
S(this,a,Eb(this,this.D(a)));this.a-=10},function(){S(this,G(this),T(this));this.a-=10},function(){this.f|=256;this.a-=4},Ib,function(){var a;this.A=(a=G(this)+this.A)&65535;this.f=this.f&255|a>>8&256;this.a-=10},function(){this.b=this.D(U(this));this.a-=13},function(){this.A=this.A-1&65535;this.a-=5},function(){this.b=Fb(this,this.b);this.a-=5},function(){this.b=Eb(this,this.b);this.a-=5},function(){this.b=T(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.i;this.a-=5},function(){this.h=this.j;this.a-=5},function(){this.h=this.l;this.a-=5},function(){this.h=this.m;this.a-=5},function(){this.h=this.o;this.a-=5},function(){this.h=this.D(G(this));this.a-=7},function(){this.h=this.b;this.a-=5},function(){this.i=this.h;this.a-=5},function(){this.a-=5},function(){this.i=this.j;this.a-=5},function(){this.i=this.l;this.a-=5},function(){this.i=this.m;this.a-=5},function(){this.i=this.o;this.a-=5},function(){this.i=this.D(G(this));this.a-=
|
||||
7},function(){this.i=this.b;this.a-=5},function(){this.j=this.h;this.a-=5},function(){this.j=this.i;this.a-=5},function(){this.a-=5},function(){this.j=this.l;this.a-=5},function(){this.j=this.m;this.a-=5},function(){this.j=this.o;this.a-=5},function(){this.j=this.D(G(this));this.a-=7},function(){this.j=this.b;this.a-=5},function(){this.l=this.h;this.a-=5},function(){this.l=this.i;this.a-=5},function(){this.l=this.j;this.a-=5},function(){this.a-=5},function(){this.l=this.m;this.a-=5},function(){this.l=
|
||||
this.o;this.a-=5},function(){this.l=this.D(G(this));this.a-=7},function(){this.l=this.b;this.a-=5},function(){this.m=this.h;this.a-=5},function(){this.m=this.i;this.a-=5},function(){this.m=this.j;this.a-=5},function(){this.m=this.l;this.a-=5},function(){this.a-=5},function(){this.m=this.o;this.a-=5},function(){this.m=this.D(G(this));this.a-=7},function(){this.m=this.b;this.a-=5},function(){this.o=this.h;this.a-=5},function(){this.o=this.i;this.a-=5},function(){this.o=this.j;this.a-=5},function(){this.o=
|
||||
this.l;this.a-=5},function(){this.o=this.m;this.a-=5},function(){this.a-=5},function(){this.o=this.D(G(this));this.a-=7},function(){this.o=this.b;this.a-=5},function(){S(this,G(this),this.h);this.a-=7},function(){S(this,G(this),this.i);this.a-=7},function(){S(this,G(this),this.j);this.a-=7},function(){S(this,G(this),this.l);this.a-=7},function(){S(this,G(this),this.m);this.a-=7},function(){S(this,G(this),this.o);this.a-=7},function(){var a=this.u-1;if(this.fa.length)for(var b=0;b<this.fa.length;b++)if(this.fa[b](a))return;
|
||||
this.G|=16;this.a-=7;this.L&512||mb(this)},function(){S(this,G(this),this.b);this.a-=7},function(){this.b=this.h;this.a-=5},function(){this.b=this.i;this.a-=5},function(){this.b=this.j;this.a-=5},function(){this.b=this.l;this.a-=5},function(){this.b=this.m;this.a-=5},function(){this.b=this.o;this.a-=5},function(){this.b=this.D(G(this));this.a-=7},function(){this.a-=5},function(){this.b=K(this,this.h);this.a-=4},function(){this.b=K(this,this.i);this.a-=4},function(){this.b=K(this,this.j);this.a-=4},
|
||||
function(){this.b=K(this,this.l);this.a-=4},function(){this.b=K(this,this.m);this.a-=4},function(){this.b=K(this,this.o);this.a-=4},function(){this.b=K(this,this.D(G(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.i);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.m);this.a-=4},function(){this.b=L(this,this.o);this.a-=4},function(){this.b=
|
||||
L(this,this.D(G(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.i);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.m);this.a-=4},function(){this.b=P(this,this.o);this.a-=4},function(){this.b=P(this,this.D(G(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.i);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.m);this.a-=4},function(){this.b=Q(this,this.o);this.a-=4},function(){this.b=Q(this,this.D(G(this)));this.a-=7},function(){this.b=Q(this,this.b);this.a-=4},function(){this.b=M(this,this.h);this.a-=4},function(){this.b=M(this,this.i);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.m);
|
||||
this.a-=4},function(){this.b=M(this,this.o);this.a-=4},function(){this.b=M(this,this.D(G(this)));this.a-=7},function(){this.b=M(this,this.b);this.a-=4},function(){this.b=R(this,this.h);this.a-=4},function(){this.b=R(this,this.i);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.m);this.a-=4},function(){this.b=R(this,this.o);this.a-=4},function(){this.b=R(this,this.D(G(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=O(this,this.i);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.m);this.a-=4},function(){this.b=O(this,this.o);this.a-=4},function(){this.b=O(this,this.D(G(this)));this.a-=7},function(){this.b=O(this,this.b);this.a-=4},function(){N(this,this.h);this.a-=4},function(){N(this,this.i);this.a-=4},function(){N(this,this.j);this.a-=4},function(){N(this,
|
||||
this.l);this.a-=4},function(){N(this,this.m);this.a-=4},function(){N(this,this.o);this.a-=4},function(){N(this,this.D(G(this)));this.a-=7},function(){N(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},Jb,function(){var a=U(this);this.f&255&&(W(this,this.u),D(this,a),this.a-=6);this.a-=11},function(){W(this,zb(this));this.a-=11},function(){this.b=K(this,T(this));this.a-=
|
||||
7},function(){W(this,this.u);D(this,0);this.a-=11},function(){this.f&255||(D(this,V(this)),this.a-=6);this.a-=5},Kb,function(){var a=U(this);this.f&255||D(this,a);this.a-=10},Jb,function(){var a=U(this);this.f&255||(W(this,this.u),D(this,a),this.a-=6);this.a-=11},Lb,function(){this.b=L(this,T(this));this.a-=7},function(){W(this,this.u);D(this,8);this.a-=11},function(){J(this)||(D(this,V(this)),this.a-=6);this.a-=5},function(){Cb(this,V(this));this.a-=10},function(){var a=U(this);J(this)||D(this,a);
|
||||
this.a-=10},function(){for(var a=T(this),b=this.B,c=this.b,d=1,e=0;0<d;){var f=b.j[a],h=b.u[a]||1,g=1==h?255:2==h?65535:-1,g=(c>>>=e)&g;if(void 0!==f&&f[0])f[0](a,g,void 0);e+=h<<3;a+=h;d-=h}this.a-=10},function(){var a=U(this);J(this)||(W(this,this.u),D(this,a),this.a-=6);this.a-=11},function(){W(this,Bb(this));this.a-=11},function(){this.b=P(this,T(this));this.a-=7},function(){W(this,this.u);D(this,16);this.a-=11},function(){J(this)&&(D(this,V(this)),this.a-=6);this.a-=5},Kb,function(){var a=U(this);
|
||||
J(this)&&D(this,a);this.a-=10},function(){for(var a=T(this),b=this.B,c=1,d=0,e=0;0<c;){var f=b.i[a],h=b.s[a]||1,g=1==h?255:2==h?65535:-1,k=g;void 0!==f&&f[0]&&(k=f[0](a,void 0),void 0===k?k=g:k&=g);d|=k<<e;e+=h<<3;a+=h;c-=h}this.b=d&255;this.a-=10},function(){var a=U(this);J(this)&&(W(this,this.u),D(this,a),this.a-=6);this.a-=11},Lb,function(){this.b=Q(this,T(this));this.a-=7},function(){W(this,this.u);D(this,24);this.a-=11},function(){Db(this)||(D(this,V(this)),this.a-=6);this.a-=5},function(){I(this,
|
||||
V(this));this.a-=10},function(){var a=U(this);Db(this)||D(this,a);this.a-=10},function(){var a=V(this);W(this,G(this));I(this,a);this.a-=18},function(){var a=U(this);Db(this)||(W(this,this.u),D(this,a),this.a-=6);this.a-=11},function(){W(this,G(this));this.a-=11},function(){this.b=M(this,T(this));this.a-=7},function(){W(this,this.u);D(this,32);this.a-=11},function(){Db(this)&&(D(this,V(this)),this.a-=6);this.a-=5},function(){D(this,G(this));this.a-=5},function(){var a=U(this);Db(this)&&D(this,a);
|
||||
this.a-=10},function(){var a=G(this);I(this,Bb(this));Cb(this,a);this.a-=5},function(){var a=U(this);Db(this)&&(W(this,this.u),D(this,a),this.a-=6);this.a-=11},Lb,function(){this.b=R(this,T(this));this.a-=7},function(){W(this,this.u);D(this,40);this.a-=11},function(){this.s&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.s&128||D(this,a);this.a-=10},function(){this.L&=-513;this.a-=4},function(){var a=U(this);this.s&
|
||||
128||(W(this,this.u),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.u);D(this,48);this.a-=11},function(){this.s&128&&(D(this,V(this)),this.a-=6);this.a-=5},function(){this.A=G(this)&65535;this.a-=5},function(){var a=U(this);this.s&128&&D(this,a);this.a-=10},function(){this.L|=512;this.a-=4},function(){var a=U(this);this.s&128&&(W(this,this.u),D(this,a),this.a-=6);this.a-=11},Lb,function(){N(this,
|
||||
T(this));this.a-=7},function(){W(this,this.u);D(this,56);this.a-=11}];function Y(a){u.call(this,"ChipSet",a,Y);var b=a.model;b&&!Mb[b]&&q("Unrecognized ChipSet model: "+b);this.$=Mb[b];a.sound&&(this.m=null,window&&(this.m=window.AudioContext||window.webkitAudioContext),this.m&&new this.m);B(this)}x(Y);var Mb={SI1978:1978.1};m=Y.prototype;m.N=function(){return!1};
|
||||
m.ba=function(a,b,c,d){this.B=b;this.a=c;this.F=d;this.w=a;if(1978.1==this.$){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.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.b=this.c=this.l=this.j=this.i=0};m.save=function(){var a=new E(this);1978.1==this.$&&F(a,0,[this.i,this.j,this.l,this.c,this.b,this.f,this.h]);return a.data()};m.restore=function(a){a=a[0];1978.1==this.$&&(this.i=a[0],this.j=a[1],this.l=a[2],this.c=a[3],this.b=a[4],this.f=a[5],this.h=a[6]);return!0};m.kb=function(){return this.i};
|
||||
m.lb=function(){return this.j};m.mb=function(){return this.l};m.jb=function(){return this.c<<this.b>>8&255};m.ob=function(a,b){this.b=b};m.qb=function(a,b){this.f=b};m.pb=function(a,b){this.c=b};m.rb=function(a,b){this.h=b};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};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){u.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];Pb.prototype.ba=function(a,b,c,d){this.B=b;this.a=c;this.F=d;Sb(this)};
|
||||
Pb.prototype.W=function(){this.i&&(this.F&&this.F.a(this.id,this.j,this.c,this.i),delete this.i);return!0};Pb.prototype.V=function(){return!0};
|
||||
function Qb(a,b,c,d){if(d)a.K("Unable to load system ROM (error "+d+": "+b+")");else{Ca(a.Na,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,
|
||||
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=aa(b[e]);Sb(a)}}
|
||||
function Sb(a){if(!Ga(a))if(!a.h)B(a);else if(a.b&&a.B){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.aa=!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.B,h=d.c,g=[],k=d.j>>>f.H;0<h&&k<f.b.length;)g.push(f.b[k++]),h-=f.I;f=d.B;d=d.c;h=0;for(e>>>=f.H;0<d&&e<f.b.length;){k=g[h++];if(!k)break;f.b[e++]=k;d-=f.I}}delete a.b}B(a)}}
|
||||
function Tb(a,b){if(Oa(a.B,b,a.c,a.l?1:Xa)){var c;for(c=0;c<a.b.length;c++)Qa(a.B,b+c,a.b[c]);if(a.l&&256==b){for(c=0;c<Rb.length;c++)Qa(a.B,Rb[c],118);vb(a.a,function(a){return function(b){0<=Rb.indexOf(b)&&a.F&&(a.M("CP/M vector 0x"+n(b,4)),D(a.a,b),mb(a.F))}}(a));xb(a.a,b)}return!0}return!1}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 Ub(a){u.call(this,"RAM",a,Ub);this.f=a.addr;this.c=a.size;this.b=!1}x(Ub);m=Ub.prototype;
|
||||
m.ba=function(a,b,c,d){this.B=b;this.a=c;this.F=d;B(this)};m.W=function(a,b){b||this.reset();return!0};m.V=function(a){return a?this.save():!0};m.reset=function(){!this.b&&this.c&&Oa(this.B,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 Ub(d);Ea(d,c)}});
|
||||
function Vb(a){u.call(this,"Keyboard",a,Vb);B(this)}x(Vb);t(function(){for(var a=A(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Vb(d);Ea(d,c)}});function Wb(a){u.call(this,"Video",a,Wb);this.fb=a.interruptRate;this.X=a.refreshRate||60;B(this)}x(Wb);Wb.prototype.ba=function(a,b,c,d){this.w=a;this.B=b;this.a=c;this.F=d};
|
||||
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.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.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(){};
|
||||
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 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);
|
||||
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)}
|
||||
Ma.prototype.D=function(a){return this.b[(a&this.h)>>>this.G].oa(a&this.l,a)};function Ra(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;
|
||||
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;
|
||||
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},w:function(){return 255},o:function(){},m: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>>
|
||||
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},B:function(a,b){return this.C(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,
|
||||
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))}
|
||||
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.w,a.sb=b[1]||a.m);if(c||void 0===c)a.C=b[0]||a.w,a.M=b[1]||a.m}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.B,C.prototype.L,C.prototype.U,C.prototype.ga];
|
||||
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];
|
||||
function fb(a,b){v.call(this,"CPU",a,fb);var c=a.cycles||b,d=a.multiplier||1;this.b={};this.b.na=c;this.b.Ha=0;this.b.ma=d;this.b.Ka=Math.round(this.b.na/1E4)/100;this.b.ja=this.b.Ka*this.b.ma;this.g.R=!1;this.g.Xa=!1;this.g.Va=a.autoStart;this.g.Wa=!1;this.g.Ba=!1;this.b.Fa=this.b.la=0;this.b.Ga=a.csStart;this.b.sa=a.csInterval;this.b.ta=a.csStop;this.fb=this.Na.bind(this);B(this)}x(fb);var gb=["power","reset"];m=fb.prototype;
|
||||
m.ca=function(a,b,c,d){this.v=a;this.A=b;this.I=d;for(b=0;b<gb.length;b++)(c=this.w[gb[b]])&&this.v.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.b.Ha=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.b.Ga&&(a.b.Ga=0);void 0===a.b.sa&&(a.b.sa=-1);void 0===a.b.ta&&(a.b.ta=-1);a.g.Ba=0<=a.b.Ga&&0<a.b.sa;a.g.Ba&&(a.b.Fa=0,a.b.la=a.b.Ga-a.U)}
|
||||
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.v)if(a=d.v,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;
|
||||
case "speed":this.w[b]=c;a=!0;break;case "setSpeed":this.w[b]=c,c.onclick=function(){nb(d,d.b.ma<<1)},c.textContent=this.b.ja.toFixed(2)+"Mhz",a=!0}return a};function ob(a,b,c){a.U+=b;c&&(a.T=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.b.ma&&a.b.da&&(d=a.b.da/a.b.Ka);a.b.Za=Math.round(1E3/30);a.b.nb=Math.floor(a.b.na/c*d);a.b.La=Math.floor(a.b.na/30*d);a.b.ab=Math.floor(a.b.na/a.X*d);a.b.$a=Math.floor(a.b.na/2*d);b||(a.b.wa=a.b.La,a.b.va=a.b.ab,a.b.ua=a.b.$a);a.b.Ma=0}function qb(a){return a.U+a.N+a.T-a.a}function ib(a){a.b.da=0;a.U=a.N=a.T=a.a=0;jb(a);nb(a,1)}
|
||||
function nb(a,b){if(void 0!==b){.8>a.b.da/a.b.ja&&(b=1);a.b.ma=b;var c=a.b.Ka*a.b.ma;if(a.b.ja!=c){a.b.ja=c;var c=a.b.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.b.ka=ga();a.b.ea=0;pb(a)}
|
||||
m.Na=function(){if(Fa(this,!0)){if(!this.g.R){nb(this);this.v&&this.v.start(this.b.ka,qb(this));this.g.R=!0;this.g.Xa=!0;this.ha&&this.ha.tb();var a=this.w.run;a&&(a.textContent="Halt");this.v&&this.v.fa(!0)}this.b.Ma>=this.b.na&&pb(this,!0);this.b.xa=0;this.b.Ea=ga();this.b.ea&&(a=this.b.Ea-this.b.ea,a>this.b.Za&&(this.b.ka+=a,this.b.ka>this.b.Ea&&(this.b.ka=this.b.Ea)));try{do{var b=this.g.Ba?1:this.b.nb;try{this.cb(b)}catch(e){if("number"!=typeof e)throw e;}var c=this.T-this.a;this.N+=c;this.b.xa+=
|
||||
c;ob(this,0,!0);a=c;if(this.g.Ba){var d=!1;this.b.Fa=this.b.Fa+this.Ya()|0;this.b.la-=a;0>=this.b.la&&(this.b.la+=this.b.sa,d=!0);0<=this.b.ta&&this.b.ta<=qb(this)&&(this.b.sa=this.b.ta=-1,jb(this),mb(this),d=!0);d&&this.O(qb(this)+" cycles: checksum="+n(this.b.Fa))}this.b.va-=c;0>=this.b.va&&(this.b.va+=this.b.ab,this.v&&rb(this.v,this.b.Ha++),this.b.Ha>this.X&&(this.b.Ha=0));this.b.ua-=c;0>=this.b.ua&&(this.b.ua+=this.b.$a,this.v&&this.v.fa());this.b.wa-=c;if(0>=this.b.wa){this.b.wa+=this.b.La;
|
||||
break}}while(this.g.R)}catch(e){mb(this);kb(this);this.v&&this.v.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.b.ea=ga();a=this.b.Za;this.b.xa&&(a=Math.round(a*this.b.xa/this.b.La));a-=this.b.ea-this.b.Ea;if(d=this.b.ea-this.b.ka)this.b.da=Math.round(this.N/(10*d))/100,864E5<=d&&(this.U=0,nb(this));if(0>a||this.b.da<this.b.ja)a=0;this.b.Ma+=this.b.xa;this.b.ea+=a;b(c,a)}else kb(this),this.v&&this.v.stop(ga(),qb(this))};m.cb=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.tb();var c=a.w.run;c&&(c.textContent="Run")}a.g.Ca=b}function kb(a){a.v&&(rb(a.v,-1),a.v.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;
|
||||
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.c=0;a.h=0;a.s=0;a.i=0;a.u=0;a.j=0;a.l=0;a.C=0;E(a,a.Pa);wb(a,0);a.F=0}function xb(a,b){a.Pa=b;E(a,b)}m.Ya=function(){var a=this.c+this.h+this.s+this.i+this.u+this.j+this.l|0;return a=a+this.C+this.o+yb(this)|0};
|
||||
m.save=function(){var a=new F(this);G(a,0,[this.c,this.h,this.s,this.i,this.u,this.j,this.l,this.C,this.o,yb(this)]);G(a,1,[this.F,this.U,this.b.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,l=0,k=[];g<f.length;){for(var D=f[g],u=g+1;u<f.length&&f[u]===D;)u++;k[l++]=u-g;k[l++]=D;g=u}if(k.length<f.length){f=k;break a}}d[h]=f}}G(a,2,d);return a.data()};
|
||||
m.restore=function(a){var b=a[0];this.c=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;E(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 l=e[g++],k=e[g++];l--;)h[f++]=k;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}
|
||||
function J(a,b){a.j=b>>8&255;a.l=b&255}function E(a,b){a.o=b&65535}function K(a){return a.f&256?1:0}function Cb(a){return Ia[a.m&255]?4:0}function yb(a){return a.L&-214|(a.m&128?128:0)|(a.f&255?0:64)|((a.m^a.B)&16?16:0)|Cb(a)|K(a)}function wb(a,b){a.f=a.m=a.B=0;b&1&&(a.f|=256);b&4||(a.m|=1);b&16&&(a.B|=16);b&64||(a.f|=255);b&128&&(a.m^=192);a.L=a.L&-513|b&512|2}function L(a,b){a.B=a.c^b;return a.m=(a.f=a.c+b)&255}function M(a,b){a.B=a.c^b;return a.m=(a.f=a.c+b+(a.f&256?1:0))&255}
|
||||
function N(a,b){a.f=a.m=a.B=a.c&b;(a.c|b)&8&&(a.B^=16);return a.f}function Db(a,b){a.B=b^255;b=a.m=b+255&255;a.f=a.f&-256|b;return b}function Eb(a,b){a.B=b;b=a.m=b+1&255;a.f=a.f&-256|b;return b}function O(a,b){return a.m=a.f=a.B=a.c|b}function P(a,b){b^=255;a.B=a.c^b;return a.m=(a.f=a.c+b+1^256)&255}function Q(a,b){b^=255;a.B=a.c^b;return a.m=(a.f=a.c+b+(a.f&256?0:1)^256)&255}function R(a,b){return a.m=a.f=a.B=a.c^b}m.D=function(a){return this.M[(a&this.$)>>>this.G].oa(a&this.S,a)};
|
||||
function Fb(a,b){var c=b&a.S,d=(b&a.$)>>>a.G;if(c<a.S)return a.M[d].sb(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.D(a.o);E(a,a.o+1);return b}function U(a){var b=Fb(a,a.o);E(a,a.o+2);return b}function V(a){var b=Fb(a,a.C);a.C=a.C+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))}
|
||||
m.fa=function(a){this.Qa&&(a||!this.g.R||this.g.Wa)&&(X(this,"A",this.c),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.o,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.b.da?this.b.da.toFixed(2)+
|
||||
"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}
|
||||
function Ib(){E(this,U(this));this.a-=10}function Jb(){E(this,V(this));this.a-=10}function Kb(){var a=U(this);W(this,this.o);E(this,a);this.a-=17}
|
||||
var tb=[Hb,function(){Ab(this,U(this));this.a-=10},function(){S(this,zb(this),this.c);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.c<<1;this.c=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.c=this.D(zb(this));this.a-=7},function(){Ab(this,zb(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.c<<8&256;this.c=(a|this.c)>>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.c);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.c<<
|
||||
1;this.c=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.c=this.D(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.c<<8&256;this.c=(this.f&256|this.c)>>1;this.f=this.f&255|a;this.a-=4},Hb,function(){J(this,U(this));this.a-=10},function(){Gb(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=this.c,b=!!K(this),c=!!((this.m^this.B)&16);9<(a&15)||c?(a+=6,c=!0):c=!1;160<=a||b?(a+=96,b=!0):b=!1;this.f=this.m=this.c=a&255;this.f=b?this.f|256:this.f&-257;this.B=c?~this.m&16|this.B&-17:this.m&16|this.B&-17;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,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.c=~this.c&255;this.a-=4},Hb,function(){this.C=U(this)&65535;this.a-=10},function(){S(this,U(this),this.c);this.a-=13},function(){this.C=this.C+1&65535;this.a-=5},function(){var a=I(this);S(this,a,Eb(this,this.D(a)));this.a-=10},function(){var a=I(this);
|
||||
S(this,a,Db(this,this.D(a)));this.a-=10},function(){S(this,I(this),T(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.c=this.D(U(this));this.a-=13},function(){this.C=this.C-1&65535;this.a-=5},function(){this.c=Eb(this,this.c);this.a-=5},function(){this.c=Db(this,this.c);this.a-=5},function(){this.c=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=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.D(I(this));this.a-=7},function(){this.h=this.c;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.D(I(this));this.a-=
|
||||
7},function(){this.s=this.c;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.D(I(this));this.a-=7},function(){this.i=this.c;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.D(I(this));this.a-=7},function(){this.u=this.c;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.D(I(this));this.a-=7},function(){this.j=this.c;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.D(I(this));this.a-=7},function(){this.l=this.c;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.o-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.c);this.a-=7},function(){this.c=this.h;this.a-=5},function(){this.c=this.s;this.a-=5},function(){this.c=this.i;this.a-=5},function(){this.c=this.u;this.a-=5},function(){this.c=this.j;this.a-=5},function(){this.c=this.l;this.a-=5},function(){this.c=this.D(I(this));this.a-=7},function(){this.a-=5},function(){this.c=L(this,this.h);this.a-=4},function(){this.c=L(this,this.s);this.a-=4},function(){this.c=L(this,this.i);this.a-=4},
|
||||
function(){this.c=L(this,this.u);this.a-=4},function(){this.c=L(this,this.j);this.a-=4},function(){this.c=L(this,this.l);this.a-=4},function(){this.c=L(this,this.D(I(this)));this.a-=7},function(){this.c=L(this,this.c);this.a-=4},function(){this.c=M(this,this.h);this.a-=4},function(){this.c=M(this,this.s);this.a-=4},function(){this.c=M(this,this.i);this.a-=4},function(){this.c=M(this,this.u);this.a-=4},function(){this.c=M(this,this.j);this.a-=4},function(){this.c=M(this,this.l);this.a-=4},function(){this.c=
|
||||
M(this,this.D(I(this)));this.a-=7},function(){this.c=M(this,this.c);this.a-=4},function(){this.c=P(this,this.h);this.a-=4},function(){this.c=P(this,this.s);this.a-=4},function(){this.c=P(this,this.i);this.a-=4},function(){this.c=P(this,this.u);this.a-=4},function(){this.c=P(this,this.j);this.a-=4},function(){this.c=P(this,this.l);this.a-=4},function(){this.c=P(this,this.D(I(this)));this.a-=7},function(){this.c=P(this,this.c);this.a-=4},function(){this.c=Q(this,this.h);this.a-=4},function(){this.c=
|
||||
Q(this,this.s);this.a-=4},function(){this.c=Q(this,this.i);this.a-=4},function(){this.c=Q(this,this.u);this.a-=4},function(){this.c=Q(this,this.j);this.a-=4},function(){this.c=Q(this,this.l);this.a-=4},function(){this.c=Q(this,this.D(I(this)));this.a-=7},function(){this.c=Q(this,this.c);this.a-=4},function(){this.c=N(this,this.h);this.a-=4},function(){this.c=N(this,this.s);this.a-=4},function(){this.c=N(this,this.i);this.a-=4},function(){this.c=N(this,this.u);this.a-=4},function(){this.c=N(this,this.j);
|
||||
this.a-=4},function(){this.c=N(this,this.l);this.a-=4},function(){this.c=N(this,this.D(I(this)));this.a-=7},function(){this.c=N(this,this.c);this.a-=4},function(){this.c=R(this,this.h);this.a-=4},function(){this.c=R(this,this.s);this.a-=4},function(){this.c=R(this,this.i);this.a-=4},function(){this.c=R(this,this.u);this.a-=4},function(){this.c=R(this,this.j);this.a-=4},function(){this.c=R(this,this.l);this.a-=4},function(){this.c=R(this,this.D(I(this)));this.a-=7},function(){this.c=R(this,this.c);
|
||||
this.a-=4},function(){this.c=O(this,this.h);this.a-=4},function(){this.c=O(this,this.s);this.a-=4},function(){this.c=O(this,this.i);this.a-=4},function(){this.c=O(this,this.u);this.a-=4},function(){this.c=O(this,this.j);this.a-=4},function(){this.c=O(this,this.l);this.a-=4},function(){this.c=O(this,this.D(I(this)));this.a-=7},function(){this.c=O(this,this.c);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(){P(this,this.l);this.a-=4},function(){P(this,this.D(I(this)));this.a-=7},function(){P(this,this.c);this.a-=4},function(){this.f&255&&(E(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&&E(this,a);this.a-=10},Ib,function(){var a=U(this);this.f&255&&(W(this,this.o),E(this,a),this.a-=6);this.a-=11},function(){W(this,zb(this));this.a-=11},function(){this.c=L(this,T(this));this.a-=
|
||||
7},function(){W(this,this.o);E(this,0);this.a-=11},function(){this.f&255||(E(this,V(this)),this.a-=6);this.a-=5},Jb,function(){var a=U(this);this.f&255||E(this,a);this.a-=10},Ib,function(){var a=U(this);this.f&255||(W(this,this.o),E(this,a),this.a-=6);this.a-=11},Kb,function(){this.c=M(this,T(this));this.a-=7},function(){W(this,this.o);E(this,8);this.a-=11},function(){K(this)||(E(this,V(this)),this.a-=6);this.a-=5},function(){Bb(this,V(this));this.a-=10},function(){var a=U(this);K(this)||E(this,a);
|
||||
this.a-=10},function(){for(var a=T(this),b=this.A,c=this.c,d=1,e=0;0<d;){var f=b.j[a],h=b.A[a]||1,g=1==h?255:2==h?65535:-1,g=(c>>>=e)&g;if(void 0!==f&&f[0])f[0](a,g,void 0);e+=h<<3;a+=h;d-=h}this.a-=10},function(){var a=U(this);K(this)||(W(this,this.o),E(this,a),this.a-=6);this.a-=11},function(){W(this,H(this));this.a-=11},function(){this.c=P(this,T(this));this.a-=7},function(){W(this,this.o);E(this,16);this.a-=11},function(){K(this)&&(E(this,V(this)),this.a-=6);this.a-=5},Jb,function(){var a=U(this);
|
||||
K(this)&&E(this,a);this.a-=10},function(){for(var a=T(this),b=this.A,c=1,d=0,e=0;0<c;){var f=b.i[a],h=b.v[a]||1,g=1==h?255:2==h?65535:-1,l=g;void 0!==f&&f[0]&&(l=f[0](a,void 0),void 0===l?l=g:l&=g);d|=l<<e;e+=h<<3;a+=h;c-=h}this.c=d&255;this.a-=10},function(){var a=U(this);K(this)&&(W(this,this.o),E(this,a),this.a-=6);this.a-=11},Kb,function(){this.c=Q(this,T(this));this.a-=7},function(){W(this,this.o);E(this,24);this.a-=11},function(){Cb(this)||(E(this,V(this)),this.a-=6);this.a-=5},function(){J(this,
|
||||
V(this));this.a-=10},function(){var a=U(this);Cb(this)||E(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.o),E(this,a),this.a-=6);this.a-=11},function(){W(this,I(this));this.a-=11},function(){this.c=N(this,T(this));this.a-=7},function(){W(this,this.o);E(this,32);this.a-=11},function(){Cb(this)&&(E(this,V(this)),this.a-=6);this.a-=5},function(){E(this,I(this));this.a-=5},function(){var a=U(this);Cb(this)&&E(this,a);
|
||||
this.a-=10},function(){var a=I(this);J(this,H(this));Bb(this,a);this.a-=5},function(){var a=U(this);Cb(this)&&(W(this,this.o),E(this,a),this.a-=6);this.a-=11},Kb,function(){this.c=R(this,T(this));this.a-=7},function(){W(this,this.o);E(this,40);this.a-=11},function(){this.m&128||(E(this,V(this)),this.a-=6);this.a-=5},function(){var a=V(this);wb(this,a);this.c=a>>8;this.a-=10},function(){var a=U(this);this.m&128||E(this,a);this.a-=10},function(){this.L&=-513;this.a-=4},function(){var a=U(this);this.m&
|
||||
128||(W(this,this.o),E(this,a),this.a-=6);this.a-=11},function(){W(this,yb(this)&255|this.c<<8);this.a-=11},function(){this.c=O(this,T(this));this.a-=7},function(){W(this,this.o);E(this,48);this.a-=11},function(){this.m&128&&(E(this,V(this)),this.a-=6);this.a-=5},function(){this.C=I(this)&65535;this.a-=5},function(){var a=U(this);this.m&128&&E(this,a);this.a-=10},function(){this.L|=512;this.a-=4},function(){var a=U(this);this.m&128&&(W(this,this.o),E(this,a),this.a-=6);this.a-=11},Kb,function(){P(this,
|
||||
T(this));this.a-=7},function(){W(this,this.o);E(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];a.sound&&(this.m=null,window&&(this.m=window.AudioContext||window.webkitAudioContext),this.m&&new this.m);B(this)}x(Y);var Lb={SI1978:1978.1};m=Y.prototype;m.P=function(){return!1};
|
||||
m.ca=function(a,b,c,d){this.A=b;this.a=c;this.I=d;this.v=a;if(1978.1==this.aa){var e;a=Mb;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 l;e=Nb;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.j[d]?q("Output port 0x"+n(d,4)+" already registered"):f.j[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.b=this.c=this.l=this.j=this.i=0};m.save=function(){var a=new F(this);1978.1==this.aa&&G(a,0,[this.i,this.j,this.l,this.c,this.b,this.f,this.h]);return a.data()};m.restore=function(a){a=a[0];1978.1==this.aa&&(this.i=a[0],this.j=a[1],this.l=a[2],this.c=a[3],this.b=a[4],this.f=a[5],this.h=a[6]);return!0};m.kb=function(){return this.i};
|
||||
m.lb=function(){return this.j};m.mb=function(){return this.l};m.jb=function(){return this.c<<this.b>>8&255};m.ob=function(a,b){this.b=b};m.qb=function(a,b){this.f=b};m.pb=function(a,b){this.c=b};m.rb=function(a,b){this.h=b};var Mb={0:Y.prototype.kb,1:Y.prototype.lb,2:Y.prototype.mb,3:Y.prototype.jb},Nb={2:Y.prototype.ob,3:Y.prototype.qb,4:Y.prototype.pb,5:Y.prototype.rb};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 Ob(a){v.call(this,"ROM",a,Ob);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){Pb(c,a,b,f)})}}x(Ob);var Qb=[0,5];Ob.prototype.ca=function(a,b,c,d){this.A=b;this.a=c;this.I=d;Rb(this)};
|
||||
Ob.prototype.W=function(){this.i&&(this.I&&this.I.a(this.id,this.j,this.c,this.i),delete this.i);return!0};Ob.prototype.V=function(){return!0};
|
||||
function Pb(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,
|
||||
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=aa(b[e]);Rb(a)}}
|
||||
function Rb(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(Sb(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=[],l=d.j>>>f.G;0<h&&l<f.b.length;)g.push(f.b[l++]),h-=f.H;f=d.A;d=d.c;h=0;for(e>>>=f.G;0<d&&e<f.b.length;){l=g[h++];if(!l)break;f.b[e++]=l;d-=f.H}}delete a.b}B(a)}}
|
||||
function Sb(a,b){if(Oa(a.A,b,a.c,a.l?1:Xa)){var c;for(c=0;c<a.b.length;c++)Ra(a.A,b+c,a.b[c]);if(a.l&&256==b){for(c=0;c<Qb.length;c++)Ra(a.A,Qb[c],118);vb(a.a,function(a){return function(b){if(0<=Qb.indexOf(b)){var c=!1,h=a.a,g=a.I;if(5==b)switch(c=!0,h.s){case 2:Tb(a,String.fromCharCode(h.u));break;case 9:for(var l=H(h),k="",D=255;D--;){var u=a.a.D(l++);if(36==u)break;k+=String.fromCharCode(u)}Tb(a,k);break;default:c=!1}c?Jb.call(h):g&&(a.O("\nCP/M vector 0x"+n(b,4)),E(h,b),mb(g));b=!0}else b=!1;
|
||||
return b}}(a));xb(a.a,b)}return!0}return!1}function Tb(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 Ob(d);Ea(d,c)}});function Ub(a){v.call(this,"RAM",a,Ub);this.f=a.addr;this.c=a.size;this.b=!1}x(Ub);m=Ub.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};
|
||||
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 Ub(d);Ea(d,c)}});function Vb(a){v.call(this,"Keyboard",a,Vb);B(this)}x(Vb);t(function(){for(var a=A(document,"pc8080","keyboard"),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,"Video",a,Wb);this.gb=a.interruptRate;this.X=a.refreshRate||60;B(this)}x(Wb);Wb.prototype.ca=function(a,b,c,d){this.v=a;this.A=b;this.a=c;this.I=d};
|
||||
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 <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(c.onresize=function(a,
|
||||
b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||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 Wb(d);Ea(d,c)}});
|
||||
function E(a,b,c){this.id=a.id;this.key=Xb(a,b,c);this.F=a.F;Yb(this,a.bb)}function Xb(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}
|
||||
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){Yb(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 Yb(a,b){a[a.id]={};b&&F(a,"parms",b);a.a=!1}function Zb(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 $b(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){q(c.message||c),b=!1}return b}function ac(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 bc(a,b){return a[a.id][b]||null}function F(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function cc(a,b,c){u.call(this,"Computer",a,cc);this.g.J=!1;dc(this,b);this.w=hb(this,"autoPower",a);this.f=0;this.I=a.busWidth||a.buswidth;this.b=ec;this.o=null;this.j=this.H=!1;this.L=hb(this,"url")||"";(Math.random()+.1).toString(36);this.c=fc(this);if(this.a=Da("CPU",this.id)){this.F=Da("Debugger",this.id);this.u=[];for(b=null;b=Ka(this,"Video",b);)this.u.push(b);this.B=new Ma({id:this.Na+".bus",busWidth:this.I},this.a,this.F);var d,e=y(this.id);if((this.h=Da("Panel",this.id))&&this.h.Ha)for(b=
|
||||
0;b<e.length;b++)d=e[b],d.K=this.h.K,d.M=this.h.M,d.Ha=this.h.Ha;for(b=0;b<e.length;b++)d=e[b],d.ba&&d.ba(this,this.B,this.a,this.F);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.A=a,f||(this.j=!0,this.b=ec),this.b&&(this.s=new E(this,Z),ac(this.s)?b=null:delete this.s);!b&&this.b&&(b=gc(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 "+
|
||||
c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(h.o=b,h.H=!0);B(h)})}else B(this);this.v.power||(this.w=!0);!c&&this.w&&hc(this,this.wa)}else q("Unable to find CPU component")}x(cc);var Z="1.21.7",ec=0;function dc(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 F(a,b,c){this.id=a.id;this.key=Xb(a,b,c);this.I=a.I;Yb(this,a.bb)}function Xb(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}
|
||||
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){Yb(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 Yb(a,b){a[a.id]={};b&&G(a,"parms",b);a.a=!1}function Zb(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 $b(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){q(c.message||c),b=!1}return b}function ac(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 bc(a,b){return a[a.id][b]||null}function G(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function cc(a,b,c){v.call(this,"Computer",a,cc);this.g.J=!1;dc(this,b);this.C=hb(this,"autoPower",a);this.f=0;this.M=a.busWidth||a.buswidth;this.b=ec;this.o=null;this.j=this.L=!1;this.N=hb(this,"url")||"";(Math.random()+.1).toString(36);this.c=fc(this);if(this.a=Da("CPU",this.id)){this.I=Da("Debugger",this.id);this.B=[];for(b=null;b=Ka(this,"Video",b);)this.B.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=
|
||||
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=ec),this.b&&(this.v=new F(this,Z),ac(this.v)?b=null:delete this.v);!b&&this.b&&(b=gc(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 "+
|
||||
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.C=!0);!c&&this.C&&hc(this,this.ya)}else q("Unable to find CPU component")}x(cc);var Z="1.21.7",ec=0;function dc(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 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 hc(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(){hc(a,b,c)});return}}b.call(a,c)}
|
||||
function ic(a,b){var c=new E(a,Z,"validate");if(ac(c)&&$b(c)){var d=bc(c,"timestamp"),e=b?bc(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=cc.prototype;
|
||||
m.wa=function(a){void 0===a&&(a=this.b||(this.o?1:ec));if(!this.f){this.f++;var b=!1,c=!1;this.G=!1;var d=this.s||new E(this,Z);if(-1==a)b=!0;else if(a>ec){if(ac(d,this.o)){this.i=new E(this,Z,"failsafe");ac(this.i)&&(jc(this,d),a=2,Yb(this.i));F(this.i,"timestamp",ha());Zb(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=$b(d)){var f=bc(d,"code"),h=bc(d,"data");f&&("ok"==f?ac(d,h):("error"==f&&"no machine state"!=
|
||||
h?(this.K("Error: "+h),"unable to verify user"==h&&(na("user",""),this.c=null)):this.M(f+": "+h),Yb(d),ac(d)?(c=$b(d),e=!0):c=!1))}e&&ic(this,c?d:null)}else 2==a&&d.clear()}else ic(this);delete this.o;delete this.s}e=y(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.a&&(c=kc(this,h,d,b,c));b=[d,a,c];-1!=a?hc(this,this.Ua,b):this.Ua(b)}};
|
||||
function kc(a,b,c,d,e){if(!b.g.J){b.g.J=!0;if(b.W){var f=null;e&&((f=bc(c,b.id))||(f=bc(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.A&&!a.H?(c.clear(),a.b=ec,window&&window.location.reload()):a.G=!0,b.W(null),e=!1)}if(!d&&b.Sa)for(a=b.Sa.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
m.Ua=function(a){var b=a[0],c=0>a[1];a=a[2];this.g.J=!0;var d=this.v.power;d&&(d.textContent="Shutdown");this.C||(this.M("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.C=!0);this.a&&(kc(this,this.a,b,c,a),lb(this.a));this.G&&(jc(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0};
|
||||
function jc(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.L,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 lc(a,b,c){var d,e="none";if(a.f)return null;a.f--;var f=new E(a,Z),h=new E(a,Z,"validate"),g=ha();F(h,"timestamp",g);F(f,"timestamp",g);F(f,"version","1.21.7");F(f,"url",window?window.location.href:null);F(f,"browser",window?window.navigator.userAgent:"");a.a&&a.a.V&&(c&&mb(a.a),d=a.a.V(b,c),"object"===typeof d&&F(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&&F(f,l.id,d)),c&&(l.g.J=!1,!1===d&&(e=
|
||||
null)))}e&&(c?(g=d=!1,b?(a.c&&mc(a,a.c,f.toString()),Zb(h)&&Zb(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.v.power)&&(b.textContent="Power");a.f=0;return e}m.reset=function(){this.B&&this.B.reset&&this.B.reset();for(var a=y(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.B&&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 ic(a,b){var c=new F(a,Z,"validate");if(ac(c)&&$b(c)){var d=bc(c,"timestamp"),e=b?bc(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=cc.prototype;
|
||||
m.ya=function(a){void 0===a&&(a=this.b||(this.o?1:ec));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>ec){if(ac(d,this.o)){this.i=new F(this,Z,"failsafe");ac(this.i)&&(jc(this,d),a=2,Yb(this.i));G(this.i,"timestamp",ha());Zb(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=$b(d)){var f=bc(d,"code"),h=bc(d,"data");f&&("ok"==f?ac(d,h):("error"==f&&"no machine state"!=
|
||||
h?(this.K("Error: "+h),"unable to verify user"==h&&(na("user",""),this.c=null)):this.O(f+": "+h),Yb(d),ac(d)?(c=$b(d),e=!0):c=!1))}e&&ic(this,c?d:null)}else 2==a&&d.clear()}else ic(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=kc(this,h,d,b,c));b=[d,a,c];-1!=a?hc(this,this.Ua,b):this.Ua(b)}};
|
||||
function kc(a,b,c,d,e){if(!b.g.J){b.g.J=!0;if(b.W){var f=null;e&&((f=bc(c,b.id))||(f=bc(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=ec,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.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&&(kc(this,this.a,b,c,a),lb(this.a));this.H&&(jc(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0};
|
||||
function jc(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 lc(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.21.7");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),l=0;l<g.length;l++){var k=g[l];k.g.J&&(k.V&&(d=k.V(b,c),"object"===typeof d&&G(f,k.id,d)),c&&(k.g.J=!1,!1===d&&(e=
|
||||
null)))}e&&(c?(g=d=!1,b?(a.c&&mc(a,a.c,f.toString()),Zb(h)&&Zb(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)}};
|
||||
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)}};
|
||||
m.N=function(a,b,c){var d=this;switch(b){case "power":return this.v[b]=c,c.onclick=function(){d.f||(d.g.J?lc(d,!1,!0):hc(d,d.wa))},!0;case "reset":return this.v[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.");lc(d,a,!0);!a&&d.A?window&&window.location.reload():d.wa(ec)}else d.reset(),d.a&&lb(d.a)},!0;case "save":if(da(ia(),"pcjs.org")){c.parentNode.removeChild(c);break}this.v[b]=
|
||||
c;c.onclick=function(){var a=fc(d,!0);if(a){var b=!!(d.b&&!d.m||d.A),c=lc(d,b);b?mc(d,a,c):d.K("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
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?lc(d,!1,!0):hc(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.");lc(d,a,!0);!a&&d.F?window&&window.location.reload():d.ya(ec)}else d.reset(),d.a&&lb(d.a)},!0;case "save":if(da(ia(),"pcjs.org")){c.parentNode.removeChild(c);break}this.w[b]=
|
||||
c;c.onclick=function(){var a=fc(d,!0);if(a){var b=!!(d.b&&!d.m||d.F),c=lc(d,b);b?mc(d,a,c):d.K("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function fc(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=nc(a,c))||a.K("The user ID is invalid."))):b&&a.K("Browser local storage is not available"));return c}
|
||||
function nc(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 gc(a){var b=null;a.c&&(b=ia()+"/api/v1/user?req=load&user="+a.c+"&state="+Xb(a,Z));return b}
|
||||
function mc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Xb(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 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.ea=function(a){this.a&&this.a.ea(a);this.h&&this.h.ea(a)};function rb(a,b){for(var c=0;c<a.u.length;c++){var d=a.u[c];b&1?(d=d.a,d.G=d.G&-8|10):(d=d.a,d.G=d.G&-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 cc(h,d,!0);Ea(h,f);h.w&&hc(h,h.wa)}});
|
||||
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.C&&!c.g.J&&c.wa(-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&&lc(c,!(!c.b||c.m),!0)}});var oc=0;function pc(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)):qc(g,a,b,c,d,e,f)})}
|
||||
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.B.length;c++){var d=a.B[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 cc(h,d,!0);Ea(h,f);h.C&&hc(h,h.ya)}});
|
||||
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&&lc(c,!(!c.b||c.m),!0)}});var oc=0;function pc(a,b,c,d,e,f){e("Loading "+a+"...");p(a,null,!0,function(h,g,l){l?(g||(g="unable to load "+a+" ("+l+")"),f(g,null)):qc(g,a,b,c,d,e,f)})}
|
||||
function qc(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"));
|
||||
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(w){g=null,a=w.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?rc(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function rc(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,H=/( [a-z]+=)(['"])(.*?)\2/g;l=H.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(u){g=null,a=u.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?rc(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function rc(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 l=g[0],k,D=/( [a-z]+=)(['"])(.*?)\2/g;k=D.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]*/,
|
||||
"");a=a.replace(d[0],h);rc(a,b,c)}})}else c(a,null)}
|
||||
function sc(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&&(--oc||ta(!0));k=!1}var h,g,k=!0;oc++;Ba[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var H=document.head||document.getElementsByTagName("head")[0],w=document.createElement("style");w.type="text/css";w.styleSheet?w.styleSheet.cssText=l:w.appendChild(document.createTextNode(l));H.appendChild(w)}c||
|
||||
(c="/versions/pc8080/1.21.7/components.xsl");l=function(d,g){g?pc(c,null,null,!1,e,function(d,k){if(k)if(Ca(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--oc||ta(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--oc||ta(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?pc(b,a,d,!0,e,l):qc(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 sc(a,b,c,d)};window.enableEvents=ta;window.sendEvent=ua;
|
||||
function sc(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);l&&(--oc||ta(!0));l=!1}var h,g,l=!0;oc++;Ba[a]={};try{if(h=document.getElementById(a)){var k;if("object"==typeof resources&&(k=resources.css)){var D=document.head||document.getElementsByTagName("head")[0],u=document.createElement("style");u.type="text/css";u.styleSheet?u.styleSheet.cssText=k:u.appendChild(document.createTextNode(k));D.appendChild(u)}c||
|
||||
(c="/versions/pc8080/1.21.7/components.xsl");k=function(d,g){g?pc(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,--oc||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),--oc||ta(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?pc(b,a,d,!0,e,k):qc(b,null,a,d,!1,e,k)}else f("missing machine element: "+a)}catch(Qa){f(Qa.message)}return l}window.embedPC8080=function(a,b,c,d){ta(!1);return sc(a,b,c,d)};window.enableEvents=ta;window.sendEvent=ua;
|
||||
function tc(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){uc(b,d)}):uc(null,d)}else q("Error ("+c+") requesting "+a)}
|
||||
function uc(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 H=g[l],w=ca(l);if("xml"==w){for(w=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=w.exec(g[l]);){var Ra=d[2];Ra&&(g[Ra]||(H=H.replace(d[0],"")))}d=l=ba(l)}else"xsl"==w&&(e=l=ba(l));k[l]=H}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,
|
||||
"©"),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 uc(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],l={},k;for(k in g){var D=g[k],u=ca(k);if("xml"==u){for(u=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=u.exec(g[k]);){var Qa=d[2];Qa&&(g[Qa]||(D=D.replace(d[0],"")))}d=k=ba(k)}else"xsl"==u&&(e=k=ba(k));l[k]=D}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,
|
||||
"©"),k=h,g=null,l="data:application/javascript,",l=oa("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.",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=lc(d,!0),h=d.l?JSON.stringify(d.l):null;b||(b="/versions/pcjs/1.21.7/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,bb:h}))return!0;p(b,null,!0,function(c,d,e){tc(c,d,e,[a,ba(b,!0),h,f])});return!0}q("Unable to identify machine '"+a+"'");return!1};})();
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue