|
|
|
|
@ -29,263 +29,268 @@
|
|
|
|
|
http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2017
|
|
|
|
|
http://pcjs.org/modules/pc8080/lib/computer.js (C) Jeff Parsons 2012-2017
|
|
|
|
|
*/
|
|
|
|
|
var k;function ba(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}
|
|
|
|
|
var m={me:0,pe:1,qe:2,re:3,se:4,te:5,ue:6,ve:7,we:8,xe:9,ye:10,ze:11,Ae:12,Be:13,Ce:14,De:15,Ee:16,Fe:17,Ge:18,He:19,Ie:20,Je:21,Ke:22,Le:23,Me:24,Ne:25,Oe:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,qb:65,sc:66,uc:67,Sb:68,E:69,yc:70,zc:71,Ac:72,Bc:73,Ic:74,Jc:75,Vb:76,Qc:77,Rc:78,Tc:79,Uc:80,Q:81,$c:82,cd:83,jd:84,kd:85,ld:86,md:87,
|
|
|
|
|
od:88,pd:89,Eb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,qd:97,xf:98,yf:99,d:100,e:101,zf:102,Af:103,Bf:104,Cf:105,Df:106,k:107,Ef:108,Ff:109,n:110,Gf:111,p:112,q:113,r:114,Hf:115,t:116,Jf:117,Kf:118,Lf:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Pe:127};
|
|
|
|
|
function n(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.cc=b.comment;this.xd=b;this.exports={};this.P=this.bindings={};a=this.id.indexOf(".");0>a?this.ab=this.id:(this.bb=this.id.substr(0,a),this.ab=this.id.substr(a+1));this.G={ready:!1,kb:!1,Fb:!1,ja:!1,error:!1};this.wb=null;this.G.error=!1;this.ha=c||0;this.K=this.u=this.H=this.R=this.ta=null;ca.push(this)}function da(a,b,c){ea[a]&&b&&(ea[a][b]=c)}function fa(){return Date.now()||+new Date}
|
|
|
|
|
function ga(a,b,c){b||q((c?c+": ":"")+a)}function q(a){window&&window.alert(a)}function ha(a){var b=!1;window&&(b=window.confirm(a));return b}function ja(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<ca.length;b++){var d=ca[b];a&&d.id.indexOf(a)||c.push(d)}return c}function ka(a){if(void 0!==a){var b;for(b=0;b<ca.length;b++)if(ca[b].id===a)return ca[b]}return null}
|
|
|
|
|
function la(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<ca.length;d++)if(c)c==ca[d]&&(c=null);else if(!(a!=ca[d].type||b&&ca[d].id.indexOf(b)))return ca[d]}return null}function na(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){q(c.message+" ("+a+")")}return b}
|
|
|
|
|
function oa(a,b){b=pa(b.parentNode,"pc8080-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){var g=f.getAttribute("class");if(g)for(var h=g.split(" "),l=0;l<h.length;l++)switch(g=h[l],g){case "pc8080-binding":(g=na(f))&&g.binding&&a.ca(g.type,g.binding,f,g.value),l=h.length}}}}
|
|
|
|
|
function pa(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}k=n.prototype;k.toString=function(){return this.name?this.name:this.id||this.type};
|
|
|
|
|
k.ca=function(a,b,c){switch(b){case "clear":return this.P[b]||(this.P[b]=c,c.onclick=function(a){return function(){a.P.print&&(a.P.print.value="")}}(this)),!0;case "print":return this.P[b]||(this.ta=this.P[b]=c,c.value="",this.i=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.aa=function(a){this.i(a,this.ab)}),!0;default:return!1}};k.log=function(){};k.i=function(){};
|
|
|
|
|
k.status=function(a){this.i(this.ab+": "+a)};k.aa=function(a,b,c){ga(a,b,c||this.type)};function qa(a,b){a.G.error=!0;a.aa(b)}function ra(a,b){b&&(a.G.ready?b():a.wb=b);return a.G.ready}function sa(a){if(!a.G.error&&(a.G.ready=!0,a.G.ready)){var b=a.wb;a.wb=null;b&&b()}}function ua(a,b){a.G.kb&&(b?a.G.Fb=!0:void 0===b&&a.i(a.toString()+" busy"));return a.G.kb}function va(a,b){if(a.G.Fb)return a.G.kb=!1,a.G.Fb=!1;if(a.G.error)return a.i(a.toString()+" error"),!1;a.G.kb=b;return a.G.kb}
|
|
|
|
|
k.va=function(){return this.G.ja=!0};k.ua=function(a,b){b&&(this.G.ja=!1);return!0};function wa(a,b){if(a.K){a===a.K?b|=0:b=b||a.ha;var c=a.K.ha&b;return!!b&&c===b||!!(c&a.K.ud)}return!1}function xa(a,b){a.K&&wa(a,0)&&a.K.message(b,void 0)}function v(a,b,c,d,e,f,g){a.K&&(!0===g?g=0:null==g&&(g=a.ha),za(a.K,a,b,c,d,e,f,g))}window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]));
|
|
|
|
|
var ea=window?window.PCjs.Machines:{},ca=window?window.PCjs.Components:[];Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
|
|
|
|
|
var k;function aa(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}
|
|
|
|
|
var l={Be:0,Ee:1,Fe:2,Ge:3,He:4,Ie:5,Je:6,Ke:7,Le:8,Me:9,Ne:10,Oe:11,Pe:12,Qe:13,Re:14,Se:15,Te:16,Ue:17,Ve:18,We:19,Xe:20,Ye:21,Ze:22,$e:23,af:24,bf:25,cf:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,ab:65,Ub:66,Vb:67,Fb:68,E:69,Yb:70,Zb:71,$b:72,ac:73,bc:74,cc:75,Hb:76,gc:77,hc:78,lc:79,mc:80,Q:81,nc:82,pc:83,qc:84,rc:85,tc:86,uc:87,
|
|
|
|
|
wc:88,xc:89,wb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,yc:97,ud:98,xd:99,d:100,e:101,Bd:102,Dd:103,Ed:104,Fd:105,Od:106,k:107,Pd:108,Rd:109,n:110,Sd:111,p:112,q:113,r:114,oe:115,t:116,pe:117,qe:118,re:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,df:127},ca={};ca[l[";"]]=186;ca[l["="]]=187;ca[l[","]]=188;ca[173]=189;ca[l["."]]=190;ca[l["/"]]=191;ca[l["`"]]=192;ca[l["["]]=219;ca[l["\\"]]=220;ca[l["]"]]=221;ca[l["'"]]=222;
|
|
|
|
|
function n(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.vc=b.comment;this.Ad=b;this.exports={};this.P=this.bindings={};a=this.id.indexOf(".");0>a?this.cb=this.id:(this.eb=this.id.substr(0,a),this.cb=this.id.substr(a+1));this.G={ready:!1,mb:!1,Ib:!1,ja:!1,error:!1};this.zb=null;this.G.error=!1;this.ha=c||0;this.K=this.u=this.H=this.R=this.ta=null;da.push(this)}function ea(a,b,c){fa[a]&&b&&(fa[a][b]=c)}function ga(){return Date.now()||+new Date}
|
|
|
|
|
function ha(a,b,c){b||p((c?c+": ":"")+a)}function p(a){window&&window.alert(a)}function ia(a){var b=!1;window&&(b=window.confirm(a));return b}function ka(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<da.length;b++){var d=da[b];a&&d.id.indexOf(a)||c.push(d)}return c}function la(a){if(void 0!==a){var b;for(b=0;b<da.length;b++)if(da[b].id===a)return da[b]}return null}
|
|
|
|
|
function ma(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<da.length;d++)if(c)c==da[d]&&(c=null);else if(!(a!=da[d].type||b&&da[d].id.indexOf(b)))return da[d]}return null}function oa(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){p(c.message+" ("+a+")")}return b}
|
|
|
|
|
function pa(a,b){b=qa(b.parentNode,"pc8080-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){var g=f.getAttribute("class");if(g)for(var h=g.split(" "),m=0;m<h.length;m++)switch(g=h[m],g){case "pc8080-binding":(g=oa(f))&&g.binding&&a.ca(g.type,g.binding,f,g.value),m=h.length}}}}
|
|
|
|
|
function qa(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}k=n.prototype;k.toString=function(){return this.name?this.name:this.id||this.type};
|
|
|
|
|
k.ca=function(a,b,c){switch(b){case "clear":return this.P[b]||(this.P[b]=c,c.onclick=function(a){return function(){a.P.print&&(a.P.print.value="")}}(this)),!0;case "print":return this.P[b]||(this.ta=this.P[b]=c,c.value="",this.i=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.aa=function(a){this.i(a,this.cb)}),!0;default:return!1}};k.log=function(){};k.i=function(){};
|
|
|
|
|
k.status=function(a){this.i(this.cb+": "+a)};k.aa=function(a,b,c){ha(a,b,c||this.type)};function ra(a,b){a.G.error=!0;a.aa(b)}function sa(a,b){b&&(a.G.ready?b():a.zb=b);return a.G.ready}function ta(a){if(!a.G.error&&(a.G.ready=!0,a.G.ready)){var b=a.zb;a.zb=null;b&&b()}}function ua(a,b){a.G.mb&&(b?a.G.Ib=!0:void 0===b&&a.i(a.toString()+" busy"));return a.G.mb}function wa(a,b){if(a.G.Ib)return a.G.mb=!1,a.G.Ib=!1;if(a.G.error)return a.i(a.toString()+" error"),!1;a.G.mb=b;return a.G.mb}
|
|
|
|
|
k.va=function(){return this.G.ja=!0};k.ua=function(a,b){b&&(this.G.ja=!1);return!0};function xa(a,b){if(a.K){a===a.K?b|=0:b=b||a.ha;var c=a.K.ha&b;return!!b&&c===b||!!(c&a.K.wd)}return!1}function ya(a,b){a.K&&xa(a,0)&&a.K.message(b,void 0)}function q(a,b,c,d,e,f,g){a.K&&(!0===g?g=0:null==g&&(g=a.ha),za(a.K,a,b,c,d,e,f,g))}window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]));
|
|
|
|
|
var fa=window?window.PCjs.Machines:{},da=window?window.PCjs.Components:[];Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
|
|
|
|
|
Function.prototype.bind||(Function.prototype.bind=function(a){function b(){return e.apply(this instanceof c&&a?this:a,d.concat(Array.prototype.slice.call(arguments)))}function c(){}if("function"!=typeof this)throw new TypeError("Function.prototype.bind: non-callable object");var d=Array.prototype.slice.call(arguments,1),e=this;c.prototype=this.prototype;b.prototype=new c;return b});
|
|
|
|
|
function Ba(a,b){var c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var f,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):2==e&&
|
|
|
|
|
d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}function Ca(a,b,c){var d="";b?11<b&&(b=11):b=a&-16777216?11:a&-65536?8:6;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;)d=String.fromCharCode((a&7)+48)+d,a>>=3;return(c?"0o":"")+d}function x(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}
|
|
|
|
|
function Da(a){return x(a,2,!0)}function y(a){return x(a,4,!0)}function Ea(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function Fa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function Ga(){var a=Ha();return-1!==a.indexOf("pcjs.org",a.length-8)}function Ia(a){return a.replace(/[&<>"']/g,function(a){return Ja[a]})}function Ka(a,b){return(a+" ").slice(0,b)}
|
|
|
|
|
function Na(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Ja={"&":"&","<":"<",">":">",'"':""","'":"'"},Oa={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"};
|
|
|
|
|
function Pa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var g=d+e>>1,h;h=c(b,a[g]);0<h?d=g+1:(e=g,f=!h)}return f?d:~d}function Qa(){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 Ra(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 Sa(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=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)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
|
|
|
|
|
f,e))});if(b&&"object"==typeof b){var l="",p;for(p in b)b.hasOwnProperty(p)&&(l&&(l+="&"),l+=p+"="+encodeURIComponent(b[p]));l=l.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(l)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g}
|
|
|
|
|
function Ta(a,b){var c,d={ma:null,ra:null,Qa:null,Ia:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Qa=g.load;d.Ia=g.exec;if(e=g.bytes)d.ma=e;else if(e=g.words)for(d.ma=Array(2*e.length),f=c=0;c<e.length;c++)d.ma[f++]=e[c]&255,d.ma[f++]=e[c]>>8&255;else if(e=g.data)for(d.ma=Array(4*e.length),f=c=0;c<e.length;c++)d.ma[f++]=
|
|
|
|
|
e[c]&255,d.ma[f++]=e[c]>>8&255,d.ma[f++]=e[c]>>16&255,d.ma[f++]=e[c]>>24&255;else d.ma=g;d.ra=g.symbols;d.ma.length?1==d.ma.length&&(q(d.ma[0]),d=null):(q("Empty resource: "+a),d=null)}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){q("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.ma=e)}return d}
|
|
|
|
|
function Ha(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Ua(){return window?window.navigator.userAgent:""}function Va(){if(null==Wa){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}Wa=a}return Wa}function $a(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
|
|
|
|
function ab(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function bb(a){if(window){var b=Ua();return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1}function cb(a){if(!db){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}db=c}return db[a]}
|
|
|
|
|
function eb(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}function fb(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}}function gb(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}
|
|
|
|
|
function hb(a){ib.init.push(a)}function kb(a){if(lb)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){ga("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function mb(a){!lb&&a?(lb=!0,nb&&ob("init"),pb&&ob("show")):lb=a}function ob(a){ib[a]&&kb(ib[a])}var db=null,ib={init:[],show:[],exit:[]},nb=!1,pb=!1,lb=!0,Wa=null;gb("onload",function(){nb=!0;kb(ib.init)});gb("onpageshow",function(){pb=!0;kb(ib.show)});
|
|
|
|
|
gb(bb("Opera")||bb("iOS")?"onunload":"onbeforeunload",function(){kb(ib.exit)});
|
|
|
|
|
var qb="undefined"!==typeof ArrayBuffer,rb=[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],tb={cpu:1,bus:64,mem:128,port:256,nvr:16384,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function ub(a){n.call(this,"Panel",a)}ba(ub,n);
|
|
|
|
|
ub.prototype.ca=function(a,b,c,d){return this.R&&this.R.ca(a,b,c,d)||this.u&&this.u.ca(a,b,c,d)||this.B&&this.B.ca(a,b,c,d)||this.K&&this.K.ca(a,b,c,d)?!0:n.prototype.ca.call(this,a,b,c,d)};ub.prototype.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;this.B=vb(a,"Keyboard")};ub.prototype.va=function(a,b){b||wb();return!0};ub.prototype.ua=function(){return!0};
|
|
|
|
|
function wb(){for(var a=!1,b=pa(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=na(d),f=ka(e.id);f||(a=!0,f=new ub(e));oa(f,d);a&&sa(f)}}hb(wb);
|
|
|
|
|
function xb(a,b,c){n.call(this,"Bus",a);this.u=b;this.K=c;this.M=a.busWidth||16;this.N=Math.pow(2,this.M);this.C=this.N-1|0;this.g=(this.M>>1)+2;10>this.g&&(this.g=10);15<this.g&&(this.g=15);this.w=1<<this.g;this.O=this.w>>2;this.j=this.w-1;this.L=this.N/this.w|0;this.I=this.L-1;this.A=[];this.B=[];this.D=this.F=!1;this.S=[];this.T=[];a=new z;yb(a,this.K);this.b=Array(this.L);for(b=0;b<this.L;b++)this.b[b]=a;sa(this)}ba(xb,n);xb.prototype.reset=function(){};
|
|
|
|
|
xb.prototype.va=function(a,b){b||this.reset();return!0};function zb(a,b,c,d){for(var e=b,f=c,g=e>>>a.g;0<f&&g<a.b.length;){var h=a.b[g],l=g*a.w,p=a.w-(e-l);p>f&&(p=f);if(h&&h.size){if(h.type==d){if(e+f<=h.J)return h.nb+=h.J-e,h.J=e,!0;if(e>=h.J+h.nb){p=h.size-(e-l);p>f&&(p=f);h.nb=e-h.J+p;e=l+a.w;f-=p;g++;continue}}return Ab(Bb,e,f)}e=new z(e,p,a.w,d);yb(e,a.K,h);a.b[g++]=e;e=l+a.w;f-=p}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Cb[d]+" at "+y(b)),!0):Ab(Db,b,c)}
|
|
|
|
|
function Eb(a,b){return a.b[(b&a.C)>>>a.g].mb(b&a.j,b)}function Fb(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].lc(c,b):a.b[d++].Xa(c,b)|a.b[d&a.I].Xa(0,b+1)<<8}function Gb(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].Kb(c,b):a.b[d++].mb(c,b)|a.b[d&a.I].mb(0,b+1)<<8}function Hb(a,b,c){a.b[(b&a.C)>>>a.g].ob(b&a.j,c&255,b)}function Ib(a,b,c){var d=b&a.j,e=(b&a.C)>>>a.g;d!=a.j?a.b[e].oc(d,c&65535,b):(a.b[e++].Za(d,c&255,b),a.b[e&a.I].Za(0,c>>8&255,b+1))}
|
|
|
|
|
function Jb(a){for(var b=0,c=[],d=0;d<a.L;d++){var e=a.b[d];if(e.Ca||e.hc){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,l=[];g<e.length;){for(var p=e[g],r=g+1;r<e.length&&e[r]===p;)r++;l[h++]=r-g;l[h++]=p;g=r}l.length<e.length&&(e=l)}c[f]=e}}return c}function Mb(a,b){if(void 0===b)return a.D=!a.D,a.D;void 0===a.A[b]&&(a.A[b]=[null,!1]);a.A[b][1]=!a.A[b][1];return a.A[b][1]}
|
|
|
|
|
function Nb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var l=+e+d;l<=g;l++)void 0!==f.A[l]?q("Input port "+y(l)+" already registered"):f.A[l]=[h,!1]}}function Ob(a,b,c){for(var d=1,e=0,f=0;0<d;){var g=a.A[b],h=a.S[b]||1,l=1==h?255:2==h?65535:-1,p=l;void 0!==g?(g[0]&&(p=g[0](b,c),void 0===p?p=l:p&=l),a.K&&a.D!=g[1]&&Pb(a.K,b,p)):a.K&&(za(a.K,a,b,null,c),a.D&&Pb(a.K,b,p));e|=p<<f;f+=h<<3;b+=h;d-=h}return e}
|
|
|
|
|
function Qb(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function Rb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var l=+e+d;l<=g;l++)void 0!==f.B[l]?q("Output port "+y(l)+" already registered"):f.B[l]=[h,!1]}}
|
|
|
|
|
function Sb(a,b,c,d){for(var e=1,f=0;0<e;){var g=a.B[b],h=a.T[b]||1,l=1==h?255:2==h?65535:-1,l=(c>>>=f)&l;if(void 0!==g){if(g[0])g[0](b,l,d);a.K&&a.F!=g[1]&&Tb(a.K,b,l)}else a.K&&(za(a.K,a,b,l,d),a.F&&Tb(a.K,b,l));f+=h<<3;b+=h;e-=h}}function Ab(a,b,c){q("Memory block error ("+a+": "+x(b)+","+x(c)+")");return!1}var Bb=1,Db=2,Ub;if(qb){var Vb=new ArrayBuffer(2);(new DataView(Vb)).setUint16(0,256,!0);Ub=256===(new Uint16Array(Vb))[0]}else Ub=!1;var Wb=Ub;
|
|
|
|
|
function z(a,b,c,d){this.id=Xb+=2;this.b=null;this.J=a;this.nb=b;this.size=c||0;this.type=d||Yb;this.u=d==Zb;yb(this);this.Ca=this.hc=!1;if(c)if(qb)this.j=new ArrayBuffer(c),this.R=new DataView(this.j,0,c),this.g=new Uint8Array(this.j,0,c),this.w=new Uint16Array(this.j,0,c>>1),this.b=new Int32Array(this.j,0,c>>2),$b(this,Wb?ac:bc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;$b(this,dc)}else $b(this)}k=z.prototype;
|
|
|
|
|
k.save=function(){var a,b;if(qb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.R.getInt32(b<<2,!0);else a=this.b;return a};k.restore=function(a){if(a&&this.size==a.length<<2){var b;if(qb)for(b=0;b<a.length;b++)this.R.setInt32(b<<2,a[b],!0);else this.b=a;return this.Ca=!0}return!1};function $b(a,b){b||(b=ec);fc(a,b,void 0);gc(a,b,void 0)}function fc(a,b,c){c&&a.H||(a.Xa=b[0]||a.kc,a.lc=b[2]||a.mc);if(c||void 0===c)a.mb=b[0]||a.kc,a.Kb=b[2]||a.mc}
|
|
|
|
|
function gc(a,b,c){c&&a.P||(a.Za=!a.u&&b[1]||a.pb,a.oc=!a.u&&b[3]||a.Ob);if(c||void 0===c)a.ob=b[1]||a.pb,a.Pb=b[3]||a.Ob}k.Pa=function(a,b){b?this.P++||gc(this,qc,!1):this.H++||fc(this,qc,!1)};function rc(a,b){b?--a.P||(a.Za=a.u?a.pb:a.ob,a.oc=a.u?a.Ob:a.Pb):--a.H||(a.Xa=a.mb,a.lc=a.Kb)}function yb(a,b,c){a.K=b;a.H=a.P=0;c&&((a.H=c.H)&&fc(a,qc,!1),(a.P=c.P)&&gc(a,qc,!1))}k.kc=function(){this.K&&wa(this.K,129)&&this.K.message("attempt to read invalid block %"+x(this.J),!0);return 255};
|
|
|
|
|
k.pb=function(a,b){this.K&&wa(this.K,129)&&this.K.message("attempt to write "+y(b)+" to invalid block %"+x(this.J),!0)};k.mc=function(a,b){return this.Xa(a++,b++)|this.Xa(a,b)<<8};k.Ob=function(a,b,c){this.Za(a++,b&255,c++);this.Za(a,b>>8,c)};k.Yd=function(a){return this.b[a>>2]>>>((a&3)<<3)&255};k.be=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};k.ge=function(a,b){var c=a>>2;a=(a&3)<<3;this.b[c]=this.b[c]&~(255<<a)|b<<a;this.Ca=!0};
|
|
|
|
|
k.ke=function(a,b){var c=a>>2;a=(a&3)<<3;24>a?this.b[c]=this.b[c]&~(65535<<a)|b<<a:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.Ca=!0};k.Wd=function(a,b){if(this.K&&null!=this.J){var c=this.K;sc(c,this.J+a,1,c.I)&&c.da(!0)}return this.mb(a,b)};k.$d=function(a,b){if(this.K&&null!=this.J){var c=this.K;sc(c,this.J+a,2,c.I)&&c.da(!0)}return this.Kb(a,b)};
|
|
|
|
|
k.ee=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;sc(d,this.J+a,1,d.w)&&d.da(!0)}this.u?this.pb(0,b):this.ob(a,b,c)};k.ie=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;sc(d,this.J+a,2,d.w)&&d.da(!0)}this.u?this.pb(0,b):this.Pb(a,b,c)};k.Vd=function(a){return this.g[a]};k.Xd=function(a){return this.g[a]};k.Zd=function(a){return this.R.getUint16(a,!0)};k.ae=function(a){return a&1?this.g[a]|this.g[a+1]<<8:this.w[a>>1]};k.de=function(a,b){this.g[a]=b;this.Ca=!0};
|
|
|
|
|
k.fe=function(a,b){this.g[a]=b;this.Ca=!0};k.he=function(a,b){this.R.setUint16(a,b,!0);this.Ca=!0};k.je=function(a,b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.w[a>>1]=b;this.Ca=!0};var Yb=0,Zb=2,Cb=["NONE","RAM","ROM","VID","H/W"],Xb=0,ec=[],dc=[z.prototype.Yd,z.prototype.ge,z.prototype.be,z.prototype.ke],qc=[z.prototype.Wd,z.prototype.ee,z.prototype.$d,z.prototype.ie];if(qb)var bc=[z.prototype.Vd,z.prototype.de,z.prototype.Zd,z.prototype.he],ac=[z.prototype.Xd,z.prototype.fe,z.prototype.ae,z.prototype.je];
|
|
|
|
|
function tc(a,b){n.call(this,"CPU",a,1);var c=a.multiplier||1;this.Fa=a.cycles||b;this.U=c;this.Sa=Math.round(this.Fa/1E4)/100;this.Z=this.Sa*this.U;this.G.ka=!1;this.G.Nb=!1;this.G.jb=a.autoStart;this.G.fc=!1;this.G.Va=!1;this.ya=this.oa=0;this.za=a.csStart;this.na=a.csInterval;this.sa=a.csStop;this.T=[];this.Ab=this.rb.bind(this);sa(this)}ba(tc,n);k=tc.prototype;
|
|
|
|
|
k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.K=d;for(b=0;b<uc.length;b++)(c=this.P[uc[b]])&&this.R.ca(null,uc[b],c);this.W=vb(a,"ChipSet");a=vc(a,"autoStart");null!=a&&(this.G.jb="true"==a?!0:"false"==a?!1:!!a);sa(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
|
|
|
|
|
k.va=function(a,b){if(!b){if(a&&this.restore){wc(this);if(!this.restore(a))return!1;xc(this)}else this.reset();this.K?(a=this.K,a.i("Type ? for help with PC8080 Debugger commands"),yc(a),a.ea&&(b=a.ea,a.ea=null,zc(a,b))):this.i("No debugger detected")}Ac(this);return!0};k.ua=function(a){return a?this.save():!0};k.jb=function(){return this.G.jb||!this.K&&void 0===this.P.run?(this.rb(),!0):!1};k.ic=function(){return 0};
|
|
|
|
|
function xc(a){void 0===a.za&&(a.za=0);void 0===a.na&&(a.na=-1);void 0===a.sa&&(a.sa=-1);a.G.Va=0<=a.za&&0<a.na;a.G.Va&&(a.ya=0,a.oa=a.za-a.la)}function Bc(a,b){if(a.G.Va){var c=!1;a.ya=a.ya+a.ic()|0;a.oa-=b;0>=a.oa&&(a.oa+=a.na,c=!0);0<=a.sa&&a.sa<=Cc(a)&&(a.na=a.sa=-1,xc(a),a.da(),c=!0);c&&a.i(Cc(a)+" cycles: checksum="+x(a.ya))}}
|
|
|
|
|
k.ca=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.P[b]=c;a=!0;break;case "run":this.P[b]=c;c.onclick=function(){var a;if(a=d.R)if(a=d.R,a.G.ja)a=!0;else{var b=null,c,h=ja(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.G.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.G.ja);c++);c==h.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.G.ready?"powered yet":"ready yet"+(b.wb?" (waiting for notification)":""))+".");a=!1}a&&(d.G.ka?d.da():d.rb())};
|
|
|
|
|
a=!0;break;case "speed":this.P[b]=c;a=!0;break;case "setSpeed":this.P[b]=c,c.onclick=function(){Dc(d,d.U<<1,!0)},c.textContent=this.Z.toFixed(2)+"Mhz",a=!0}return a};function Ec(a,b,c){a.la+=b;c&&(a.ga=a.b=0)}function Fc(a,b){var c=1;b&&1<a.U&&a.Y&&(c=a.Y/a.Sa);a.hb=Math.round(1E3/Gc);a.Na=Math.floor(a.Fa/Gc*c);b||(a.wa=a.Na);a.Ua=0}function Cc(a){return a.la+a.X+a.ga-a.b}function wc(a){a.Y=0;a.ib=0;a.la=a.X=a.ga=a.b=0;xc(a);Dc(a,1)}
|
|
|
|
|
function Dc(a,b,c){var d=!1;if(void 0!==b){.8>a.Y/a.Z?b=1:d=!0;a.U=b;b=a.Sa*a.U;if(a.Z!=b){a.Z=b;b=a.Z.toFixed(2)+"Mhz";var e=a.P.setSpeed;e&&(e.textContent=b);a.i("target speed: "+b)}c&&a.R&&a.R.Ya()}Ec(a,a.X);a.X=0;a.V=fa();a.ea=0;Fc(a);return d}function Hc(a,b){var c=a.T.length;a.T.push([-1,b]);return c}function Ic(a,b,c){0<=b&&b<a.T.length&&0>a.T[b][0]&&(c*=a.Fa*a.U/1E3,a.T[b][0]=c+Jc(a))}function Jc(a,b){var c=a.ga-=a.b;a.b=0;b&&(a.ga=0);return c}
|
|
|
|
|
k.rb=function(a){if(va(this,!0)){if(!this.G.ka){Dc(this);this.R&&this.R.start(this.V,Cc(this));this.G.ka=!0;this.G.Nb=!0;this.W&&this.W.start();var b=this.P.run;b&&(b.textContent="Halt");this.R&&(Kc(this.R,!0),a&&this.R.Ya(!0))}this.Ua>=this.Fa&&Fc(this,!0);this.Ha=0;this.Ma=fa();this.ea&&(a=this.Ma-this.ea,a>this.hb&&(this.V+=a,this.V>this.Ma&&(this.V=this.Ma)));try{do{for(var c,d=this.G.Va?1:this.Na,e=this.T.length-1;0<=e;e--){var f=this.T[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.Bb(c);c=Jc(this,!0);
|
|
|
|
|
this.Ha+=c;this.X+=c;Bc(this,c);a=c;for(var g=this.T.length-1;0<=g;g--){var h=this.T[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.wa-=c;if(0>=this.wa){this.wa+=this.Na;++this.ib>=Lc&&(this.R&&Kc(this.R),this.ib=0);break}}while(this.G.ka)}catch(l){this.da();Ac(this);this.R&&this.R.stop(fa(),Cc(this));va(this,!1);qa(this,l.stack||l.message);return}c=setTimeout;d=this.Ab;this.ea=fa();e=this.hb;this.Ha&&(e=Math.round(e*this.Ha/this.Na));e-=this.ea-this.Ma;if(f=this.ea-this.V)this.Y=Math.round(this.X/
|
|
|
|
|
(10*f))/100,864E5<=f&&(this.la=0,Dc(this));if(0>e||this.Y<this.Z)-1E3>e&&(this.V-=e),e=0;this.Ua+=this.Ha;this.ea+=e;c(d,e)}else Ac(this),this.R&&this.R.stop(fa(),Cc(this))};k.Bb=function(){return 0};k.da=function(a){ua(this,!0);Jc(this);Ec(this,this.X);this.X=0;if(this.G.ka){this.G.ka=!1;this.W&&this.W.stop();var b=this.P.run;b&&(b.textContent="Run")}this.G.complete=a};function Ac(a,b){if(a.R){for(var c=a.R,d=0;d<c.A.length;d++)Mc(c.A[d],b);Kc(a.R,b)}}var Gc=30,Lc=15,uc=["power","reset"];
|
|
|
|
|
function Nc(a){var b=+a.model||8080;tc.call(this,a,1E6);this.ub=b;this.eb=Oc;wc(this);this.G.complete=this.G.wd=!1;this.gb=0;this.La=[];this.fb=0;Pc(this)}ba(Nc,tc);function Qc(a,b){a.La.push(b)}k=Nc.prototype;k.reset=function(){this.G.ka&&this.da();Pc(this);wc(this);this.G.error=!1;tc.prototype.reset.call(this)};function Pc(a){a.g=0;a.w=0;a.A=0;a.B=0;a.C=0;a.D=0;a.F=0;a.M=0;C(a,a.fb);Rc(a,0);a.S=0}function Sc(a,b){a.fb=b;C(a,b)}
|
|
|
|
|
k.ic=function(){var a=this.g+this.w+this.A+this.B+this.C+this.D+this.F|0;return a=a+this.M+this.j+Tc(this)|0};k.save=function(){var a=new Uc(this);a.set(0,[this.g,this.w,this.A,this.B,this.C,this.D,this.F,this.M,this.j,Tc(this)]);a.set(1,[this.S,this.la,this.U]);a.set(2,Jb(this.H));return a.data()};
|
|
|
|
|
k.restore=function(a){var b=a[0];this.g=b[0];this.w=b[1];this.A=b[2];this.B=b[3];this.C=b[4];this.D=b[5];this.F=b[6];this.M=b[7]&65535;C(this,b[8]);Rc(this,b[9]);b=a[1];this.S=b[0];this.la=b[1];Dc(this,b[3]);a:{b=this.H;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.O){for(var f=0,g=Array(b.O),h=0;h<e.length-1;)for(var l=e[h++],p=e[h++];l--;)g[f++]=p;e=g}f=b.b[d];if(!f||!f.restore(e)){q("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
|
|
|
|
k.ca=function(a,b,c){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 "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.P[b]=c;this.gb++;a=!0;break;default:a=tc.prototype.ca.call(this,a,b,c)}return a};function Vc(a){return a.w<<8|a.A}function hd(a,b){a.w=b>>8&255;a.A=b&255}function id(a){return a.B<<8|a.C}function jd(a,b){a.B=b>>8&255;a.C=b&255}function D(a){return a.D<<8|a.F}
|
|
|
|
|
function kd(a,b){a.D=b>>8&255;a.F=b&255}function C(a,b){a.j=b&65535}function ld(a){return a.I&256?1:0}function md(a,b){a.I=a.I&255|b}function nd(a){return rb[a.L&255]?4:0}function od(a){return(a.L^a.O)&16?16:0}function pd(a){return a.I&255?0:64}function qd(a){return a.L&128?128:0}function Tc(a){return a.N&-214|qd(a)|pd(a)|od(a)|nd(a)|ld(a)}function Rc(a,b){a.I=a.L=a.O=0;b&1&&(a.I|=256);b&4||(a.L|=1);b&16&&(a.O|=16);b&64||(a.I|=255);b&128&&(a.L^=192);a.N=a.N&-726|b&512|2}
|
|
|
|
|
function rd(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b)&255}function sd(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?1:0))&255}function td(a,b){a.I=a.L=a.O=a.g&b;(a.g|b)&8&&(a.O^=16);return a.I}function ud(a,b){a.O=b^255;b=a.L=b+255&255;a.I=a.I&-256|b;return b}function vd(a,b){a.O=b;b=a.L=b+1&255;a.I=a.I&-256|b;return b}function wd(a,b){return a.L=a.I=a.O=a.g|b}function E(a,b){b^=255;a.O=a.g^b;return a.L=(a.I=a.g+b+1^256)&255}
|
|
|
|
|
function xd(a,b){b^=255;a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?0:1)^256)&255}function yd(a,b){return a.L=a.I=a.O=a.g^b}function F(a,b){a=a.H;return a.b[(b&a.C)>>>a.g].Xa(b&a.j,b)}function zd(a,b,c){a=a.H;a.b[(b&a.C)>>>a.g].Za(b&a.j,c&255,b)}function G(a){var b=F(a,a.j);C(a,a.j+1);return b}function H(a){var b=Fb(a.H,a.j);C(a,a.j+2);return b}function Ad(a){var b=Fb(a.H,a.M);a.M=a.M+2&65535;return b}function I(a,b){a.M=a.M-2&65535;Ib(a.H,a.M,b)}
|
|
|
|
|
function Bd(a){if(a.b&&a.S&255&&a.N&512){for(var b=0;8>b&&!(a.S&1<<b);b++);a.S&=~(0>b?255:1<<b);a.N&=-513;a.S&=-257;a.eb[199|b<<3].call(a)}return a.S&256?(Jc(a),!1):!0}function Cd(a,b){a.S|=1<<b;a.N&512&&Jc(a)}function J(a,b,c,d){d=d||2;a.P[b]&&(void 0===c&&(qa(a,"Value for "+b+" is invalid"),a.da()),c=!a.G.ka||a.G.fc?x(c,d):"--------".substr(0,d),a.P[b].textContent!=c&&(a.P[b].textContent=c))}
|
|
|
|
|
k.Bb=function(a){this.G.complete=!0;var b=this.G.wd=this.K&&Dd(this.K),c=a?this.G.Nb?0:1:-1;this.G.Nb=!1;this.ga=this.b=a;if(Bd(this)){do{if(b){if(Ed(this.K,this.j,c)){this.da();break}c=1}this.eb[G(this)].call(this)}while(0<this.b)}return this.G.complete?this.ga-this.b:void 0===this.G.complete?0:-1};hb(function(){for(var a=pa(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=na(c),d=new Nc(d);oa(d,c)}});function Fd(){this.b-=4}function Gd(){C(this,H(this));this.b-=10}
|
|
|
|
|
function Hd(){C(this,Ad(this));this.b-=10}function Id(){var a=H(this);I(this,this.j);C(this,a);this.b-=17}
|
|
|
|
|
var Oc=[Fd,function(){hd(this,H(this));this.b-=10},function(){zd(this,Vc(this),this.g);this.b-=7},function(){hd(this,Vc(this)+1);this.b-=5},function(){this.w=vd(this,this.w);this.b-=5},function(){this.w=ud(this,this.w);this.b-=5},function(){this.w=G(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|a>>8;md(this,a&256);this.b-=4},Fd,function(){var a;kd(this,a=D(this)+Vc(this));md(this,a>>8&256);this.b-=10},function(){this.g=F(this,Vc(this));this.b-=7},function(){hd(this,Vc(this)-1);this.b-=
|
|
|
|
|
5},function(){this.A=vd(this,this.A);this.b-=5},function(){this.A=ud(this,this.A);this.b-=5},function(){this.A=G(this);this.b-=7},function(){var a=this.g<<8&256;this.g=(a|this.g)>>1;md(this,a);this.b-=4},Fd,function(){jd(this,H(this));this.b-=10},function(){zd(this,id(this),this.g);this.b-=7},function(){jd(this,id(this)+1);this.b-=5},function(){this.B=vd(this,this.B);this.b-=5},function(){this.B=ud(this,this.B);this.b-=5},function(){this.B=G(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|
|
|
|
|
|
ld(this);md(this,a&256);this.b-=4},Fd,function(){var a;kd(this,a=D(this)+id(this));md(this,a>>8&256);this.b-=10},function(){this.g=F(this,id(this));this.b-=7},function(){jd(this,id(this)-1);this.b-=5},function(){this.C=vd(this,this.C);this.b-=5},function(){this.C=ud(this,this.C);this.b-=5},function(){this.C=G(this);this.b-=7},function(){var a=this.g<<8;this.g=(ld(this)<<8|this.g)>>1;md(this,a&256);this.b-=4},Fd,function(){kd(this,H(this));this.b-=10},function(){var a=H(this);Ib(this.H,a,D(this));
|
|
|
|
|
this.b-=16},function(){kd(this,D(this)+1);this.b-=5},function(){this.D=vd(this,this.D);this.b-=5},function(){this.D=ud(this,this.D);this.b-=5},function(){this.D=G(this);this.b-=7},function(){var a=0,b=ld(this);if(od(this)||9<(this.g&15))a|=6;if(b||154<=this.g)a|=96,b=1;this.g=rd(this,a);md(this,b?256:0);this.b-=4},Fd,function(){var a;kd(this,a=D(this)+D(this));md(this,a>>8&256);this.b-=10},function(){var a;a=H(this);a=Fb(this.H,a);kd(this,a);this.b-=16},function(){kd(this,D(this)-1);this.b-=5},function(){this.F=
|
|
|
|
|
vd(this,this.F);this.b-=5},function(){this.F=ud(this,this.F);this.b-=5},function(){this.F=G(this);this.b-=7},function(){this.g=~this.g&255;this.b-=4},Fd,function(){this.M=H(this)&65535;this.b-=10},function(){zd(this,H(this),this.g);this.b-=13},function(){this.M=this.M+1&65535;this.b-=5},function(){var a=D(this);zd(this,a,vd(this,F(this,a)));this.b-=10},function(){var a=D(this);zd(this,a,ud(this,F(this,a)));this.b-=10},function(){zd(this,D(this),G(this));this.b-=10},function(){this.I|=256;this.b-=
|
|
|
|
|
4},Fd,function(){var a;kd(this,a=D(this)+this.M);md(this,a>>8&256);this.b-=10},function(){this.g=F(this,H(this));this.b-=13},function(){this.M=this.M-1&65535;this.b-=5},function(){this.g=vd(this,this.g);this.b-=5},function(){this.g=ud(this,this.g);this.b-=5},function(){this.g=G(this);this.b-=7},function(){md(this,ld(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.w=this.A;this.b-=5},function(){this.w=this.B;this.b-=5},function(){this.w=this.C;this.b-=5},function(){this.w=this.D;this.b-=
|
|
|
|
|
5},function(){this.w=this.F;this.b-=5},function(){this.w=F(this,D(this));this.b-=7},function(){this.w=this.g;this.b-=5},function(){this.A=this.w;this.b-=5},function(){this.b-=5},function(){this.A=this.B;this.b-=5},function(){this.A=this.C;this.b-=5},function(){this.A=this.D;this.b-=5},function(){this.A=this.F;this.b-=5},function(){this.A=F(this,D(this));this.b-=7},function(){this.A=this.g;this.b-=5},function(){this.B=this.w;this.b-=5},function(){this.B=this.A;this.b-=5},function(){this.b-=5},function(){this.B=
|
|
|
|
|
this.C;this.b-=5},function(){this.B=this.D;this.b-=5},function(){this.B=this.F;this.b-=5},function(){this.B=F(this,D(this));this.b-=7},function(){this.B=this.g;this.b-=5},function(){this.C=this.w;this.b-=5},function(){this.C=this.A;this.b-=5},function(){this.C=this.B;this.b-=5},function(){this.b-=5},function(){this.C=this.D;this.b-=5},function(){this.C=this.F;this.b-=5},function(){this.C=F(this,D(this));this.b-=7},function(){this.C=this.g;this.b-=5},function(){this.D=this.w;this.b-=5},function(){this.D=
|
|
|
|
|
this.A;this.b-=5},function(){this.D=this.B;this.b-=5},function(){this.D=this.C;this.b-=5},function(){this.b-=5},function(){this.D=this.F;this.b-=5},function(){this.D=F(this,D(this));this.b-=7},function(){this.D=this.g;this.b-=5},function(){this.F=this.w;this.b-=5},function(){this.F=this.A;this.b-=5},function(){this.F=this.B;this.b-=5},function(){this.F=this.C;this.b-=5},function(){this.F=this.D;this.b-=5},function(){this.b-=5},function(){this.F=F(this,D(this));this.b-=7},function(){this.F=this.g;
|
|
|
|
|
this.b-=5},function(){zd(this,D(this),this.w);this.b-=7},function(){zd(this,D(this),this.A);this.b-=7},function(){zd(this,D(this),this.B);this.b-=7},function(){zd(this,D(this),this.C);this.b-=7},function(){zd(this,D(this),this.D);this.b-=7},function(){zd(this,D(this),this.F);this.b-=7},function(){var a=this.j-1;if(this.La.length)for(var b=0;b<this.La.length;b++)if(this.La[b](a))return;this.b-=7;this.S|=256;Jc(this);this.K&&wa(this,-2147483648)?(C(this,a),this.K.da()):this.N&512||(this.K&&C(this,a),
|
|
|
|
|
this.da())},function(){zd(this,D(this),this.g);this.b-=7},function(){this.g=this.w;this.b-=5},function(){this.g=this.A;this.b-=5},function(){this.g=this.B;this.b-=5},function(){this.g=this.C;this.b-=5},function(){this.g=this.D;this.b-=5},function(){this.g=this.F;this.b-=5},function(){this.g=F(this,D(this));this.b-=7},function(){this.b-=5},function(){this.g=rd(this,this.w);this.b-=4},function(){this.g=rd(this,this.A);this.b-=4},function(){this.g=rd(this,this.B);this.b-=4},function(){this.g=rd(this,
|
|
|
|
|
this.C);this.b-=4},function(){this.g=rd(this,this.D);this.b-=4},function(){this.g=rd(this,this.F);this.b-=4},function(){this.g=rd(this,F(this,D(this)));this.b-=7},function(){this.g=rd(this,this.g);this.b-=4},function(){this.g=sd(this,this.w);this.b-=4},function(){this.g=sd(this,this.A);this.b-=4},function(){this.g=sd(this,this.B);this.b-=4},function(){this.g=sd(this,this.C);this.b-=4},function(){this.g=sd(this,this.D);this.b-=4},function(){this.g=sd(this,this.F);this.b-=4},function(){this.g=sd(this,
|
|
|
|
|
F(this,D(this)));this.b-=7},function(){this.g=sd(this,this.g);this.b-=4},function(){this.g=E(this,this.w);this.b-=4},function(){this.g=E(this,this.A);this.b-=4},function(){this.g=E(this,this.B);this.b-=4},function(){this.g=E(this,this.C);this.b-=4},function(){this.g=E(this,this.D);this.b-=4},function(){this.g=E(this,this.F);this.b-=4},function(){this.g=E(this,F(this,D(this)));this.b-=7},function(){this.g=E(this,this.g);this.b-=4},function(){this.g=xd(this,this.w);this.b-=4},function(){this.g=xd(this,
|
|
|
|
|
this.A);this.b-=4},function(){this.g=xd(this,this.B);this.b-=4},function(){this.g=xd(this,this.C);this.b-=4},function(){this.g=xd(this,this.D);this.b-=4},function(){this.g=xd(this,this.F);this.b-=4},function(){this.g=xd(this,F(this,D(this)));this.b-=7},function(){this.g=xd(this,this.g);this.b-=4},function(){this.g=td(this,this.w);this.b-=4},function(){this.g=td(this,this.A);this.b-=4},function(){this.g=td(this,this.B);this.b-=4},function(){this.g=td(this,this.C);this.b-=4},function(){this.g=td(this,
|
|
|
|
|
this.D);this.b-=4},function(){this.g=td(this,this.F);this.b-=4},function(){this.g=td(this,F(this,D(this)));this.b-=7},function(){this.g=td(this,this.g);this.b-=4},function(){this.g=yd(this,this.w);this.b-=4},function(){this.g=yd(this,this.A);this.b-=4},function(){this.g=yd(this,this.B);this.b-=4},function(){this.g=yd(this,this.C);this.b-=4},function(){this.g=yd(this,this.D);this.b-=4},function(){this.g=yd(this,this.F);this.b-=4},function(){this.g=yd(this,F(this,D(this)));this.b-=7},function(){this.g=
|
|
|
|
|
yd(this,this.g);this.b-=4},function(){this.g=wd(this,this.w);this.b-=4},function(){this.g=wd(this,this.A);this.b-=4},function(){this.g=wd(this,this.B);this.b-=4},function(){this.g=wd(this,this.C);this.b-=4},function(){this.g=wd(this,this.D);this.b-=4},function(){this.g=wd(this,this.F);this.b-=4},function(){this.g=wd(this,F(this,D(this)));this.b-=7},function(){this.g=wd(this,this.g);this.b-=4},function(){E(this,this.w);this.b-=4},function(){E(this,this.A);this.b-=4},function(){E(this,this.B);this.b-=
|
|
|
|
|
4},function(){E(this,this.C);this.b-=4},function(){E(this,this.D);this.b-=4},function(){E(this,this.F);this.b-=4},function(){E(this,F(this,D(this)));this.b-=7},function(){E(this,this.g);this.b-=4},function(){pd(this)||(C(this,Ad(this)),this.b-=6);this.b-=5},function(){hd(this,Ad(this));this.b-=10},function(){var a=H(this);pd(this)||C(this,a);this.b-=10},Gd,function(){var a=H(this);pd(this)||(I(this,this.j),C(this,a),this.b-=6);this.b-=11},function(){I(this,Vc(this));this.b-=11},function(){this.g=
|
|
|
|
|
rd(this,G(this));this.b-=7},function(){I(this,this.j);C(this,0);this.b-=11},function(){pd(this)&&(C(this,Ad(this)),this.b-=6);this.b-=5},Hd,function(){var a=H(this);pd(this)&&C(this,a);this.b-=10},Gd,function(){var a=H(this);pd(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Id,function(){this.g=sd(this,G(this));this.b-=7},function(){I(this,this.j);C(this,8);this.b-=11},function(){ld(this)||(C(this,Ad(this)),this.b-=6);this.b-=5},function(){jd(this,Ad(this));this.b-=10},function(){var a=H(this);
|
|
|
|
|
ld(this)||C(this,a);this.b-=10},function(){var a=G(this);Sb(this.H,a,this.g,this.j+-2&65535);this.b-=10},function(){var a=H(this);ld(this)||(I(this,this.j),C(this,a),this.b-=6);this.b-=11},function(){I(this,id(this));this.b-=11},function(){this.g=E(this,G(this));this.b-=7},function(){I(this,this.j);C(this,16);this.b-=11},function(){ld(this)&&(C(this,Ad(this)),this.b-=6);this.b-=5},Hd,function(){var a=H(this);ld(this)&&C(this,a);this.b-=10},function(){var a=G(this);this.g=Ob(this.H,a,this.j+-2&65535)&
|
|
|
|
|
255;this.b-=10},function(){var a=H(this);ld(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Id,function(){this.g=xd(this,G(this));this.b-=7},function(){I(this,this.j);C(this,24);this.b-=11},function(){nd(this)||(C(this,Ad(this)),this.b-=6);this.b-=5},function(){kd(this,Ad(this));this.b-=10},function(){var a=H(this);nd(this)||C(this,a);this.b-=10},function(){var a=Ad(this);I(this,D(this));kd(this,a);this.b-=18},function(){var a=H(this);nd(this)||(I(this,this.j),C(this,a),this.b-=6);this.b-=
|
|
|
|
|
11},function(){I(this,D(this));this.b-=11},function(){this.g=td(this,G(this));this.b-=7},function(){I(this,this.j);C(this,32);this.b-=11},function(){nd(this)&&(C(this,Ad(this)),this.b-=6);this.b-=5},function(){C(this,D(this));this.b-=5},function(){var a=H(this);nd(this)&&C(this,a);this.b-=10},function(){var a=D(this);kd(this,id(this));jd(this,a);this.b-=5},function(){var a=H(this);nd(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Id,function(){this.g=yd(this,G(this));this.b-=7},function(){I(this,
|
|
|
|
|
this.j);C(this,40);this.b-=11},function(){qd(this)||(C(this,Ad(this)),this.b-=6);this.b-=5},function(){var a=Ad(this);Rc(this,a&255|this.N&-256);this.g=a>>8;this.b-=10},function(){var a=H(this);qd(this)||C(this,a);this.b-=10},function(){this.N&=-513;this.b-=4},function(){var a=H(this);qd(this)||(I(this,this.j),C(this,a),this.b-=6);this.b-=11},function(){I(this,Tc(this)&255|this.g<<8);this.b-=11},function(){this.g=wd(this,G(this));this.b-=7},function(){I(this,this.j);C(this,48);this.b-=11},function(){qd(this)&&
|
|
|
|
|
(C(this,Ad(this)),this.b-=6);this.b-=5},function(){this.M=D(this)&65535;this.b-=5},function(){var a=H(this);qd(this)&&C(this,a);this.b-=10},function(){this.N|=512;this.b-=4;Bd(this)},function(){var a=H(this);qd(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Id,function(){E(this,G(this));this.b-=7},function(){I(this,this.j);C(this,56);this.b-=11}];
|
|
|
|
|
function Jd(a){n.call(this,"ChipSet",a,32768);var b=a.model;b&&!Kd[b]&&ga("Unrecognized ChipSet model: "+b);this.g=Kd[b]||{};a.sound&&(this.U=null,window&&(this.U=window.AudioContext||window.webkitAudioContext),this.U&&new this.U);sa(this)}ba(Jd,n);k=Jd.prototype;k.ca=function(){return!1};
|
|
|
|
|
k.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;this.R=a;this.B=vb(a,"Keyboard");this.C=vb(a,"SerialPort");this.video=vb(a,"Video");Nb(b,this,this.g.yb);Rb(b,this,this.g.zb);if(d){var e=this;Ld(d,16384,function(){for(var a="",b=0;b<e.j.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=y(e.j[b]);e.K.i(a)})}};k.va=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){this.g.INIT&&!this.restore(this.g.INIT)&&this.aa("reset error")};
|
|
|
|
|
k.save=function(){var a=new Uc(this);switch(this.g.pa){case Md.pa:a.set(0,[this.ea,this.A,this.ga,this.N,this.T,this.Y,this.Z]);break;case L.pa:a.set(0,[this.W,this.D]),a.set(1,[this.F,this.I]),a.set(2,[this.w,this.O,this.X,this.V]),a.set(3,[this.M,this.b,this.L,this.S,this.j])}return a.data()};
|
|
|
|
|
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.g.pa){case Md.pa:return this.ea=b[0],this.A=b[1],this.ga=b[2],this.N=b[3],this.T=b[4],this.Y=b[5],this.Z=b[6],!0;case L.pa:return this.W=b[0],this.D=b[1],b=a[1],this.F=b[0],this.I=b[1],b=a[2],this.w=b[0],this.O=b[1],this.X=b[2],this.V=b[3],b=a[3],this.M=b[0],this.b=b[1],this.L=b[2],this.S=b[3],this.j=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.Cd=function(a,b){var c=this.ea;v(this,a,null,b,"STATUS0",c,!0);return c};
|
|
|
|
|
k.Dd=function(a,b){var c=this.A;v(this,a,null,b,"STATUS1",c,!0);return c};k.Ed=function(a,b){var c=this.ga;v(this,a,null,b,"STATUS2",c,!0);return c};k.Bd=function(a,b){var c=this.N>>8-this.T&255;v(this,a,null,b,"SHIFT.RESULT",c,!0);return c};k.Ld=function(a,b,c){v(this,a,b,c,"SHIFT.COUNT",null,!0);this.T=b};k.Nd=function(a,b,c){v(this,a,b,c,"SOUND1",null,!0);this.Y=b};k.Md=function(a,b,c){v(this,a,b,c,"SHIFT.DATA",null,!0);this.N=b<<8|this.N>>8};
|
|
|
|
|
k.Od=function(a,b,c){v(this,a,b,c,"SOUND2",null,!0);this.Z=b};k.Pd=function(a,b,c){v(this,a,b,c,"WATCHDOG",null,!0)};function Nd(a){var b=0,c=0,d=~a.M;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
|
|
|
|
|
k.Fd=function(a,b){var c=this.D,c=c&~L.xa.Zb;if((Cc(this.u)&64)<<1&&(c|=L.xa.Zb,c!=this.D)){var d,e;d=this.L&1;e=this.L>>1&7;switch(e){case L.Aa.Ja.ed:break;case L.Aa.Ja.pc:this.M=this.M<<1|d;break;case L.Aa.Ja.xc:d=Nd(this);this.j[d]=L.Aa.tb;xa(this,"doNVRCommand(): erase data at addr "+y(d));break;case L.Aa.Ja.qc:this.b=this.b<<1|d;break;case L.Aa.Ja.nd:d=Nd(this);e=this.b&L.Aa.tb;this.j[d]=e;xa(this,"doNVRCommand(): write data "+y(e)+" to addr "+y(d));break;case L.Aa.Ja.bd:d=Nd(this);e=this.j[d];
|
|
|
|
|
null==e&&(e=L.Aa.tb);this.b=e;xa(this,"doNVRCommand(): read data "+y(e)+" from addr "+y(d));break;case L.Aa.Ja.dd:this.b<<=1;this.S=this.b&L.Aa.tb+1;break;default:xa(this,"doNVRCommand(): unrecognized command "+Da(e))}}c&=~L.xa.$b;this.S&&(c|=L.xa.$b);c&=~L.xa.Ub;if(d=this.B){d=this.B;if(e=d.A)e=d.u,e=Cc(d.u)>=d.F+e.Fa*e.U/1E3*1.2731488;e&&(d.A=!1);d=!d.A}d&&(c|=L.xa.Ub);c&=~L.xa.bc;this.C&&this.C.ia&Od&&(c|=L.xa.bc);this.D=c;v(this,a,null,b,"FLAGS",c);return c};
|
|
|
|
|
k.Qd=function(a,b,c){v(this,a,b,c,"BRIGHTNESS");this.W=b};k.Td=function(a,b,c){v(this,a,b,c,"NVR.LATCH");this.L=b};k.Sd=function(a,b,c){v(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.w=this.w&-4|a;break;case 1:this.w=this.w&-13|a<<2;this.video&&(b=this.video,a=this.w,xa(b,"updateScrollOffset("+a+")"),b.sa!==a&&((b.sa=a)?Mc(b,!0):b.ya=!0));break;case 2:switch(a){case 0:this.O=~this.O;break;case 2:case 3:this.X=3-a}break;case 3:this.V=a}};
|
|
|
|
|
k.Rd=function(a,b,c){v(this,a,b,c,"DC011");b&L.Ka.ad?(b&=L.Ka.ac,this.I!=b&&(this.I=b,this.video&&(a=this.video,b=this.I==L.Ka.ac?50:60,xa(a,"updateRate("+b+")"),a.hb=b))):(b&=L.Ka.Rb,this.F!=b&&(this.F=b,this.video&&(a=this.F==L.Ka.Rb?132:80,b=this.video,xa(b,"updateDimensions("+a+","+(80<a&&this.D&L.xa.Yb?14:24)+")"),b.O=a,b.fa=b.Ha,80<a&&b.fa--,Pd(b)&&Qd(b))))};
|
|
|
|
|
var Md={pa:1978.1,gd:{qa:0,Re:1,Ve:16,bf:32,lf:64,kf:128,$a:14},Oa:{qa:1,vc:1,Zc:2,Vc:4,Wc:16,Xc:32,Yc:64,$a:8},hd:{qa:2,Qe:3,uf:4,Se:8,ff:16,gf:32,hf:64,Te:128,$a:0},qf:{qa:3},nf:{qa:2,cf:7},sf:{qa:3,vf:1,rf:2,jf:4,$e:8,Ue:16,le:32},pf:{qa:4},tf:{qa:5,We:1,Xe:2,Ye:4,Ze:8,wf:16}},L={pa:100,xa:{qa:66,bc:1,Yb:2,Sc:4,ef:8,df:16,$b:32,Zb:64,Ub:128},tc:{qa:66,INIT:0},Ka:{qa:194,oe:0,Rb:16,ad:32,ac:48,Ec:0,Fc:32},sb:{qa:162,mf:0,Hc:0,Dc:0,Gc:0,Cc:0},Aa:{af:{qa:98},Ja:{qc:0,pc:1,dd:2,nd:4,xc:5,bd:6,ed:7},
|
|
|
|
|
tb:16383}},Kd={SI1978:Md,VT100:L};Md.INIT=[[Md.gd.$a,Md.Oa.$a,Md.hd.$a,0,0,0,0]];
|
|
|
|
|
L.INIT=[[L.tc.INIT,L.xa.Yb|L.xa.Sc],[L.Ka.Ec,L.Ka.Fc],[L.sb.Hc,L.sb.Dc,L.sb.Gc,L.sb.Cc],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
|
|
|
|
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];Md.yb={0:Jd.prototype.Cd,1:Jd.prototype.Dd,2:Jd.prototype.Ed,3:Jd.prototype.Bd};
|
|
|
|
|
Md.zb={2:Jd.prototype.Ld,3:Jd.prototype.Nd,4:Jd.prototype.Md,5:Jd.prototype.Od,6:Jd.prototype.Pd};L.yb={66:Jd.prototype.Fd};L.zb={66:Jd.prototype.Qd,98:Jd.prototype.Td,162:Jd.prototype.Sd,194:Jd.prototype.Rd};hb(function(){for(var a=pa(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=na(c),d=new Jd(d);oa(d,c)}});
|
|
|
|
|
function Rd(a){n.call(this,"ROM",a);this.b=null;this.A=a.addr;this.g=a.size;this.w=a.alias;this.j=a.file;this.B=Ea(this.j);if(this.j){a=this.j;var b=Fa(this.B);"json"!=b&&"hex"!=b&&(a=Ha()+"/api/v1/dump?file="+this.j+"&format=bytes&decimal=true");var c=this;Sa(a,null,!0,function(a,b,f){Sd(c,a,b,f)})}}ba(Rd,n);Rd.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;Td(this)};
|
|
|
|
|
Rd.prototype.va=function(){if(this.ra){if(this.K){var a=this.K,b=this.id,c=this.A,d=this.g,e=this.ra,f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var l=h.o,p=h.a;if(void 0!==l){var r=f,l=[l>>>0,g],t=Pa(r,l,a.ec);0>t&&r.splice(-(t+1),0,l)}p&&(h.a=p.replace(/''/g,'"'))}a.A.push({If:b,J:c,Hd:d,ra:e,dc:f})}delete this.ra}return!0};Rd.prototype.ua=function(){return!0};
|
|
|
|
|
function Sd(a,b,c,d){if(d)a.aa("Unable to load system ROM (error "+d+": "+b+")");else{da(a.bb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.data;if(f)a.b=f;else if(g)for(a.b=Array(4*g.length),d=c=0;c<g.length;c++)a.b[d++]=g[c]&255,a.b[d++]=g[c]>>8&255,a.b[d++]=g[c]>>16&255,a.b[d++]=g[c]>>24&255;else a.b=e;a.ra=e.symbols;if(!a.b.length){q("Empty ROM: "+b);return}if(1==a.b.length){q(a.b[0]);return}}catch(h){a.aa("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
|
|
|
|
|
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=Ba(b[e],16);Td(a)}}
|
|
|
|
|
function Td(a){if(!ra(a))if(!a.j)sa(a);else if(a.b&&a.H){a.g||(a.g=a.b.length);if(a.b.length!=a.g)qa(a,"ROM size ("+x(a.b.length,8,!0)+") does not match specified size ("+x(a.g,8,!0)+")");else{var b;b=a.A;if(zb(a.H,b,a.g,Zb)){var c;for(c=0;c<a.b.length;c++)Hb(a.H,b+c,a.b[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.H,g=d.g,h=[],l=d.A>>>f.g;0<g&&l<f.b.length;)h.push(f.b[l++]),g-=f.w;f=d.H;d=d.g;g=0;for(e>>>=
|
|
|
|
|
f.g;0<d&&e<f.b.length;){l=h[g++];if(!l)break;f.b[e++]=l;d-=f.w}}delete a.b}}sa(a)}}hb(function(){for(var a=pa(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=na(c),d=new Rd(d);oa(d,c)}});
|
|
|
|
|
function Ud(a){n.call(this,"RAM",a);this.ra=this.g=null;this.w=a.addr;this.A=a.size;this.Qa=a.load;this.Ia=a.exec;this.j=!1;this.b=a.file;this.B=Ea(this.b);if(this.b){a=this.b;var b=Fa(this.B);"json"!=b&&"hex"!=b&&(a=Ha()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;Sa(a,null,!0,function(a,b,f){f?c.aa("Unable to load RAM resource (error "+f+": "+a+")"):(da(c.bb,a,b),(a=Ta(a,b))?(c.g=a.ma,c.ra=a.ra,null==c.Qa&&(c.Qa=a.Qa),null==c.Ia&&(c.Ia=a.Ia)):c.b=null,Vd(c))})}}ba(Ud,n);
|
|
|
|
|
Ud.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;Vd(this)};Ud.prototype.va=function(){return!0};Ud.prototype.ua=function(){return!0};
|
|
|
|
|
function Vd(a){!a.j&&a.A&&zb(a.H,a.w,a.A,1)&&(a.j=!0);if(!ra(a)){if(!a.j)q("No RAM allocated");else if(a.b){if(!a.g||!a.H)return;var b=a.w;null!==a.Qa&&(b=a.Qa);for(var c=0;c<a.g.length;c++)Hb(a.H,b+c,a.g[c]);if(null!==a.Ia){if(a.Ia==Wd){for(c=0;c<Xd.length;c++)Hb(a.H,Xd[c],118);Qc(a.u,function(a){return function(b){if(0<=Xd.indexOf(b)){var c=!1,d=a.u,e=a.K;if(b==Yd)switch(c=!0,d.A){case Zd:$d(a,String.fromCharCode(d.C));break;case ae:for(var l=id(d),p="",r=255;r--;){var t=F(a.u,l++);if(36==t)break;
|
|
|
|
|
p+=String.fromCharCode(t)}$d(a,p);break;default:c=!1}c?Hd.call(d):e&&(a.i("\nCP/M vector "+y(b)),C(d,b),e.da());b=!0}else b=!1;return b}}(a))}Sc(a.u,a.Ia)}delete a.g}sa(a)}}Ud.prototype.reset=function(){};function $d(a,b){b=b.replace(/\r/g,"");a.ta&&(a.ta.value+=b,a.ta.scrollTop=a.ta.scrollHeight)}var Yd=5,Zd=2,ae=9,Wd=256,Xd=[0,Yd];hb(function(){for(var a=pa(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=na(c),d=new Ud(d);oa(d,c)}});
|
|
|
|
|
function be(a){n.call(this,"Keyboard",a,65536);(a=a.model)&&!ce[a]&&ga("Unrecognized Keyboard8080 model: "+a);this.b=ce[a]||{};this.reset();sa(this)}ba(be,n);k=be.prototype;
|
|
|
|
|
k.ca=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.P[e]){if("led"==a&&this.b.cb[b])return this.P[e]=c,!0;switch(b){case "kbd":case "screen":return c.onkeydown=function(a){return de(d,a,!0)},c.onkeyup=function(a){return de(d,a,!1)},c.onkeypress=function(a){a=a.keyCode;a>=m.qb&&a<=m.Eb?d.g&(ee|fe)||(d.g|=fe,ge(d,20,!0),Ce(d)):a>=m.qd&&a<=m.z&&d.g&fe&&(d.g&=~fe,ge(d,20,!1),Ce(d));return!0},c.onpaste=function(a){a:{if(d.C&&d.C.Ra&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),
|
|
|
|
|
a=a.clipboardData||window.clipboardData)){De(d.C,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.b.Ta&&void 0!==this.b.Ta[b])return this.P[e]=c,c.onclick=function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=17!=b;if(!e){c.style.fontWeight="normal";if(d=!(a.g&Ee))c.style.fontWeight="bold";Fe(a,b,d)}ge(a,b,d,e);a.R&&a.R.Ya()}}(this,this.b.Ta[b]),!0}}return!1};
|
|
|
|
|
k.Ea=function(a,b,c,d){this.R=a;this.u=c;this.K=d;var e=this;this.L=Hc(this.u,function(){Ge(e)});this.W=vb(a,"ChipSet");this.C=vb(a,"SerialPort");Nb(b,this,this.b.yb);Rb(b,this,this.b.zb)};k.va=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){this.j=[];this.g=0;this.b.INIT&&!this.restore(this.b.INIT)&&this.aa("reset error")};
|
|
|
|
|
k.save=function(){var a=new Uc(this);switch(this.b.pa){case M.pa:a.set(0,[this.D,this.B,this.A,this.F,-1])}return a.data()};k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.pa){case He.pa:return!0;case M.pa:return this.D=b[0],Ce(this,this.D&M.Ba.Wb),this.B=b[1],this.A=b[2],this.F=b[3],this.w=b[4],!0}return!1};
|
|
|
|
|
function Ce(a,b){var c;null!=b?a.I=b:b=a.I;for(var d in a.b.cb)if(c="led-"+d,c=a.P[c]){var e=a.b.cb[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+x(16711680,6):"#000000"}if(c=a.P["led-caps-lock"])c.style.backgroundColor=a.g&fe?"#"+x(65280,6):"#000000"}function Fe(a,b,c,d){var e=0;switch(b){case 16:e=d?Ie:Je;break;case 17:e=d?Ke:Ee;break;case 18:e=d?Le:Me;break;case 91:e=d?Ne:Oe;break;case 20:e=fe}e&&(a.g=c?a.g|e:a.g&~e)}
|
|
|
|
|
function de(a,b,c){var d=!0,e=b.keyCode;Fe(a,e,c,2==b.location);var f;a:if(e=a.b.Qb[e]||e,a.b.Db[e])f=e;else{for(f in a.b.Ta)if(a.b.Ta[f]===e)break a;f=null}f&&!b.metaKey&&(d=!1,a.g&(Pe|Qe)&&(13==f?(f=118,d=!0):8==f&&(f=46,d=!0),d&&(a.g=c?a.g|Qe:a.g&~Qe)),d=ge(a,f,c),(!(f>=m.qb&&f<=m.Eb)||a.g|Re)&&b.preventDefault&&b.preventDefault());return d}
|
|
|
|
|
function ge(a,b,c,d){var e;a:{for(e=0;e<a.j.length;e++)if(a.j[e].Mb==b)break a;e=-1}if(c)0>e?a.j.push({Mb:b,Jb:Date.now(),vb:d||!1}):(a.j[e].Jb=Date.now(),a.j[e].vb=d||!1),d&&Ge(a);else if(0<=e){if(!a.j[e].vb&&(d=a.j[e].Jb)&&Date.now()-d<Se)return a.j[e].vb=!0,Ge(a),!0;a.j.splice(e,1)}if(a.W){d=0;switch(b){case "1p":d=Md.Oa.Vc;break;case "2p":d=Md.Oa.Zc;break;case "coin":d=Md.Oa.vc;break;case "left":d=Md.Oa.Xc;break;case "right":d=Md.Oa.Yc;break;case "fire":d=Md.Oa.Wc}d&&(a=a.W,b=d,a.A&=~b,c&&(a.A|=
|
|
|
|
|
b))}return!0}function Ge(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].vb){var d=a.j[b].Mb,e=Se-(Date.now()-a.j[b].Jb);if(0<e){if(0>c||c>e)c=e}else{ge(a,d,!1);b=0;continue}}b++}0<=c&&Ic(a.u,a.L,c)}k.Gd=function(a,b){var c=this.B;0<=this.w&&(this.w<this.j.length?(c=this.j[this.w],this.w++,c=M.Db[c.Mb],c&128&&(c&=127)):(this.w=-1,c=M.Kc),this.B=c,Cd(this.u,1));v(this,a,null,b,"KBDUART.ADDRESS",c);return c};
|
|
|
|
|
k.Ud=function(a,b,c){v(this,a,b,c,"KBDUART.STATUS");this.D=b;this.A=!0;this.F=Cc(this.u);Ce(this,b&M.Ba.Wb);b&M.Ba.fd&&(this.w=0,Cd(this.u,1))};var Ie=1,Je=2,ee=3,Ke=4,Ee=8,Re=12,Le=16,Me=32,Pe=48,Ne=64,Oe=128,fe=512,Qe=4096,Se=50,Te={};Te[m.qb]=37;Te[m.Sb]=39;Te[m.Vb]=32;
|
|
|
|
|
var He={pa:1978.1,Db:{},Qb:Te,cb:{},Ta:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},N={},M={pa:100,Db:(N[8]=3,N[m.Uc]=5,N[m.Tc]=6,N[m.pd]=7,N[m.jd]=8,N[m.md]=9,N[m.Q]=10,N[39]=16,N[221]=20,N[219]=21,N[m.Bc]=22,N[m.kd]=23,N[m.$c]=24,N[m.E]=25,N[49]=26,N[37]=32,N[40]=34,N[117]=35,N[19]=35,N[192]=36,N[189]=37,N[57]=38,N[55]=39,N[52]=40,N[51]=41,N[27]=42,N[38]=48,N[114]=49,N[112]=50,N[46]=51,N[187]=52,N[48]=53,N[56]=54,N[54]=55,N[53]=56,N[50]=57,N[9]=58,N[103]=64,N[115]=65,N[113]=66,N[96]=67,N[118]=
|
|
|
|
|
68,N[220]=69,N[m.Vb]=70,N[m.Jc]=71,N[m.zc]=72,N[m.yc]=73,N[m.qb]=74,N[104]=80,N[2013]=81,N[98]=82,N[97]=83,N[222]=85,N[186]=86,N[m.Ic]=87,N[m.Ac]=88,N[m.Sb]=89,N[m.cd]=90,N[110]=96,N[116]=97,N[101]=98,N[100]=99,N[13]=100,N[190]=101,N[188]=102,N[m.Rc]=103,N[m.sc]=104,N[m.od]=105,N[119]=106,N[105]=112,N[99]=113,N[102]=114,N[109]=115,N[191]=117,N[m.Qc]=118,N[m[" "]]=119,N[m.ld]=120,N[m.uc]=121,N[m.Eb]=122,N[120]=123,N[17]=124,N[16]=125,N[20]=126,N),Qb:{},cb:{},Ta:{ctrl:17,esc:27,tab:9,"num-comma":116,
|
|
|
|
|
"break":117,"line-feed":118,"no-scroll":119,setup:120},rc:{qa:130,INIT:127},Ba:{qa:130,Oc:1,Nc:2,Mc:4,Lc:8,Pc:16,Xb:32,Wb:63,fd:64,ne:128,INIT:0},Kc:127};M.cb={l4:M.Ba.Oc,l3:M.Ba.Nc,l2:M.Ba.Mc,l1:M.Ba.Lc,locked:M.Ba.Pc,local:M.Ba.Xb,online:~M.Ba.Xb,"caps-lock":fe};var ce={SI1978:He,VT100:M};M.INIT=[[M.Ba.INIT,M.rc.INIT,!1,0,-1]];M.yb={130:be.prototype.Gd};M.zb={130:be.prototype.Ud};hb(function(){for(var a=pa(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=na(c),d=new be(d);oa(d,c)}});
|
|
|
|
|
function Ue(a,b,c,d,e){n.call(this,"Video",a,262144);var f=this;this.Sa=bb("Gecko/");var g=["","moz","ms","webkit"];this.M=a.screenWidth;this.I=a.screenHeight;this.la=a.bufferAddr;this.td=a.bufferRAM;var h=a.bufferFormat;this.Y=h&&Ve[h.toUpperCase()]||We;this.O=a.bufferCols;this.Z=a.bufferRows;this.Ha=this.fa=a.cellWidth||1;this.ba=a.cellHeight||1;this.ea=null;this.Na=!1;this.na=a.bufferBits||1;this.vd=a.bufferLeft||0;if(this.g=a.bufferRotate)this.g=this.g%360,0<this.g&&(this.g-=360),-90!=this.g&&
|
|
|
|
|
(this.aa("unsupported buffer rotation: "+this.g),this.g=0);this.oa=a.interruptRate;this.ib=a.refreshRate||60;this.F=b;this.j=c;this.V=(this.yd=d)||b||null;this.Ab=this.M;this.sd=this.I;this.La=this.M/this.O|0;this.Ma=this.I/this.Z|0;1<this.ba&&(this.Z++,this.sa=0,this.ya=!1);b=a.smoothing;(c=cb("smoothing"))&&(b="true"==c);if(null!=b)for(c=0;c<g.length;c++)if(d=(d=g[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.j[d]){this.j[d]=b;break}if(this.w=a.screenRotate)this.w=this.w%360,
|
|
|
|
|
0<this.w&&(this.w-=360),-90!=this.w?(this.aa("unsupported screen rotation: "+this.w),this.w=0):(this.j.translate(0,this.I),this.j.rotate(this.w*Math.PI/180),this.j.scale(this.I/this.M,this.M/this.I));if(this.b=e)if(this.b.Wa=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.Wa){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){Xe(f,!!(document.fullscreenElement||document.msFullscreenElement||
|
|
|
|
|
document.mozFullScreenElement||document.webkitFullscreenElement))},!1);break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){Xe(f,null)},!1);break}}if(this.S=a.fontROM)"json"!=Fa(this.S)&&(this.S=Ha()+"/api/v1/dump?file="+this.S+"&format=bytes"),Sa(this.S,null,!0,function(a,b,c){Ye(f,a,b,c)});this.Fa={}}ba(Ue,n);
|
|
|
|
|
function Pd(a){a.C=a.O*a.fa;a.N=a.Z*a.ba;var b=a.C,c=a.N;a.g&&(b=a.N,c=a.C);a.L=0;if(!a.td&&(a.L=(a.C*a.na>>3)*a.N,!zb(a.H,a.la,a.L,3)))return!1;a.L?(a.Ua=a.j.createImageData(b,c),a.fb=16/a.na|0,Ze(a,a.L>>1)):Ze(a,(a.O+1)*a.Z);a.D=document.createElement("canvas");a.D.width=b;a.D.height=c;a.wa=a.D.getContext("2d");a.T={};a.X=1<<a.na;a.U=Array(a.X+$e);a.U[0]=[0,0,0,255];a.U[1]=[255,255,255,255];a.Y==af&&(a.U[a.X+bf]=[255,255,0,255],a.U[a.X+cf]=[0,255,0,255]);a.Y==df&&(a.hb=60,a.za=!1,a.ga=Array(a.O));
|
|
|
|
|
return!0}k=Ue.prototype;k.ca=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Fa[b]=c,!0;switch(b){case "fullScreen":return this.P[b]=c,this.b&&this.b.Wa?c.onclick=function(){d.Wa()}:c.parentNode.removeChild(c),!0}return!1};
|
|
|
|
|
k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;Pd(this);if(this.B=vb(a,"Keyboard")){for(var e in this.Fa)this.B.ca("led",e,this.Fa[e]);this.F&&this.B.ca(this.yd?"textarea":"canvas","screen",this.V)}var f=this;this.ub=Hc(this.u,function(){Mc(f)});Ic(this.u,this.ub,1E3/Math.max(this.ib,this.oa));this.gb=0;this.S||sa(this)};
|
|
|
|
|
function Ye(a,b,c,d){if(d)a.aa("Unable to load font ROM (error "+d+": "+b+")");else{da(a.bb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){q("Empty font ROM: "+b);return}if(1==f.length){q(f[0]);return}if(2048==f.length)a.ea=f,Qd(a);else{a.aa("Unrecognized font data length ("+f.length+")");return}}catch(g){a.aa("Font ROM data error: "+g.message);return}(a.j||a.K)&&sa(a)}}
|
|
|
|
|
function Qd(a){a.ea&&(a.Na=a.Y==df,a.T[ef]=[ff(a,a.fa,a.ba),ff(a,a.fa,a.ba,a.za)],a.T[gf]=[ff(a,2*a.fa,a.ba),ff(a,2*a.fa,a.ba,a.za)],a.T[hf]=a.T[jf]=[ff(a,2*a.fa,2*a.ba),ff(a,2*a.fa,2*a.ba,a.za)])}
|
|
|
|
|
function ff(a,b,c,d){var e=8>=a.Ha?8:16,f=8<e?15:0,g=a.ea.length/e,h=!1===d,l={fa:b,ba:c};l.canvas=document.createElement("canvas");l.canvas.width=16*b;l.canvas.height=g/16*c;l.context=l.canvas.getContext("2d");for(var p=l.context.createImageData(b,c),r=0;r<g;r++){for(var t=0,A=t;t<a.ba;t++)for(var w=r*e+(f+t&e-1),w=d&&8==t?255:a.ea[w],u=0;u<c/a.ba;u++){for(var B=0,S=0,ya=S;S<a.fa;S++){for(var K=w&128>>(7<S?7:S),B=a.Na&&!K&&B?B:K,ia=0;ia<b/a.fa;ia++)h&&(B=!B),kf(a,p,ya,A,B?1:0),ya++;B=K}A++}l.context.putImageData(p,
|
|
|
|
|
(r&15)*b,(r>>4)*c)}return l}k.va=function(a,b){return b||!a||this.restore(a)?!0:!1};k.ua=function(a){return!a||this.save()};k.save=function(){var a=new Uc(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};
|
|
|
|
|
k.Wa=function(){var a=!1;if(this.b){if(this.b.Wa){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.M/this.I;b>c&&(a=Math.round(c/b*100)+"%")}this.Sa?(this.F.style.width=a,this.F.style.width=a,this.F.style.display="block",this.F.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.Wa();a=!0}this.V&&this.V.focus()}return a};
|
|
|
|
|
function Xe(a,b){!b&&a.b&&(a.Sa?a.F.style.width=a.F.style.height="":a.b.style.width=a.b.style.height="");xa(a,"notifyFullScreen("+b+")")}function Ze(a,b){a.eb=b;a.W=!1;if(void 0===a.A||a.A.length!=a.eb)a.A=Array(a.eb)}function kf(a,b,c,d,e){d=a.g?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.Y==af&&(208<=c&&236>c?e=a.X+bf:28<=c&&72>c&&(e=a.X+cf));a=a.U[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
|
|
|
|
|
function Mc(a,b){var c=!0;if(!b){a.oa&&(120==a.oa?a.gb&1?(Cd(a.u,2),c=!1):Cd(a.u,1):Cd(a.u,4));if(c&&a.W&&a.L){for(var d=a.H,e=a.L,f=!0,g=a.la>>>d.g;0<e&&g<d.b.length;)d.b[g].Ca&&(d.b[g].Ca=f=!1,d.b[g].hc=!0),e-=d.w,g++;f&&(c=!1)}Ic(a.u,a.ub,1E3/Math.max(a.ib,a.oa));a.gb++}if(c)if(1<a.fa)switch(a.Y){case df:for(var c=a.la,d=-1,e=0,f=60==a.hb?2:5,h=g=0,l=-1;e<a.Z;){var p=0,r=c,t=d,A=a.O;for(t!=ef&&(A>>=1);;){var w=Eb(a.H,r++);if((w&lf)==lf){var u=Eb(a.H,r++),d=u&mf,c=(u&nf)<<8|Eb(a.H,r),c=c+(u&of?
|
|
|
|
|
pf:qf);break}if(p<A)a.ga[p++]=w;else break}if(f)f--;else{for(;p<a.ga.length;)a.ga[p++]=0;if(0<=t)for(r=a.W&&a.A[g]==A,a.A[g++]=A,A=0;A<p;A++){w=a.ga[A];if(!r||w!==a.A[g]){a.A[l=g]=w;var u=a,B=a.wa,S=w&127;if(w=u.T[t][w&128?1:0]){var ya=(S&15)*w.fa,S=(S>>4)*w.ba,K,ia,ta,ma,La=w.fa,cc=w.ba;B?(K=A*u.fa,ia=e*u.ba,ta=u.fa,ma=u.ba):(K=A*u.La,ia=e*u.Ma,ta=u.La,ma=u.Ma);w.fa>u.fa&&(K*=2,ta*=2);w.ba>u.ba&&(t==jf&&(S+=u.ba),cc=u.ba);B?B.drawImage(w.canvas,ya,S,La,cc,K,ia,ta,ma):(K+=0,ia+=0,u.j.drawImage(w.canvas,
|
|
|
|
|
ya,S,La,cc,K,ia,ta,ma))}h++}g++}e++}}a.W=!0;!b&&a.ya&&1==h&&(a.A[l]=-1,h=0);a.ya=!1;(h||b)&&a.wa&&a.j.drawImage(a.D,0,a.sa,a.C,a.N-a.ba,0,0,a.Ab,a.sd)}else{e=a.la;f=e+a.L;l=h=g=0;b=a.C;p=0;c=a.N;t=d=0;r=a.na;A=(1<<r)-1;a.vd&&(r=-r,t=16+r);for(;e<f;){u=Gb(a.H,e);if(a.W&&u===a.A[g])h+=a.fb;else{a.A[g]=u;(B=t)&&(u=u>>8|(u&255)<<8);h<b&&(b=h);for(w=a.fb;w--;)ya=u>>B&A,kf(a,a.Ua,h++,l,ya),B+=r;h>p&&(p=h);l<c&&(c=l);l>=d&&(d=l+1)}e+=2;g++;if(h>=a.C&&(h=0,l++,l>a.N))break}a.W=!0;b<a.C&&(e=p-b,d-=c,a.g&&
|
|
|
|
|
(f=b,g=e,b=c,e=d,c=a.C-(f+g),d=g),a.wa.putImageData(a.Ua,0,0,b,c,e,d),a.j.drawImage(a.D,0,0,a.D.width,a.D.height,0,0,a.M,a.I))}}var bf=0,cf=1,$e=2,We=0,af=1,df=2,Ve={SI1978:af,VT100:df},ef=96,gf=64,hf=32,jf=0,lf=127,nf=15,of=16,mf=96,pf=8192,qf=16384;
|
|
|
|
|
hb(function(){for(var a=pa(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=na(c),e=document.createElement("canvas");if(!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<=Ua().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||cb("aspect"));f&&.3<=f&&3.33>=f&&(gb("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");bb("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new Ue(d,e,g,f,c);oa(d,c)}});
|
|
|
|
|
function rf(a){n.call(this,"SerialPort",a,8388608);this.T=+a.adapter;switch(this.T){case 0:this.U=0;this.X=2;break;default:q("Unrecognized serial adapter #"+this.T);return}this.g=this.j=null;this.V=a.tabSize;this.S=a.charBOL;this.w=0;this.N=!1;this.D=!0;var b=a.binding;if("console"==b)this.j="";else{var c;a=sf;b&&(void 0===c&&(c="Panel"),(c=la(c,this.id))&&(b=c.P[b])&&this.ca(null,a,b))}this.A="";this.b=this.Ra=this.I=null;this.exports={connect:this.jc,receiveData:this.Lb,receiveStatus:this.ce}}
|
|
|
|
|
ba(rf,n);k=rf.prototype;
|
|
|
|
|
k.ca=function(a,b,c,d){var e=this;switch(b){case sf:return this.P[b]=this.g=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),tf(e,b);return!0},c.onkeypress=function(a){a=a||window.event;tf(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.P[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.Lb(d);return!0},
|
|
|
|
|
!0}return!1};k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;var e=this;this.Y=Hc(this.u,function(){e.Lb()});this.Z=Hc(this.u,function(){De(e)});this.W=vb(a,"ChipSet");Nb(b,this,uf,this.U);Rb(b,this,vf,this.U);sa(this)};
|
|
|
|
|
k.jc=function(a){if(!this.b){var b=vc(this.R,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Na(c[0]);if(d!=this.ab)return;c=Na(c[1]);if(this.b=ka(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.D);if(this.Ra=e.receiveData){this.D=a;this.I=e.receiveStatus;this.status("Connected "+this.bb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};
|
|
|
|
|
k.va=function(a,b){if(!b)if(this.jc(this.D),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){wf(this)};k.save=function(){var a=new Uc(this),b=0,c=[];c[b++]=this.F;c[b++]=this.M;c[b++]=this.O;c[b++]=this.ia;c[b++]=this.B;c[b++]=this.C;c[b]=this.L;a.set(0,c);return a.data()};k.restore=function(a){return wf(this,a[0])};
|
|
|
|
|
function wf(a,b){var c=0;b||(b=xf);a.F=b[c++];a.M=b[c++];a.O=b[c++];a.ia=b[c++];a.B=b[c++];a.C=b[c++];a.L=b[c];return!0}function yf(a,b){var c=a.L&b;b&15||(c>>=4);b=zf[c];c=((a.B&Af)>>2)+6;a.B&Bf&&c++;c+=((a.B&Cf)>>6)+1>>1;return 1E3/Math.round(b/c)}function tf(a,b){xa(a,"receiveByte("+Da(b)+"), status="+Da(a.ia));return a.N||a.ia&Df?!1:(a.M=b,a.ia|=Df,Cd(a.u,a.X),!0)}
|
|
|
|
|
k.Lb=function(a){null!=a&&(this.A="number"!=typeof a?a:this.A+String.fromCharCode(a));this.A&&(tf(this,this.A.charCodeAt(0))&&(this.A=this.A.substr(1)),this.A&&this.u&&Ic(this.u,this.Y,yf(this,Ef)));return!0};k.ce=function(a){this.ia&=~Ff;a&64&&(this.ia|=Ff)};function De(a,b){a.ia=a.ia|Od|Gf;b&&a.Ra&&a.Ra.call(a.b,b)}k.Ad=function(a,b){var c=this.M;v(this,a,null,b,"DATA",c);this.ia&=~Df;return c};k.zd=function(a,b){var c=this.ia;v(this,a,null,b,"STATUS",c);return c};
|
|
|
|
|
k.Kd=function(a,b,c){v(this,a,b,c,"DATA");this.O=b;this.ia&=~(Od|Gf);xa(this,"transmitByte("+Da(b)+")");if(19==b)this.N=!0;else if(17==b)this.N=!1;else if(this.Ra&&this.Ra.call(this.b,b),this.g)if(8==b)this.g.value=this.g.value.slice(0,-1),0<this.w&&this.w--;else{var d;13!=b&&10!=b&&(d=Oa[b]);a=d=d?"<"+d+">":String.fromCharCode(b);c=a.length;9==b?(b=this.V||8,c=b-this.w%b,this.V&&(a=Ka("",c))):13==b&&(this.w=c=0,a="\n");this.S&&!this.w&&c&&(a=String.fromCharCode(this.S)+a);this.g.value+=a;this.g.scrollTop=
|
|
|
|
|
this.g.scrollHeight;this.w+=c}else if(null!=this.j){if(10==b||1024<=this.j.length)this.i(this.j),this.j="";10!=b&&(this.j+=String.fromCharCode(b))}this.u&&Ic(this.u,this.Z,yf(this,Hf))};k.Jd=function(a,b,c){v(this,a,b,c,"CONTROL");this.F?(this.I&&(b^this.C)&(If|Jf)&&(a=0,this.D?(a|=b&If?32:0,a|=b&Jf?320:0):(a|=b&If?16:0,a|=b&Jf?1048576:0),this.I.call(this.b,a)),this.C=b,this.C&Kf&&(this.F=!1)):(this.B=b,this.F=!0)};k.Id=function(a,b,c){v(this,a,b,c,"BAUDRATES");this.L=b};
|
|
|
|
|
var Af=12,Bf=16,Cf=192,Jf=2,If=32,Kf=64,Od=1,Df=2,Gf=4,Ff=128,Ef=15,Hf=240,zf=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],xf=[!1,0,0,133,142,39,238],sf="buffer",uf={0:rf.prototype.Ad,1:rf.prototype.zd},vf={0:rf.prototype.Kd,1:rf.prototype.Jd,2:rf.prototype.Id};hb(function(){for(var a=pa(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=na(c),d=new rf(d);oa(d,c)}});
|
|
|
|
|
function Lf(a){n.call(this,"Debugger",a);this.na=+a.base||16;this.N=this.Y=this.C=0;this.L=!1;this.b=-1;this.g=[];this.S={}}ba(Lf,n);Lf.prototype.Hb=function(){return-1};Lf.prototype.Ib=function(){};
|
|
|
|
|
Lf.prototype.xb=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.L?a="end":a=this.g[this.b+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(Na(a.substring(d,f))),d=f+1}}return b};
|
|
|
|
|
function Mf(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;
|
|
|
|
|
d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}function Da(a,b,c){var d="";b?11<b&&(b=11):b=a&-16777216?11:a&-65536?8:6;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;)d=String.fromCharCode((a&7)+48)+d,a>>=3;return(c?"0o":"")+d}function t(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}
|
|
|
|
|
function Ea(a){return t(a,2,!0)}function x(a){return t(a,4,!0)}function Fa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function Ga(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function Ha(){var a=Ia();return-1!==a.indexOf("pcjs.org",a.length-8)}function Ja(a){return a.replace(/[&<>"']/g,function(a){return Ka[a]})}function La(a,b){return(a+" ").slice(0,b)}
|
|
|
|
|
function Ma(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Ka={"&":"&","<":"<",">":">",'"':""","'":"'"},Pa={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"};
|
|
|
|
|
function Qa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var g=d+e>>1,h;h=c(b,a[g]);0<h?d=g+1:(e=g,f=!h)}return f?d:~d}function Ra(){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 Sa(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 Ta(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=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)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
|
|
|
|
|
f,e))});if(b&&"object"==typeof b){var m="",r;for(r in b)b.hasOwnProperty(r)&&(m&&(m+="&"),m+=r+"="+encodeURIComponent(b[r]));m=m.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(m)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g}
|
|
|
|
|
function Ua(a,b){var c,d={ma:null,ra:null,Qa:null,Ia:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Qa=g.load;d.Ia=g.exec;if(e=g.bytes)d.ma=e;else if(e=g.words)for(d.ma=Array(2*e.length),f=c=0;c<e.length;c++)d.ma[f++]=e[c]&255,d.ma[f++]=e[c]>>8&255;else if(e=g.data)for(d.ma=Array(4*e.length),f=c=0;c<e.length;c++)d.ma[f++]=
|
|
|
|
|
e[c]&255,d.ma[f++]=e[c]>>8&255,d.ma[f++]=e[c]>>16&255,d.ma[f++]=e[c]>>24&255;else d.ma=g;d.ra=g.symbols;d.ma.length?1==d.ma.length&&(p(d.ma[0]),d=null):(p("Empty resource: "+a),d=null)}catch(h){p("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){p("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.ma=e)}return d}
|
|
|
|
|
function Ia(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Va(){return window?window.navigator.userAgent:""}function Wa(){if(null==Xa){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}Xa=a}return Xa}function Ya(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
|
|
|
|
function Za(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function cb(a){if(window){var b=Va();return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1}function db(a){if(!eb){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}eb=c}return eb[a]}
|
|
|
|
|
function fb(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}function gb(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}}function hb(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}
|
|
|
|
|
function ib(a){jb.init.push(a)}function kb(a){if(lb)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){ha("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function nb(a){!lb&&a?(lb=!0,ob&&pb("init"),qb&&pb("show")):lb=a}function pb(a){jb[a]&&kb(jb[a])}var eb=null,jb={init:[],show:[],exit:[]},ob=!1,qb=!1,lb=!0,Xa=null;hb("onload",function(){ob=!0;kb(jb.init)});hb("onpageshow",function(){qb=!0;kb(jb.show)});
|
|
|
|
|
hb(cb("Opera")||cb("iOS")?"onunload":"onbeforeunload",function(){kb(jb.exit)});
|
|
|
|
|
var rb="undefined"!==typeof ArrayBuffer,sb=[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],tb={cpu:1,bus:64,mem:128,port:256,nvr:16384,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function ub(a){n.call(this,"Panel",a)}aa(ub,n);
|
|
|
|
|
ub.prototype.ca=function(a,b,c,d){return this.R&&this.R.ca(a,b,c,d)||this.u&&this.u.ca(a,b,c,d)||this.B&&this.B.ca(a,b,c,d)||this.K&&this.K.ca(a,b,c,d)?!0:n.prototype.ca.call(this,a,b,c,d)};ub.prototype.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;this.B=wb(a,"Keyboard")};ub.prototype.va=function(a,b){b||xb();return!0};ub.prototype.ua=function(){return!0};
|
|
|
|
|
function xb(){for(var a=!1,b=qa(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=oa(d),f=la(e.id);f||(a=!0,f=new ub(e));pa(f,d);a&&ta(f)}}ib(xb);
|
|
|
|
|
function yb(a,b,c){n.call(this,"Bus",a);this.u=b;this.K=c;this.M=a.busWidth||16;this.N=Math.pow(2,this.M);this.C=this.N-1|0;this.g=(this.M>>1)+2;10>this.g&&(this.g=10);15<this.g&&(this.g=15);this.w=1<<this.g;this.O=this.w>>2;this.j=this.w-1;this.L=this.N/this.w|0;this.I=this.L-1;this.A=[];this.B=[];this.D=this.F=!1;this.S=[];this.T=[];a=new z;zb(a,this.K);this.b=Array(this.L);for(b=0;b<this.L;b++)this.b[b]=a;ta(this)}aa(yb,n);yb.prototype.reset=function(){};
|
|
|
|
|
yb.prototype.va=function(a,b){b||this.reset();return!0};function Ab(a,b,c,d){for(var e=b,f=c,g=e>>>a.g;0<f&&g<a.b.length;){var h=a.b[g],m=g*a.w,r=a.w-(e-m);r>f&&(r=f);if(h&&h.size){if(h.type==d){if(e+f<=h.J)return h.pb+=h.J-e,h.J=e,!0;if(e>=h.J+h.pb){r=h.size-(e-m);r>f&&(r=f);h.pb=e-h.J+r;e=m+a.w;f-=r;g++;continue}}return Bb(Cb,e,f)}e=new z(e,r,a.w,d);zb(e,a.K,h);a.b[g++]=e;e=m+a.w;f-=r}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Db[d]+" at "+x(b)),!0):Bb(Eb,b,c)}
|
|
|
|
|
function Fb(a,b){return a.b[(b&a.C)>>>a.g].ob(b&a.j,b)}function Gb(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].Hc(c,b):a.b[d++].Ya(c,b)|a.b[d&a.I].Ya(0,b+1)<<8}function Hb(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].Nb(c,b):a.b[d++].ob(c,b)|a.b[d&a.I].ob(0,b+1)<<8}function Ib(a,b,c){a.b[(b&a.C)>>>a.g].qb(b&a.j,c&255,b)}function Jb(a,b,c){var d=b&a.j,e=(b&a.C)>>>a.g;d!=a.j?a.b[e].Kc(d,c&65535,b):(a.b[e++].$a(d,c&255,b),a.b[e&a.I].$a(0,c>>8&255,b+1))}
|
|
|
|
|
function Kb(a){for(var b=0,c=[],d=0;d<a.L;d++){var e=a.b[d];if(e.Ca||e.Dc){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,m=[];g<e.length;){for(var r=e[g],u=g+1;u<e.length&&e[u]===r;)u++;m[h++]=u-g;m[h++]=r;g=u}m.length<e.length&&(e=m)}c[f]=e}}return c}function Lb(a,b){if(void 0===b)return a.D=!a.D,a.D;void 0===a.A[b]&&(a.A[b]=[null,!1]);a.A[b][1]=!a.A[b][1];return a.A[b][1]}
|
|
|
|
|
function Mb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var m=+e+d;m<=g;m++)void 0!==f.A[m]?p("Input port "+x(m)+" already registered"):f.A[m]=[h,!1]}}function Pb(a,b,c){for(var d=1,e=0,f=0;0<d;){var g=a.A[b],h=a.S[b]||1,m=1==h?255:2==h?65535:-1,r=m;void 0!==g?(g[0]&&(r=g[0](b,c),void 0===r?r=m:r&=m),a.K&&a.D!=g[1]&&Qb(a.K,b,r)):a.K&&(za(a.K,a,b,null,c),a.D&&Qb(a.K,b,r));e|=r<<f;f+=h<<3;b+=h;d-=h}return e}
|
|
|
|
|
function Rb(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function Sb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var m=+e+d;m<=g;m++)void 0!==f.B[m]?p("Output port "+x(m)+" already registered"):f.B[m]=[h,!1]}}
|
|
|
|
|
function Tb(a,b,c,d){for(var e=1,f=0;0<e;){var g=a.B[b],h=a.T[b]||1,m=1==h?255:2==h?65535:-1,m=(c>>>=f)&m;if(void 0!==g){if(g[0])g[0](b,m,d);a.K&&a.F!=g[1]&&Ub(a.K,b,m)}else a.K&&(za(a.K,a,b,m,d),a.F&&Ub(a.K,b,m));f+=h<<3;b+=h;e-=h}}function Bb(a,b,c){p("Memory block error ("+a+": "+t(b)+","+t(c)+")");return!1}var Cb=1,Eb=2,Vb;if(rb){var Wb=new ArrayBuffer(2);(new DataView(Wb)).setUint16(0,256,!0);Vb=256===(new Uint16Array(Wb))[0]}else Vb=!1;var Xb=Vb;
|
|
|
|
|
function z(a,b,c,d){this.id=Yb+=2;this.b=null;this.J=a;this.pb=b;this.size=c||0;this.type=d||Zb;this.u=d==$b;zb(this);this.Ca=this.Dc=!1;if(c)if(rb)this.j=new ArrayBuffer(c),this.R=new DataView(this.j,0,c),this.g=new Uint8Array(this.j,0,c),this.w=new Uint16Array(this.j,0,c>>1),this.b=new Int32Array(this.j,0,c>>2),ac(this,Xb?bc:cc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;ac(this,dc)}else ac(this)}k=z.prototype;
|
|
|
|
|
k.save=function(){var a,b;if(rb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.R.getInt32(b<<2,!0);else a=this.b;return a};k.restore=function(a){if(a&&this.size==a.length<<2){var b;if(rb)for(b=0;b<a.length;b++)this.R.setInt32(b<<2,a[b],!0);else this.b=a;return this.Ca=!0}return!1};function ac(a,b){b||(b=ec);gc(a,b,void 0);hc(a,b,void 0)}function gc(a,b,c){c&&a.H||(a.Ya=b[0]||a.Gc,a.Hc=b[2]||a.Ic);if(c||void 0===c)a.ob=b[0]||a.Gc,a.Nb=b[2]||a.Ic}
|
|
|
|
|
function hc(a,b,c){c&&a.P||(a.$a=!a.u&&b[1]||a.rb,a.Kc=!a.u&&b[3]||a.Rb);if(c||void 0===c)a.qb=b[1]||a.rb,a.Sb=b[3]||a.Rb}k.Pa=function(a,b){b?this.P++||hc(this,ic,!1):this.H++||gc(this,ic,!1)};function jc(a,b){b?--a.P||(a.$a=a.u?a.rb:a.qb,a.Kc=a.u?a.Rb:a.Sb):--a.H||(a.Ya=a.ob,a.Hc=a.Nb)}function zb(a,b,c){a.K=b;a.H=a.P=0;c&&((a.H=c.H)&&gc(a,ic,!1),(a.P=c.P)&&hc(a,ic,!1))}k.Gc=function(){this.K&&xa(this.K,129)&&this.K.message("attempt to read invalid block %"+t(this.J),!0);return 255};
|
|
|
|
|
k.rb=function(a,b){this.K&&xa(this.K,129)&&this.K.message("attempt to write "+x(b)+" to invalid block %"+t(this.J),!0)};k.Ic=function(a,b){return this.Ya(a++,b++)|this.Ya(a,b)<<8};k.Rb=function(a,b,c){this.$a(a++,b&255,c++);this.$a(a,b>>8,c)};k.ie=function(a){return this.b[a>>2]>>>((a&3)<<3)&255};k.me=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};k.ve=function(a,b){var c=a>>2;a=(a&3)<<3;this.b[c]=this.b[c]&~(255<<a)|b<<a;this.Ca=!0};
|
|
|
|
|
k.ze=function(a,b){var c=a>>2;a=(a&3)<<3;24>a?this.b[c]=this.b[c]&~(65535<<a)|b<<a:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.Ca=!0};k.ge=function(a,b){if(this.K&&null!=this.J){var c=this.K;tc(c,this.J+a,1,c.I)&&c.da(!0)}return this.ob(a,b)};k.ke=function(a,b){if(this.K&&null!=this.J){var c=this.K;tc(c,this.J+a,2,c.I)&&c.da(!0)}return this.Nb(a,b)};
|
|
|
|
|
k.te=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;tc(d,this.J+a,1,d.w)&&d.da(!0)}this.u?this.rb(0,b):this.qb(a,b,c)};k.xe=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;tc(d,this.J+a,2,d.w)&&d.da(!0)}this.u?this.rb(0,b):this.Sb(a,b,c)};k.fe=function(a){return this.g[a]};k.he=function(a){return this.g[a]};k.je=function(a){return this.R.getUint16(a,!0)};k.le=function(a){return a&1?this.g[a]|this.g[a+1]<<8:this.w[a>>1]};k.se=function(a,b){this.g[a]=b;this.Ca=!0};
|
|
|
|
|
k.ue=function(a,b){this.g[a]=b;this.Ca=!0};k.we=function(a,b){this.R.setUint16(a,b,!0);this.Ca=!0};k.ye=function(a,b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.w[a>>1]=b;this.Ca=!0};var Zb=0,$b=2,Db=["NONE","RAM","ROM","VID","H/W"],Yb=0,ec=[],dc=[z.prototype.ie,z.prototype.ve,z.prototype.me,z.prototype.ze],ic=[z.prototype.ge,z.prototype.te,z.prototype.ke,z.prototype.xe];if(rb)var cc=[z.prototype.fe,z.prototype.se,z.prototype.je,z.prototype.we],bc=[z.prototype.he,z.prototype.ue,z.prototype.le,z.prototype.ye];
|
|
|
|
|
function uc(a,b){n.call(this,"CPU",a,1);var c=a.multiplier||1;this.Fa=a.cycles||b;this.U=c;this.Ta=Math.round(this.Fa/1E4)/100;this.Z=this.Ta*this.U;this.G.ka=!1;this.G.Qb=!1;this.G.lb=a.autoStart;this.G.Bc=!1;this.G.Wa=!1;this.ya=this.oa=0;this.za=a.csStart;this.na=a.csInterval;this.sa=a.csStop;this.T=[];this.Db=this.tb.bind(this);ta(this)}aa(uc,n);k=uc.prototype;
|
|
|
|
|
k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.K=d;for(b=0;b<vc.length;b++)(c=this.P[vc[b]])&&this.R.ca(null,vc[b],c);this.W=wb(a,"ChipSet");a=wc(a,"autoStart");null!=a&&(this.G.lb="true"==a?!0:"false"==a?!1:!!a);ta(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
|
|
|
|
|
k.va=function(a,b){if(!b){if(a&&this.restore){xc(this);if(!this.restore(a))return!1;yc(this)}else this.reset();this.K?(a=this.K,a.i("Type ? for help with PC8080 Debugger commands"),zc(a),a.ea&&(b=a.ea,a.ea=null,Ac(a,b))):this.i("No debugger detected")}Bc(this);return!0};k.ua=function(a){return a?this.save():!0};k.lb=function(){return this.G.lb||!this.K&&void 0===this.P.run?(this.tb(),!0):!1};k.Ec=function(){return 0};
|
|
|
|
|
function yc(a){void 0===a.za&&(a.za=0);void 0===a.na&&(a.na=-1);void 0===a.sa&&(a.sa=-1);a.G.Wa=0<=a.za&&0<a.na;a.G.Wa&&(a.ya=0,a.oa=a.za-a.la)}function Cc(a,b){if(a.G.Wa){var c=!1;a.ya=a.ya+a.Ec()|0;a.oa-=b;0>=a.oa&&(a.oa+=a.na,c=!0);0<=a.sa&&a.sa<=Dc(a)&&(a.na=a.sa=-1,yc(a),a.da(),c=!0);c&&a.i(Dc(a)+" cycles: checksum="+t(a.ya))}}
|
|
|
|
|
k.ca=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.P[b]=c;a=!0;break;case "run":this.P[b]=c;c.onclick=function(){var a;if(a=d.R)if(a=d.R,a.G.ja)a=!0;else{var b=null,c,h=ka(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.G.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.G.ja);c++);c==h.length&&(b=a);p("The "+b.type+" component ("+b.id+") is not "+(b.G.ready?"powered yet":"ready yet"+(b.zb?" (waiting for notification)":""))+".");a=!1}a&&(d.G.ka?d.da():d.tb())};
|
|
|
|
|
a=!0;break;case "speed":this.P[b]=c;a=!0;break;case "setSpeed":this.P[b]=c,c.onclick=function(){Ec(d,d.U<<1,!0)},c.textContent=this.Z.toFixed(2)+"Mhz",a=!0}return a};function Fc(a,b,c){a.la+=b;c&&(a.ga=a.b=0)}function Gc(a,b){var c=1;b&&1<a.U&&a.Y&&(c=a.Y/a.Ta);a.jb=Math.round(1E3/Hc);a.Na=Math.floor(a.Fa/Hc*c);b||(a.wa=a.Na);a.Va=0}function Dc(a){return a.la+a.X+a.ga-a.b}function xc(a){a.Y=0;a.kb=0;a.la=a.X=a.ga=a.b=0;yc(a);Ec(a,1)}
|
|
|
|
|
function Ec(a,b,c){var d=!1;if(void 0!==b){.8>a.Y/a.Z?b=1:d=!0;a.U=b;b=a.Ta*a.U;if(a.Z!=b){a.Z=b;b=a.Z.toFixed(2)+"Mhz";var e=a.P.setSpeed;e&&(e.textContent=b);a.i("target speed: "+b)}c&&a.R&&a.R.Za()}Fc(a,a.X);a.X=0;a.V=ga();a.ea=0;Gc(a);return d}function Ic(a,b){var c=a.T.length;a.T.push([-1,b]);return c}function Jc(a,b,c){0<=b&&b<a.T.length&&0>a.T[b][0]&&(c*=a.Fa*a.U/1E3,a.T[b][0]=c+Kc(a))}function Kc(a,b){var c=a.ga-=a.b;a.b=0;b&&(a.ga=0);return c}
|
|
|
|
|
k.tb=function(a){if(wa(this,!0)){if(!this.G.ka){Ec(this);this.R&&this.R.start(this.V,Dc(this));this.G.ka=!0;this.G.Qb=!0;this.W&&this.W.start();var b=this.P.run;b&&(b.textContent="Halt");this.R&&(Lc(this.R,!0),a&&this.R.Za(!0))}this.Va>=this.Fa&&Gc(this,!0);this.Ha=0;this.Ma=ga();this.ea&&(a=this.Ma-this.ea,a>this.jb&&(this.V+=a,this.V>this.Ma&&(this.V=this.Ma)));try{do{for(var c,d=this.G.Wa?1:this.Na,e=this.T.length-1;0<=e;e--){var f=this.T[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.Eb(c);c=Kc(this,!0);
|
|
|
|
|
this.Ha+=c;this.X+=c;Cc(this,c);a=c;for(var g=this.T.length-1;0<=g;g--){var h=this.T[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.wa-=c;if(0>=this.wa){this.wa+=this.Na;++this.kb>=Mc&&(this.R&&Lc(this.R),this.kb=0);break}}while(this.G.ka)}catch(m){this.da();Bc(this);this.R&&this.R.stop(ga(),Dc(this));wa(this,!1);ra(this,m.stack||m.message);return}c=setTimeout;d=this.Db;this.ea=ga();e=this.jb;this.Ha&&(e=Math.round(e*this.Ha/this.Na));e-=this.ea-this.Ma;if(f=this.ea-this.V)this.Y=Math.round(this.X/
|
|
|
|
|
(10*f))/100,864E5<=f&&(this.la=0,Ec(this));if(0>e||this.Y<this.Z)-1E3>e&&(this.V-=e),e=0;this.Va+=this.Ha;this.ea+=e;c(d,e)}else Bc(this),this.R&&this.R.stop(ga(),Dc(this))};k.Eb=function(){return 0};k.da=function(a){ua(this,!0);Kc(this);Fc(this,this.X);this.X=0;if(this.G.ka){this.G.ka=!1;this.W&&this.W.stop();var b=this.P.run;b&&(b.textContent="Run")}this.G.complete=a};function Bc(a,b){if(a.R){for(var c=a.R,d=0;d<c.A.length;d++)Nc(c.A[d],b);Lc(a.R,b)}}var Hc=30,Mc=15,vc=["power","reset"];
|
|
|
|
|
function Oc(a){var b=+a.model||8080;uc.call(this,a,1E6);this.xb=b;this.gb=Pc;xc(this);this.G.complete=this.G.zd=!1;this.ib=0;this.La=[];this.hb=0;Qc(this)}aa(Oc,uc);function Rc(a,b){a.La.push(b)}k=Oc.prototype;k.reset=function(){this.G.ka&&this.da();Qc(this);xc(this);this.G.error=!1;uc.prototype.reset.call(this)};function Qc(a){a.g=0;a.w=0;a.A=0;a.B=0;a.C=0;a.D=0;a.F=0;a.M=0;A(a,a.hb);Sc(a,0);a.S=0}function Tc(a,b){a.hb=b;A(a,b)}
|
|
|
|
|
k.Ec=function(){var a=this.g+this.w+this.A+this.B+this.C+this.D+this.F|0;return a=a+this.M+this.j+Uc(this)|0};k.save=function(){var a=new Vc(this);a.set(0,[this.g,this.w,this.A,this.B,this.C,this.D,this.F,this.M,this.j,Uc(this)]);a.set(1,[this.S,this.la,this.U]);a.set(2,Kb(this.H));return a.data()};
|
|
|
|
|
k.restore=function(a){var b=a[0];this.g=b[0];this.w=b[1];this.A=b[2];this.B=b[3];this.C=b[4];this.D=b[5];this.F=b[6];this.M=b[7]&65535;A(this,b[8]);Sc(this,b[9]);b=a[1];this.S=b[0];this.la=b[1];Ec(this,b[3]);a:{b=this.H;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.O){for(var f=0,g=Array(b.O),h=0;h<e.length-1;)for(var m=e[h++],r=e[h++];m--;)g[f++]=r;e=g}f=b.b[d];if(!f||!f.restore(e)){p("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
|
|
|
|
k.ca=function(a,b,c){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 "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.P[b]=c;this.ib++;a=!0;break;default:a=uc.prototype.ca.call(this,a,b,c)}return a};function Wc(a){return a.w<<8|a.A}function Xc(a,b){a.w=b>>8&255;a.A=b&255}function jd(a){return a.B<<8|a.C}function kd(a,b){a.B=b>>8&255;a.C=b&255}function D(a){return a.D<<8|a.F}
|
|
|
|
|
function ld(a,b){a.D=b>>8&255;a.F=b&255}function A(a,b){a.j=b&65535}function md(a){return a.I&256?1:0}function nd(a,b){a.I=a.I&255|b}function od(a){return sb[a.L&255]?4:0}function pd(a){return(a.L^a.O)&16?16:0}function qd(a){return a.I&255?0:64}function rd(a){return a.L&128?128:0}function Uc(a){return a.N&-214|rd(a)|qd(a)|pd(a)|od(a)|md(a)}function Sc(a,b){a.I=a.L=a.O=0;b&1&&(a.I|=256);b&4||(a.L|=1);b&16&&(a.O|=16);b&64||(a.I|=255);b&128&&(a.L^=192);a.N=a.N&-726|b&512|2}
|
|
|
|
|
function sd(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b)&255}function td(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?1:0))&255}function ud(a,b){a.I=a.L=a.O=a.g&b;(a.g|b)&8&&(a.O^=16);return a.I}function vd(a,b){a.O=b^255;b=a.L=b+255&255;a.I=a.I&-256|b;return b}function wd(a,b){a.O=b;b=a.L=b+1&255;a.I=a.I&-256|b;return b}function xd(a,b){return a.L=a.I=a.O=a.g|b}function yd(a,b){b^=255;a.O=a.g^b;return a.L=(a.I=a.g+b+1^256)&255}
|
|
|
|
|
function zd(a,b){b^=255;a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?0:1)^256)&255}function Ad(a,b){return a.L=a.I=a.O=a.g^b}function E(a,b){a=a.H;return a.b[(b&a.C)>>>a.g].Ya(b&a.j,b)}function Bd(a,b,c){a=a.H;a.b[(b&a.C)>>>a.g].$a(b&a.j,c&255,b)}function F(a){var b=E(a,a.j);A(a,a.j+1);return b}function G(a){var b=Gb(a.H,a.j);A(a,a.j+2);return b}function Cd(a){var b=Gb(a.H,a.M);a.M=a.M+2&65535;return b}function H(a,b){a.M=a.M-2&65535;Jb(a.H,a.M,b)}
|
|
|
|
|
function Dd(a){if(a.b&&a.S&255&&a.N&512){for(var b=0;8>b&&!(a.S&1<<b);b++);a.S&=~(0>b?255:1<<b);a.N&=-513;a.S&=-257;a.gb[199|b<<3].call(a)}return a.S&256?(Kc(a),!1):!0}function Ed(a,b){a.S|=1<<b;a.N&512&&Kc(a)}function I(a,b,c,d){d=d||2;a.P[b]&&(void 0===c&&(ra(a,"Value for "+b+" is invalid"),a.da()),c=!a.G.ka||a.G.Bc?t(c,d):"--------".substr(0,d),a.P[b].textContent!=c&&(a.P[b].textContent=c))}
|
|
|
|
|
k.Eb=function(a){this.G.complete=!0;var b=this.G.zd=this.K&&Fd(this.K),c=a?this.G.Qb?0:1:-1;this.G.Qb=!1;this.ga=this.b=a;if(Dd(this)){do{if(b){if(Gd(this.K,this.j,c)){this.da();break}c=1}this.gb[F(this)].call(this)}while(0<this.b)}return this.G.complete?this.ga-this.b:void 0===this.G.complete?0:-1};ib(function(){for(var a=qa(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Oc(d);pa(d,c)}});function Hd(){this.b-=4}function Id(){A(this,G(this));this.b-=10}
|
|
|
|
|
function Jd(){A(this,Cd(this));this.b-=10}function Kd(){var a=G(this);H(this,this.j);A(this,a);this.b-=17}
|
|
|
|
|
var Pc=[Hd,function(){Xc(this,G(this));this.b-=10},function(){Bd(this,Wc(this),this.g);this.b-=7},function(){Xc(this,Wc(this)+1);this.b-=5},function(){this.w=wd(this,this.w);this.b-=5},function(){this.w=vd(this,this.w);this.b-=5},function(){this.w=F(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|a>>8;nd(this,a&256);this.b-=4},Hd,function(){var a;ld(this,a=D(this)+Wc(this));nd(this,a>>8&256);this.b-=10},function(){this.g=E(this,Wc(this));this.b-=7},function(){Xc(this,Wc(this)-1);this.b-=
|
|
|
|
|
5},function(){this.A=wd(this,this.A);this.b-=5},function(){this.A=vd(this,this.A);this.b-=5},function(){this.A=F(this);this.b-=7},function(){var a=this.g<<8&256;this.g=(a|this.g)>>1;nd(this,a);this.b-=4},Hd,function(){kd(this,G(this));this.b-=10},function(){Bd(this,jd(this),this.g);this.b-=7},function(){kd(this,jd(this)+1);this.b-=5},function(){this.B=wd(this,this.B);this.b-=5},function(){this.B=vd(this,this.B);this.b-=5},function(){this.B=F(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|
|
|
|
|
|
md(this);nd(this,a&256);this.b-=4},Hd,function(){var a;ld(this,a=D(this)+jd(this));nd(this,a>>8&256);this.b-=10},function(){this.g=E(this,jd(this));this.b-=7},function(){kd(this,jd(this)-1);this.b-=5},function(){this.C=wd(this,this.C);this.b-=5},function(){this.C=vd(this,this.C);this.b-=5},function(){this.C=F(this);this.b-=7},function(){var a=this.g<<8;this.g=(md(this)<<8|this.g)>>1;nd(this,a&256);this.b-=4},Hd,function(){ld(this,G(this));this.b-=10},function(){var a=G(this);Jb(this.H,a,D(this));
|
|
|
|
|
this.b-=16},function(){ld(this,D(this)+1);this.b-=5},function(){this.D=wd(this,this.D);this.b-=5},function(){this.D=vd(this,this.D);this.b-=5},function(){this.D=F(this);this.b-=7},function(){var a=0,b=md(this);if(pd(this)||9<(this.g&15))a|=6;if(b||154<=this.g)a|=96,b=1;this.g=sd(this,a);nd(this,b?256:0);this.b-=4},Hd,function(){var a;ld(this,a=D(this)+D(this));nd(this,a>>8&256);this.b-=10},function(){var a;a=G(this);a=Gb(this.H,a);ld(this,a);this.b-=16},function(){ld(this,D(this)-1);this.b-=5},function(){this.F=
|
|
|
|
|
wd(this,this.F);this.b-=5},function(){this.F=vd(this,this.F);this.b-=5},function(){this.F=F(this);this.b-=7},function(){this.g=~this.g&255;this.b-=4},Hd,function(){this.M=G(this)&65535;this.b-=10},function(){Bd(this,G(this),this.g);this.b-=13},function(){this.M=this.M+1&65535;this.b-=5},function(){var a=D(this);Bd(this,a,wd(this,E(this,a)));this.b-=10},function(){var a=D(this);Bd(this,a,vd(this,E(this,a)));this.b-=10},function(){Bd(this,D(this),F(this));this.b-=10},function(){this.I|=256;this.b-=
|
|
|
|
|
4},Hd,function(){var a;ld(this,a=D(this)+this.M);nd(this,a>>8&256);this.b-=10},function(){this.g=E(this,G(this));this.b-=13},function(){this.M=this.M-1&65535;this.b-=5},function(){this.g=wd(this,this.g);this.b-=5},function(){this.g=vd(this,this.g);this.b-=5},function(){this.g=F(this);this.b-=7},function(){nd(this,md(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.w=this.A;this.b-=5},function(){this.w=this.B;this.b-=5},function(){this.w=this.C;this.b-=5},function(){this.w=this.D;this.b-=
|
|
|
|
|
5},function(){this.w=this.F;this.b-=5},function(){this.w=E(this,D(this));this.b-=7},function(){this.w=this.g;this.b-=5},function(){this.A=this.w;this.b-=5},function(){this.b-=5},function(){this.A=this.B;this.b-=5},function(){this.A=this.C;this.b-=5},function(){this.A=this.D;this.b-=5},function(){this.A=this.F;this.b-=5},function(){this.A=E(this,D(this));this.b-=7},function(){this.A=this.g;this.b-=5},function(){this.B=this.w;this.b-=5},function(){this.B=this.A;this.b-=5},function(){this.b-=5},function(){this.B=
|
|
|
|
|
this.C;this.b-=5},function(){this.B=this.D;this.b-=5},function(){this.B=this.F;this.b-=5},function(){this.B=E(this,D(this));this.b-=7},function(){this.B=this.g;this.b-=5},function(){this.C=this.w;this.b-=5},function(){this.C=this.A;this.b-=5},function(){this.C=this.B;this.b-=5},function(){this.b-=5},function(){this.C=this.D;this.b-=5},function(){this.C=this.F;this.b-=5},function(){this.C=E(this,D(this));this.b-=7},function(){this.C=this.g;this.b-=5},function(){this.D=this.w;this.b-=5},function(){this.D=
|
|
|
|
|
this.A;this.b-=5},function(){this.D=this.B;this.b-=5},function(){this.D=this.C;this.b-=5},function(){this.b-=5},function(){this.D=this.F;this.b-=5},function(){this.D=E(this,D(this));this.b-=7},function(){this.D=this.g;this.b-=5},function(){this.F=this.w;this.b-=5},function(){this.F=this.A;this.b-=5},function(){this.F=this.B;this.b-=5},function(){this.F=this.C;this.b-=5},function(){this.F=this.D;this.b-=5},function(){this.b-=5},function(){this.F=E(this,D(this));this.b-=7},function(){this.F=this.g;
|
|
|
|
|
this.b-=5},function(){Bd(this,D(this),this.w);this.b-=7},function(){Bd(this,D(this),this.A);this.b-=7},function(){Bd(this,D(this),this.B);this.b-=7},function(){Bd(this,D(this),this.C);this.b-=7},function(){Bd(this,D(this),this.D);this.b-=7},function(){Bd(this,D(this),this.F);this.b-=7},function(){var a=this.j-1;if(this.La.length)for(var b=0;b<this.La.length;b++)if(this.La[b](a))return;this.b-=7;this.S|=256;Kc(this);this.K&&xa(this,-2147483648)?(A(this,a),this.K.da()):this.N&512||(this.K&&A(this,a),
|
|
|
|
|
this.da())},function(){Bd(this,D(this),this.g);this.b-=7},function(){this.g=this.w;this.b-=5},function(){this.g=this.A;this.b-=5},function(){this.g=this.B;this.b-=5},function(){this.g=this.C;this.b-=5},function(){this.g=this.D;this.b-=5},function(){this.g=this.F;this.b-=5},function(){this.g=E(this,D(this));this.b-=7},function(){this.b-=5},function(){this.g=sd(this,this.w);this.b-=4},function(){this.g=sd(this,this.A);this.b-=4},function(){this.g=sd(this,this.B);this.b-=4},function(){this.g=sd(this,
|
|
|
|
|
this.C);this.b-=4},function(){this.g=sd(this,this.D);this.b-=4},function(){this.g=sd(this,this.F);this.b-=4},function(){this.g=sd(this,E(this,D(this)));this.b-=7},function(){this.g=sd(this,this.g);this.b-=4},function(){this.g=td(this,this.w);this.b-=4},function(){this.g=td(this,this.A);this.b-=4},function(){this.g=td(this,this.B);this.b-=4},function(){this.g=td(this,this.C);this.b-=4},function(){this.g=td(this,this.D);this.b-=4},function(){this.g=td(this,this.F);this.b-=4},function(){this.g=td(this,
|
|
|
|
|
E(this,D(this)));this.b-=7},function(){this.g=td(this,this.g);this.b-=4},function(){this.g=yd(this,this.w);this.b-=4},function(){this.g=yd(this,this.A);this.b-=4},function(){this.g=yd(this,this.B);this.b-=4},function(){this.g=yd(this,this.C);this.b-=4},function(){this.g=yd(this,this.D);this.b-=4},function(){this.g=yd(this,this.F);this.b-=4},function(){this.g=yd(this,E(this,D(this)));this.b-=7},function(){this.g=yd(this,this.g);this.b-=4},function(){this.g=zd(this,this.w);this.b-=4},function(){this.g=
|
|
|
|
|
zd(this,this.A);this.b-=4},function(){this.g=zd(this,this.B);this.b-=4},function(){this.g=zd(this,this.C);this.b-=4},function(){this.g=zd(this,this.D);this.b-=4},function(){this.g=zd(this,this.F);this.b-=4},function(){this.g=zd(this,E(this,D(this)));this.b-=7},function(){this.g=zd(this,this.g);this.b-=4},function(){this.g=ud(this,this.w);this.b-=4},function(){this.g=ud(this,this.A);this.b-=4},function(){this.g=ud(this,this.B);this.b-=4},function(){this.g=ud(this,this.C);this.b-=4},function(){this.g=
|
|
|
|
|
ud(this,this.D);this.b-=4},function(){this.g=ud(this,this.F);this.b-=4},function(){this.g=ud(this,E(this,D(this)));this.b-=7},function(){this.g=ud(this,this.g);this.b-=4},function(){this.g=Ad(this,this.w);this.b-=4},function(){this.g=Ad(this,this.A);this.b-=4},function(){this.g=Ad(this,this.B);this.b-=4},function(){this.g=Ad(this,this.C);this.b-=4},function(){this.g=Ad(this,this.D);this.b-=4},function(){this.g=Ad(this,this.F);this.b-=4},function(){this.g=Ad(this,E(this,D(this)));this.b-=7},function(){this.g=
|
|
|
|
|
Ad(this,this.g);this.b-=4},function(){this.g=xd(this,this.w);this.b-=4},function(){this.g=xd(this,this.A);this.b-=4},function(){this.g=xd(this,this.B);this.b-=4},function(){this.g=xd(this,this.C);this.b-=4},function(){this.g=xd(this,this.D);this.b-=4},function(){this.g=xd(this,this.F);this.b-=4},function(){this.g=xd(this,E(this,D(this)));this.b-=7},function(){this.g=xd(this,this.g);this.b-=4},function(){yd(this,this.w);this.b-=4},function(){yd(this,this.A);this.b-=4},function(){yd(this,this.B);this.b-=
|
|
|
|
|
4},function(){yd(this,this.C);this.b-=4},function(){yd(this,this.D);this.b-=4},function(){yd(this,this.F);this.b-=4},function(){yd(this,E(this,D(this)));this.b-=7},function(){yd(this,this.g);this.b-=4},function(){qd(this)||(A(this,Cd(this)),this.b-=6);this.b-=5},function(){Xc(this,Cd(this));this.b-=10},function(){var a=G(this);qd(this)||A(this,a);this.b-=10},Id,function(){var a=G(this);qd(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=11},function(){H(this,Wc(this));this.b-=11},function(){this.g=
|
|
|
|
|
sd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,0);this.b-=11},function(){qd(this)&&(A(this,Cd(this)),this.b-=6);this.b-=5},Jd,function(){var a=G(this);qd(this)&&A(this,a);this.b-=10},Id,function(){var a=G(this);qd(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Kd,function(){this.g=td(this,F(this));this.b-=7},function(){H(this,this.j);A(this,8);this.b-=11},function(){md(this)||(A(this,Cd(this)),this.b-=6);this.b-=5},function(){kd(this,Cd(this));this.b-=10},function(){var a=G(this);
|
|
|
|
|
md(this)||A(this,a);this.b-=10},function(){var a=F(this);Tb(this.H,a,this.g,this.j+-2&65535);this.b-=10},function(){var a=G(this);md(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=11},function(){H(this,jd(this));this.b-=11},function(){this.g=yd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,16);this.b-=11},function(){md(this)&&(A(this,Cd(this)),this.b-=6);this.b-=5},Jd,function(){var a=G(this);md(this)&&A(this,a);this.b-=10},function(){var a=F(this);this.g=Pb(this.H,a,this.j+-2&65535)&
|
|
|
|
|
255;this.b-=10},function(){var a=G(this);md(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Kd,function(){this.g=zd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,24);this.b-=11},function(){od(this)||(A(this,Cd(this)),this.b-=6);this.b-=5},function(){ld(this,Cd(this));this.b-=10},function(){var a=G(this);od(this)||A(this,a);this.b-=10},function(){var a=Cd(this);H(this,D(this));ld(this,a);this.b-=18},function(){var a=G(this);od(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=
|
|
|
|
|
11},function(){H(this,D(this));this.b-=11},function(){this.g=ud(this,F(this));this.b-=7},function(){H(this,this.j);A(this,32);this.b-=11},function(){od(this)&&(A(this,Cd(this)),this.b-=6);this.b-=5},function(){A(this,D(this));this.b-=5},function(){var a=G(this);od(this)&&A(this,a);this.b-=10},function(){var a=D(this);ld(this,jd(this));kd(this,a);this.b-=5},function(){var a=G(this);od(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Kd,function(){this.g=Ad(this,F(this));this.b-=7},function(){H(this,
|
|
|
|
|
this.j);A(this,40);this.b-=11},function(){rd(this)||(A(this,Cd(this)),this.b-=6);this.b-=5},function(){var a=Cd(this);Sc(this,a&255|this.N&-256);this.g=a>>8;this.b-=10},function(){var a=G(this);rd(this)||A(this,a);this.b-=10},function(){this.N&=-513;this.b-=4},function(){var a=G(this);rd(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=11},function(){H(this,Uc(this)&255|this.g<<8);this.b-=11},function(){this.g=xd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,48);this.b-=11},function(){rd(this)&&
|
|
|
|
|
(A(this,Cd(this)),this.b-=6);this.b-=5},function(){this.M=D(this)&65535;this.b-=5},function(){var a=G(this);rd(this)&&A(this,a);this.b-=10},function(){this.N|=512;this.b-=4;Dd(this)},function(){var a=G(this);rd(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Kd,function(){yd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,56);this.b-=11}];
|
|
|
|
|
function Ld(a){n.call(this,"ChipSet",a,32768);var b=a.model;b&&!Md[b]&&ha("Unrecognized ChipSet model: "+b);this.g=Md[b]||{};a.sound&&(this.U=null,window&&(this.U=window.AudioContext||window.webkitAudioContext),this.U&&new this.U);ta(this)}aa(Ld,n);k=Ld.prototype;k.ca=function(){return!1};
|
|
|
|
|
k.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;this.R=a;this.B=wb(a,"Keyboard");this.C=wb(a,"SerialPort");this.video=wb(a,"Video");Mb(b,this,this.g.Bb);Sb(b,this,this.g.Cb);if(d){var e=this;Nd(d,16384,function(){for(var a="",b=0;b<e.j.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=x(e.j[b]);e.K.i(a)})}};k.va=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){this.g.INIT&&!this.restore(this.g.INIT)&&this.aa("reset error")};
|
|
|
|
|
k.save=function(){var a=new Vc(this);switch(this.g.pa){case Od.pa:a.set(0,[this.ea,this.A,this.ga,this.N,this.T,this.Y,this.Z]);break;case J.pa:a.set(0,[this.W,this.D]),a.set(1,[this.F,this.I]),a.set(2,[this.w,this.O,this.X,this.V]),a.set(3,[this.M,this.b,this.L,this.S,this.j])}return a.data()};
|
|
|
|
|
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.g.pa){case Od.pa:return this.ea=b[0],this.A=b[1],this.ga=b[2],this.N=b[3],this.T=b[4],this.Y=b[5],this.Z=b[6],!0;case J.pa:return this.W=b[0],this.D=b[1],b=a[1],this.F=b[0],this.I=b[1],b=a[2],this.w=b[0],this.O=b[1],this.X=b[2],this.V=b[3],b=a[3],this.M=b[0],this.b=b[1],this.L=b[2],this.S=b[3],this.j=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.Jd=function(a,b){var c=this.ea;q(this,a,null,b,"STATUS0",c,!0);return c};
|
|
|
|
|
k.Kd=function(a,b){var c=this.A;q(this,a,null,b,"STATUS1",c,!0);return c};k.Ld=function(a,b){var c=this.ga;q(this,a,null,b,"STATUS2",c,!0);return c};k.Id=function(a,b){var c=this.N>>8-this.T&255;q(this,a,null,b,"SHIFT.RESULT",c,!0);return c};k.Wd=function(a,b,c){q(this,a,b,c,"SHIFT.COUNT",null,!0);this.T=b};k.Yd=function(a,b,c){q(this,a,b,c,"SOUND1",null,!0);this.Y=b};k.Xd=function(a,b,c){q(this,a,b,c,"SHIFT.DATA",null,!0);this.N=b<<8|this.N>>8};
|
|
|
|
|
k.Zd=function(a,b,c){q(this,a,b,c,"SOUND2",null,!0);this.Z=b};k.$d=function(a,b,c){q(this,a,b,c,"WATCHDOG",null,!0)};function Pd(a){var b=0,c=0,d=~a.M;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
|
|
|
|
|
k.Md=function(a,b){var c=this.D,c=c&~J.xa.jc;if((Dc(this.u)&64)<<1&&(c|=J.xa.jc,c!=this.D)){var d,e;d=this.L&1;e=this.L>>1&7;switch(e){case J.Aa.Ja.nd:break;case J.Aa.Ja.Lc:this.M=this.M<<1|d;break;case J.Aa.Ja.Rc:d=Pd(this);this.j[d]=J.Aa.vb;ya(this,"doNVRCommand(): erase data at addr "+x(d));break;case J.Aa.Ja.Mc:this.b=this.b<<1|d;break;case J.Aa.Ja.rd:d=Pd(this);e=this.b&J.Aa.vb;this.j[d]=e;ya(this,"doNVRCommand(): write data "+x(e)+" to addr "+x(d));break;case J.Aa.Ja.ld:d=Pd(this);e=this.j[d];
|
|
|
|
|
null==e&&(e=J.Aa.vb);this.b=e;ya(this,"doNVRCommand(): read data "+x(e)+" from addr "+x(d));break;case J.Aa.Ja.md:this.b<<=1;this.S=this.b&J.Aa.vb+1;break;default:ya(this,"doNVRCommand(): unrecognized command "+Ea(e))}}c&=~J.xa.kc;this.S&&(c|=J.xa.kc);c&=~J.xa.dc;if(d=this.B){d=this.B;if(e=d.A)e=d.u,e=Dc(d.u)>=d.F+e.Fa*e.U/1E3*1.2731488;e&&(d.A=!1);d=!d.A}d&&(c|=J.xa.dc);c&=~J.xa.sc;this.C&&this.C.ia&Qd&&(c|=J.xa.sc);this.D=c;q(this,a,null,b,"FLAGS",c);return c};
|
|
|
|
|
k.ae=function(a,b,c){q(this,a,b,c,"BRIGHTNESS");this.W=b};k.de=function(a,b,c){q(this,a,b,c,"NVR.LATCH");this.L=b};k.ce=function(a,b,c){q(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.w=this.w&-4|a;break;case 1:this.w=this.w&-13|a<<2;this.video&&(b=this.video,a=this.w,ya(b,"updateScrollOffset("+a+")"),b.sa!==a&&((b.sa=a)?Nc(b,!0):b.ya=!0));break;case 2:switch(a){case 0:this.O=~this.O;break;case 2:case 3:this.X=3-a}break;case 3:this.V=a}};
|
|
|
|
|
k.be=function(a,b,c){q(this,a,b,c,"DC011");b&J.Ka.kd?(b&=J.Ka.oc,this.I!=b&&(this.I=b,this.video&&(a=this.video,b=this.I==J.Ka.oc?50:60,ya(a,"updateRate("+b+")"),a.jb=b))):(b&=J.Ka.Wb,this.F!=b&&(this.F=b,this.video&&(a=this.F==J.Ka.Wb?132:80,b=this.video,ya(b,"updateDimensions("+a+","+(80<a&&this.D&J.xa.ic?14:24)+")"),b.O=a,b.fa=b.Ha,80<a&&b.fa--,Rd(b)&&Sd(b))))};
|
|
|
|
|
var Od={pa:1978.1,pd:{qa:0,ff:1,kf:16,sf:32,Bf:64,Af:128,bb:14},Oa:{qa:1,Pc:1,jd:2,ed:4,fd:16,gd:32,hd:64,bb:8},qd:{qa:2,ef:3,Jf:4,gf:8,wf:16,xf:32,yf:64,hf:128,bb:0},Ff:{qa:3},Df:{qa:2,tf:7},Hf:{qa:3,Kf:1,Gf:2,zf:4,qf:8,jf:16,Ae:32},Ef:{qa:4},If:{qa:5,lf:1,mf:2,nf:4,pf:8,Lf:16}},J={pa:100,xa:{qa:66,sc:1,ic:2,dd:4,vf:8,uf:16,kc:32,jc:64,dc:128},Oc:{qa:66,INIT:0},Ka:{qa:194,De:0,Wb:16,kd:32,oc:48,Uc:0,Vc:32},ub:{qa:162,Cf:0,Xc:0,Tc:0,Wc:0,Sc:0},Aa:{rf:{qa:98},Ja:{Mc:0,Lc:1,md:2,rd:4,Rc:5,ld:6,nd:7},
|
|
|
|
|
vb:16383}},Md={SI1978:Od,VT100:J};Od.INIT=[[Od.pd.bb,Od.Oa.bb,Od.qd.bb,0,0,0,0]];
|
|
|
|
|
J.INIT=[[J.Oc.INIT,J.xa.ic|J.xa.dd],[J.Ka.Uc,J.Ka.Vc],[J.ub.Xc,J.ub.Tc,J.ub.Wc,J.ub.Sc],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
|
|
|
|
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];Od.Bb={0:Ld.prototype.Jd,1:Ld.prototype.Kd,2:Ld.prototype.Ld,3:Ld.prototype.Id};
|
|
|
|
|
Od.Cb={2:Ld.prototype.Wd,3:Ld.prototype.Yd,4:Ld.prototype.Xd,5:Ld.prototype.Zd,6:Ld.prototype.$d};J.Bb={66:Ld.prototype.Md};J.Cb={66:Ld.prototype.ae,98:Ld.prototype.de,162:Ld.prototype.ce,194:Ld.prototype.be};ib(function(){for(var a=qa(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Ld(d);pa(d,c)}});
|
|
|
|
|
function Td(a){n.call(this,"ROM",a);this.b=null;this.A=a.addr;this.g=a.size;this.w=a.alias;this.j=a.file;this.B=Fa(this.j);if(this.j){a=this.j;var b=Ga(this.B);"json"!=b&&"hex"!=b&&(a=Ia()+"/api/v1/dump?file="+this.j+"&format=bytes&decimal=true");var c=this;Ta(a,null,!0,function(a,b,f){Ud(c,a,b,f)})}}aa(Td,n);Td.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;Vd(this)};
|
|
|
|
|
Td.prototype.va=function(){if(this.ra){if(this.K){var a=this.K,b=this.id,c=this.A,d=this.g,e=this.ra,f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var m=h.o,r=h.a;if(void 0!==m){var u=f,m=[m>>>0,g],v=Qa(u,m,a.Ac);0>v&&u.splice(-(v+1),0,m)}r&&(h.a=r.replace(/''/g,'"'))}a.A.push({Mf:b,J:c,Qd:d,ra:e,zc:f})}delete this.ra}return!0};Td.prototype.ua=function(){return!0};
|
|
|
|
|
function Ud(a,b,c,d){if(d)a.aa("Unable to load system ROM (error "+d+": "+b+")");else{ea(a.eb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.data;if(f)a.b=f;else if(g)for(a.b=Array(4*g.length),d=c=0;c<g.length;c++)a.b[d++]=g[c]&255,a.b[d++]=g[c]>>8&255,a.b[d++]=g[c]>>16&255,a.b[d++]=g[c]>>24&255;else a.b=e;a.ra=e.symbols;if(!a.b.length){p("Empty ROM: "+b);return}if(1==a.b.length){p(a.b[0]);return}}catch(h){a.aa("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
|
|
|
|
|
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=Ba(b[e],16);Vd(a)}}
|
|
|
|
|
function Vd(a){if(!sa(a))if(!a.j)ta(a);else if(a.b&&a.H){a.g||(a.g=a.b.length);if(a.b.length!=a.g)ra(a,"ROM size ("+t(a.b.length,8,!0)+") does not match specified size ("+t(a.g,8,!0)+")");else{var b;b=a.A;if(Ab(a.H,b,a.g,$b)){var c;for(c=0;c<a.b.length;c++)Ib(a.H,b+c,a.b[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.H,g=d.g,h=[],m=d.A>>>f.g;0<g&&m<f.b.length;)h.push(f.b[m++]),g-=f.w;f=d.H;d=d.g;g=0;for(e>>>=
|
|
|
|
|
f.g;0<d&&e<f.b.length;){m=h[g++];if(!m)break;f.b[e++]=m;d-=f.w}}delete a.b}}ta(a)}}ib(function(){for(var a=qa(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Td(d);pa(d,c)}});
|
|
|
|
|
function Wd(a){n.call(this,"RAM",a);this.ra=this.g=null;this.w=a.addr;this.A=a.size;this.Qa=a.load;this.Ia=a.exec;this.j=!1;this.b=a.file;this.B=Fa(this.b);if(this.b){a=this.b;var b=Ga(this.B);"json"!=b&&"hex"!=b&&(a=Ia()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;Ta(a,null,!0,function(a,b,f){f?c.aa("Unable to load RAM resource (error "+f+": "+a+")"):(ea(c.eb,a,b),(a=Ua(a,b))?(c.g=a.ma,c.ra=a.ra,null==c.Qa&&(c.Qa=a.Qa),null==c.Ia&&(c.Ia=a.Ia)):c.b=null,Xd(c))})}}aa(Wd,n);
|
|
|
|
|
Wd.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;Xd(this)};Wd.prototype.va=function(){return!0};Wd.prototype.ua=function(){return!0};
|
|
|
|
|
function Xd(a){!a.j&&a.A&&Ab(a.H,a.w,a.A,1)&&(a.j=!0);if(!sa(a)){if(!a.j)p("No RAM allocated");else if(a.b){if(!a.g||!a.H)return;var b=a.w;null!==a.Qa&&(b=a.Qa);for(var c=0;c<a.g.length;c++)Ib(a.H,b+c,a.g[c]);if(null!==a.Ia){if(a.Ia==Yd){for(c=0;c<Zd.length;c++)Ib(a.H,Zd[c],118);Rc(a.u,function(a){return function(b){if(0<=Zd.indexOf(b)){var c=!1,d=a.u,e=a.K;if(b==$d)switch(c=!0,d.A){case ae:be(a,String.fromCharCode(d.C));break;case ce:for(var m=jd(d),r="",u=255;u--;){var v=E(a.u,m++);if(36==v)break;
|
|
|
|
|
r+=String.fromCharCode(v)}be(a,r);break;default:c=!1}c?Jd.call(d):e&&(a.i("\nCP/M vector "+x(b)),A(d,b),e.da());b=!0}else b=!1;return b}}(a))}Tc(a.u,a.Ia)}delete a.g}ta(a)}}Wd.prototype.reset=function(){};function be(a,b){b=b.replace(/\r/g,"");a.ta&&(a.ta.value+=b,a.ta.scrollTop=a.ta.scrollHeight)}var $d=5,ae=2,ce=9,Yd=256,Zd=[0,$d];ib(function(){for(var a=qa(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Wd(d);pa(d,c)}});
|
|
|
|
|
function de(a){n.call(this,"Keyboard",a,65536);(a=a.model)&&!ee[a]&&ha("Unrecognized Keyboard8080 model: "+a);this.b=ee[a]||{};this.reset();ta(this)}aa(de,n);k=de.prototype;
|
|
|
|
|
k.ca=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.P[e]){if("led"==a&&this.b.fb[b])return this.P[e]=c,!0;switch(b){case "kbd":case "screen":return cb("iOS")?(c.onkeypress=function(a){var b=!1;if(a=d.b.sb[a.keyCode||a.charCode]){a&128&&(a&=127,b=!0);var c;a:{for(c in d.b.Sa)if(d.b.Sa[c]==a){c=+c;break a}c=0}c&&(b?fe(d,16,!0,!0):fe(d,16,!1),fe(d,c,!0,!0))}return!0},c.onkeydown=function(a){return ge(d,a,!0)},c.onkeyup=function(a){return ge(d,a,!1)}):(c.onkeydown=function(a){return he(d,a,!0)},
|
|
|
|
|
c.onkeyup=function(a){return he(d,a,!1)},c.onkeypress=function(a){a=a.keyCode||a.charCode;a>=l.ab&&a<=l.wb?d.g&(ie|Ee)||(d.g|=Ee,fe(d,20,!0),Fe(d)):a>=l.yc&&a<=l.z&&d.g&Ee&&(d.g&=~Ee,fe(d,20,!1),Fe(d));return!0}),c.onpaste=function(a){a:{if(d.C&&d.C.Ra&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a=a.clipboardData||window.clipboardData)){Ge(d.C,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.b.Ua&&void 0!==this.b.Ua[b])return this.P[e]=c,c.onclick=
|
|
|
|
|
function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=17!=b;if(!e){c.style.fontWeight="normal";if(d=!(a.g&He))c.style.fontWeight="bold";Ie(a,b,d)}fe(a,b,d,e);a.R&&a.R.Za()}}(this,this.b.Ua[b]),!0}}return!1};k.Ea=function(a,b,c,d){this.R=a;this.u=c;this.K=d;var e=this;this.L=Ic(this.u,function(){Je(e)});this.W=wb(a,"ChipSet");this.C=wb(a,"SerialPort");Mb(b,this,this.b.Bb);Sb(b,this,this.b.Cb)};
|
|
|
|
|
k.va=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){this.j=[];this.g=0;this.b.INIT&&!this.restore(this.b.INIT)&&this.aa("reset error")};k.save=function(){var a=new Vc(this);switch(this.b.pa){case K.pa:a.set(0,[this.D,this.B,this.A,this.F,-1])}return a.data()};
|
|
|
|
|
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.pa){case Ke.pa:return!0;case K.pa:return this.D=b[0],Fe(this,this.D&K.Ba.ec),this.B=b[1],this.A=b[2],this.F=b[3],this.w=b[4],!0}return!1};function Fe(a,b){var c;null!=b?a.I=b:b=a.I;for(var d in a.b.fb)if(c="led-"+d,c=a.P[c]){var e=a.b.fb[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+t(16711680,6):"#000000"}if(c=a.P["led-caps-lock"])c.style.backgroundColor=a.g&Ee?"#"+t(65280,6):"#000000"}
|
|
|
|
|
function Ie(a,b,c,d){var e=0;switch(b){case 16:e=d?Le:Me;break;case 17:e=d?Ne:He;break;case 18:e=d?Oe:Pe;break;case 91:e=d?Qe:Re;break;case 20:e=Ee,c=!(a.g&e)}e&&(a.g=c?a.g|e:a.g&~e);return c}
|
|
|
|
|
function he(a,b,c){var d=!0,e=b.keyCode,e=ca[e]||e;c=Ie(a,e,c,2==b.location);var f;a:if(e=a.b.Tb[e]||e,a.b.Sa[e])f=e;else{for(f in a.b.Ua)if(a.b.Ua[f]===e)break a;f=null}f&&!b.metaKey&&(d=!1,a.g&(Se|Te)&&(13==f?(f=118,d=!0):8==f&&(f=46,d=!0),d&&(a.g=c?a.g|Te:a.g&~Te)),d=fe(a,f,c),(!(f>=l.ab&&f<=l.wb)||a.g|Ue)&&b.preventDefault&&b.preventDefault());return d}
|
|
|
|
|
function ge(a,b,c){var d=!0;if(c){b=b.keyCode;var e=a.b.Sa[b];if(e){var f;a:{for(f in a.b.sb)if(a.b.sb[f]==e){f=+f;break a}f=0}f||(d=fe(a,b,c,!0))}}return d}
|
|
|
|
|
function fe(a,b,c,d){var e;a:{for(e=0;e<a.j.length;e++)if(a.j[e].Pb==b)break a;e=-1}if(c)0>e?a.j.push({Pb:b,Mb:Date.now(),yb:d||!1}):(a.j[e].Mb=Date.now(),a.j[e].yb=d||!1),d&&Je(a);else if(0<=e){if(!a.j[e].yb&&(d=a.j[e].Mb)&&Date.now()-d<Ve)return a.j[e].yb=!0,Je(a),!0;a.j.splice(e,1)}if(a.W){d=0;switch(b){case "1p":d=Od.Oa.ed;break;case "2p":d=Od.Oa.jd;break;case "coin":d=Od.Oa.Pc;break;case "left":d=Od.Oa.gd;break;case "right":d=Od.Oa.hd;break;case "fire":d=Od.Oa.fd}d&&(a=a.W,b=d,a.A&=~b,c&&(a.A|=
|
|
|
|
|
b))}return!0}function Je(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].yb){var d=a.j[b].Pb,e=Ve-(Date.now()-a.j[b].Mb);if(0<e){if(0>c||c>e)c=e}else{fe(a,d,!1);b=0;continue}}b++}0<=c&&Jc(a.u,a.L,c)}k.Nd=function(a,b){var c=this.B;0<=this.w&&(this.w<this.j.length?(c=this.j[this.w],this.w++,c=K.Sa[c.Pb],c&128&&(c&=127)):(this.w=-1,c=K.Yc),this.B=c,Ed(this.u,1));q(this,a,null,b,"KBDUART.ADDRESS",c);return c};
|
|
|
|
|
k.ee=function(a,b,c){q(this,a,b,c,"KBDUART.STATUS");this.D=b;this.A=!0;this.F=Dc(this.u);Fe(this,b&K.Ba.ec);b&K.Ba.od&&(this.w=0,Ed(this.u,1))};var Le=1,Me=2,ie=3,Ne=4,He=8,Ue=12,Oe=16,Pe=32,Se=48,Qe=64,Re=128,Ee=512,Te=4096,Ve=50,We={};We[l.ab]=37;We[l.Fb]=39;We[l.Hb]=32;
|
|
|
|
|
var Ke={pa:1978.1,Sa:{},sb:{},Tb:We,fb:{},Ua:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},M={},N={},K={pa:100,Sa:(M[8]=3,M[l.mc]=5,M[l.lc]=6,M[l.xc]=7,M[l.qc]=8,M[l.uc]=9,M[l.Q]=10,M[39]=16,M[221]=20,M[219]=21,M[l.ac]=22,M[l.rc]=23,M[l.nc]=24,M[l.E]=25,M[49]=26,M[37]=32,M[40]=34,M[117]=35,M[19]=35,M[192]=36,M[189]=37,M[57]=38,M[55]=39,M[52]=40,M[51]=41,M[27]=42,M[38]=48,M[114]=49,M[112]=50,M[46]=51,M[187]=52,M[48]=53,M[56]=54,M[54]=55,M[53]=56,M[50]=57,M[9]=58,M[103]=64,M[115]=65,M[113]=66,
|
|
|
|
|
M[96]=67,M[118]=68,M[220]=69,M[l.Hb]=70,M[l.cc]=71,M[l.Zb]=72,M[l.Yb]=73,M[l.ab]=74,M[104]=80,M[2013]=81,M[98]=82,M[97]=83,M[222]=85,M[186]=86,M[l.bc]=87,M[l.$b]=88,M[l.Fb]=89,M[l.pc]=90,M[110]=96,M[116]=97,M[101]=98,M[100]=99,M[13]=100,M[190]=101,M[188]=102,M[l.hc]=103,M[l.Ub]=104,M[l.wc]=105,M[119]=106,M[105]=112,M[99]=113,M[102]=114,M[109]=115,M[191]=117,M[l.gc]=118,M[l[" "]]=119,M[l.tc]=120,M[l.Vb]=121,M[l.wb]=122,M[120]=123,M[17]=124,M[16]=125,M[20]=126,M),sb:(N[l.p]=5,N[l.Sd]=6,N[l.y]=7,N[l.t]=
|
|
|
|
|
8,N[l.re]=9,N[l.q]=10,N[l["]"]]=20,N[l["["]]=21,N[l.Fd]=22,N[l.pe]=23,N[l.r]=24,N[l.e]=25,N[l["1"]]=26,N[l["`"]]=36,N[l["-"]]=37,N[l["9"]]=38,N[l["7"]]=39,N[l["4"]]=40,N[l["3"]]=41,N[l["="]]=52,N[l["0"]]=53,N[l["8"]]=54,N[l["6"]]=55,N[l["5"]]=56,N[l["2"]]=57,N[l["\\"]]=69,N[l.Pd]=70,N[l.k]=71,N[l.Dd]=72,N[l.Bd]=73,N[l.yc]=74,N[l["'"]]=85,N[l[";"]]=86,N[l.Od]=87,N[l.Ed]=88,N[l.d]=89,N[l.oe]=90,N[13]=100,N[l["."]]=101,N[l[","]]=102,N[l.n]=103,N[l.ud]=104,N[l.x]=105,N[l["/"]]=117,N[l.Rd]=118,N[l[" "]]=
|
|
|
|
|
119,N[l.qe]=120,N[l.xd]=121,N[l.z]=122,N[l.mc]=133,N[l.lc]=134,N[l.xc]=135,N[l.qc]=136,N[l.uc]=137,N[l.Q]=138,N[l["}"]]=148,N[l["{"]]=149,N[l.ac]=150,N[l.rc]=151,N[l.nc]=152,N[l.E]=153,N[l["!"]]=154,N[l["~"]]=164,N[l._]=165,N[l["("]]=166,N[l["&"]]=167,N[l.$]=168,N[l["#"]]=169,N[l["+"]]=180,N[l[")"]]=181,N[l["*"]]=182,N[l["^"]]=183,N[l["%"]]=184,N[l["@"]]=185,N[l["|"]]=197,N[l.Hb]=198,N[l.cc]=199,N[l.Zb]=200,N[l.Yb]=201,N[l.ab]=202,N[l['"']]=213,N[l[":"]]=214,N[l.bc]=215,N[l.$b]=216,N[l.Fb]=217,N[l.pc]=
|
|
|
|
|
218,N[l[">"]]=229,N[l["<"]]=230,N[l.hc]=231,N[l.Ub]=232,N[l.wc]=233,N[l["?"]]=245,N[l.gc]=246,N[l.tc]=248,N[l.Vb]=249,N[l.wb]=250,N),Tb:{},fb:{},Ua:{"caps-lock":20,ctrl:17,esc:27,tab:9,"num-comma":116,"break":117,"line-feed":118,"no-scroll":119,setup:120},Nc:{qa:130,INIT:127},Ba:{qa:130,bd:1,ad:2,$c:4,Zc:8,cd:16,fc:32,ec:63,od:64,Ce:128,INIT:0},Yc:127};K.fb={l4:K.Ba.bd,l3:K.Ba.ad,l2:K.Ba.$c,l1:K.Ba.Zc,locked:K.Ba.cd,local:K.Ba.fc,online:~K.Ba.fc,"caps-lock":Ee};var ee={SI1978:Ke,VT100:K};
|
|
|
|
|
K.INIT=[[K.Ba.INIT,K.Nc.INIT,!1,0,-1]];K.Bb={130:de.prototype.Nd};K.Cb={130:de.prototype.ee};ib(function(){for(var a=qa(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new de(d);pa(d,c)}});
|
|
|
|
|
function Xe(a,b,c,d,e){n.call(this,"Video",a,262144);var f=this;this.Ta=cb("Gecko/");var g=["","moz","ms","webkit"];this.M=a.screenWidth;this.I=a.screenHeight;this.la=a.bufferAddr;this.vd=a.bufferRAM;var h=a.bufferFormat;this.Y=h&&Ye[h.toUpperCase()]||Ze;this.O=a.bufferCols;this.Z=a.bufferRows;this.Ha=this.fa=a.cellWidth||1;this.ba=a.cellHeight||1;this.ea=null;this.Na=!1;this.na=a.bufferBits||1;this.yd=a.bufferLeft||0;if(this.g=a.bufferRotate)this.g=this.g%360,0<this.g&&(this.g-=360),-90!=this.g&&
|
|
|
|
|
(this.aa("unsupported buffer rotation: "+this.g),this.g=0);this.oa=a.interruptRate;this.kb=a.refreshRate||60;this.F=b;this.j=c;this.V=(this.Cd=d)||b||null;this.Db=this.M;this.td=this.I;this.La=this.M/this.O|0;this.Ma=this.I/this.Z|0;1<this.ba&&(this.Z++,this.sa=0,this.ya=!1);b=a.smoothing;(c=db("smoothing"))&&(b="true"==c);if(null!=b)for(c=0;c<g.length;c++)if(d=(d=g[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.j[d]){this.j[d]=b;break}if(this.w=a.screenRotate)this.w=this.w%360,
|
|
|
|
|
0<this.w&&(this.w-=360),-90!=this.w?(this.aa("unsupported screen rotation: "+this.w),this.w=0):(this.j.translate(0,this.I),this.j.rotate(this.w*Math.PI/180),this.j.scale(this.I/this.M,this.M/this.I));if(this.b=e)if(this.b.Xa=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.Xa){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){$e(f,!!(document.fullscreenElement||document.msFullscreenElement||
|
|
|
|
|
document.mozFullScreenElement||document.webkitFullscreenElement))},!1);break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){$e(f,null)},!1);break}}if(this.S=a.fontROM)"json"!=Ga(this.S)&&(this.S=Ia()+"/api/v1/dump?file="+this.S+"&format=bytes"),Ta(this.S,null,!0,function(a,b,c){af(f,a,b,c)});this.Fa={}}aa(Xe,n);
|
|
|
|
|
function Rd(a){a.C=a.O*a.fa;a.N=a.Z*a.ba;var b=a.C,c=a.N;a.g&&(b=a.N,c=a.C);a.L=0;if(!a.vd&&(a.L=(a.C*a.na>>3)*a.N,!Ab(a.H,a.la,a.L,3)))return!1;a.L?(a.Va=a.j.createImageData(b,c),a.hb=16/a.na|0,bf(a,a.L>>1)):bf(a,(a.O+1)*a.Z);a.D=document.createElement("canvas");a.D.width=b;a.D.height=c;a.wa=a.D.getContext("2d");a.T={};a.X=1<<a.na;a.U=Array(a.X+cf);a.U[0]=[0,0,0,255];a.U[1]=[255,255,255,255];a.Y==df&&(a.U[a.X+ef]=[255,255,0,255],a.U[a.X+ff]=[0,255,0,255]);a.Y==gf&&(a.jb=60,a.za=!1,a.ga=Array(a.O));
|
|
|
|
|
return!0}k=Xe.prototype;k.ca=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Fa[b]=c,!0;switch(b){case "fullScreen":return this.P[b]=c,this.b&&this.b.Xa?c.onclick=function(){d.Xa()}:c.parentNode.removeChild(c),!0}return!1};
|
|
|
|
|
k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;Rd(this);if(this.B=wb(a,"Keyboard")){for(var e in this.Fa)this.B.ca("led",e,this.Fa[e]);this.F&&this.B.ca(this.Cd?"textarea":"canvas","screen",this.V)}var f=this;this.xb=Ic(this.u,function(){Nc(f)});Jc(this.u,this.xb,1E3/Math.max(this.kb,this.oa));this.ib=0;this.S||ta(this)};
|
|
|
|
|
function af(a,b,c,d){if(d)a.aa("Unable to load font ROM (error "+d+": "+b+")");else{ea(a.eb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){p("Empty font ROM: "+b);return}if(1==f.length){p(f[0]);return}if(2048==f.length)a.ea=f,Sd(a);else{a.aa("Unrecognized font data length ("+f.length+")");return}}catch(g){a.aa("Font ROM data error: "+g.message);return}(a.j||a.K)&&ta(a)}}
|
|
|
|
|
function Sd(a){a.ea&&(a.Na=a.Y==gf,a.T[hf]=[jf(a,a.fa,a.ba),jf(a,a.fa,a.ba,a.za)],a.T[kf]=[jf(a,2*a.fa,a.ba),jf(a,2*a.fa,a.ba,a.za)],a.T[lf]=a.T[mf]=[jf(a,2*a.fa,2*a.ba),jf(a,2*a.fa,2*a.ba,a.za)])}
|
|
|
|
|
function jf(a,b,c,d){var e=8>=a.Ha?8:16,f=8<e?15:0,g=a.ea.length/e,h=!1===d,m={fa:b,ba:c};m.canvas=document.createElement("canvas");m.canvas.width=16*b;m.canvas.height=g/16*c;m.context=m.canvas.getContext("2d");for(var r=m.context.createImageData(b,c),u=0;u<g;u++){for(var v=0,B=v;v<a.ba;v++)for(var y=u*e+(f+v&e-1),y=d&&8==v?255:a.ea[y],w=0;w<c/a.ba;w++){for(var C=0,T=0,Aa=T;T<a.fa;T++){for(var L=y&128>>(7<T?7:T),C=a.Na&&!L&&C?C:L,ja=0;ja<b/a.fa;ja++)h&&(C=!C),nf(a,r,Aa,B,C?1:0),Aa++;C=L}B++}m.context.putImageData(r,
|
|
|
|
|
(u&15)*b,(u>>4)*c)}return m}k.va=function(a,b){return b||!a||this.restore(a)?!0:!1};k.ua=function(a){return!a||this.save()};k.save=function(){var a=new Vc(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};
|
|
|
|
|
k.Xa=function(){var a=!1;if(this.b){if(this.b.Xa){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.M/this.I;b>c&&(a=Math.round(c/b*100)+"%")}this.Ta?(this.F.style.width=a,this.F.style.width=a,this.F.style.display="block",this.F.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.Xa();a=!0}this.V&&this.V.focus()}return a};
|
|
|
|
|
function $e(a,b){!b&&a.b&&(a.Ta?a.F.style.width=a.F.style.height="":a.b.style.width=a.b.style.height="");ya(a,"notifyFullScreen("+b+")")}function bf(a,b){a.gb=b;a.W=!1;if(void 0===a.A||a.A.length!=a.gb)a.A=Array(a.gb)}function nf(a,b,c,d,e){d=a.g?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.Y==df&&(208<=c&&236>c?e=a.X+ef:28<=c&&72>c&&(e=a.X+ff));a=a.U[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
|
|
|
|
|
function Nc(a,b){var c=!0;if(!b){a.oa&&(120==a.oa?a.ib&1?(Ed(a.u,2),c=!1):Ed(a.u,1):Ed(a.u,4));if(c&&a.W&&a.L){for(var d=a.H,e=a.L,f=!0,g=a.la>>>d.g;0<e&&g<d.b.length;)d.b[g].Ca&&(d.b[g].Ca=f=!1,d.b[g].Dc=!0),e-=d.w,g++;f&&(c=!1)}Jc(a.u,a.xb,1E3/Math.max(a.kb,a.oa));a.ib++}if(c)if(1<a.fa)switch(a.Y){case gf:for(var c=a.la,d=-1,e=0,f=60==a.jb?2:5,h=g=0,m=-1;e<a.Z;){var r=0,u=c,v=d,B=a.O;for(v!=hf&&(B>>=1);;){var y=Fb(a.H,u++);if((y&of)==of){var w=Fb(a.H,u++),d=w&pf,c=(w&qf)<<8|Fb(a.H,u),c=c+(w&rf?
|
|
|
|
|
sf:tf);break}if(r<B)a.ga[r++]=y;else break}if(f)f--;else{for(;r<a.ga.length;)a.ga[r++]=0;if(0<=v)for(u=a.W&&a.A[g]==B,a.A[g++]=B,B=0;B<r;B++){y=a.ga[B];if(!u||y!==a.A[g]){a.A[m=g]=y;var w=a,C=a.wa,T=y&127;if(y=w.T[v][y&128?1:0]){var Aa=(T&15)*y.fa,T=(T>>4)*y.ba,L,ja,va,na,Na=y.fa,fc=y.ba;C?(L=B*w.fa,ja=e*w.ba,va=w.fa,na=w.ba):(L=B*w.La,ja=e*w.Ma,va=w.La,na=w.Ma);y.fa>w.fa&&(L*=2,va*=2);y.ba>w.ba&&(v==mf&&(T+=w.ba),fc=w.ba);C?C.drawImage(y.canvas,Aa,T,Na,fc,L,ja,va,na):(L+=0,ja+=0,w.j.drawImage(y.canvas,
|
|
|
|
|
Aa,T,Na,fc,L,ja,va,na))}h++}g++}e++}}a.W=!0;!b&&a.ya&&1==h&&(a.A[m]=-1,h=0);a.ya=!1;(h||b)&&a.wa&&a.j.drawImage(a.D,0,a.sa,a.C,a.N-a.ba,0,0,a.Db,a.td)}else{e=a.la;f=e+a.L;m=h=g=0;b=a.C;r=0;c=a.N;v=d=0;u=a.na;B=(1<<u)-1;a.yd&&(u=-u,v=16+u);for(;e<f;){w=Hb(a.H,e);if(a.W&&w===a.A[g])h+=a.hb;else{a.A[g]=w;(C=v)&&(w=w>>8|(w&255)<<8);h<b&&(b=h);for(y=a.hb;y--;)Aa=w>>C&B,nf(a,a.Va,h++,m,Aa),C+=u;h>r&&(r=h);m<c&&(c=m);m>=d&&(d=m+1)}e+=2;g++;if(h>=a.C&&(h=0,m++,m>a.N))break}a.W=!0;b<a.C&&(e=r-b,d-=c,a.g&&
|
|
|
|
|
(f=b,g=e,b=c,e=d,c=a.C-(f+g),d=g),a.wa.putImageData(a.Va,0,0,b,c,e,d),a.j.drawImage(a.D,0,0,a.D.width,a.D.height,0,0,a.M,a.I))}}var ef=0,ff=1,cf=2,Ze=0,df=1,gf=2,Ye={SI1978:df,VT100:gf},hf=96,kf=64,lf=32,mf=0,of=127,qf=15,rf=16,pf=96,sf=8192,tf=16384;
|
|
|
|
|
ib(function(){for(var a=qa(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=oa(c),e=document.createElement("canvas");if(!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<=Va().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||db("aspect"));f&&.3<=f&&3.33>=f&&(hb("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");cb("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new Xe(d,e,g,f,c);pa(d,c)}});
|
|
|
|
|
function uf(a){n.call(this,"SerialPort",a,8388608);this.T=+a.adapter;switch(this.T){case 0:this.U=0;this.X=2;break;default:p("Unrecognized serial adapter #"+this.T);return}this.g=this.j=null;this.V=a.tabSize;this.S=a.charBOL;this.w=0;this.N=!1;this.D=!0;var b=a.binding;if("console"==b)this.j="";else{var c;a=vf;b&&(void 0===c&&(c="Panel"),(c=ma(c,this.id))&&(b=c.P[b])&&this.ca(null,a,b))}this.A="";this.b=this.Ra=this.I=null;this.exports={connect:this.Fc,receiveData:this.Ob,receiveStatus:this.ne}}
|
|
|
|
|
aa(uf,n);k=uf.prototype;
|
|
|
|
|
k.ca=function(a,b,c,d){var e=this;switch(b){case vf:return this.P[b]=this.g=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),wf(e,b);return!0},c.onkeypress=function(a){a=a||window.event;wf(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.P[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.Ob(d);return!0},
|
|
|
|
|
!0}return!1};k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;var e=this;this.Y=Ic(this.u,function(){e.Ob()});this.Z=Ic(this.u,function(){Ge(e)});this.W=wb(a,"ChipSet");Mb(b,this,xf,this.U);Sb(b,this,yf,this.U);ta(this)};
|
|
|
|
|
k.Fc=function(a){if(!this.b){var b=wc(this.R,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ma(c[0]);if(d!=this.cb)return;c=Ma(c[1]);if(this.b=la(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.D);if(this.Ra=e.receiveData){this.D=a;this.I=e.receiveStatus;this.status("Connected "+this.eb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};
|
|
|
|
|
k.va=function(a,b){if(!b)if(this.Fc(this.D),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){zf(this)};k.save=function(){var a=new Vc(this),b=0,c=[];c[b++]=this.F;c[b++]=this.M;c[b++]=this.O;c[b++]=this.ia;c[b++]=this.B;c[b++]=this.C;c[b]=this.L;a.set(0,c);return a.data()};k.restore=function(a){return zf(this,a[0])};
|
|
|
|
|
function zf(a,b){var c=0;b||(b=Af);a.F=b[c++];a.M=b[c++];a.O=b[c++];a.ia=b[c++];a.B=b[c++];a.C=b[c++];a.L=b[c];return!0}function Bf(a,b){var c=a.L&b;b&15||(c>>=4);b=Cf[c];c=((a.B&Df)>>2)+6;a.B&Ef&&c++;c+=((a.B&Ff)>>6)+1>>1;return 1E3/Math.round(b/c)}function wf(a,b){ya(a,"receiveByte("+Ea(b)+"), status="+Ea(a.ia));return a.N||a.ia&Gf?!1:(a.M=b,a.ia|=Gf,Ed(a.u,a.X),!0)}
|
|
|
|
|
k.Ob=function(a){null!=a&&(this.A="number"!=typeof a?a:this.A+String.fromCharCode(a));this.A&&(wf(this,this.A.charCodeAt(0))&&(this.A=this.A.substr(1)),this.A&&this.u&&Jc(this.u,this.Y,Bf(this,Hf)));return!0};k.ne=function(a){this.ia&=~If;a&64&&(this.ia|=If)};function Ge(a,b){a.ia=a.ia|Qd|Jf;b&&a.Ra&&a.Ra.call(a.b,b)}k.Hd=function(a,b){var c=this.M;q(this,a,null,b,"DATA",c);this.ia&=~Gf;return c};k.Gd=function(a,b){var c=this.ia;q(this,a,null,b,"STATUS",c);return c};
|
|
|
|
|
k.Vd=function(a,b,c){q(this,a,b,c,"DATA");this.O=b;this.ia&=~(Qd|Jf);ya(this,"transmitByte("+Ea(b)+")");if(19==b)this.N=!0;else if(17==b)this.N=!1;else if(this.Ra&&this.Ra.call(this.b,b),this.g)if(8==b)this.g.value=this.g.value.slice(0,-1),0<this.w&&this.w--;else{var d;13!=b&&10!=b&&(d=Pa[b]);a=d=d?"<"+d+">":String.fromCharCode(b);c=a.length;9==b?(b=this.V||8,c=b-this.w%b,this.V&&(a=La("",c))):13==b&&(this.w=c=0,a="\n");this.S&&!this.w&&c&&(a=String.fromCharCode(this.S)+a);this.g.value+=a;this.g.scrollTop=
|
|
|
|
|
this.g.scrollHeight;this.w+=c}else if(null!=this.j){if(10==b||1024<=this.j.length)this.i(this.j),this.j="";10!=b&&(this.j+=String.fromCharCode(b))}this.u&&Jc(this.u,this.Z,Bf(this,Kf))};k.Ud=function(a,b,c){q(this,a,b,c,"CONTROL");this.F?(this.I&&(b^this.C)&(Lf|Mf)&&(a=0,this.D?(a|=b&Lf?32:0,a|=b&Mf?320:0):(a|=b&Lf?16:0,a|=b&Mf?1048576:0),this.I.call(this.b,a)),this.C=b,this.C&Nf&&(this.F=!1)):(this.B=b,this.F=!0)};k.Td=function(a,b,c){q(this,a,b,c,"BAUDRATES");this.L=b};
|
|
|
|
|
var Df=12,Ef=16,Ff=192,Mf=2,Lf=32,Nf=64,Qd=1,Gf=2,Jf=4,If=128,Hf=15,Kf=240,Cf=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Af=[!1,0,0,133,142,39,238],vf="buffer",xf={0:uf.prototype.Hd,1:uf.prototype.Gd},yf={0:uf.prototype.Vd,1:uf.prototype.Ud,2:uf.prototype.Td};ib(function(){for(var a=qa(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new uf(d);pa(d,c)}});
|
|
|
|
|
function Of(a){n.call(this,"Debugger",a);this.na=+a.base||16;this.N=this.Y=this.C=0;this.L=!1;this.b=-1;this.g=[];this.S={}}aa(Of,n);Of.prototype.Kb=function(){return-1};Of.prototype.Lb=function(){};
|
|
|
|
|
Of.prototype.Ab=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.L?a="end":a=this.g[this.b+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(Ma(a.substring(d,f))),d=f+1}}return b};
|
|
|
|
|
function Pf(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 Nf(a,b,c){var d;if(b){b=Of(a,b);for(var e=0,f=!1,g=b,h=[],l=[],p=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<p.length;){var r=p[e++],t=r.length,r=Na(r);if(!r){f=!0;break}r=Pf(a,r,null,!1===c);if(void 0===r){f=!0;c=!1;break}h.push(r);if(e==p.length)break;var r=p[e++],A=r.length;l.length&&Qf[r]<Qf[l[l.length-1]]&&Mf(h,l,1);l.push(r);b=b.substr(t+A)}Mf(h,l)&&1==h.length||(f=!0);f?c&&a.i("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),c&&Rf(a,null,
|
|
|
|
|
d))}return d}function Of(a,b){for(var c,d=/\{(.*?)\}/;(c=b.match(d))&&!(0<=c[1].indexOf("{"));){var e=Nf(a,c[1]);b=b.replace("{"+c[1]+"}",null!=e?Sf(a,e):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)b=b.replace("["+c[1]+"]","unimplemented");for(;c=b.match(/\$([a-z]+)/i);){d=null;switch(c[1].toLowerCase()){case "ops":d=a.N-a.Y}if(null==d)break;b=b.replace(c[0],d.toString())}return b}
|
|
|
|
|
function Pf(a,b,c,d){var e;null!=b?(e=a.Hb(b),0<=e?e=a.Ib(e):(e=a.S[b],null==e&&(e=Ba(b,a.na))),null!=e||d||a.i("invalid "+(c?c:"value")+": "+b)):d||a.i("missing "+(c||"value"));return e}
|
|
|
|
|
function Rf(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f=4,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++){g&&(g=","+g);var l=d&255,p=void 0,r=8,t="";r?32<r&&(r=32):r=32;for(var A=null==l||isNaN(l),w=p=p||r;0<r--;)w||(t=","+t,w=p),t=(A?"?":l&1?"1":"0")+t,l>>=1,w--;g=t+g;d>>=8}d=x(c,0,!0)+" "+c+". "+Ca(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.i((null!=b?b+": ":"")+d);return e}
|
|
|
|
|
function Tf(a,b){if(b)return Rf(a,b,a.S[b]);var c=0;for(b in a.S)Rf(a,b,a.S[b]),c++;return 0<c}function Sf(a,b){switch(a.na){case 8:a=Ca(b,NaN);break;case 10:a=b.toString();break;default:a=x(b,NaN)}return a}var Qf={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
|
|
|
|
function Uf(a){Lf.call(this,a);this.style=Vf;this.F=Wf();this.la=Wf();this.O=Wf();this.A=[];this.j=this.I=this.w=[];Xf(this);this.W=0;Yf(this);this.Z={};Zf(this,a.messages);this.ea=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return zc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return zc(b,a)})}ba(Uf,Lf);k=Uf.prototype;
|
|
|
|
|
k.Ea=function(a,b,c,d){this.H=b;this.u=c;this.R=a;(a=vc(a,"messages"))&&Zf(this,a);this.ga=$f;Ld(this,64,function(a){a:{var b=d.H.b,c=a[0],e=a=0,l=b.length;if(c){a=ag(bg(d,c));if(-1===a){d.i("invalid address: "+c);break a}e=a>>>d.H.g;l=1}d.i("blockid physical blockaddr used size type");d.i("-------- --------- ---------- ------ ------ ----");for(var c=-1,p=0;l--;){var r=b[e];r.type==c?p++||d.i("..."):(c=r.type,p=Cb[c],r&&d.i(x(r.id)+" %"+x(e<<d.H.g)+" %%"+x(r.J)+" "+y(r.nb)+" "+
|
|
|
|
|
y(r.size)+" "+p),c!=Yb&&(c=-1),p=0);a+=d.H.w;e++}}});sa(this)};
|
|
|
|
|
k.ca=function(a,b,c){var d=this;switch(b){case "debugInput":return this.U=this.P[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",zc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.b<d.g.length-1&&(b=d.g[++d.b])):40==a.keyCode&&(0<d.b?b=d.g[--d.b]:(b="",d.b=-1)),null!=b){var e=b.length;c.value=b;c.setSelectionRange(e,e)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.P[b]=c,fb(c,function(){if(d.U){var a=d.U.value;d.U.value=
|
|
|
|
|
"";zc(d,a,!0);return!0}return!1}),!0;case "step":return this.P[b]=c,fb(c,function(a){var b=!1;ua(d,!0)||(va(d,!0),b=cg(d,a?1:0),va(d,!1));return b}),!0}return!1};k.Ya=function(){this.U&&this.U.focus()};function ag(a){a=a&&a.J;null==a&&(a=-1);return a}k.Ga=function(a,b){var c=255,d=ag(a);-1!==d&&(c=Eb(this.H,d),b&&dg(a,b));return c};k.Cb=function(a,b){var c=65535,d=ag(a);-1!==d&&(c=Gb(this.H,d),b&&dg(a,b));return c};k.Tb=function(a,b,c){var d=ag(a);-1!==d&&(Hb(this.H,d,b),c&&dg(a,c),Ac(this.u,!0))};
|
|
|
|
|
k.wc=function(a,b,c){var d=ag(a);if(-1!==d){var e=this.H,f=d&e.j,g=(d&e.C)>>>e.g;f!=e.j?e.b[g].Pb(f,b&65535,d):(e.b[g++].ob(f,b&255,d),e.b[g&e.I].ob(0,b>>8&255,d+1));c&&dg(a,c);Ac(this.u,!0)}};function Wf(a){return{J:a,Da:!1}}function eg(a){return[a.J,a.Da]}function fg(a){return{J:a[0],Da:a[1]}}
|
|
|
|
|
function bg(a,b,c){var d;c=(c?a.F:a.la).J;if(void 0!==b){d=b=Of(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.A.length;c++){var f=a.A[c].ra[d];if(void 0!==f){d=f.o;void 0!==d&&(e=Wf(d));break}}if(d=e)return d;c=Nf(a,b,void 0)}null!=c&&(d=Wf(c));return d}function gg(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.rd=a.xb(b.nc=c[2]))}function dg(a,b){null!=a.J&&(a.J+=b||1)}function hg(a){return x(a,4)}
|
|
|
|
|
function ig(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.Ga(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Zf(a,b){a.K=a;a.ha=a.ud=536870912;a.V=null;a.X=[];b=a.xb(b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in tb)0<=Ra(b,c)&&(a.ha|=tb[c],a.i(c+" messages enabled"))}function Ld(a,b,c){for(var d in tb)if(b==tb[d]){a.Z[d]=c;break}}
|
|
|
|
|
k.Hb=function(a,b){var c;a=a.toUpperCase();null==b?c=Ra(jg,a):(c=Ra(jg,a.substr(b,2)),0>c&&(c=Ra(jg,a.substr(b,1))));return c};function Hg(a,b){var c=0;a=a.Ib(b);if(void 0!==a)switch(b){case Jg:case Kg:case Lg:case Mg:case Ng:case Og:case Pg:case Qg:c=2;break;case Rg:case Sg:case Tg:case Ug:case Vg:case Wg:case Xg:c=4}return c?x(a,c):"??"}
|
|
|
|
|
k.Ib=function(a){var b;if(0<=a){var c=this.u;switch(a){case Jg:b=c.g;break;case Kg:b=c.w;break;case Lg:b=c.A;break;case Rg:b=Vc(c);break;case Mg:b=c.B;break;case Ng:b=c.C;break;case Sg:b=id(c);break;case Og:b=c.D;break;case Pg:b=c.F;break;case Tg:b=D(c);break;case Qg:b=F(c,D(c));break;case Ug:b=c.M;break;case Vg:b=c.j;break;case Wg:b=Tc(c);break;case Xg:b=Tc(c)&255|c.g<<8}}return b};
|
|
|
|
|
function Yg(a,b){b=Of(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.Hb(b,c+1),0<=e&&(b=b.substr(0,c)+Hg(a,e)+b.substr(c+1+jg[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=Ba(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=bg(a,e))?(d=e+' "'+ig(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=bg(a,e))?(dg(d),d=e+
|
|
|
|
|
' "'+ig(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}k.message=function(a,b){b&&(a+=" at "+hg(Wf(this.u.j).J));this.ha&1073741824?this.X.push(a):this.V&&a==this.V||(this.V=a,this.ha&-2147483648&&(this.da(),a+=" (cpu halted)"),this.i(a),this.u&&(a=this.u,Jc(a),a.wa=0,Ac(a)))};
|
|
|
|
|
function za(a,b,c,d,e,f,g,h){h|=256;null!=f&&(a.ha&h)!=h||a.message(b.ab+"."+(null!=d?"outPort":"inPort")+"("+y(c)+","+(f?f:"unknown")+(null!=d?","+Da(d):"")+")"+(null!=g?": "+Da(g):"")+(null!=e?" at "+hg(e):""))}
|
|
|
|
|
function Yf(a){var b;if(Dd(a)){if(!a.D||!a.D.length){a.D=Array(Zg);for(b=0;b<a.D.length;b++)a.D[b]=Wf();a.T=0;a.i("instruction history buffer allocated")}if(!a.B||!a.B.length)for(a.B=Array(256),b=0;b<a.B.length;b++)a.B[b]=[b,0]}else a.D&&a.D.length&&a.i("instruction history buffer freed"),a.T=0,a.D=[],a.B=[]}function $g(a,b){if(!ah(a))return!1;a.u.rb(b);return!0}
|
|
|
|
|
function cg(a,b,c,d){if(!ah(a))return!1;a.C=0;b||Dd(a)&&Ed(a,a.u.j,0);try{var e=a.u.Bb(b);0<e&&(a.C+=e,Ec(a.u,e,!0),Bc(a.u,e),a.N++)}catch(f){"number"!=typeof f&&(a.C=0,qa(a.u,f.stack||f.message))}!1!==d&&Ac(a.u);yc(a,c||!1);return 0<a.C}k.da=function(a){this.u&&this.u.da(a)};function yc(a,b){void 0===b&&(b=!0);a.F=Wf(a.u.j);b&&1!=a.M?bh(a):ch(a)}
|
|
|
|
|
function ah(a){var b;if(b=a.u&&ra(a.u))b=a.u,b.G.ja?b=!0:(b.i(b.toString()+" not powered"),b=!1);b&&!ua(a.u)?(a=a.u,a.G.error?(a.i(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}k.va=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};k.ua=function(a,b){b&&this.i(a?"suspending":"shutting down");return a?this.save():!0};k.reset=function(a){Yf(this);this.N=this.Y=0;this.V=null;this.C=0;this.F=Wf(this.u.j);this.G.ka=!1;dh(this);a||yc(this)};
|
|
|
|
|
k.save=function(){var a=new Uc(this);a.set(0,eg(this.F));a.set(1,eg(this.O));a.set(2,[this.g,this.L,this.ha]);a.set(3,this.A);return a.data()};k.restore=function(a){var b=0;void 0!==a[2]&&(this.F=fg(a[b++]),this.O=fg(a[b++]),this.g=a[b][0],"string"==typeof this.g&&(this.g=[this.g]),this.L=a[b][1],this.ha|=a[b][2]);a[3]&&(this.A=a[3]);return!0};k.start=function(a,b){this.M||this.i("running");this.G.ka=!0;this.wa=a;this.ya=b};
|
|
|
|
|
k.stop=function(a,b){if(this.G.ka){this.G.ka=!1;this.C=b-this.ya;if(!this.M){b="stopped";if(this.C){a-=this.wa;var c=0<a?Math.round(1E3*this.C/a):0;b+=" (";Dd(this)&&(b+=this.N+" opcodes, ",this.Y-=this.N,this.N=0);b+=this.C+" cycles, "+a+" ms, "+c+" hz)"}else wa(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.i(b)}yc(this,!0);this.Ya();dh(this,this.u.j)}};function Dd(a){return 1<a.j.length||!!a.W}
|
|
|
|
|
function Ed(a,b,c){var d=a.u;if(0<c&&(a.W&&!--a.W||sc(a,b,1,a.j)))return!0;0<=c&&a.B.length&&(a.N++,b=Eb(a.H,b),null!=b&&(a.B[b][1]++,b=a.D[a.T],b.J=d.j,b.Da=!1,++a.T==a.D.length&&(a.T=0)));return!1}function Pb(a,b,c){a.i("break on input from port "+y(b)+": "+x(c));a.da(!0)}function Tb(a,b,c){a.i("break on output to port "+y(b)+": "+x(c));a.da(!0)}
|
|
|
|
|
function Xf(a){var b,c;a.j=["bp"];if(a.I)for(b=1;b<a.I.length;b++){c=a.I[b];var d=a.H;rc(d.b[ag(c)>>>d.g],!1)}a.I=["br"];if(a.w)for(b=1;b<a.w.length;b++)c=a.w[b],d=a.H,rc(d.b[ag(c)>>>d.g],!0);a.w=["bw"];a.oa=0}k.Pa=function(a,b,c){var d=!0;c||eh(this,a,b,!1,!0);if(a!=this.j){var e=ag(b);if(-1===e)this.i("invalid address: "+hg(b.J)),d=!1;else{var f=this.H;f.b[e>>>f.g].Pa(e&f.j,a==this.w)}}d&&(a.push(b),c?b.Da=!0:(fh(this,a,a.length-1,"set"),Yf(this)));return d};
|
|
|
|
|
function eh(a,b,c,d,e){var f=!1;c=ag(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==ag(h)&&(!d||h.Da)){f=!0;h.Da||e||fh(a,b,g,"cleared");b.splice(g,1);b!=a.j&&(d=a.H,rc(d.b[c>>>d.g],b==a.w));h.Da||Yf(a);break}}return f}function gh(a,b){for(var c=1;c<b.length;c++)fh(a,b,c);return b.length-1}function fh(a,b,c,d){c=b[c];a.i(b[0]+" "+hg(c.J)+(d?" "+d:c.nc?' "'+c.nc+'"':""))}
|
|
|
|
|
function dh(a,b){if(void 0!==b)sc(a,b,1,a.j,!0),a.M=0;else for(b=1;b<a.j.length;b++){var c=a.j[b];if(c.Da){if(!eh(a,a.j,c,!0))break;b=0}}}
|
|
|
|
|
function sc(a,b,c,d,e){var f=!1;if(!a.oa++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.Da)for(var l=ag(h),p=0;p<c;p++)if(b+p==l){var r,f=!0;h.Da&&(eh(a,d,h,!0),e=!0);if(r=h.rd){for(var f=!1,t=0;t<r.length;t++)if(!hh(a,r[t],!0)){if(r[t].indexOf("if")){f=!0;break}for(var A=t+1;A<r.length&&r[A].indexOf("else");A++)t++;if(A==r.length){f=!0;break}}a.u.G.ka||(f=!0)}if(f){e||fh(a,d,g,"hit");break}}}a.oa--;return f}
|
|
|
|
|
function ih(a,b,c,d){for(var e=Wf(b.J),f=a.Ga(b,1),g=a.ga[f],h="",l=(a.style!=jh?kh:lh)[g[0]],p=g.length-1,r=mh,t,A=1;A<=p;A++){var w="";t=g[A];if(void 0!==t&&!(t&O&&a.style==Vf)){var u=t&nh;if(u){var B=t&oh;B?r=B:t|=r;t&ph||(t|=1==A?qh:rh);if(u&P)a:{w=a;u=t;B=b;switch(u&oh){case Q:B=x(w.Ga(B,1),2);break;case sh:B=x(w.Ga(B,1)<<24>>24,4);break;case th:B=x(w.Cb(B,2),4);break;default:w="imm("+y(u)+")";break a}w.style==jh&&u&uh?B="["+B+"]":u&vh||(B=(w.style==Vf?"$":"0x")+B);w=B}else u&vh?(w=(t&wh)>>8,
|
|
|
|
|
u=jg[w],a.style==jh&&t&uh&&(w==Qg&&(u="HL"),u="["+u+"]"),w=u):u&xh&&(w=(f>>3&7).toString());if(!w||!w.length){h="INVALID";break}0<h.length&&(h+=",");h+=w||"???"}}}f="";g=hg(e.J)+" ";if(-1!==e.J&&-1!==b.J){do if(f+=x(a.Ga(e,1),2),null==e.J)break;while(e.J!=b.J)}g+=Ka(f,10);g+=t&yh?"*":" ";g+=Ka(l,7);h&&(g+=" "+h);c&&(g=Ka(g,40)+";"+c,g=a.u.G.Va?g+("cycles="+Cc(a.u).toString()+" cs="+x(a.u.ya)):g+(null!=d?"="+d.toString():""));return g}
|
|
|
|
|
function zh(a,b){switch(b){case "IF":a=a.u.N&512;break;case "SF":a=qd(a.u);break;case "ZF":a=pd(a.u);break;case "AF":a=od(a.u);break;case "PF":a=nd(a.u);break;case "CF":a=ld(a.u);break;default:a=0}return b.charAt(0)+(a?"1":"0")+" "}function Ah(a,b){return jg[b]+"="+Hg(a,b)+" "}function Bh(a){return Ah(a,Jg)+Ah(a,Rg)+Ah(a,Sg)+Ah(a,Tg)+Ah(a,Ug)+zh(a,"IF")+zh(a,"SF")+zh(a,"ZF")+zh(a,"AF")+zh(a,"PF")+zh(a,"CF")}k.ec=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
|
|
|
|
function Ch(a,b,c){var d=[],e=ag(b)>>>0;for(b=0;b<a.A.length;b++){var f=a.A[b],g=f.J>>>0,h=f.Hd;if(e>=g&&e<g+h){e=Pa(f.dc,[e-g],a.ec);0<=e?Dh(a,b,e,d):c&&(e=~e,Dh(a,b,e-1,d),Dh(a,b,e,d));break}}return d}function Dh(a,b,c,d){var e={},f=a.A[b].dc,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.A[b].ra[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}
|
|
|
|
|
function Eh(a,b){if("?"==b)a.i("frequency commands:"),a.i("\tclear\tclear all frequency counts");else{var c=0;if(a.B)if("clear"==b){for(b=0;b<a.B.length;b++)a.B[b]=[b,0];a.i("frequency data cleared");c++}else if(void 0!==b)a.i("unknown frequency command: "+b),c++;else{var d=a.B.slice();d.sort(function(a,b){return b[1]-a[1]});var e=a.style!=jh?kh:lh;for(b=0;b<d.length;b++){var f=d[b][0],g=d[b][1];g&&(a.i((e[a.ga[f][0]]+" ").substr(0,5)+" ("+Da(f)+"): "+g+" times"),c++)}}c||a.i("no frequency data available")}}
|
|
|
|
|
function Fh(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Tf(a)||a.i("no variables"),!0;if(!c[2])return Tf(a,c[1]);if(!c[3])return delete a.S[c[1]],!0;b=Nf(a,c[3]);return void 0!==b?(a.S[c[1]]=b,!0):!1}a.i("invalid assignment:"+b);return!1}
|
|
|
|
|
function Gh(a,b,c){var d=null;if(b=bg(a,b,!0)){var e=Ch(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.J-e[1])&&(g=" + "+y(f)),f=e[0]+" ("+hg(e[1])+")"+g,c&&a.i(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.J)&&(g=" - "+y(f)),f=e[4]+" ("+hg(e[5])+")"+g,c&&a.i(f),d||(d=f))}else c&&a.i("no symbols")}return d}
|
|
|
|
|
function Hh(a,b){switch(b[1]){case "8080":a.style=Vf;break;case "8086":a.style=jh;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.u.na=c;break;case "start":a.u.za=c;break;case "stop":a.u.sa=c;break;default:a.i("unknown cs option");return}void 0!==c&&xc(a.u);a.i("checksums "+(a.u.G.Va?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Dc(a.u,+b[2])||a.i("warning: using 1x multiplier, previous target not reached"));a.i("target speed: "+(a.u.Z.toFixed(2)+"Mhz")+" ("+a.u.U+
|
|
|
|
|
function Qf(a,b,c){var d;if(b){b=Rf(a,b);for(var e=0,f=!1,g=b,h=[],m=[],r=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<r.length;){var u=r[e++],v=u.length,u=Ma(u);if(!u){f=!0;break}u=Sf(a,u,null,!1===c);if(void 0===u){f=!0;c=!1;break}h.push(u);if(e==r.length)break;var u=r[e++],B=u.length;m.length&&Tf[u]<Tf[m[m.length-1]]&&Pf(h,m,1);m.push(u);b=b.substr(v+B)}Pf(h,m)&&1==h.length||(f=!0);f?c&&a.i("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),c&&Uf(a,null,
|
|
|
|
|
d))}return d}function Rf(a,b){for(var c,d=/\{(.*?)\}/;(c=b.match(d))&&!(0<=c[1].indexOf("{"));){var e=Qf(a,c[1]);b=b.replace("{"+c[1]+"}",null!=e?Vf(a,e):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)b=b.replace("["+c[1]+"]","unimplemented");for(;c=b.match(/\$([a-z]+)/i);){d=null;switch(c[1].toLowerCase()){case "ops":d=a.N-a.Y}if(null==d)break;b=b.replace(c[0],d.toString())}return b}
|
|
|
|
|
function Sf(a,b,c,d){var e;null!=b?(e=a.Kb(b),0<=e?e=a.Lb(e):(e=a.S[b],null==e&&(e=Ba(b,a.na))),null!=e||d||a.i("invalid "+(c?c:"value")+": "+b)):d||a.i("missing "+(c||"value"));return e}
|
|
|
|
|
function Uf(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f=4,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++){g&&(g=","+g);var m=d&255,r=void 0,u=8,v="";u?32<u&&(u=32):u=32;for(var B=null==m||isNaN(m),y=r=r||u;0<u--;)y||(v=","+v,y=r),v=(B?"?":m&1?"1":"0")+v,m>>=1,y--;g=v+g;d>>=8}d=t(c,0,!0)+" "+c+". "+Da(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.i((null!=b?b+": ":"")+d);return e}
|
|
|
|
|
function Wf(a,b){if(b)return Uf(a,b,a.S[b]);var c=0;for(b in a.S)Uf(a,b,a.S[b]),c++;return 0<c}function Vf(a,b){switch(a.na){case 8:a=Da(b,NaN);break;case 10:a=b.toString();break;default:a=t(b,NaN)}return a}var Tf={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
|
|
|
|
function Xf(a){Of.call(this,a);this.style=Yf;this.F=Zf();this.la=Zf();this.O=Zf();this.A=[];this.j=this.I=this.w=[];$f(this);this.W=0;ag(this);this.Z={};bg(this,a.messages);this.ea=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Ac(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Ac(b,a)})}aa(Xf,Of);k=Xf.prototype;
|
|
|
|
|
k.Ea=function(a,b,c,d){this.H=b;this.u=c;this.R=a;(a=wc(a,"messages"))&&bg(this,a);this.ga=cg;Nd(this,64,function(a){a:{var b=d.H.b,c=a[0],e=a=0,m=b.length;if(c){a=dg(eg(d,c));if(-1===a){d.i("invalid address: "+c);break a}e=a>>>d.H.g;m=1}d.i("blockid physical blockaddr used size type");d.i("-------- --------- ---------- ------ ------ ----");for(var c=-1,r=0;m--;){var u=b[e];u.type==c?r++||d.i("..."):(c=u.type,r=Db[c],u&&d.i(t(u.id)+" %"+t(e<<d.H.g)+" %%"+t(u.J)+" "+x(u.pb)+" "+
|
|
|
|
|
x(u.size)+" "+r),c!=Zb&&(c=-1),r=0);a+=d.H.w;e++}}});ta(this)};
|
|
|
|
|
k.ca=function(a,b,c){var d=this;switch(b){case "debugInput":return this.U=this.P[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Ac(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.b<d.g.length-1&&(b=d.g[++d.b])):40==a.keyCode&&(0<d.b?b=d.g[--d.b]:(b="",d.b=-1)),null!=b){var e=b.length;c.value=b;c.setSelectionRange(e,e)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.P[b]=c,gb(c,function(){if(d.U){var a=d.U.value;d.U.value=
|
|
|
|
|
"";Ac(d,a,!0);return!0}return!1}),!0;case "step":return this.P[b]=c,gb(c,function(a){var b=!1;ua(d,!0)||(wa(d,!0),b=fg(d,a?1:0),wa(d,!1));return b}),!0}return!1};k.Za=function(){this.U&&this.U.focus()};function dg(a){a=a&&a.J;null==a&&(a=-1);return a}k.Ga=function(a,b){var c=255,d=dg(a);-1!==d&&(c=Fb(this.H,d),b&&gg(a,b));return c};k.Gb=function(a,b){var c=65535,d=dg(a);-1!==d&&(c=Hb(this.H,d),b&&gg(a,b));return c};k.Xb=function(a,b,c){var d=dg(a);-1!==d&&(Ib(this.H,d,b),c&&gg(a,c),Bc(this.u,!0))};
|
|
|
|
|
k.Qc=function(a,b,c){var d=dg(a);if(-1!==d){var e=this.H,f=d&e.j,g=(d&e.C)>>>e.g;f!=e.j?e.b[g].Sb(f,b&65535,d):(e.b[g++].qb(f,b&255,d),e.b[g&e.I].qb(0,b>>8&255,d+1));c&&gg(a,c);Bc(this.u,!0)}};function Zf(a){return{J:a,Da:!1}}function hg(a){return[a.J,a.Da]}function ig(a){return{J:a[0],Da:a[1]}}
|
|
|
|
|
function eg(a,b,c){var d;c=(c?a.F:a.la).J;if(void 0!==b){d=b=Rf(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.A.length;c++){var f=a.A[c].ra[d];if(void 0!==f){d=f.o;void 0!==d&&(e=Zf(d));break}}if(d=e)return d;c=Qf(a,b,void 0)}null!=c&&(d=Zf(c));return d}function jg(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.sd=a.Ab(b.Jc=c[2]))}function gg(a,b){null!=a.J&&(a.J+=b||1)}function kg(a){return t(a,4)}
|
|
|
|
|
function lg(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.Ga(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function bg(a,b){a.K=a;a.ha=a.wd=536870912;a.V=null;a.X=[];b=a.Ab(b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in tb)0<=Sa(b,c)&&(a.ha|=tb[c],a.i(c+" messages enabled"))}function Nd(a,b,c){for(var d in tb)if(b==tb[d]){a.Z[d]=c;break}}
|
|
|
|
|
k.Kb=function(a,b){var c;a=a.toUpperCase();null==b?c=Sa(mg,a):(c=Sa(mg,a.substr(b,2)),0>c&&(c=Sa(mg,a.substr(b,1))));return c};function Kg(a,b){var c=0;a=a.Lb(b);if(void 0!==a)switch(b){case Mg:case Ng:case Og:case Pg:case Qg:case Rg:case Sg:case Tg:c=2;break;case Ug:case Vg:case Wg:case Xg:case Yg:case Zg:case $g:c=4}return c?t(a,c):"??"}
|
|
|
|
|
k.Lb=function(a){var b;if(0<=a){var c=this.u;switch(a){case Mg:b=c.g;break;case Ng:b=c.w;break;case Og:b=c.A;break;case Ug:b=Wc(c);break;case Pg:b=c.B;break;case Qg:b=c.C;break;case Vg:b=jd(c);break;case Rg:b=c.D;break;case Sg:b=c.F;break;case Wg:b=D(c);break;case Tg:b=E(c,D(c));break;case Xg:b=c.M;break;case Yg:b=c.j;break;case Zg:b=Uc(c);break;case $g:b=Uc(c)&255|c.g<<8}}return b};
|
|
|
|
|
function ah(a,b){b=Rf(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.Kb(b,c+1),0<=e&&(b=b.substr(0,c)+Kg(a,e)+b.substr(c+1+mg[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=Ba(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=eg(a,e))?(d=e+' "'+lg(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=eg(a,e))?(gg(d),d=e+
|
|
|
|
|
' "'+lg(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}k.message=function(a,b){b&&(a+=" at "+kg(Zf(this.u.j).J));this.ha&1073741824?this.X.push(a):this.V&&a==this.V||(this.V=a,this.ha&-2147483648&&(this.da(),a+=" (cpu halted)"),this.i(a),this.u&&(a=this.u,Kc(a),a.wa=0,Bc(a)))};
|
|
|
|
|
function za(a,b,c,d,e,f,g,h){h|=256;null!=f&&(a.ha&h)!=h||a.message(b.cb+"."+(null!=d?"outPort":"inPort")+"("+x(c)+","+(f?f:"unknown")+(null!=d?","+Ea(d):"")+")"+(null!=g?": "+Ea(g):"")+(null!=e?" at "+kg(e):""))}
|
|
|
|
|
function ag(a){var b;if(Fd(a)){if(!a.D||!a.D.length){a.D=Array(bh);for(b=0;b<a.D.length;b++)a.D[b]=Zf();a.T=0;a.i("instruction history buffer allocated")}if(!a.B||!a.B.length)for(a.B=Array(256),b=0;b<a.B.length;b++)a.B[b]=[b,0]}else a.D&&a.D.length&&a.i("instruction history buffer freed"),a.T=0,a.D=[],a.B=[]}function ch(a,b){if(!dh(a))return!1;a.u.tb(b);return!0}
|
|
|
|
|
function fg(a,b,c,d){if(!dh(a))return!1;a.C=0;b||Fd(a)&&Gd(a,a.u.j,0);try{var e=a.u.Eb(b);0<e&&(a.C+=e,Fc(a.u,e,!0),Cc(a.u,e),a.N++)}catch(f){"number"!=typeof f&&(a.C=0,ra(a.u,f.stack||f.message))}!1!==d&&Bc(a.u);zc(a,c||!1);return 0<a.C}k.da=function(a){this.u&&this.u.da(a)};function zc(a,b){void 0===b&&(b=!0);a.F=Zf(a.u.j);b&&1!=a.M?eh(a):fh(a)}
|
|
|
|
|
function dh(a){var b;if(b=a.u&&sa(a.u))b=a.u,b.G.ja?b=!0:(b.i(b.toString()+" not powered"),b=!1);b&&!ua(a.u)?(a=a.u,a.G.error?(a.i(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}k.va=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};k.ua=function(a,b){b&&this.i(a?"suspending":"shutting down");return a?this.save():!0};k.reset=function(a){ag(this);this.N=this.Y=0;this.V=null;this.C=0;this.F=Zf(this.u.j);this.G.ka=!1;gh(this);a||zc(this)};
|
|
|
|
|
k.save=function(){var a=new Vc(this);a.set(0,hg(this.F));a.set(1,hg(this.O));a.set(2,[this.g,this.L,this.ha]);a.set(3,this.A);return a.data()};k.restore=function(a){var b=0;void 0!==a[2]&&(this.F=ig(a[b++]),this.O=ig(a[b++]),this.g=a[b][0],"string"==typeof this.g&&(this.g=[this.g]),this.L=a[b][1],this.ha|=a[b][2]);a[3]&&(this.A=a[3]);return!0};k.start=function(a,b){this.M||this.i("running");this.G.ka=!0;this.wa=a;this.ya=b};
|
|
|
|
|
k.stop=function(a,b){if(this.G.ka){this.G.ka=!1;this.C=b-this.ya;if(!this.M){b="stopped";if(this.C){a-=this.wa;var c=0<a?Math.round(1E3*this.C/a):0;b+=" (";Fd(this)&&(b+=this.N+" opcodes, ",this.Y-=this.N,this.N=0);b+=this.C+" cycles, "+a+" ms, "+c+" hz)"}else xa(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.i(b)}zc(this,!0);this.Za();gh(this,this.u.j)}};function Fd(a){return 1<a.j.length||!!a.W}
|
|
|
|
|
function Gd(a,b,c){var d=a.u;if(0<c&&(a.W&&!--a.W||tc(a,b,1,a.j)))return!0;0<=c&&a.B.length&&(a.N++,b=Fb(a.H,b),null!=b&&(a.B[b][1]++,b=a.D[a.T],b.J=d.j,b.Da=!1,++a.T==a.D.length&&(a.T=0)));return!1}function Qb(a,b,c){a.i("break on input from port "+x(b)+": "+t(c));a.da(!0)}function Ub(a,b,c){a.i("break on output to port "+x(b)+": "+t(c));a.da(!0)}
|
|
|
|
|
function $f(a){var b,c;a.j=["bp"];if(a.I)for(b=1;b<a.I.length;b++){c=a.I[b];var d=a.H;jc(d.b[dg(c)>>>d.g],!1)}a.I=["br"];if(a.w)for(b=1;b<a.w.length;b++)c=a.w[b],d=a.H,jc(d.b[dg(c)>>>d.g],!0);a.w=["bw"];a.oa=0}k.Pa=function(a,b,c){var d=!0;c||hh(this,a,b,!1,!0);if(a!=this.j){var e=dg(b);if(-1===e)this.i("invalid address: "+kg(b.J)),d=!1;else{var f=this.H;f.b[e>>>f.g].Pa(e&f.j,a==this.w)}}d&&(a.push(b),c?b.Da=!0:(ih(this,a,a.length-1,"set"),ag(this)));return d};
|
|
|
|
|
function hh(a,b,c,d,e){var f=!1;c=dg(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==dg(h)&&(!d||h.Da)){f=!0;h.Da||e||ih(a,b,g,"cleared");b.splice(g,1);b!=a.j&&(d=a.H,jc(d.b[c>>>d.g],b==a.w));h.Da||ag(a);break}}return f}function jh(a,b){for(var c=1;c<b.length;c++)ih(a,b,c);return b.length-1}function ih(a,b,c,d){c=b[c];a.i(b[0]+" "+kg(c.J)+(d?" "+d:c.Jc?' "'+c.Jc+'"':""))}
|
|
|
|
|
function gh(a,b){if(void 0!==b)tc(a,b,1,a.j,!0),a.M=0;else for(b=1;b<a.j.length;b++){var c=a.j[b];if(c.Da){if(!hh(a,a.j,c,!0))break;b=0}}}
|
|
|
|
|
function tc(a,b,c,d,e){var f=!1;if(!a.oa++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.Da)for(var m=dg(h),r=0;r<c;r++)if(b+r==m){var u,f=!0;h.Da&&(hh(a,d,h,!0),e=!0);if(u=h.sd){for(var f=!1,v=0;v<u.length;v++)if(!kh(a,u[v],!0)){if(u[v].indexOf("if")){f=!0;break}for(var B=v+1;B<u.length&&u[B].indexOf("else");B++)v++;if(B==u.length){f=!0;break}}a.u.G.ka||(f=!0)}if(f){e||ih(a,d,g,"hit");break}}}a.oa--;return f}
|
|
|
|
|
function lh(a,b,c,d){for(var e=Zf(b.J),f=a.Ga(b,1),g=a.ga[f],h="",m=(a.style!=mh?nh:oh)[g[0]],r=g.length-1,u=ph,v,B=1;B<=r;B++){var y="";v=g[B];if(void 0!==v&&!(v&O&&a.style==Yf)){var w=v&qh;if(w){var C=v&rh;C?u=C:v|=u;v&sh||(v|=1==B?th:uh);if(w&P)a:{y=a;w=v;C=b;switch(w&rh){case Q:C=t(y.Ga(C,1),2);break;case vh:C=t(y.Ga(C,1)<<24>>24,4);break;case wh:C=t(y.Gb(C,2),4);break;default:y="imm("+x(w)+")";break a}y.style==mh&&w&xh?C="["+C+"]":w&yh||(C=(y.style==Yf?"$":"0x")+C);y=C}else w&yh?(y=(v&zh)>>8,
|
|
|
|
|
w=mg[y],a.style==mh&&v&xh&&(y==Tg&&(w="HL"),w="["+w+"]"),y=w):w&Ah&&(y=(f>>3&7).toString());if(!y||!y.length){h="INVALID";break}0<h.length&&(h+=",");h+=y||"???"}}}f="";g=kg(e.J)+" ";if(-1!==e.J&&-1!==b.J){do if(f+=t(a.Ga(e,1),2),null==e.J)break;while(e.J!=b.J)}g+=La(f,10);g+=v&Bh?"*":" ";g+=La(m,7);h&&(g+=" "+h);c&&(g=La(g,40)+";"+c,g=a.u.G.Wa?g+("cycles="+Dc(a.u).toString()+" cs="+t(a.u.ya)):g+(null!=d?"="+d.toString():""));return g}
|
|
|
|
|
function Ch(a,b){switch(b){case "IF":a=a.u.N&512;break;case "SF":a=rd(a.u);break;case "ZF":a=qd(a.u);break;case "AF":a=pd(a.u);break;case "PF":a=od(a.u);break;case "CF":a=md(a.u);break;default:a=0}return b.charAt(0)+(a?"1":"0")+" "}function Dh(a,b){return mg[b]+"="+Kg(a,b)+" "}function Eh(a){return Dh(a,Mg)+Dh(a,Ug)+Dh(a,Vg)+Dh(a,Wg)+Dh(a,Xg)+Ch(a,"IF")+Ch(a,"SF")+Ch(a,"ZF")+Ch(a,"AF")+Ch(a,"PF")+Ch(a,"CF")}k.Ac=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
|
|
|
|
function Fh(a,b,c){var d=[],e=dg(b)>>>0;for(b=0;b<a.A.length;b++){var f=a.A[b],g=f.J>>>0,h=f.Qd;if(e>=g&&e<g+h){e=Qa(f.zc,[e-g],a.Ac);0<=e?Gh(a,b,e,d):c&&(e=~e,Gh(a,b,e-1,d),Gh(a,b,e,d));break}}return d}function Gh(a,b,c,d){var e={},f=a.A[b].zc,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.A[b].ra[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}
|
|
|
|
|
function Hh(a,b){if("?"==b)a.i("frequency commands:"),a.i("\tclear\tclear all frequency counts");else{var c=0;if(a.B)if("clear"==b){for(b=0;b<a.B.length;b++)a.B[b]=[b,0];a.i("frequency data cleared");c++}else if(void 0!==b)a.i("unknown frequency command: "+b),c++;else{var d=a.B.slice();d.sort(function(a,b){return b[1]-a[1]});var e=a.style!=mh?nh:oh;for(b=0;b<d.length;b++){var f=d[b][0],g=d[b][1];g&&(a.i((e[a.ga[f][0]]+" ").substr(0,5)+" ("+Ea(f)+"): "+g+" times"),c++)}}c||a.i("no frequency data available")}}
|
|
|
|
|
function Ih(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Wf(a)||a.i("no variables"),!0;if(!c[2])return Wf(a,c[1]);if(!c[3])return delete a.S[c[1]],!0;b=Qf(a,c[3]);return void 0!==b?(a.S[c[1]]=b,!0):!1}a.i("invalid assignment:"+b);return!1}
|
|
|
|
|
function Jh(a,b,c){var d=null;if(b=eg(a,b,!0)){var e=Fh(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.J-e[1])&&(g=" + "+x(f)),f=e[0]+" ("+kg(e[1])+")"+g,c&&a.i(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.J)&&(g=" - "+x(f)),f=e[4]+" ("+kg(e[5])+")"+g,c&&a.i(f),d||(d=f))}else c&&a.i("no symbols")}return d}
|
|
|
|
|
function Kh(a,b){switch(b[1]){case "8080":a.style=Yf;break;case "8086":a.style=mh;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.u.na=c;break;case "start":a.u.za=c;break;case "stop":a.u.sa=c;break;default:a.i("unknown cs option");return}void 0!==c&&yc(a.u);a.i("checksums "+(a.u.G.Wa?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Ec(a.u,+b[2])||a.i("warning: using 1x multiplier, previous target not reached"));a.i("target speed: "+(a.u.Z.toFixed(2)+"Mhz")+" ("+a.u.U+
|
|
|
|
|
"x)");return;case "?":a.i("debugger options:");a.i("\t8080\t\tselect 8080-style mnemonics");a.i("\t8086\t\tselect 8086-style mnemonics");a.i("\tcs int #\tset checksum cycle interval to #");a.i("\tcs start #\tset checksum cycle start count to #");a.i("\tcs stop #\tset checksum cycle stop count to #");a.i("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.i("unknown option: "+b[1]);return}}a.i(a.style+"-style mnemonics enabled")}
|
|
|
|
|
function bh(a,b){var c;if(b&&"?"==b[1])a.i("register commands:"),a.i("\tr\tdump registers"),a.i("\trx [#]\tset flag or register x to [#]");else{var d=a.u;null==c&&(c=!0);if(b&&1<b.length){var e=b[1],f=e.indexOf("=");if(0<f)b=e.substr(f+1),e=e.substr(0,f);else if(2<b.length)b=b[2];else{a.i("missing value for "+b[1]);return}f=Nf(a,b);if(void 0===f)return;switch(e.toUpperCase()){case "A":d.g=f&255;break;case "B":d.w=f&255;break;case "BC":d.w=f>>8&255;case "C":d.A=f&255;break;case "D":d.B=f&255;break;
|
|
|
|
|
case "DE":d.B=f>>8&255;case "E":d.C=f&255;break;case "H":d.D=f&255;break;case "HL":d.D=f>>8&255;case "L":d.F=f&255;break;case "SP":d.M=f&65535;break;case "PC":C(d,f);a.F=Wf(d.j);break;case "PS":Rc(d,f);break;case "PSW":Rc(d,f&255|d.N&-256);d.g=f>>8;break;case "CF":d.I=f?d.I|256:d.I&255;break;case "PF":f?nd(d)||(d.L^=1):nd(d)&&(d.L^=1);break;case "AF":d.O=f?~d.L&16|d.O&-17:d.L&16|d.O&-17;break;case "ZF":d.I=f?d.I&-256:d.I|255;break;case "SF":f?qd(d)||(d.L^=192):qd(d)&&(d.L^=192);break;case "IF":d.N=
|
|
|
|
|
f?d.N|512:d.N&-513;break;default:a.i("unknown register: "+e);return}Ac(d);a.i("updated registers:")}a.i(Bh(a));c&&(a.F=Wf(d.j),ch(a,hg(a.F.J)))}}function Ih(a,b){b=Na(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.i(Yg(a,c[2])):Nf(a,b,!0)}function Jh(a,b,c){var d="t"!=b;c=Pf(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);eb(c,function(){return va(a,!0)&&cg(a,e,d,!1)},function(){Ac(a.u);va(a,!1)})}
|
|
|
|
|
function ch(a,b,c,d){if(b=bg(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=bg(a,c,!0);if(!d||d.J<b.J)return;e=d.J-b.J;if(256<e){a.i("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=ua(a,!1)||a.M?a.C:null;var g=null!=f?"cycles":null,h=Ch(a,b),l=b.J;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var p=h[0]+":";h[2]&&(p+=" "+h[2]);a.i(p)}h[3]&&(g=h[3],f=null);f=ih(a,b,g,f);a.i(f);a.F=b;e-=b.J-l;c++}}}
|
|
|
|
|
k.xb=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.L?a="end":a=this.g[this.b+1];b=[];if(a){a=a.toLowerCase().replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(Na(a.substring(d,f))),d=f+1}}return b};
|
|
|
|
|
function hh(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.i(">> "+b):(a.L&&(a.i("ended assemble at "+hg(a.O.J)),a.F=a.O,a.L=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.V=null;if(ra(a)&&0<b.length){a.L&&(b="a "+hg(a.O.J)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var g=f[0],h=g.charAt(0),l=1;l<g.length;l++){var p=g.charAt(l);if("?"==h||"r"==h||"a">p||"z"<p){f[0]=g.substr(l);f.unshift(g.substr(0,l));break}}switch(f[0].charAt(0)){case "a":var r=bg(a,f[1],!0);if(r)if(a.O=
|
|
|
|
|
r,void 0===f[2])a.i("begin assemble at "+hg(r.J)),a.L=!0,Ac(a.u);else{var t;a.i("not supported yet");t=[];if(t.length){for(var A=0;A<t.length;A++)a.Tb(r,t[A],1);a.i(ih(a,a.O))}}break;case "b":a:{var w=f[0],u=f[1],B=b;if("?"==u)a.i("breakpoint commands:"),a.i("\tbi [p]\ttoggle break on input port [p]"),a.i("\tbo [p]\ttoggle break on output port [p]"),a.i("\tbp [a]\tset exec breakpoint at addr [a]"),a.i("\tbr [a]\tset read breakpoint at addr [a]"),a.i("\tbw [a]\tset write breakpoint at addr [a]"),a.i("\tbc [a]\tclear breakpoint at addr [a]"),
|
|
|
|
|
a.i("\tbl\tlist all breakpoints"),a.i("\tbn [n]\tbreak after [n] instruction(s)");else{var S=w.charAt(1);if("l"==S){var ya;ya=0+gh(a,a.j);ya+=gh(a,a.I);(ya+=gh(a,a.w))||a.i("no breakpoints")}else if("n"==S)a.W=Pf(a,u),a.i("break after "+a.W+" instruction(s)");else if(void 0===u)a.i("missing breakpoint address");else{var K=Wf();if("*"!=u&&(K=bg(a,u,!0),!K))break a;u=y(K.J);"c"==S?null==K.J?(Xf(a),a.i("all breakpoints cleared")):eh(a,a.j,K)||eh(a,a.I,K)||eh(a,a.w,K)||a.i("breakpoint missing: "+hg(K.J)):
|
|
|
|
|
"i"==S?a.i("breakpoint "+(Mb(a.H,K.J)?"enabled":"cleared")+": port "+u+" (input)"):"o"==S?a.i("breakpoint "+(Qb(a.H,K.J)?"enabled":"cleared")+": port "+u+" (output)"):null!=K.J&&(gg(a,K,B),"p"==S?a.Pa(a.j,K):"r"==S?a.Pa(a.I,K):"w"==S?a.Pa(a.w,K):a.i("unknown breakpoint command: "+S))}}}break;case "c":a.ta&&(a.ta.value="");break;case "d":a:{var ia,ta=f[0],ma=f[1],La=f[2],cc=f[3];if("?"==ma){var Kb="";for(ia in tb)a.Z[ia]&&(Kb&&(Kb+=","),Kb+=ia);Kb+=",state,symbols";a.i("dump memory commands:");a.i("\tdb [a] [#] dump # bytes at address a");
|
|
|
|
|
a.i("\tdw [a] [#] dump # words at address a");a.i("\tdd [a] [#] dump # dwords at address a");a.i("\tdh [#] [#] dump # instructions from history");Kb.length&&a.i("dump extension commands:\n\t"+Kb)}else if("state"==ma){var he=Kh(a.R,!0);"console"==La?console.log(he):(a.ta&&(a.ta.value=""),he&&a.i(he))}else if("symbols"==ma)for(var ie=0;ie<a.A.length;ie++){var je=a.A[ie],Lb;for(Lb in je.ra)if("."!=Lb.charAt(0)){var kg=je.ra[Lb].o;if(void 0!==kg){var lg=je.ra[Lb].l;lg&&(Lb=lg);a.i(hg(kg)+" "+
|
|
|
|
|
Lb)}}}else{if("d"==ta){for(ia in tb)if(f[1]==ia){var mg=a.Z[ia];mg?(f.shift(),f.shift(),mg(f)):a.i("no dump registered for "+ma);break a}ma||(ta=a.za||"db")}else a.za=ta;if("dh"==ta){var ng=ma,og=La,pg="",qg=0,Ma=a.T,Xa=a.D;if(Xa.length){var Aa=+ng||a.sa,hc=+og||10;isNaN(Aa)?Aa=hc:pg="more ";Aa>Xa.length&&(a.i("note: only "+Xa.length+" available"),Aa=Xa.length);Ma-=Aa;0>Ma&&(null==Xa[Xa.length-1].J?(Aa=Ma+Aa,Ma=0):Ma+=Xa.length);var ke=[];"call"==og&&(hc=1E5,ke=["CALL"]);for(void 0!==ng&&a.i(Aa+" instructions earlier:");0<
|
|
|
|
|
hc&&Ma!=a.T;){var rg=Xa[Ma++];if(null==rg.J)break;var ic=Wf(rg.J),ni=Aa--,sg=ih(a,ic,"history",ni);(!ke.length||0<=sg.indexOf(ke[0]))&&a.i(sg);ic.Gb&&(Ma+=ic.Gb,hc-=ic.Gb,Aa-=ic.Gb);Ma>=Xa.length&&(Ma=0);a.sa=Aa;qg++;hc--}}qg||(a.i("no "+pg+"history available"),a.sa=void 0)}else{var Wc=bg(a,ma);if(Wc){var Xc=0;La&&("l"==La.charAt(0)&&(La=La.substr(1)||cc),Xc=Pf(a,La)>>>0,65536<Xc&&(Xc=65536));for(var jc="",Yc="dd"==ta?4:"dw"==ta?2:1,Zc=Yc*Xc||128,oi=Zc+15>>4||1;oi--&&0<Zc;){var $c=0,le=0,kc,me="",
|
|
|
|
|
tg="",ma=hg(Wc.J);for(kc=16;0<kc&&0<Zc;kc--){var ad=a.Ga(Wc,1),$c=$c|ad<<(le++<<3);le==Yc&&(me+=x($c,2*Yc),me+=1==Yc?9==kc?"-":" ":" ",$c=le=0);tg+=32<=ad&&128>ad?String.fromCharCode(ad):".";Zc--}jc&&(jc+="\n");jc+=ma+" "+me+(kc?"":" "+tg)}jc&&a.i(jc);a.la=Wc}}}}break;case "e":if("else"==f[0])break;var bd=1,ug=255,vg=a.Ga,wg=a.Tb;"ew"==f[0]&&(bd=2,ug=65535,vg=a.Cb,wg=a.wc);var xg=bd<<1,yg=f[1];if(null==yg)a.i("edit memory commands:"),a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");
|
|
|
|
|
else{var cd=bg(a,yg);if(cd)for(var dd=2;dd<f.length;dd++){var lc=Nf(a,f[dd]);if(void 0===lc){a.i("unrecognized value: "+f[dd]);break}lc&~ug&&a.i("warning: "+x(lc)+" exceeds "+bd+"-byte value");var pi=vg.call(a,cd);a.i("changing "+hg(cd.J)+" from "+x(pi,xg,!0)+" to "+x(lc,xg,!0));wg.call(a,cd,lc,bd)}}break;case "f":Eh(a,f[1]);break;case "g":a:{var zg=f[1],qi=b;if(void 0!==zg){var ne=bg(a,zg,!0);if(!ne)break a;gg(a,ne,qi);a.Pa(a.j,ne,!0)}$g(a,!0)||c||a.i("cpu busy or unavailable, run command ignored")}break;
|
|
|
|
|
case "h":a:{var oe;if(a.G.ka)oe="halting",a.da();else{if(ua(a,!0))break a;oe="already halted"}c||a.i(oe)}break;case "i":if("if"==f[0]){var pe;var mc=b.substr(2),mc=Na(mc);Nf(a,mc)?(c||a.i("true: "+mc),pe=!0):(c||a.i("false: "+mc),pe=!1);pe||(d=!1);break}if("int"==f[0]){var ed;var ri=f[1];if(a.u.N&512){var qe=Nf(a,ri);null==qe?ed=!1:(a.i("requesting interrupt level "+qe),Cd(a.u,qe),ed=!0)}else a.i("interrupts disabled (use rif=1 to enable)"),ed=!1;ed||(d=!1);break}var re=f[1];if(re&&"?"!=re){var se=
|
|
|
|
|
Pf(a,re);if(void 0!==se){var si=Ob(a.H,se);a.i(y(se)+": "+Da(si))}}else a.i("input commands:"),a.i("\ti [p]\tread port [p]"),a.i("warning: port accesses can affect hardware state");break;case "k":var ti=f[0];if("?"==f[1])a.i("stack trace commands:"),a.i("\tk\tshow frame addresses"),a.i("\tks\tshow symbol information");else{var te=0,Ag=Wf(),nc=Wf(a.u.M);for(a.i("stack trace for "+hg(nc.J));10>te;){for(var sb=null,ui=256;65536>nc.J>>>0;){Ag.J=a.Cb(nc,2);if(null==nc.J||!ui--)break;for(var vi=a,fd=Ag,
|
|
|
|
|
Bg=null,oc=fd.J,Cg=oc,ue=1;6>=ue&&oc;ue++){if(2<ue){fd.J=oc;var gd=ih(vi,fd);if(0<=gd.indexOf("CALL")){var Dg=gd.indexOf(" ");if(oc+(gd.indexOf(" ",Dg+1)-Dg-1)/2==Cg){Bg=gd;break}}}oc--}fd.J=Cg;if(sb=Bg)break}if(!sb||null==sb)break;var Eg=null;if("ks"==ti){var Fg=sb.match(/[0-9A-F]+$/);Fg&&(Eg=Gh(a,Fg[0]))}sb=Ka(sb,50)+" ;"+(Eg||"stack="+hg(nc.J));a.i(sb);te++}te||a.i("no return addresses found")}break;case "l":"ln"==f[0]&&Gh(a,f[1],!0);break;case "m":a:{var Ya,Za=null,aa=f[1];"?"==aa&&(aa=void 0);
|
|
|
|
|
if(void 0!==aa){var jb=0;if("all"==aa)jb=1878917119,aa=null;else if("on"==aa)Za=!0,aa=null;else if("off"==aa)Za=!1,aa=null;else{"keys"==aa&&(aa="key");"kbd"==aa&&(aa="keyboard");for(Ya in tb)if(aa==Ya){jb=tb[Ya];Za=!!(a.ha&jb);break}if(!jb){a.i("unknown message category: "+aa);break a}}if(jb)if("on"==f[2])a.ha|=jb,Za=!0;else if("off"==f[2]&&(a.ha&=~jb,Za=!1,1073741824==jb)){for(var ve=0;ve<a.X.length;ve++)a.i(a.X[ve]);a.X=[]}}var wi=0,pc="";for(Ya in tb)if(!aa||aa==Ya){var xi=!!(a.ha&tb[Ya]);if(null===
|
|
|
|
|
Za||Za==xi)pc&&(pc+=","),++wi%10||(pc+="\n\t"),"key"==Ya&&(Ya="keys"),pc+=Ya}void 0===aa&&a.i("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.i((null!==Za?Za?"messages on: ":"messages off: ":"message categories:\n\t")+(pc||"none"));Yf(a)}break;case "o":var we=f[1],yi=f[2];if(we&&"?"!=we){var xe=Pf(a,we,"port #"),ye=Pf(a,yi);void 0!==xe&&void 0!==ye&&(Sb(a.H,xe,ye),a.i(y(xe)+": "+Da(ye)))}else a.i("output commands:"),a.i("\to [p] [b]\twrite byte [b] to port [p]"),a.i("warning: port accesses can affect hardware state");
|
|
|
|
|
break;case "p":if("print"==f[0]){Ih(a,b.substr(5));break}var Gg="pr"==f[0]?1:0,zi=1+Gg;if(a.M)a.i("step in progress");else{var ze=Wf(a.u.j);switch(a.Ga(ze)){case 205:a.M=zi,dg(ze,3)}a.M?(a.Pa(a.j,ze,!0),$g(a)||(a.R&&a.R.Ya(),a.M=0)):Jh(a,Gg?"tr":"t")}break;case "r":if("reset"==b){a.R&&a.R.reset();break}bh(a,f);break;case "s":Hh(a,f);break;case "t":Jh(a,f[0],f[1]);break;case "u":ch(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Fh(a,b.substr(3))||(d=!1);break}a.i("PC8080 version 1.32.2 ("+a.u.ub+",RELEASE"+
|
|
|
|
|
(qb?",TYPEDARRAYS":",LONGARRAYS")+")");a.i(Ua());break;case "?":if(f[1]){Ih(a,b.substr(1));break}var Ae="commands:",Be;for(Be in Lh)Ae+="\n"+Ka(Be,9)+Lh[Be];Dd(a)||(Ae+="\nnote: frequency/history disabled if no exec breakpoints");a.i(Ae);break;default:a.i("unknown command: "+b),d=!1}}}catch(Ig){a.i("debugger error: "+(Ig.stack||Ig.message)),d=!1}return d}function zc(a,b,c){b=a.xb(b,c);for(var d in b)if(!hh(a,b[+d]))return!1;return!0}
|
|
|
|
|
var Lh={"?":"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","int [#]":"request interrupt",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"},
|
|
|
|
|
Vf=8080,jh=8086,kh="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(" "),lh="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(" "),
|
|
|
|
|
Kg=0,Lg=1,Mg=2,Ng=3,Og=4,Pg=5,Qg=6,Jg=7,Rg=8,Sg=9,Tg=10,Ug=11,Vg=12,Wg=13,Xg=14,jg="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),oh=15,nh=240,wh=3840,ph=61440,mh=0,Q=1,sh=2,th=3,vh=16,P=32,uh=64,xh=128,R=Jg<<8|vh|Q,T=Kg<<8|vh|Q,U=Lg<<8|vh|Q,V=Mg<<8|vh|Q,W=Ng<<8|vh|Q,X=Og<<8|vh|Q,Y=Pg<<8|vh|Q,Z=Qg<<8|vh|Q|uh,Mh=Rg<<8|vh|th,Nh=Sg<<8|vh|th,Oh=Tg<<8|vh|th,Ph=Ug<<8|vh|th,Qh=Xg<<8|vh|th,rh=4096,qh=8192,O=16384,yh=32768,$f=[[45],[42,Mh,P],[71,Mh|uh,R|O],[29,Mh],[28,T],[22,T],[44,T,P],[63],[45,yh],[21,
|
|
|
|
|
Oh|O,Mh],[40,R|O,Mh|uh],[23,Mh],[28,U],[22,U],[44,U,P],[64],[45,yh],[42,Nh,P],[71,Nh|uh,R|O],[29,Nh],[28,V],[22,V],[44,V,P],[52],[45,yh],[21,Oh|O,Nh],[40,R|O,Nh|uh],[23,Nh],[28,W],[22,W],[44,W,P],[53],[45,yh],[42,Oh,P],[68,51|uh,Oh|O],[29,Oh],[28,X],[22,X],[44,X,P],[20],[45,yh],[21,Oh|O,Oh],[41,Oh|O,51|uh],[23,Oh],[28,Y],[22,Y],[44,Y,P],[16,R|O],[45,yh],[42,Ph,P],[70,51|uh,R|O],[29,Ph],[28,Z],[22,Z],[44,Z,P],[72],[45,yh],[21,Oh|O,Ph],[39,R|O,51|uh],[23,Ph],[28,R],[22,R],[44,R,P],[17],[43,T,T],[43,
|
|
|
|
|
T,U],[43,T,V],[43,T,W],[43,T,X],[43,T,Y],[43,T,Z],[43,T,R],[43,U,T],[43,U,U],[43,U,V],[43,U,W],[43,U,X],[43,U,Y],[43,U,Z],[43,U,R],[43,V,T],[43,V,U],[43,V,V],[43,V,W],[43,V,X],[43,V,Y],[43,V,Z],[43,V,R],[43,W,T],[43,W,U],[43,W,V],[43,W,W],[43,W,X],[43,W,Y],[43,W,Z],[43,W,R],[43,X,T],[43,X,U],[43,X,V],[43,X,W],[43,X,X],[43,X,Y],[43,X,Z],[43,X,R],[43,Y,T],[43,Y,U],[43,Y,V],[43,Y,W],[43,Y,X],[43,Y,Y],[43,Y,Z],[43,Y,R],[43,Z,T],[43,Z,U],[43,Z,V],[43,Z,W],[43,Z,X],[43,Z,Y],[26],[43,Z,R],[43,R,T],[43,R,
|
|
|
|
|
U],[43,R,V],[43,R,W],[43,R,X],[43,R,Y],[43,R,Z],[43,R,R],[3,R|O,T],[3,R|O,U],[3,R|O,V],[3,R|O,W],[3,R|O,X],[3,R|O,Y],[3,R|O,Z],[3,R|O,R],[2,R|O,T],[2,R|O,U],[2,R|O,V],[2,R|O,W],[2,R|O,X],[2,R|O,Y],[2,R|O,Z],[2,R|O,R],[73,R|O,T],[73,R|O,U],[73,R|O,V],[73,R|O,W],[73,R|O,X],[73,R|O,Y],[73,R|O,Z],[73,R|O,R],[66,R|O,T],[66,R|O,U],[66,R|O,V],[66,R|O,W],[66,R|O,X],[66,R|O,Y],[66,R|O,Z],[66,R|O,R],[5,R|O,T],[5,R|O,U],[5,R|O,V],[5,R|O,W],[5,R|O,X],[5,R|O,Y],[5,R|O,Z],[5,R|O,R],[76,R|O,T],[76,R|O,U],[76,R|
|
|
|
|
|
O,V],[76,R|O,W],[76,R|O,X],[76,R|O,Y],[76,R|O,Z],[76,R|O,R],[46,R|O,T],[46,R|O,U],[46,R|O,V],[46,R|O,W],[46,R|O,X],[46,R|O,Y],[46,R|O,Z],[46,R|O,R],[18,R|O,T],[18,R|O,U],[18,R|O,V],[18,R|O,W],[18,R|O,X],[18,R|O,Y],[18,R|O,Z],[18,R|O,R],[58],[50,Mh],[34,51],[30,51],[11,51],[51,Mh],[4,R|O,P|Q],[65,xh],[62],[54],[38,51],[30,51|yh],[15,51],[7,51],[1,R|O,P|Q],[65,xh],[57],[50,Nh],[33,51],[48,P|Q,R|O],[10,51],[51,Nh],[74,R|O,P|Q],[65,xh],[55],[54,yh],[31,51],[27,R|O,P|Q],[8,51],[7,51|yh],[67,R|O,P|Q],[65,
|
|
|
|
|
xh],[61],[50,Oh],[37,51],[78,Ph|uh|O,Oh|O],[14,51],[51,Oh],[6,R|O,P|Q],[65,xh],[60],[49,Oh],[36,51],[75,Oh|O,Nh|O],[13,51],[7,51|yh],[77,R|O,P|Q],[65,xh],[59],[50,Qh],[35,51],[24],[12,51],[51,Qh],[47,R|O,P|Q],[65,xh],[56],[69,Ph|O,Oh|O],[32,51],[25],[9,51],[7,51|yh],[19,R|O,P|Q],[65,xh]],Zg=1E3;hb(function(){for(var a=pa(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=na(c),d=new Uf(d);oa(d,c)}});
|
|
|
|
|
function Rh(a,b,c){n.call(this,"Computer",a,67108864);this.G.ja=!1;Sh(this,b);this.L=vc(this,"autoPower",a);this.j=0;this.T=a.busWidth||a.buswidth;this.b=Th;this.F=null;this.C=this.O=!1;this.U=vc(this,"url")||"";(Math.random()+.1).toString(36);this.g=Uh(this);if(this.u=la("CPU",this.id)){this.K=la("Debugger",this.id);this.A=[];for(b=null;b=vb(this,"Video",b);)this.A.push(b);this.H=new xb({id:this.bb+".bus",busWidth:this.T},this.u,this.K);var d,e=ja(this.id);if((this.B=la("Panel",this.id))&&this.B.ta)for(b=
|
|
|
|
|
0;b<e.length;b++)d=e[b],d.aa=this.B.aa,d.i=this.B.i,d.ta=this.B.ta;this.i("PC8080 v1.32.2\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Ea&&d.Ea(this,this.H,this.u,this.K);b=null;d=vc(this,"resume",a);void 0!==d&&(1<d.length?b=this.D=d:this.b=parseInt(d,10));var f;if(a=vc(this,"state")||(f=!0,a.state))b=this.M=a,f||(this.C=!0,this.b=Th),this.b&&(this.I=new Uc(this,"1.32.2"),Vh(this.I)?
|
|
|
|
|
b=null:delete this.I);!b&&this.b&&(b=Wh(this))&&(this.C=!0);if(b){var g=this;Sa(b,null,!0,function(a,b,c){c?(g.D=null,g.C=!1,g.aa("Unable to load machine state from server (error "+c+(b?": "+Na(b):"")+")")):(g.F=b,g.O=!0);sa(g)})}else sa(this);this.P.power||(this.L=!0);!c&&this.L&&Xh(this,this.lb)}else q("Unable to find CPU component")}ba(Rh,n);function Sh(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){q(d.message+" ("+c+")")}}a.S=b}
|
|
|
|
|
function vc(a,b,c){var d=b.toLowerCase(),d=cb(b)||cb(d);void 0===d&&a.S&&(d=a.S[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Xh(a,b,c){for(var d=ja(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ra(f)){ra(f,function(){Xh(a,b,c)});return}}b.call(a,c)}
|
|
|
|
|
function Yh(a,b){var c=new Uc(a,"1.32.2",Zh);if(Vh(c)&&$h(c)){var d=c.get(ai),e=b?b.get(ai):"unknown";d!=e&&(a.aa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=Rh.prototype;
|
|
|
|
|
k.lb=function(a){void 0===a&&(a=this.b||(this.F?bi:Th));if(!this.j){this.j++;var b=!1,c=!1;this.N=!1;var d=this.I||new Uc(this,"1.32.2");if(a==ci)b=!0;else if(a>Th){if(Vh(d,this.F)){this.w=new Uc(this,"1.32.2",di);Vh(this.w)&&(ei(this,d),a=fi,gi(this.w));this.w.set(ai,Qa());hi(this.w);var e=this.b&&!this.C;if(a==bi||ha("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=$h(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Vh(d,g):("error"==f&&"no machine state"!=
|
|
|
|
|
g?(this.aa("Error: "+g),"unable to verify user"==g&&(ab(ii,""),this.g=null)):this.i(f+": "+g),gi(d),Vh(d)?(c=$h(d),e=!0):c=!1))}e&&Yh(this,c?d:null)}else a==fi&&d.clear()}else Yh(this);delete this.F;delete this.I}e=ja(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.u&&(c=ji(this,g,d,b,c));b=[d,a,c];a!=ci?Xh(this,this.gc,b):this.gc(b)}};
|
|
|
|
|
function ji(a,b,c,d,e){if(!b.G.ja){b.G.ja=!0;if(b.va){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.va(f,d)&&f&&(q("Unable to restore state for "+b.type),a.M&&!a.O?(c.clear(),a.b=Th,window&&window.location.reload()):a.N=!0,b.va(null),e=!1)}if(!d&&b.cc)for(a=b.cc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
|
|
|
|
k.gc=function(a){var b=a[0],c=0>a[1];a=a[2];this.W=!0;this.G.ja=!0;var d=this.P.power;d&&(d.textContent="Shutdown");this.u&&(ji(this,this.u,b,c,a),this.u.jb());this.N&&(ei(this,b),b.clear());!c&&this.w&&(this.w.clear(),delete this.w);this.j=0};
|
|
|
|
|
function ei(a,b){if(ha("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.g||"";b=b.toString();var d={app:"PC8080",ver:"1.32.2"};d.url=a.U;d.user=c;d.type="bug";d.data=b;Sa("http://www.pcjs.org/api/v1/report",d,!0)}}
|
|
|
|
|
function Kh(a,b,c){var d,e="none";if(a.j)return null;a.j--;var f=new Uc(a,"1.32.2"),g=new Uc(a,"1.32.2",Zh),h=Qa();g.set(ai,h);f.set(ai,h);f.set(ki,"1.32.2");f.set(li,window?window.location.href:null);f.set(mi,Ua());a.u&&a.u.ua&&(c&&a.u.da(),d=a.u.ua(b,c),"object"===typeof d&&f.set(a.u.id,d),c&&(a.u.G.ja=!1,!1===d&&(e=null)));for(var h=ja(a.id),l=0;l<h.length;l++){var p=h[l];p.G.ja&&(p.ua&&(d=p.ua(b,c),"object"===typeof d&&f.set(p.id,d)),c&&(p.G.ja=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.g&&Ai(a,
|
|
|
|
|
a.g,f.toString()),hi(g)&&hi(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Bi),d&&f.clear(h)):e=f.toString());c&&(a.G.ja=!1,b=a.P.power)&&(b.textContent="Power");a.j=0;return e}k.reset=function(){this.H&&this.H.reset&&(xa(this,"Resetting "+this.H.type),this.H.reset());for(var a=ja(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.H&&c.reset&&(xa(this,"Resetting "+c.type),c.reset())}};
|
|
|
|
|
k.start=function(a,b){for(var c=ja(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};k.stop=function(a,b){for(var c=ja(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
|
|
|
|
k.ca=function(a,b,c){var d=this;switch(b){case "power":return this.P[b]=c,c.onclick=function(){d.j||(d.G.ja?Kh(d,!1,!0):Xh(d,d.lb))},!0;case "reset":return this.P[b]=c,c.onclick=function(){if(d.G.ja&&!d.j)if(d.b&&!d.D){var a=ha("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Kh(d,a,!0);!a&&d.M?window&&window.location.reload():d.lb(Th)}else d.reset(),d.u&&d.u.jb()},!0;case "save":if(Ga())c.parentNode.removeChild(c);else return this.P[b]=
|
|
|
|
|
c,c.onclick=function(){var a=Uh(d,!0);if(a){var b=!!(d.b&&!d.D||d.M),c=Kh(d,b);b?Ai(d,a,c):d.aa("Resume disabled, machine state not saved")}},!0}return!1};
|
|
|
|
|
function Uh(a,b){var c=a.g;c||((c=$a(ii),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Ci(a,c))||a.aa("The user ID is invalid.")):b&&a.aa("Browser local storage is not available"));return c}
|
|
|
|
|
function Ci(a,b){a.g=null;b=Sa(Ha()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(ab(ii,b.data),a.g=b.data)}catch(d){q(d.message+" ("+c+")")}return a.g}function Wh(a){var b=null;a.g&&(b=Ha()+"/api/v1/user?req=load&user="+a.g+"&state="+Di(a,"1.32.2"));return b}
|
|
|
|
|
function Ai(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Di(a,"1.32.2");d.data=c;b=Sa(Ha()+"/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.aa("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.aa(c),ab(ii,""),a.g=null)}}
|
|
|
|
|
function vb(a,b,c){a=ja(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}k.Ya=function(a){if(this.A.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.A[0];d.V&&d.V.focus();!a&&window&&window.scrollTo(b,c)}};
|
|
|
|
|
function Kc(a,b){a.u&&(a=a.u,a.gb&&(b||!a.G.ka||a.G.fc)&&(J(a,"A",a.g),J(a,"B",a.w),J(a,"C",a.A),J(a,"BC",Vc(a),4),J(a,"D",a.B),J(a,"E",a.C),J(a,"DE",id(a),4),J(a,"H",a.D),J(a,"L",a.F),J(a,"HL",D(a),4),J(a,"SP",a.M,4),J(a,"PC",a.j,4),b=Tc(a),J(a,"PS",b,4),J(a,"IF",b&512?1:0,1),J(a,"SF",b&128?1:0,1),J(a,"ZF",b&64?1:0,1),J(a,"AF",b&16?1:0,1),J(a,"PF",b&4?1:0,1),J(a,"CF",b&1?1:0,1)),b=a.P.speed)&&(b.textContent=a.G.ka&&a.Y?a.Y.toFixed(2)+"Mhz":"Stopped")}
|
|
|
|
|
var di="failsafe",Zh="validate",ai="timestamp",ki="version",li="url",mi="browser",ii="user",ci=-1,Th=0,bi=1,fi=2,Bi=3;hb(function(){for(var a=pa(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=na(c),c=pa(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=na(f),g=new Rh(g,d,!0);oa(g,f);g.L&&Xh(g,g.lb)}});ib.show.push(function(){for(var a=pa(document,"pc8080","computer"),b=0;b<a.length;b++){var c=na(a[b]);(c=la("Computer",c.id))&&c.W&&!c.G.ja&&c.lb(ci)}});
|
|
|
|
|
ib.exit.push(function(){for(var a=pa(document,"pc8080","computer"),b=0;b<a.length;b++){var c=na(a[b]);(c=la("Computer",c.id))&&c.G.ja&&Kh(c,!(!c.b||c.D),!0)}});function Uc(a,b,c){this.id=a.id;this.K=a.K;this.g="";this.b={};this.u=this.H=!1;this.key=Di(a,b,c);gi(this,a.xd)}k=Uc.prototype;k.set=function(a,b){try{this.b[a]=b}catch(c){}};k.get=function(a){return this.b[a]||null};k.data=function(){return this.b};
|
|
|
|
|
function Vh(a,b){return b?(a.g=b,a.u=!0,a.H=!1,!0):a.u?!0:Va()&&(b=$a(a.key))?(a.g=b,a.u=!0):!1}function $h(a){var b=!0;if(!a.H)try{a.b=JSON.parse(a.g),a.H=!0}catch(c){q(c.message||c),b=!1}return b}function hi(a){var b=!0;if(Va()){var c=JSON.stringify(a.b);ab(a.key,c)||(q("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.b?JSON.stringify(this.b):this.g};function gi(a,b){a.g="";a.b={};a.u=a.H=!1;b&&a.set("parms",b)}
|
|
|
|
|
k.clear=function(a){gi(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 Di(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var Ei=0;
|
|
|
|
|
function Fi(a,b,c,d,e,f){e("Loading "+a+"...");Sa(a,null,!0,function(g,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),f(h,null)):Gi(h,a,b,c,d,e,f)})}
|
|
|
|
|
function Gi(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&(da(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{",d+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PC8080$2"),
|
|
|
|
|
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){f=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,f)}}a?e?Hi(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
|
|
|
|
|
function eh(a,b){var c;if(b&&"?"==b[1])a.i("register commands:"),a.i("\tr\tdump registers"),a.i("\trx [#]\tset flag or register x to [#]");else{var d=a.u;null==c&&(c=!0);if(b&&1<b.length){var e=b[1],f=e.indexOf("=");if(0<f)b=e.substr(f+1),e=e.substr(0,f);else if(2<b.length)b=b[2];else{a.i("missing value for "+b[1]);return}f=Qf(a,b);if(void 0===f)return;switch(e.toUpperCase()){case "A":d.g=f&255;break;case "B":d.w=f&255;break;case "BC":d.w=f>>8&255;case "C":d.A=f&255;break;case "D":d.B=f&255;break;
|
|
|
|
|
case "DE":d.B=f>>8&255;case "E":d.C=f&255;break;case "H":d.D=f&255;break;case "HL":d.D=f>>8&255;case "L":d.F=f&255;break;case "SP":d.M=f&65535;break;case "PC":A(d,f);a.F=Zf(d.j);break;case "PS":Sc(d,f);break;case "PSW":Sc(d,f&255|d.N&-256);d.g=f>>8;break;case "CF":d.I=f?d.I|256:d.I&255;break;case "PF":f?od(d)||(d.L^=1):od(d)&&(d.L^=1);break;case "AF":d.O=f?~d.L&16|d.O&-17:d.L&16|d.O&-17;break;case "ZF":d.I=f?d.I&-256:d.I|255;break;case "SF":f?rd(d)||(d.L^=192):rd(d)&&(d.L^=192);break;case "IF":d.N=
|
|
|
|
|
f?d.N|512:d.N&-513;break;default:a.i("unknown register: "+e);return}Bc(d);a.i("updated registers:")}a.i(Eh(a));c&&(a.F=Zf(d.j),fh(a,kg(a.F.J)))}}function Lh(a,b){b=Ma(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.i(ah(a,c[2])):Qf(a,b,!0)}function Mh(a,b,c){var d="t"!=b;c=Sf(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);fb(c,function(){return wa(a,!0)&&fg(a,e,d,!1)},function(){Bc(a.u);wa(a,!1)})}
|
|
|
|
|
function fh(a,b,c,d){if(b=eg(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=eg(a,c,!0);if(!d||d.J<b.J)return;e=d.J-b.J;if(256<e){a.i("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=ua(a,!1)||a.M?a.C:null;var g=null!=f?"cycles":null,h=Fh(a,b),m=b.J;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var r=h[0]+":";h[2]&&(r+=" "+h[2]);a.i(r)}h[3]&&(g=h[3],f=null);f=lh(a,b,g,f);a.i(f);a.F=b;e-=b.J-m;c++}}}
|
|
|
|
|
k.Ab=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.L?a="end":a=this.g[this.b+1];b=[];if(a){a=a.toLowerCase().replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(Ma(a.substring(d,f))),d=f+1}}return b};
|
|
|
|
|
function kh(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.i(">> "+b):(a.L&&(a.i("ended assemble at "+kg(a.O.J)),a.F=a.O,a.L=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.V=null;if(sa(a)&&0<b.length){a.L&&(b="a "+kg(a.O.J)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var g=f[0],h=g.charAt(0),m=1;m<g.length;m++){var r=g.charAt(m);if("?"==h||"r"==h||"a">r||"z"<r){f[0]=g.substr(m);f.unshift(g.substr(0,m));break}}switch(f[0].charAt(0)){case "a":var u=eg(a,f[1],!0);if(u)if(a.O=
|
|
|
|
|
u,void 0===f[2])a.i("begin assemble at "+kg(u.J)),a.L=!0,Bc(a.u);else{var v;a.i("not supported yet");v=[];if(v.length){for(var B=0;B<v.length;B++)a.Xb(u,v[B],1);a.i(lh(a,a.O))}}break;case "b":a:{var y=f[0],w=f[1],C=b;if("?"==w)a.i("breakpoint commands:"),a.i("\tbi [p]\ttoggle break on input port [p]"),a.i("\tbo [p]\ttoggle break on output port [p]"),a.i("\tbp [a]\tset exec breakpoint at addr [a]"),a.i("\tbr [a]\tset read breakpoint at addr [a]"),a.i("\tbw [a]\tset write breakpoint at addr [a]"),a.i("\tbc [a]\tclear breakpoint at addr [a]"),
|
|
|
|
|
a.i("\tbl\tlist all breakpoints"),a.i("\tbn [n]\tbreak after [n] instruction(s)");else{var T=y.charAt(1);if("l"==T){var Aa;Aa=0+jh(a,a.j);Aa+=jh(a,a.I);(Aa+=jh(a,a.w))||a.i("no breakpoints")}else if("n"==T)a.W=Sf(a,w),a.i("break after "+a.W+" instruction(s)");else if(void 0===w)a.i("missing breakpoint address");else{var L=Zf();if("*"!=w&&(L=eg(a,w,!0),!L))break a;w=x(L.J);"c"==T?null==L.J?($f(a),a.i("all breakpoints cleared")):hh(a,a.j,L)||hh(a,a.I,L)||hh(a,a.w,L)||a.i("breakpoint missing: "+kg(L.J)):
|
|
|
|
|
"i"==T?a.i("breakpoint "+(Lb(a.H,L.J)?"enabled":"cleared")+": port "+w+" (input)"):"o"==T?a.i("breakpoint "+(Rb(a.H,L.J)?"enabled":"cleared")+": port "+w+" (output)"):null!=L.J&&(jg(a,L,C),"p"==T?a.Pa(a.j,L):"r"==T?a.Pa(a.I,L):"w"==T?a.Pa(a.w,L):a.i("unknown breakpoint command: "+T))}}}break;case "c":a.ta&&(a.ta.value="");break;case "d":a:{var ja,va=f[0],na=f[1],Na=f[2],fc=f[3];if("?"==na){var Nb="";for(ja in tb)a.Z[ja]&&(Nb&&(Nb+=","),Nb+=ja);Nb+=",state,symbols";a.i("dump memory commands:");a.i("\tdb [a] [#] dump # bytes at address a");
|
|
|
|
|
a.i("\tdw [a] [#] dump # words at address a");a.i("\tdd [a] [#] dump # dwords at address a");a.i("\tdh [#] [#] dump # instructions from history");Nb.length&&a.i("dump extension commands:\n\t"+Nb)}else if("state"==na){var je=Nh(a.R,!0);"console"==Na?console.log(je):(a.ta&&(a.ta.value=""),je&&a.i(je))}else if("symbols"==na)for(var ke=0;ke<a.A.length;ke++){var le=a.A[ke],Ob;for(Ob in le.ra)if("."!=Ob.charAt(0)){var ng=le.ra[Ob].o;if(void 0!==ng){var og=le.ra[Ob].l;og&&(Ob=og);a.i(kg(ng)+" "+
|
|
|
|
|
Ob)}}}else{if("d"==va){for(ja in tb)if(f[1]==ja){var pg=a.Z[ja];pg?(f.shift(),f.shift(),pg(f)):a.i("no dump registered for "+na);break a}na||(va=a.za||"db")}else a.za=va;if("dh"==va){var qg=na,rg=Na,sg="",tg=0,Oa=a.T,$a=a.D;if($a.length){var Ca=+qg||a.sa,kc=+rg||10;isNaN(Ca)?Ca=kc:sg="more ";Ca>$a.length&&(a.i("note: only "+$a.length+" available"),Ca=$a.length);Oa-=Ca;0>Oa&&(null==$a[$a.length-1].J?(Ca=Oa+Ca,Oa=0):Oa+=$a.length);var me=[];"call"==rg&&(kc=1E5,me=["CALL"]);for(void 0!==qg&&a.i(Ca+" instructions earlier:");0<
|
|
|
|
|
kc&&Oa!=a.T;){var ug=$a[Oa++];if(null==ug.J)break;var lc=Zf(ug.J),qi=Ca--,vg=lh(a,lc,"history",qi);(!me.length||0<=vg.indexOf(me[0]))&&a.i(vg);lc.Jb&&(Oa+=lc.Jb,kc-=lc.Jb,Ca-=lc.Jb);Oa>=$a.length&&(Oa=0);a.sa=Ca;tg++;kc--}}tg||(a.i("no "+sg+"history available"),a.sa=void 0)}else{var Yc=eg(a,na);if(Yc){var Zc=0;Na&&("l"==Na.charAt(0)&&(Na=Na.substr(1)||fc),Zc=Sf(a,Na)>>>0,65536<Zc&&(Zc=65536));for(var mc="",$c="dd"==va?4:"dw"==va?2:1,ad=$c*Zc||128,ri=ad+15>>4||1;ri--&&0<ad;){var bd=0,ne=0,nc,oe="",
|
|
|
|
|
wg="",na=kg(Yc.J);for(nc=16;0<nc&&0<ad;nc--){var cd=a.Ga(Yc,1),bd=bd|cd<<(ne++<<3);ne==$c&&(oe+=t(bd,2*$c),oe+=1==$c?9==nc?"-":" ":" ",bd=ne=0);wg+=32<=cd&&128>cd?String.fromCharCode(cd):".";ad--}mc&&(mc+="\n");mc+=na+" "+oe+(nc?"":" "+wg)}mc&&a.i(mc);a.la=Yc}}}}break;case "e":if("else"==f[0])break;var dd=1,xg=255,yg=a.Ga,zg=a.Xb;"ew"==f[0]&&(dd=2,xg=65535,yg=a.Gb,zg=a.Qc);var Ag=dd<<1,Bg=f[1];if(null==Bg)a.i("edit memory commands:"),a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");
|
|
|
|
|
else{var ed=eg(a,Bg);if(ed)for(var fd=2;fd<f.length;fd++){var oc=Qf(a,f[fd]);if(void 0===oc){a.i("unrecognized value: "+f[fd]);break}oc&~xg&&a.i("warning: "+t(oc)+" exceeds "+dd+"-byte value");var si=yg.call(a,ed);a.i("changing "+kg(ed.J)+" from "+t(si,Ag,!0)+" to "+t(oc,Ag,!0));zg.call(a,ed,oc,dd)}}break;case "f":Hh(a,f[1]);break;case "g":a:{var Cg=f[1],ti=b;if(void 0!==Cg){var pe=eg(a,Cg,!0);if(!pe)break a;jg(a,pe,ti);a.Pa(a.j,pe,!0)}ch(a,!0)||c||a.i("cpu busy or unavailable, run command ignored")}break;
|
|
|
|
|
case "h":a:{var qe;if(a.G.ka)qe="halting",a.da();else{if(ua(a,!0))break a;qe="already halted"}c||a.i(qe)}break;case "i":if("if"==f[0]){var re;var pc=b.substr(2),pc=Ma(pc);Qf(a,pc)?(c||a.i("true: "+pc),re=!0):(c||a.i("false: "+pc),re=!1);re||(d=!1);break}if("int"==f[0]){var gd;var ui=f[1];if(a.u.N&512){var se=Qf(a,ui);null==se?gd=!1:(a.i("requesting interrupt level "+se),Ed(a.u,se),gd=!0)}else a.i("interrupts disabled (use rif=1 to enable)"),gd=!1;gd||(d=!1);break}var te=f[1];if(te&&"?"!=te){var ue=
|
|
|
|
|
Sf(a,te);if(void 0!==ue){var vi=Pb(a.H,ue);a.i(x(ue)+": "+Ea(vi))}}else a.i("input commands:"),a.i("\ti [p]\tread port [p]"),a.i("warning: port accesses can affect hardware state");break;case "k":var wi=f[0];if("?"==f[1])a.i("stack trace commands:"),a.i("\tk\tshow frame addresses"),a.i("\tks\tshow symbol information");else{var ve=0,Dg=Zf(),qc=Zf(a.u.M);for(a.i("stack trace for "+kg(qc.J));10>ve;){for(var vb=null,xi=256;65536>qc.J>>>0;){Dg.J=a.Gb(qc,2);if(null==qc.J||!xi--)break;for(var yi=a,hd=Dg,
|
|
|
|
|
Eg=null,rc=hd.J,Fg=rc,we=1;6>=we&&rc;we++){if(2<we){hd.J=rc;var id=lh(yi,hd);if(0<=id.indexOf("CALL")){var Gg=id.indexOf(" ");if(rc+(id.indexOf(" ",Gg+1)-Gg-1)/2==Fg){Eg=id;break}}}rc--}hd.J=Fg;if(vb=Eg)break}if(!vb||null==vb)break;var Hg=null;if("ks"==wi){var Ig=vb.match(/[0-9A-F]+$/);Ig&&(Hg=Jh(a,Ig[0]))}vb=La(vb,50)+" ;"+(Hg||"stack="+kg(qc.J));a.i(vb);ve++}ve||a.i("no return addresses found")}break;case "l":"ln"==f[0]&&Jh(a,f[1],!0);break;case "m":a:{var ab,bb=null,ba=f[1];"?"==ba&&(ba=void 0);
|
|
|
|
|
if(void 0!==ba){var mb=0;if("all"==ba)mb=1878917119,ba=null;else if("on"==ba)bb=!0,ba=null;else if("off"==ba)bb=!1,ba=null;else{"keys"==ba&&(ba="key");"kbd"==ba&&(ba="keyboard");for(ab in tb)if(ba==ab){mb=tb[ab];bb=!!(a.ha&mb);break}if(!mb){a.i("unknown message category: "+ba);break a}}if(mb)if("on"==f[2])a.ha|=mb,bb=!0;else if("off"==f[2]&&(a.ha&=~mb,bb=!1,1073741824==mb)){for(var xe=0;xe<a.X.length;xe++)a.i(a.X[xe]);a.X=[]}}var zi=0,sc="";for(ab in tb)if(!ba||ba==ab){var Ai=!!(a.ha&tb[ab]);if(null===
|
|
|
|
|
bb||bb==Ai)sc&&(sc+=","),++zi%10||(sc+="\n\t"),"key"==ab&&(ab="keys"),sc+=ab}void 0===ba&&a.i("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.i((null!==bb?bb?"messages on: ":"messages off: ":"message categories:\n\t")+(sc||"none"));ag(a)}break;case "o":var ye=f[1],Bi=f[2];if(ye&&"?"!=ye){var ze=Sf(a,ye,"port #"),Ae=Sf(a,Bi);void 0!==ze&&void 0!==Ae&&(Tb(a.H,ze,Ae),a.i(x(ze)+": "+Ea(Ae)))}else a.i("output commands:"),a.i("\to [p] [b]\twrite byte [b] to port [p]"),a.i("warning: port accesses can affect hardware state");
|
|
|
|
|
break;case "p":if("print"==f[0]){Lh(a,b.substr(5));break}var Jg="pr"==f[0]?1:0,Ci=1+Jg;if(a.M)a.i("step in progress");else{var Be=Zf(a.u.j);switch(a.Ga(Be)){case 205:a.M=Ci,gg(Be,3)}a.M?(a.Pa(a.j,Be,!0),ch(a)||(a.R&&a.R.Za(),a.M=0)):Mh(a,Jg?"tr":"t")}break;case "r":if("reset"==b){a.R&&a.R.reset();break}eh(a,f);break;case "s":Kh(a,f);break;case "t":Mh(a,f[0],f[1]);break;case "u":fh(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Ih(a,b.substr(3))||(d=!1);break}a.i("PC8080 version 1.32.2 ("+a.u.xb+",RELEASE"+
|
|
|
|
|
(rb?",TYPEDARRAYS":",LONGARRAYS")+")");a.i(Va());break;case "?":if(f[1]){Lh(a,b.substr(1));break}var Ce="commands:",De;for(De in Oh)Ce+="\n"+La(De,9)+Oh[De];Fd(a)||(Ce+="\nnote: frequency/history disabled if no exec breakpoints");a.i(Ce);break;default:a.i("unknown command: "+b),d=!1}}}catch(Lg){a.i("debugger error: "+(Lg.stack||Lg.message)),d=!1}return d}function Ac(a,b,c){b=a.Ab(b,c);for(var d in b)if(!kh(a,b[+d]))return!1;return!0}
|
|
|
|
|
var Oh={"?":"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","int [#]":"request interrupt",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"},
|
|
|
|
|
Yf=8080,mh=8086,nh="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(" "),oh="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(" "),
|
|
|
|
|
Ng=0,Og=1,Pg=2,Qg=3,Rg=4,Sg=5,Tg=6,Mg=7,Ug=8,Vg=9,Wg=10,Xg=11,Yg=12,Zg=13,$g=14,mg="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),rh=15,qh=240,zh=3840,sh=61440,ph=0,Q=1,vh=2,wh=3,yh=16,P=32,xh=64,Ah=128,R=Mg<<8|yh|Q,S=Ng<<8|yh|Q,U=Og<<8|yh|Q,V=Pg<<8|yh|Q,W=Qg<<8|yh|Q,X=Rg<<8|yh|Q,Y=Sg<<8|yh|Q,Z=Tg<<8|yh|Q|xh,Ph=Ug<<8|yh|wh,Qh=Vg<<8|yh|wh,Rh=Wg<<8|yh|wh,Sh=Xg<<8|yh|wh,Th=$g<<8|yh|wh,uh=4096,th=8192,O=16384,Bh=32768,cg=[[45],[42,Ph,P],[71,Ph|xh,R|O],[29,Ph],[28,S],[22,S],[44,S,P],[63],[45,Bh],[21,
|
|
|
|
|
Rh|O,Ph],[40,R|O,Ph|xh],[23,Ph],[28,U],[22,U],[44,U,P],[64],[45,Bh],[42,Qh,P],[71,Qh|xh,R|O],[29,Qh],[28,V],[22,V],[44,V,P],[52],[45,Bh],[21,Rh|O,Qh],[40,R|O,Qh|xh],[23,Qh],[28,W],[22,W],[44,W,P],[53],[45,Bh],[42,Rh,P],[68,51|xh,Rh|O],[29,Rh],[28,X],[22,X],[44,X,P],[20],[45,Bh],[21,Rh|O,Rh],[41,Rh|O,51|xh],[23,Rh],[28,Y],[22,Y],[44,Y,P],[16,R|O],[45,Bh],[42,Sh,P],[70,51|xh,R|O],[29,Sh],[28,Z],[22,Z],[44,Z,P],[72],[45,Bh],[21,Rh|O,Sh],[39,R|O,51|xh],[23,Sh],[28,R],[22,R],[44,R,P],[17],[43,S,S],[43,
|
|
|
|
|
S,U],[43,S,V],[43,S,W],[43,S,X],[43,S,Y],[43,S,Z],[43,S,R],[43,U,S],[43,U,U],[43,U,V],[43,U,W],[43,U,X],[43,U,Y],[43,U,Z],[43,U,R],[43,V,S],[43,V,U],[43,V,V],[43,V,W],[43,V,X],[43,V,Y],[43,V,Z],[43,V,R],[43,W,S],[43,W,U],[43,W,V],[43,W,W],[43,W,X],[43,W,Y],[43,W,Z],[43,W,R],[43,X,S],[43,X,U],[43,X,V],[43,X,W],[43,X,X],[43,X,Y],[43,X,Z],[43,X,R],[43,Y,S],[43,Y,U],[43,Y,V],[43,Y,W],[43,Y,X],[43,Y,Y],[43,Y,Z],[43,Y,R],[43,Z,S],[43,Z,U],[43,Z,V],[43,Z,W],[43,Z,X],[43,Z,Y],[26],[43,Z,R],[43,R,S],[43,R,
|
|
|
|
|
U],[43,R,V],[43,R,W],[43,R,X],[43,R,Y],[43,R,Z],[43,R,R],[3,R|O,S],[3,R|O,U],[3,R|O,V],[3,R|O,W],[3,R|O,X],[3,R|O,Y],[3,R|O,Z],[3,R|O,R],[2,R|O,S],[2,R|O,U],[2,R|O,V],[2,R|O,W],[2,R|O,X],[2,R|O,Y],[2,R|O,Z],[2,R|O,R],[73,R|O,S],[73,R|O,U],[73,R|O,V],[73,R|O,W],[73,R|O,X],[73,R|O,Y],[73,R|O,Z],[73,R|O,R],[66,R|O,S],[66,R|O,U],[66,R|O,V],[66,R|O,W],[66,R|O,X],[66,R|O,Y],[66,R|O,Z],[66,R|O,R],[5,R|O,S],[5,R|O,U],[5,R|O,V],[5,R|O,W],[5,R|O,X],[5,R|O,Y],[5,R|O,Z],[5,R|O,R],[76,R|O,S],[76,R|O,U],[76,R|
|
|
|
|
|
O,V],[76,R|O,W],[76,R|O,X],[76,R|O,Y],[76,R|O,Z],[76,R|O,R],[46,R|O,S],[46,R|O,U],[46,R|O,V],[46,R|O,W],[46,R|O,X],[46,R|O,Y],[46,R|O,Z],[46,R|O,R],[18,R|O,S],[18,R|O,U],[18,R|O,V],[18,R|O,W],[18,R|O,X],[18,R|O,Y],[18,R|O,Z],[18,R|O,R],[58],[50,Ph],[34,51],[30,51],[11,51],[51,Ph],[4,R|O,P|Q],[65,Ah],[62],[54],[38,51],[30,51|Bh],[15,51],[7,51],[1,R|O,P|Q],[65,Ah],[57],[50,Qh],[33,51],[48,P|Q,R|O],[10,51],[51,Qh],[74,R|O,P|Q],[65,Ah],[55],[54,Bh],[31,51],[27,R|O,P|Q],[8,51],[7,51|Bh],[67,R|O,P|Q],[65,
|
|
|
|
|
Ah],[61],[50,Rh],[37,51],[78,Sh|xh|O,Rh|O],[14,51],[51,Rh],[6,R|O,P|Q],[65,Ah],[60],[49,Rh],[36,51],[75,Rh|O,Qh|O],[13,51],[7,51|Bh],[77,R|O,P|Q],[65,Ah],[59],[50,Th],[35,51],[24],[12,51],[51,Th],[47,R|O,P|Q],[65,Ah],[56],[69,Sh|O,Rh|O],[32,51],[25],[9,51],[7,51|Bh],[19,R|O,P|Q],[65,Ah]],bh=1E3;ib(function(){for(var a=qa(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Xf(d);pa(d,c)}});
|
|
|
|
|
function Uh(a,b,c){n.call(this,"Computer",a,67108864);this.G.ja=!1;Vh(this,b);this.L=wc(this,"autoPower",a);this.j=0;this.T=a.busWidth||a.buswidth;this.b=Wh;this.F=null;this.C=this.O=!1;this.U=wc(this,"url")||"";(Math.random()+.1).toString(36);this.g=Xh(this);if(this.u=ma("CPU",this.id)){this.K=ma("Debugger",this.id);this.A=[];for(b=null;b=wb(this,"Video",b);)this.A.push(b);this.H=new yb({id:this.eb+".bus",busWidth:this.T},this.u,this.K);var d,e=ka(this.id);if((this.B=ma("Panel",this.id))&&this.B.ta)for(b=
|
|
|
|
|
0;b<e.length;b++)d=e[b],d.aa=this.B.aa,d.i=this.B.i,d.ta=this.B.ta;this.i("PC8080 v1.32.2\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Ea&&d.Ea(this,this.H,this.u,this.K);b=null;d=wc(this,"resume",a);void 0!==d&&(1<d.length?b=this.D=d:this.b=parseInt(d,10));var f;if(a=wc(this,"state")||(f=!0,a.state))b=this.M=a,f||(this.C=!0,this.b=Wh),this.b&&(this.I=new Vc(this,"1.32.2"),Yh(this.I)?
|
|
|
|
|
b=null:delete this.I);!b&&this.b&&(b=Zh(this))&&(this.C=!0);if(b){var g=this;Ta(b,null,!0,function(a,b,c){c?(g.D=null,g.C=!1,g.aa("Unable to load machine state from server (error "+c+(b?": "+Ma(b):"")+")")):(g.F=b,g.O=!0);ta(g)})}else ta(this);this.P.power||(this.L=!0);!c&&this.L&&$h(this,this.nb)}else p("Unable to find CPU component")}aa(Uh,n);function Vh(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){p(d.message+" ("+c+")")}}a.S=b}
|
|
|
|
|
function wc(a,b,c){var d=b.toLowerCase(),d=db(b)||db(d);void 0===d&&a.S&&(d=a.S[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function $h(a,b,c){for(var d=ka(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!sa(f)){sa(f,function(){$h(a,b,c)});return}}b.call(a,c)}
|
|
|
|
|
function ai(a,b){var c=new Vc(a,"1.32.2",bi);if(Yh(c)&&ci(c)){var d=c.get(di),e=b?b.get(di):"unknown";d!=e&&(a.aa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=Uh.prototype;
|
|
|
|
|
k.nb=function(a){void 0===a&&(a=this.b||(this.F?ei:Wh));if(!this.j){this.j++;var b=!1,c=!1;this.N=!1;var d=this.I||new Vc(this,"1.32.2");if(a==fi)b=!0;else if(a>Wh){if(Yh(d,this.F)){this.w=new Vc(this,"1.32.2",gi);Yh(this.w)&&(hi(this,d),a=ii,ji(this.w));this.w.set(di,Ra());ki(this.w);var e=this.b&&!this.C;if(a==ei||ia("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=ci(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Yh(d,g):("error"==f&&"no machine state"!=
|
|
|
|
|
g?(this.aa("Error: "+g),"unable to verify user"==g&&(Za(li,""),this.g=null)):this.i(f+": "+g),ji(d),Yh(d)?(c=ci(d),e=!0):c=!1))}e&&ai(this,c?d:null)}else a==ii&&d.clear()}else ai(this);delete this.F;delete this.I}e=ka(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.u&&(c=mi(this,g,d,b,c));b=[d,a,c];a!=fi?$h(this,this.Cc,b):this.Cc(b)}};
|
|
|
|
|
function mi(a,b,c,d,e){if(!b.G.ja){b.G.ja=!0;if(b.va){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.va(f,d)&&f&&(p("Unable to restore state for "+b.type),a.M&&!a.O?(c.clear(),a.b=Wh,window&&window.location.reload()):a.N=!0,b.va(null),e=!1)}if(!d&&b.vc)for(a=b.vc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
|
|
|
|
k.Cc=function(a){var b=a[0],c=0>a[1];a=a[2];this.W=!0;this.G.ja=!0;var d=this.P.power;d&&(d.textContent="Shutdown");this.u&&(mi(this,this.u,b,c,a),this.u.lb());this.N&&(hi(this,b),b.clear());!c&&this.w&&(this.w.clear(),delete this.w);this.j=0};
|
|
|
|
|
function hi(a,b){if(ia("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.g||"";b=b.toString();var d={app:"PC8080",ver:"1.32.2"};d.url=a.U;d.user=c;d.type="bug";d.data=b;Ta("http://www.pcjs.org/api/v1/report",d,!0)}}
|
|
|
|
|
function Nh(a,b,c){var d,e="none";if(a.j)return null;a.j--;var f=new Vc(a,"1.32.2"),g=new Vc(a,"1.32.2",bi),h=Ra();g.set(di,h);f.set(di,h);f.set(ni,"1.32.2");f.set(oi,window?window.location.href:null);f.set(pi,Va());a.u&&a.u.ua&&(c&&a.u.da(),d=a.u.ua(b,c),"object"===typeof d&&f.set(a.u.id,d),c&&(a.u.G.ja=!1,!1===d&&(e=null)));for(var h=ka(a.id),m=0;m<h.length;m++){var r=h[m];r.G.ja&&(r.ua&&(d=r.ua(b,c),"object"===typeof d&&f.set(r.id,d)),c&&(r.G.ja=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.g&&Di(a,
|
|
|
|
|
a.g,f.toString()),ki(g)&&ki(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Ei),d&&f.clear(h)):e=f.toString());c&&(a.G.ja=!1,b=a.P.power)&&(b.textContent="Power");a.j=0;return e}k.reset=function(){this.H&&this.H.reset&&(ya(this,"Resetting "+this.H.type),this.H.reset());for(var a=ka(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.H&&c.reset&&(ya(this,"Resetting "+c.type),c.reset())}};
|
|
|
|
|
k.start=function(a,b){for(var c=ka(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};k.stop=function(a,b){for(var c=ka(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
|
|
|
|
k.ca=function(a,b,c){var d=this;switch(b){case "power":return this.P[b]=c,c.onclick=function(){d.j||(d.G.ja?Nh(d,!1,!0):$h(d,d.nb))},!0;case "reset":return this.P[b]=c,c.onclick=function(){if(d.G.ja&&!d.j)if(d.b&&!d.D){var a=ia("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Nh(d,a,!0);!a&&d.M?window&&window.location.reload():d.nb(Wh)}else d.reset(),d.u&&d.u.lb()},!0;case "save":if(Ha())c.parentNode.removeChild(c);else return this.P[b]=
|
|
|
|
|
c,c.onclick=function(){var a=Xh(d,!0);if(a){var b=!!(d.b&&!d.D||d.M),c=Nh(d,b);b?Di(d,a,c):d.aa("Resume disabled, machine state not saved")}},!0}return!1};
|
|
|
|
|
function Xh(a,b){var c=a.g;c||((c=Ya(li),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Fi(a,c))||a.aa("The user ID is invalid.")):b&&a.aa("Browser local storage is not available"));return c}
|
|
|
|
|
function Fi(a,b){a.g=null;b=Ta(Ia()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Za(li,b.data),a.g=b.data)}catch(d){p(d.message+" ("+c+")")}return a.g}function Zh(a){var b=null;a.g&&(b=Ia()+"/api/v1/user?req=load&user="+a.g+"&state="+Gi(a,"1.32.2"));return b}
|
|
|
|
|
function Di(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Gi(a,"1.32.2");d.data=c;b=Ta(Ia()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.aa("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.aa(c),Za(li,""),a.g=null)}}
|
|
|
|
|
function wb(a,b,c){a=ka(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}k.Za=function(a){if(this.A.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.A[0];d.V&&d.V.focus();!a&&window&&window.scrollTo(b,c)}};
|
|
|
|
|
function Lc(a,b){a.u&&(a=a.u,a.ib&&(b||!a.G.ka||a.G.Bc)&&(I(a,"A",a.g),I(a,"B",a.w),I(a,"C",a.A),I(a,"BC",Wc(a),4),I(a,"D",a.B),I(a,"E",a.C),I(a,"DE",jd(a),4),I(a,"H",a.D),I(a,"L",a.F),I(a,"HL",D(a),4),I(a,"SP",a.M,4),I(a,"PC",a.j,4),b=Uc(a),I(a,"PS",b,4),I(a,"IF",b&512?1:0,1),I(a,"SF",b&128?1:0,1),I(a,"ZF",b&64?1:0,1),I(a,"AF",b&16?1:0,1),I(a,"PF",b&4?1:0,1),I(a,"CF",b&1?1:0,1)),b=a.P.speed)&&(b.textContent=a.G.ka&&a.Y?a.Y.toFixed(2)+"Mhz":"Stopped")}
|
|
|
|
|
var gi="failsafe",bi="validate",di="timestamp",ni="version",oi="url",pi="browser",li="user",fi=-1,Wh=0,ei=1,ii=2,Ei=3;ib(function(){for(var a=qa(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=oa(c),c=qa(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=oa(f),g=new Uh(g,d,!0);pa(g,f);g.L&&$h(g,g.nb)}});jb.show.push(function(){for(var a=qa(document,"pc8080","computer"),b=0;b<a.length;b++){var c=oa(a[b]);(c=ma("Computer",c.id))&&c.W&&!c.G.ja&&c.nb(fi)}});
|
|
|
|
|
jb.exit.push(function(){for(var a=qa(document,"pc8080","computer"),b=0;b<a.length;b++){var c=oa(a[b]);(c=ma("Computer",c.id))&&c.G.ja&&Nh(c,!(!c.b||c.D),!0)}});function Vc(a,b,c){this.id=a.id;this.K=a.K;this.g="";this.b={};this.u=this.H=!1;this.key=Gi(a,b,c);ji(this,a.Ad)}k=Vc.prototype;k.set=function(a,b){try{this.b[a]=b}catch(c){}};k.get=function(a){return this.b[a]||null};k.data=function(){return this.b};
|
|
|
|
|
function Yh(a,b){return b?(a.g=b,a.u=!0,a.H=!1,!0):a.u?!0:Wa()&&(b=Ya(a.key))?(a.g=b,a.u=!0):!1}function ci(a){var b=!0;if(!a.H)try{a.b=JSON.parse(a.g),a.H=!0}catch(c){p(c.message||c),b=!1}return b}function ki(a){var b=!0;if(Wa()){var c=JSON.stringify(a.b);Za(a.key,c)||(p("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.b?JSON.stringify(this.b):this.g};function ji(a,b){a.g="";a.b={};a.u=a.H=!1;b&&a.set("parms",b)}
|
|
|
|
|
k.clear=function(a){ji(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 Gi(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var Hi=0;
|
|
|
|
|
function Ii(a,b,c,d,e,f){e("Loading "+a+"...");Ta(a,null,!0,function(g,h,m){m?(h||(h="unable to load "+a+" ("+m+")"),f(h,null)):Ji(h,a,b,c,d,e,f)})}
|
|
|
|
|
function Ji(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&(ea(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{",d+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PC8080$2"),
|
|
|
|
|
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){f=null,a=u.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,f)}}a?e?Ki(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
|
|
|
|
|
null)}
|
|
|
|
|
function Hi(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Sa(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],p,r=/( [a-z]+=)(['"])(.*?)\2/g;p=r.exec(f);)l=0>l.indexOf(p[1])?l.replace(">",p[0]+">"):l.replace(new RegExp(p[1]+"(['\"])(.*?)\\1"),p[0]);h[0]!=l&&(g=g.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");
|
|
|
|
|
a=a.replace(d[0],g);Hi(a,b,c)}})}else c(a,null)}
|
|
|
|
|
function Ii(a,b,c,d){function e(a){if(void 0===h){var b=g&&pa(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=Ia(a))}function f(a){e("Error: "+a);l&&(--Ei||mb(!0));l=!1}var g,h,l=!0;Ei++;ea[a]={};try{if(g=document.getElementById(a)){var p;if("object"==typeof resources&&(p=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css";t.styleSheet?t.styleSheet.cssText=p:t.appendChild(document.createTextNode(p));r.appendChild(t)}c||
|
|
|
|
|
(c="/versions/pc8080/1.32.2/components.xsl");p=function(d,h){h?Fi(c,null,null,!1,e,function(d,l){l?(da(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=h.transformNode(l))?(g.outerHTML=l,--Ei||mb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(l),(l=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--Ei||mb(!0)):f("invalid machine element: "+
|
|
|
|
|
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?Fi(b,a,d,!0,e,p):Gi(b,null,a,d,!1,e,p)}else f("missing machine element: "+a)}catch(A){f(A.message)}return l}window.embedPC8080=function(a,b,c,d){mb(!1);return Ii(a,b,c,d)};window.findMachineComponent=function(a,b){return la(b,a+".machine")};window.enableEvents=mb;window.sendEvent=ob;})();
|
|
|
|
|
function Ki(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ta(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var m=h[0],r,u=/( [a-z]+=)(['"])(.*?)\2/g;r=u.exec(f);)m=0>m.indexOf(r[1])?m.replace(">",r[0]+">"):m.replace(new RegExp(r[1]+"(['\"])(.*?)\\1"),r[0]);h[0]!=m&&(g=g.replace(h[0],m))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");
|
|
|
|
|
a=a.replace(d[0],g);Ki(a,b,c)}})}else c(a,null)}
|
|
|
|
|
function Li(a,b,c,d){function e(a){if(void 0===h){var b=g&&qa(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=Ja(a))}function f(a){e("Error: "+a);m&&(--Hi||nb(!0));m=!1}var g,h,m=!0;Hi++;fa[a]={};try{if(g=document.getElementById(a)){var r;if("object"==typeof resources&&(r=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=r:v.appendChild(document.createTextNode(r));u.appendChild(v)}c||
|
|
|
|
|
(c="/versions/pc8080/1.32.2/components.xsl");r=function(d,h){h?Ii(c,null,null,!1,e,function(d,m){m?(ea(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(m=h.transformNode(m))?(g.outerHTML=m,--Hi||nb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(m),(m=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(m,g),--Hi||nb(!0)):f("invalid machine element: "+
|
|
|
|
|
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?Ii(b,a,d,!0,e,r):Ji(b,null,a,d,!1,e,r)}else f("missing machine element: "+a)}catch(B){f(B.message)}return m}window.embedPC8080=function(a,b,c,d){nb(!1);return Li(a,b,c,d)};window.findMachineComponent=function(a,b){return ma(b,a+".machine")};window.enableEvents=nb;window.sendEvent=pb;})();
|
|
|
|
|
|