|
|
|
|
@ -1,206 +1,206 @@
|
|
|
|
|
(function(){var m;function aa(a,b){var c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c}
|
|
|
|
|
function q(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function r(a){return"0x"+q(a,4)}function ca(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0<d&&(c=c.substr(0,d));b&&(d=c.lastIndexOf("."),0<d&&(c=c.substring(0,d)));return c}function da(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
|
|
|
|
|
function ea(a,b){return-1!==a.indexOf(b,a.length-b.length)}var fa={"&":"&","<":"<",">":">",'"':""","'":"'"};function ga(a){return a.replace(/[&<>"']/g,function(a){return fa[a]})}function ha(a,b){return(a+" ").slice(0,b)}function ia(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
|
|
|
|
|
function ja(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var h=d+e>>1,g;g=c(b,a[h]);0<g?d=h+1:(e=h,f=!g)}return f?d:~d}var ka=Date.now||function(){return+new Date};function la(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
|
|
|
|
|
function q(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function r(a){return"0x"+q(a,4)}function ba(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0<d&&(c=c.substr(0,d));b&&(d=c.lastIndexOf("."),0<d&&(c=c.substring(0,d)));return c}function ca(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
|
|
|
|
|
function 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]})}function ga(a,b){return(a+" ").slice(0,b)}function ha(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
|
|
|
|
|
function ia(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var h=d+e>>1,g;g=c(b,a[h]);0<g?d=h+1:(e=h,f=!g)}return f?d:~d}var ja=Date.now||function(){return+new Date};function la(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
|
|
|
|
|
function ma(a,b){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;c<d;c++)if(c in a&&a[c]===b)return c;return-1}
|
|
|
|
|
function na(a,b,c,d){var e=0,f=null,h=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),d&&d(a,f,e))});if(b&&"object"==
|
|
|
|
|
typeof b){var l="",k;for(k in b)b.hasOwnProperty(k)&&(l&&(l+="&"),l+=k+"="+encodeURIComponent(b[k]));l=l.replace(/%20/g,"+");g.open("POST",a,!!c);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(l)}else g.open("GET",a,!!c),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();c||(f=g.responseText,200!=g.status&&(e=g.status||-1),d&&d(a,f,e),h=[f,e]);return h}function oa(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
|
|
|
|
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 oa(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
|
|
|
|
function pa(){return window?window.navigator.userAgent:""}function t(a){window&&window.alert(a)}function qa(a){var b=!1;window&&(b=window.confirm(a));return b}var ra=null;function sa(){if(null==ra){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}ra=a}return ra}
|
|
|
|
|
function ta(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function Aa(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ba(a){if(window){var b=pa();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ca(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
|
|
|
|
function Da(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var Ea={init:[],show:[],exit:[]},Fa=!1,Ha=!0;function Ia(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ja(a){Ea.init.push(a)}
|
|
|
|
|
function Oa(a){if(Ha)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){t("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function Pa(a){!Ha&&a?(Ha=!0,Fa&&Qa("init")):Ha=a}function Qa(a){Ea[a]&&Oa(Ea[a])}Ia("onload",function(){Fa=!0;Oa(Ea.init)});Ia("onpageshow",function(){Oa(Ea.show)});Ia(Ba("Opera")||Ba("iOS")?"onunload":"onbeforeunload",function(){Oa(Ea.exit)});
|
|
|
|
|
function v(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.Eb=b.comment;this.Sb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Ib=this.id.substr(0,b),this.cb=this.id.substr(b+1)):this.cb=this.id;this[a]=c;this.A={Ra:!1,Oa:!1,vb:!1,ia:!1,Qa:!1};this.pb=null;this.A.Qa=!1;this.V={};this.F=null;this.ha=d||0;y.push(this)}var Ra=void 0,Sa={};
|
|
|
|
|
if(window){Ra||(Ra=window.location.search.substr(1));for(var Ta,Ua=/\+/g,Va=/([^&=]+)=?([^&]*)/g;Ta=Va.exec(Ra);)Sa[decodeURIComponent(Ta[1].replace(Ua," "))]=decodeURIComponent(Ta[2].replace(Ua," "))}function Wa(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
|
|
|
|
function z(a,b){b||(b=v);a.prototype=Wa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var y=[],Xa={};function Ya(a,b,c){Xa[a]&&b&&(Xa[a][b]=c)}function Za(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<y.length;b++){var d=y[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
|
|
|
|
function 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<y.length;d++)if(c)c==y[d]&&(c=null);else if(!(a!=y[d].type||b&&y[d].id.indexOf(b)))return y[d]}return null}function B(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){t(c.message+" ("+a+")")}return b}
|
|
|
|
|
function cb(a,b){for(var c=D(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var l=g.split(" "),k=0;k<l.length;k++)switch(g=l[k],g){case "pc8080-binding":(g=B(h))&&g.binding&&a.qa(g.type,g.binding,h,g.value),k=l.length}}}}
|
|
|
|
|
function D(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
|
|
|
|
v.prototype={constructor:v,parent:null,toString:function(){return this.name?this.name:this.id||this.type},qa:function(a,b,c){switch(b){case "clear":return this.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.ta=this.V[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),
|
|
|
|
|
function ta(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function ua(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function va(a){if(window){var b=pa();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ca(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
|
|
|
|
function Da(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var Ea={init:[],show:[],exit:[]},Fa=!1,Ga=!0;function Ha(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ja(a){Ea.init.push(a)}
|
|
|
|
|
function Ka(a){if(Ga)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){t("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function La(a){!Ga&&a?(Ga=!0,Fa&&Pa("init")):Ga=a}function Pa(a){Ea[a]&&Ka(Ea[a])}Ha("onload",function(){Fa=!0;Ka(Ea.init)});Ha("onpageshow",function(){Ka(Ea.show)});Ha(va("Opera")||va("iOS")?"onunload":"onbeforeunload",function(){Ka(Ea.exit)});
|
|
|
|
|
function w(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.Eb=b.comment;this.Sb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Ib=this.id.substr(0,b),this.cb=this.id.substr(b+1)):this.cb=this.id;this[a]=c;this.A={Ra:!1,Oa:!1,vb:!1,ia:!1,Qa:!1};this.pb=null;this.A.Qa=!1;this.V={};this.F=null;this.ha=d||0;x.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 Wa(a,b){b||(b=w);a.prototype=Va(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var x=[],Xa={};function Ya(a,b,c){Xa[a]&&b&&(Xa[a][b]=c)}function Za(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<x.length;b++){var d=x[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
|
|
|
|
function $a(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<x.length;d++)if(c)c==x[d]&&(c=null);else if(!(a!=x[d].type||b&&x[d].id.indexOf(b)))return x[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 cb(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.qa(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}
|
|
|
|
|
w.prototype={constructor:w,parent:null,toString:function(){return this.name?this.name:this.id||this.type},qa: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.ta=this.V[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.oa=function(a,b,c){this.g(a,"notice",c)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.cb+": "+a)},oa:function(a,b){b||t(a)},za:function(){return this.A.ia=!0},ya:function(a,b){b&&(this.A.ia=!1);return!0}};function db(a,b,c,d,e,f){var h=!0;a.F&&(!0===h?h=0:null==h&&(h=a.ha),eb(a.F,a,b,c,d,e,f,h))}function fb(a,b){if(a.F){a===a.F?b|=0:b=b||a.ha;var c=a.F.ha&b;return!!b&&c===b||!!(c&a.F.Xb)}return!1}
|
|
|
|
|
function gb(a,b){if(a.A.vb)return a.A.Oa&&(a.A.Oa=!1),a.A.vb=!1;if(a.A.Qa)return a.g(a.toString()+" error"),!1;a.A.Oa=b;return a.A.Oa}function hb(a,b){a.A.Oa&&(b?a.A.vb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.A.Oa}function E(a){if(!a.A.Qa&&(a.A.Ra=!0,a.A.Ra)){var b=a.pb;a.pb=null;b&&b()}}function ib(a,b){b&&(a.A.Ra?b():a.pb=b);return a.A.Ra}function jb(a,b){a.A.Qa=!0;a.oa(b)}
|
|
|
|
|
function gb(a,b){if(a.A.vb)return a.A.Oa&&(a.A.Oa=!1),a.A.vb=!1;if(a.A.Qa)return a.g(a.toString()+" error"),!1;a.A.Oa=b;return a.A.Oa}function hb(a,b){a.A.Oa&&(b?a.A.vb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.A.Oa}function C(a){if(!a.A.Qa&&(a.A.Ra=!0,a.A.Ra)){var b=a.pb;a.pb=null;b&&b()}}function ib(a,b){b&&(a.A.Ra?b():a.pb=b);return a.A.Ra}function jb(a,b){a.A.Qa=!0;a.oa(b)}
|
|
|
|
|
var kb="undefined"!==typeof ArrayBuffer,lb=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
|
|
|
|
|
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function mb(a){v.call(this,"Panel",a,mb)}z(mb);m=mb.prototype;m.qa=function(a,b,c,d){return this.w&&this.w.qa(a,b,c,d)||this.b&&this.b.qa(a,b,c,d)||this.u&&this.u.qa(a,b,c,d)||this.F&&this.F.qa(a,b,c,d)?!0:this.parent.qa.call(this,a,b,c,d)};m.Da=function(a,b,c,d){this.w=a;this.B=b;this.b=c;this.F=d;this.u=nb(a,"Keyboard")};m.za=function(a,b){b||ob();return!0};m.ya=function(){return!0};m.va=function(){};
|
|
|
|
|
function ob(){for(var a=!1,b=D(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=B(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<y.length;h++)if(y[h].id===f){f=y[h];break a}f=null}f||(a=!0,f=new mb(e));cb(f,d);a&&E(f)}}Ja(ob);
|
|
|
|
|
function pb(a,b,c){v.call(this,"Bus",a,pb);this.b=b;this.F=c;this.J=a.busWidth||16;this.X=Math.pow(2,this.J);this.D=this.X-1|0;this.ea=16>=this.J?10:20>=this.J?12:24>=this.J?14:15;this.ua=1<<this.ea;this.Y=this.ua>>2;this.B=this.ua-1;this.M=this.X/this.ua|0;this.K=this.M-1;this.w=[];this.u=[];this.G=this.I=!1;this.aa=[];this.ba=[];a=new F;qb(a,this.F);this.T=Array(this.M);for(b=0;b<this.M;b++)this.T[b]=a;E(this)}z(pb);m=pb.prototype;m.reset=function(){};m.za=function(a,b){b||this.reset();return!0};
|
|
|
|
|
function rb(a,b,c,d){for(var e=b>>>a.ea;0<c&&e<a.T.length;){var f=a.T[e],h=e*a.ua,g=a.ua-(b-h);g>c&&(g=c);if(f&&f.size){if(f.type==d){if(b+c<=f.C)return f.mb+=f.C-b,f.C=b,!0;if(b>=f.C+f.mb){g=f.size-(b-h);g>c&&(g=c);f.mb=b-f.C+g;b=h+a.ua;c-=g;e++;continue}}return sb(1,b,c)}b=new F(b,g,a.ua,d);qb(b,a.F,f);a.T[e++]=b;b=h+a.ua;c-=g}return 0>=c?!0:sb(2,b,c)}m.W=function(a){return this.T[(a&this.D)>>>this.ea].Za(a&this.B,a)};function tb(a,b){return a.T[(b&a.D)>>>a.ea].kb(b&a.B,b)}
|
|
|
|
|
m.Ca=function(a){var b=a&this.B,c=(a&this.D)>>>this.ea;return b!=this.B?this.T[c].Tb(b,a):this.T[c++].Za(b,a)|this.T[c&this.K].Za(0,a+1)<<8};function ub(a,b){var c=b&a.B,d=(b&a.D)>>>a.ea;return c!=a.B?a.T[d].Ab(c,b):a.T[d++].kb(c,b)|a.T[d&a.K].kb(0,b+1)<<8}m.fa=function(a,b){this.T[(a&this.D)>>>this.ea].ab(a&this.B,b&255,a)};function vb(a,b,c){a.T[(b&a.D)>>>a.ea].nb(b&a.B,c&255,b)}
|
|
|
|
|
m.sb=function(a,b){var c=a&this.B,d=(a&this.D)>>>this.ea;c!=this.B?this.T[d].Vb(c,b&65535,a):(this.T[d++].ab(c,b&255,a),this.T[d&this.K].ab(0,b>>8&255,a+1))};function Eb(a,b){if(void 0===b)return a.G=!a.G,a.G;void 0===a.w[b]&&(a.w[b]=[null,!1]);a.w[b][1]=!a.w[b][1];return a.w[b][1]}
|
|
|
|
|
function Fb(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.w[b],g=a.aa[b]||1,l=1==g?255:2==g?65535:-1,k=l;void 0!==h?(h[0]&&(k=h[0](b,c),void 0===k?k=l:k&=l),a.F&&a.G!=h[1]&&Gb(a.F,b,k)):a.F&&(eb(a.F,a,b,null,c),a.G&&Gb(a.F,b,k));e|=k<<f;f+=g<<3;b+=g;d-=g}return e}function Hb(a,b){if(void 0===b)return a.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 Ib(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.u[b],g=a.ba[b]||1,l=1==g?255:2==g?65535:-1,l=(c>>>=f)&l;if(void 0!==h){if(h[0])h[0](b,l,d);a.F&&a.I!=h[1]&&Jb(a.F,b,l)}else a.F&&(eb(a.F,a,b,l,d),a.I&&Jb(a.F,b,l));f+=g<<3;b+=g;e-=g}}function sb(a,b,c){t("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Kb;if(kb){var Lb=new ArrayBuffer(2);(new DataView(Lb)).setUint16(0,256,!0);Kb=256===(new Uint16Array(Lb))[0]}else Kb=!1;var Mb=Kb;
|
|
|
|
|
function F(a,b,c,d){this.id=Nb+=2;this.b=null;this.C=a;this.mb=b;this.size=c||0;this.type=d||Ob;this.w=d==Pb;qb(this);this.wa=this.Kb=!1;if(c)if(kb)this.G=new ArrayBuffer(c),this.I=new DataView(this.G,0,c),this.B=new Uint8Array(this.G,0,c),this.K=new Uint16Array(this.G,0,c>>1),this.b=new Int32Array(this.G,0,c>>2),Qb(this,Mb?Rb:Sb);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Qb(this,Tb)}else Qb(this)}var Ob=0,Pb=2,Ub=["NONE","RAM","ROM","VIDEO","H/W"],Nb=0;
|
|
|
|
|
F.prototype={constructor:F,parent:null,save:function(){var a,b;if(kb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.I.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(kb)for(b=0;b<a.length;b++)this.I.setInt32(b<<2,a[b],!0);else this.b=a;return this.wa=!0}return!1},Ha:function(a,b){b?0===this.u++&&Vb(this,Wb,!1):0===this.V++&&Xb(this,Wb,!1)},M:function(){this.F&&fb(this.F,129)&&this.F.message("attempt to read invalid block %"+q(this.C),!0);
|
|
|
|
|
return 255},D:function(a,b){this.F&&fb(this.F,129)&&this.F.message("attempt to write "+r(b)+" to invalid block %"+q(this.C),!0)},X:function(a,b){return this.Za(a++,b++)|this.Za(a,b)<<8},J:function(a,b,c){this.ab(a++,b&255,c++);this.ab(a,b>>8,c)},ga:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ra:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},Fa:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.wa=!0},cb: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.wa=!0},aa:function(a,b){if(this.F&&null!=this.C){var c=this.F;Yb(c,this.C+a,1,c.ba)&&c.da(!0)}return this.kb(a,b)},ma:function(a,b){if(this.F&&null!=this.C){var c=this.F;Yb(c,this.C+a,2,c.ba)&&c.da(!0)}return this.Ab(a,b)},Ba:function(a,b,c){if(this.F&&null!=this.C){var d=this.F;Yb(d,this.C+a,1,d.I)&&d.da(!0)}this.w?this.D(a,b,c):this.nb(a,b,c)},Na:function(a,
|
|
|
|
|
b,c){if(this.F&&null!=this.C){var d=this.F;Yb(d,this.C+a,2,d.I)&&d.da(!0)}this.w?this.D(a,b,c):this.Bb(a,b,c)},Y:function(a){return this.B[a]},ba:function(a){return this.B[a]},la:function(a){return this.I.getUint16(a,!0)},na:function(a){return a&1?this.B[a]|this.B[a+1]<<8:this.K[a>>1]},sa:function(a,b){this.B[a]=b;this.wa=!0},Ea:function(a,b){this.B[a]=b;this.wa=!0},Ga:function(a,b){this.I.setUint16(a,b,!0);this.wa=!0},bb:function(a,b){a&1?(this.B[a]=b,this.B[a+1]=b>>8):this.K[a>>1]=b;this.wa=!0}};
|
|
|
|
|
function qb(a,b,c){a.F=b;a.V=a.u=0;c&&((a.V=c.V)&&Xb(a,Wb,!1),(a.u=c.u)&&Vb(a,Wb,!1))}function Zb(a,b){b?0===--a.u&&(a.ab=a.w?a.D:a.nb,a.Vb=a.w?a.J:a.Bb):0===--a.V&&(a.Za=a.kb,a.Tb=a.Ab)}function Vb(a,b,c){c&&a.u||(a.ab=!a.w&&b[2]||a.D,a.Vb=!a.w&&b[3]||a.J);if(c||void 0===c)a.nb=b[2]||a.D,a.Bb=b[3]||a.J}function Xb(a,b,c){c&&a.V||(a.Za=b[0]||a.M,a.Tb=b[1]||a.X);if(c||void 0===c)a.kb=b[0]||a.M,a.Ab=b[1]||a.X}function Qb(a,b){b||(b=$b);Xb(a,b,void 0);Vb(a,b,void 0)}
|
|
|
|
|
var $b=[],Tb=[F.prototype.ga,F.prototype.ra,F.prototype.Fa,F.prototype.cb],Wb=[F.prototype.aa,F.prototype.ma,F.prototype.Ba,F.prototype.Na];if(kb)var Sb=[F.prototype.Y,F.prototype.la,F.prototype.sa,F.prototype.Ga],Rb=[F.prototype.ba,F.prototype.na,F.prototype.Ea,F.prototype.bb];
|
|
|
|
|
function ac(a,b){v.call(this,"CPU",a,ac,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.Ya=c;this.i.rb=0;this.i.La=d;this.i.xb=Math.round(this.i.Ya/1E4)/100;this.i.Ja=this.i.xb*this.i.La;this.A.ka=!1;this.A.wb=!1;this.A.Jb=a.autoStart;this.A.Lb=!1;this.A.Pa=!1;this.i.eb=this.i.Va=0;this.i.fb=a.csStart;this.i.Ua=a.csInterval;this.i.Wa=a.csStop;this.aa=this.Ma.bind(this);E(this)}z(ac);var bc=["power","reset"];m=ac.prototype;
|
|
|
|
|
m.Da=function(a,b,c,d){this.w=a;this.B=b;this.F=d;for(b=0;b<bc.length;b++)(c=this.V[bc[b]])&&this.w.qa(null,bc[b],c);this.Ba=(b=nb(a,"Video"))&&Math.max(b.Ba,b.Zb)||60;this.K=nb(a,"ChipSet");a=nc(a,"autoStart");null!=a&&(this.A.Jb="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){this.i.rb=0};m.save=function(){return null};m.restore=function(){return!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 mb(a){w.call(this,"Panel",a,mb)}Wa(mb);m=mb.prototype;m.qa=function(a,b,c,d){return this.u&&this.u.qa(a,b,c,d)||this.b&&this.b.qa(a,b,c,d)||this.w&&this.w.qa(a,b,c,d)||this.F&&this.F.qa(a,b,c,d)?!0:this.parent.qa.call(this,a,b,c,d)};m.Fa=function(a,b,c,d){this.u=a;this.B=b;this.b=c;this.F=d;this.w=nb(a,"Keyboard")};m.za=function(a,b){b||ob();return!0};m.ya=function(){return!0};m.va=function(){};
|
|
|
|
|
function ob(){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<x.length;h++)if(x[h].id===f){f=x[h];break a}f=null}f||(a=!0,f=new mb(e));cb(f,d);a&&C(f)}}Ja(ob);
|
|
|
|
|
function pb(a,b,c){w.call(this,"Bus",a,pb);this.b=b;this.F=c;this.J=a.busWidth||16;this.X=Math.pow(2,this.J);this.D=this.X-1|0;this.ea=16>=this.J?10:20>=this.J?12:24>=this.J?14:15;this.ua=1<<this.ea;this.Y=this.ua>>2;this.B=this.ua-1;this.M=this.X/this.ua|0;this.K=this.M-1;this.u=[];this.w=[];this.G=this.H=!1;this.aa=[];this.ba=[];a=new E;qb(a,this.F);this.T=Array(this.M);for(b=0;b<this.M;b++)this.T[b]=a;C(this)}Wa(pb);m=pb.prototype;m.reset=function(){};m.za=function(a,b){b||this.reset();return!0};
|
|
|
|
|
function rb(a,b,c,d){for(var e=b>>>a.ea;0<c&&e<a.T.length;){var f=a.T[e],h=e*a.ua,g=a.ua-(b-h);g>c&&(g=c);if(f&&f.size){if(f.type==d){if(b+c<=f.C)return f.mb+=f.C-b,f.C=b,!0;if(b>=f.C+f.mb){g=f.size-(b-h);g>c&&(g=c);f.mb=b-f.C+g;b=h+a.ua;c-=g;e++;continue}}return sb(1,b,c)}b=new E(b,g,a.ua,d);qb(b,a.F,f);a.T[e++]=b;b=h+a.ua;c-=g}return 0>=c?!0:sb(2,b,c)}m.W=function(a){return this.T[(a&this.D)>>>this.ea].Za(a&this.B,a)};function tb(a,b){return a.T[(b&a.D)>>>a.ea].kb(b&a.B,b)}
|
|
|
|
|
m.Ea=function(a){var b=a&this.B,c=(a&this.D)>>>this.ea;return b!=this.B?this.T[c].Tb(b,a):this.T[c++].Za(b,a)|this.T[c&this.K].Za(0,a+1)<<8};function ub(a,b){var c=b&a.B,d=(b&a.D)>>>a.ea;return c!=a.B?a.T[d].Ab(c,b):a.T[d++].kb(c,b)|a.T[d&a.K].kb(0,b+1)<<8}m.ga=function(a,b){this.T[(a&this.D)>>>this.ea].ab(a&this.B,b&255,a)};function vb(a,b,c){a.T[(b&a.D)>>>a.ea].nb(b&a.B,c&255,b)}
|
|
|
|
|
m.sb=function(a,b){var c=a&this.B,d=(a&this.D)>>>this.ea;c!=this.B?this.T[d].Vb(c,b&65535,a):(this.T[d++].ab(c,b&255,a),this.T[d&this.K].ab(0,b>>8&255,a+1))};function wb(a,b){if(void 0===b)return a.G=!a.G,a.G;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,c){for(var d=1,e=0,f=0;0<d;){var h=a.u[b],g=a.aa[b]||1,k=1==g?255:2==g?65535:-1,l=k;void 0!==h?(h[0]&&(l=h[0](b,c),void 0===l?l=k:l&=k),a.F&&a.G!=h[1]&&Gb(a.F,b,l)):a.F&&(eb(a.F,a,b,null,c),a.G&&Gb(a.F,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Hb(a,b){if(void 0===b)return a.H=!a.H,a.H;void 0===a.w[b]&&(a.w[b]=[null,!1]);a.w[b][1]=!a.w[b][1];return a.w[b][1]}
|
|
|
|
|
function Ib(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.w[b],g=a.ba[b]||1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h){if(h[0])h[0](b,k,d);a.F&&a.H!=h[1]&&Jb(a.F,b,k)}else a.F&&(eb(a.F,a,b,k,d),a.H&&Jb(a.F,b,k));f+=g<<3;b+=g;e-=g}}function sb(a,b,c){t("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Kb;if(kb){var Lb=new ArrayBuffer(2);(new DataView(Lb)).setUint16(0,256,!0);Kb=256===(new Uint16Array(Lb))[0]}else Kb=!1;var Mb=Kb;
|
|
|
|
|
function E(a,b,c,d){this.id=Nb+=2;this.b=null;this.C=a;this.mb=b;this.size=c||0;this.type=d||Ob;this.u=d==Pb;qb(this);this.wa=this.Kb=!1;if(c)if(kb)this.G=new ArrayBuffer(c),this.H=new DataView(this.G,0,c),this.B=new Uint8Array(this.G,0,c),this.K=new Uint16Array(this.G,0,c>>1),this.b=new Int32Array(this.G,0,c>>2),Qb(this,Mb?Rb:Sb);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Qb(this,Tb)}else Qb(this)}var Ob=0,Pb=2,Ub=["NONE","RAM","ROM","VIDEO","H/W"],Nb=0;
|
|
|
|
|
E.prototype={constructor:E,parent:null,save:function(){var a,b;if(kb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.H.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(kb)for(b=0;b<a.length;b++)this.H.setInt32(b<<2,a[b],!0);else this.b=a;return this.wa=!0}return!1},Ha:function(a,b){b?0===this.w++&&Vb(this,Wb,!1):0===this.V++&&Xb(this,Wb,!1)},M:function(){this.F&&fb(this.F,129)&&this.F.message("attempt to read invalid block %"+q(this.C),!0);
|
|
|
|
|
return 255},D:function(a,b){this.F&&fb(this.F,129)&&this.F.message("attempt to write "+r(b)+" to invalid block %"+q(this.C),!0)},X:function(a,b){return this.Za(a++,b++)|this.Za(a,b)<<8},J:function(a,b,c){this.ab(a++,b&255,c++);this.ab(a,b>>8,c)},fa:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ra:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},Ba:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.wa=!0},cb: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.wa=!0},aa:function(a,b){if(this.F&&null!=this.C){var c=this.F;Yb(c,this.C+a,1,c.ba)&&c.da(!0)}return this.kb(a,b)},ma:function(a,b){if(this.F&&null!=this.C){var c=this.F;Yb(c,this.C+a,2,c.ba)&&c.da(!0)}return this.Ab(a,b)},Da:function(a,b,c){if(this.F&&null!=this.C){var d=this.F;Yb(d,this.C+a,1,d.H)&&d.da(!0)}this.u?this.D(a,b,c):this.nb(a,b,c)},Na:function(a,
|
|
|
|
|
b,c){if(this.F&&null!=this.C){var d=this.F;Yb(d,this.C+a,2,d.H)&&d.da(!0)}this.u?this.D(a,b,c):this.Bb(a,b,c)},Y:function(a){return this.B[a]},ba:function(a){return this.B[a]},ka:function(a){return this.H.getUint16(a,!0)},na:function(a){return a&1?this.B[a]|this.B[a+1]<<8:this.K[a>>1]},sa:function(a,b){this.B[a]=b;this.wa=!0},Aa:function(a,b){this.B[a]=b;this.wa=!0},Ga:function(a,b){this.H.setUint16(a,b,!0);this.wa=!0},bb:function(a,b){a&1?(this.B[a]=b,this.B[a+1]=b>>8):this.K[a>>1]=b;this.wa=!0}};
|
|
|
|
|
function qb(a,b,c){a.F=b;a.V=a.w=0;c&&((a.V=c.V)&&Xb(a,Wb,!1),(a.w=c.w)&&Vb(a,Wb,!1))}function Zb(a,b){b?0===--a.w&&(a.ab=a.u?a.D:a.nb,a.Vb=a.u?a.J:a.Bb):0===--a.V&&(a.Za=a.kb,a.Tb=a.Ab)}function Vb(a,b,c){c&&a.w||(a.ab=!a.u&&b[2]||a.D,a.Vb=!a.u&&b[3]||a.J);if(c||void 0===c)a.nb=b[2]||a.D,a.Bb=b[3]||a.J}function Xb(a,b,c){c&&a.V||(a.Za=b[0]||a.M,a.Tb=b[1]||a.X);if(c||void 0===c)a.kb=b[0]||a.M,a.Ab=b[1]||a.X}function Qb(a,b){b||(b=$b);Xb(a,b,void 0);Vb(a,b,void 0)}
|
|
|
|
|
var $b=[],Tb=[E.prototype.fa,E.prototype.ra,E.prototype.Ba,E.prototype.cb],Wb=[E.prototype.aa,E.prototype.ma,E.prototype.Da,E.prototype.Na];if(kb)var Sb=[E.prototype.Y,E.prototype.ka,E.prototype.sa,E.prototype.Ga],Rb=[E.prototype.ba,E.prototype.na,E.prototype.Aa,E.prototype.bb];
|
|
|
|
|
function ac(a,b){w.call(this,"CPU",a,ac,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.Ya=c;this.i.rb=0;this.i.La=d;this.i.xb=Math.round(this.i.Ya/1E4)/100;this.i.Ja=this.i.xb*this.i.La;this.A.la=!1;this.A.wb=!1;this.A.Jb=a.autoStart;this.A.Lb=!1;this.A.Pa=!1;this.i.eb=this.i.Va=0;this.i.fb=a.csStart;this.i.Ua=a.csInterval;this.i.Wa=a.csStop;this.aa=this.Ma.bind(this);C(this)}Wa(ac);var bc=["power","reset"];m=ac.prototype;
|
|
|
|
|
m.Fa=function(a,b,c,d){this.u=a;this.B=b;this.F=d;for(b=0;b<bc.length;b++)(c=this.V[bc[b]])&&this.u.qa(null,bc[b],c);this.Da=(b=nb(a,"Video"))&&Math.max(b.Da,b.Zb)||60;this.K=nb(a,"ChipSet");a=cc(a,"autoStart");null!=a&&(this.A.Jb="true"==a?!0:"false"==a?!1:!!a);C(this)};m.reset=function(){this.i.rb=0};m.save=function(){return null};m.restore=function(){return!1};
|
|
|
|
|
m.za=function(a,b){if(!b){if(a&&this.restore){oc(this);if(!this.restore(a))return!1;pc(this)}else this.reset();if(this.F){var c=this.F;c.g("Type ? for help with PC8080 Debugger commands");c.va();if(c.tb){var d=c.tb;c.tb=null;qc(c,d)}}else this.g("No debugger detected")}rc(this);return!0};m.ya=function(a){return a?this.save():!0};function sc(a){(a.A.Jb||!a.F&&void 0===a.V.run)&&a.Ma(!0)}m.Ob=function(){return 0};
|
|
|
|
|
function pc(a){void 0===a.i.fb&&(a.i.fb=0);void 0===a.i.Ua&&(a.i.Ua=-1);void 0===a.i.Wa&&(a.i.Wa=-1);a.A.Pa=0<=a.i.fb&&0<a.i.Ua;a.A.Pa&&(a.i.eb=0,a.i.Va=a.i.fb-a.I)}function tc(a,b){if(a.A.Pa){var c=!1;a.i.eb=a.i.eb+a.Ob()|0;a.i.Va-=b;0>=a.i.Va&&(a.i.Va+=a.i.Ua,c=!0);0<=a.i.Wa&&a.i.Wa<=uc(a)&&(a.i.Ua=a.i.Wa=-1,pc(a),a.da(),c=!0);c&&a.g(uc(a)+" cycles: checksum="+q(a.i.eb))}}
|
|
|
|
|
m.qa=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.A.ia)a=!0;else{var b=null,c,g=Za(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.A.Ra);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.A.ia);c++);c==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.A.Ra?"powered yet":"ready yet"+(b.pb?" (waiting for notification)":""))+".");a=!1}a&&(d.A.ka?d.da(!0):d.Ma(!0))};a=
|
|
|
|
|
!0;break;case "speed":this.V[b]=c;a=!0;break;case "setSpeed":this.V[b]=c,c.onclick=function(){vc(d,d.i.La<<1,!0)},c.textContent=this.i.Ja.toFixed(2)+"Mhz",a=!0}return a};function wc(a,b,c){a.I+=b;c&&(a.D=a.b=0)}
|
|
|
|
|
function xc(a,b){var c=30;c<a.Ba&&(c=a.Ba);2>c&&(c=2);var d=1;b&&1<a.i.La&&a.i.Ia&&(d=a.i.Ia/a.i.xb);a.i.Pb=Math.round(1E3/30);a.i.hc=Math.floor(a.i.Ya/c*d);a.i.yb=Math.floor(a.i.Ya/30*d);a.i.Rb=Math.floor(a.i.Ya/a.Ba*d);a.i.Qb=Math.floor(a.i.Ya/2*d);b||(a.i.Xa=a.i.yb,a.i.hb=a.i.Rb,a.i.gb=a.i.Qb);a.i.zb=0}function uc(a){return a.I+a.G+a.D-a.b}function oc(a){a.i.Ia=0;a.I=a.G=a.D=a.b=0;pc(a);vc(a,1)}
|
|
|
|
|
function vc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.Ia/a.i.Ja?b=1:d=!0;a.i.La=b;b=a.i.xb*a.i.La;if(a.i.Ja!=b){a.i.Ja=b;b=a.i.Ja.toFixed(2)+"Mhz";var e=a.V.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.w&&a.w.lb()}wc(a,a.G);a.G=0;a.i.Ta=ka();a.i.Ka=0;xc(a);return d}
|
|
|
|
|
m.Ma=function(a){if(gb(this,!0)){if(!this.A.ka){vc(this);this.w&&this.w.start(this.i.Ta,uc(this));this.A.ka=!0;this.A.wb=!0;this.K&&this.K.start();var b=this.V.run;b&&(b.textContent="Halt");this.w&&(this.w.va(!0),a&&this.w.lb(!0))}this.i.zb>=this.i.Ya&&xc(this,!0);this.i.ib=0;this.i.qb=ka();this.i.Ka&&(a=this.i.qb-this.i.Ka,a>this.i.Pb&&(this.i.Ta+=a,this.i.Ta>this.i.qb&&(this.i.Ta=this.i.qb)));try{do{var c=this.A.Pa?1:this.i.hc;try{this.$a(c)}catch(e){if("number"!=typeof e)throw e;}var d=this.D-
|
|
|
|
|
this.b;this.G+=d;this.i.ib+=d;wc(this,0,!0);tc(this,d);this.i.hb-=d;0>=this.i.hb&&(this.i.hb+=this.i.Rb,this.w&&yc(this.w,this.i.rb++),this.i.rb>this.Ba&&(this.i.rb=0));this.i.gb-=d;0>=this.i.gb&&(this.i.gb+=this.i.Qb,this.w&&this.w.va());this.i.Xa-=d;if(0>=this.i.Xa){this.i.Xa+=this.i.yb;break}}while(this.A.ka)}catch(e){this.da();rc(this);this.w&&this.w.stop(ka(),uc(this));gb(this,!1);jb(this,e.stack||e.message);return}c=setTimeout;d=this.aa;this.i.Ka=ka();a=this.i.Pb;this.i.ib&&(a=Math.round(a*
|
|
|
|
|
this.i.ib/this.i.yb));a-=this.i.Ka-this.i.qb;if(b=this.i.Ka-this.i.Ta)this.i.Ia=Math.round(this.G/(10*b))/100,864E5<=b&&(this.I=0,vc(this));if(0>a||this.i.Ia<this.i.Ja)a=0;this.i.zb+=this.i.ib;this.i.Ka+=a;c(d,a)}else rc(this),this.w&&this.w.stop(ka(),uc(this))};m.$a=function(){return 0};m.da=function(a){hb(this,!0);this.D-=this.b;this.b=0;wc(this,this.G);this.G=0;if(this.A.ka){this.A.ka=!1;this.K&&this.K.stop();var b=this.V.run;b&&(b.textContent="Run")}this.A.ob=a};
|
|
|
|
|
function rc(a,b){a.w&&(yc(a.w,-1),a.w.va(b))}function zc(a){this.Sa=a.model||8080;ac.call(this,a,1E6);this.M=Ac;oc(this);this.A.ob=this.A.Yb=!1;this.Y=0;this.J=[];this.X=0;Bc(this)}z(zc,ac);function Cc(a,b){a.J.push(b)}m=zc.prototype;m.reset=function(){this.A.ka&&this.da();Bc(this);oc(this);this.A.Qa=!1;this.parent.reset.call(this)};function Bc(a){a.j=0;a.N=0;a.O=0;a.P=0;a.R=0;a.S=0;a.U=0;a.ca=0;H(a,a.X);Dc(a,0);a.u=0}function Ec(a,b){a.X=b;H(a,b)}
|
|
|
|
|
function pc(a){void 0===a.i.fb&&(a.i.fb=0);void 0===a.i.Ua&&(a.i.Ua=-1);void 0===a.i.Wa&&(a.i.Wa=-1);a.A.Pa=0<=a.i.fb&&0<a.i.Ua;a.A.Pa&&(a.i.eb=0,a.i.Va=a.i.fb-a.H)}function tc(a,b){if(a.A.Pa){var c=!1;a.i.eb=a.i.eb+a.Ob()|0;a.i.Va-=b;0>=a.i.Va&&(a.i.Va+=a.i.Ua,c=!0);0<=a.i.Wa&&a.i.Wa<=uc(a)&&(a.i.Ua=a.i.Wa=-1,pc(a),a.da(),c=!0);c&&a.g(uc(a)+" cycles: checksum="+q(a.i.eb))}}
|
|
|
|
|
m.qa=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.u)if(a=d.u,a.A.ia)a=!0;else{var b=null,c,g=Za(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.A.Ra);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.A.ia);c++);c==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.A.Ra?"powered yet":"ready yet"+(b.pb?" (waiting for notification)":""))+".");a=!1}a&&(d.A.la?d.da(!0):d.Ma(!0))};a=
|
|
|
|
|
!0;break;case "speed":this.V[b]=c;a=!0;break;case "setSpeed":this.V[b]=c,c.onclick=function(){vc(d,d.i.La<<1,!0)},c.textContent=this.i.Ja.toFixed(2)+"Mhz",a=!0}return a};function wc(a,b,c){a.H+=b;c&&(a.D=a.b=0)}
|
|
|
|
|
function xc(a,b){var c=30;c<a.Da&&(c=a.Da);2>c&&(c=2);var d=1;b&&1<a.i.La&&a.i.Ia&&(d=a.i.Ia/a.i.xb);a.i.Pb=Math.round(1E3/30);a.i.hc=Math.floor(a.i.Ya/c*d);a.i.yb=Math.floor(a.i.Ya/30*d);a.i.Rb=Math.floor(a.i.Ya/a.Da*d);a.i.Qb=Math.floor(a.i.Ya/2*d);b||(a.i.Xa=a.i.yb,a.i.hb=a.i.Rb,a.i.gb=a.i.Qb);a.i.zb=0}function uc(a){return a.H+a.G+a.D-a.b}function oc(a){a.i.Ia=0;a.H=a.G=a.D=a.b=0;pc(a);vc(a,1)}
|
|
|
|
|
function vc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.Ia/a.i.Ja?b=1:d=!0;a.i.La=b;b=a.i.xb*a.i.La;if(a.i.Ja!=b){a.i.Ja=b;b=a.i.Ja.toFixed(2)+"Mhz";var e=a.V.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.u&&a.u.lb()}wc(a,a.G);a.G=0;a.i.Ta=ja();a.i.Ka=0;xc(a);return d}
|
|
|
|
|
m.Ma=function(a){if(gb(this,!0)){if(!this.A.la){vc(this);this.u&&this.u.start(this.i.Ta,uc(this));this.A.la=!0;this.A.wb=!0;this.K&&this.K.start();var b=this.V.run;b&&(b.textContent="Halt");this.u&&(this.u.va(!0),a&&this.u.lb(!0))}this.i.zb>=this.i.Ya&&xc(this,!0);this.i.ib=0;this.i.qb=ja();this.i.Ka&&(a=this.i.qb-this.i.Ka,a>this.i.Pb&&(this.i.Ta+=a,this.i.Ta>this.i.qb&&(this.i.Ta=this.i.qb)));try{do{var c=this.A.Pa?1:this.i.hc;try{this.$a(c)}catch(e){if("number"!=typeof e)throw e;}var d=this.D-
|
|
|
|
|
this.b;this.G+=d;this.i.ib+=d;wc(this,0,!0);tc(this,d);this.i.hb-=d;0>=this.i.hb&&(this.i.hb+=this.i.Rb,this.u&&yc(this.u,this.i.rb++),this.i.rb>this.Da&&(this.i.rb=0));this.i.gb-=d;0>=this.i.gb&&(this.i.gb+=this.i.Qb,this.u&&this.u.va());this.i.Xa-=d;if(0>=this.i.Xa){this.i.Xa+=this.i.yb;break}}while(this.A.la)}catch(e){this.da();rc(this);this.u&&this.u.stop(ja(),uc(this));gb(this,!1);jb(this,e.stack||e.message);return}c=setTimeout;d=this.aa;this.i.Ka=ja();a=this.i.Pb;this.i.ib&&(a=Math.round(a*
|
|
|
|
|
this.i.ib/this.i.yb));a-=this.i.Ka-this.i.qb;if(b=this.i.Ka-this.i.Ta)this.i.Ia=Math.round(this.G/(10*b))/100,864E5<=b&&(this.H=0,vc(this));if(0>a||this.i.Ia<this.i.Ja)a=0;this.i.zb+=this.i.ib;this.i.Ka+=a;c(d,a)}else rc(this),this.u&&this.u.stop(ja(),uc(this))};m.$a=function(){return 0};m.da=function(a){hb(this,!0);this.D-=this.b;this.b=0;wc(this,this.G);this.G=0;if(this.A.la){this.A.la=!1;this.K&&this.K.stop();var b=this.V.run;b&&(b.textContent="Run")}this.A.ob=a};
|
|
|
|
|
function rc(a,b){a.u&&(yc(a.u,-1),a.u.va(b))}function zc(a){this.Sa=a.model||8080;ac.call(this,a,1E6);this.M=Ac;oc(this);this.A.ob=this.A.Yb=!1;this.Y=0;this.J=[];this.X=0;Bc(this)}Wa(zc,ac);function Cc(a,b){a.J.push(b)}m=zc.prototype;m.reset=function(){this.A.la&&this.da();Bc(this);oc(this);this.A.Qa=!1;this.parent.reset.call(this)};function Bc(a){a.j=0;a.N=0;a.O=0;a.P=0;a.R=0;a.S=0;a.U=0;a.ca=0;F(a,a.X);Dc(a,0);a.w=0}function Ec(a,b){a.X=b;F(a,b)}
|
|
|
|
|
m.Ob=function(){var a=this.j+this.N+this.O+this.P+this.R+this.S+this.U|0;return a=a+this.ca+this.L+Fc(this)|0};
|
|
|
|
|
m.save=function(){var a=new I(this);J(a,0,[this.j,this.N,this.O,this.P,this.R,this.S,this.U,this.ca,this.L,Fc(this)]);J(a,1,[this.u,this.I,this.i.La]);for(var b=this.B,c=0,d=[],e=0;e<b.M;e++){var f=b.T[e];if(f.wa||f.Kb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,l=0,k=[];g<f.length;){for(var n=f[g],p=g+1;p<f.length&&f[p]===n;)p++;k[l++]=p-g;k[l++]=n;g=p}if(k.length<f.length){f=k;break a}}d[h]=f}}J(a,2,d);return a.data()};
|
|
|
|
|
m.restore=function(a){var b=a[0];this.j=b[0];this.N=b[1];this.O=b[2];this.P=b[3];this.R=b[4];this.S=b[5];this.U=b[6];this.ca=b[7]&65535;H(this,b[8]);Dc(this,b[9]);b=a[1];this.u=b[0];this.I=b[1];vc(this,b[3]);a:{b=this.B;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.Y){for(var f=0,h=Array(b.Y),g=0;g<e.length-1;)for(var l=e[g++],k=e[g++];l--;)h[f++]=k;e=h}f=b.T[d];if(!f||!f.restore(e)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
|
|
|
|
m.qa=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "SF":case "ZF":case "AF":case "PF":case "CF":this.V[b]=c;this.Y++;d=!0;break;default:d=this.parent.qa.call(this,a,b,c)}return d};function Gc(a){return a.N<<8|a.O}function Hc(a,b){a.N=b>>8&255;a.O=b&255}function Ic(a){return a.P<<8|a.R}function Jc(a,b){a.P=b>>8&255;a.R=b&255}function K(a){return a.S<<8|a.U}
|
|
|
|
|
function Kc(a,b){a.S=b>>8&255;a.U=b&255}function H(a,b){a.L=b&65535}function Lc(a){return a.H&256?1:0}function Mc(a){return lb[a.Z&255]?4:0}function Nc(a){return(a.Z^a.ja)&16?16:0}function Oc(a){return a.H&255?0:64}function Pc(a){return a.Z&128?128:0}function Fc(a){return a.pa&-214|Pc(a)|Oc(a)|Nc(a)|Mc(a)|Lc(a)}function Dc(a,b){a.H=a.Z=a.ja=0;b&1&&(a.H|=256);b&4||(a.Z|=1);b&16&&(a.ja|=16);b&64||(a.H|=255);b&128&&(a.Z^=192);a.pa=a.pa&-513|b&512|2}
|
|
|
|
|
function Qc(a,b){a.ja=a.j^b;return a.Z=(a.H=a.j+b)&255}function Rc(a,b){a.ja=a.j^b;return a.Z=(a.H=a.j+b+(a.H&256?1:0))&255}function id(a,b){a.H=a.Z=a.ja=a.j&b;(a.j|b)&8&&(a.ja^=16);return a.H}function jd(a,b){a.ja=b^255;b=a.Z=b+255&255;a.H=a.H&-256|b;return b}function kd(a,b){a.ja=b;b=a.Z=b+1&255;a.H=a.H&-256|b;return b}function ld(a,b){return a.Z=a.H=a.ja=a.j|b}function L(a,b){b^=255;a.ja=a.j^b;return a.Z=(a.H=a.j+b+1^256)&255}
|
|
|
|
|
function md(a,b){b^=255;a.ja=a.j^b;return a.Z=(a.H=a.j+b+(a.H&256?0:1)^256)&255}function nd(a,b){return a.Z=a.H=a.ja=a.j^b}m.W=function(a){return this.B.W(a)};m.fa=function(a,b){this.B.fa(a,b)};function M(a){var b=a.W(a.L);H(a,a.L+1);return b}function N(a){var b=a.B.Ca(a.L);H(a,a.L+2);return b}function O(a){var b=a.B.Ca(a.ca);a.ca=a.ca+2&65535;return b}function P(a,b){a.ca=a.ca-2&65535;a.B.sb(a.ca,b)}
|
|
|
|
|
function Q(a,b,c,d){d=d||2;a.V[b]&&(void 0===c&&(jb(a,"Value for "+b+" is invalid"),a.da()),c=!a.A.ka||a.A.Lb?q(c,d):"--------".substr(0,d),a.V[b].textContent!=c&&(a.V[b].textContent=c))}
|
|
|
|
|
m.va=function(a){this.Y&&(a||!this.A.ka||this.A.Lb)&&(Q(this,"A",this.j),Q(this,"B",this.N),Q(this,"C",this.O),Q(this,"BC",Gc(this),4),Q(this,"D",this.P),Q(this,"E",this.R),Q(this,"DE",Ic(this),4),Q(this,"H",this.S),Q(this,"L",this.U),Q(this,"HL",K(this),4),Q(this,"SP",this.ca,4),Q(this,"PC",this.L,4),a=Fc(this),Q(this,"PS",a,4),Q(this,"SF",a&128?1:0,1),Q(this,"ZF",a&64?1:0,1),Q(this,"AF",a&16?1:0,1),Q(this,"PF",a&4?1:0,1),Q(this,"CF",a&1?1:0,1));if(a=this.V.speed)a.textContent=this.A.ka&&this.i.Ia?
|
|
|
|
|
m.save=function(){var a=new Gc(this);H(a,0,[this.j,this.N,this.O,this.P,this.R,this.S,this.U,this.ca,this.L,Fc(this)]);H(a,1,[this.w,this.H,this.i.La]);for(var b=this.B,c=0,d=[],e=0;e<b.M;e++){var f=b.T[e];if(f.wa||f.Kb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var p=f[g],n=g+1;n<f.length&&f[n]===p;)n++;l[k++]=n-g;l[k++]=p;g=n}if(l.length<f.length){f=l;break a}}d[h]=f}}H(a,2,d);return a.data()};
|
|
|
|
|
m.restore=function(a){var b=a[0];this.j=b[0];this.N=b[1];this.O=b[2];this.P=b[3];this.R=b[4];this.S=b[5];this.U=b[6];this.ca=b[7]&65535;F(this,b[8]);Dc(this,b[9]);b=a[1];this.w=b[0];this.H=b[1];vc(this,b[3]);a:{b=this.B;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.Y){for(var f=0,h=Array(b.Y),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.T[d];if(!f||!f.restore(e)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
|
|
|
|
m.qa=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "SF":case "ZF":case "AF":case "PF":case "CF":this.V[b]=c;this.Y++;d=!0;break;default:d=this.parent.qa.call(this,a,b,c)}return d};function Hc(a){return a.N<<8|a.O}function Ic(a,b){a.N=b>>8&255;a.O=b&255}function Jc(a){return a.P<<8|a.R}function Kc(a,b){a.P=b>>8&255;a.R=b&255}function I(a){return a.S<<8|a.U}
|
|
|
|
|
function Lc(a,b){a.S=b>>8&255;a.U=b&255}function F(a,b){a.L=b&65535}function Mc(a){return a.I&256?1:0}function Nc(a){return lb[a.Z&255]?4:0}function Oc(a){return(a.Z^a.ja)&16?16:0}function Pc(a){return a.I&255?0:64}function Qc(a){return a.Z&128?128:0}function Fc(a){return a.pa&-214|Qc(a)|Pc(a)|Oc(a)|Nc(a)|Mc(a)}function Dc(a,b){a.I=a.Z=a.ja=0;b&1&&(a.I|=256);b&4||(a.Z|=1);b&16&&(a.ja|=16);b&64||(a.I|=255);b&128&&(a.Z^=192);a.pa=a.pa&-513|b&512|2}
|
|
|
|
|
function Rc(a,b){a.ja=a.j^b;return a.Z=(a.I=a.j+b)&255}function Sc(a,b){a.ja=a.j^b;return a.Z=(a.I=a.j+b+(a.I&256?1:0))&255}function jd(a,b){a.I=a.Z=a.ja=a.j&b;(a.j|b)&8&&(a.ja^=16);return a.I}function kd(a,b){a.ja=b^255;b=a.Z=b+255&255;a.I=a.I&-256|b;return b}function ld(a,b){a.ja=b;b=a.Z=b+1&255;a.I=a.I&-256|b;return b}function md(a,b){return a.Z=a.I=a.ja=a.j|b}function J(a,b){b^=255;a.ja=a.j^b;return a.Z=(a.I=a.j+b+1^256)&255}
|
|
|
|
|
function nd(a,b){b^=255;a.ja=a.j^b;return a.Z=(a.I=a.j+b+(a.I&256?0:1)^256)&255}function od(a,b){return a.Z=a.I=a.ja=a.j^b}m.W=function(a){return this.B.W(a)};m.ga=function(a,b){this.B.ga(a,b)};function L(a){var b=a.W(a.L);F(a,a.L+1);return b}function M(a){var b=a.B.Ea(a.L);F(a,a.L+2);return b}function N(a){var b=a.B.Ea(a.ca);a.ca=a.ca+2&65535;return b}function Q(a,b){a.ca=a.ca-2&65535;a.B.sb(a.ca,b)}
|
|
|
|
|
function R(a,b,c,d){d=d||2;a.V[b]&&(void 0===c&&(jb(a,"Value for "+b+" is invalid"),a.da()),c=!a.A.la||a.A.Lb?q(c,d):"--------".substr(0,d),a.V[b].textContent!=c&&(a.V[b].textContent=c))}
|
|
|
|
|
m.va=function(a){this.Y&&(a||!this.A.la||this.A.Lb)&&(R(this,"A",this.j),R(this,"B",this.N),R(this,"C",this.O),R(this,"BC",Hc(this),4),R(this,"D",this.P),R(this,"E",this.R),R(this,"DE",Jc(this),4),R(this,"H",this.S),R(this,"L",this.U),R(this,"HL",I(this),4),R(this,"SP",this.ca,4),R(this,"PC",this.L,4),a=Fc(this),R(this,"PS",a,4),R(this,"SF",a&128?1:0,1),R(this,"ZF",a&64?1:0,1),R(this,"AF",a&16?1:0,1),R(this,"PF",a&4?1:0,1),R(this,"CF",a&1?1:0,1));if(a=this.V.speed)a.textContent=this.A.la&&this.i.Ia?
|
|
|
|
|
this.i.Ia.toFixed(2)+"Mhz":"Stopped"};
|
|
|
|
|
m.$a=function(a){this.A.ob=!0;var b=this.A.Yb=this.F&&od(this.F),c=a?this.A.wb?0:1:-1;this.A.wb=!1;this.D=this.b=a;do{if(this.u){var d;this.u&8&&this.pa&512?(d=199|(this.u&7)<<3,this.u&=-16,this.pa&=-513,this.M[d].call(this),d=!0):d=!1;if(d){if(!a){this.g("interrupt dispatched");break}}else if(this.u&16){this.b=0;break}}if(b){if(pd(this.F,this.L,c)){this.da();break}c=1}this.M[M(this)].call(this)}while(0<this.b);return this.A.ob?this.D-this.b:void 0===this.A.ob?0:-1};
|
|
|
|
|
Ja(function(){for(var a=D(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new zc(d);cb(d,c)}});function qd(){this.b-=4}function rd(){H(this,N(this));this.b-=10}function sd(){H(this,O(this));this.b-=10}function td(){var a=N(this);P(this,this.L);H(this,a);this.b-=17}
|
|
|
|
|
var Ac=[qd,function(){Hc(this,N(this));this.b-=10},function(){this.fa(Gc(this),this.j);this.b-=7},function(){Hc(this,Gc(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=M(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|a>>8;this.H=this.H&255|a&256;this.b-=4},qd,function(){var a;Kc(this,a=K(this)+Gc(this));this.H=this.H&255|a>>8&256;this.b-=10},function(){this.j=this.W(Gc(this));this.b-=7},function(){Hc(this,Gc(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=M(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(a|this.j)>>1;this.H=this.H&255|a;this.b-=4},qd,function(){Jc(this,N(this));this.b-=10},function(){this.fa(Ic(this),this.j);this.b-=7},function(){Jc(this,Ic(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=M(this);this.b-=7},function(){var a=this.j<<
|
|
|
|
|
1;this.j=a&255|this.H>>8;this.H=this.H&255|a&256;this.b-=4},qd,function(){var a;Kc(this,a=K(this)+Ic(this));this.H=this.H&255|a>>8&256;this.b-=10},function(){this.j=this.W(Ic(this));this.b-=7},function(){Jc(this,Ic(this)-1);this.b-=5},function(){this.R=kd(this,this.R);this.b-=5},function(){this.R=jd(this,this.R);this.b-=5},function(){this.R=M(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(this.H&256|this.j)>>1;this.H=this.H&255|a;this.b-=4},qd,function(){Kc(this,N(this));this.b-=10},function(){var a=
|
|
|
|
|
N(this);this.B.sb(a,K(this));this.b-=16},function(){Kc(this,K(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=M(this);this.b-=7},function(){var a=0,b=Lc(this);if(Nc(this)||9<(this.j&15))a|=6;if(b||154<=this.j)a|=96,b=1;this.j=Qc(this,a);this.H=b?this.H|256:this.H&-257;this.b-=4},qd,function(){var a;Kc(this,a=K(this)+K(this));this.H=this.H&255|a>>8&256;this.b-=10},function(){var a;a=N(this);a=this.B.Ca(a);Kc(this,a);this.b-=
|
|
|
|
|
16},function(){Kc(this,K(this)-1);this.b-=5},function(){this.U=kd(this,this.U);this.b-=5},function(){this.U=jd(this,this.U);this.b-=5},function(){this.U=M(this);this.b-=7},function(){this.j=~this.j&255;this.b-=4},qd,function(){this.ca=N(this)&65535;this.b-=10},function(){this.fa(N(this),this.j);this.b-=13},function(){this.ca=this.ca+1&65535;this.b-=5},function(){var a=K(this);this.fa(a,kd(this,this.W(a)));this.b-=10},function(){var a=K(this);this.fa(a,jd(this,this.W(a)));this.b-=10},function(){this.fa(K(this),
|
|
|
|
|
M(this));this.b-=10},function(){this.H|=256;this.b-=4},qd,function(){var a;Kc(this,a=K(this)+this.ca);this.H=this.H&255|a>>8&256;this.b-=10},function(){this.j=this.W(N(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=M(this);this.b-=7},function(){this.H=Lc(this)?this.H&-257:this.H|256;this.b-=4},function(){this.b-=5},function(){this.N=this.O;this.b-=5},function(){this.N=this.P;
|
|
|
|
|
this.b-=5},function(){this.N=this.R;this.b-=5},function(){this.N=this.S;this.b-=5},function(){this.N=this.U;this.b-=5},function(){this.N=this.W(K(this));this.b-=7},function(){this.N=this.j;this.b-=5},function(){this.O=this.N;this.b-=5},function(){this.b-=5},function(){this.O=this.P;this.b-=5},function(){this.O=this.R;this.b-=5},function(){this.O=this.S;this.b-=5},function(){this.O=this.U;this.b-=5},function(){this.O=this.W(K(this));this.b-=7},function(){this.O=this.j;this.b-=5},function(){this.P=
|
|
|
|
|
this.N;this.b-=5},function(){this.P=this.O;this.b-=5},function(){this.b-=5},function(){this.P=this.R;this.b-=5},function(){this.P=this.S;this.b-=5},function(){this.P=this.U;this.b-=5},function(){this.P=this.W(K(this));this.b-=7},function(){this.P=this.j;this.b-=5},function(){this.R=this.N;this.b-=5},function(){this.R=this.O;this.b-=5},function(){this.R=this.P;this.b-=5},function(){this.b-=5},function(){this.R=this.S;this.b-=5},function(){this.R=this.U;this.b-=5},function(){this.R=this.W(K(this));
|
|
|
|
|
this.b-=7},function(){this.R=this.j;this.b-=5},function(){this.S=this.N;this.b-=5},function(){this.S=this.O;this.b-=5},function(){this.S=this.P;this.b-=5},function(){this.S=this.R;this.b-=5},function(){this.b-=5},function(){this.S=this.U;this.b-=5},function(){this.S=this.W(K(this));this.b-=7},function(){this.S=this.j;this.b-=5},function(){this.U=this.N;this.b-=5},function(){this.U=this.O;this.b-=5},function(){this.U=this.P;this.b-=5},function(){this.U=this.R;this.b-=5},function(){this.U=this.S;this.b-=
|
|
|
|
|
5},function(){this.b-=5},function(){this.U=this.W(K(this));this.b-=7},function(){this.U=this.j;this.b-=5},function(){this.fa(K(this),this.N);this.b-=7},function(){this.fa(K(this),this.O);this.b-=7},function(){this.fa(K(this),this.P);this.b-=7},function(){this.fa(K(this),this.R);this.b-=7},function(){this.fa(K(this),this.S);this.b-=7},function(){this.fa(K(this),this.U);this.b-=7},function(){var a=this.L-1;if(this.J.length)for(var b=0;b<this.J.length;b++)if(this.J[b](a))return;this.u|=16;this.b-=7;
|
|
|
|
|
this.F&&fb(this,-2147483648)?(H(this,a),this.F.da()):this.pa&512||(this.F&&H(this,a),this.da())},function(){this.fa(K(this),this.j);this.b-=7},function(){this.j=this.N;this.b-=5},function(){this.j=this.O;this.b-=5},function(){this.j=this.P;this.b-=5},function(){this.j=this.R;this.b-=5},function(){this.j=this.S;this.b-=5},function(){this.j=this.U;this.b-=5},function(){this.j=this.W(K(this));this.b-=7},function(){this.b-=5},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.R);this.b-=4},function(){this.j=Qc(this,this.S);this.b-=4},function(){this.j=Qc(this,this.U);this.b-=4},function(){this.j=Qc(this,this.W(K(this)));this.b-=7},function(){this.j=Qc(this,this.j);this.b-=4},function(){this.j=Rc(this,this.N);this.b-=4},function(){this.j=Rc(this,this.O);this.b-=4},function(){this.j=Rc(this,this.P);this.b-=4},function(){this.j=Rc(this,this.R);this.b-=4},function(){this.j=Rc(this,this.S);
|
|
|
|
|
this.b-=4},function(){this.j=Rc(this,this.U);this.b-=4},function(){this.j=Rc(this,this.W(K(this)));this.b-=7},function(){this.j=Rc(this,this.j);this.b-=4},function(){this.j=L(this,this.N);this.b-=4},function(){this.j=L(this,this.O);this.b-=4},function(){this.j=L(this,this.P);this.b-=4},function(){this.j=L(this,this.R);this.b-=4},function(){this.j=L(this,this.S);this.b-=4},function(){this.j=L(this,this.U);this.b-=4},function(){this.j=L(this,this.W(K(this)));this.b-=7},function(){this.j=L(this,this.j);
|
|
|
|
|
this.b-=4},function(){this.j=md(this,this.N);this.b-=4},function(){this.j=md(this,this.O);this.b-=4},function(){this.j=md(this,this.P);this.b-=4},function(){this.j=md(this,this.R);this.b-=4},function(){this.j=md(this,this.S);this.b-=4},function(){this.j=md(this,this.U);this.b-=4},function(){this.j=md(this,this.W(K(this)));this.b-=7},function(){this.j=md(this,this.j);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.R);this.b-=4},function(){this.j=id(this,this.S);this.b-=4},function(){this.j=id(this,this.U);this.b-=4},function(){this.j=id(this,this.W(K(this)));this.b-=7},function(){this.j=id(this,this.j);this.b-=4},function(){this.j=nd(this,this.N);this.b-=4},function(){this.j=nd(this,this.O);this.b-=4},function(){this.j=nd(this,this.P);this.b-=4},function(){this.j=nd(this,this.R);this.b-=4},function(){this.j=nd(this,this.S);this.b-=4},function(){this.j=nd(this,this.U);
|
|
|
|
|
this.b-=4},function(){this.j=nd(this,this.W(K(this)));this.b-=7},function(){this.j=nd(this,this.j);this.b-=4},function(){this.j=ld(this,this.N);this.b-=4},function(){this.j=ld(this,this.O);this.b-=4},function(){this.j=ld(this,this.P);this.b-=4},function(){this.j=ld(this,this.R);this.b-=4},function(){this.j=ld(this,this.S);this.b-=4},function(){this.j=ld(this,this.U);this.b-=4},function(){this.j=ld(this,this.W(K(this)));this.b-=7},function(){this.j=ld(this,this.j);this.b-=4},function(){L(this,this.N);
|
|
|
|
|
this.b-=4},function(){L(this,this.O);this.b-=4},function(){L(this,this.P);this.b-=4},function(){L(this,this.R);this.b-=4},function(){L(this,this.S);this.b-=4},function(){L(this,this.U);this.b-=4},function(){L(this,this.W(K(this)));this.b-=7},function(){L(this,this.j);this.b-=4},function(){Oc(this)||(H(this,O(this)),this.b-=6);this.b-=5},function(){Hc(this,O(this));this.b-=10},function(){var a=N(this);Oc(this)||H(this,a);this.b-=10},rd,function(){var a=N(this);Oc(this)||(P(this,this.L),H(this,a),this.b-=
|
|
|
|
|
6);this.b-=11},function(){P(this,Gc(this));this.b-=11},function(){this.j=Qc(this,M(this));this.b-=7},function(){P(this,this.L);H(this,0);this.b-=11},function(){Oc(this)&&(H(this,O(this)),this.b-=6);this.b-=5},sd,function(){var a=N(this);Oc(this)&&H(this,a);this.b-=10},rd,function(){var a=N(this);Oc(this)&&(P(this,this.L),H(this,a),this.b-=6);this.b-=11},td,function(){this.j=Rc(this,M(this));this.b-=7},function(){P(this,this.L);H(this,8);this.b-=11},function(){Lc(this)||(H(this,O(this)),this.b-=6);
|
|
|
|
|
this.b-=5},function(){Jc(this,O(this));this.b-=10},function(){var a=N(this);Lc(this)||H(this,a);this.b-=10},function(){var a=M(this);Ib(this.B,a,this.j,this.L+-2&65535);this.b-=10},function(){var a=N(this);Lc(this)||(P(this,this.L),H(this,a),this.b-=6);this.b-=11},function(){P(this,Ic(this));this.b-=11},function(){this.j=L(this,M(this));this.b-=7},function(){P(this,this.L);H(this,16);this.b-=11},function(){Lc(this)&&(H(this,O(this)),this.b-=6);this.b-=5},sd,function(){var a=N(this);Lc(this)&&H(this,
|
|
|
|
|
a);this.b-=10},function(){var a=M(this);this.j=Fb(this.B,a,this.L+-2&65535)&255;this.b-=10},function(){var a=N(this);Lc(this)&&(P(this,this.L),H(this,a),this.b-=6);this.b-=11},td,function(){this.j=md(this,M(this));this.b-=7},function(){P(this,this.L);H(this,24);this.b-=11},function(){Mc(this)||(H(this,O(this)),this.b-=6);this.b-=5},function(){Kc(this,O(this));this.b-=10},function(){var a=N(this);Mc(this)||H(this,a);this.b-=10},function(){var a=O(this);P(this,K(this));Kc(this,a);this.b-=18},function(){var a=
|
|
|
|
|
N(this);Mc(this)||(P(this,this.L),H(this,a),this.b-=6);this.b-=11},function(){P(this,K(this));this.b-=11},function(){this.j=id(this,M(this));this.b-=7},function(){P(this,this.L);H(this,32);this.b-=11},function(){Mc(this)&&(H(this,O(this)),this.b-=6);this.b-=5},function(){H(this,K(this));this.b-=5},function(){var a=N(this);Mc(this)&&H(this,a);this.b-=10},function(){var a=K(this);Kc(this,Ic(this));Jc(this,a);this.b-=5},function(){var a=N(this);Mc(this)&&(P(this,this.L),H(this,a),this.b-=6);this.b-=
|
|
|
|
|
11},td,function(){this.j=nd(this,M(this));this.b-=7},function(){P(this,this.L);H(this,40);this.b-=11},function(){Pc(this)||(H(this,O(this)),this.b-=6);this.b-=5},function(){var a=O(this);Dc(this,a);this.j=a>>8;this.b-=10},function(){var a=N(this);Pc(this)||H(this,a);this.b-=10},function(){this.pa&=-513;this.b-=4},function(){var a=N(this);Pc(this)||(P(this,this.L),H(this,a),this.b-=6);this.b-=11},function(){P(this,Fc(this)&255|this.j<<8);this.b-=11},function(){this.j=ld(this,M(this));this.b-=7},function(){P(this,
|
|
|
|
|
this.L);H(this,48);this.b-=11},function(){Pc(this)&&(H(this,O(this)),this.b-=6);this.b-=5},function(){this.ca=K(this)&65535;this.b-=5},function(){var a=N(this);Pc(this)&&H(this,a);this.b-=10},function(){this.pa|=512;this.b-=4},function(){var a=N(this);Pc(this)&&(P(this,this.L),H(this,a),this.b-=6);this.b-=11},td,function(){L(this,M(this));this.b-=7},function(){P(this,this.L);H(this,56);this.b-=11}];
|
|
|
|
|
function T(a){v.call(this,"ChipSet",a,T,32768);var b=a.model;b&&!ud[b]&&t("Unrecognized ChipSet model: "+b);this.Sa=ud[b]||vd;a.sound&&(this.X=null,window&&(this.X=window.AudioContext||window.webkitAudioContext),this.X&&new this.X);E(this)}z(T);var vd=1978.1,ud={SI1978:vd};m=T.prototype;m.qa=function(){return!1};
|
|
|
|
|
m.Da=function(a,b,c,d){this.B=b;this.b=c;this.F=d;this.w=a;if(this.Sa==vd){var e;a=wd;void 0===e&&(e=0);for(var f in a){c=b;d=+f+e;var h=a[f].bind(this);if(void 0!==h)for(var g=+f+e;g<=d;g++)void 0!==c.w[g]?t("Input port "+r(g)+" already registered"):c.w[g]=[h,!1]}var l;e=xd;void 0===l&&(l=0);for(var k in e)if(f=b,a=+k+l,c=e[k].bind(this),void 0!==c)for(d=+k+l;d<=a;d++)void 0!==f.u[d]?t("Output port "+r(d)+" already registered"):f.u[d]=[c,!1]}};
|
|
|
|
|
m.za=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.ya=function(a){return a?this.save():!0};m.reset=function(){this.G=this.I=this.D=this.u=this.M=this.K=this.J=0};m.save=function(){var a=new I(this);this.Sa==vd&&J(a,0,[this.J,this.K,this.M,this.u,this.D,this.G,this.I]);return a.data()};m.restore=function(a){a=a[0];this.Sa==vd&&(this.J=a[0],this.K=a[1],this.M=a[2],this.u=a[3],this.D=a[4],this.G=a[5],this.I=a[6]);return!0};m.start=function(){};m.stop=function(){};
|
|
|
|
|
m.bc=function(a,b){var c=this.J;db(this,a,null,b,"STATUS0",c);return c};m.cc=function(a,b){var c=this.K;db(this,a,null,b,"STATUS1",c);return c};m.dc=function(a,b){var c=this.M;db(this,a,null,b,"STATUS2",c);return c};m.ac=function(a,b){var c=this.u>>8-this.D&255;db(this,a,null,b,"SHIFT.RESULT",c);return c};m.ic=function(a,b,c){db(this,a,b,c,"SHIFT.COUNT",null);this.D=b};m.kc=function(a,b,c){db(this,a,b,c,"SOUND1",null);this.G=b};
|
|
|
|
|
m.jc=function(a,b,c){db(this,a,b,c,"SHIFT.DATA",null);this.u=b<<8|this.u>>8};m.lc=function(a,b,c){db(this,a,b,c,"SOUND2",null);this.I=b};m.mc=function(a,b,c){db(this,a,b,c,"WATCHDOG",null)};var wd={0:T.prototype.bc,1:T.prototype.cc,2:T.prototype.dc,3:T.prototype.ac},xd={2:T.prototype.ic,3:T.prototype.kc,4:T.prototype.jc,5:T.prototype.lc,6:T.prototype.mc};Ja(function(){for(var a=D(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new T(d);cb(d,c)}});
|
|
|
|
|
function yd(a){v.call(this,"ROM",a,yd);this.w=null;this.I=a.addr;this.u=a.size;this.J=a.writable;this.D=a.alias;this.G=a.file;this.K=ca(this.G);if(this.G){a=this.G;var b=da(this.K);"json"!=b&&"hex"!=b&&(a=oa()+"/api/v1/dump?file="+this.G+"&format=bytes&decimal=true");var c=this;na(a,null,!0,function(a,b,f){zd(c,a,b,f)})}}z(yd);var Ad=[0,5];yd.prototype.Da=function(a,b,c,d){this.B=b;this.b=c;this.F=d;Bd(this)};
|
|
|
|
|
yd.prototype.za=function(){if(this.Aa){if(this.F){var a=this.F,b=this.id,c=this.I,d=this.u,e=this.Aa,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var l=g.o,k=g.a;if(void 0!==l){var n=f,l=[l>>>0,h],p=ja(n,l,a.Fb);0>p&&n.splice(-(p+1),0,l)}k&&(g.a=k.replace(/''/g,'"'))}a.J.push({nc:b,C:c,gc:d,Aa:e,Cb:f})}delete this.Aa}return!0};yd.prototype.ya=function(){return!0};
|
|
|
|
|
function zd(a,b,c,d){if(d)a.oa("Unable to load system ROM (error "+d+": "+b+")");else{Ya(a.Ib,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.w=f;else if(h)for(a.w=Array(4*h.length),d=c=0;c<h.length;c++)a.w[d++]=h[c]&255,a.w[d++]=h[c]>>8&255,a.w[d++]=h[c]>>16&255,a.w[d++]=h[c]>>24&255;else a.w=e;a.Aa=e.symbols;if(!a.w.length){t("Empty ROM: "+b);return}if(1==a.w.length){t(a.w[0]);return}}catch(g){a.oa("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
|
|
|
|
" ").replace(/ +$/,"").split(" "),a.w=Array(b.length),e=0;e<b.length;e++)a.w[e]=aa(b[e],16);Bd(a)}}
|
|
|
|
|
function Bd(a){if(!ib(a))if(!a.G)E(a);else if(a.w&&a.B){a.u||(a.u=a.w.length);if(a.w.length!=a.u)jb(a,"ROM size (0x"+q(a.w.length)+") does not match specified size ("+("0x"+q(a.u))+")");else if(Cd(a,a.I)){var b=[];"number"==typeof a.D?b.push(a.D):null!=a.D&&a.D.length&&(b=a.D);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.B,h=d.u,g=[],l=d.I>>>f.ea;0<h&&l<f.T.length;)g.push(f.T[l++]),h-=f.ua;f=d.B;d=d.u;h=0;for(e>>>=f.ea;0<d&&e<f.T.length;){l=g[h++];if(!l)break;f.T[e++]=l;d-=f.ua}}delete a.w}E(a)}}
|
|
|
|
|
function Cd(a,b){if(rb(a.B,b,a.u,a.J?1:Pb)){var c;for(c=0;c<a.w.length;c++)vb(a.B,b+c,a.w[c]);if(a.J&&256==b){for(c=0;c<Ad.length;c++)vb(a.B,Ad[c],118);Cc(a.b,function(a){return function(b){if(0<=Ad.indexOf(b)){var c=!1,h=a.b,g=a.F;if(5==b)switch(c=!0,h.O){case 2:Dd(a,String.fromCharCode(h.R));break;case 9:for(var l=Ic(h),k="",n=255;n--;){var p=a.b.W(l++);if(36==p)break;k+=String.fromCharCode(p)}Dd(a,k);break;default:c=!1}c?sd.call(h):g&&(a.g("\nCP/M vector "+r(b)),H(h,b),g.da());b=!0}else b=!1;return b}}(a));
|
|
|
|
|
Ec(a.b,b)}return!0}return!1}function Dd(a,b){b=b.replace(/\r/g,"");a.ta&&(a.ta.value+=b,a.ta.scrollTop=a.ta.scrollHeight)}Ja(function(){for(var a=D(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new yd(d);cb(d,c)}});function Ed(a){v.call(this,"RAM",a,Ed);this.D=a.addr;this.u=a.size;this.w=!1}z(Ed);m=Ed.prototype;m.Da=function(a,b,c,d){this.B=b;this.b=c;this.F=d;E(this)};m.za=function(a,b){b||this.reset();return!0};m.ya=function(a){return a?this.save():!0};
|
|
|
|
|
m.reset=function(){!this.w&&this.u&&rb(this.B,this.D,this.u,1)&&(this.w=!0,this.status(Math.floor(this.u/1024)+"Kb allocated"));this.w||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ja(function(){for(var a=D(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Ed(d);cb(d,c)}});function Fd(a){v.call(this,"Keyboard",a,Fd,65536);E(this)}z(Fd);
|
|
|
|
|
Ja(function(){for(var a=D(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Fd(d);cb(d,c)}});
|
|
|
|
|
function Gd(a,b,c){v.call(this,"Video",a,Gd,262144);this.Y=a.screenWidth;this.K=a.screenHeight;this.X=a.bufferAddr;this.u=a.bufferCols;this.D=a.bufferRows;this.ga=a.bufferBits||1;this.Zb=a.interruptRate;this.Ba=a.refreshRate||60;this.G=c;this.na=a.screenRotation;90==this.na&&(this.G.translate(0,this.K),this.G.rotate(-this.na*Math.PI/180),this.G.scale(this.K/this.Y,this.Y/this.K));this.ra=[[0,0,0,255],[255,255,255,255]];this.ba=this.G.createImageData(this.u,this.D);this.J=document.createElement("canvas");
|
|
|
|
|
this.J.width=this.u;this.J.height=this.D;this.sa=this.J.getContext("2d")}z(Gd);Gd.prototype.Da=function(a,b,c,d){this.w=a;this.B=b;this.b=c;this.F=d;this.M=(this.u*this.ga>>3)*this.D;rb(this.B,this.X,this.M,3)&&(this.la=this.M>>1,this.ma=16/this.ga|0,this.aa=!1,void 0===this.I||this.I.length!=this.la)&&(this.I=Array(this.la));E(this)};
|
|
|
|
|
Ja(function(){for(var a=D(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=B(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing <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<=pa().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||Sa.aspect);f&&.3<=f&&3.33>=f&&(Ia("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Ba("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);e=e.getContext("2d");d=new Gd(d,0,e);cb(d,c)}});
|
|
|
|
|
function Hd(a){v.call(this,"Debugger",a,Hd);this.aa=Id;this.la=this.Na=this.M=0;this.Y=U();this.Gb=U();this.G=-1;this.D=[];this.na=!1;this.ma=U();this.J=[];this.ra={};this.u=this.ba=this.I=[];Jd(this);this.Fa=0;Kd(this);this.bb=[];Ld(this,a.messages);this.tb=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return qc(b,a)}):void 0===global.$&&(global.$=function(a){return qc(b,a)})}z(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],
|
|
|
|
|
m.$a=function(a){this.A.ob=!0;var b=this.A.Yb=this.F&&pd(this.F),c=a?this.A.wb?0:1:-1;this.A.wb=!1;this.D=this.b=a;do{if(this.w){var d;this.w&8&&this.pa&512?(d=199|(this.w&7)<<3,this.w&=-16,this.pa&=-513,this.M[d].call(this),d=!0):d=!1;if(d){if(!a){this.g("interrupt dispatched");break}}else if(this.w&16){this.b=0;break}}if(b){if(qd(this.F,this.L,c)){this.da();break}c=1}this.M[L(this)].call(this)}while(0<this.b);return this.A.ob?this.D-this.b:void 0===this.A.ob?0:-1};
|
|
|
|
|
Ja(function(){for(var a=A(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new zc(d);cb(d,c)}});function rd(){this.b-=4}function sd(){F(this,M(this));this.b-=10}function td(){F(this,N(this));this.b-=10}function ud(){var a=M(this);Q(this,this.L);F(this,a);this.b-=17}
|
|
|
|
|
var Ac=[rd,function(){Ic(this,M(this));this.b-=10},function(){this.ga(Hc(this),this.j);this.b-=7},function(){Ic(this,Hc(this)+1);this.b-=5},function(){this.N=ld(this,this.N);this.b-=5},function(){this.N=kd(this,this.N);this.b-=5},function(){this.N=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|a>>8;this.I=this.I&255|a&256;this.b-=4},rd,function(){var a;Lc(this,a=I(this)+Hc(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.W(Hc(this));this.b-=7},function(){Ic(this,Hc(this)-
|
|
|
|
|
1);this.b-=5},function(){this.O=ld(this,this.O);this.b-=5},function(){this.O=kd(this,this.O);this.b-=5},function(){this.O=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(a|this.j)>>1;this.I=this.I&255|a;this.b-=4},rd,function(){Kc(this,M(this));this.b-=10},function(){this.ga(Jc(this),this.j);this.b-=7},function(){Kc(this,Jc(this)+1);this.b-=5},function(){this.P=ld(this,this.P);this.b-=5},function(){this.P=kd(this,this.P);this.b-=5},function(){this.P=L(this);this.b-=7},function(){var a=this.j<<
|
|
|
|
|
1;this.j=a&255|this.I>>8;this.I=this.I&255|a&256;this.b-=4},rd,function(){var a;Lc(this,a=I(this)+Jc(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.W(Jc(this));this.b-=7},function(){Kc(this,Jc(this)-1);this.b-=5},function(){this.R=ld(this,this.R);this.b-=5},function(){this.R=kd(this,this.R);this.b-=5},function(){this.R=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(this.I&256|this.j)>>1;this.I=this.I&255|a;this.b-=4},rd,function(){Lc(this,M(this));this.b-=10},function(){var a=
|
|
|
|
|
M(this);this.B.sb(a,I(this));this.b-=16},function(){Lc(this,I(this)+1);this.b-=5},function(){this.S=ld(this,this.S);this.b-=5},function(){this.S=kd(this,this.S);this.b-=5},function(){this.S=L(this);this.b-=7},function(){var a=0,b=Mc(this);if(Oc(this)||9<(this.j&15))a|=6;if(b||154<=this.j)a|=96,b=1;this.j=Rc(this,a);this.I=b?this.I|256:this.I&-257;this.b-=4},rd,function(){var a;Lc(this,a=I(this)+I(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){var a;a=M(this);a=this.B.Ea(a);Lc(this,a);this.b-=
|
|
|
|
|
16},function(){Lc(this,I(this)-1);this.b-=5},function(){this.U=ld(this,this.U);this.b-=5},function(){this.U=kd(this,this.U);this.b-=5},function(){this.U=L(this);this.b-=7},function(){this.j=~this.j&255;this.b-=4},rd,function(){this.ca=M(this)&65535;this.b-=10},function(){this.ga(M(this),this.j);this.b-=13},function(){this.ca=this.ca+1&65535;this.b-=5},function(){var a=I(this);this.ga(a,ld(this,this.W(a)));this.b-=10},function(){var a=I(this);this.ga(a,kd(this,this.W(a)));this.b-=10},function(){this.ga(I(this),
|
|
|
|
|
L(this));this.b-=10},function(){this.I|=256;this.b-=4},rd,function(){var a;Lc(this,a=I(this)+this.ca);this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.W(M(this));this.b-=13},function(){this.ca=this.ca-1&65535;this.b-=5},function(){this.j=ld(this,this.j);this.b-=5},function(){this.j=kd(this,this.j);this.b-=5},function(){this.j=L(this);this.b-=7},function(){this.I=Mc(this)?this.I&-257:this.I|256;this.b-=4},function(){this.b-=5},function(){this.N=this.O;this.b-=5},function(){this.N=this.P;
|
|
|
|
|
this.b-=5},function(){this.N=this.R;this.b-=5},function(){this.N=this.S;this.b-=5},function(){this.N=this.U;this.b-=5},function(){this.N=this.W(I(this));this.b-=7},function(){this.N=this.j;this.b-=5},function(){this.O=this.N;this.b-=5},function(){this.b-=5},function(){this.O=this.P;this.b-=5},function(){this.O=this.R;this.b-=5},function(){this.O=this.S;this.b-=5},function(){this.O=this.U;this.b-=5},function(){this.O=this.W(I(this));this.b-=7},function(){this.O=this.j;this.b-=5},function(){this.P=
|
|
|
|
|
this.N;this.b-=5},function(){this.P=this.O;this.b-=5},function(){this.b-=5},function(){this.P=this.R;this.b-=5},function(){this.P=this.S;this.b-=5},function(){this.P=this.U;this.b-=5},function(){this.P=this.W(I(this));this.b-=7},function(){this.P=this.j;this.b-=5},function(){this.R=this.N;this.b-=5},function(){this.R=this.O;this.b-=5},function(){this.R=this.P;this.b-=5},function(){this.b-=5},function(){this.R=this.S;this.b-=5},function(){this.R=this.U;this.b-=5},function(){this.R=this.W(I(this));
|
|
|
|
|
this.b-=7},function(){this.R=this.j;this.b-=5},function(){this.S=this.N;this.b-=5},function(){this.S=this.O;this.b-=5},function(){this.S=this.P;this.b-=5},function(){this.S=this.R;this.b-=5},function(){this.b-=5},function(){this.S=this.U;this.b-=5},function(){this.S=this.W(I(this));this.b-=7},function(){this.S=this.j;this.b-=5},function(){this.U=this.N;this.b-=5},function(){this.U=this.O;this.b-=5},function(){this.U=this.P;this.b-=5},function(){this.U=this.R;this.b-=5},function(){this.U=this.S;this.b-=
|
|
|
|
|
5},function(){this.b-=5},function(){this.U=this.W(I(this));this.b-=7},function(){this.U=this.j;this.b-=5},function(){this.ga(I(this),this.N);this.b-=7},function(){this.ga(I(this),this.O);this.b-=7},function(){this.ga(I(this),this.P);this.b-=7},function(){this.ga(I(this),this.R);this.b-=7},function(){this.ga(I(this),this.S);this.b-=7},function(){this.ga(I(this),this.U);this.b-=7},function(){var a=this.L-1;if(this.J.length)for(var b=0;b<this.J.length;b++)if(this.J[b](a))return;this.w|=16;this.b-=7;
|
|
|
|
|
this.F&&fb(this,-2147483648)?(F(this,a),this.F.da()):this.pa&512||(this.F&&F(this,a),this.da())},function(){this.ga(I(this),this.j);this.b-=7},function(){this.j=this.N;this.b-=5},function(){this.j=this.O;this.b-=5},function(){this.j=this.P;this.b-=5},function(){this.j=this.R;this.b-=5},function(){this.j=this.S;this.b-=5},function(){this.j=this.U;this.b-=5},function(){this.j=this.W(I(this));this.b-=7},function(){this.b-=5},function(){this.j=Rc(this,this.N);this.b-=4},function(){this.j=Rc(this,this.O);
|
|
|
|
|
this.b-=4},function(){this.j=Rc(this,this.P);this.b-=4},function(){this.j=Rc(this,this.R);this.b-=4},function(){this.j=Rc(this,this.S);this.b-=4},function(){this.j=Rc(this,this.U);this.b-=4},function(){this.j=Rc(this,this.W(I(this)));this.b-=7},function(){this.j=Rc(this,this.j);this.b-=4},function(){this.j=Sc(this,this.N);this.b-=4},function(){this.j=Sc(this,this.O);this.b-=4},function(){this.j=Sc(this,this.P);this.b-=4},function(){this.j=Sc(this,this.R);this.b-=4},function(){this.j=Sc(this,this.S);
|
|
|
|
|
this.b-=4},function(){this.j=Sc(this,this.U);this.b-=4},function(){this.j=Sc(this,this.W(I(this)));this.b-=7},function(){this.j=Sc(this,this.j);this.b-=4},function(){this.j=J(this,this.N);this.b-=4},function(){this.j=J(this,this.O);this.b-=4},function(){this.j=J(this,this.P);this.b-=4},function(){this.j=J(this,this.R);this.b-=4},function(){this.j=J(this,this.S);this.b-=4},function(){this.j=J(this,this.U);this.b-=4},function(){this.j=J(this,this.W(I(this)));this.b-=7},function(){this.j=J(this,this.j);
|
|
|
|
|
this.b-=4},function(){this.j=nd(this,this.N);this.b-=4},function(){this.j=nd(this,this.O);this.b-=4},function(){this.j=nd(this,this.P);this.b-=4},function(){this.j=nd(this,this.R);this.b-=4},function(){this.j=nd(this,this.S);this.b-=4},function(){this.j=nd(this,this.U);this.b-=4},function(){this.j=nd(this,this.W(I(this)));this.b-=7},function(){this.j=nd(this,this.j);this.b-=4},function(){this.j=jd(this,this.N);this.b-=4},function(){this.j=jd(this,this.O);this.b-=4},function(){this.j=jd(this,this.P);
|
|
|
|
|
this.b-=4},function(){this.j=jd(this,this.R);this.b-=4},function(){this.j=jd(this,this.S);this.b-=4},function(){this.j=jd(this,this.U);this.b-=4},function(){this.j=jd(this,this.W(I(this)));this.b-=7},function(){this.j=jd(this,this.j);this.b-=4},function(){this.j=od(this,this.N);this.b-=4},function(){this.j=od(this,this.O);this.b-=4},function(){this.j=od(this,this.P);this.b-=4},function(){this.j=od(this,this.R);this.b-=4},function(){this.j=od(this,this.S);this.b-=4},function(){this.j=od(this,this.U);
|
|
|
|
|
this.b-=4},function(){this.j=od(this,this.W(I(this)));this.b-=7},function(){this.j=od(this,this.j);this.b-=4},function(){this.j=md(this,this.N);this.b-=4},function(){this.j=md(this,this.O);this.b-=4},function(){this.j=md(this,this.P);this.b-=4},function(){this.j=md(this,this.R);this.b-=4},function(){this.j=md(this,this.S);this.b-=4},function(){this.j=md(this,this.U);this.b-=4},function(){this.j=md(this,this.W(I(this)));this.b-=7},function(){this.j=md(this,this.j);this.b-=4},function(){J(this,this.N);
|
|
|
|
|
this.b-=4},function(){J(this,this.O);this.b-=4},function(){J(this,this.P);this.b-=4},function(){J(this,this.R);this.b-=4},function(){J(this,this.S);this.b-=4},function(){J(this,this.U);this.b-=4},function(){J(this,this.W(I(this)));this.b-=7},function(){J(this,this.j);this.b-=4},function(){Pc(this)||(F(this,N(this)),this.b-=6);this.b-=5},function(){Ic(this,N(this));this.b-=10},function(){var a=M(this);Pc(this)||F(this,a);this.b-=10},sd,function(){var a=M(this);Pc(this)||(Q(this,this.L),F(this,a),this.b-=
|
|
|
|
|
6);this.b-=11},function(){Q(this,Hc(this));this.b-=11},function(){this.j=Rc(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,0);this.b-=11},function(){Pc(this)&&(F(this,N(this)),this.b-=6);this.b-=5},td,function(){var a=M(this);Pc(this)&&F(this,a);this.b-=10},sd,function(){var a=M(this);Pc(this)&&(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},ud,function(){this.j=Sc(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,8);this.b-=11},function(){Mc(this)||(F(this,N(this)),this.b-=6);
|
|
|
|
|
this.b-=5},function(){Kc(this,N(this));this.b-=10},function(){var a=M(this);Mc(this)||F(this,a);this.b-=10},function(){var a=L(this);Ib(this.B,a,this.j,this.L+-2&65535);this.b-=10},function(){var a=M(this);Mc(this)||(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},function(){Q(this,Jc(this));this.b-=11},function(){this.j=J(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,16);this.b-=11},function(){Mc(this)&&(F(this,N(this)),this.b-=6);this.b-=5},td,function(){var a=M(this);Mc(this)&&F(this,
|
|
|
|
|
a);this.b-=10},function(){var a=L(this);this.j=Fb(this.B,a,this.L+-2&65535)&255;this.b-=10},function(){var a=M(this);Mc(this)&&(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},ud,function(){this.j=nd(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,24);this.b-=11},function(){Nc(this)||(F(this,N(this)),this.b-=6);this.b-=5},function(){Lc(this,N(this));this.b-=10},function(){var a=M(this);Nc(this)||F(this,a);this.b-=10},function(){var a=N(this);Q(this,I(this));Lc(this,a);this.b-=18},function(){var a=
|
|
|
|
|
M(this);Nc(this)||(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},function(){Q(this,I(this));this.b-=11},function(){this.j=jd(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,32);this.b-=11},function(){Nc(this)&&(F(this,N(this)),this.b-=6);this.b-=5},function(){F(this,I(this));this.b-=5},function(){var a=M(this);Nc(this)&&F(this,a);this.b-=10},function(){var a=I(this);Lc(this,Jc(this));Kc(this,a);this.b-=5},function(){var a=M(this);Nc(this)&&(Q(this,this.L),F(this,a),this.b-=6);this.b-=
|
|
|
|
|
11},ud,function(){this.j=od(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,40);this.b-=11},function(){Qc(this)||(F(this,N(this)),this.b-=6);this.b-=5},function(){var a=N(this);Dc(this,a);this.j=a>>8;this.b-=10},function(){var a=M(this);Qc(this)||F(this,a);this.b-=10},function(){this.pa&=-513;this.b-=4},function(){var a=M(this);Qc(this)||(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},function(){Q(this,Fc(this)&255|this.j<<8);this.b-=11},function(){this.j=md(this,L(this));this.b-=7},function(){Q(this,
|
|
|
|
|
this.L);F(this,48);this.b-=11},function(){Qc(this)&&(F(this,N(this)),this.b-=6);this.b-=5},function(){this.ca=I(this)&65535;this.b-=5},function(){var a=M(this);Qc(this)&&F(this,a);this.b-=10},function(){this.pa|=512;this.b-=4},function(){var a=M(this);Qc(this)&&(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},ud,function(){J(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,56);this.b-=11}];
|
|
|
|
|
function S(a){w.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!vd[b]&&t("Unrecognized ChipSet model: "+b);this.Sa=vd[b]||wd;a.sound&&(this.X=null,window&&(this.X=window.AudioContext||window.webkitAudioContext),this.X&&new this.X);C(this)}Wa(S);var wd=1978.1,vd={SI1978:wd};m=S.prototype;m.qa=function(){return!1};
|
|
|
|
|
m.Fa=function(a,b,c,d){this.B=b;this.b=c;this.F=d;this.u=a;if(this.Sa==wd){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.w[d]?t("Output port "+r(d)+" already registered"):f.w[d]=[c,!1]}};
|
|
|
|
|
m.za=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.ya=function(a){return a?this.save():!0};m.reset=function(){this.G=this.H=this.D=this.w=this.M=this.K=this.J=0};m.save=function(){var a=new Gc(this);this.Sa==wd&&H(a,0,[this.J,this.K,this.M,this.w,this.D,this.G,this.H]);return a.data()};m.restore=function(a){a=a[0];this.Sa==wd&&(this.J=a[0],this.K=a[1],this.M=a[2],this.w=a[3],this.D=a[4],this.G=a[5],this.H=a[6]);return!0};m.start=function(){};m.stop=function(){};
|
|
|
|
|
m.bc=function(a,b){var c=this.J;db(this,a,null,b,"STATUS0",c);return c};m.cc=function(a,b){var c=this.K;db(this,a,null,b,"STATUS1",c);return c};m.dc=function(a,b){var c=this.M;db(this,a,null,b,"STATUS2",c);return c};m.ac=function(a,b){var c=this.w>>8-this.D&255;db(this,a,null,b,"SHIFT.RESULT",c);return c};m.ic=function(a,b,c){db(this,a,b,c,"SHIFT.COUNT",null);this.D=b};m.kc=function(a,b,c){db(this,a,b,c,"SOUND1",null);this.G=b};
|
|
|
|
|
m.jc=function(a,b,c){db(this,a,b,c,"SHIFT.DATA",null);this.w=b<<8|this.w>>8};m.lc=function(a,b,c){db(this,a,b,c,"SOUND2",null);this.H=b};m.mc=function(a,b,c){db(this,a,b,c,"WATCHDOG",null)};var xd={0:S.prototype.bc,1:S.prototype.cc,2:S.prototype.dc,3:S.prototype.ac},yd={2:S.prototype.ic,3:S.prototype.kc,4:S.prototype.jc,5:S.prototype.lc,6:S.prototype.mc};Ja(function(){for(var a=A(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new S(d);cb(d,c)}});
|
|
|
|
|
function zd(a){w.call(this,"ROM",a,zd);this.u=null;this.H=a.addr;this.w=a.size;this.J=a.writable;this.D=a.alias;this.G=a.file;this.K=ba(this.G);if(this.G){a=this.G;var b=ca(this.K);"json"!=b&&"hex"!=b&&(a=oa()+"/api/v1/dump?file="+this.G+"&format=bytes&decimal=true");var c=this;na(a,null,!0,function(a,b,f){Ad(c,a,b,f)})}}Wa(zd);var Bd=[0,5];zd.prototype.Fa=function(a,b,c,d){this.B=b;this.b=c;this.F=d;Cd(this)};
|
|
|
|
|
zd.prototype.za=function(){if(this.Ca){if(this.F){var a=this.F,b=this.id,c=this.H,d=this.w,e=this.Ca,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 p=f,k=[k>>>0,h],n=ia(p,k,a.Fb);0>n&&p.splice(-(n+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.J.push({nc:b,C:c,gc:d,Ca:e,Cb:f})}delete this.Ca}return!0};zd.prototype.ya=function(){return!0};
|
|
|
|
|
function Ad(a,b,c,d){if(d)a.oa("Unable to load system ROM (error "+d+": "+b+")");else{Ya(a.Ib,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.Ca=e.symbols;if(!a.u.length){t("Empty ROM: "+b);return}if(1==a.u.length){t(a.u[0]);return}}catch(g){a.oa("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(!ib(a))if(!a.G)C(a);else if(a.u&&a.B){a.w||(a.w=a.u.length);if(a.u.length!=a.w)jb(a,"ROM size (0x"+q(a.u.length)+") does not match specified size ("+("0x"+q(a.w))+")");else if(Dd(a,a.H)){var b=[];"number"==typeof a.D?b.push(a.D):null!=a.D&&a.D.length&&(b=a.D);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.B,h=d.w,g=[],k=d.H>>>f.ea;0<h&&k<f.T.length;)g.push(f.T[k++]),h-=f.ua;f=d.B;d=d.w;h=0;for(e>>>=f.ea;0<d&&e<f.T.length;){k=g[h++];if(!k)break;f.T[e++]=k;d-=f.ua}}delete a.u}C(a)}}
|
|
|
|
|
function Dd(a,b){if(rb(a.B,b,a.w,a.J?1:Pb)){var c;for(c=0;c<a.u.length;c++)vb(a.B,b+c,a.u[c]);if(a.J&&256==b){for(c=0;c<Bd.length;c++)vb(a.B,Bd[c],118);Cc(a.b,function(a){return function(b){if(0<=Bd.indexOf(b)){var c=!1,h=a.b,g=a.F;if(5==b)switch(c=!0,h.O){case 2:Ed(a,String.fromCharCode(h.R));break;case 9:for(var k=Jc(h),l="",p=255;p--;){var n=a.b.W(k++);if(36==n)break;l+=String.fromCharCode(n)}Ed(a,l);break;default:c=!1}c?td.call(h):g&&(a.g("\nCP/M vector "+r(b)),F(h,b),g.da());b=!0}else b=!1;return b}}(a));
|
|
|
|
|
Ec(a.b,b)}return!0}return!1}function Ed(a,b){b=b.replace(/\r/g,"");a.ta&&(a.ta.value+=b,a.ta.scrollTop=a.ta.scrollHeight)}Ja(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);cb(d,c)}});function Fd(a){w.call(this,"RAM",a,Fd);this.D=a.addr;this.w=a.size;this.u=!1}Wa(Fd);m=Fd.prototype;m.Fa=function(a,b,c,d){this.B=b;this.b=c;this.F=d;C(this)};m.za=function(a,b){b||this.reset();return!0};m.ya=function(a){return a?this.save():!0};
|
|
|
|
|
m.reset=function(){!this.u&&this.w&&rb(this.B,this.D,this.w,1)&&(this.u=!0,this.status(Math.floor(this.w/1024)+"Kb allocated"));this.u||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ja(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);cb(d,c)}});function Gd(a){w.call(this,"Keyboard",a,Gd,65536);C(this)}Wa(Gd);
|
|
|
|
|
Ja(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);cb(d,c)}});
|
|
|
|
|
function Hd(a,b,c){w.call(this,"Video",a,Hd,262144);this.Y=a.screenWidth;this.K=a.screenHeight;this.X=a.bufferAddr;this.D=a.bufferCols;this.H=a.bufferRows;this.fa=a.bufferBits||1;this.Ba=a.bufferLeft||0;this.ka=a.bufferRotate;this.Zb=a.interruptRate;this.Da=a.refreshRate||60;this.G=c;this.sa=a.screenRotate;90==this.sa&&(this.G.translate(0,this.K),this.G.rotate(-this.sa*Math.PI/180),this.G.scale(this.K/this.Y,this.Y/this.K));this.Aa=[[0,0,0,255],[255,255,255,255]];a=this.D;b=this.H;this.ka&&(a=this.H,
|
|
|
|
|
b=this.D);this.ba=this.G.createImageData(a,b);this.w=document.createElement("canvas");this.w.width=a;this.w.height=b;this.ma=this.w.getContext("2d")}Wa(Hd);Hd.prototype.Fa=function(a,b,c,d){this.u=a;this.B=b;this.b=c;this.F=d;this.M=(this.D*this.fa>>3)*this.H;rb(this.B,this.X,this.M,3)&&(this.na=this.M>>1,this.ra=16/this.fa|0,this.aa=!1,void 0===this.J||this.J.length!=this.na)&&(this.J=Array(this.na));C(this)};
|
|
|
|
|
Ja(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<=pa().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");va("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);e=e.getContext("2d");d=new Hd(d,0,e);cb(d,c)}});
|
|
|
|
|
function Id(a){w.call(this,"Debugger",a,Id);this.aa=Jd;this.ka=this.Na=this.M=0;this.Y=T();this.Gb=T();this.G=-1;this.D=[];this.na=!1;this.ma=T();this.J=[];this.ra={};this.w=this.ba=this.H=[];Kd(this);this.Ba=0;Ld(this);this.bb=[];Md(this,a.messages);this.tb=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return qc(b,a)}):void 0===global.$&&(global.$=function(a){return qc(b,a)})}Wa(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.Da=function(a,b,c,d){this.B=b;this.b=c;this.w=a;(a=nc(a,"messages"))&&Ld(this,a);this.Db=Qd;Sd(this,function(a){a:{var b=d.B.T,c=a[0],g=a=0,l=b.length;if(c){a=X(Y(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.B.ea;l=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,k=0;l--;){var n=b[g];n.type==c?k++||d.g("..."):(c=n.type,k=Ub[c],n&&d.g(q(n.id)+" %"+q(g<<d.B.ea)+" %%"+q(n.C)+" "+r(n.mb)+" "+r(n.size)+
|
|
|
|
|
" "+k),c!=Ob&&(c=-1),k=0);a+=d.B.ua;g++}}});E(this)};
|
|
|
|
|
m.qa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.Ea=this.V[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",qc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.G<d.D.length-1&&(b=d.D[++d.G]):40==a.keyCode&&(0<d.G?b=d.D[--d.G]:(b="",d.G=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.V[b]=c,Da(c,function(){if(d.Ea){var a=d.Ea.value;d.Ea.value=
|
|
|
|
|
"";qc(d,a,!0);return!0}return!1}),!0;case "step":return this.V[b]=c,Da(c,function(a){var b=!1;hb(d,!0)||(gb(d,!0),b=d.$a(a?1:0),gb(d,!1));return b}),!0}return!1};m.lb=function(){this.Ea&&this.Ea.focus()};function X(a){a=a&&a.C;null==a&&(a=-1);return a}m.W=function(a,b){var c=255,d=X(a);-1!==d&&(c=tb(this.B,d),b&&Td(a,b));return c};m.Ca=function(a,b){var c=65535,d=X(a);-1!==d&&(c=ub(this.B,d),b&&Td(a,b));return c};m.fa=function(a,b,c){var d=X(a);-1!==d&&(vb(this.B,d,b),c&&Td(a,c),rc(this.b,!0))};
|
|
|
|
|
m.sb=function(a,b,c){var d=X(a);if(-1!==d){var e=this.B,f=d&e.B,h=(d&e.D)>>>e.ea;f!=e.B?e.T[h].Bb(f,b&65535,d):(e.T[h++].nb(f,b&255,d),e.T[h&e.K].nb(0,b>>8&255,d+1));c&&Td(a,c);rc(this.b,!0)}};function U(a){return{C:a,xa:!1}}function Ud(a){return[a.C,a.xa]}function Vd(a){return{C:a[0],xa:a[1]}}
|
|
|
|
|
function Y(a,b,c){var d;c=(c?a.Y:a.Gb).C;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].Aa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=U(d));break}}if(d=e)return d;c=Xd(a,b,void 0)}null!=c&&(d=U(c));return d}function Yd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Wb=Zd(a,b.Ub=c[2]))}function Td(a,b){null!=a.C&&(a.C+=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.W(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Ld(a,b){a.F=a;a.ha=a.Xb=1073741824;a.Ga=null;var c=Zd(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in Rd)0<=ma(c,d)&&(a.ha|=Rd[d],a.g(d+" messages enabled"))}function Sd(a,b){for(var c in Rd)if(64==Rd[c]){a.bb[c]=b;break}}
|
|
|
|
|
function ae(a,b){var c;a=a.toUpperCase();null==b?c=ma(Pd,a):(c=ma(Pd,a.substr(b,3)),0>c&&(c=ma(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.N;break;case 1:c=d.O;break;case 8:c=Gc(d);break;case 2:c=d.P;break;case 3:c=d.R;break;case 9:c=Ic(d);break;case 4:c=d.S;break;case 5:c=d.U;break;case 10:c=K(d);break;case 6:c=d.W(K(d));break;case 11:c=d.ca;break;case 12:c=d.L;break;case 13:c=d.j<<8|Fc(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(U(this.b.L).C));if(!this.Ga||a!=this.Ga)if(this.Ga=a,this.ha&-2147483648&&(this.da(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.Xa=0;c.D-=c.b;c.b=0;rc(c)}};function eb(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.ha&g)!=g||a.message(b.cb+"."+(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(od(a)){if(!a.X||!a.X.length){a.X=Array(1E3);for(b=0;b<a.X.length;b++)a.X[b]=U();a.sa=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.X&&a.X.length&&a.g("instruction history buffer freed"),a.sa=0,a.X=[],a.K=[]}m.Ma=function(a){if(!ee(this))return!1;this.b.Ma(a);return!0};
|
|
|
|
|
m.$a=function(a,b,c){if(!ee(this))return!1;this.M=0;a||od(this)&&pd(this,this.b.L,0);try{var d=this.b.$a(a);0<d&&(this.M+=d,wc(this.b,d,!0),tc(this.b,d),this.la++)}catch(e){"number"!=typeof e&&(this.M=0,jb(this.b,e.stack||e.message))}!1!==c&&rc(this.b);this.va(b||!1);return 0<this.M};m.da=function(a){this.b&&this.b.da(a)};m.va=function(a){void 0===a&&(a=!0);this.Y=U(this.b.L);a&&1!=this.ga?fe(this):ge(this)};
|
|
|
|
|
function ee(a){var b;if(b=a.b&&ib(a.b))b=a.b,b.A.ia?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!hb(a.b)?(a=a.b,a.A.Qa?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.za=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.ya=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Kd(this);this.la=this.Na=0;this.Ga=null;this.M=0;this.Y=U(this.b.L);this.A.ka=!1;he(this);a||this.va()};
|
|
|
|
|
m.save=function(){var a=new I(this);J(a,0,Ud(this.Y));J(a,1,Ud(this.ma));J(a,2,[this.D,this.na,this.ha]);J(a,3,this.J);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.Y=Vd(a[b++]),this.ma=Vd(a[b++]),this.D=a[b][0],"string"==typeof this.D&&(this.D=[this.D]),this.na=a[b][1],this.ha|=a[b][2]);a[3]&&(this.J=a[3]);return!0};m.start=function(a,b){this.ga||this.g("running");this.A.ka=!0;this.$b=a;this.ec=b};
|
|
|
|
|
m.stop=function(a,b){if(this.A.ka){this.A.ka=!1;this.M=b-this.ec;if(!this.ga){var c="stopped";if(this.M){var d=a-this.$b,e=0<d?Math.round(1E3*this.M/d):0,c=c+" (";od(this)&&(c+=this.la+" opcodes, ",this.Na-=this.la,this.la=0);c+=this.M+" cycles, "+d+" ms, "+e+" hz)"}else fb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.va(!0);this.lb();he(this,this.b.L)}};function od(a){return 1<a.u.length||!!a.Fa}
|
|
|
|
|
function pd(a,b,c){var d=a.b;if(0<c&&(a.Fa&&!--a.Fa||Yb(a,b,1,a.u)))return!0;0<=c&&a.K.length&&(a.la++,b=tb(a.B,b),null!=b&&(a.K[b][1]++,b=a.X[a.sa],b.C=d.L,b.xa=!1,++a.sa==a.X.length&&(a.sa=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.u=["bp"];if(void 0!==a.ba)for(b=1;b<a.ba.length;b++){c=a.ba[b];var d=a.B;Zb(d.T[X(c)>>>d.ea],!1)}a.ba=["br"];if(void 0!==a.I)for(b=1;b<a.I.length;b++)c=a.I[b],d=a.B,Zb(d.T[X(c)>>>d.ea],!0);a.I=["bw"];a.Mb=0}m.Ha=function(a,b,c){var d=!0;c||ie(this,a,b,!1,!0);if(a!=this.u){var e=X(b);if(-1===e)this.g("invalid address: "+Z(b.C)),d=!1;else{var f=this.B;f.T[e>>>f.ea].Ha(e&f.B,a==this.I)}}d&&(a.push(b),c?b.xa=!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.xa)){f=!0;g.xa||e||je(a,b,h,"cleared");b.splice(h,1);b!=a.u&&(d=a.B,Zb(d.T[c>>>d.ea],b==a.I));g.xa||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.C)+(d?" "+d:c.Ub?' "'+c.Ub+'"':""))}
|
|
|
|
|
function he(a,b){if(void 0!==b)Yb(a,b,1,a.u,!0),a.ga=0;else for(var c=1;c<a.u.length;c++){var d=a.u[c];if(d.xa){if(!ie(a,a.u,d,!0))break;c=0}}}
|
|
|
|
|
function Yb(a,b,c,d,e){var f=!1;if(!a.Mb++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.xa)for(var l=X(g),k=0;k<c;k++)if(b+k==l){var n,f=!0;g.xa&&(ie(a,d,g,!0),e=!0);if(n=g.Wb){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 w=p+1;w<n.length&&n[w].indexOf("else");w++)p++;if(w==n.length){f=!0;break}}a.b.A.ka||(f=!0)}if(f){e||je(a,d,h,"hit");break}}}a.Mb--;return f}
|
|
|
|
|
function me(a,b,c,d){for(var e=U(b.C),f=a.W(b,1),h=a.Db[f],g="",l=(8086!=a.aa?Nd:Od)[h[0]],k=h.length-1,n=0,p,w=1;w<=k;w++){var A="";p=h[w];if(void 0!==p&&!(p&16384&&a.aa==Id)){var u=p&240;if(u){var ba=p&15;ba?n=ba:p|=n;p&61440||(p|=1==w?8192:4096);if(u&32)a:{var A=a,u=p,ba=b,C=" ";switch(u&15){case 1:C=q(A.W(ba,1),2);break;case 2:C=q(A.W(ba,1)<<24>>24,4);break;case 3:C=q(A.Ca(ba,2),4);break;default:A="imm("+r(u)+")";break a}8086==A.aa&&u&64?C="["+C+"]":u&16||(C=(A.aa==Id?"$":"0x")+C);A=C}else u&
|
|
|
|
|
16?(A=(p&3840)>>8,u=Pd[A],8086==a.aa&&p&64&&(6==A&&(u="HL"),u="["+u+"]"),A=u):u&128&&(A=(f>>3&7).toString());if(!A||!A.length){g="INVALID";break}0<g.length&&(g+=",");g+=A||"???"}}}f="";h=Z(e.C)+" ";if(-1!==e.C&&-1!==b.C){do if(f+=q(a.W(e,1),2),null==e.C)break;while(e.C!=b.C)}h+=ha(f,10);h=h+(p&32768?"*":" ")+ha(l,7);g&&(h+=" "+g);c&&(h=ha(h,40)+";"+c,h=a.b.A.Pa?h+("cycles="+uc(a.b).toString()+" cs="+q(a.b.i.eb)):h+(null!=d?"="+d.toString():""));return h}
|
|
|
|
|
function Le(a,b){var c;switch(b){case "I":c=a.b.pa&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 Me(a,b){return Pd[b]+"="+be(a,b)+" "}function Ne(a){return Me(a,7)+Me(a,8)+Me(a,9)+Me(a,10)+Me(a,11)+Le(a,"I")+Le(a,"S")+Le(a,"Z")+Le(a,"A")+Le(a,"P")+Le(a,"C")}
|
|
|
|
|
var Oe={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
|
|
|
|
function Pe(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;
|
|
|
|
|
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.Fa=function(a,b,c,d){this.B=b;this.b=c;this.u=a;(a=cc(a,"messages"))&&Md(this,a);this.Db=Rd;Td(this,function(a){a:{var b=d.B.T,c=a[0],g=a=0,k=b.length;if(c){a=W(X(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.B.ea;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[g];p.type==c?l++||d.g("..."):(c=p.type,l=Ub[c],p&&d.g(q(p.id)+" %"+q(g<<d.B.ea)+" %%"+q(p.C)+" "+r(p.mb)+" "+r(p.size)+
|
|
|
|
|
" "+l),c!=Ob&&(c=-1),l=0);a+=d.B.ua;g++}}});C(this)};
|
|
|
|
|
m.qa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.Aa=this.V[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",qc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.G<d.D.length-1&&(b=d.D[++d.G]):40==a.keyCode&&(0<d.G?b=d.D[--d.G]:(b="",d.G=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.V[b]=c,Da(c,function(){if(d.Aa){var a=d.Aa.value;d.Aa.value=
|
|
|
|
|
"";qc(d,a,!0);return!0}return!1}),!0;case "step":return this.V[b]=c,Da(c,function(a){var b=!1;hb(d,!0)||(gb(d,!0),b=d.$a(a?1:0),gb(d,!1));return b}),!0}return!1};m.lb=function(){this.Aa&&this.Aa.focus()};function W(a){a=a&&a.C;null==a&&(a=-1);return a}m.W=function(a,b){var c=255,d=W(a);-1!==d&&(c=tb(this.B,d),b&&Ud(a,b));return c};m.Ea=function(a,b){var c=65535,d=W(a);-1!==d&&(c=ub(this.B,d),b&&Ud(a,b));return c};m.ga=function(a,b,c){var d=W(a);-1!==d&&(vb(this.B,d,b),c&&Ud(a,c),rc(this.b,!0))};
|
|
|
|
|
m.sb=function(a,b,c){var d=W(a);if(-1!==d){var e=this.B,f=d&e.B,h=(d&e.D)>>>e.ea;f!=e.B?e.T[h].Bb(f,b&65535,d):(e.T[h++].nb(f,b&255,d),e.T[h&e.K].nb(0,b>>8&255,d+1));c&&Ud(a,c);rc(this.b,!0)}};function T(a){return{C:a,xa:!1}}function Vd(a){return[a.C,a.xa]}function Wd(a){return{C:a[0],xa:a[1]}}
|
|
|
|
|
function X(a,b,c){var d;c=(c?a.Y:a.Gb).C;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].Ca[d];if(void 0!==f){d=f.o;void 0!==d&&(e=T(d));break}}if(d=e)return d;c=Yd(a,b,void 0)}null!=c&&(d=T(c));return d}function Zd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Wb=$d(a,b.Ub=c[2]))}function Ud(a,b){null!=a.C&&(a.C+=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.W(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Md(a,b){a.F=a;a.ha=a.Xb=1073741824;a.Ga=null;var c=$d(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in Sd)0<=ma(c,d)&&(a.ha|=Sd[d],a.g(d+" messages enabled"))}function Td(a,b){for(var c in Sd)if(64==Sd[c]){a.bb[c]=b;break}}
|
|
|
|
|
function be(a,b){var c;a=a.toUpperCase();null==b?c=ma(Qd,a):(c=ma(Qd,a.substr(b,3)),0>c&&(c=ma(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.N;break;case 1:c=d.O;break;case 8:c=Hc(d);break;case 2:c=d.P;break;case 3:c=d.R;break;case 9:c=Jc(d);break;case 4:c=d.S;break;case 5:c=d.U;break;case 10:c=I(d);break;case 6:c=d.W(I(d));break;case 11:c=d.ca;break;case 12:c=d.L;break;case 13:c=d.j<<8|Fc(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=X(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=X(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(T(this.b.L).C));if(!this.Ga||a!=this.Ga)if(this.Ga=a,this.ha&-2147483648&&(this.da(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.Xa=0;c.D-=c.b;c.b=0;rc(c)}};function eb(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.ha&g)!=g||a.message(b.cb+"."+(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(pd(a)){if(!a.X||!a.X.length){a.X=Array(1E3);for(b=0;b<a.X.length;b++)a.X[b]=T();a.sa=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.X&&a.X.length&&a.g("instruction history buffer freed"),a.sa=0,a.X=[],a.K=[]}m.Ma=function(a){if(!fe(this))return!1;this.b.Ma(a);return!0};
|
|
|
|
|
m.$a=function(a,b,c){if(!fe(this))return!1;this.M=0;a||pd(this)&&qd(this,this.b.L,0);try{var d=this.b.$a(a);0<d&&(this.M+=d,wc(this.b,d,!0),tc(this.b,d),this.ka++)}catch(e){"number"!=typeof e&&(this.M=0,jb(this.b,e.stack||e.message))}!1!==c&&rc(this.b);this.va(b||!1);return 0<this.M};m.da=function(a){this.b&&this.b.da(a)};m.va=function(a){void 0===a&&(a=!0);this.Y=T(this.b.L);a&&1!=this.fa?ge(this):he(this)};
|
|
|
|
|
function fe(a){var b;if(b=a.b&&ib(a.b))b=a.b,b.A.ia?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!hb(a.b)?(a=a.b,a.A.Qa?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.za=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.ya=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Ld(this);this.ka=this.Na=0;this.Ga=null;this.M=0;this.Y=T(this.b.L);this.A.la=!1;ie(this);a||this.va()};
|
|
|
|
|
m.save=function(){var a=new Gc(this);H(a,0,Vd(this.Y));H(a,1,Vd(this.ma));H(a,2,[this.D,this.na,this.ha]);H(a,3,this.J);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.Y=Wd(a[b++]),this.ma=Wd(a[b++]),this.D=a[b][0],"string"==typeof this.D&&(this.D=[this.D]),this.na=a[b][1],this.ha|=a[b][2]);a[3]&&(this.J=a[3]);return!0};m.start=function(a,b){this.fa||this.g("running");this.A.la=!0;this.$b=a;this.ec=b};
|
|
|
|
|
m.stop=function(a,b){if(this.A.la){this.A.la=!1;this.M=b-this.ec;if(!this.fa){var c="stopped";if(this.M){var d=a-this.$b,e=0<d?Math.round(1E3*this.M/d):0,c=c+" (";pd(this)&&(c+=this.ka+" opcodes, ",this.Na-=this.ka,this.ka=0);c+=this.M+" cycles, "+d+" ms, "+e+" hz)"}else fb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.va(!0);this.lb();ie(this,this.b.L)}};function pd(a){return 1<a.w.length||!!a.Ba}
|
|
|
|
|
function qd(a,b,c){var d=a.b;if(0<c&&(a.Ba&&!--a.Ba||Yb(a,b,1,a.w)))return!0;0<=c&&a.K.length&&(a.ka++,b=tb(a.B,b),null!=b&&(a.K[b][1]++,b=a.X[a.sa],b.C=d.L,b.xa=!1,++a.sa==a.X.length&&(a.sa=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 Kd(a){var b,c;a.w=["bp"];if(void 0!==a.ba)for(b=1;b<a.ba.length;b++){c=a.ba[b];var d=a.B;Zb(d.T[W(c)>>>d.ea],!1)}a.ba=["br"];if(void 0!==a.H)for(b=1;b<a.H.length;b++)c=a.H[b],d=a.B,Zb(d.T[W(c)>>>d.ea],!0);a.H=["bw"];a.Mb=0}m.Ha=function(a,b,c){var d=!0;c||je(this,a,b,!1,!0);if(a!=this.w){var e=W(b);if(-1===e)this.g("invalid address: "+Z(b.C)),d=!1;else{var f=this.B;f.T[e>>>f.ea].Ha(e&f.B,a==this.H)}}d&&(a.push(b),c?b.xa=!0:(ke(this,a,a.length-1,"set"),Ld(this)));return d};
|
|
|
|
|
function je(a,b,c,d,e){var f=!1;c=W(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==W(g)&&(!d||g.xa)){f=!0;g.xa||e||ke(a,b,h,"cleared");b.splice(h,1);b!=a.w&&(d=a.B,Zb(d.T[c>>>d.ea],b==a.H));g.xa||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.C)+(d?" "+d:c.Ub?' "'+c.Ub+'"':""))}
|
|
|
|
|
function ie(a,b){if(void 0!==b)Yb(a,b,1,a.w,!0),a.fa=0;else for(var c=1;c<a.w.length;c++){var d=a.w[c];if(d.xa){if(!je(a,a.w,d,!0))break;c=0}}}
|
|
|
|
|
function Yb(a,b,c,d,e){var f=!1;if(!a.Mb++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.xa)for(var k=W(g),l=0;l<c;l++)if(b+l==k){var p,f=!0;g.xa&&(je(a,d,g,!0),e=!0);if(p=g.Wb){for(var f=!1,n=0;n<p.length;n++)if(!me(a,p[n],!0)){if(p[n].indexOf("if")){f=!0;break}for(var u=n+1;u<p.length&&p[u].indexOf("else");u++)n++;if(u==p.length){f=!0;break}}a.b.A.la||(f=!0)}if(f){e||ke(a,d,h,"hit");break}}}a.Mb--;return f}
|
|
|
|
|
function ne(a,b,c,d){for(var e=T(b.C),f=a.W(b,1),h=a.Db[f],g="",k=(8086!=a.aa?Od:Pd)[h[0]],l=h.length-1,p=0,n,u=1;u<=l;u++){var z="";n=h[u];if(void 0!==n&&!(n&16384&&a.aa==Jd)){var v=n&240;if(v){var O=n&15;O?p=O:n|=p;n&61440||(n|=1==u?8192:4096);if(v&32)a:{var z=a,v=n,O=b,B=" ";switch(v&15){case 1:B=q(z.W(O,1),2);break;case 2:B=q(z.W(O,1)<<24>>24,4);break;case 3:B=q(z.Ea(O,2),4);break;default:z="imm("+r(v)+")";break a}8086==z.aa&&v&64?B="["+B+"]":v&16||(B=(z.aa==Jd?"$":"0x")+B);z=B}else v&16?(z=(n&
|
|
|
|
|
3840)>>8,v=Qd[z],8086==a.aa&&n&64&&(6==z&&(v="HL"),v="["+v+"]"),z=v):v&128&&(z=(f>>3&7).toString());if(!z||!z.length){g="INVALID";break}0<g.length&&(g+=",");g+=z||"???"}}}f="";h=Z(e.C)+" ";if(-1!==e.C&&-1!==b.C){do if(f+=q(a.W(e,1),2),null==e.C)break;while(e.C!=b.C)}h+=ga(f,10);h=h+(n&32768?"*":" ")+ga(k,7);g&&(h+=" "+g);c&&(h=ga(h,40)+";"+c,h=a.b.A.Pa?h+("cycles="+uc(a.b).toString()+" cs="+q(a.b.i.eb)):h+(null!=d?"="+d.toString():""));return h}
|
|
|
|
|
function Me(a,b){var c;switch(b){case "I":c=a.b.pa&512;break;case "S":c=Qc(a.b);break;case "Z":c=Pc(a.b);break;case "A":c=Oc(a.b);break;case "P":c=Nc(a.b);break;case "C":c=Mc(a.b);break;default:c=0}return b+(c?"1":"0")+" "}function 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=[],l=[],k=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<k.length;){var n=k[e++],p=n.length,n=ia(n);if(!n){f=!0;break}n=Qe(a,n,null,!1===c);if(void 0===n){f=!0;c=!1;break}g.push(n);if(e==k.length)break;var n=k[e++],w=n.length;l.length&&Oe[n]<Oe[l[l.length-1]]&&Pe(g,l,1);l.push(n);b=b.substr(p+w)}Pe(g,l)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&Re(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.Ca(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.la-a.Na}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
|
|
|
|
function Qe(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 Re(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var l=d&255,k=8,n="";void 0===k?k=32:32<k&&(k=32);if(null==l||isNaN(l))for(;0<k--;)n="?"+n;else for(;0<k--;)n=(l&1?"1":"0")+n,l>>=1;h=n+"b"+h;d>>=8}d="0x"+q(c)+" "+c+". ("+h+")"}a.g((null!=b?b+": ":"")+d);return e}function Se(a,b){if(b)return Re(a,b,a.ra[b]);var c=0;for(b in a.ra)Re(a,b,a.ra[b]),c++;return 0<c}Hd.prototype.Fb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
|
|
|
|
function Te(a,b,c){var d=[],e=X(b)>>>0;for(b=0;b<a.J.length;b++){var f=a.J[b],h=f.C>>>0,g=f.gc;if(e>=h&&e<h+g){e=ja(f.Cb,[e-h],a.Fb);0<=e?Ue(a,b,e,d):c&&(e=~e,Ue(a,b,e-1,d),Ue(a,b,e,d));break}}return d}function Ue(a,b,c,d){var e={},f=a.J[b].Cb,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.J[b].Aa[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
|
|
|
|
|
function Ve(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.Db[h][0]]+" ").substr(0,5)+" ("+("0x"+q(h,2))+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}}
|
|
|
|
|
function We(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Se(a)||a.g("no variables"),!0;if(!c[2])return Se(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 Xe(a,b,c){var d=null;if(b=Y(a,b,!0)){var e=Te(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.C-e[1])&&(h=" + "+r(f)),f=e[0]+" ("+Z(e[1])+")"+h,c&&a.g(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.C)&&(h=" - "+r(f)),f=e[4]+" ("+Z(e[5])+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
|
|
|
|
|
function Ye(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.Ua=c;break;case "start":a.b.i.fb=c;break;case "stop":a.b.i.Wa=c;break;default:a.g("unknown cs option");return}void 0!==c&&pc(a.b);a.g("checksums "+(a.b.A.Pa?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(vc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.Ja.toFixed(2)+"Mhz")+" ("+
|
|
|
|
|
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 p=l[e++],n=p.length,p=ha(p);if(!p){f=!0;break}p=Re(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}g.push(p);if(e==l.length)break;var p=l[e++],u=p.length;k.length&&Pe[p]<Pe[k[k.length-1]]&&Qe(g,k,1);k.push(p);b=b.substr(n+u)}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=X(a,c[1]),b=b.replace("["+c[1]+"]",d?q(a.Ea(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.ka-a.Na}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.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,p="";void 0===l?l=32:32<l&&(l=32);if(null==k||isNaN(k))for(;0<l--;)p="?"+p;else for(;0<l--;)p=(k&1?"1":"0")+p,k>>=1;h=p+"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}Id.prototype.Fb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
|
|
|
|
function Ue(a,b,c){var d=[],e=W(b)>>>0;for(b=0;b<a.J.length;b++){var f=a.J[b],h=f.C>>>0,g=f.gc;if(e>=h&&e<h+g){e=ia(f.Cb,[e-h],a.Fb);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].Cb,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.J[b].Ca[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.Db[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=Yd(a,c[3]);return void 0!==d?(a.ra[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
|
|
|
|
|
function Ye(a,b,c){var d=null;if(b=X(a,b,!0)){var e=Ue(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.C-e[1])&&(h=" + "+r(f)),f=e[0]+" ("+Z(e[1])+")"+h,c&&a.g(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.C)&&(h=" - "+r(f)),f=e[4]+" ("+Z(e[5])+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
|
|
|
|
|
function 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.Ua=c;break;case "start":a.b.i.fb=c;break;case "stop":a.b.i.Wa=c;break;default:a.g("unknown cs option");return}void 0!==c&&pc(a.b);a.g("checksums "+(a.b.A.Pa?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(vc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.Ja.toFixed(2)+"Mhz")+" ("+
|
|
|
|
|
a.b.i.La+"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.N=g&255;break;case "BC":d.N=g>>8&255;case "C":d.O=g&255;break;case "D":d.P=
|
|
|
|
|
g&255;break;case "DE":d.P=g>>8&255;case "E":d.R=g&255;break;case "H":d.S=g&255;break;case "HL":d.S=g>>8&255;case "L":d.U=g&255;break;case "SP":d.ca=g&65535;break;case "PC":H(d,g);a.Y=U(d.L);break;case "PS":Dc(d,g);break;case "C":d.H=g?d.H|256:d.H&255;break;case "P":g?Mc(d)||(d.Z^=1):Mc(d)&&(d.Z^=1);break;case "A":d.ja=g?~d.Z&16|d.ja&-17:d.Z&16|d.ja&-17;break;case "Z":d.H=g?d.H&-256:d.H|255;break;case "S":g?Pc(d)||(d.Z^=192):Pc(d)&&(d.Z^=192);break;case "I":d.pa=g?d.pa|512:d.pa&-513;break;default:a.g("unknown register: "+
|
|
|
|
|
e);return}if(!h){a.g("invalid value: "+f);return}rc(d);a.g("updated registers:")}a.g(Ne(a));c&&(a.Y=U(d.L),ge(a,Z(a.Y.C)))}}function Ze(a,b){b=ia(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(de(a,c[2])):Xd(a,b,!0)}function $e(a,b,c){var d="t"!=b;c=Qe(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ca(c,function(){return gb(a,!0)&&a.$a(e,d,!1)},function(){rc(a.b);gb(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.C<b.C)return;e=d.C-b.C;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=hb(a,!1)||a.ga?a.M:null;var h=null!=f?"cycles":null,g=Te(a,b),l=b.C;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var k=g[0]+":";g[2]&&(k+=" "+g[2]);a.g(k)}g[3]&&(h=g[3],f=null);f=me(a,b,h,f);a.g(f);a.Y=b;e-=b.C-l;c++}}}
|
|
|
|
|
function Zd(a,b,c,d){if(c)if(b){0>a.G&&a.D.length&&(a.G=0);if(0>a.G||b!=a.D[a.G])a.D.splice(0,0,b),a.G=0;a.G--}else a.na?b="end":b=a.D[a.G+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(ia(b.substring(c,f))),c=f+1}}return a}
|
|
|
|
|
function le(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.na&&(a.g("ended assemble at "+Z(a.ma.C)),a.Y=a.ma,a.na=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Ga=null;if(ib(a)&&0<b.length){a.na&&(b="a "+Z(a.ma.C)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),l=1;l<h.length;l++){var k=h.charAt(l);if("?"==g||"r"==g||"a">k||"z"<k){f[0]=h.substr(l);f.unshift(h.substr(0,l));break}}switch(f[0].charAt(0)){case "a":var n=Y(a,f[1],!0);if(n)if(a.ma=
|
|
|
|
|
n,void 0===f[2])a.g("begin assemble at "+Z(n.C)),a.na=!0,rc(a.b);else{var p;a.g("not supported yet");p=[];if(p.length){for(var w=0;w<p.length;w++)a.fa(n,p[w],1);a.g(me(a,a.ma))}}break;case "b":a:{var A=f[0],u=f[1],ba=b;if("?"==u)a.g("breakpoint commands:"),a.g("\tbi [p]\ttoggle break on input port [p]"),a.g("\tbo [p]\ttoggle break on output port [p]"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),
|
|
|
|
|
a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");else{var C=A.charAt(1);if("l"==C){var ua=0,ua=ua+ke(a,a.u),ua=ua+ke(a,a.ba);(ua+=ke(a,a.I))||a.g("no breakpoints")}else if("n"==C)a.Fa=Qe(a,u),a.g("break after "+a.Fa+" instruction(s)");else if(void 0===u)a.g("missing breakpoint address");else{var x=U();if("*"!=u&&(x=Y(a,u,!0),!x))break a;u=r(x.C);"c"==C?null==x.C?(Jd(a),a.g("all breakpoints cleared")):ie(a,a.u,x)||ie(a,
|
|
|
|
|
a.ba,x)||ie(a,a.I,x)||a.g("breakpoint missing: "+Z(x.C)):"i"==C?a.g("breakpoint "+(Eb(a.B,x.C)?"enabled":"cleared")+": port "+u+" (input)"):"o"==C?a.g("breakpoint "+(Hb(a.B,x.C)?"enabled":"cleared")+": port "+u+" (output)"):null!=x.C&&(Yd(a,x,ba),"p"==C?a.Ha(a.u,x):"r"==C?a.Ha(a.ba,x):"w"==C?a.Ha(a.I,x):a.g("unknown breakpoint command: "+C))}}}break;case "c":a.ta&&(a.ta.value="");break;case "d":a:{var V,R=f[0],va=f[1],Ka=f[2],wf=f[3];if("?"==va){var wa="";for(V in Rd)a.bb[V]&&(wa&&(wa+=","),wa+=V);
|
|
|
|
|
wa+=",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");wa.length&&a.g("dump extension commands:\n\t"+wa)}else if("state"==va){var ne=af(a.w,!0);"console"==Ka?console.log(ne):(a.ta&&(a.ta.value=""),a.g(ne))}else if("symbols"==va)for(var Sc=0;Sc<a.J.length;Sc++){var Tc=a.J[Sc],$a;for($a in Tc.Aa)if("."!=
|
|
|
|
|
$a.charAt(0)){var oe=Tc.Aa[$a].o;if(void 0!==oe){var pe=Tc.Aa[$a].l;pe&&($a=pe);a.g(Z(oe)+" "+$a)}}}else{if("d"==R){for(V in Rd)if(f[1]==V){var qe=a.bb[V];qe?(f.shift(),f.shift(),qe(f)):a.g("no dump registered for "+va);break a}va||(R=a.fc||"db")}else a.fc=R;if("dh"==R){var re=va,se=Ka,te="",ue=0,S=a.sa,xa=a.X;if(xa.length){var W=+re||a.Nb,ab=+se||10;isNaN(W)?W=ab:te="more ";W>xa.length&&(a.g("note: only "+xa.length+" available"),W=xa.length);S-=W;0>S&&(null==xa[xa.length-1].C?(W=S+W,S=0):S+=xa.length);
|
|
|
|
|
var Uc=[];"call"==se&&(ab=1E5,Uc=["CALL"]);for(void 0!==re&&a.g(W+" instructions earlier:");0<ab&&S!=a.sa;){var ve=xa[S++];if(null==ve.C)break;var wb=U(ve.C),xf=W--,we=me(a,wb,"history",xf);(!Uc.length||0<=we.indexOf(Uc[0]))&&a.g(we);wb.ub&&(S+=wb.ub,ab-=wb.ub,W-=wb.ub);S>=xa.length&&(S=0);a.Nb=W;ue++;ab--}}ue||(a.g("no "+te+"history available"),a.Nb=void 0)}else{var cc=Y(a,va);if(cc){var dc=0;Ka&&("l"==Ka.charAt(0)&&(Ka=Ka.substr(1)||wf),dc=Qe(a,Ka)>>>0,65536<dc&&(dc=65536));for(var La="",ec="dd"==
|
|
|
|
|
R?4:"dw"==R?2:1,fc=ec*dc||128,yf=fc+15>>4||1;yf--&&0<fc;){var gc=0,Vc=0,xb,yb="",Wc="",va=Z(cc.C);for(xb=16;0<xb&&0<fc;xb--){var hc=a.W(cc,1),gc=gc|hc<<(Vc++<<3);Vc==ec&&(yb+=q(gc,2*ec),yb+=1==ec?9==xb?"-":" ":" ",gc=Vc=0);Wc+=32<=hc&&128>hc?String.fromCharCode(hc):".";fc--}La&&(La+="\n");La+=va+" "+yb+(0==xb?" "+Wc:"")}La&&a.g(La);a.Gb=cc}}}}break;case "e":if("else"==f[0])break;var ic=1,xe=255,ye=a.W,ze=a.fa;"ew"==f[0]&&(ic=2,xe=65535,ye=a.Ca,ze=a.sb);var Ae=ic<<1,Be=f[1];if(null==Be)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,Be);if(jc)for(var kc=2;kc<f.length;kc++){var zb=Xd(a,f[kc]);if(void 0===zb){a.g("unrecognized value: "+f[kc]);break}zb&~xe&&a.g("warning: "+q(zb)+" exceeds "+ic+"-byte value");var zf=ye.call(a,jc);a.g("changing "+Z(jc.C)+" from 0x"+q(zf,Ae)+" to 0x"+q(zb,Ae));ze.call(a,jc,zb,ic)}}break;case "f":Ve(a,f[1]);break;case "g":a:{var Ce=f[1],Af=b;if(void 0!==Ce){var Xc=Y(a,Ce,!0);if(!Xc)break a;
|
|
|
|
|
Yd(a,Xc,Af);a.Ha(a.u,Xc,!0)}a.Ma(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var Yc;if(a.A.ka)Yc="halting",a.da();else{if(hb(a,!0))break a;Yc="already halted"}c||a.g(Yc)}break;case "i":if("if"==f[0]){var Zc;var Ab=b.substr(2),Ab=ia(Ab);Xd(a,Ab)?(c||a.g("true: "+Ab),Zc=!0):(c||a.g("false: "+Ab),Zc=!1);Zc||(d=!1);break}var $c=f[1];if($c&&"?"!=$c){var ad=Qe(a,$c);if(void 0!==ad){var Bf=Fb(a.B,ad);a.g(r(ad)+": "+("0x"+q(Bf,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 Cf=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,De=U(),Bb=U(a.b.ca);for(a.g("stack trace for "+Z(Bb.C));10>bd;){for(var Ma=null,Df=256;65536>Bb.C>>>0;){De.C=a.Ca(Bb,2);if(null==Bb.C||!Df--)break;for(var Ef=a,lc=De,Ee=null,Cb=lc.C,Fe=Cb,cd=1;6>=cd&&Cb;cd++){if(2<cd){lc.C=Cb;var mc=me(Ef,lc);if(0<=mc.indexOf("CALL")){var Ge=mc.indexOf(" ");
|
|
|
|
|
if(Cb+(mc.indexOf(" ",Ge+1)-Ge-1)/2==Fe){Ee=mc;break}}}Cb--}lc.C=Fe;if(Ma=Ee)break}if(!Ma||null==Ma)break;var He=null;if("ks"==Cf){var Ie=Ma.match(/[0-9A-F]+$/);Ie&&(He=Xe(a,Ie[0]))}Ma=ha(Ma,50)+" ;"+(He||"stack="+Z(Bb.C));a.g(Ma);bd++}bd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Xe(a,f[1],!0);break}break;case "m":a:{var ya,za=null,G=f[1];"?"==G&&(G=void 0);if(void 0!==G){var Na=0;if("all"==G)Na=1610481663,G=null;else if("on"==G)za=!0,G=null;else if("off"==G)za=!1,G=null;else{"keys"==
|
|
|
|
|
G&&(G="key");"kbd"==G&&(G="keyboard");for(ya in Rd)if(G==ya){Na=Rd[ya];za=!!(a.ha&Na);break}if(!Na){a.g("unknown message category: "+G);break a}}Na&&("on"==f[2]?(a.ha|=Na,za=!0):"off"==f[2]&&(a.ha&=~Na,za=!1))}var Ff=0,Ga="";for(ya in Rd)if(!G||G==ya){var Gf=!!(a.ha&Rd[ya]);if(null===za||za==Gf)Ga&&(Ga+=","),++Ff%10||(Ga+="\n\t"),"key"==ya&&(ya="keys"),Ga+=ya}void 0===G&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==za?za?"messages on: ":"messages off: ":"message categories:\n\t")+
|
|
|
|
|
(Ga||"none"));Kd(a)}break;case "o":var dd=f[1],Hf=f[2];if(dd&&"?"!=dd){var ed=Qe(a,dd,"port #"),fd=Qe(a,Hf);void 0!==ed&&void 0!==fd&&(Ib(a.B,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]){Ze(a,b.substr(5));break}var Je="pr"==f[0]?1:0,If=1+Je;if(a.ga)a.g("step in progress");else{var gd=U(a.b.L);switch(a.W(gd)){case 205:a.ga=If,Td(gd,3)}a.ga?(a.Ha(a.u,
|
|
|
|
|
gd,!0),a.Ma()||(a.w&&a.w.lb(),a.ga=0)):$e(a,Je?"tr":"t")}break;case "r":if("reset"==b){a.w&&a.w.reset();break}fe(a,f);break;case "s":Ye(a,f);break;case "t":$e(a,f[0],f[1]);break;case "u":ge(a,f[1],f[2],8);break;case "v":if("var"==f[0]){We(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.22.0 ("+a.b.Sa+",RELEASE"+(kb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(pa());break;case "?":if(f[1]){Ze(a,b.substr(1));break}var Db="commands:",hd;for(hd in Md)Db+="\n"+ha(hd,7)+Md[hd];od(a)||(Db+="\nnote: frequency/history disabled if no exec breakpoints");
|
|
|
|
|
a.g(Db);break;default:a.g("unknown command: "+b),d=!1}}}catch(Ke){a.g("debugger error: "+(Ke.stack||Ke.message)),d=!1}return d}function qc(a,b,c){b=Zd(a,b,c);for(var d in b)if(!le(a,b[d]))return!1;return!0}Ja(function(){for(var a=D(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Hd(d);cb(d,c)}});function I(a,b,c){this.id=a.id;this.key=bf(a,b,c);this.F=a.F;cf(this,a.Sb)}
|
|
|
|
|
function bf(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){cf(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 cf(a,b){a[a.id]={};b&&J(a,"parms",b);a.b=!1}function df(a){var b=!0;if(sa()){var c=JSON.stringify(a[a.id]);Aa(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function ef(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){t(c.message||c),b=!1}return b}function ff(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:sa()&&(b=ta(a.key))?(a[a.id]=b,a.b=!0):!1}function gf(a,b){return a[a.id][b]||null}function J(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
|
|
|
|
function hf(a,b,c){v.call(this,"Computer",a,hf,67108864);this.A.ia=!1;jf(this,b);this.ba=nc(this,"autoPower",a);this.D=0;this.ra=a.busWidth||a.buswidth;this.w=kf;this.X=null;this.J=this.na=!1;this.sa=nc(this,"url")||"";(Math.random()+.1).toString(36);this.u=lf(this);if(this.b=bb("CPU",this.id)){this.F=bb("Debugger",this.id);this.aa=[];for(b=null;b=nb(this,"Video",b);)this.aa.push(b);this.B=new pb({id:this.Ib+".bus",busWidth:this.ra},this.b,this.F);var d,e=Za(this.id);if((this.G=bb("Panel",this.id))&&
|
|
|
|
|
this.G.ta)for(b=0;b<e.length;b++)d=e[b],d.oa=this.G.oa,d.g=this.G.g,d.ta=this.G.ta;for(b=0;b<e.length;b++)d=e[b],d.Da&&d.Da(this,this.B,this.b,this.F);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.M=d:this.w=parseInt(d,10));var f;if(a=nc(this,"state")||(f=!0,a.state))b=this.ga=a,f||(this.J=!0,this.w=kf),this.w&&(this.Y=new I(this,mf),ff(this.Y)?b=null:delete this.Y);!b&&this.w&&(b=nf(this))&&(this.J=!0);if(b){var h=this;na(b,null,!0,function(a,b,c){c?(h.M=null,h.J=!1,h.oa("Unable to load machine state from server (error "+
|
|
|
|
|
c+(b?": "+ia(b):"")+")")):(h.X=b,h.na=!0);E(h)})}else E(this);this.V.power||(this.ba=!0);!c&&this.ba&&of(this,this.jb)}else t("Unable to find CPU component")}z(hf);var mf="1.22.0",kf=0;function jf(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 nc(a,b,c){var d=b.toLowerCase(),d=Sa[b]||Sa[d];void 0===d&&a.K&&(d=a.K[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function of(a,b,c){for(var d=Za(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ib(f)){ib(f,function(){of(a,b,c)});return}}b.call(a,c)}
|
|
|
|
|
function pf(a,b){var c=new I(a,mf,"validate");if(ff(c)&&ef(c)){var d=gf(c,"timestamp"),e=b?gf(b,"timestamp"):"unknown";d!=e&&(a.oa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=hf.prototype;
|
|
|
|
|
m.jb=function(a){void 0===a&&(a=this.w||(this.X?1:kf));if(!this.D){this.D++;var b=!1,c=!1;this.ma=!1;var d=this.Y||new I(this,mf);if(-1==a)b=!0;else if(a>kf){if(ff(d,this.X)){this.I=new I(this,mf,"failsafe");ff(this.I)&&(qf(this,d),a=2,cf(this.I));J(this.I,"timestamp",la());df(this.I);var e=this.w&&!this.J;if(1==a||qa("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=ef(d)){var f=gf(d,"code"),h=gf(d,"data");f&&("ok"==f?ff(d,h):("error"==f&&"no machine state"!=
|
|
|
|
|
h?(this.oa("Error: "+h),"unable to verify user"==h&&(Aa("user",""),this.u=null)):this.g(f+": "+h),cf(d),ff(d)?(c=ef(d),e=!0):c=!1))}e&&pf(this,c?d:null)}else 2==a&&d.clear()}else pf(this);delete this.X;delete this.Y}e=Za(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=rf(this,h,d,b,c));b=[d,a,c];-1!=a?of(this,this.Hb,b):this.Hb(b)}};
|
|
|
|
|
function rf(a,b,c,d,e){if(!b.A.ia){b.A.ia=!0;if(b.za){var f=null;e&&((f=gf(c,b.id))||(f=gf(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.za(f,d)&&f&&(t("Unable to restore state for "+b.type),a.ga&&!a.na?(c.clear(),a.w=kf,window&&window.location.reload()):a.ma=!0,b.za(null),e=!1)}if(!d&&b.Eb)for(a=b.Eb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
|
|
|
|
m.Hb=function(a){var b=a[0],c=0>a[1];a=a[2];this.A.ia=!0;var d=this.V.power;d&&(d.textContent="Shutdown");this.la||(this.g("PC8080 v"+mf+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.la=!0);this.b&&(rf(this,this.b,b,c,a),sc(this.b));this.ma&&(qf(this,b),b.clear());!c&&this.I&&(this.I.clear(),delete this.I);this.D=0};
|
|
|
|
|
function qf(a,b){if(qa("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.sa,d=a.u||"",e=b.toString(),f={app:"PC8080"};f.ver=mf;f.url=c;f.user=d;f.type="bug";f.data=e;na("http://www.pcjs.org/api/v1/report",f,!0)}}
|
|
|
|
|
function af(a,b,c){var d,e="none";if(a.D)return null;a.D--;var f=new I(a,mf),h=new I(a,mf,"validate"),g=la();J(h,"timestamp",g);J(f,"timestamp",g);J(f,"version","1.22.0");J(f,"url",window?window.location.href:null);J(f,"browser",pa());a.b&&a.b.ya&&(c&&a.b.da(),d=a.b.ya(b,c),"object"===typeof d&&J(f,a.b.id,d),c&&(a.b.A.ia=!1,!1===d&&(e=null)));for(var g=Za(a.id),l=0;l<g.length;l++){var k=g[l];k.A.ia&&(k.ya&&(d=k.ya(b,c),"object"===typeof d&&J(f,k.id,d)),c&&(k.A.ia=!1,!1===d&&(e=null)))}e&&(c?(g=d=
|
|
|
|
|
!1,b?(a.u&&sf(a,a.u,f.toString()),df(h)&&df(f)||(e=null,d=g=!0)):a.w&&(d=!0,g=3==a.w),d&&f.clear(g)):e=f.toString());c&&(a.A.ia=!1,b=a.V.power)&&(b.textContent="Power");a.D=0;return e}m.reset=function(){this.B&&this.B.reset&&(this.F&&fb(this,0)&&this.F.message("Resetting "+this.B.type,void 0),this.B.reset());for(var a=Za(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.B&&c.reset&&(this.F&&fb(this,0)&&this.F.message("Resetting "+c.type,void 0),c.reset())}};
|
|
|
|
|
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.N=g&255;break;case "BC":d.N=g>>8&255;case "C":d.O=g&255;break;case "D":d.P=
|
|
|
|
|
g&255;break;case "DE":d.P=g>>8&255;case "E":d.R=g&255;break;case "H":d.S=g&255;break;case "HL":d.S=g>>8&255;case "L":d.U=g&255;break;case "SP":d.ca=g&65535;break;case "PC":F(d,g);a.Y=T(d.L);break;case "PS":Dc(d,g);break;case "C":d.I=g?d.I|256:d.I&255;break;case "P":g?Nc(d)||(d.Z^=1):Nc(d)&&(d.Z^=1);break;case "A":d.ja=g?~d.Z&16|d.ja&-17:d.Z&16|d.ja&-17;break;case "Z":d.I=g?d.I&-256:d.I|255;break;case "S":g?Qc(d)||(d.Z^=192):Qc(d)&&(d.Z^=192);break;case "I":d.pa=g?d.pa|512:d.pa&-513;break;default:a.g("unknown register: "+
|
|
|
|
|
e);return}if(!h){a.g("invalid value: "+f);return}rc(d);a.g("updated registers:")}a.g(Oe(a));c&&(a.Y=T(d.L),he(a,Z(a.Y.C)))}}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);Ca(c,function(){return gb(a,!0)&&a.$a(e,d,!1)},function(){rc(a.b);gb(a,!1)})}
|
|
|
|
|
function he(a,b,c,d){if(b=X(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=X(a,c,!0);if(!d||d.C<b.C)return;e=d.C-b.C;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=hb(a,!1)||a.fa?a.M:null;var h=null!=f?"cycles":null,g=Ue(a,b),k=b.C;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.C-k;c++}}}
|
|
|
|
|
function $d(a,b,c,d){if(c)if(b){0>a.G&&a.D.length&&(a.G=0);if(0>a.G||b!=a.D[a.G])a.D.splice(0,0,b),a.G=0;a.G--}else a.na?b="end":b=a.D[a.G+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(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.na&&(a.g("ended assemble at "+Z(a.ma.C)),a.Y=a.ma,a.na=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Ga=null;if(ib(a)&&0<b.length){a.na&&(b="a "+Z(a.ma.C)+" "+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 p=X(a,f[1],!0);if(p)if(a.ma=
|
|
|
|
|
p,void 0===f[2])a.g("begin assemble at "+Z(p.C)),a.na=!0,rc(a.b);else{var n;a.g("not supported yet");n=[];if(n.length){for(var u=0;u<n.length;u++)a.ga(p,n[u],1);a.g(ne(a,a.ma))}}break;case "b":a:{var z=f[0],v=f[1],O=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 B=z.charAt(1);if("l"==B){var U=0,U=U+le(a,a.w),U=U+le(a,a.ba);(U+=le(a,a.H))||a.g("no breakpoints")}else if("n"==B)a.Ba=Re(a,v),a.g("break after "+a.Ba+" instruction(s)");else if(void 0===v)a.g("missing breakpoint address");else{var D=T();if("*"!=v&&(D=X(a,v,!0),!D))break a;v=r(D.C);"c"==B?null==D.C?(Kd(a),a.g("all breakpoints cleared")):je(a,a.w,D)||je(a,a.ba,D)||
|
|
|
|
|
je(a,a.H,D)||a.g("breakpoint missing: "+Z(D.C)):"i"==B?a.g("breakpoint "+(wb(a.B,D.C)?"enabled":"cleared")+": port "+v+" (input)"):"o"==B?a.g("breakpoint "+(Hb(a.B,D.C)?"enabled":"cleared")+": port "+v+" (output)"):null!=D.C&&(Zd(a,D,O),"p"==B?a.Ha(a.w,D):"r"==B?a.Ha(a.ba,D):"w"==B?a.Ha(a.H,D):a.g("unknown breakpoint command: "+B))}}}break;case "c":a.ta&&(a.ta.value="");break;case "d":a:{var wa,P=f[0],K=f[1],ka=f[2],xa=f[3];if("?"==K){var ya="";for(wa in Sd)a.bb[wa]&&(ya&&(ya+=","),ya+=wa);ya+=",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");ya.length&&a.g("dump extension commands:\n\t"+ya)}else if("state"==K){var oe=bf(a.u,!0);"console"==ka?console.log(oe):(a.ta&&(a.ta.value=""),a.g(oe))}else if("symbols"==K)for(var Tc=0;Tc<a.J.length;Tc++){var Uc=a.J[Tc],ab;for(ab in Uc.Ca)if("."!=ab.charAt(0)){var pe=Uc.Ca[ab].o;
|
|
|
|
|
if(void 0!==pe){var qe=Uc.Ca[ab].l;qe&&(ab=qe);a.g(Z(pe)+" "+ab)}}}else{if("d"==P){for(wa in Sd)if(f[1]==wa){var re=a.bb[wa];re?(f.shift(),f.shift(),re(f)):a.g("no dump registered for "+K);break a}K||(P=a.fc||"db")}else a.fc=P;if("dh"==P){var se=K,te=ka,ue="",ve=0,V=a.sa,za=a.X;if(za.length){var Y=+se||a.Nb,bb=+te||10;isNaN(Y)?Y=bb:ue="more ";Y>za.length&&(a.g("note: only "+za.length+" available"),Y=za.length);V-=Y;0>V&&(null==za[za.length-1].C?(Y=V+Y,V=0):V+=za.length);var Vc=[];"call"==te&&(bb=
|
|
|
|
|
1E5,Vc=["CALL"]);for(void 0!==se&&a.g(Y+" instructions earlier:");0<bb&&V!=a.sa;){var we=za[V++];if(null==we.C)break;var xb=T(we.C),xf=Y--,xe=ne(a,xb,"history",xf);(!Vc.length||0<=xe.indexOf(Vc[0]))&&a.g(xe);xb.ub&&(V+=xb.ub,bb-=xb.ub,Y-=xb.ub);V>=za.length&&(V=0);a.Nb=Y;ve++;bb--}}ve||(a.g("no "+ue+"history available"),a.Nb=void 0)}else{var dc=X(a,K);if(dc){var ec=0;ka&&("l"==ka.charAt(0)&&(ka=ka.substr(1)||xa),ec=Re(a,ka)>>>0,65536<ec&&(ec=65536));for(var Ma="",fc="dd"==P?4:"dw"==P?2:1,gc=fc*ec||
|
|
|
|
|
128,yf=gc+15>>4||1;yf--&&0<gc;){var hc=0,Wc=0,yb,zb="",Xc="",K=Z(dc.C);for(yb=16;0<yb&&0<gc;yb--){var ic=a.W(dc,1),hc=hc|ic<<(Wc++<<3);Wc==fc&&(zb+=q(hc,2*fc),zb+=1==fc?9==yb?"-":" ":" ",hc=Wc=0);Xc+=32<=ic&&128>ic?String.fromCharCode(ic):".";gc--}Ma&&(Ma+="\n");Ma+=K+" "+zb+(0==yb?" "+Xc:"")}Ma&&a.g(Ma);a.Gb=dc}}}}break;case "e":if("else"==f[0])break;var jc=1,ye=255,ze=a.W,Ae=a.ga;"ew"==f[0]&&(jc=2,ye=65535,ze=a.Ea,Ae=a.sb);var Be=jc<<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 kc=X(a,Ce);if(kc)for(var lc=2;lc<f.length;lc++){var Ab=Yd(a,f[lc]);if(void 0===Ab){a.g("unrecognized value: "+f[lc]);break}Ab&~ye&&a.g("warning: "+q(Ab)+" exceeds "+jc+"-byte value");var zf=ze.call(a,kc);a.g("changing "+Z(kc.C)+" from 0x"+q(zf,Be)+" to 0x"+q(Ab,Be));Ae.call(a,kc,Ab,jc)}}break;case "f":We(a,f[1]);break;case "g":a:{var De=f[1],Af=b;if(void 0!==De){var Yc=X(a,De,!0);if(!Yc)break a;Zd(a,Yc,Af);a.Ha(a.w,Yc,!0)}a.Ma(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;
|
|
|
|
|
case "h":a:{var Zc;if(a.A.la)Zc="halting",a.da();else{if(hb(a,!0))break a;Zc="already halted"}c||a.g(Zc)}break;case "i":if("if"==f[0]){var $c;var Bb=b.substr(2),Bb=ha(Bb);Yd(a,Bb)?(c||a.g("true: "+Bb),$c=!0):(c||a.g("false: "+Bb),$c=!1);$c||(d=!1);break}var ad=f[1];if(ad&&"?"!=ad){var bd=Re(a,ad);if(void 0!==bd){var Bf=Fb(a.B,bd);a.g(r(bd)+": "+("0x"+q(Bf,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 Cf=f[0];
|
|
|
|
|
if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var cd=0,Ee=T(),Cb=T(a.b.ca);for(a.g("stack trace for "+Z(Cb.C));10>cd;){for(var Na=null,Df=256;65536>Cb.C>>>0;){Ee.C=a.Ea(Cb,2);if(null==Cb.C||!Df--)break;for(var Ef=a,mc=Ee,Fe=null,Db=mc.C,Ge=Db,dd=1;6>=dd&&Db;dd++){if(2<dd){mc.C=Db;var nc=ne(Ef,mc);if(0<=nc.indexOf("CALL")){var He=nc.indexOf(" ");if(Db+(nc.indexOf(" ",He+1)-He-1)/2==Ge){Fe=nc;break}}}Db--}mc.C=Ge;if(Na=Fe)break}if(!Na||
|
|
|
|
|
null==Na)break;var Ie=null;if("ks"==Cf){var Je=Na.match(/[0-9A-F]+$/);Je&&(Ie=Ye(a,Je[0]))}Na=ga(Na,50)+" ;"+(Ie||"stack="+Z(Cb.C));a.g(Na);cd++}cd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Ye(a,f[1],!0);break}break;case "m":a:{var Aa,Ba=null,G=f[1];"?"==G&&(G=void 0);if(void 0!==G){var Oa=0;if("all"==G)Oa=1610481663,G=null;else if("on"==G)Ba=!0,G=null;else if("off"==G)Ba=!1,G=null;else{"keys"==G&&(G="key");"kbd"==G&&(G="keyboard");for(Aa in Sd)if(G==Aa){Oa=Sd[Aa];Ba=!!(a.ha&
|
|
|
|
|
Oa);break}if(!Oa){a.g("unknown message category: "+G);break a}}Oa&&("on"==f[2]?(a.ha|=Oa,Ba=!0):"off"==f[2]&&(a.ha&=~Oa,Ba=!1))}var Ff=0,Ia="";for(Aa in Sd)if(!G||G==Aa){var Gf=!!(a.ha&Sd[Aa]);if(null===Ba||Ba==Gf)Ia&&(Ia+=","),++Ff%10||(Ia+="\n\t"),"key"==Aa&&(Aa="keys"),Ia+=Aa}void 0===G&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ba?Ba?"messages on: ":"messages off: ":"message categories:\n\t")+(Ia||"none"));Ld(a)}break;case "o":var ed=f[1],Hf=f[2];if(ed&&
|
|
|
|
|
"?"!=ed){var fd=Re(a,ed,"port #"),gd=Re(a,Hf);void 0!==fd&&void 0!==gd&&(Ib(a.B,fd,gd),a.g(r(fd)+": "+("0x"+q(gd,2))))}else a.g("output commands:"),a.g("\to [p] [b]\twrite byte [b] to port [p]"),a.g("warning: port accesses can affect hardware state");break;case "p":if("print"==f[0]){$e(a,b.substr(5));break}var Ke="pr"==f[0]?1:0,If=1+Ke;if(a.fa)a.g("step in progress");else{var hd=T(a.b.L);switch(a.W(hd)){case 205:a.fa=If,Ud(hd,3)}a.fa?(a.Ha(a.w,hd,!0),a.Ma()||(a.u&&a.u.lb(),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.22.0 ("+a.b.Sa+",RELEASE"+(kb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(pa());break;case "?":if(f[1]){$e(a,b.substr(1));break}var Eb="commands:",id;for(id in Nd)Eb+="\n"+ga(id,7)+Nd[id];pd(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 qc(a,b,c){b=$d(a,b,c);for(var d in b)if(!me(a,b[d]))return!1;return!0}Ja(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);cb(d,c)}});function Gc(a,b,c){this.id=a.id;this.key=cf(a,b,c);this.F=a.F;df(this,a.Sb)}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}
|
|
|
|
|
Gc.prototype={constructor:Gc,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){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&&H(a,"parms",b);a.b=!1}function ef(a){var b=!0;if(sa()){var c=JSON.stringify(a[a.id]);ua(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function 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:sa()&&(b=ta(a.key))?(a[a.id]=b,a.b=!0):!1}function hf(a,b){return a[a.id][b]||null}function H(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
|
|
|
|
function jf(a,b,c){w.call(this,"Computer",a,jf,67108864);this.A.ia=!1;kf(this,b);this.ba=cc(this,"autoPower",a);this.D=0;this.ra=a.busWidth||a.buswidth;this.u=lf;this.X=null;this.J=this.na=!1;this.sa=cc(this,"url")||"";(Math.random()+.1).toString(36);this.w=mf(this);if(this.b=$a("CPU",this.id)){this.F=$a("Debugger",this.id);this.aa=[];for(b=null;b=nb(this,"Video",b);)this.aa.push(b);this.B=new pb({id:this.Ib+".bus",busWidth:this.ra},this.b,this.F);var d,e=Za(this.id);if((this.G=$a("Panel",this.id))&&
|
|
|
|
|
this.G.ta)for(b=0;b<e.length;b++)d=e[b],d.oa=this.G.oa,d.g=this.G.g,d.ta=this.G.ta;for(b=0;b<e.length;b++)d=e[b],d.Fa&&d.Fa(this,this.B,this.b,this.F);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.M=d:this.u=parseInt(d,10));var f;if(a=cc(this,"state")||(f=!0,a.state))b=this.fa=a,f||(this.J=!0,this.u=lf),this.u&&(this.Y=new Gc(this,nf),gf(this.Y)?b=null:delete this.Y);!b&&this.u&&(b=of(this))&&(this.J=!0);if(b){var h=this;na(b,null,!0,function(a,b,c){c?(h.M=null,h.J=!1,h.oa("Unable to load machine state from server (error "+
|
|
|
|
|
c+(b?": "+ha(b):"")+")")):(h.X=b,h.na=!0);C(h)})}else C(this);this.V.power||(this.ba=!0);!c&&this.ba&&pf(this,this.jb)}else t("Unable to find CPU component")}Wa(jf);var nf="1.22.0",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 cc(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=Za(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ib(f)){ib(f,function(){pf(a,b,c)});return}}b.call(a,c)}
|
|
|
|
|
function qf(a,b){var c=new Gc(a,nf,"validate");if(gf(c)&&ff(c)){var d=hf(c,"timestamp"),e=b?hf(b,"timestamp"):"unknown";d!=e&&(a.oa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=jf.prototype;
|
|
|
|
|
m.jb=function(a){void 0===a&&(a=this.u||(this.X?1:lf));if(!this.D){this.D++;var b=!1,c=!1;this.ma=!1;var d=this.Y||new Gc(this,nf);if(-1==a)b=!0;else if(a>lf){if(gf(d,this.X)){this.H=new Gc(this,nf,"failsafe");gf(this.H)&&(rf(this,d),a=2,df(this.H));H(this.H,"timestamp",la());ef(this.H);var e=this.u&&!this.J;if(1==a||qa("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.oa("Error: "+h),"unable to verify user"==h&&(ua("user",""),this.w=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.X;delete this.Y}e=Za(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.Hb,b):this.Hb(b)}};
|
|
|
|
|
function sf(a,b,c,d,e){if(!b.A.ia){b.A.ia=!0;if(b.za){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.za(f,d)&&f&&(t("Unable to restore state for "+b.type),a.fa&&!a.na?(c.clear(),a.u=lf,window&&window.location.reload()):a.ma=!0,b.za(null),e=!1)}if(!d&&b.Eb)for(a=b.Eb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
|
|
|
|
m.Hb=function(a){var b=a[0],c=0>a[1];a=a[2];this.A.ia=!0;var d=this.V.power;d&&(d.textContent="Shutdown");this.ka||(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.ka=!0);this.b&&(sf(this,this.b,b,c,a),sc(this.b));this.ma&&(rf(this,b),b.clear());!c&&this.H&&(this.H.clear(),delete this.H);this.D=0};
|
|
|
|
|
function rf(a,b){if(qa("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.sa,d=a.w||"",e=b.toString(),f={app:"PC8080"};f.ver=nf;f.url=c;f.user=d;f.type="bug";f.data=e;na("http://www.pcjs.org/api/v1/report",f,!0)}}
|
|
|
|
|
function bf(a,b,c){var d,e="none";if(a.D)return null;a.D--;var f=new Gc(a,nf),h=new Gc(a,nf,"validate"),g=la();H(h,"timestamp",g);H(f,"timestamp",g);H(f,"version","1.22.0");H(f,"url",window?window.location.href:null);H(f,"browser",pa());a.b&&a.b.ya&&(c&&a.b.da(),d=a.b.ya(b,c),"object"===typeof d&&H(f,a.b.id,d),c&&(a.b.A.ia=!1,!1===d&&(e=null)));for(var g=Za(a.id),k=0;k<g.length;k++){var l=g[k];l.A.ia&&(l.ya&&(d=l.ya(b,c),"object"===typeof d&&H(f,l.id,d)),c&&(l.A.ia=!1,!1===d&&(e=null)))}e&&(c?(g=
|
|
|
|
|
d=!1,b?(a.w&&tf(a,a.w,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.A.ia=!1,b=a.V.power)&&(b.textContent="Power");a.D=0;return e}m.reset=function(){this.B&&this.B.reset&&(this.F&&fb(this,0)&&this.F.message("Resetting "+this.B.type,void 0),this.B.reset());for(var a=Za(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.B&&c.reset&&(this.F&&fb(this,0)&&this.F.message("Resetting "+c.type,void 0),c.reset())}};
|
|
|
|
|
m.start=function(a,b){for(var c=Za(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var c=Za(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
|
|
|
|
m.qa=function(a,b,c){var d=this;switch(b){case "power":return this.V[b]=c,c.onclick=function(){d.D||(d.A.ia?af(d,!1,!0):of(d,d.jb))},!0;case "reset":return this.V[b]=c,c.onclick=function(){if(d.A.ia&&!d.D)if(d.w&&!d.M){var a=qa("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");af(d,a,!0);!a&&d.ga?window&&window.location.reload():d.jb(kf)}else d.reset(),d.b&&sc(d.b)},!0;case "save":if(ea(oa(),"pcjs.org")){c.parentNode.removeChild(c);
|
|
|
|
|
break}this.V[b]=c;c.onclick=function(){var a=lf(d,!0);if(a){var b=!!(d.w&&!d.M||d.ga),c=af(d,b);b?sf(d,a,c):d.oa("Resume disabled, machine state not saved")}};return!0}return!1};
|
|
|
|
|
function lf(a,b){var c=a.u;c||(c=ta("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=tf(a,c))||a.oa("The user ID is invalid."))):b&&a.oa("Browser local storage is not available"));return c}
|
|
|
|
|
function tf(a,b){a.u=null;var c=na(oa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(Aa("user",c.data),a.u=c.data)}catch(e){t(e.message+" ("+d+")")}return a.u}function nf(a){var b=null;a.u&&(b=oa()+"/api/v1/user?req=load&user="+a.u+"&state="+bf(a,mf));return b}
|
|
|
|
|
function sf(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=bf(a,mf);d.data=c;b=na(oa()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.oa("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.oa(c),Aa("user",""),a.u=null)}}
|
|
|
|
|
m.qa=function(a,b,c){var d=this;switch(b){case "power":return this.V[b]=c,c.onclick=function(){d.D||(d.A.ia?bf(d,!1,!0):pf(d,d.jb))},!0;case "reset":return this.V[b]=c,c.onclick=function(){if(d.A.ia&&!d.D)if(d.u&&!d.M){var a=qa("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");bf(d,a,!0);!a&&d.fa?window&&window.location.reload():d.jb(lf)}else d.reset(),d.b&&sc(d.b)},!0;case "save":if(da(oa(),"pcjs.org")){c.parentNode.removeChild(c);
|
|
|
|
|
break}this.V[b]=c;c.onclick=function(){var a=mf(d,!0);if(a){var b=!!(d.u&&!d.M||d.fa),c=bf(d,b);b?tf(d,a,c):d.oa("Resume disabled, machine state not saved")}};return!0}return!1};
|
|
|
|
|
function mf(a,b){var c=a.w;c||(c=ta("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=uf(a,c))||a.oa("The user ID is invalid."))):b&&a.oa("Browser local storage is not available"));return c}
|
|
|
|
|
function uf(a,b){a.w=null;var c=na(oa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(ua("user",c.data),a.w=c.data)}catch(e){t(e.message+" ("+d+")")}return a.w}function of(a){var b=null;a.w&&(b=oa()+"/api/v1/user?req=load&user="+a.w+"&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=na(oa()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.oa("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.oa(c),ua("user",""),a.w=null)}}
|
|
|
|
|
function nb(a,b,c){a=Za(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}m.lb=function(){};m.va=function(a){this.b&&this.b.va(a);this.G&&this.G.va(a)};
|
|
|
|
|
function yc(a,b){for(var c=0;c<a.aa.length;c++)a:{var d=a.aa[c];if(0<=b){if(b&1){d=d.b;d.u=d.u&-8|10;break a}var e=d.b;e.u=e.u&-8|9;if(e=d.aa){for(var e=d.B,f=d.M,h=!0,g=d.X>>>e.ea;0<f&&g<e.T.length;)e.T[g].wa&&(e.T[g].wa=h=!1,e.T[g].Kb=!0),f-=e.ua,g++;e=h}if(e)break a}for(var e=d.X,f=e+d.M,h=0,g=d.ra,l=0,k=0,n=d.u,p=0,w=d.D,A=0;e<f;){var u=ub(d.B,e);if(d.aa&&u===d.I[h])l+=d.ma;else{d.I[h]=u;var u=u>>8|(u&255)<<8,ba=65536,C=16;l<n&&(n=l);for(var ua=0;ua<d.ma;ua++){var x=(u&(ba>>=1))>>--C,V=d.ba,R=
|
|
|
|
|
l++,x=g[x],R=(R+k*V.width)*x.length;V.data[R]=x[0];V.data[R+1]=x[1];V.data[R+2]=x[2];V.data[R+3]=x[3]}l>p&&(p=l);k<w&&(w=k);k>=A&&(A=k+1)}e+=2;h++;if(l>=d.u&&(l=0,k++,k>d.D))break}d.aa=!0;n<d.u&&(d.sa.putImageData(d.ba,0,0,n,w,p-n,A-w),d.G.drawImage(d.J,0,0,d.u,d.D,0,0,d.Y,d.K))}}Ja(function(){for(var a=D(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=B(c),c=D(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=B(f),h=new hf(h,d,!0);cb(h,f);h.ba&&of(h,h.jb)}});
|
|
|
|
|
Ea.show.push(function(){for(var a=D(document,"pc8080","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=bb("Computer",c.id))&&c.la&&!c.A.ia&&c.jb(-1)}});Ea.exit.push(function(){for(var a=D(document,"pc8080","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=bb("Computer",c.id))&&c.A.ia&&af(c,!(!c.w||c.M),!0)}});var uf=0;function vf(a,b,c,d,e,f){e("Loading "+a+"...");na(a,null,!0,function(h,g,l){l?(g||(g="unable to load "+a+" ("+l+")"),f(g,null)):Jf(g,a,b,c,d,e,f)})}
|
|
|
|
|
function yc(a,b){for(var c=0;c<a.aa.length;c++)a:{var d=a.aa[c];if(0<=b){if(b&1){d=d.b;d.w=d.w&-8|10;break a}var e=d.b;e.w=e.w&-8|9;if(e=d.aa){for(var e=d.B,f=d.M,h=!0,g=d.X>>>e.ea;0<f&&g<e.T.length;)e.T[g].wa&&(e.T[g].wa=h=!1,e.T[g].Kb=!0),f-=e.ua,g++;e=h}if(e)break a}var g=d.X,k=g+d.M,l=0,p=d.Aa,n=0,u=0,e=d.D,z=0,f=d.H,v=h=0,O=d.fa,B=(1<<O)-1;d.Ba&&(O=-O,v=16+O);for(;g<k;){var U=ub(d.B,g);if(d.aa&&U===d.J[l])n+=d.ra;else{d.J[l]=U;var D=v;v&&(U=U>>8|(U&255)<<8);n<e&&(e=n);for(var wa=0;wa<d.ra;wa++){var P=
|
|
|
|
|
U>>D&B,K=d.ba,ka=n++,P=p[P],xa=void 0,xa=d.ka?(K.height-ka-1)*K.width+u:ka+u*K.width,xa=xa*P.length;K.data[xa]=P[0];K.data[xa+1]=P[1];K.data[xa+2]=P[2];K.data[xa+3]=P[3];D+=O}n>z&&(z=n);u<f&&(f=u);u>=h&&(h=u+1)}g+=2;l++;if(n>=d.D&&(n=0,u++,u>d.H))break}d.aa=!0;e<d.D&&(g=z-e,h-=f,d.ka?d.ma.putImageData(d.ba,0,0):d.ma.putImageData(d.ba,0,0,e,f,g,h),d.G.drawImage(d.w,0,0,d.w.width,d.w.height,0,0,d.Y,d.K))}}
|
|
|
|
|
Ja(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);cb(h,f);h.ba&&pf(h,h.jb)}});Ea.show.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=$a("Computer",c.id))&&c.ka&&!c.A.ia&&c.jb(-1)}});
|
|
|
|
|
Ea.exit.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=$a("Computer",c.id))&&c.A.ia&&bf(c,!(!c.u||c.M),!0)}});var vf=0;function wf(a,b,c,d,e,f){e("Loading "+a+"...");na(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Jf(g,a,b,c,d,e,f)})}
|
|
|
|
|
function Jf(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){Ya(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
|
|
|
|
|
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?Kf(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
|
|
|
|
function Kf(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");na(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=g[0],k,n=/( [a-z]+=)(['"])(.*?)\2/g;k=n.exec(f);)l=0>l.indexOf(k[1])?l.replace(">",k[0]+">"):l.replace(new RegExp(k[1]+"(['\"])(.*?)\\1"),k[0]);g[0]!=l&&(h=h.replace(g[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
|
|
|
|
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(n){g=null,a=n.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Kf(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
|
|
|
|
function Kf(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");na(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.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]*/,
|
|
|
|
|
"");a=a.replace(d[0],h);Kf(a,b,c)}})}else c(a,null)}
|
|
|
|
|
function Lf(a,b,c,d){function e(a){if(void 0===g){var b=h&&D(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ga(a))}function f(a){e("Error: "+a);l&&(--uf||Pa(!0));l=!1}var h,g,l=!0;uf++;Xa[a]={};try{if(h=document.getElementById(a)){var k;if("object"==typeof resources&&(k=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],p=document.createElement("style");p.type="text/css";p.styleSheet?p.styleSheet.cssText=k:p.appendChild(document.createTextNode(k));n.appendChild(p)}c||
|
|
|
|
|
(c="/versions/pc8080/1.22.0/components.xsl");k=function(d,g){g?vf(c,null,null,!1,e,function(d,l){if(l)if(Ya(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var k=g.transformNode(l);k?(h.outerHTML=k,--uf||Pa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(k=new XSLTProcessor,k.importStylesheet(l),(k=k.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(k,h),--uf||Pa(!0)):f("invalid machine element: "+
|
|
|
|
|
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?vf(b,a,d,!0,e,k):Jf(b,null,a,d,!1,e,k)}else f("missing machine element: "+a)}catch(w){f(w.message)}return l}window.embedPC8080=function(a,b,c,d){Pa(!1);return Lf(a,b,c,d)};window.enableEvents=Pa;window.sendEvent=Qa;
|
|
|
|
|
function Mf(a,b,c,d){if(!c&&b){d.push(b);a=Xa[d[0]];b=null;for(var e in a)if(ea(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?na(b,null,!0,function(a,b){Nf(b,d)}):Nf(null,d)}else t("Error ("+c+") requesting "+a)}
|
|
|
|
|
function Nf(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Xa[f],l={},k;for(k in g){var n=g[k],p=da(k);if("xml"==p){for(p=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=p.exec(g[k]);){var w=d[2];w&&(g[w]||(n=n.replace(d[0],"")))}d=k=ca(k)}else"xsl"==p&&(e=k=ca(k));l[k]=n}a&&(l[k="css"]=a);b[2]&&(l[k="parms"]=b[2]);b[3]&&(l[k="state"]=b[3]);d&&e?(k=JSON.stringify(l),h+=".js",c=c[1]+"var resources="+k+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
|
|
|
|
|
"©"),k=h,g=null,l="data:application/javascript,",l=Ba("Firefox")?l+encodeURIComponent(c):l+encodeURI(c),k&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=l,g.download=k,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+k+"."):(window.open(l),c="Check your browser for a new window/tab containing the requested data"+(k?" ("+k+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n',
|
|
|
|
|
function Lf(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&&(--vf||La(!0));k=!1}var h,g,k=!0;vf++;Xa[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css";n.styleSheet?n.styleSheet.cssText=l:n.appendChild(document.createTextNode(l));p.appendChild(n)}c||
|
|
|
|
|
(c="/versions/pc8080/1.22.0/components.xsl");l=function(d,g){g?wf(c,null,null,!1,e,function(d,l){if(l)if(Ya(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var k=g.transformNode(l);k?(h.outerHTML=k,--vf||La(!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),--vf||La(!0)):f("invalid machine element: "+
|
|
|
|
|
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?wf(b,a,d,!0,e,l):Jf(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(u){f(u.message)}return k}window.embedPC8080=function(a,b,c,d){La(!1);return Lf(a,b,c,d)};window.enableEvents=La;window.sendEvent=Pa;
|
|
|
|
|
function Mf(a,b,c,d){if(!c&&b){d.push(b);a=Xa[d[0]];b=null;for(var e in a)if(da(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?na(b,null,!0,function(a,b){Nf(b,d)}):Nf(null,d)}else t("Error ("+c+") requesting "+a)}
|
|
|
|
|
function Nf(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Xa[f],k={},l;for(l in g){var p=g[l],n=ca(l);if("xml"==n){for(n=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=n.exec(g[l]);){var u=d[2];u&&(g[u]||(p=p.replace(d[0],"")))}d=l=ba(l)}else"xsl"==n&&(e=l=ba(l));k[l]=p}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=va("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=af(d,!0),h=d.K?JSON.stringify(d.K):null;b||(b="/versions/pcjs/1.22.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Sb:h}))return!0;na(b,null,!0,function(c,d,e){Mf(c,d,e,[a,ca(b,!0),h,f])});return!0}t("Unable to identify machine '"+a+"'");return!1};})();
|
|
|
|
|
window.savePC=function(a,b,c){var d=$a("Computer",a),e=$a("Debugger",a);if(d){var f=bf(d,!0),h=d.K?JSON.stringify(d.K):null;b||(b="/versions/pcjs/1.22.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Sb:h}))return!0;na(b,null,!0,function(c,d,e){Mf(c,d,e,[a,ba(b,!0),h,f])});return!0}t("Unable to identify machine '"+a+"'");return!1};})();
|
|
|
|
|
|