|
|
|
|
@ -1,177 +1,179 @@
|
|
|
|
|
(function(){var m;
|
|
|
|
|
function aa(a,b){var d;if(a){b||(b=10);var c=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==c?(b=8,c=null):"$"==c&&(b=16,c=null);null==c?a=a.substr(1):("0"==c&&(c=a.charAt(1),"b"==c&&e&&(b=2,c=null),"o"==c?(b=8,c=null):"x"==c&&(b=16,c=null)),null==c?a=a.substr(2):(c=a.charAt(a.length-1).toLowerCase(),"y"==c?(b=2,c=null):"."==c?(b=10,c=null):"h"==c&&(b=16,c=null),null==c&&(a=a.substr(0,a.length-1))));var f,c=a;((e=b)&&10!=e?16==e?null!==c.match(/^[0-9a-f]+$/i):8==e?null!==c.match(/^[0-7]+$/):2==
|
|
|
|
|
e&&null!==c.match(/^[01]+$/):null!==c.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(d=f|0)}return d}function ga(a,b,d){var c="";b?11<b&&(b=11):b=a&-65536?11:6;if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;)c=String.fromCharCode((a&7)+48)+c,a>>=3;return(d?"0o":"")+c}function r(a,b,d){var c="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),c=String.fromCharCode(e)+c;a>>=4}return(d?"0x":"")+c}
|
|
|
|
|
function ha(a){var b=a,d=a.lastIndexOf("/");0<=d&&(b=a.substr(d+1));d=b.indexOf("&");0<d&&(b=b.substr(0,d));return b}function ia(a){var b="",d=a.lastIndexOf(".");0<=d&&(b=a.substr(d+1).toLowerCase());return b}function la(){var a=ma();return-1!==a.indexOf("pcjs.org",a.length-8)}var na={"&":"&","<":"<",">":">",'"':""","'":"'"};function oa(a){return a.replace(/[&<>"']/g,function(a){return na[a]})}function pa(a,b){return(a+" ").slice(0,b)}
|
|
|
|
|
function qa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function ua(a,b,d){var c=0,e=a.length,f=0;for(void 0===d&&(d=function(a,b){return a>b?1:a<b?-1:0});c<e;){var h=c+e>>1,g;g=d(b,a[h]);0<g?c=h+1:(e=h,f=!g)}return f?c:~c}var va=Date.now||function(){return+new Date};function wa(){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 ha(a){var b=a,d=a.lastIndexOf("/");0<=d&&(b=a.substr(d+1));d=b.indexOf("&");0<d&&(b=b.substr(0,d));return b}function ia(a){var b="",d=a.lastIndexOf(".");0<=d&&(b=a.substr(d+1).toLowerCase());return b}function ja(){var a=ka();return-1!==a.indexOf("pcjs.org",a.length-8)}var la={"&":"&","<":"<",">":">",'"':""","'":"'"};function oa(a){return a.replace(/[&<>"']/g,function(a){return la[a]})}function pa(a,b){return(a+" ").slice(0,b)}
|
|
|
|
|
function qa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function ra(a,b,d){var c=0,e=a.length,f=0;for(void 0===d&&(d=function(a,b){return a>b?1:a<b?-1:0});c<e;){var h=c+e>>1,g;g=d(b,a[h]);0<g?c=h+1:(e=h,f=!g)}return f?c:~c}var va=Date.now||function(){return+new Date};function wa(){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 xa(a,b,d,c){var e=0,f=null,h=null;if("object"==typeof resources&&(f=resources[a]))return c&&c(a,f,e),[f,e];if(d&&"function"==typeof resources)return resources(a,function(b,d){c&&c(a,b,d)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");d&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),c&&c(a,f,e))});if(b&&"object"==
|
|
|
|
|
typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");g.open("POST",a,!!d);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(k)}else g.open("GET",a,!!d),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();d||(f=g.responseText,200!=g.status&&(e=g.status||-1),c&&c(a,f,e),h=[f,e]);return h}function ma(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
|
|
|
|
typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");g.open("POST",a,!!d);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(k)}else g.open("GET",a,!!d),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();d||(f=g.responseText,200!=g.status&&(e=g.status||-1),c&&c(a,f,e),h=[f,e]);return h}function ka(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
|
|
|
|
function t(a){window&&window.alert(a)}function ya(a){var b=!1;window&&(b=window.confirm(a));return b}var za=null;function Aa(){if(null==za){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}za=a}return za}function Ba(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(d){}return b}
|
|
|
|
|
function Ha(a,b){try{return window.localStorage.setItem(a,b),!0}catch(d){}return!1}function Ia(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ja(a,b,d){function c(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(c,0):d()}c()}
|
|
|
|
|
function Ca(a,b){try{return window.localStorage.setItem(a,b),!0}catch(d){}return!1}function Ia(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ja(a,b,d){function c(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(c,0):d()}c()}
|
|
|
|
|
function Ka(a,b){function d(){b(100===c)&&(e=setTimeout(d,c),c=100)}var c=0,e=null,f=!1;a.onmousedown=function(){f||e||(c=500,d())};a.ontouchstart=function(){e||(c=500,d())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var La={init:[],show:[],exit:[]},Ma=!1,Na=!1,Oa=!0;function Pa(a,b){if(window){var d=window[a];window[a]="function"!==typeof d?b:function(){d&&d();b()}}}function Qa(a){La.init.push(a)}
|
|
|
|
|
function Ra(a){if(Oa)try{for(var b=0;b<a.length;b++)a[b]()}catch(d){t(""+("An unexpected exception occurred:\n\n"+d.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function Sa(a){!Oa&&a?(Oa=!0,Ma&&Ta("init"),Na&&Ta("show")):Oa=a}function Ta(a){La[a]&&Ra(La[a])}Pa("onload",function(){Ma=!0;Ra(La.init)});Pa("onpageshow",function(){Na=!0;Ra(La.show)});Pa(Ia("Opera")||Ia("iOS")?"onunload":"onbeforeunload",function(){Ra(La.exit)});
|
|
|
|
|
function u(a,b,d,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.qb=b.comment;this.Jb=b;b=this.id.indexOf(".");0>b?this.cb=this.id:(this.rb=this.id.substr(0,b),this.cb=this.id.substr(b+1));this[a]=d;this.A={ready:!1,Ga:!1,eb:!1,$:!1,error:!1};this.$a=null;this.A.error=!1;this.K={};this.I=null;this.aa=c||0;x.push(this)}var Ua=void 0,Va={};
|
|
|
|
|
function u(a,b,d,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.tb=b.comment;this.Mb=b;b=this.id.indexOf(".");0>b?this.gb=this.id:(this.ub=this.id.substr(0,b),this.gb=this.id.substr(b+1));this[a]=d;this.A={ready:!1,Ga:!1,hb:!1,$:!1,error:!1};this.bb=null;this.A.error=!1;this.K={};this.I=null;this.aa=c||0;x.push(this)}var Ua=void 0,Va={};
|
|
|
|
|
if(window){Ua||(Ua=window.location.search.substr(1));for(var Wa,Xa=/\+/g,Ya=/([^&=]+)=?([^&]*)/g;Wa=Ya.exec(Ua);)Va[decodeURIComponent(Wa[1].replace(Xa," "))]=decodeURIComponent(Wa[2].replace(Xa," "))}function Za(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var d=typeof a;if("object"!==d&&"function"!==d)throw new TypeError;}b.prototype=a;return new b}
|
|
|
|
|
function y(a,b){b||(b=u);a.prototype=Za(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var $a=window.PCjs.Machines||(window.PCjs.Machines={}),x=window.PCjs.Components||(window.PCjs.Components=[])}else $a={},x=[];function ab(a,b,d){$a[a]&&b&&($a[a][b]=d)}function bb(a){var b,d=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<x.length;b++){var c=x[b];a&&c.id.indexOf(a)||d.push(c)}return d}
|
|
|
|
|
function mb(a,b){var d;if(void 0!==a){var c;b&&(b=0<(c=b.indexOf("."))?b.substr(0,c+1):"");for(c=0;c<x.length;c++)if(d)d==x[c]&&(d=null);else if(!(a!=x[c].type||b&&x[c].id.indexOf(b)))return x[c]}return null}function B(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(d){t(d.message+" ("+a+")")}return b}
|
|
|
|
|
function cb(a,b){var d;if(void 0!==a){var c;b&&(b=0<(c=b.indexOf("."))?b.substr(0,c+1):"");for(c=0;c<x.length;c++)if(d)d==x[c]&&(d=null);else if(!(a!=x[c].type||b&&x[c].id.indexOf(b)))return x[c]}return null}function B(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(d){t(d.message+" ("+a+")")}return b}
|
|
|
|
|
function nb(a,b){for(var d=C(b.parentNode,"pdp11-control"),c=0;c<d.length;c++)for(var e=d[c].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pdp11-binding":(g=B(h))&&g.binding&&a.ha(g.type,g.binding,h,g.value),l=k.length}}}}
|
|
|
|
|
function C(a,b,d){d&&(b+="-"+d+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var c;d=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(c=a.length;b<c;b++)e.test(a[b].className)&&d.push(a[b]);return d}
|
|
|
|
|
u.prototype={constructor:u,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ha:function(a,b,d){switch(b){case "clear":return this.K[b]||(this.K[b]=d,d.onclick=function(a){return function(){a.K.print&&(a.K.print.value="")}}(this)),!0;case "print":return this.K[b]||(this.wa=this.K[b]=d,d.value="",this.g=function(a){return function(b,d){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==d?d+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(d),
|
|
|
|
|
this.ea=function(a){this.g(a,this.cb)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.cb+": "+a)},ea:function(a,b,d){d=d||this.type;b||t((d?d+": ":"")+a)},ta:function(){return this.A.$=!0},sa:function(a,b){b&&(this.A.$=!1);return!0}};function ob(a,b){if(a.I){a===a.I?b|=0:b=b||a.aa;var d=a.I.aa&b;return!!b&&d===b||!!(d&a.I.Eb)}return!1}
|
|
|
|
|
function pb(a,b){if(a.A.eb)return a.A.Ga&&(a.A.Ga=!1),a.A.eb=!1;if(a.A.error)return a.g(a.toString()+" error"),!1;a.A.Ga=b;return a.A.Ga}function qb(a,b){a.A.Ga&&(b?a.A.eb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.A.Ga}function E(a){if(!a.A.error&&(a.A.ready=!0,a.A.ready)){var b=a.$a;a.$a=null;b&&b()}}function rb(a,b){b&&(a.A.ready?b():a.$a=b);return a.A.ready}function sb(a,b){a.A.error=!0;a.ea(b)}
|
|
|
|
|
var tb="undefined"!==typeof ArrayBuffer,F={cpu:1,bus:64,mem:128,keyboard:65536,key:131072,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function ub(a){u.call(this,"Panel",a,ub)}y(ub);m=ub.prototype;m.ha=function(a,b,d,c){return this.u&&this.u.ha(a,b,d,c)||this.f&&this.f.ha(a,b,d,c)||this.I&&this.I.ha(a,b,d,c)?!0:this.parent.ha.call(this,a,b,d,c)};m.xa=function(a,b,d,c){this.u=a;this.F=b;this.f=d;this.I=c};
|
|
|
|
|
u.prototype={constructor:u,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ha:function(a,b,d){switch(b){case "clear":return this.K[b]||(this.K[b]=d,d.onclick=function(a){return function(){a.K.print&&(a.K.print.value="")}}(this)),!0;case "print":return this.K[b]||(this.xa=this.K[b]=d,d.value="",this.g=function(a){return function(b,d){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==d?d+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(d),
|
|
|
|
|
this.ea=function(a){this.g(a,this.gb)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.gb+": "+a)},ea:function(a,b,d){d=d||this.type;b||t((d?d+": ":"")+a)},ta:function(){return this.A.$=!0},sa:function(a,b){b&&(this.A.$=!1);return!0}};function ob(a,b){if(a.I){a===a.I?b|=0:b=b||a.aa;var d=a.I.aa&b;return!!b&&d===b||!!(d&a.I.Hb)}return!1}
|
|
|
|
|
function pb(a,b){if(a.A.hb)return a.A.Ga&&(a.A.Ga=!1),a.A.hb=!1;if(a.A.error)return a.g(a.toString()+" error"),!1;a.A.Ga=b;return a.A.Ga}function qb(a,b){a.A.Ga&&(b?a.A.hb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.A.Ga}function E(a){if(!a.A.error&&(a.A.ready=!0,a.A.ready)){var b=a.bb;a.bb=null;b&&b()}}function rb(a,b){b&&(a.A.ready?b():a.bb=b);return a.A.ready}function sb(a,b){a.A.error=!0;a.ea(b)}
|
|
|
|
|
var tb="undefined"!==typeof ArrayBuffer,F={cpu:1,bus:64,mem:128,keyboard:65536,key:131072,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function ub(a){u.call(this,"Panel",a,ub)}y(ub);m=ub.prototype;m.ha=function(a,b,d,c){return this.j&&this.j.ha(a,b,d,c)||this.f&&this.f.ha(a,b,d,c)||this.I&&this.I.ha(a,b,d,c)?!0:this.parent.ha.call(this,a,b,d,c)};m.va=function(a,b,d,c){this.j=a;this.F=b;this.f=d;this.I=c};
|
|
|
|
|
m.ta=function(a,b){b||vb();return!0};m.sa=function(){return!0};m.ja=function(){};function vb(){for(var a=!1,b=C(document,"pdp11","panel"),d=0;d<b.length;d++){var c=b[d],e=B(c),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<x.length;h++)if(x[h].id===f){f=x[h];break a}f=null}f||(a=!0,f=new ub(e));nb(f,c);a&&E(f)}}Qa(vb);
|
|
|
|
|
function wb(a,b,d){u.call(this,"Bus",a,wb);this.f=b;this.I=d;this.H=a.busWidth||16;this.J=Math.pow(2,this.H);this.u=this.J-1|0;this.S=(this.H>>1)+2;10>this.S&&(this.S=10);15<this.S&&(this.S=15);this.ma=1<<this.S;this.L=this.ma>>2;this.F=this.ma-1;this.G=this.J/this.ma|0;this.B=this.G-1;a=new G;xb(a,this.I);this.M=Array(this.G);for(b=0;b<this.G;b++)this.M[b]=a;this.Oa=Array(4);this.Oa[0]=this.Nb;this.Oa[1]=this.Ob;this.Oa[2]=this.Pb;this.Oa[3]=this.Qb;yb(this,4186112,8192,zb,this);E(this)}y(wb);
|
|
|
|
|
m=wb.prototype;m.Nb=function(){return 0};m.Ob=function(){return 0};m.Pb=function(){};m.Qb=function(){};m.reset=function(){};m.ta=function(a,b){b||this.reset();return!0};
|
|
|
|
|
function yb(a,b,d,c,e){for(var f=b,h=d,g=f>>>a.S;0<h&&g<a.M.length;){var k=a.M[g],l=g*a.ma,n=a.ma-(f-l);n>h&&(n=h);if(k&&k.size){if(k.type==c&&k.controller==e){if(f+h<=k.D)return k.Ya+=k.D-f,k.D=f,!0;if(f>=k.D+k.Ya){n=k.size-(f-l);n>h&&(n=h);k.Ya=f-k.D+n;f=l+a.ma;h-=n;g++;continue}}return Ab(1,f,h)}f=new G(f,n,a.ma,c,e);xb(f,a.I,k);a.M[g++]=f;f=l+a.ma;h-=n}return 0>=h?(a.status(Math.floor(d/1024)+"Kb "+Bb[c]+" at "+r(b,8,!0)),!0):Ab(2,b,d)}
|
|
|
|
|
m.Sa=function(a){return this.M[(a&this.u)>>>this.S].Ka(a&this.F,a)};m.pa=function(a){var b=a&this.F,d=(a&this.u)>>>this.S;return b!=this.F?this.M[d].Ab(b,a):this.M[d++].Ka(b,a)|this.M[d&this.B].Ka(0,a+1)<<8};function Cb(a,b){var d=b&a.F,c=(b&a.u)>>>a.S;return d!=a.F?a.M[c].hb(d,b):a.M[c++].Wa(d,b)|a.M[c&a.B].Wa(0,b+1)<<8}m.bb=function(a,b){this.M[(a&this.u)>>>this.S].Ma(a&this.F,b&255,a)};
|
|
|
|
|
m.ib=function(a,b){var d=a&this.F,c=(a&this.u)>>>this.S;d!=this.F?this.M[c].Cb(d,b&65535,a):(this.M[c++].Ma(d,b&255,a),this.M[c&this.B].Ma(0,b>>8&255,a+1))};function Ab(a,b,d){t("Memory block error ("+a+": "+r(b)+","+r(d)+")");return!1}var Db;if(tb){var Pb=new ArrayBuffer(2);(new DataView(Pb)).setUint16(0,256,!0);Db=256===(new Uint16Array(Pb))[0]}else Db=!1;var Qb=Db;
|
|
|
|
|
function G(a,b,d,c,e){this.id=Rb+=2;this.f=null;this.D=a;this.Ya=b;this.size=d||0;this.type=c||Sb;this.K=c==Tb;this.controller=null;xb(this);this.ua=this.Gb=!1;if(d)if(e)this.controller=e,this.f=null,Ub(this,e.Oa);else if(tb)this.H=new ArrayBuffer(d),this.J=new DataView(this.H,0,d),this.F=new Uint8Array(this.H,0,d),this.N=new Uint16Array(this.H,0,d>>1),this.f=new Int32Array(this.H,0,d>>2),Ub(this,Qb?Vb:Wb);else{this.f=Array(d>>2);for(a=0;a<this.f.length;a++)this.f[a]=0;Ub(this,Xb)}else Ub(this)}
|
|
|
|
|
var Sb=0,Tb=2,zb=4,Bb=["NONE","RAM","ROM","VID","H/W"],Rb=0;
|
|
|
|
|
G.prototype={constructor:G,parent:null,save:function(){var a,b;if(this.controller)a=null;else if(tb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.J.getInt32(b<<2,!0);else a=this.f;return a},restore:function(a){if(this.controller)return null==a;if(a&&this.size==a.length<<2){var b;if(tb)for(b=0;b<a.length;b++)this.J.setInt32(b<<2,a[b],!0);else this.f=a;return this.ua=!0}return!1},va:function(a,b){b?0===this.B++&&Yb(this,Zb,!1):0===this.u++&&$b(this,Zb,!1)},O:function(){this.I&&ob(this.I,129)&&
|
|
|
|
|
function wb(a,b,d){u.call(this,"Bus",a,wb);this.f=b;this.I=d;this.L=a.busWidth||16;this.J=Math.pow(2,this.L);this.j=this.J-1|0;this.S=(this.L>>1)+2;10>this.S&&(this.S=10);15<this.S&&(this.S=15);this.ma=1<<this.S;this.M=this.ma>>2;this.F=this.ma-1;this.G=this.J/this.ma|0;this.B=this.G-1;this.$a=[];a=new G;xb(a,this.I);this.N=Array(this.G);for(b=0;b<this.G;b++)this.N[b]=a;this.Oa=Array(4);this.Oa[0]=yb;this.Oa[1]=zb;this.Oa[2]=Ab;this.Oa[3]=Bb;this.H=this.J-8192;Cb(this,this.H,8192,Db,this);E(this)}
|
|
|
|
|
y(wb);function yb(){return 0}function zb(a,b){var d=this.controller.$a[a];return d?d[0](b):0}function Ab(){}function Bb(a,b,d){return(a=this.controller.$a[a])?a[1](b,d):0}m=wb.prototype;m.reset=function(){};m.ta=function(a,b){b||this.reset();return!0};
|
|
|
|
|
function Cb(a,b,d,c,e){for(var f=b,h=d,g=f>>>a.S;0<h&&g<a.N.length;){var k=a.N[g],l=g*a.ma,n=a.ma-(f-l);n>h&&(n=h);if(k&&k.size){if(k.type==c&&k.controller==e){if(f+h<=k.D)return k.Ya+=k.D-f,k.D=f,!0;if(f>=k.D+k.Ya){n=k.size-(f-l);n>h&&(n=h);k.Ya=f-k.D+n;f=l+a.ma;h-=n;g++;continue}}return Eb(1,f,h)}f=new G(f,n,a.ma,c,e);xb(f,a.I,k);a.N[g++]=f;f=l+a.ma;h-=n}return 0>=h?(a.status(Math.floor(d/1024)+"Kb "+Qb[c]+" at "+r(b,8,!0)),!0):Eb(2,b,d)}
|
|
|
|
|
m.Sa=function(a){return this.N[(a&this.j)>>>this.S].Ka(a&this.F,a)};m.pa=function(a){var b=a&this.F,d=(a&this.j)>>>this.S;return b!=this.F?this.N[d].Db(b,a):this.N[d++].Ka(b,a)|this.N[d&this.B].Ka(0,a+1)<<8};function Rb(a,b){var d=b&a.F,c=(b&a.j)>>>a.S;return d!=a.F?a.N[c].kb(d,b):a.N[c++].Wa(d,b)|a.N[c&a.B].Wa(0,b+1)<<8}m.fb=function(a,b){this.N[(a&this.j)>>>this.S].Ma(a&this.F,b&255,a)};
|
|
|
|
|
m.lb=function(a,b){var d=a&this.F,c=(a&this.j)>>>this.S;d!=this.F?this.N[c].Fb(d,b&65535,a):(this.N[c++].Ma(d,b&255,a),this.N[c&this.B].Ma(0,b>>8&255,a+1))};function Eb(a,b,d){t("Memory block error ("+a+": "+r(b)+","+r(d)+")");return!1}function Sb(a){u.call(this,"Device",a,Sb);this.j=a.name}y(Sb);
|
|
|
|
|
Sb.prototype.va=function(a,b,d,c){this.F=b;this.f=d;this.I=c;switch(this.j){default:a=Tb;for(var e in a){var f=a[e];d=b;c=+e;for(var h=f[0]?f[0].bind(this):null,f=f[1]?f[1].bind(this):null,g=+e;g<=c;g+=2){var k=g&8191;if(0>k||8192<=k){t("I/O address out of bounds: "+r(d.H+k,8,!0));break}void 0!==d.$a[k]?t("I/O address already registered: "+r(d.H+k,8,!0)):d.$a[k]=[h,f,!1]}}}E(this)};Sb.prototype.cb=function(){return this.f.cb()};Sb.prototype.Za=function(a){this.f.Za(a)};var Tb={};
|
|
|
|
|
Tb[4194302]=[Sb.prototype.cb,Sb.prototype.Za];Qa(function(){for(var a=C(document,"pdp11","device"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Sb(c);nb(c,d)}});var Ub;if(tb){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 G(a,b,d,c,e){this.id=Xb+=2;this.f=null;this.D=a;this.Ya=b;this.size=d||0;this.type=c||Yb;this.K=c==Zb;this.controller=null;xb(this);this.ua=this.Jb=!1;if(d)if(e)this.controller=e,this.f=null,$b(this,e.Oa);else if(tb)this.H=new ArrayBuffer(d),this.J=new DataView(this.H,0,d),this.F=new Uint8Array(this.H,0,d),this.M=new Uint16Array(this.H,0,d>>1),this.f=new Int32Array(this.H,0,d>>2),$b(this,Wb?ac:bc);else{this.f=Array(d>>2);for(a=0;a<this.f.length;a++)this.f[a]=0;$b(this,cc)}else $b(this)}
|
|
|
|
|
var Yb=0,Zb=2,Db=4,Qb=["NONE","RAM","ROM","VID","H/W"],Xb=0;
|
|
|
|
|
G.prototype={constructor:G,parent:null,save:function(){var a,b;if(this.controller)a=null;else if(tb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.J.getInt32(b<<2,!0);else a=this.f;return a},restore:function(a){if(this.controller)return null==a;if(a&&this.size==a.length<<2){var b;if(tb)for(b=0;b<a.length;b++)this.J.setInt32(b<<2,a[b],!0);else this.f=a;return this.ua=!0}return!1},wa:function(a,b){b?0===this.B++&&dc(this,ec,!1):0===this.j++&&fc(this,ec,!1)},O:function(){this.I&&ob(this.I,129)&&
|
|
|
|
|
this.I.message("attempt to read invalid block %"+r(this.D),!0);return 255},G:function(a,b){this.I&&ob(this.I,129)&&this.I.message("attempt to write "+r(b,4,!0)+" to invalid block %"+r(this.D),!0)},P:function(a,b){return this.Ka(a++,b++)|this.Ka(a,b)<<8},L:function(a,b,d){this.Ma(a++,b&255,d++);this.Ma(a,b>>8,d)},V:function(a){return this.f[a>>2]>>>((a&3)<<3)&255},Z:function(a){var b=a>>2;a=(a&3)<<3;var d=this.f[b]>>a;return 24>a?d&65535:d&255|(this.f[b+1]&255)<<8},ia:function(a,b){var d=a>>2,c=(a&
|
|
|
|
|
3)<<3;this.f[d]=this.f[d]&~(255<<c)|b<<c;this.ua=!0},qa:function(a,b){var d=a>>2,c=(a&3)<<3;24>c?this.f[d]=this.f[d]&~(65535<<c)|b<<c:(this.f[d]=this.f[d]&16777215|b<<24,d++,this.f[d]=this.f[d]&-256|b>>8);this.ua=!0},T:function(a,b){if(this.I&&null!=this.D){var d=this.I;ac(d,this.D+a,1,d.R)&&d.ca(!0)}return this.Wa(a,b)},X:function(a,b){if(this.I&&null!=this.D){var d=this.I;ac(d,this.D+a,2,d.R)&&d.ca(!0)}return this.hb(a,b)},fa:function(a,b,d){if(this.I&&null!=this.D){var c=this.I;ac(c,this.D+a,1,
|
|
|
|
|
c.J)&&c.ca(!0)}this.K?this.G(a,b,d):this.Na(a,b,d)},la:function(a,b,d){if(this.I&&null!=this.D){var c=this.I;ac(c,this.D+a,2,c.J)&&c.ca(!0)}this.K?this.G(a,b,d):this.kb(a,b,d)},R:function(a){return this.F[a]},U:function(a){return this.F[a]},W:function(a){return this.J.getUint16(a,!0)},Y:function(a){return a&1?this.F[a]|this.F[a+1]<<8:this.N[a>>1]},da:function(a,b){this.F[a]=b;this.ua=!0},ga:function(a,b){this.F[a]=b;this.ua=!0},ka:function(a,b){this.J.setUint16(a,b,!0);this.ua=!0},na:function(a,b){a&
|
|
|
|
|
1?(this.F[a]=b,this.F[a+1]=b>>8):this.N[a>>1]=b;this.ua=!0}};function xb(a,b,d){a.I=b;a.u=a.B=0;d&&((a.u=d.u)&&$b(a,Zb,!1),(a.B=d.B)&&Yb(a,Zb,!1))}function bc(a,b){b?0===--a.B&&(a.Ma=a.K?a.G:a.Na,a.Cb=a.K?a.L:a.kb):0===--a.u&&(a.Ka=a.Wa,a.Ab=a.hb)}function Yb(a,b,d){d&&a.B||(a.Ma=!a.K&&b[2]||a.G,a.Cb=!a.K&&b[3]||a.L);if(d||void 0===d)a.Na=b[2]||a.G,a.kb=b[3]||a.L}function $b(a,b,d){d&&a.u||(a.Ka=b[0]||a.O,a.Ab=b[1]||a.P);if(d||void 0===d)a.Wa=b[0]||a.O,a.hb=b[1]||a.P}
|
|
|
|
|
function Ub(a,b){b||(b=cc);$b(a,b,void 0);Yb(a,b,void 0)}var cc=[],Xb=[G.prototype.V,G.prototype.Z,G.prototype.ia,G.prototype.qa],Zb=[G.prototype.T,G.prototype.X,G.prototype.fa,G.prototype.la];if(tb)var Wb=[G.prototype.R,G.prototype.W,G.prototype.da,G.prototype.ka],Vb=[G.prototype.U,G.prototype.Y,G.prototype.ga,G.prototype.na];
|
|
|
|
|
function dc(a,b){u.call(this,"CPU",a,dc,1);var d=a.multiplier||1;this.Fa=a.cycles||b;this.za=d;this.Da=Math.round(this.Fa/1E4)/100;this.ya=this.Da*this.za;this.A.ba=!1;this.A.jb=!1;this.A.Pa=a.autoStart;this.A.ob=!1;this.A.Ha=!1;this.Ta=this.Y=0;this.Ua=a.csStart;this.Ia=a.csInterval;this.Ja=a.csStop;this.ia=[];this.Ib=this.Ba.bind(this);E(this)}y(dc);var ec=["power","reset"];m=dc.prototype;
|
|
|
|
|
m.xa=function(a,b,d,c){this.u=a;this.F=b;this.I=c;for(b=0;b<ec.length;b++)(d=this.K[ec[b]])&&this.u.ha(null,ec[b],d);this.fa=null;a=fc(a,"autoStart");null!=a&&(this.A.Pa="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
|
|
|
|
|
m.ta=function(a,b){if(!b){if(a&&this.restore){gc(this);if(!this.restore(a))return!1;hc(this)}else this.reset();if(this.I){var d=this.I;d.g("Type ? for help with PDP11 Debugger commands");d.ja();if(d.qa){var c=d.qa;d.qa=null;ic(d,c)}}else this.g("No debugger detected")}H(this);return!0};m.sa=function(a){return a?this.save():!0};m.Pa=function(){return this.A.Pa||!this.I&&void 0===this.K.run?(this.Ba(!0),!0):!1};m.sb=function(){return 0};
|
|
|
|
|
function hc(a){void 0===a.Ua&&(a.Ua=0);void 0===a.Ia&&(a.Ia=-1);void 0===a.Ja&&(a.Ja=-1);a.A.Ha=0<=a.Ua&&0<a.Ia;a.A.Ha&&(a.Ta=0,a.Y=a.Ua-a.V)}function jc(a,b){if(a.A.Ha){var d=!1;a.Ta=a.Ta+a.sb()|0;a.Y-=b;0>=a.Y&&(a.Y+=a.Ia,d=!0);0<=a.Ja&&a.Ja<=kc(a)&&(a.Ia=a.Ja=-1,hc(a),a.ca(),d=!0);d&&a.g(kc(a)+" cycles: checksum="+r(a.Ta))}}
|
|
|
|
|
function lc(a,b,d,c){if(a.K[b]){void 0===d&&(sb(a,"Value for "+b+" is invalid"),a.ca());var e=a.I&&a.I.fa||8;d=!a.A.ba||a.A.ob?8==e?ga(d,c):r(d,c):"--------".substr(0,c||4);a.K[b].textContent!=d&&(a.K[b].textContent=d)}}
|
|
|
|
|
m.ha=function(a,b,d){var c=this;a=!1;switch(b){case "power":case "reset":this.K[b]=d;a=!0;break;case "run":this.K[b]=d;d.onclick=function(){var a;if(a=c.u)if(a=c.u,a.A.$)a=!0;else{var b=null,d,g=bb(a.id);for(d=0;d<g.length&&(b=g[d],b===a||b.A.ready);d++);if(d==g.length)for(d=0;d<g.length&&(b=g[d],b===a||b.A.$);d++);d==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.A.ready?"powered yet":"ready yet"+(b.$a?" (waiting for notification)":""))+".");a=!1}a&&(c.A.ba?c.ca():c.Ba())};a=
|
|
|
|
|
!0;break;case "speed":this.K[b]=d;a=!0;break;case "setSpeed":this.K[b]=d,d.onclick=function(){mc(c,c.za<<1,!0)},d.textContent=this.ya.toFixed(2)+"Mhz",a=!0}return a};function nc(a,b,d){a.V+=b;d&&(a.U=a.P=0)}function oc(a,b){var d=1;b&&1<a.za&&a.R&&(d=a.R/a.Da);a.wb=Math.round(1E3/30);a.na=Math.floor(a.Fa/30*d);b||(a.Z=a.na);a.Qa=0}function kc(a){return a.V+a.O+a.U-a.P}function gc(a){a.R=0;a.xb=0;a.V=a.O=a.U=a.P=0;hc(a);mc(a,1)}
|
|
|
|
|
function mc(a,b,d){var c=!1;if(void 0!==b){.8>a.R/a.ya?b=1:c=!0;a.za=b;b=a.Da*a.za;if(a.ya!=b){a.ya=b;b=a.ya.toFixed(2)+"Mhz";var e=a.K.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}d&&a.u&&a.u.Xa()}nc(a,a.O);a.O=0;a.N=va();a.T=0;oc(a);return c}function pc(a){a.U-=a.P;a.P=0}
|
|
|
|
|
m.Ba=function(a){if(pb(this,!0)){if(!this.A.ba){mc(this);this.u&&this.u.start(this.N,kc(this));this.A.ba=!0;this.A.jb=!0;this.fa&&this.fa.start();var b=this.K.run;b&&(b.textContent="Halt");this.u&&(this.u.ja(!0),a&&this.u.Xa(!0))}this.Qa>=this.Fa&&oc(this,!0);this.ga=0;this.la=va();this.T&&(a=this.la-this.T,a>this.wb&&(this.N+=a,this.N>this.la&&(this.N=this.la)));try{do{for(var d=this.A.Ha?1:this.na,c=this.ia.length-1;0<=c;c--){var e=this.ia[c];0>e[0]||d>e[0]&&(d=e[0])}this.La(d);var f=this.U-this.P;
|
|
|
|
|
a=f;for(var h=this.ia.length-1;0<=h;h--){var g=this.ia[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.ga+=f;this.O+=f;nc(this,0,!0);jc(this,f);this.Z-=f;if(0>=this.Z){this.Z+=this.na;15<=++this.xb&&(this.u&&this.u.ja(),this.xb=0);break}}while(this.A.ba)}catch(k){this.ca();H(this);this.u&&this.u.stop(va(),kc(this));pb(this,!1);sb(this,k.stack||k.message);return}d=setTimeout;c=this.Ib;this.T=va();e=this.wb;this.ga&&(e=Math.round(e*this.ga/this.na));e=e-(this.T-this.la);if(f=this.T-this.N)this.R=
|
|
|
|
|
Math.round(this.O/(10*f))/100,864E5<=f&&(this.V=0,mc(this));if(0>e||this.R<this.ya)-1E3>e&&(this.N-=e),e=0;this.Qa+=this.ga;this.T+=e;d(c,e)}else H(this),this.u&&this.u.stop(va(),kc(this))};m.La=function(){return 0};m.ca=function(a){qb(this,!0);pc(this);nc(this,this.O);this.O=0;if(this.A.ba){this.A.ba=!1;this.fa&&this.fa.stop();var b=this.K.run;b&&(b.textContent="Run")}this.A.complete=a};function H(a,b){a.u&&a.u.ja(b)}
|
|
|
|
|
function Cc(a){this.zb=+a.model||1170;this.Kb=a.resetAddr||0;dc.call(this,a,1E6);this.Za=0;this.C=65536;this.j=32768;this.w=65535;this.i=32768;this.f=15;this.b=[0,0,0,0,0,0,0,this.Kb];this.ab=[0,0,0,0,0,0];this.Aa=[0,0,0,0];this.memory=[];this.H=[];this.Ra=this.yb=0;this.W=2;this.X=255;this.G=0;this.da=-1;this.vb=this.Ca=this.ub=this.B=this.qa=this.L=this.J=0;this.ka=[7,7,7,7];this.Ea=[[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,0,0,0,0,0,0,
|
|
|
|
|
0,0,0,0,0,0,0,0,0],[65535,65535,65535,65535,65535,65535,65535,65535,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,0,0,0,0,0,0,0]];this.Mb=[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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.A.complete=this.A.Fb=!1}y(Cc,dc);m=Cc.prototype;m.reset=function(){this.A.ba&&this.ca();Dc(this);gc(this);this.A.error=!1;this.parent.reset.call(this)};
|
|
|
|
|
function Dc(a){a.X=255;a.H=[];a.yb=0;a.J=a.L=a.qa=a.ub=0;a.ka[0]=a.ka[1]=a.ka[3]=7;a.Ca=0}m.sb=function(){return 0};m.save=function(){var a=new I(this);J(a,0,[]);J(a,1,[this.tb,this.V,this.za]);for(var b=this.F,d=0,c=[],e=0;e<b.G;e++){var f=b.M[e];if(f.ua||f.Gb){c[d++]=e;var h=d++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var n=f[g],p=g+1;p<f.length&&f[p]===n;)p++;l[k++]=p-g;l[k++]=n;g=p}if(l.length<f.length){f=l;break a}}c[h]=f}}J(a,2,c);return a.data()};
|
|
|
|
|
m.restore=function(a){var b=a[1];this.tb=b[0];this.V=b[1];mc(this,b[3]);a:{b=this.F;a=a[2];var d;for(d=0;d<a.length-1;d+=2){var c=a[d],e=a[d+1];if(e&&e.length<b.L){for(var f=0,h=Array(b.L),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.M[c];if(!f||!f.restore(e)){t("Unable to restore memory block "+c);b=!1;break a}}b=!0}return b};
|
|
|
|
|
m.ha=function(a,b,d){var c=!1;switch(b){case "R0":case "R1":case "R2":case "R3":case "R4":case "R5":case "R6":case "R7":case "NF":case "ZF":case "VF":case "CF":case "PSW":this.K[b]=d;this.Za++;c=!0;break;default:c=this.parent.ha.call(this,a,b,d)}return c};
|
|
|
|
|
m.ja=function(a){if(this.Za&&(a||!this.A.ba||this.A.ob)){for(a=0;a<this.b.length;a++)lc(this,"R"+a,this.b[a]);a=Ec(this);lc(this,"PSW",a);lc(this,"NF",a&8?1:0,1);lc(this,"ZF",a&4?1:0,1);lc(this,"VF",a&2?1:0,1);lc(this,"CF",a&1?1:0,1)}if(a=this.K.speed)a.textContent=this.A.ba&&this.R?this.R.toFixed(2)+"Mhz":"Stopped"};function Ec(a){return a.f&-16|(a.i&32768?8:0)|(a.w&65535?0:4)|(a.j&32768?2:0)|(a.C&65536?1:0)}
|
|
|
|
|
function Fc(a,b){a.i=b<<12;a.w=~b&4;a.j=b<<14;a.C=b<<16;if((b^a.f)&2048)for(var d=a.ab.length;0<=--d;){var c=a.b[d];a.b[d]=a.ab[d];a.ab[d]=c}a.B=b>>14&3;d=a.f>>14&3;a.B!=d&&(a.Aa[d]=a.b[6],a.b[6]=a.Aa[a.B]);a.W=2;a.f=b}
|
|
|
|
|
function K(a,b){var d,c,e=0;0>a.da?a.da=a.f=a.f&63728|(a.i&32768?8:0)|(a.w&65535?0:4)|(a.j&32768?2:0)|(a.C&65536?1:0):a.B||(b=4,e=1);a.J&57344||(a.L=63222);a.B=0;0<=(d=L(a,b|65536))&&0<=(c=L(a,b+2&65535|65536))&&(Fc(a,c&53247|a.da>>2&12288),e&&(a.b[6]=4),0<=Gc(a,a.da)&&0<=Gc(a,a.b[7])&&(a.b[7]=d));a.G=0;return a.da=-1}
|
|
|
|
|
function Hc(a,b,d){var c,e,f,h=0;if(d&a.ub){c=b>>13&a.ka[a.B];e=a.Ea[a.B][c];f=(a.Ea[a.B][c+16]<<6)+(b&8191)&4194303;if(a.qa&16){if(3932160<=f&&4186112>f){f=f&262143;var g=f>>13&31;31>g?a.qa&32&&(f=a.Mb[g]+(f&8190)&4194302,3932160<=f&&4186112>f&&console.log("panic(898)")):f|=4186112}}else f&=262143,253952<=f&&(f|=4186112);if(3932160>f&&(3915776<=f||f&1&&!(d&1)))return K(a,4);switch(e&7){case 1:h=4096;case 2:e|=128;d&4&&(h=8192);break;case 4:h=4096;case 5:d&4&&(h=4096);case 6:e|=d&4?192:128;break;
|
|
|
|
|
default:h=32768}32512!==(e&32520)&&(e&8?e&32512&&(b&8128)<(e>>2&8128)&&(h|=16384):(b&8128)>(e>>2&8128)&&(h|=16384));a.Ea[a.B][c]=e;if(4194170!==f||a.B)a.Ca=a.B,a.vb=c;if(h){if(h&57344)return 0<=a.da&&(h|=128),a.J&57344||(a.J=a.J|h|a.Ca<<5|a.vb<<1),K(a,168);a.J&61440||!(4191360>f||4194239<f)||(a.J|=4096,a.J&512&&(a.G|=2))}}else if(f=b&65535,57344<=f)f|=4186112;else if(f&1&&!(d&1))return K(a,4);return f}function N(a,b){return 4194304<=b?a.b[b-4194304]:3932160<=b?-1:0<=b?a.F.pa(b):b}
|
|
|
|
|
function O(a,b,d){d&=65535;return 4194304<=b?a.b[b-4194304]=d:0<=b?(a.F.ib(b,d),d):b}function P(a,b){return 4194304<=b?a.b[b-4194304]&255:3932160<=b?-1:0<=b?a.F.Sa(b):b}function S(a,b,d){d&=255;return 4194304<=b?a.b[b-4194304]=a.b[b-4194304]&65280|d:3932160<=b?-1:0<=b?(a.F.bb(b,d),d):b}function L(a,b){return N(a,Hc(a,b,2))}function Ic(a){var b=L(a,a.b[6]|65536);0<=b&&(a.b[6]=a.b[6]+2&65535);return b}
|
|
|
|
|
function Gc(a,b){var d,c;a.b[6]=c=a.b[6]-2&65535;a.J&57344||(a.L=a.L<<8|246);if(!a.B&&c<=a.X&&4<c){if(c<=a.X-32)return a.b[6]=4,K(a,4);a.G|=4}return 0<=(d=Hc(a,c|65536,4))?O(a,d,b):d}
|
|
|
|
|
function Jc(a,b,d){var c,e,f=b&7;switch(b>>3&7){case 0:return K(a,4);case 1:if(6===f&&!a.B&&d&4&&(a.b[6]<=a.X||65534<=a.b[6])){if(a.b[6]<=a.X-32||65534<=a.b[6])return a.b[6]=4,K(a,4);a.G|=4}return 7===f?a.b[f]:a.b[f]|65536;case 2:e=2;c=a.b[f];7!==f&&(c|=65536,6>f&&d&1&&(e=1));break;case 3:e=2;c=a.b[f];7!==f&&(c|=65536);if(0>(c=L(a,c)))return c;c|=65536;break;case 4:e=-2;6>f&&d&1&&(e=-1);c=a.b[f]+e&65535;7!==f&&(c|=65536);break;case 5:e=-2;c=a.b[f]-2&65535;7!==f&&(c|=65536);if(0>(c=L(a,c)))return c;
|
|
|
|
|
c|=65536;break;case 6:if(0>(c=L(a,a.b[7])))return c;a.b[7]=a.b[7]+2&65535;c=c+a.b[f]&65535;return c|65536;case 7:if(0>(c=L(a,a.b[7])))return c;a.b[7]=a.b[7]+2&65535;c=c+a.b[f]&65535;return 0>(c=L(a,c|65536))?c:c|65536}a.b[f]=a.b[f]+e&65535;a.J&57344||(a.L=a.L<<8|e<<3&248|f);if(6===f&&!a.B&&d&4&&0>=e&&(a.b[6]<=a.X||65534<=a.b[6])){if(a.b[6]<=a.X-32)return a.b[6]=4,K(a,4);a.G|=4}return c}function T(a,b,d){var c;return b&56?(0<=(c=Jc(a,b,d))&&(c=Hc(a,c,d)),c):4194304+(b&7)}
|
|
|
|
|
function U(a,b){var d;b&56?0<=(d=T(a,b,2))&&(d=N(a,d)):d=a.b[b&7];return d}function Kc(a,b){var d;b&56?0<=(d=T(a,b,3))&&(d=P(a,d)):d=a.b[b&7]&255;return d}function V(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
|
|
|
|
m.La=function(a){this.A.complete=!0;var b=this.A.Fb=this.I&&Lc(this.I),d=a?this.A.jb?0:1:-1;this.A.jb=!1;this.U=this.P=a;this.tb&256?(pc(this),a=!1):a=!0;if(a){do{if(b){if(Mc(this.I,this.b[7],d)){this.ca();break}d=1}var c,e,f,h,g;if(this.W)if(1===this.W)this.W=2;else{this.W=0;g=-1;c=this.yb&224;if(0<(a=this.H.length))for(;0<a--;){if(0<this.H[a].gb){this.H[a].gb--;this.W=2;break}if(this.H[a].mb){if(!this.H[a].mb()){this.H.splice(a,1);g--;continue}this.H[a].mb=null}this.H[a].Lb>c&&(c=this.H[a].Lb,g=
|
|
|
|
|
a)}c>(this.f&224)&&(0>g?K(this,160):(K(this,this.H[g].Sb),this.H.splice(g,1)))}this.J&57344||(this.L=0);this.G=this.f&16;if(0<=(a=L(this,this.b[7])))switch(this.b[7]=this.b[7]+2&65535,a&61440){case 4096:0<=(c=U(this,a>>6))&&(a&56?0<=(f=T(this,a,4))&&0<=O(this,f,c)&&(this.i=this.w=c,this.j=0):(this.i=this.w=this.b[a&7]=c,this.j=0));break;case 8192:0<=(c=U(this,a>>6))&&0<=(e=U(this,a))&&(this.i=this.w=this.C=a=c-e,this.j=(c^e)&(c^a));break;case 12288:0<=(c=U(this,a>>6))&&0<=(e=U(this,a))&&(this.i=this.w=
|
|
|
|
|
c&e,this.j=0);break;case 16384:0<=(c=U(this,a>>6))&&(a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e&~c,0<=O(this,f,a)&&(this.i=this.w=a,this.j=0)):(this.i=this.w=a=this.b[a&7]&=~c,this.j=0));break;case 20480:0<=(c=U(this,a>>6))&&(a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e|c,0<=O(this,f,a)&&(this.i=this.w=a,this.j=0)):(this.i=this.w=a=this.b[a&7]|=c,this.j=0));break;case 24576:0<=(c=U(this,a>>6))&&(a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=c+e,0<=O(this,f,a)&&(this.i=this.w=this.C=a,this.j=(c^a)&(e^a))):(g=a&7,
|
|
|
|
|
e=this.b[g],this.b[g]=(a=c+e)&65535,this.i=this.w=this.C=a,this.j=(c^a)&(e^a)));break;case 36864:0<=(c=Kc(this,a>>6))&&(a&56?0<=(f=T(this,a,5))&&0<=S(this,f,c)&&(this.i=this.w=c<<8,this.j=0):(c&128&&(c|=65280),this.i=this.w=this.b[a&7]=c,this.j=0));break;case 40960:0<=(c=Kc(this,a>>6))&&0<=(e=Kc(this,a))&&(a=c-e,this.i=this.w=this.C=a<<8,this.j=((c^e)&(c^a))<<8);break;case 45056:0<=(c=Kc(this,a>>6))&&0<=(e=Kc(this,a))&&(this.i=this.w=(c&e)<<8,this.j=0);break;case 49152:0<=(c=Kc(this,a>>6))&&0<=(e=
|
|
|
|
|
P(this,f=T(this,a,7)))&&(a=e&~c,0<=S(this,f,a)&&(this.i=this.w=a<<8,this.j=0));break;case 53248:0<=(c=Kc(this,a>>6))&&0<=(e=P(this,f=T(this,a,7)))&&(a=e|c,0<=S(this,f,a)&&(this.i=this.w=a<<8,this.j=0));break;case 57344:0<=(c=U(this,a>>6))&&(a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e-c,0<=O(this,f,a)&&(this.i=this.w=this.C=a,this.j=(c^e)&(e^a))):(g=a&7,e=this.b[g],this.b[g]=(a=e-c)&65535,this.i=this.w=this.C=a,this.j=(c^e)&(e^a)));break;default:switch(a&65024){case 2048:0<=(h=Jc(this,a,0))&&(g=a>>6&7,
|
|
|
|
|
0<=Gc(this,this.b[g])&&(this.b[g]=this.b[7],this.b[7]=h&65535));break;case 28672:0<=(c=U(this,a))&&(g=a>>6&7,c&32768&&(c|=-65536),e=this.b[g],e&32768&&(e|=-65536),a=~~(c*e),this.b[g]=a>>16&65535,this.b[g|1]=a&65535,this.i=a>>16,this.w=this.i|a,this.C=this.j=0,-32768>a||32767<a)&&(this.C=65536);break;case 29184:0<=(c=U(this,a))&&(c?(g=a>>6&7,e=this.b[g]<<16|this.b[g|1],this.C=this.j=0,c&32768&&(c|=-65536),a=~~(e/c),-32768<=a&&32767>=a?(this.b[g]=a&65535,this.b[g|1]=e-a*c&65535,this.w=a>>16|a,this.i=
|
|
|
|
|
a>>16):(this.j=32768,this.w=a>>15|a,this.i=e>>16,-1===c&&65534===this.b[g]&&(this.b[g]=this.b[g|1]=1))):(this.w=this.i=0,this.j=32768,this.C=65536));break;case 29696:0<=(c=U(this,a))&&(g=a>>6&7,a=this.b[g],a&32768&&(a|=4294901760),this.C=this.j=0,c&=63,c&32?(c=64-c,16<c&&(c=16),this.C=a<<17-c,a=a>>c):c&&(16<c?(this.j=a,a=0):(this.C=a=a<<c,(e=a>>15&65535)&&65535!==e&&(this.j=32768))),this.b[g]=a&65535,this.i=this.w=a);break;case 30208:if(0<=(c=U(this,a))){g=a>>6&7;e=this.b[g]<<16|this.b[g|1];this.C=
|
|
|
|
|
this.j=0;c&=63;if(c&32)c=64-c,32<c&&(c=32),a=e>>c-1,this.C=a<<16,a>>=1,e&2147483648&&(a|=4294967295<<32-c);else if(c){if(a=e<<c-1,this.C=a>>15,a<<=1,32<c&&(c=32),e>>=32-c)e|=4294967295<<c&4294967295,4294967295!==e&&(this.j=32768)}else a=e;this.b[g]=a>>16&65535;this.b[g|1]=a&65535;this.i=a>>16;this.w=a>>16|a}break;case 30720:a&56?0<=(e=N(this,f=T(this,a,6)))&&(e^=this.b[a>>6&7],0<=O(this,f,e)&&(this.i=this.w=e,this.j=0)):(this.i=this.w=e=this.b[a&7]^=this.b[a>>6&7],this.j=0);break;case 32256:g=a>>
|
|
|
|
|
6&7;if(this.b[g]=this.b[g]-1&65535)this.b[7]=this.b[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.b[7]=V(this.b[7],a);break;case 512:this.w&65535&&(this.b[7]=V(this.b[7],a));break;case 768:this.w&65535||(this.b[7]=V(this.b[7],a));break;case 1024:(this.i&32768)===(this.j&32768)&&(this.b[7]=V(this.b[7],a));break;case 1280:(this.i&32768)!==(this.j&32768)&&(this.b[7]=V(this.b[7],a));break;case 1536:this.w&65535&&(this.i&32768)===(this.j&32768)&&(this.b[7]=V(this.b[7],a));break;case 1792:this.w&
|
|
|
|
|
65535&&(this.i&32768)===(this.j&32768)||(this.b[7]=V(this.b[7],a));break;case 32768:this.i&32768||(this.b[7]=V(this.b[7],a));break;case 33280:!(this.C&65536)&&this.w&65535&&(this.b[7]=V(this.b[7],a));break;case 33024:this.i&32768&&(this.b[7]=V(this.b[7],a));break;case 33536:if(this.C&65536||!(this.w&65535))this.b[7]=V(this.b[7],a);break;case 33792:this.j&32768||(this.b[7]=V(this.b[7],a));break;case 34048:this.j&32768&&(this.b[7]=V(this.b[7],a));break;case 34304:this.C&65536||(this.b[7]=V(this.b[7],
|
|
|
|
|
a));break;case 34560:this.C&65536&&(this.b[7]=V(this.b[7],a));break;case 34816:K(this,24);break;case 35072:K(this,28);break;default:switch(a&65472){case 64:0<=(h=Jc(this,a,0))&&(this.b[7]=h&65535);break;case 192:a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e<<8|e>>8,0<=O(this,f,a)&&(this.i=this.w=e&65280,this.j=this.C=0)):(g=a&7,e=this.b[g],this.b[g]=(e<<8|e>>8)&65535,this.i=this.w=e&65280,this.j=this.C=0);break;case 2560:a&56?0<=(f=T(this,a,4))&&0<=O(this,f,0)&&(this.i=this.C=this.j=this.w=0):this.i=this.C=
|
|
|
|
|
this.j=this.w=this.b[a&7]=0;break;case 2624:0<=(e=N(this,f=T(this,a,6)))&&(a=~e,0<=O(this,f,a)&&(this.i=this.w=a,this.C=65536,this.j=0));break;case 2688:a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e+1,0<=O(this,f,a)&&(this.i=this.w=a,this.j=a&(a^e))):(g=a&7,e=this.b[g],a=e+1,this.b[g]=a&65535,this.i=this.w=a,this.j=a&(a^e));break;case 2752:a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e-1,0<=O(this,f,a)&&(this.i=this.w=a,this.j=(a^e)&e)):(g=a&7,e=this.b[g],a=e-1,this.b[g]=a&65535,this.i=this.w=a,this.j=(a^e)&e);
|
|
|
|
|
break;case 2816:0<=(e=N(this,f=T(this,a,6)))&&(a=-e,0<=O(this,f,a)&&(this.C=this.i=this.w=a,this.j=a&e));break;case 2880:0<=(e=N(this,f=T(this,a,6)))&&(a=e+(this.C>>16&1),0<=O(this,f,a)&&(this.C=this.i=this.w=a,this.j=a&(a^e)));break;case 2944:0<=(e=N(this,f=T(this,a,6)))&&(a=e-(this.C>>16&1),0<=O(this,f,a)&&(this.C=this.i=this.w=a,this.j=(a^e)&e));break;case 3008:0<=(e=U(this,a))&&(this.i=this.w=e,this.C=this.j=0);break;case 3072:a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=(this.C&65536|e)>>1,0<=O(this,
|
|
|
|
|
f,a)&&(this.C=e<<16,this.i=this.w=a,this.j=a^this.C>>1)):(g=a&7,e=this.b[g],a=(this.C&65536|e)>>1,this.b[g]=a&65535,this.C=e<<16,this.i=this.w=a,this.j=a^this.C>>1);break;case 3136:a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e<<1|this.C>>16&1,0<=O(this,f,a)&&(this.C=this.i=this.w=a,this.j=a^e)):(g=a&7,e=this.b[g],a=e<<1|this.C>>16&1,this.b[g]=a&65535,this.C=this.i=this.w=a,this.j=a^e);break;case 3200:a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e&32768|e>>1,0<=O(this,f,a)&&(this.C=e<<16,this.i=this.w=a,this.j=
|
|
|
|
|
this.i^this.C>>1)):(g=a&7,e=this.b[g],a=e&32768|e>>1,this.b[g]=a&65535,this.C=e<<16,this.i=this.w=a,this.j=this.i^this.C>>1);break;case 3264:a&56?0<=(e=N(this,f=T(this,a,6)))&&(a=e<<1,0<=O(this,f,a)&&(this.C=this.i=this.w=a,this.j=a^e)):(g=a&7,e=this.b[g],a=e<<1,this.b[g]=a&65535,this.C=this.i=this.w=a,this.j=a^e);break;case 3328:h=this.b[7]+((a&63)<<1)&65535;0<=(c=L(this,h|65536))&&(this.b[7]=this.b[5],this.b[5]=c,this.b[6]=h+2&65535);break;case 3392:a&56?0<=(h=Jc(this,a,0))&&(61440!==(this.f&61440)&&
|
|
|
|
|
(h&=65535),this.B=this.f>>12&3,0<=(c=L(this,h))&&(this.B=this.f>>14&3,0<=Gc(this,c)&&(this.i=this.w=c,this.j=0))):(g=a&7,c=6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]:this.Aa[this.f>>12&3],0<=Gc(this,c)&&(this.i=this.w=c,this.j=0));break;case 3456:0<=(e=Ic(this))&&((this.J&57344||(this.L=22),a&56)?0<=(h=Jc(this,a,0))&&(h&=65535,this.B=this.f>>12&3,0<=(f=Hc(this,h,4))&&(this.B=this.f>>14&3,0<=O(this,f,e)&&(this.i=this.w=e,this.j=0))):(g=a&7,6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]=
|
|
|
|
|
e:this.Aa[this.f>>12&3]=e,this.i=this.w=e,this.j=0));break;case 3520:0<=(f=T(this,a,4))&&(a=-(this.i>>15&1),0<=O(this,f,a)&&(this.w=a,this.j=0));break;case 35328:a&56?0<=(f=T(this,a,5))&&0<=S(this,f,0)&&(this.i=this.C=this.j=this.w=0):(this.b[a&7]&=65280,this.i=this.C=this.j=this.w=0);break;case 35392:0<=(e=P(this,f=T(this,a,7)))&&(a=~e,0<=S(this,f,a)&&(this.i=this.w=a<<8,this.C=65536,this.j=0));break;case 35456:0<=(e=P(this,f=T(this,a,7)))&&(a=e+1,0<=S(this,f,a)&&(this.i=this.w=a<<8,this.j=(a&(a^
|
|
|
|
|
e))<<8));break;case 35520:0<=(e=P(this,f=T(this,a,7)))&&(a=e-1,0<=S(this,f,a)&&(this.i=this.w=a<<8,this.j=((a^e)&e)<<8));break;case 35584:0<=(e=P(this,f=T(this,a,7)))&&(a=-e,0<=S(this,f,a)&&(this.C=this.i=this.w=a<<8,this.j=(a&e)<<8));break;case 35648:0<=(e=P(this,f=T(this,a,7)))&&(a=e+(this.C>>16&1),0<=S(this,f,a)&&(this.i=this.w=this.C=a<<8,this.j=(a&(a^e))<<8));break;case 35712:0<=(e=P(this,f=T(this,a,7)))&&(a=e-(this.C>>16&1),0<=S(this,f,a)&&(this.i=this.w=this.C=a<<8,this.j=((a^e)&e)<<8));break;
|
|
|
|
|
case 35776:0<=(e=Kc(this,a))&&(this.i=this.w=e<<8,this.C=this.j=0);break;case 35840:0<=(e=P(this,f=T(this,a,7)))&&(a=((this.C&65536)>>8|e)>>1,0<=S(this,f,a)&&(this.C=e<<16,this.i=this.w=a<<8,this.j=this.i^this.C>>1));break;case 35904:0<=(e=P(this,f=T(this,a,7)))&&(a=e<<1|this.C>>16&1,0<=S(this,f,a)&&(this.C=this.i=this.w=a<<8,this.j=(a^e)<<8));break;case 35968:0<=(e=P(this,f=T(this,a,7)))&&(a=e&128|e>>1,0<=S(this,f,a)&&(this.C=e<<16,this.i=this.w=a<<8,this.j=this.i^this.C>>1));break;case 36032:0<=
|
|
|
|
|
(e=P(this,f=T(this,a,7)))&&(a=e<<1,0<=S(this,f,a)&&(this.C=this.i=this.w=a<<8,this.j=(a^e)<<8));break;case 36160:a&56?0<=(h=Jc(this,a,0))&&(this.B=this.f>>12&3,0<=(c=L(this,h|65536))&&(this.B=this.f>>14&3,0<=Gc(this,c)&&(this.i=this.w=c,this.j=0))):(g=a&7,c=6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]:this.Aa[this.f>>12&3],0<=Gc(this,c)&&(this.i=this.w=c,this.j=0));break;case 36224:0<=(e=Ic(this))&&((this.J&57344||(this.L=22),a&56)?0<=(h=Jc(this,a,0))&&(this.B=this.f>>12&3,0<=(f=Hc(this,h|
|
|
|
|
|
65536,4))&&(this.B=this.f>>14&3,0<=O(this,f,e)&&(this.i=this.w=e,this.j=0))):(g=a&7,6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]=e:this.Aa[this.f>>12&3]=e,this.i=this.w=e,this.j=0));break;default:switch(a&65528){case 128:0<=(c=Ic(this))&&(g=a&7,this.b[7]=this.b[g],this.b[g]=c);break;case 152:this.f&49152||(this.f=this.f&63519|(a&7)<<5,this.W=1);break;case 160:case 168:a&1&&(this.C=0);a&2&&(this.j=0);a&4&&(this.w=1);a&8&&(this.i=0);break;case 176:case 184:a&1&&(this.C=65536);a&2&&(this.j=32768);
|
|
|
|
|
a&4&&(this.w=0);a&8&&(this.i=32768);break;default:switch(a){case 0:49152&this.f?K(this,4):(this.Ra=3,pc(this),console.log("HALT at "+this.b[7].toString(8)));break;case 1:g=0;if(0<(a=this.H.length))for(;0<a--;)g+=this.H[a].gb,this.H[a].gb=0;0===g&&0===this.Ra&&(this.Ra=2,pc(this));break;case 3:K(this,12);break;case 4:K(this,16);break;case 5:this.f&49152||Dc(this);break;case 2:case 6:f=this.b[6];0<=(h=L(this,f|65536))&&(f=f+2&65535,0<=(c=L(this,f|65536))&&(this.b[6]=f+2&65535,c&=63743,this.f&49152&&
|
|
|
|
|
(c=c&63519|this.f&63712),this.b[7]=h,Fc(this,c),this.G&=-17,2===a&&(this.G|=this.f&16)));break;default:K(this,8)}}}}}}this.G&&(this.G&2?K(this,168):this.G&4?K(this,4):this.G&16&&K(this,12),this.G=0)}while(0<this.P)}return this.A.complete?this.U-this.P:void 0===this.A.complete?0:-1};Qa(function(){for(var a=C(document,"pdp11","cpu"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Cc(c);nb(c,d)}});
|
|
|
|
|
function Nc(a){u.call(this,"ROM",a,Nc);this.u=null;this.J=a.addr;this.B=a.size;this.L=a.writable;this.G=a.alias;this.H=a.file;this.N=ha(this.H);if(this.H){a=this.H;var b=ia(this.N);"json"!=b&&"hex"!=b&&(a=ma()+"/api/v1/dump?file="+this.H+"&format=bytes&decimal=true");var d=this;xa(a,null,!0,function(a,b,f){Oc(d,a,b,f)})}}y(Nc);Nc.prototype.xa=function(a,b,d,c){this.F=b;this.f=d;this.I=c;Pc(this)};
|
|
|
|
|
Nc.prototype.ta=function(){if(this.ra){if(this.I){var a=this.I,b=this.id,d=this.J,c=this.B,e=this.ra,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var n=f,k=[k>>>0,h],p=ua(n,k,a.nb);0>p&&n.splice(-(p+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.L.push({Rb:b,D:d,Hb:c,ra:e,lb:f})}delete this.ra}return!0};Nc.prototype.sa=function(){return!0};
|
|
|
|
|
function Oc(a,b,d,c){if(c)a.ea("Unable to load system ROM (error "+c+": "+b+")");else{ab(a.rb,b,d);var e;if("["==d.charAt(0)||"{"==d.charAt(0))try{var f,h,g=eval("("+d+")");if(f=g.bytes)a.u=f;else if(f=g.words)for(a.u=Array(2*f.length),h=e=0;e<f.length;e++)a.u[h++]=f[e]&255,a.u[h++]=f[e]>>8&255;else if(f=g.data)for(a.u=Array(4*f.length),h=e=0;e<f.length;e++)a.u[h++]=f[e]&255,a.u[h++]=f[e]>>8&255,a.u[h++]=f[e]>>16&255,a.u[h++]=f[e]>>24&255;else a.u=g;a.ra=g.symbols;if(!a.u.length){t("Empty ROM: "+
|
|
|
|
|
b);return}if(1==a.u.length){t(a.u[0]);return}}catch(k){a.ea("ROM data error: "+k.message);return}else for(b=d.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.u=Array(b.length),e=0;e<b.length;e++)a.u[e]=aa(b[e],16);Pc(a)}}
|
|
|
|
|
function Pc(a){if(!rb(a))if(!a.H)E(a);else if(a.u&&a.F){a.B||(a.B=a.u.length);if(a.u.length!=a.B)sb(a,"ROM size ("+r(a.u.length,8,!0)+") does not match specified size ("+r(a.B,8,!0)+")");else{var b;b=a.J;if(yb(a.F,b,a.B,a.L?1:Tb)){var d;for(d=0;d<a.u.length;d++){var c=a.F,e=b+d;c.M[(e&c.u)>>>c.S].Na(e&c.F,a.u[d]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.G?b.push(a.G):null!=a.G&&a.G.length&&(b=a.G);for(d=0;d<b.length;d++){for(var f=a,c=b[d],e=f.F,h=f.B,g=[],k=f.J>>>e.S;0<h&&k<e.M.length;)g.push(e.M[k++]),
|
|
|
|
|
h-=e.ma;e=f.F;f=f.B;h=0;for(c>>>=e.S;0<f&&c<e.M.length;){k=g[h++];if(!k)break;e.M[c++]=k;f-=e.ma}}delete a.u}}E(a)}}Qa(function(){for(var a=C(document,"pdp11","rom"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Nc(c);nb(c,d)}});function Qc(a){u.call(this,"RAM",a,Qc);this.G=a.addr;this.B=a.size;this.u=!1}y(Qc);m=Qc.prototype;m.xa=function(a,b,d,c){this.F=b;this.f=d;this.I=c;E(this)};m.ta=function(a,b){b||this.reset();return!0};m.sa=function(a){return a?this.save():!0};
|
|
|
|
|
m.reset=function(){!this.u&&this.B&&yb(this.F,this.G,this.B,1)&&(this.u=!0);this.u||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Qa(function(){for(var a=C(document,"pdp11","ram"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Qc(c);nb(c,d)}});function Rc(a){u.call(this,"Keyboard",a,Rc,65536);E(this)}y(Rc);Rc.prototype.ha=function(){return!1};Rc.prototype.xa=function(a,b,d,c){this.u=a;this.f=d;this.I=c;this.fa=null};
|
|
|
|
|
Qa(function(){for(var a=C(document,"pdp11","keyboard"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Rc(c);nb(c,d)}});function Sc(a){u.call(this,"Debugger",a,Sc);this.fa=a.base||16;this.T=this.la=this.N=0;this.V=!1;this.H=-1;this.G=[];this.X={}}y(Sc);var Tc={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
|
|
|
|
function Uc(a,b,d,c){if(d)if(b){0>a.H&&a.G.length&&(a.H=0);if(0>a.H||b!=a.G[a.H])a.G.splice(0,0,b),a.H=0;a.H--}else a.V?b="end":b=a.G[a.H+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");d=0;var e=null;c=c||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==c&&!e||!h)a.push(qa(b.substring(d,f))),d=f+1}}return a}
|
|
|
|
|
function Vc(a,b,d){for(d=d||-1;d--&&b.length;){var c=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(c){case "*":c=f*e;break;case "/":if(!e)return!1;c=f/e;break;case "%":if(!e)return!1;c=f%e;break;case "+":c=f+e;break;case "-":c=f-e;break;case "<<":c=f<<e;break;case ">>":c=f>>e;break;case ">>>":c=f>>>e;break;case "<":c=f<e?1:0;break;case "<=":c=f<=e?1:0;break;case ">":c=f>e?1:0;break;case ">=":c=f>=e?1:0;break;case "==":c=f==e?1:0;break;case "!=":c=f!=e?1:0;break;case "&":c=f&e;break;
|
|
|
|
|
3)<<3;this.f[d]=this.f[d]&~(255<<c)|b<<c;this.ua=!0},qa:function(a,b){var d=a>>2,c=(a&3)<<3;24>c?this.f[d]=this.f[d]&~(65535<<c)|b<<c:(this.f[d]=this.f[d]&16777215|b<<24,d++,this.f[d]=this.f[d]&-256|b>>8);this.ua=!0},T:function(a,b){if(this.I&&null!=this.D){var d=this.I;gc(d,this.D+a,1,d.R)&&d.ca(!0)}return this.Wa(a,b)},X:function(a,b){if(this.I&&null!=this.D){var d=this.I;gc(d,this.D+a,2,d.R)&&d.ca(!0)}return this.kb(a,b)},fa:function(a,b,d){if(this.I&&null!=this.D){var c=this.I;gc(c,this.D+a,1,
|
|
|
|
|
c.J)&&c.ca(!0)}this.K?this.G(a,b,d):this.Na(a,b,d)},la:function(a,b,d){if(this.I&&null!=this.D){var c=this.I;gc(c,this.D+a,2,c.J)&&c.ca(!0)}this.K?this.G(a,b,d):this.nb(a,b,d)},R:function(a){return this.F[a]},U:function(a){return this.F[a]},W:function(a){return this.J.getUint16(a,!0)},Y:function(a){return a&1?this.F[a]|this.F[a+1]<<8:this.M[a>>1]},da:function(a,b){this.F[a]=b;this.ua=!0},ga:function(a,b){this.F[a]=b;this.ua=!0},ka:function(a,b){this.J.setUint16(a,b,!0);this.ua=!0},na:function(a,b){a&
|
|
|
|
|
1?(this.F[a]=b,this.F[a+1]=b>>8):this.M[a>>1]=b;this.ua=!0}};function xb(a,b,d){a.I=b;a.j=a.B=0;d&&((a.j=d.j)&&fc(a,ec,!1),(a.B=d.B)&&dc(a,ec,!1))}function hc(a,b){b?0===--a.B&&(a.Ma=a.K?a.G:a.Na,a.Fb=a.K?a.L:a.nb):0===--a.j&&(a.Ka=a.Wa,a.Db=a.kb)}function dc(a,b,d){d&&a.B||(a.Ma=!a.K&&b[2]||a.G,a.Fb=!a.K&&b[3]||a.L);if(d||void 0===d)a.Na=b[2]||a.G,a.nb=b[3]||a.L}function fc(a,b,d){d&&a.j||(a.Ka=b[0]||a.O,a.Db=b[1]||a.P);if(d||void 0===d)a.Wa=b[0]||a.O,a.kb=b[1]||a.P}
|
|
|
|
|
function $b(a,b){b||(b=ic);fc(a,b,void 0);dc(a,b,void 0)}var ic=[],cc=[G.prototype.V,G.prototype.Z,G.prototype.ia,G.prototype.qa],ec=[G.prototype.T,G.prototype.X,G.prototype.fa,G.prototype.la];if(tb)var bc=[G.prototype.R,G.prototype.W,G.prototype.da,G.prototype.ka],ac=[G.prototype.U,G.prototype.Y,G.prototype.ga,G.prototype.na];
|
|
|
|
|
function jc(a,b){u.call(this,"CPU",a,jc,1);var d=a.multiplier||1;this.Fa=a.cycles||b;this.za=d;this.Da=Math.round(this.Fa/1E4)/100;this.ya=this.Da*this.za;this.A.ba=!1;this.A.mb=!1;this.A.Pa=a.autoStart;this.A.rb=!1;this.A.Ha=!1;this.Ta=this.Y=0;this.Ua=a.csStart;this.Ia=a.csInterval;this.Ja=a.csStop;this.ia=[];this.Lb=this.Ba.bind(this);E(this)}y(jc);var kc=["power","reset"];m=jc.prototype;
|
|
|
|
|
m.va=function(a,b,d,c){this.j=a;this.F=b;this.I=c;for(b=0;b<kc.length;b++)(d=this.K[kc[b]])&&this.j.ha(null,kc[b],d);this.fa=null;a=lc(a,"autoStart");null!=a&&(this.A.Pa="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
|
|
|
|
|
m.ta=function(a,b){if(!b){if(a&&this.restore){mc(this);if(!this.restore(a))return!1;nc(this)}else this.reset();if(this.I){var d=this.I;d.g("Type ? for help with PDP11 Debugger commands");d.ja();if(d.qa){var c=d.qa;d.qa=null;oc(d,c)}}else this.g("No debugger detected")}H(this);return!0};m.sa=function(a){return a?this.save():!0};m.Pa=function(){return this.A.Pa||!this.I&&void 0===this.K.run?(this.Ba(!0),!0):!1};m.vb=function(){return 0};
|
|
|
|
|
function nc(a){void 0===a.Ua&&(a.Ua=0);void 0===a.Ia&&(a.Ia=-1);void 0===a.Ja&&(a.Ja=-1);a.A.Ha=0<=a.Ua&&0<a.Ia;a.A.Ha&&(a.Ta=0,a.Y=a.Ua-a.V)}function pc(a,b){if(a.A.Ha){var d=!1;a.Ta=a.Ta+a.vb()|0;a.Y-=b;0>=a.Y&&(a.Y+=a.Ia,d=!0);0<=a.Ja&&a.Ja<=qc(a)&&(a.Ia=a.Ja=-1,nc(a),a.ca(),d=!0);d&&a.g(qc(a)+" cycles: checksum="+r(a.Ta))}}
|
|
|
|
|
function Dc(a,b,d,c){if(a.K[b]){void 0===d&&(sb(a,"Value for "+b+" is invalid"),a.ca());var e=a.I&&a.I.fa||8;d=!a.A.ba||a.A.rb?8==e?ga(d,c):r(d,c):"--------".substr(0,c||4);a.K[b].textContent!=d&&(a.K[b].textContent=d)}}
|
|
|
|
|
m.ha=function(a,b,d){var c=this;a=!1;switch(b){case "power":case "reset":this.K[b]=d;a=!0;break;case "run":this.K[b]=d;d.onclick=function(){var a;if(a=c.j)if(a=c.j,a.A.$)a=!0;else{var b=null,d,g=bb(a.id);for(d=0;d<g.length&&(b=g[d],b===a||b.A.ready);d++);if(d==g.length)for(d=0;d<g.length&&(b=g[d],b===a||b.A.$);d++);d==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.A.ready?"powered yet":"ready yet"+(b.bb?" (waiting for notification)":""))+".");a=!1}a&&(c.A.ba?c.ca():c.Ba())};a=
|
|
|
|
|
!0;break;case "speed":this.K[b]=d;a=!0;break;case "setSpeed":this.K[b]=d,d.onclick=function(){Ec(c,c.za<<1,!0)},d.textContent=this.ya.toFixed(2)+"Mhz",a=!0}return a};function Fc(a,b,d){a.V+=b;d&&(a.U=a.P=0)}function Gc(a,b){var d=1;b&&1<a.za&&a.R&&(d=a.R/a.Da);a.zb=Math.round(1E3/30);a.na=Math.floor(a.Fa/30*d);b||(a.Z=a.na);a.Qa=0}function qc(a){return a.V+a.O+a.U-a.P}function mc(a){a.R=0;a.Ab=0;a.V=a.O=a.U=a.P=0;nc(a);Ec(a,1)}
|
|
|
|
|
function Ec(a,b,d){var c=!1;if(void 0!==b){.8>a.R/a.ya?b=1:c=!0;a.za=b;b=a.Da*a.za;if(a.ya!=b){a.ya=b;b=a.ya.toFixed(2)+"Mhz";var e=a.K.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}d&&a.j&&a.j.Xa()}Fc(a,a.O);a.O=0;a.M=va();a.T=0;Gc(a);return c}function Hc(a){a.U-=a.P;a.P=0}
|
|
|
|
|
m.Ba=function(a){if(pb(this,!0)){if(!this.A.ba){Ec(this);this.j&&this.j.start(this.M,qc(this));this.A.ba=!0;this.A.mb=!0;this.fa&&this.fa.start();var b=this.K.run;b&&(b.textContent="Halt");this.j&&(this.j.ja(!0),a&&this.j.Xa(!0))}this.Qa>=this.Fa&&Gc(this,!0);this.ga=0;this.la=va();this.T&&(a=this.la-this.T,a>this.zb&&(this.M+=a,this.M>this.la&&(this.M=this.la)));try{do{for(var d=this.A.Ha?1:this.na,c=this.ia.length-1;0<=c;c--){var e=this.ia[c];0>e[0]||d>e[0]&&(d=e[0])}this.La(d);var f=this.U-this.P;
|
|
|
|
|
a=f;for(var h=this.ia.length-1;0<=h;h--){var g=this.ia[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.ga+=f;this.O+=f;Fc(this,0,!0);pc(this,f);this.Z-=f;if(0>=this.Z){this.Z+=this.na;15<=++this.Ab&&(this.j&&this.j.ja(),this.Ab=0);break}}while(this.A.ba)}catch(k){this.ca();H(this);this.j&&this.j.stop(va(),qc(this));pb(this,!1);sb(this,k.stack||k.message);return}d=setTimeout;c=this.Lb;this.T=va();e=this.zb;this.ga&&(e=Math.round(e*this.ga/this.na));e=e-(this.T-this.la);if(f=this.T-this.M)this.R=
|
|
|
|
|
Math.round(this.O/(10*f))/100,864E5<=f&&(this.V=0,Ec(this));if(0>e||this.R<this.ya)-1E3>e&&(this.M-=e),e=0;this.Qa+=this.ga;this.T+=e;d(c,e)}else H(this),this.j&&this.j.stop(va(),qc(this))};m.La=function(){return 0};m.ca=function(a){qb(this,!0);Hc(this);Fc(this,this.O);this.O=0;if(this.A.ba){this.A.ba=!1;this.fa&&this.fa.stop();var b=this.K.run;b&&(b.textContent="Run")}this.A.complete=a};function H(a,b){a.j&&a.j.ja(b)}
|
|
|
|
|
function Ic(a){this.Cb=+a.model||1170;this.Nb=a.resetAddr||0;jc.call(this,a,1E6);this.ab=0;this.C=65536;this.u=32768;this.w=65535;this.i=32768;this.f=15;this.b=[0,0,0,0,0,0,0,this.Nb];this.eb=[0,0,0,0,0,0];this.Aa=[0,0,0,0];this.memory=[];this.H=[];this.Ra=this.Bb=0;this.W=2;this.X=255;this.G=0;this.da=-1;this.yb=this.Ca=this.xb=this.B=this.qa=this.L=this.J=0;this.ka=[7,7,7,7];this.Ea=[[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,0,0,0,0,0,0,
|
|
|
|
|
0,0,0,0,0,0,0,0,0],[65535,65535,65535,65535,65535,65535,65535,65535,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,0,0,0,0,0,0,0]];this.Pb=[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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.A.complete=this.A.Ib=!1}y(Ic,jc);m=Ic.prototype;m.reset=function(){this.A.ba&&this.ca();Jc(this);mc(this);this.A.error=!1;this.parent.reset.call(this)};
|
|
|
|
|
function Jc(a){a.X=255;a.H=[];a.Bb=0;a.J=a.L=a.qa=a.xb=0;a.ka[0]=a.ka[1]=a.ka[3]=7;a.Ca=0}m.vb=function(){return 0};m.save=function(){var a=new I(this);J(a,0,[]);J(a,1,[this.wb,this.V,this.za]);for(var b=this.F,d=0,c=[],e=0;e<b.G;e++){var f=b.N[e];if(f.ua||f.Jb){c[d++]=e;var h=d++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var n=f[g],p=g+1;p<f.length&&f[p]===n;)p++;l[k++]=p-g;l[k++]=n;g=p}if(l.length<f.length){f=l;break a}}c[h]=f}}J(a,2,c);return a.data()};
|
|
|
|
|
m.restore=function(a){var b=a[1];this.wb=b[0];this.V=b[1];Ec(this,b[3]);a:{b=this.F;a=a[2];var d;for(d=0;d<a.length-1;d+=2){var c=a[d],e=a[d+1];if(e&&e.length<b.M){for(var f=0,h=Array(b.M),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.N[c];if(!f||!f.restore(e)){t("Unable to restore memory block "+c);b=!1;break a}}b=!0}return b};
|
|
|
|
|
m.ha=function(a,b,d){var c=!1;switch(b){case "R0":case "R1":case "R2":case "R3":case "R4":case "R5":case "R6":case "R7":case "NF":case "ZF":case "VF":case "CF":case "PSW":this.K[b]=d;this.ab++;c=!0;break;default:c=this.parent.ha.call(this,a,b,d)}return c};
|
|
|
|
|
m.ja=function(a){if(this.ab&&(a||!this.A.ba||this.A.rb)){for(a=0;a<this.b.length;a++)Dc(this,"R"+a,this.b[a]);a=Kc(this);Dc(this,"PSW",a);Dc(this,"NF",a&8?1:0,1);Dc(this,"ZF",a&4?1:0,1);Dc(this,"VF",a&2?1:0,1);Dc(this,"CF",a&1?1:0,1)}if(a=this.K.speed)a.textContent=this.A.ba&&this.R?this.R.toFixed(2)+"Mhz":"Stopped"};function Kc(a){return a.f&-16|(a.i&32768?8:0)|(a.w&65535?0:4)|(a.u&32768?2:0)|(a.C&65536?1:0)}
|
|
|
|
|
m.Za=function(a){this.i=a<<12;this.w=~a&4;this.u=a<<14;this.C=a<<16;if((a^this.f)&2048)for(var b=this.eb.length;0<=--b;){var d=this.b[b];this.b[b]=this.eb[b];this.eb[b]=d}this.B=a>>14&3;b=this.f>>14&3;this.B!=b&&(this.Aa[b]=this.b[6],this.b[6]=this.Aa[this.B]);this.W=2;this.f=a};m.cb=function(){return this.f=this.f&63728|(this.i&32768?8:0)|(this.w&65535?0:4)|(this.u&32768?2:0)|(this.C&65536?1:0)};
|
|
|
|
|
function K(a,b){var d,c,e=0;0>a.da?a.da=a.cb():a.B||(b=4,e=1);a.J&57344||(a.L=63222);a.B=0;0<=(d=L(a,b|65536))&&0<=(c=L(a,b+2&65535|65536))&&(a.Za(c&53247|a.da>>2&12288),e&&(a.b[6]=4),0<=Lc(a,a.da)&&0<=Lc(a,a.b[7])&&(a.b[7]=d));a.G=0;return a.da=-1}
|
|
|
|
|
function Mc(a,b,d){var c,e,f,h=0;if(d&a.xb){c=b>>13&a.ka[a.B];e=a.Ea[a.B][c];f=(a.Ea[a.B][c+16]<<6)+(b&8191)&4194303;if(a.qa&16){if(3932160<=f&&4186112>f){f=f&262143;var g=f>>13&31;31>g?a.qa&32&&(f=a.Pb[g]+(f&8190)&4194302,3932160<=f&&4186112>f&&console.log("panic(898)")):f|=4186112}}else f&=262143,253952<=f&&(f|=4186112);if(3932160>f&&(3915776<=f||f&1&&!(d&1)))return K(a,4);switch(e&7){case 1:h=4096;case 2:e|=128;d&4&&(h=8192);break;case 4:h=4096;case 5:d&4&&(h=4096);case 6:e|=d&4?192:128;break;
|
|
|
|
|
default:h=32768}32512!==(e&32520)&&(e&8?e&32512&&(b&8128)<(e>>2&8128)&&(h|=16384):(b&8128)>(e>>2&8128)&&(h|=16384));a.Ea[a.B][c]=e;if(4194170!==f||a.B)a.Ca=a.B,a.yb=c;if(h){if(h&57344)return 0<=a.da&&(h|=128),a.J&57344||(a.J=a.J|h|a.Ca<<5|a.yb<<1),K(a,168);a.J&61440||!(4191360>f||4194239<f)||(a.J|=4096,a.J&512&&(a.G|=2))}}else if(f=b&65535,57344<=f)f|=4186112;else if(f&1&&!(d&1))return K(a,4);return f}function M(a,b){return 4194304<=b?a.b[b-4194304]:3932160<=b?-1:0<=b?a.F.pa(b):b}
|
|
|
|
|
function O(a,b,d){d&=65535;return 4194304<=b?a.b[b-4194304]=d:0<=b?(a.F.lb(b,d),d):b}function P(a,b){return 4194304<=b?a.b[b-4194304]&255:3932160<=b?-1:0<=b?a.F.Sa(b):b}function Q(a,b,d){d&=255;return 4194304<=b?a.b[b-4194304]=a.b[b-4194304]&65280|d:3932160<=b?-1:0<=b?(a.F.fb(b,d),d):b}function L(a,b){return M(a,Mc(a,b,2))}function Nc(a){var b=L(a,a.b[6]|65536);0<=b&&(a.b[6]=a.b[6]+2&65535);return b}
|
|
|
|
|
function Lc(a,b){var d,c;a.b[6]=c=a.b[6]-2&65535;a.J&57344||(a.L=a.L<<8|246);if(!a.B&&c<=a.X&&4<c){if(c<=a.X-32)return a.b[6]=4,K(a,4);a.G|=4}return 0<=(d=Mc(a,c|65536,4))?O(a,d,b):d}
|
|
|
|
|
function Oc(a,b,d){var c,e,f=b&7;switch(b>>3&7){case 0:return K(a,4);case 1:if(6===f&&!a.B&&d&4&&(a.b[6]<=a.X||65534<=a.b[6])){if(a.b[6]<=a.X-32||65534<=a.b[6])return a.b[6]=4,K(a,4);a.G|=4}return 7===f?a.b[f]:a.b[f]|65536;case 2:e=2;c=a.b[f];7!==f&&(c|=65536,6>f&&d&1&&(e=1));break;case 3:e=2;c=a.b[f];7!==f&&(c|=65536);if(0>(c=L(a,c)))return c;c|=65536;break;case 4:e=-2;6>f&&d&1&&(e=-1);c=a.b[f]+e&65535;7!==f&&(c|=65536);break;case 5:e=-2;c=a.b[f]-2&65535;7!==f&&(c|=65536);if(0>(c=L(a,c)))return c;
|
|
|
|
|
c|=65536;break;case 6:if(0>(c=L(a,a.b[7])))return c;a.b[7]=a.b[7]+2&65535;c=c+a.b[f]&65535;return c|65536;case 7:if(0>(c=L(a,a.b[7])))return c;a.b[7]=a.b[7]+2&65535;c=c+a.b[f]&65535;return 0>(c=L(a,c|65536))?c:c|65536}a.b[f]=a.b[f]+e&65535;a.J&57344||(a.L=a.L<<8|e<<3&248|f);if(6===f&&!a.B&&d&4&&0>=e&&(a.b[6]<=a.X||65534<=a.b[6])){if(a.b[6]<=a.X-32)return a.b[6]=4,K(a,4);a.G|=4}return c}function R(a,b,d){var c;return b&56?(0<=(c=Oc(a,b,d))&&(c=Mc(a,c,d)),c):4194304+(b&7)}
|
|
|
|
|
function S(a,b){var d;b&56?0<=(d=R(a,b,2))&&(d=M(a,d)):d=a.b[b&7];return d}function Pc(a,b){var d;b&56?0<=(d=R(a,b,3))&&(d=P(a,d)):d=a.b[b&7]&255;return d}function V(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
|
|
|
|
m.La=function(a){this.A.complete=!0;var b=this.A.Ib=this.I&&Qc(this.I),d=a?this.A.mb?0:1:-1;this.A.mb=!1;this.U=this.P=a;this.wb&256?(Hc(this),a=!1):a=!0;if(a){do{if(b){if(Rc(this.I,this.b[7],d)){this.ca();break}d=1}var c,e,f,h,g;if(this.W)if(1===this.W)this.W=2;else{this.W=0;g=-1;c=this.Bb&224;if(0<(a=this.H.length))for(;0<a--;){if(0<this.H[a].jb){this.H[a].jb--;this.W=2;break}if(this.H[a].pb){if(!this.H[a].pb()){this.H.splice(a,1);g--;continue}this.H[a].pb=null}this.H[a].Ob>c&&(c=this.H[a].Ob,g=
|
|
|
|
|
a)}c>(this.f&224)&&(0>g?K(this,160):(K(this,this.H[g].Rb),this.H.splice(g,1)))}this.J&57344||(this.L=0);this.G=this.f&16;if(0<=(a=L(this,this.b[7])))switch(this.b[7]=this.b[7]+2&65535,a&61440){case 4096:0<=(c=S(this,a>>6))&&(a&56?0<=(f=R(this,a,4))&&0<=O(this,f,c)&&(this.i=this.w=c,this.u=0):(this.i=this.w=this.b[a&7]=c,this.u=0));break;case 8192:0<=(c=S(this,a>>6))&&0<=(e=S(this,a))&&(this.i=this.w=this.C=a=c-e,this.u=(c^e)&(c^a));break;case 12288:0<=(c=S(this,a>>6))&&0<=(e=S(this,a))&&(this.i=this.w=
|
|
|
|
|
c&e,this.u=0);break;case 16384:0<=(c=S(this,a>>6))&&(a&56?0<=(e=M(this,f=R(this,a,6)))&&(a=e&~c,0<=O(this,f,a)&&(this.i=this.w=a,this.u=0)):(this.i=this.w=a=this.b[a&7]&=~c,this.u=0));break;case 20480:0<=(c=S(this,a>>6))&&(a&56?0<=(e=M(this,f=R(this,a,6)))&&(a=e|c,0<=O(this,f,a)&&(this.i=this.w=a,this.u=0)):(this.i=this.w=a=this.b[a&7]|=c,this.u=0));break;case 24576:0<=(c=S(this,a>>6))&&(a&56?0<=(e=M(this,f=R(this,a,6)))&&(a=c+e,0<=O(this,f,a)&&(this.i=this.w=this.C=a,this.u=(c^a)&(e^a))):(g=a&7,
|
|
|
|
|
e=this.b[g],this.b[g]=(a=c+e)&65535,this.i=this.w=this.C=a,this.u=(c^a)&(e^a)));break;case 36864:0<=(c=Pc(this,a>>6))&&(a&56?0<=(f=R(this,a,5))&&0<=Q(this,f,c)&&(this.i=this.w=c<<8,this.u=0):(c&128&&(c|=65280),this.i=this.w=this.b[a&7]=c,this.u=0));break;case 40960:0<=(c=Pc(this,a>>6))&&0<=(e=Pc(this,a))&&(a=c-e,this.i=this.w=this.C=a<<8,this.u=((c^e)&(c^a))<<8);break;case 45056:0<=(c=Pc(this,a>>6))&&0<=(e=Pc(this,a))&&(this.i=this.w=(c&e)<<8,this.u=0);break;case 49152:0<=(c=Pc(this,a>>6))&&0<=(e=
|
|
|
|
|
P(this,f=R(this,a,7)))&&(a=e&~c,0<=Q(this,f,a)&&(this.i=this.w=a<<8,this.u=0));break;case 53248:0<=(c=Pc(this,a>>6))&&0<=(e=P(this,f=R(this,a,7)))&&(a=e|c,0<=Q(this,f,a)&&(this.i=this.w=a<<8,this.u=0));break;case 57344:0<=(c=S(this,a>>6))&&(a&56?0<=(e=M(this,f=R(this,a,6)))&&(a=e-c,0<=O(this,f,a)&&(this.i=this.w=this.C=a,this.u=(c^e)&(e^a))):(g=a&7,e=this.b[g],this.b[g]=(a=e-c)&65535,this.i=this.w=this.C=a,this.u=(c^e)&(e^a)));break;default:switch(a&65024){case 2048:0<=(h=Oc(this,a,0))&&(g=a>>6&7,
|
|
|
|
|
0<=Lc(this,this.b[g])&&(this.b[g]=this.b[7],this.b[7]=h&65535));break;case 28672:0<=(c=S(this,a))&&(g=a>>6&7,c&32768&&(c|=-65536),e=this.b[g],e&32768&&(e|=-65536),a=~~(c*e),this.b[g]=a>>16&65535,this.b[g|1]=a&65535,this.i=a>>16,this.w=this.i|a,this.C=this.u=0,-32768>a||32767<a)&&(this.C=65536);break;case 29184:0<=(c=S(this,a))&&(c?(g=a>>6&7,e=this.b[g]<<16|this.b[g|1],this.C=this.u=0,c&32768&&(c|=-65536),a=~~(e/c),-32768<=a&&32767>=a?(this.b[g]=a&65535,this.b[g|1]=e-a*c&65535,this.w=a>>16|a,this.i=
|
|
|
|
|
a>>16):(this.u=32768,this.w=a>>15|a,this.i=e>>16,-1===c&&65534===this.b[g]&&(this.b[g]=this.b[g|1]=1))):(this.w=this.i=0,this.u=32768,this.C=65536));break;case 29696:0<=(c=S(this,a))&&(g=a>>6&7,a=this.b[g],a&32768&&(a|=4294901760),this.C=this.u=0,c&=63,c&32?(c=64-c,16<c&&(c=16),this.C=a<<17-c,a=a>>c):c&&(16<c?(this.u=a,a=0):(this.C=a=a<<c,(e=a>>15&65535)&&65535!==e&&(this.u=32768))),this.b[g]=a&65535,this.i=this.w=a);break;case 30208:if(0<=(c=S(this,a))){g=a>>6&7;e=this.b[g]<<16|this.b[g|1];this.C=
|
|
|
|
|
this.u=0;c&=63;if(c&32)c=64-c,32<c&&(c=32),a=e>>c-1,this.C=a<<16,a>>=1,e&2147483648&&(a|=4294967295<<32-c);else if(c){if(a=e<<c-1,this.C=a>>15,a<<=1,32<c&&(c=32),e>>=32-c)e|=4294967295<<c&4294967295,4294967295!==e&&(this.u=32768)}else a=e;this.b[g]=a>>16&65535;this.b[g|1]=a&65535;this.i=a>>16;this.w=a>>16|a}break;case 30720:a&56?0<=(e=M(this,f=R(this,a,6)))&&(e^=this.b[a>>6&7],0<=O(this,f,e)&&(this.i=this.w=e,this.u=0)):(this.i=this.w=e=this.b[a&7]^=this.b[a>>6&7],this.u=0);break;case 32256:g=a>>
|
|
|
|
|
6&7;if(this.b[g]=this.b[g]-1&65535)this.b[7]=this.b[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.b[7]=V(this.b[7],a);break;case 512:this.w&65535&&(this.b[7]=V(this.b[7],a));break;case 768:this.w&65535||(this.b[7]=V(this.b[7],a));break;case 1024:(this.i&32768)===(this.u&32768)&&(this.b[7]=V(this.b[7],a));break;case 1280:(this.i&32768)!==(this.u&32768)&&(this.b[7]=V(this.b[7],a));break;case 1536:this.w&65535&&(this.i&32768)===(this.u&32768)&&(this.b[7]=V(this.b[7],a));break;case 1792:this.w&
|
|
|
|
|
65535&&(this.i&32768)===(this.u&32768)||(this.b[7]=V(this.b[7],a));break;case 32768:this.i&32768||(this.b[7]=V(this.b[7],a));break;case 33280:!(this.C&65536)&&this.w&65535&&(this.b[7]=V(this.b[7],a));break;case 33024:this.i&32768&&(this.b[7]=V(this.b[7],a));break;case 33536:if(this.C&65536||!(this.w&65535))this.b[7]=V(this.b[7],a);break;case 33792:this.u&32768||(this.b[7]=V(this.b[7],a));break;case 34048:this.u&32768&&(this.b[7]=V(this.b[7],a));break;case 34304:this.C&65536||(this.b[7]=V(this.b[7],
|
|
|
|
|
a));break;case 34560:this.C&65536&&(this.b[7]=V(this.b[7],a));break;case 34816:K(this,24);break;case 35072:K(this,28);break;default:switch(a&65472){case 64:0<=(h=Oc(this,a,0))&&(this.b[7]=h&65535);break;case 192:a&56?0<=(e=M(this,f=R(this,a,6)))&&(a=e<<8|e>>8,0<=O(this,f,a)&&(this.i=this.w=e&65280,this.u=this.C=0)):(g=a&7,e=this.b[g],this.b[g]=(e<<8|e>>8)&65535,this.i=this.w=e&65280,this.u=this.C=0);break;case 2560:a&56?0<=(f=R(this,a,4))&&0<=O(this,f,0)&&(this.i=this.C=this.u=this.w=0):this.i=this.C=
|
|
|
|
|
this.u=this.w=this.b[a&7]=0;break;case 2624:0<=(e=M(this,f=R(this,a,6)))&&(a=~e,0<=O(this,f,a)&&(this.i=this.w=a,this.C=65536,this.u=0));break;case 2688:a&56?0<=(e=M(this,f=R(this,a,6)))&&(a=e+1,0<=O(this,f,a)&&(this.i=this.w=a,this.u=a&(a^e))):(g=a&7,e=this.b[g],a=e+1,this.b[g]=a&65535,this.i=this.w=a,this.u=a&(a^e));break;case 2752:a&56?0<=(e=M(this,f=R(this,a,6)))&&(a=e-1,0<=O(this,f,a)&&(this.i=this.w=a,this.u=(a^e)&e)):(g=a&7,e=this.b[g],a=e-1,this.b[g]=a&65535,this.i=this.w=a,this.u=(a^e)&e);
|
|
|
|
|
break;case 2816:0<=(e=M(this,f=R(this,a,6)))&&(a=-e,0<=O(this,f,a)&&(this.C=this.i=this.w=a,this.u=a&e));break;case 2880:0<=(e=M(this,f=R(this,a,6)))&&(a=e+(this.C>>16&1),0<=O(this,f,a)&&(this.C=this.i=this.w=a,this.u=a&(a^e)));break;case 2944:0<=(e=M(this,f=R(this,a,6)))&&(a=e-(this.C>>16&1),0<=O(this,f,a)&&(this.C=this.i=this.w=a,this.u=(a^e)&e));break;case 3008:0<=(e=S(this,a))&&(this.i=this.w=e,this.C=this.u=0);break;case 3072:a&56?0<=(e=M(this,f=R(this,a,6)))&&(a=(this.C&65536|e)>>1,0<=O(this,
|
|
|
|
|
f,a)&&(this.C=e<<16,this.i=this.w=a,this.u=a^this.C>>1)):(g=a&7,e=this.b[g],a=(this.C&65536|e)>>1,this.b[g]=a&65535,this.C=e<<16,this.i=this.w=a,this.u=a^this.C>>1);break;case 3136:a&56?0<=(e=M(this,f=R(this,a,6)))&&(a=e<<1|this.C>>16&1,0<=O(this,f,a)&&(this.C=this.i=this.w=a,this.u=a^e)):(g=a&7,e=this.b[g],a=e<<1|this.C>>16&1,this.b[g]=a&65535,this.C=this.i=this.w=a,this.u=a^e);break;case 3200:a&56?0<=(e=M(this,f=R(this,a,6)))&&(a=e&32768|e>>1,0<=O(this,f,a)&&(this.C=e<<16,this.i=this.w=a,this.u=
|
|
|
|
|
this.i^this.C>>1)):(g=a&7,e=this.b[g],a=e&32768|e>>1,this.b[g]=a&65535,this.C=e<<16,this.i=this.w=a,this.u=this.i^this.C>>1);break;case 3264:a&56?0<=(e=M(this,f=R(this,a,6)))&&(a=e<<1,0<=O(this,f,a)&&(this.C=this.i=this.w=a,this.u=a^e)):(g=a&7,e=this.b[g],a=e<<1,this.b[g]=a&65535,this.C=this.i=this.w=a,this.u=a^e);break;case 3328:h=this.b[7]+((a&63)<<1)&65535;0<=(c=L(this,h|65536))&&(this.b[7]=this.b[5],this.b[5]=c,this.b[6]=h+2&65535);break;case 3392:a&56?0<=(h=Oc(this,a,0))&&(61440!==(this.f&61440)&&
|
|
|
|
|
(h&=65535),this.B=this.f>>12&3,0<=(c=L(this,h))&&(this.B=this.f>>14&3,0<=Lc(this,c)&&(this.i=this.w=c,this.u=0))):(g=a&7,c=6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]:this.Aa[this.f>>12&3],0<=Lc(this,c)&&(this.i=this.w=c,this.u=0));break;case 3456:0<=(e=Nc(this))&&((this.J&57344||(this.L=22),a&56)?0<=(h=Oc(this,a,0))&&(h&=65535,this.B=this.f>>12&3,0<=(f=Mc(this,h,4))&&(this.B=this.f>>14&3,0<=O(this,f,e)&&(this.i=this.w=e,this.u=0))):(g=a&7,6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]=
|
|
|
|
|
e:this.Aa[this.f>>12&3]=e,this.i=this.w=e,this.u=0));break;case 3520:0<=(f=R(this,a,4))&&(a=-(this.i>>15&1),0<=O(this,f,a)&&(this.w=a,this.u=0));break;case 35328:a&56?0<=(f=R(this,a,5))&&0<=Q(this,f,0)&&(this.i=this.C=this.u=this.w=0):(this.b[a&7]&=65280,this.i=this.C=this.u=this.w=0);break;case 35392:0<=(e=P(this,f=R(this,a,7)))&&(a=~e,0<=Q(this,f,a)&&(this.i=this.w=a<<8,this.C=65536,this.u=0));break;case 35456:0<=(e=P(this,f=R(this,a,7)))&&(a=e+1,0<=Q(this,f,a)&&(this.i=this.w=a<<8,this.u=(a&(a^
|
|
|
|
|
e))<<8));break;case 35520:0<=(e=P(this,f=R(this,a,7)))&&(a=e-1,0<=Q(this,f,a)&&(this.i=this.w=a<<8,this.u=((a^e)&e)<<8));break;case 35584:0<=(e=P(this,f=R(this,a,7)))&&(a=-e,0<=Q(this,f,a)&&(this.C=this.i=this.w=a<<8,this.u=(a&e)<<8));break;case 35648:0<=(e=P(this,f=R(this,a,7)))&&(a=e+(this.C>>16&1),0<=Q(this,f,a)&&(this.i=this.w=this.C=a<<8,this.u=(a&(a^e))<<8));break;case 35712:0<=(e=P(this,f=R(this,a,7)))&&(a=e-(this.C>>16&1),0<=Q(this,f,a)&&(this.i=this.w=this.C=a<<8,this.u=((a^e)&e)<<8));break;
|
|
|
|
|
case 35776:0<=(e=Pc(this,a))&&(this.i=this.w=e<<8,this.C=this.u=0);break;case 35840:0<=(e=P(this,f=R(this,a,7)))&&(a=((this.C&65536)>>8|e)>>1,0<=Q(this,f,a)&&(this.C=e<<16,this.i=this.w=a<<8,this.u=this.i^this.C>>1));break;case 35904:0<=(e=P(this,f=R(this,a,7)))&&(a=e<<1|this.C>>16&1,0<=Q(this,f,a)&&(this.C=this.i=this.w=a<<8,this.u=(a^e)<<8));break;case 35968:0<=(e=P(this,f=R(this,a,7)))&&(a=e&128|e>>1,0<=Q(this,f,a)&&(this.C=e<<16,this.i=this.w=a<<8,this.u=this.i^this.C>>1));break;case 36032:0<=
|
|
|
|
|
(e=P(this,f=R(this,a,7)))&&(a=e<<1,0<=Q(this,f,a)&&(this.C=this.i=this.w=a<<8,this.u=(a^e)<<8));break;case 36160:a&56?0<=(h=Oc(this,a,0))&&(this.B=this.f>>12&3,0<=(c=L(this,h|65536))&&(this.B=this.f>>14&3,0<=Lc(this,c)&&(this.i=this.w=c,this.u=0))):(g=a&7,c=6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]:this.Aa[this.f>>12&3],0<=Lc(this,c)&&(this.i=this.w=c,this.u=0));break;case 36224:0<=(e=Nc(this))&&((this.J&57344||(this.L=22),a&56)?0<=(h=Oc(this,a,0))&&(this.B=this.f>>12&3,0<=(f=Mc(this,h|
|
|
|
|
|
65536,4))&&(this.B=this.f>>14&3,0<=O(this,f,e)&&(this.i=this.w=e,this.u=0))):(g=a&7,6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]=e:this.Aa[this.f>>12&3]=e,this.i=this.w=e,this.u=0));break;default:switch(a&65528){case 128:0<=(c=Nc(this))&&(g=a&7,this.b[7]=this.b[g],this.b[g]=c);break;case 152:this.f&49152||(this.f=this.f&63519|(a&7)<<5,this.W=1);break;case 160:case 168:a&1&&(this.C=0);a&2&&(this.u=0);a&4&&(this.w=1);a&8&&(this.i=0);break;case 176:case 184:a&1&&(this.C=65536);a&2&&(this.u=32768);
|
|
|
|
|
a&4&&(this.w=0);a&8&&(this.i=32768);break;default:switch(a){case 0:49152&this.f?K(this,4):(this.Ra=3,Hc(this),console.log("HALT at "+this.b[7].toString(8)));break;case 1:g=0;if(0<(a=this.H.length))for(;0<a--;)g+=this.H[a].jb,this.H[a].jb=0;0===g&&0===this.Ra&&(this.Ra=2,Hc(this));break;case 3:K(this,12);break;case 4:K(this,16);break;case 5:this.f&49152||Jc(this);break;case 2:case 6:f=this.b[6];0<=(h=L(this,f|65536))&&(f=f+2&65535,0<=(c=L(this,f|65536))&&(this.b[6]=f+2&65535,c&=63743,this.f&49152&&
|
|
|
|
|
(c=c&63519|this.f&63712),this.b[7]=h,this.Za(c),this.G&=-17,2===a&&(this.G|=this.f&16)));break;default:K(this,8)}}}}}}this.G&&(this.G&2?K(this,168):this.G&4?K(this,4):this.G&16&&K(this,12),this.G=0)}while(0<this.P)}return this.A.complete?this.U-this.P:void 0===this.A.complete?0:-1};Qa(function(){for(var a=C(document,"pdp11","cpu"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Ic(c);nb(c,d)}});
|
|
|
|
|
function Sc(a){u.call(this,"ROM",a,Sc);this.j=null;this.J=a.addr;this.B=a.size;this.L=a.writable;this.G=a.alias;this.H=a.file;this.M=ha(this.H);if(this.H){a=this.H;var b=ia(this.M);"json"!=b&&"hex"!=b&&(a=ka()+"/api/v1/dump?file="+this.H+"&format=bytes&decimal=true");var d=this;xa(a,null,!0,function(a,b,f){Tc(d,a,b,f)})}}y(Sc);Sc.prototype.va=function(a,b,d,c){this.F=b;this.f=d;this.I=c;Uc(this)};
|
|
|
|
|
Sc.prototype.ta=function(){if(this.ra){if(this.I){var a=this.I,b=this.id,d=this.J,c=this.B,e=this.ra,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var n=f,k=[k>>>0,h],p=ra(n,k,a.qb);0>p&&n.splice(-(p+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.L.push({Qb:b,D:d,Kb:c,ra:e,ob:f})}delete this.ra}return!0};Sc.prototype.sa=function(){return!0};
|
|
|
|
|
function Tc(a,b,d,c){if(c)a.ea("Unable to load system ROM (error "+c+": "+b+")");else{ab(a.ub,b,d);var e;if("["==d.charAt(0)||"{"==d.charAt(0))try{var f,h,g=eval("("+d+")");if(f=g.bytes)a.j=f;else if(f=g.words)for(a.j=Array(2*f.length),h=e=0;e<f.length;e++)a.j[h++]=f[e]&255,a.j[h++]=f[e]>>8&255;else if(f=g.data)for(a.j=Array(4*f.length),h=e=0;e<f.length;e++)a.j[h++]=f[e]&255,a.j[h++]=f[e]>>8&255,a.j[h++]=f[e]>>16&255,a.j[h++]=f[e]>>24&255;else a.j=g;a.ra=g.symbols;if(!a.j.length){t("Empty ROM: "+
|
|
|
|
|
b);return}if(1==a.j.length){t(a.j[0]);return}}catch(k){a.ea("ROM data error: "+k.message);return}else for(b=d.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.j=Array(b.length),e=0;e<b.length;e++)a.j[e]=aa(b[e],16);Uc(a)}}
|
|
|
|
|
function Uc(a){if(!rb(a))if(!a.H)E(a);else if(a.j&&a.F){a.B||(a.B=a.j.length);if(a.j.length!=a.B)sb(a,"ROM size ("+r(a.j.length,8,!0)+") does not match specified size ("+r(a.B,8,!0)+")");else{var b;b=a.J;if(Cb(a.F,b,a.B,a.L?1:Zb)){var d;for(d=0;d<a.j.length;d++){var c=a.F,e=b+d;c.N[(e&c.j)>>>c.S].Na(e&c.F,a.j[d]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.G?b.push(a.G):null!=a.G&&a.G.length&&(b=a.G);for(d=0;d<b.length;d++){for(var f=a,c=b[d],e=f.F,h=f.B,g=[],k=f.J>>>e.S;0<h&&k<e.N.length;)g.push(e.N[k++]),
|
|
|
|
|
h-=e.ma;e=f.F;f=f.B;h=0;for(c>>>=e.S;0<f&&c<e.N.length;){k=g[h++];if(!k)break;e.N[c++]=k;f-=e.ma}}delete a.j}}E(a)}}Qa(function(){for(var a=C(document,"pdp11","rom"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Sc(c);nb(c,d)}});function Vc(a){u.call(this,"RAM",a,Vc);this.G=a.addr;this.B=a.size;this.j=!1}y(Vc);m=Vc.prototype;m.va=function(a,b,d,c){this.F=b;this.f=d;this.I=c;E(this)};m.ta=function(a,b){b||this.reset();return!0};m.sa=function(a){return a?this.save():!0};
|
|
|
|
|
m.reset=function(){!this.j&&this.B&&Cb(this.F,this.G,this.B,1)&&(this.j=!0);this.j||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Qa(function(){for(var a=C(document,"pdp11","ram"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Vc(c);nb(c,d)}});function Wc(a){u.call(this,"Keyboard",a,Wc,65536);E(this)}y(Wc);Wc.prototype.ha=function(){return!1};Wc.prototype.va=function(a,b,d,c){this.j=a;this.f=d;this.I=c;this.fa=null};
|
|
|
|
|
Qa(function(){for(var a=C(document,"pdp11","keyboard"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Wc(c);nb(c,d)}});function Xc(a){u.call(this,"Debugger",a,Xc);this.fa=a.base||16;this.T=this.la=this.M=0;this.V=!1;this.H=-1;this.G=[];this.X={}}y(Xc);var Yc={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
|
|
|
|
function Zc(a,b,d,c){if(d)if(b){0>a.H&&a.G.length&&(a.H=0);if(0>a.H||b!=a.G[a.H])a.G.splice(0,0,b),a.H=0;a.H--}else a.V?b="end":b=a.G[a.H+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");d=0;var e=null;c=c||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==c&&!e||!h)a.push(qa(b.substring(d,f))),d=f+1}}return a}
|
|
|
|
|
function $c(a,b,d){for(d=d||-1;d--&&b.length;){var c=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(c){case "*":c=f*e;break;case "/":if(!e)return!1;c=f/e;break;case "%":if(!e)return!1;c=f%e;break;case "+":c=f+e;break;case "-":c=f-e;break;case "<<":c=f<<e;break;case ">>":c=f>>e;break;case ">>>":c=f>>>e;break;case "<":c=f<e?1:0;break;case "<=":c=f<=e?1:0;break;case ">":c=f>e?1:0;break;case ">=":c=f>=e?1:0;break;case "==":c=f==e?1:0;break;case "!=":c=f!=e?1:0;break;case "&":c=f&e;break;
|
|
|
|
|
case "^":c=f^e;break;case "|":c=f|e;break;case "&&":c=f&&e?1:0;break;case "||":c=f||e?1:0;break;default:return!1}a.push(c|0)}return!0}
|
|
|
|
|
function Wc(a,b,d){var c;if(b){b=Xc(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var n=l[e++],p=n.length,n=qa(n);if(!n){f=!0;break}n=Yc(a,n,null,!1===d);if(void 0===n){f=!0;d=!1;break}g.push(n);if(e==l.length)break;var n=l[e++],q=n.length;k.length&&Tc[n]<Tc[k[k.length-1]]&&Vc(g,k,1);k.push(n);b=b.substr(p+q)}Vc(g,k)&&1==g.length||(f=!0);f?d&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(c=g.pop(),d&&Zc(a,null,
|
|
|
|
|
c))}return c}function Xc(a,b){for(var d;(d=b.match(/\{(.*?)}/))&&!(0<=d[1].indexOf("{"));){var c=Wc(a,d[1]);b=b.replace("{"+d[1]+"}",null!=c?r(c):"undefined")}for(;(d=b.match(/\[(.*?)]/))&&!(0<=d[1].indexOf("["));)b=b.replace("["+d[1]+"]","unimplemented");for(d=b;c=d.match(/\$([a-z]+)/i);){var e=null;switch(c[1].toLowerCase()){case "ops":e=a.T-a.la}if(null==e)break;d=d.replace(c[0],e.toString())}return d}
|
|
|
|
|
function Yc(a,b,d,c){var e;null!=b?(e=a.X[b],null==e&&(e=aa(b,a.fa)),null!=e||c||a.g("invalid "+(d?d:"value")+": "+b)):c||a.g("missing "+(d||"value"));return e}function Zc(a,b,d){var c,e=!1;if(void 0!==d){e=!0;c=d;var f=0,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=c&255,l=8,n="";l?32<l&&(l=32):l=32;if(null==k||isNaN(k))for(;0<l--;)n="?"+n;else for(;0<l--;)n=(k&1?"1":"0")+n,k>>=1;h=n+h;c>>=8}c=r(d,0,!0)+" "+d+". "+ga(d,0,!0)+" "+("0b"+h)}a.g((null!=b?b+": ":"")+c);return e}
|
|
|
|
|
function $c(a,b){if(b)return Zc(a,b,a.X[b]);var d=0;for(b in a.X)Zc(a,b,a.X[b]),d++;return 0<d}function W(a,b,d){switch(a.fa){case 8:return ga(b,d);case 10:return b.toString();default:return r(b,d)}}
|
|
|
|
|
function ad(a){Sc.call(this,a);this.P=X();this.Da=X();this.U=X();this.L=[];this.B=this.R=this.J=[];bd(this);this.ga=0;cd(this);this.na=[];dd(this,a.messages);this.qa=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return ic(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return ic(b,a)})}y(ad,Sc);
|
|
|
|
|
var ed={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",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"},fd="NONE ADC ADCB ADD ASL ASLB ASR ASRB BCC BCS BEQ BGE BGT BHI BIC BICB BIS BISB BIT BITB BLE BLOS BLT BMI BNE BPL BPT BR BVC BVS CCC CLC CLCN CLCV CLCVN CLCVZ CLCZ CLCZN CLN CLR CLRB CLV CLVN CLVZ CLVZN CLZ CLZN CMP CMPB COM COMB DEC DECB INC INCB HALT JMP JSR MARK MFPD MFPI MFPS MOV MOVB MTPD MTPI MTPS NEG NEGB NOP RESET ROL ROLB ROR RORB RTI RTS SBC SBCB SCC SEC SECN SECV SECVN SECVZ SECZ SECZN SEN SEV SEVN SEVZ SEVZN SEZ SEZN SUB SWAB SXT TST TSTB WAIT MUL DIV ASH ASHC XOR SOB EMT TRAP SPL IOT RTT MFPT".split(" "),
|
|
|
|
|
gd={61440:{4096:[62,4032,63],8192:[47,4032,63],12288:[18,4032,63],16384:[14,4032,63],20480:[16,4032,63],24576:[3,4032,63],36864:[63,4032,63],40960:[48,4032,63],45056:[19,4032,63],49152:[15,4032,63],53248:[17,4032,63],57344:[94,4032,63]},65024:{2048:[57,448,63],28672:[100,63,448],29184:[101,63,448],29696:[102,63,448],30208:[103,63,448],30720:[104,448,63],32256:[105,448,8192]},65280:{256:[27,4096],512:[24,4096],768:[10,4096],1024:[11,4096],1280:[22,4096],1536:[12,4096],1792:[20,4096],32768:[25,4096],
|
|
|
|
|
function ad(a,b,d){var c;if(b){b=bd(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var n=l[e++],p=n.length,n=qa(n);if(!n){f=!0;break}n=cd(a,n,null,!1===d);if(void 0===n){f=!0;d=!1;break}g.push(n);if(e==l.length)break;var n=l[e++],q=n.length;k.length&&Yc[n]<Yc[k[k.length-1]]&&$c(g,k,1);k.push(n);b=b.substr(p+q)}$c(g,k)&&1==g.length||(f=!0);f?d&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(c=g.pop(),d&&dd(a,null,
|
|
|
|
|
c))}return c}function bd(a,b){for(var d;(d=b.match(/\{(.*?)}/))&&!(0<=d[1].indexOf("{"));){var c=ad(a,d[1]);b=b.replace("{"+d[1]+"}",null!=c?r(c):"undefined")}for(;(d=b.match(/\[(.*?)]/))&&!(0<=d[1].indexOf("["));)b=b.replace("["+d[1]+"]","unimplemented");for(d=b;c=d.match(/\$([a-z]+)/i);){var e=null;switch(c[1].toLowerCase()){case "ops":e=a.T-a.la}if(null==e)break;d=d.replace(c[0],e.toString())}return d}
|
|
|
|
|
function cd(a,b,d,c){var e;null!=b?(e=a.X[b],null==e&&(e=aa(b,a.fa)),null!=e||c||a.g("invalid "+(d?d:"value")+": "+b)):c||a.g("missing "+(d||"value"));return e}function dd(a,b,d){var c,e=!1;if(void 0!==d){e=!0;c=d;var f=0,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=c&255,l=8,n="";l?32<l&&(l=32):l=32;if(null==k||isNaN(k))for(;0<l--;)n="?"+n;else for(;0<l--;)n=(k&1?"1":"0")+n,k>>=1;h=n+h;c>>=8}c=r(d,0,!0)+" "+d+". "+ga(d,0,!0)+" "+("0b"+h)}a.g((null!=b?b+": ":"")+c);return e}
|
|
|
|
|
function ed(a,b){if(b)return dd(a,b,a.X[b]);var d=0;for(b in a.X)dd(a,b,a.X[b]),d++;return 0<d}function W(a,b,d){switch(a.fa){case 8:return ga(b,d);case 10:return b.toString();default:return r(b,d)}}
|
|
|
|
|
function fd(a){Xc.call(this,a);this.P=X();this.Da=X();this.U=X();this.L=[];this.B=this.R=this.J=[];gd(this);this.ga=0;hd(this);this.na=[];id(this,a.messages);this.qa=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return oc(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return oc(b,a)})}y(fd,Xc);
|
|
|
|
|
var jd={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},kd="NONE ADC ADCB ADD ASL ASLB ASR ASRB BCC BCS BEQ BGE BGT BHI BIC BICB BIS BISB BIT BITB BLE BLOS BLT BMI BNE BPL BPT BR BVC BVS CCC CLC CLCN CLCV CLCVN CLCVZ CLCZ CLCZN CLN CLR CLRB CLV CLVN CLVZ CLVZN CLZ CLZN CMP CMPB COM COMB DEC DECB INC INCB HALT JMP JSR MARK MFPD MFPI MFPS MOV MOVB MTPD MTPI MTPS NEG NEGB NOP RESET ROL ROLB ROR RORB RTI RTS SBC SBCB SCC SEC SECN SECV SECVN SECVZ SECZ SECZN SEN SEV SEVN SEVZ SEVZN SEZ SEZN SUB SWAB SXT TST TSTB WAIT MUL DIV ASH ASHC XOR SOB EMT TRAP SPL IOT RTT MFPT".split(" "),
|
|
|
|
|
ld={61440:{4096:[62,4032,63],8192:[47,4032,63],12288:[18,4032,63],16384:[14,4032,63],20480:[16,4032,63],24576:[3,4032,63],36864:[63,4032,63],40960:[48,4032,63],45056:[19,4032,63],49152:[15,4032,63],53248:[17,4032,63],57344:[94,4032,63]},65024:{2048:[57,448,63],28672:[100,63,448],29184:[101,63,448],29696:[102,63,448],30208:[103,63,448],30720:[104,448,63],32256:[105,448,8192]},65280:{256:[27,4096],512:[24,4096],768:[10,4096],1024:[11,4096],1280:[22,4096],1536:[12,4096],1792:[20,4096],32768:[25,4096],
|
|
|
|
|
33024:[23,4096],33280:[13,4096],33536:[21,4096],33792:[28,4096],34048:[29,4096],34304:[8,4096],34560:[9,4096],34816:[106],35072:[107]},65472:{64:[56,63],192:[95,63],2560:[39,63],2624:[49,63],2688:[53,63],2752:[51,63],2816:[67,63],2880:[1,63],2944:[77,63],3008:[97,63],3072:[73,63],3136:[71,63],3200:[6,63],3264:[4,63],3328:[58,24576],3392:[60,63],3456:[65,63],3520:[96,63],35328:[40,63],35392:[50,63],35456:[54,63],35520:[52,63],35584:[68,63],35648:[2,63],35712:[78,63],35776:[98,63],35840:[74,63],35904:[72,
|
|
|
|
|
63],35968:[7,63],36032:[5,63],36096:[66,63],36160:[59,63],36224:[64,63],36288:[61,63]},65528:{128:[76,7],152:[108,12288]},65535:{0:[55],1:[99],2:[75],3:[26],4:[109],5:[70],6:[110],7:[111],160:[69],161:[31],162:[41],163:[33],164:[45],165:[36],166:[43],167:[35],168:[38],169:[32],170:[42],171:[34],172:[46],173:[37],174:[44],175:[30],176:[69],177:[80],178:[88],179:[82],180:[92],181:[85],182:[90],183:[84],184:[87],185:[81],186:[89],187:[83],188:[93],189:[86],190:[91],191:[79]}};m=ad.prototype;
|
|
|
|
|
m.xa=function(a,b,d,c){this.F=b;this.f=d;this.u=a;(a=fc(a,"messages"))&&dd(this,a);this.Fa=gd;hd(this,function(a){a:{var b=c.F.M,d=a[0],g=a=0,k=b.length;if(d){a=Y(Z(c,d));if(-1===a){c.g("invalid address: "+d);break a}g=a>>>c.F.S;k=1}c.g("blockid physical blockaddr used size type");c.g("-------- --------- ---------- ------ ------ ----");for(var d=-1,l=0;k--;){var n=b[g];n.type==d?l++||c.g("..."):(d=n.type,l=Bb[d],n&&c.g(r(n.id,8)+" %"+r(g<<c.F.S,8)+" %%"+r(n.D,8)+" "+r(n.Ya,4,!0)+
|
|
|
|
|
" "+r(n.size,4,!0)+" "+l),d!=Sb&&(d=-1),l=0);a+=c.F.ma;g++}}});E(this)};
|
|
|
|
|
m.ha=function(a,b,d){var c=this;switch(b){case "debugInput":return this.da=this.K[b]=d,d.onkeydown=function(a){var b;if(13==a.keyCode)b=d.value,d.value="",ic(c,b,!0);else if(27==a.keyCode)d.value=b="";else if(38==a.keyCode?(b=null,c.H<c.G.length-1&&(b=c.G[++c.H])):40==a.keyCode&&(0<c.H?b=c.G[--c.H]:(b="",c.H=-1)),null!=b){var h=b.length;d.value=b;d.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.K[b]=d,Ka(d,function(){if(c.da){var a=c.da.value;
|
|
|
|
|
c.da.value="";ic(c,a,!0);return!0}return!1}),!0;case "step":return this.K[b]=d,Ka(d,function(a){var b=!1;qb(c,!0)||(pb(c,!0),b=c.La(a?1:0),pb(c,!1));return b}),!0}return!1};m.Xa=function(){this.da&&this.da.focus()};function Y(a){a=a&&a.D;null==a&&(a=-1);return a}m.Sa=function(a,b){var d=255,c=Y(a);-1!==c&&(d=this.F,d=d.M[(c&d.u)>>>d.S].Wa(c&d.F,c),b&&id(a,b));return d};m.pa=function(a,b){var d=65535,c=Y(a);-1!==c&&(d=Cb(this.F,c),b&&id(a,b));return d};
|
|
|
|
|
m.bb=function(a,b,d){var c=Y(a);if(-1!==c){var e=this.F;e.M[(c&e.u)>>>e.S].Na(c&e.F,b&255,c);d&&id(a,d);H(this.f,!0)}};m.ib=function(a,b,d){var c=Y(a);if(-1!==c){var e=this.F,f=c&e.F,h=(c&e.u)>>>e.S;f!=e.F?e.M[h].kb(f,b&65535,c):(e.M[h++].Na(f,b&255,c),e.M[h&e.B].Na(0,b>>8&255,c+1));d&&id(a,d);H(this.f,!0)}};function X(a){return{D:a,oa:!1}}function jd(a){return[a.D,a.oa]}function kd(a){return{D:a[0],oa:a[1]}}
|
|
|
|
|
function Z(a,b,d){var c;d=(d?a.P:a.Da).D;if(void 0!==b){c=b=Xc(a,b);var e;if(c.match(/^[a-z_][a-z0-9_]*$/i))for(c=c.toUpperCase(),d=0;d<a.L.length;d++){var f=a.L[d].ra[c];if(void 0!==f){c=f.o;void 0!==c&&(e=X(c));break}}if(c=e)return c;d=Wc(a,b,void 0)}null!=d&&(c=X(d));return c}function ld(a,b,d){d&&(d=d.match(/(['"])(.*?)\1/))&&(b.Db=Uc(a,b.Bb=d[2]))}function id(a,b){null!=a.D&&(a.D+=b||1)}
|
|
|
|
|
function dd(a,b){a.I=a;a.aa=a.Eb=536870912;a.ia=null;a.ka=[];var d=Uc(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(d.length)for(var c in F){var e;a:if(e=void 0,Array.prototype.indexOf)e=d.indexOf(c,e);else{e=e||0;0>e&&(e+=d.length);0>e&&(e=0);for(var f=d.length;e<f;e++)if(e in d&&d[e]===c)break a;e=-1}0<=e&&(a.aa|=F[c],a.g(c+" messages enabled"))}}function hd(a,b){for(var d in F)if(64==F[d]){a.na[d]=b;break}}
|
|
|
|
|
m.message=function(a,b){b&&(a+=" at "+W(this,X(this.f.b[7]).D));if(this.aa&1073741824)this.ka.push(a);else if(!this.ia||a!=this.ia)if(this.ia=a,this.aa&-2147483648&&(this.ca(),a+=" (cpu halted)"),this.g(a),this.f){var d=this.f;pc(d);d.Z=0;H(d)}};
|
|
|
|
|
function cd(a){var b;if(Lc(a)){if(!a.O||!a.O.length){a.O=Array(1E3);for(b=0;b<a.O.length;b++)a.O[b]=X();a.Z=0;a.g("instruction history buffer allocated")}if(!a.Y||!a.Y.length)for(a.Y=Array(256),b=0;b<a.Y.length;b++)a.Y[b]=[b,0]}else a.O&&a.O.length&&a.g("instruction history buffer freed"),a.Z=0,a.O=[],a.Y=[]}m.Ba=function(a){if(!md(this))return!1;this.f.Ba(a);return!0};
|
|
|
|
|
m.La=function(a,b,d){if(!md(this))return!1;this.N=0;a||Lc(this)&&Mc(this,this.f.b[7],0);try{var c=this.f.La(a);0<c&&(this.N+=c,nc(this.f,c,!0),jc(this.f,c),this.T++)}catch(e){"number"!=typeof e&&(this.N=0,sb(this.f,e.stack||e.message))}!1!==d&&H(this.f);this.ja(b||!1);return 0<this.N};m.ca=function(a){this.f&&this.f.ca(a)};m.ja=function(a){void 0===a&&(a=!0);this.P=X(this.f.b[7]);a&&1!=this.W?nd(this):od(this)};
|
|
|
|
|
function md(a){var b;if(b=a.f&&rb(a.f))b=a.f,b.A.$?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!qb(a.f)?(a=a.f,a.A.error?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.ta=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.sa=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){cd(this);this.T=this.la=0;this.ia=null;this.N=0;this.P=X(this.f.b[7]);this.A.ba=!1;pd(this);a||this.ja()};
|
|
|
|
|
m.save=function(){var a=new I(this);J(a,0,jd(this.P));J(a,1,jd(this.U));J(a,2,[this.G,this.V,this.aa]);J(a,3,this.L);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.P=kd(a[b++]),this.U=kd(a[b++]),this.G=a[b][0],"string"==typeof this.G&&(this.G=[this.G]),this.V=a[b][1],this.aa|=a[b][2]);a[3]&&(this.L=a[3]);return!0};m.start=function(a,b){this.W||this.g("running");this.A.ba=!0;this.Qa=a;this.Ra=b};
|
|
|
|
|
m.stop=function(a,b){if(this.A.ba){this.A.ba=!1;this.N=b-this.Ra;if(!this.W){var d="stopped";if(this.N){var c=a-this.Qa,e=0<c?Math.round(1E3*this.N/c):0,d=d+" (";Lc(this)&&(d+=this.T+" opcodes, ",this.la-=this.T,this.T=0);d+=this.N+" cycles, "+c+" ms, "+e+" hz)"}else ob(this,-2147483648)&&(d+=" (use the 't' command to execute blocked faults)");this.g(d)}this.ja(!0);this.Xa();pd(this,this.f.b[7])}};function Lc(a){return 1<a.B.length||!!a.ga}
|
|
|
|
|
function Mc(a,b,d){var c=a.f;if(0<d&&(a.ga&&!--a.ga||ac(a,b,1,a.B)))return!0;0<=d&&a.Y.length&&(a.T++,null!=Cb(a.F,b)&&(b=a.O[a.Z],b.D=c.b[7],b.oa=!1,++a.Z==a.O.length&&(a.Z=0)));return!1}function bd(a){var b,d;a.B=["bp"];if(void 0!==a.R)for(b=1;b<a.R.length;b++){d=a.R[b];var c=a.F;bc(c.M[Y(d)>>>c.S],!1)}a.R=["br"];if(void 0!==a.J)for(b=1;b<a.J.length;b++)d=a.J[b],c=a.F,bc(c.M[Y(d)>>>c.S],!0);a.J=["bw"];a.Ca=0}
|
|
|
|
|
m.va=function(a,b,d){var c=!0;d||qd(this,a,b,!1,!0);if(a!=this.B){var e=Y(b);if(-1===e)this.g("invalid address: "+W(this,b.D)),c=!1;else{var f=this.F;f.M[e>>>f.S].va(e&f.F,a==this.J)}}c&&(a.push(b),d?b.oa=!0:(rd(this,a,a.length-1,"set"),cd(this)));return c};function qd(a,b,d,c,e){var f=!1;d=Y(d);for(var h=1;h<b.length;h++){var g=b[h];if(d==Y(g)&&(!c||g.oa)){f=!0;g.oa||e||rd(a,b,h,"cleared");b.splice(h,1);b!=a.B&&(c=a.F,bc(c.M[d>>>c.S],b==a.J));g.oa||cd(a);break}}return f}
|
|
|
|
|
function sd(a,b){for(var d=1;d<b.length;d++)rd(a,b,d);return b.length-1}function rd(a,b,d,c){d=b[d];a.g(b[0]+" "+W(a,d.D)+(c?" "+c:d.Bb?' "'+d.Bb+'"':""))}function pd(a,b){if(void 0!==b)ac(a,b,1,a.B,!0),a.W=0;else for(var d=1;d<a.B.length;d++){var c=a.B[d];if(c.oa){if(!qd(a,a.B,c,!0))break;d=0}}}
|
|
|
|
|
function ac(a,b,d,c,e){var f=!1;if(!a.Ca++)for(var h=1;!f&&h<c.length;h++){var g=c[h];if(!e||g.oa)for(var k=Y(g),l=0;l<d;l++)if(b+l==k){var n,f=!0;g.oa&&(qd(a,c,g,!0),e=!0);if(n=g.Db){for(var f=!1,p=0;p<n.length;p++)if(!td(a,n[p],!0)){if(n[p].indexOf("if")){f=!0;break}for(var q=p+1;q<n.length&&n[q].indexOf("else");q++)p++;if(q==n.length){f=!0;break}}a.f.A.ba||(f=!0)}if(f){e||rd(a,c,h,"hit");break}}}a.Ca--;return f}
|
|
|
|
|
function ud(a,b,d,c){var e=X(b.D),f=a.pa(b,2),h,g;for(g in a.Fa)if(h=a.Fa[g][f&g])break;h||(h=[0]);g="";for(var k=fd[h[0]],l=h.length-1,n=1;n<=l;n++){var p=h[n];if(void 0!==p){var q;q=a;var A=p,p=b,v="",w=void 0,w=void 0,w=A&61440;if(4096==w)w=(f&255)<<24>>23,w=p.D+w&65535,v=W(q,w);else if(8192==w)w=(f&63)<<1,w=p.D-w&65535,v=W(q,w);else if(12288==w)w=f&7,v=W(q,w,2);else if(24576==w)w=f&63,v=W(q,w);else if(w=f&A,A&4032&&(w>>=6,A>>=6),A&63){var A=void 0,z=w&7;switch((w&56)>>3){case 0:v=vd(z);break;
|
|
|
|
|
case 1:v="@"+vd(z);break;case 2:7>z?v="("+vd(z)+")+":(A=q.pa(p,2),v="#"+W(q,A));break;case 3:7>z?v="@("+vd(z)+")+":(A=q.pa(p,2),v="@#"+W(q,A));break;case 4:v="-("+vd(z)+")";break;case 5:v="@-("+vd(z)+")";break;case 6:A=q.pa(p,2);v=W(q,A)+"("+vd(z)+")";7==z&&(v=[v,W(q,A+p.D&65535)]);break;case 7:A=q.pa(p,2),v="@"+W(q,A)+"("+vd(z)+")",7==z&&(v=[v,W(q,A+p.D&65535)])}}q=v;if(!q||!q.length){g="INVALID";break}"string"!=typeof q&&(d||(d=q[1]),q=q[0]);0<g.length&&(g+=",");g+=q||"???"}}f="";h=W(a,e.D)+":";
|
|
|
|
|
if(-1!==e.D&&-1!==b.D){do if(f+=" "+W(a,a.pa(e,2)),null==e.D)break;while(e.D!=b.D)}h+=pa(f,24);h+=pa(k,5);g&&(h+=" "+g);d&&(h=pa(h,60)+";"+d,h=a.f.A.Ha?h+("cycles="+kc(a.f).toString()+" cs="+r(a.f.Ta)):h+(null!=c?"="+c.toString():""));return h}function Ud(a,b){var d;switch(b){case "N":d=a.f.i&32768?8:0;break;case "Z":d=a.f.w&65535?0:4;break;case "V":d=a.f.j&32768?2:0;break;case "C":d=a.f.C&65536?1:0;break;default:d=0}return b.charAt(0)+(d?"1":"0")+" "}
|
|
|
|
|
function vd(a){return 6>a?"R"+a:6==a?"SP":"PC"}function Vd(a,b){var d="",c=a.f;8>b?(d=vd(b),d+="="+W(a,c.b[b])):13>b?d="A"+(b-8)+"="+W(a,c.ab[b-8]):16<=b&&20>b?d="S"+(b-16)+"="+W(a,c.Aa[b-16]):20==b&&(d="PS="+W(a,Ec(c)));d&&(d+=" ");return d}m.nb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};function Wd(a,b,d){var c=[],e=Y(b)>>>0;for(b=0;b<a.L.length;b++){var f=a.L[b],h=f.D>>>0,g=f.Hb;if(e>=h&&e<h+g){e=ua(f.lb,[e-h],a.nb);0<=e?Xd(a,b,e,c):d&&(e=~e,Xd(a,b,e-1,c),Xd(a,b,e,c));break}}return c}
|
|
|
|
|
function Xd(a,b,d,c){var e={},f=a.L[b].lb,h=0,g=null;0<=d&&d<f.length&&(h=f[d][0],g=f[d][1]);g&&(e=a.L[b].ra[g],g="."==g.charAt(0)?null:e.l||g);c.push(g);c.push(h);c.push(e.a);c.push(e.c)}function Yd(a,b){var d=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(d){if(!d[1])return $c(a)||a.g("no variables"),!0;if(!d[2])return $c(a,d[1]);if(!d[3])return delete a.X[d[1]],!0;var c=Wc(a,d[3]);return void 0!==c?(a.X[d[1]]=c,!0):!1}a.g("invalid assignment:"+b);return!1}
|
|
|
|
|
function Zd(a,b,d){var c=null;if(b=Z(a,b,!0)){var e=Wd(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.D-e[1])&&(h=" + "+r(f,4,!0)),f=e[0]+" ("+W(a,e[1])+")"+h,d&&a.g(f),c=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.D)&&(h=" - "+r(f,4,!0)),f=e[4]+" ("+W(a,e[5])+")"+h,d&&a.g(f),c||(c=f))}else d&&a.g("no symbols")}return c}
|
|
|
|
|
function nd(a,b){var d;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var c=a.f;null==d&&(d=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.g("missing value for "+b[1]);return}var h=!1,g=Wc(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "PC":c.b[7]=g;a.P=X(c.b[7]);break;case "NF":c.i=g?32768:0;break;case "ZF":c.w=g?0:1;break;case "VF":c.j=
|
|
|
|
|
g?32768:0;break;case "CF":c.C=g?65536:0;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}H(c);a.g("updated registers:")}f="";for(e=0;6>e;e++)f+=Vd(a,e);f=f+"\n"+(Vd(a,6)+Vd(a,7));f+=Ud(a,"T")+Ud(a,"N")+Ud(a,"Z")+Ud(a,"V")+Ud(a,"C");a.g(f);d&&(a.P=X(c.b[7]),od(a,W(a,a.P.D)))}}function $d(a,b){b=qa(b);var d=b.match(/^(['"])(.*?)\1$/);d?a.g(d[2]):Wc(a,b,!0)}
|
|
|
|
|
function ae(a,b,d){var c="t"!=b;d=Yc(a,d,null,!0)||1;var e=1==d?0:1;"tc"==b&&(e=d,d=1);Ja(d,function(){return pb(a,!0)&&a.La(e,c,!1)},function(){H(a.f);pb(a,!1)})}
|
|
|
|
|
function od(a,b,d,c){if(b=Z(a,b,!0)){void 0===c&&(c=1);var e=256;if(void 0!==d){c=Z(a,d,!0);if(!c||c.D<b.D)return;e=c.D-b.D;if(256<e){a.g("range too large");return}c=-1}d=0;for(var f;0<e&&c--;){f=qb(a,!1)||a.W?a.N:null;var h=null!=f?"cycles":null,g=Wd(a,b),k=b.D;if(g[0]&&c&&(!d&&c||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.g(l)}g[3]&&(h=g[3],f=null);f=ud(a,b,h,f);a.g(f);a.P=b;e-=b.D-k;d++}}}
|
|
|
|
|
function td(a,b,d){var c=!0;try{b.length&&"end"!=b?d||a.g(">> "+b):(a.V&&(a.g("ended assemble at "+W(a,a.U.D)),a.P=a.U,a.V=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ia=null;if(rb(a)&&0<b.length){a.V&&(b="a "+W(a,a.U.D)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var n=Z(a,f[1],!0);if(n)if(a.U=
|
|
|
|
|
n,void 0===f[2])a.g("begin assemble at "+W(a,n.D)),a.V=!0,H(a.f);else{var p;a.g("not supported yet");p=[];if(p.length){for(var q=0;q<p.length;q++)a.bb(n,p[q],1);a.g(ud(a,a.U))}}break;case "b":a:{var A=f[0],v=f[1],w=b;if("?"==v)a.g("breakpoint commands:"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");
|
|
|
|
|
else{var z=A.charAt(1);if("l"==z){var Ca=0,Ca=Ca+sd(a,a.B),Ca=Ca+sd(a,a.R);(Ca+=sd(a,a.J))||a.g("no breakpoints")}else if("n"==z)a.ga=Yc(a,v),a.g("break after "+a.ga+" instruction(s)");else if(void 0===v)a.g("missing breakpoint address");else{var Q=X();if("*"!=v&&(Q=Z(a,v,!0),!Q))break a;"c"==z?null==Q.D?(bd(a),a.g("all breakpoints cleared")):qd(a,a.B,Q)||qd(a,a.R,Q)||qd(a,a.J,Q)||a.g("breakpoint missing: "+W(a,Q.D)):null!=Q.D&&(ld(a,Q,w),"p"==z?a.va(a.B,Q):"r"==z?a.va(a.R,Q):"w"==z?a.va(a.J,Q):a.g("unknown breakpoint command: "+
|
|
|
|
|
z))}}}break;case "c":a.wa&&(a.wa.value="");break;case "d":a:{var Da,Ea=f[0],ba=f[1],ra=f[2],ue=f[3];if("?"==ba){var ca="";for(Da in F)a.na[Da]&&(ca&&(ca+=","),ca+=Da);ca+=",state,symbols";a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");ca.length&&a.g("dump extension commands:\n\t"+ca)}else if("state"==ba){var wd=be(a.u,
|
|
|
|
|
!0);"console"==ra?console.log(wd):(a.wa&&(a.wa.value=""),a.g(wd))}else if("symbols"==ba)for(var qc=0;qc<a.L.length;qc++){var rc=a.L[qc],Fa;for(Fa in rc.ra)if("."!=Fa.charAt(0)){var xd=rc.ra[Fa].o;if(void 0!==xd){var yd=rc.ra[Fa].l;yd&&(Fa=yd);a.g(W(a,xd)+" "+Fa)}}}else{if("d"==Ea){for(Da in F)if(f[1]==Da){var zd=a.na[Da];zd?(f.shift(),f.shift(),zd(f)):a.g("no dump registered for "+ba);break a}ba||(Ea=a.Za||"db")}else a.Za=Ea;if("dh"==Ea){var Ad=ba,Bd=ra,Cd="",Dd=0,M=a.Z,da=a.O;if(da.length){var R=
|
|
|
|
|
+Ad||a.Ea,Ga=+Bd||10;isNaN(R)?R=Ga:Cd="more ";R>da.length&&(a.g("note: only "+da.length+" available"),R=da.length);M-=R;0>M&&(null==da[da.length-1].D?(R=M+R,M=0):M+=da.length);var sc=[];"call"==Bd&&(Ga=1E5,sc=["CALL"]);for(void 0!==Ad&&a.g(R+" instructions earlier:");0<Ga&&M!=a.Z;){var Ed=da[M++];if(null==Ed.D)break;var cb=X(Ed.D),ve=R--,Fd=ud(a,cb,"history",ve);(!sc.length||0<=Fd.indexOf(sc[0]))&&a.g(Fd);cb.fb&&(M+=cb.fb,Ga-=cb.fb,R-=cb.fb);M>=da.length&&(M=0);a.Ea=R;Dd++;Ga--}}Dd||(a.g("no "+Cd+
|
|
|
|
|
"history available"),a.Ea=void 0)}else{var Eb=Z(a,ba);if(Eb){var Fb=0;ra&&("l"==ra.charAt(0)&&(ra=ra.substr(1)||ue),Fb=Yc(a,ra)>>>0,65536<Fb&&(Fb=65536));for(var sa="",Gb="dd"==Ea?4:"dw"==Ea?2:1,Hb=Gb*Fb||128,we=Hb+15>>4||1;we--&&0<Hb;){var Ib=0,tc=0,db,eb="",uc="",ba=W(a,Eb.D);for(db=16;0<db&&0<Hb;db--){var Jb=a.Sa(Eb,1),Ib=Ib|Jb<<(tc++<<3);tc==Gb&&(eb+=r(Ib,2*Gb),eb+=1==Gb?9==db?"-":" ":" ",Ib=tc=0);uc+=32<=Jb&&128>Jb?String.fromCharCode(Jb):".";Hb--}sa&&(sa+="\n");sa+=ba+" "+eb+(0==db?" "+uc:
|
|
|
|
|
"")}sa&&a.g(sa);a.Da=Eb}}}}break;case "e":if("else"==f[0])break;var Kb=1,Gd=255,Hd=a.Sa,Id=a.bb;"ew"==f[0]&&(Kb=2,Gd=65535,Hd=a.pa,Id=a.ib);var Jd=Kb<<1,Kd=f[1];if(null==Kd)a.g("edit memory commands:"),a.g("\teb [a] [...] edit bytes at address a"),a.g("\tew [a] [...] edit words at address a");else{var Lb=Z(a,Kd);if(Lb)for(var Mb=2;Mb<f.length;Mb++){var fb=Wc(a,f[Mb]);if(void 0===fb){a.g("unrecognized value: "+f[Mb]);break}fb&~Gd&&a.g("warning: "+r(fb)+" exceeds "+Kb+"-byte value");var xe=Hd.call(a,
|
|
|
|
|
Lb);a.g("changing "+W(a,Lb.D)+" from "+r(xe,Jd,!0)+" to "+r(fb,Jd,!0));Id.call(a,Lb,fb,Kb)}}break;case "g":a:{var Ld=f[1],ye=b;if(void 0!==Ld){var vc=Z(a,Ld,!0);if(!vc)break a;ld(a,vc,ye);a.va(a.B,vc,!0)}a.Ba(!0)||d||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var wc;if(a.A.ba)wc="halting",a.ca();else{if(qb(a,!0))break a;wc="already halted"}d||a.g(wc)}break;case "i":if("if"==f[0]){var xc;var gb=b.substr(2),gb=qa(gb);Wc(a,gb)?(d||a.g("true: "+gb),xc=!0):(d||a.g("false: "+
|
|
|
|
|
gb),xc=!1);xc||(c=!1)}break;case "k":var ze=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var yc=0,Md=X(),hb=X(a.f.b[6]);for(a.g("stack trace for "+W(a,hb.D));10>yc;){for(var ta=null,Ae=256;65536>hb.D>>>0;){Md.D=a.pa(hb,2);if(null==hb.D||!Ae--)break;for(var Be=a,Nb=Md,Nd=null,ib=Nb.D,Od=ib,zc=1;6>=zc&&ib;zc++){if(2<zc){Nb.D=ib;var Ob=ud(Be,Nb);if(0<=Ob.indexOf("JSR")){var Pd=Ob.indexOf(" ");if(ib+(Ob.indexOf(" ",Pd+1)-Pd-
|
|
|
|
|
1)/2==Od){Nd=Ob;break}}}ib--}Nb.D=Od;if(ta=Nd)break}if(!ta||null==ta)break;var Qd=null;if("ks"==ze){var Rd=ta.match(/[0-9A-F]+$/);Rd&&(Qd=Zd(a,Rd[0]))}ta=pa(ta,50)+" ;"+(Qd||"stack="+W(a,hb.D));a.g(ta);yc++}yc||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Zd(a,f[1],!0);break}break;case "m":a:{var ea,fa=null,D=f[1];"?"==D&&(D=void 0);if(void 0!==D){var ja=0;if("all"==D)ja=1878917119,D=null;else if("on"==D)fa=!0,D=null;else if("off"==D)fa=!1,D=null;else{"keys"==D&&(D="key");"kbd"==
|
|
|
|
|
D&&(D="keyboard");for(ea in F)if(D==ea){ja=F[ea];fa=!!(a.aa&ja);break}if(!ja){a.g("unknown message category: "+D);break a}}if(ja)if("on"==f[2])a.aa|=ja,fa=!0;else if("off"==f[2]&&(a.aa&=~ja,fa=!1,1073741824==ja)){for(var Ac=0;Ac<a.ka.length;Ac++)a.g(a.ka[Ac]);a.ka=[]}}var Ce=0,ka="";for(ea in F)if(!D||D==ea){var De=!!(a.aa&F[ea]);if(null===fa||fa==De)ka&&(ka+=","),++Ce%10||(ka+="\n\t"),"key"==ea&&(ea="keys"),ka+=ea}void 0===D&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");
|
|
|
|
|
a.g((null!==fa?fa?"messages on: ":"messages off: ":"message categories:\n\t")+(ka||"none"));cd(a)}break;case "p":if("print"==f[0]){$d(a,b.substr(5));break}var Ee="pr"==f[0]?1:0;if(a.W)a.g("step in progress");else{var Sd=X(a.f.b[7]);a.Sa(Sd);a.W?(a.va(a.B,Sd,!0),a.Ba()||(a.u&&a.u.Xa(),a.W=0)):ae(a,Ee?"tr":"t")}break;case "r":if("reset"==b){a.u&&a.u.reset();break}nd(a,f);break;case "s":a:switch(f[1]){case "base":if(f[2]){var jb=+f[2];if(8==jb||10==jb||16==jb)a.fa=jb;else{a.g("invalid base: "+jb);break}}a.g("default base: "+
|
|
|
|
|
a.fa);break;case "cs":var kb;void 0!==f[3]&&(kb=+f[3]);switch(f[2]){case "int":a.f.Ia=kb;break;case "start":a.f.Ua=kb;break;case "stop":a.f.Ja=kb;break;default:a.g("unknown cs option");break a}void 0!==kb&&hc(a.f);a.g("checksums "+(a.f.A.Ha?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(mc(a.f,+f[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.f.ya.toFixed(2)+"Mhz")+" ("+a.f.za+"x)");break;case "?":a.g("debugger options:");a.g("\tbase #\t\tset default base to #");
|
|
|
|
|
a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:f[1]&&a.g("unknown option: "+f[1])}break;case "t":ae(a,f[0],f[1]);break;case "u":od(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Yd(a,b.substr(3))||(c=!1);break}a.g("PDP11js version 1.30.0 ("+a.f.zb+",RELEASE"+(tb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(window?window.navigator.userAgent:
|
|
|
|
|
"");break;case "?":if(f[1]){$d(a,b.substr(1));break}var lb="commands:",Bc;for(Bc in ed)lb+="\n"+pa(Bc,9)+ed[Bc];Lc(a)||(lb+="\nnote: history disabled if no exec breakpoints");a.g(lb);break;default:a.g("unknown command: "+b),c=!1}}}catch(Td){a.g("debugger error: "+(Td.stack||Td.message)),c=!1}return c}function ic(a,b,d){b=Uc(a,b,d);for(var c in b)if(!td(a,b[c]))return!1;return!0}Qa(function(){for(var a=C(document,"pdp11","debugger"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new ad(c);nb(c,d)}});
|
|
|
|
|
function ce(a,b,d){u.call(this,"Computer",a,ce,67108864);this.A.$=!1;de(this,b);this.R=fc(this,"autoPower",a);this.G=0;this.X=a.busWidth||a.buswidth;this.u=ee;this.O=null;this.L=this.V=!1;this.Y=fc(this,"url")||"";(Math.random()+.1).toString(36);this.B=fe(this);if(this.f=mb("CPU",this.id)){this.I=mb("Debugger",this.id);this.F=new wb({id:this.rb+".bus",busWidth:this.X},this.f,this.I);var c,e=bb(this.id);if((this.H=mb("Panel",this.id))&&this.H.wa)for(b=0;b<e.length;b++)c=e[b],c.ea=this.H.ea,c.g=this.H.g,
|
|
|
|
|
c.wa=this.H.wa;this.g("PDP11js v1.30.0\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");this.g("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<e.length;b++)c=e[b],c.xa&&c.xa(this,this.F,this.f,this.I);b=null;c=a.resume;void 0!==c&&(1<c.length?b=this.N=c:this.u=parseInt(c,10));var f;if(a=fc(this,"state")||(f=!0,a.state))b=this.T=a,f||(this.L=!0,this.u=ee),this.u&&(this.P=
|
|
|
|
|
new I(this,"1.30.0"),ge(this.P)?b=null:delete this.P);!b&&this.u&&(b=he(this))&&(this.L=!0);if(b){var h=this;xa(b,null,!0,function(a,b,c){c?(h.N=null,h.L=!1,h.ea("Unable to load machine state from server (error "+c+(b?": "+qa(b):"")+")")):(h.O=b,h.V=!0);E(h)})}else E(this);this.K.power||(this.R=!0);!d&&this.R&&ie(this,this.Va)}else t("Unable to find CPU component")}y(ce);var ee=0;
|
|
|
|
|
function de(a,b){if(!b){var d;if("object"==typeof resources&&(d=resources.parms))try{b=eval("("+d+")")}catch(c){t(c.message+" ("+d+")")}}a.W=b}function fc(a,b,d){var c=b.toLowerCase(),c=Va[b]||Va[c];void 0===c&&a.W&&(c=a.W[b]);void 0===c&&d&&(c=d[b]);void 0===c&&"object"==typeof resources&&resources[b]&&(c=b);return c}function ie(a,b,d){for(var c=bb(a.id),e=0;e<=c.length;e++){var f=e<c.length?c[e]:a;if(!rb(f)){rb(f,function(){ie(a,b,d)});return}}b.call(a,d)}
|
|
|
|
|
function je(a,b){var d=new I(a,"1.30.0","validate");if(ge(d)&&ke(d)){var c=le(d,"timestamp"),e=b?le(b,"timestamp"):"unknown";c!=e&&(a.ea("Machine state may be out-of-date\n("+c+" vs. "+e+")\nCheck your browser's local storage limits"),b||d.clear())}}m=ce.prototype;
|
|
|
|
|
m.Va=function(a){void 0===a&&(a=this.u||(this.O?1:ee));if(!this.G){this.G++;var b=!1,d=!1;this.U=!1;var c=this.P||new I(this,"1.30.0");if(-1==a)b=!0;else if(a>ee){if(ge(c,this.O)){this.J=new I(this,"1.30.0","failsafe");ge(this.J)&&(me(this,c),a=2,ne(this.J));J(this.J,"timestamp",wa());oe(this.J);var e=this.u&&!this.L;if(1==a||ya("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(d=ke(c)){var f=le(c,"code"),h=le(c,"data");f&&("ok"==f?ge(c,h):("error"==f&&
|
|
|
|
|
"no machine state"!=h?(this.ea("Error: "+h),"unable to verify user"==h&&(Ha("user",""),this.B=null)):this.g(f+": "+h),ne(c),ge(c)?(d=ke(c),e=!0):d=!1))}e&&je(this,d?c:null)}else 2==a&&c.clear()}else je(this);delete this.O;delete this.P}e=bb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.f&&(d=pe(this,h,c,b,d));b=[c,a,d];-1!=a?ie(this,this.pb,b):this.pb(b)}};
|
|
|
|
|
function pe(a,b,d,c,e){if(!b.A.$){b.A.$=!0;if(b.ta){var f=null;e&&((f=le(d,b.id))||(f=le(d,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ta(f,c)&&f&&(t("Unable to restore state for "+b.type),a.T&&!a.V?(d.clear(),a.u=ee,window&&window.location.reload()):a.U=!0,b.ta(null),e=!1)}if(!c&&b.qb)for(a=b.qb.split("|"),d=0;d<a.length;d++)b.status(a[d])}return e}
|
|
|
|
|
m.pb=function(a){var b=a[0],d=0>a[1];a=a[2];this.Z=!0;this.A.$=!0;var c=this.K.power;c&&(c.textContent="Shutdown");this.f&&(pe(this,this.f,b,d,a),this.f.Pa());this.U&&(me(this,b),b.clear());!d&&this.J&&(this.J.clear(),delete this.J);this.G=0};
|
|
|
|
|
function me(a,b){if(ya("There may be a problem with your PDP11js machine.\n\nTo help us diagnose it, click OK to send this PDP11js machine state to http://www.pcjs.org.")){var d=a.B||"",c=b.toString(),e={app:"PDP11js",ver:"1.30.0"};e.url=a.Y;e.user=d;e.type="bug";e.data=c;xa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
|
|
|
|
function be(a,b,d){var c,e="none";if(a.G)return null;a.G--;var f=new I(a,"1.30.0"),h=new I(a,"1.30.0","validate"),g=wa();J(h,"timestamp",g);J(f,"timestamp",g);J(f,"version","1.30.0");J(f,"url",window?window.location.href:null);J(f,"browser",window?window.navigator.userAgent:"");a.f&&a.f.sa&&(d&&a.f.ca(),c=a.f.sa(b,d),"object"===typeof c&&J(f,a.f.id,c),d&&(a.f.A.$=!1,!1===c&&(e=null)));for(var g=bb(a.id),k=0;k<g.length;k++){var l=g[k];l.A.$&&(l.sa&&(c=l.sa(b,d),"object"===typeof c&&J(f,l.id,c)),d&&
|
|
|
|
|
(l.A.$=!1,!1===c&&(e=null)))}e&&(d?(g=c=!1,b?(a.B&&qe(a,a.B,f.toString()),oe(h)&&oe(f)||(e=null,c=g=!0)):a.u&&(c=!0,g=3==a.u),c&&f.clear(g)):e=f.toString());d&&(a.A.$=!1,b=a.K.power)&&(b.textContent="Power");a.G=0;return e}m.reset=function(){this.F&&this.F.reset&&(this.I&&ob(this,0)&&this.I.message("Resetting "+this.F.type,void 0),this.F.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var d=a[b];d!==this&&d!==this.F&&d.reset&&(this.I&&ob(this,0)&&this.I.message("Resetting "+d.type,void 0),d.reset())}};
|
|
|
|
|
63],35968:[7,63],36032:[5,63],36096:[66,63],36160:[59,63],36224:[64,63],36288:[61,63]},65528:{128:[76,7],152:[108,12288]},65535:{0:[55],1:[99],2:[75],3:[26],4:[109],5:[70],6:[110],7:[111],160:[69],161:[31],162:[41],163:[33],164:[45],165:[36],166:[43],167:[35],168:[38],169:[32],170:[42],171:[34],172:[46],173:[37],174:[44],175:[30],176:[69],177:[80],178:[88],179:[82],180:[92],181:[85],182:[90],183:[84],184:[87],185:[81],186:[89],187:[83],188:[93],189:[86],190:[91],191:[79]}};m=fd.prototype;
|
|
|
|
|
m.va=function(a,b,d,c){this.F=b;this.f=d;this.j=a;(a=lc(a,"messages"))&&id(this,a);this.Fa=ld;md(this,function(a){a:{var b=c.F.N,d=a[0],g=a=0,k=b.length;if(d){a=Y(Z(c,d));if(-1===a){c.g("invalid address: "+d);break a}g=a>>>c.F.S;k=1}c.g("blockid physical blockaddr used size type");c.g("-------- --------- ---------- ------ ------ ----");for(var d=-1,l=0;k--;){var n=b[g];n.type==d?l++||c.g("..."):(d=n.type,l=Qb[d],n&&c.g(r(n.id,8)+" %"+r(g<<c.F.S,8)+" %%"+r(n.D,8)+" "+r(n.Ya,4,!0)+
|
|
|
|
|
" "+r(n.size,4,!0)+" "+l),d!=Yb&&(d=-1),l=0);a+=c.F.ma;g++}}});E(this)};
|
|
|
|
|
m.ha=function(a,b,d){var c=this;switch(b){case "debugInput":return this.da=this.K[b]=d,d.onkeydown=function(a){var b;if(13==a.keyCode)b=d.value,d.value="",oc(c,b,!0);else if(27==a.keyCode)d.value=b="";else if(38==a.keyCode?(b=null,c.H<c.G.length-1&&(b=c.G[++c.H])):40==a.keyCode&&(0<c.H?b=c.G[--c.H]:(b="",c.H=-1)),null!=b){var h=b.length;d.value=b;d.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.K[b]=d,Ka(d,function(){if(c.da){var a=c.da.value;
|
|
|
|
|
c.da.value="";oc(c,a,!0);return!0}return!1}),!0;case "step":return this.K[b]=d,Ka(d,function(a){var b=!1;qb(c,!0)||(pb(c,!0),b=c.La(a?1:0),pb(c,!1));return b}),!0}return!1};m.Xa=function(){this.da&&this.da.focus()};function Y(a){a=a&&a.D;null==a&&(a=-1);return a}m.Sa=function(a,b){var d=255,c=Y(a);-1!==c&&(d=this.F,d=d.N[(c&d.j)>>>d.S].Wa(c&d.F,c),b&&nd(a,b));return d};m.pa=function(a,b){var d=65535,c=Y(a);-1!==c&&(d=Rb(this.F,c),b&&nd(a,b));return d};
|
|
|
|
|
m.fb=function(a,b,d){var c=Y(a);if(-1!==c){var e=this.F;e.N[(c&e.j)>>>e.S].Na(c&e.F,b&255,c);d&&nd(a,d);H(this.f,!0)}};m.lb=function(a,b,d){var c=Y(a);if(-1!==c){var e=this.F,f=c&e.F,h=(c&e.j)>>>e.S;f!=e.F?e.N[h].nb(f,b&65535,c):(e.N[h++].Na(f,b&255,c),e.N[h&e.B].Na(0,b>>8&255,c+1));d&&nd(a,d);H(this.f,!0)}};function X(a){return{D:a,oa:!1}}function od(a){return[a.D,a.oa]}function pd(a){return{D:a[0],oa:a[1]}}
|
|
|
|
|
function Z(a,b,d){var c;d=(d?a.P:a.Da).D;if(void 0!==b){c=b=bd(a,b);var e;if(c.match(/^[a-z_][a-z0-9_]*$/i))for(c=c.toUpperCase(),d=0;d<a.L.length;d++){var f=a.L[d].ra[c];if(void 0!==f){c=f.o;void 0!==c&&(e=X(c));break}}if(c=e)return c;d=ad(a,b,void 0)}null!=d&&(c=X(d));return c}function qd(a,b,d){d&&(d=d.match(/(['"])(.*?)\1/))&&(b.Gb=Zc(a,b.Eb=d[2]))}function nd(a,b){null!=a.D&&(a.D+=b||1)}
|
|
|
|
|
function id(a,b){a.I=a;a.aa=a.Hb=536870912;a.ia=null;a.ka=[];var d=Zc(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(d.length)for(var c in F){var e;a:if(e=void 0,Array.prototype.indexOf)e=d.indexOf(c,e);else{e=e||0;0>e&&(e+=d.length);0>e&&(e=0);for(var f=d.length;e<f;e++)if(e in d&&d[e]===c)break a;e=-1}0<=e&&(a.aa|=F[c],a.g(c+" messages enabled"))}}function md(a,b){for(var d in F)if(64==F[d]){a.na[d]=b;break}}
|
|
|
|
|
m.message=function(a,b){b&&(a+=" at "+W(this,X(this.f.b[7]).D));if(this.aa&1073741824)this.ka.push(a);else if(!this.ia||a!=this.ia)if(this.ia=a,this.aa&-2147483648&&(this.ca(),a+=" (cpu halted)"),this.g(a),this.f){var d=this.f;Hc(d);d.Z=0;H(d)}};
|
|
|
|
|
function hd(a){var b;if(Qc(a)){if(!a.O||!a.O.length){a.O=Array(1E3);for(b=0;b<a.O.length;b++)a.O[b]=X();a.Z=0;a.g("instruction history buffer allocated")}if(!a.Y||!a.Y.length)for(a.Y=Array(256),b=0;b<a.Y.length;b++)a.Y[b]=[b,0]}else a.O&&a.O.length&&a.g("instruction history buffer freed"),a.Z=0,a.O=[],a.Y=[]}m.Ba=function(a){if(!rd(this))return!1;this.f.Ba(a);return!0};
|
|
|
|
|
m.La=function(a,b,d){if(!rd(this))return!1;this.M=0;a||Qc(this)&&Rc(this,this.f.b[7],0);try{var c=this.f.La(a);0<c&&(this.M+=c,Fc(this.f,c,!0),pc(this.f,c),this.T++)}catch(e){"number"!=typeof e&&(this.M=0,sb(this.f,e.stack||e.message))}!1!==d&&H(this.f);this.ja(b||!1);return 0<this.M};m.ca=function(a){this.f&&this.f.ca(a)};m.ja=function(a){void 0===a&&(a=!0);this.P=X(this.f.b[7]);a&&1!=this.W?sd(this):td(this)};
|
|
|
|
|
function rd(a){var b;if(b=a.f&&rb(a.f))b=a.f,b.A.$?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!qb(a.f)?(a=a.f,a.A.error?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.ta=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.sa=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){hd(this);this.T=this.la=0;this.ia=null;this.M=0;this.P=X(this.f.b[7]);this.A.ba=!1;ud(this);a||this.ja()};
|
|
|
|
|
m.save=function(){var a=new I(this);J(a,0,od(this.P));J(a,1,od(this.U));J(a,2,[this.G,this.V,this.aa]);J(a,3,this.L);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.P=pd(a[b++]),this.U=pd(a[b++]),this.G=a[b][0],"string"==typeof this.G&&(this.G=[this.G]),this.V=a[b][1],this.aa|=a[b][2]);a[3]&&(this.L=a[3]);return!0};m.start=function(a,b){this.W||this.g("running");this.A.ba=!0;this.Qa=a;this.Ra=b};
|
|
|
|
|
m.stop=function(a,b){if(this.A.ba){this.A.ba=!1;this.M=b-this.Ra;if(!this.W){var d="stopped";if(this.M){var c=a-this.Qa,e=0<c?Math.round(1E3*this.M/c):0,d=d+" (";Qc(this)&&(d+=this.T+" opcodes, ",this.la-=this.T,this.T=0);d+=this.M+" cycles, "+c+" ms, "+e+" hz)"}else ob(this,-2147483648)&&(d+=" (use the 't' command to execute blocked faults)");this.g(d)}this.ja(!0);this.Xa();ud(this,this.f.b[7])}};function Qc(a){return 1<a.B.length||!!a.ga}
|
|
|
|
|
function Rc(a,b,d){var c=a.f;if(0<d&&(a.ga&&!--a.ga||gc(a,b,1,a.B)))return!0;0<=d&&a.Y.length&&(a.T++,null!=Rb(a.F,b)&&(b=a.O[a.Z],b.D=c.b[7],b.oa=!1,++a.Z==a.O.length&&(a.Z=0)));return!1}function gd(a){var b,d;a.B=["bp"];if(void 0!==a.R)for(b=1;b<a.R.length;b++){d=a.R[b];var c=a.F;hc(c.N[Y(d)>>>c.S],!1)}a.R=["br"];if(void 0!==a.J)for(b=1;b<a.J.length;b++)d=a.J[b],c=a.F,hc(c.N[Y(d)>>>c.S],!0);a.J=["bw"];a.Ca=0}
|
|
|
|
|
m.wa=function(a,b,d){var c=!0;d||vd(this,a,b,!1,!0);if(a!=this.B){var e=Y(b);if(-1===e)this.g("invalid address: "+W(this,b.D)),c=!1;else{var f=this.F;f.N[e>>>f.S].wa(e&f.F,a==this.J)}}c&&(a.push(b),d?b.oa=!0:(wd(this,a,a.length-1,"set"),hd(this)));return c};function vd(a,b,d,c,e){var f=!1;d=Y(d);for(var h=1;h<b.length;h++){var g=b[h];if(d==Y(g)&&(!c||g.oa)){f=!0;g.oa||e||wd(a,b,h,"cleared");b.splice(h,1);b!=a.B&&(c=a.F,hc(c.N[d>>>c.S],b==a.J));g.oa||hd(a);break}}return f}
|
|
|
|
|
function Vd(a,b){for(var d=1;d<b.length;d++)wd(a,b,d);return b.length-1}function wd(a,b,d,c){d=b[d];a.g(b[0]+" "+W(a,d.D)+(c?" "+c:d.Eb?' "'+d.Eb+'"':""))}function ud(a,b){if(void 0!==b)gc(a,b,1,a.B,!0),a.W=0;else for(var d=1;d<a.B.length;d++){var c=a.B[d];if(c.oa){if(!vd(a,a.B,c,!0))break;d=0}}}
|
|
|
|
|
function gc(a,b,d,c,e){var f=!1;if(!a.Ca++)for(var h=1;!f&&h<c.length;h++){var g=c[h];if(!e||g.oa)for(var k=Y(g),l=0;l<d;l++)if(b+l==k){var n,f=!0;g.oa&&(vd(a,c,g,!0),e=!0);if(n=g.Gb){for(var f=!1,p=0;p<n.length;p++)if(!Wd(a,n[p],!0)){if(n[p].indexOf("if")){f=!0;break}for(var q=p+1;q<n.length&&n[q].indexOf("else");q++)p++;if(q==n.length){f=!0;break}}a.f.A.ba||(f=!0)}if(f){e||wd(a,c,h,"hit");break}}}a.Ca--;return f}
|
|
|
|
|
function Xd(a,b,d,c){var e=X(b.D),f=a.pa(b,2),h,g;for(g in a.Fa)if(h=a.Fa[g][f&g])break;h||(h=[0]);g="";for(var k=kd[h[0]],l=h.length-1,n=1;n<=l;n++){var p=h[n];if(void 0!==p){var q;q=a;var A=p,p=b,v="",w=void 0,w=void 0,w=A&61440;if(4096==w)w=(f&255)<<24>>23,w=p.D+w&65535,v=W(q,w);else if(8192==w)w=(f&63)<<1,w=p.D-w&65535,v=W(q,w);else if(12288==w)w=f&7,v=W(q,w,2);else if(24576==w)w=f&63,v=W(q,w);else if(w=f&A,A&4032&&(w>>=6,A>>=6),A&63){var A=void 0,z=w&7;switch((w&56)>>3){case 0:v=Yd(z);break;
|
|
|
|
|
case 1:v="@"+Yd(z);break;case 2:7>z?v="("+Yd(z)+")+":(A=q.pa(p,2),v="#"+W(q,A));break;case 3:7>z?v="@("+Yd(z)+")+":(A=q.pa(p,2),v="@#"+W(q,A));break;case 4:v="-("+Yd(z)+")";break;case 5:v="@-("+Yd(z)+")";break;case 6:A=q.pa(p,2);v=W(q,A)+"("+Yd(z)+")";7==z&&(v=[v,W(q,A+p.D&65535)]);break;case 7:A=q.pa(p,2),v="@"+W(q,A)+"("+Yd(z)+")",7==z&&(v=[v,W(q,A+p.D&65535)])}}q=v;if(!q||!q.length){g="INVALID";break}"string"!=typeof q&&(d||(d=q[1]),q=q[0]);0<g.length&&(g+=",");g+=q||"???"}}f="";h=W(a,e.D)+":";
|
|
|
|
|
if(-1!==e.D&&-1!==b.D){do if(f+=" "+W(a,a.pa(e,2)),null==e.D)break;while(e.D!=b.D)}h+=pa(f,24);h+=pa(k,5);g&&(h+=" "+g);d&&(h=pa(h,60)+";"+d,h=a.f.A.Ha?h+("cycles="+qc(a.f).toString()+" cs="+r(a.f.Ta)):h+(null!=c?"="+c.toString():""));return h}function Zd(a,b){var d;switch(b){case "N":d=a.f.i&32768?8:0;break;case "Z":d=a.f.w&65535?0:4;break;case "V":d=a.f.u&32768?2:0;break;case "C":d=a.f.C&65536?1:0;break;default:d=0}return b.charAt(0)+(d?"1":"0")+" "}
|
|
|
|
|
function Yd(a){return 6>a?"R"+a:6==a?"SP":"PC"}function $d(a,b){var d="",c=a.f;8>b?(d=Yd(b),d+="="+W(a,c.b[b])):13>b?d="A"+(b-8)+"="+W(a,c.eb[b-8]):16<=b&&20>b?d="S"+(b-16)+"="+W(a,c.Aa[b-16]):20==b&&(d="PS="+W(a,Kc(c)));d&&(d+=" ");return d}m.qb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};function ae(a,b,d){var c=[],e=Y(b)>>>0;for(b=0;b<a.L.length;b++){var f=a.L[b],h=f.D>>>0,g=f.Kb;if(e>=h&&e<h+g){e=ra(f.ob,[e-h],a.qb);0<=e?be(a,b,e,c):d&&(e=~e,be(a,b,e-1,c),be(a,b,e,c));break}}return c}
|
|
|
|
|
function be(a,b,d,c){var e={},f=a.L[b].ob,h=0,g=null;0<=d&&d<f.length&&(h=f[d][0],g=f[d][1]);g&&(e=a.L[b].ra[g],g="."==g.charAt(0)?null:e.l||g);c.push(g);c.push(h);c.push(e.a);c.push(e.c)}function ce(a,b){var d=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(d){if(!d[1])return ed(a)||a.g("no variables"),!0;if(!d[2])return ed(a,d[1]);if(!d[3])return delete a.X[d[1]],!0;var c=ad(a,d[3]);return void 0!==c?(a.X[d[1]]=c,!0):!1}a.g("invalid assignment:"+b);return!1}
|
|
|
|
|
function de(a,b,d){var c=null;if(b=Z(a,b,!0)){var e=ae(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.D-e[1])&&(h=" + "+r(f,4,!0)),f=e[0]+" ("+W(a,e[1])+")"+h,d&&a.g(f),c=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.D)&&(h=" - "+r(f,4,!0)),f=e[4]+" ("+W(a,e[5])+")"+h,d&&a.g(f),c||(c=f))}else d&&a.g("no symbols")}return c}
|
|
|
|
|
function sd(a,b){var d;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var c=a.f;null==d&&(d=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.g("missing value for "+b[1]);return}var h=!1,g=ad(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "PC":c.b[7]=g;a.P=X(c.b[7]);break;case "NF":c.i=g?32768:0;break;case "ZF":c.w=g?0:1;break;case "VF":c.u=
|
|
|
|
|
g?32768:0;break;case "CF":c.C=g?65536:0;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}H(c);a.g("updated registers:")}f="";for(e=0;6>e;e++)f+=$d(a,e);f=f+"\n"+($d(a,6)+$d(a,7));f+=Zd(a,"T")+Zd(a,"N")+Zd(a,"Z")+Zd(a,"V")+Zd(a,"C");a.g(f);d&&(a.P=X(c.b[7]),td(a,W(a,a.P.D)))}}function ee(a,b){b=qa(b);var d=b.match(/^(['"])(.*?)\1$/);d?a.g(d[2]):ad(a,b,!0)}
|
|
|
|
|
function fe(a,b,d){var c="t"!=b;d=cd(a,d,null,!0)||1;var e=1==d?0:1;"tc"==b&&(e=d,d=1);Ja(d,function(){return pb(a,!0)&&a.La(e,c,!1)},function(){H(a.f);pb(a,!1)})}
|
|
|
|
|
function td(a,b,d,c){if(b=Z(a,b,!0)){void 0===c&&(c=1);var e=256;if(void 0!==d){c=Z(a,d,!0);if(!c||c.D<b.D)return;e=c.D-b.D;if(256<e){a.g("range too large");return}c=-1}d=0;for(var f;0<e&&c--;){f=qb(a,!1)||a.W?a.M:null;var h=null!=f?"cycles":null,g=ae(a,b),k=b.D;if(g[0]&&c&&(!d&&c||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.g(l)}g[3]&&(h=g[3],f=null);f=Xd(a,b,h,f);a.g(f);a.P=b;e-=b.D-k;d++}}}
|
|
|
|
|
function Wd(a,b,d){var c=!0;try{b.length&&"end"!=b?d||a.g(">> "+b):(a.V&&(a.g("ended assemble at "+W(a,a.U.D)),a.P=a.U,a.V=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ia=null;if(rb(a)&&0<b.length){a.V&&(b="a "+W(a,a.U.D)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var n=Z(a,f[1],!0);if(n)if(a.U=
|
|
|
|
|
n,void 0===f[2])a.g("begin assemble at "+W(a,n.D)),a.V=!0,H(a.f);else{var p;a.g("not supported yet");p=[];if(p.length){for(var q=0;q<p.length;q++)a.fb(n,p[q],1);a.g(Xd(a,a.U))}}break;case "b":a:{var A=f[0],v=f[1],w=b;if("?"==v)a.g("breakpoint commands:"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");
|
|
|
|
|
else{var z=A.charAt(1);if("l"==z){var Da=0,Da=Da+Vd(a,a.B),Da=Da+Vd(a,a.R);(Da+=Vd(a,a.J))||a.g("no breakpoints")}else if("n"==z)a.ga=cd(a,v),a.g("break after "+a.ga+" instruction(s)");else if(void 0===v)a.g("missing breakpoint address");else{var T=X();if("*"!=v&&(T=Z(a,v,!0),!T))break a;"c"==z?null==T.D?(gd(a),a.g("all breakpoints cleared")):vd(a,a.B,T)||vd(a,a.R,T)||vd(a,a.J,T)||a.g("breakpoint missing: "+W(a,T.D)):null!=T.D&&(qd(a,T,w),"p"==z?a.wa(a.B,T):"r"==z?a.wa(a.R,T):"w"==z?a.wa(a.J,T):a.g("unknown breakpoint command: "+
|
|
|
|
|
z))}}}break;case "c":a.xa&&(a.xa.value="");break;case "d":a:{var Ea,Fa=f[0],ba=f[1],sa=f[2],ze=f[3];if("?"==ba){var ca="";for(Ea in F)a.na[Ea]&&(ca&&(ca+=","),ca+=Ea);ca+=",state,symbols";a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");ca.length&&a.g("dump extension commands:\n\t"+ca)}else if("state"==ba){var xd=ge(a.j,
|
|
|
|
|
!0);"console"==sa?console.log(xd):(a.xa&&(a.xa.value=""),a.g(xd))}else if("symbols"==ba)for(var rc=0;rc<a.L.length;rc++){var sc=a.L[rc],Ga;for(Ga in sc.ra)if("."!=Ga.charAt(0)){var yd=sc.ra[Ga].o;if(void 0!==yd){var zd=sc.ra[Ga].l;zd&&(Ga=zd);a.g(W(a,yd)+" "+Ga)}}}else{if("d"==Fa){for(Ea in F)if(f[1]==Ea){var Ad=a.na[Ea];Ad?(f.shift(),f.shift(),Ad(f)):a.g("no dump registered for "+ba);break a}ba||(Fa=a.ab||"db")}else a.ab=Fa;if("dh"==Fa){var Bd=ba,Cd=sa,Dd="",Ed=0,N=a.Z,da=a.O;if(da.length){var U=
|
|
|
|
|
+Bd||a.Ea,Ha=+Cd||10;isNaN(U)?U=Ha:Dd="more ";U>da.length&&(a.g("note: only "+da.length+" available"),U=da.length);N-=U;0>N&&(null==da[da.length-1].D?(U=N+U,N=0):N+=da.length);var tc=[];"call"==Cd&&(Ha=1E5,tc=["CALL"]);for(void 0!==Bd&&a.g(U+" instructions earlier:");0<Ha&&N!=a.Z;){var Fd=da[N++];if(null==Fd.D)break;var db=X(Fd.D),Ae=U--,Gd=Xd(a,db,"history",Ae);(!tc.length||0<=Gd.indexOf(tc[0]))&&a.g(Gd);db.ib&&(N+=db.ib,Ha-=db.ib,U-=db.ib);N>=da.length&&(N=0);a.Ea=U;Ed++;Ha--}}Ed||(a.g("no "+Dd+
|
|
|
|
|
"history available"),a.Ea=void 0)}else{var Fb=Z(a,ba);if(Fb){var Gb=0;sa&&("l"==sa.charAt(0)&&(sa=sa.substr(1)||ze),Gb=cd(a,sa)>>>0,65536<Gb&&(Gb=65536));for(var ta="",Hb="dd"==Fa?4:"dw"==Fa?2:1,Ib=Hb*Gb||128,Be=Ib+15>>4||1;Be--&&0<Ib;){var Jb=0,uc=0,eb,fb="",vc="",ba=W(a,Fb.D);for(eb=16;0<eb&&0<Ib;eb--){var Kb=a.Sa(Fb,1),Jb=Jb|Kb<<(uc++<<3);uc==Hb&&(fb+=r(Jb,2*Hb),fb+=1==Hb?9==eb?"-":" ":" ",Jb=uc=0);vc+=32<=Kb&&128>Kb?String.fromCharCode(Kb):".";Ib--}ta&&(ta+="\n");ta+=ba+" "+fb+(0==eb?" "+vc:
|
|
|
|
|
"")}ta&&a.g(ta);a.Da=Fb}}}}break;case "e":if("else"==f[0])break;var Lb=1,Hd=255,Id=a.Sa,Jd=a.fb;"ew"==f[0]&&(Lb=2,Hd=65535,Id=a.pa,Jd=a.lb);var Kd=Lb<<1,Ld=f[1];if(null==Ld)a.g("edit memory commands:"),a.g("\teb [a] [...] edit bytes at address a"),a.g("\tew [a] [...] edit words at address a");else{var Mb=Z(a,Ld);if(Mb)for(var Nb=2;Nb<f.length;Nb++){var gb=ad(a,f[Nb]);if(void 0===gb){a.g("unrecognized value: "+f[Nb]);break}gb&~Hd&&a.g("warning: "+r(gb)+" exceeds "+Lb+"-byte value");var Ce=Id.call(a,
|
|
|
|
|
Mb);a.g("changing "+W(a,Mb.D)+" from "+r(Ce,Kd,!0)+" to "+r(gb,Kd,!0));Jd.call(a,Mb,gb,Lb)}}break;case "g":a:{var Md=f[1],De=b;if(void 0!==Md){var wc=Z(a,Md,!0);if(!wc)break a;qd(a,wc,De);a.wa(a.B,wc,!0)}a.Ba(!0)||d||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var xc;if(a.A.ba)xc="halting",a.ca();else{if(qb(a,!0))break a;xc="already halted"}d||a.g(xc)}break;case "i":if("if"==f[0]){var yc;var hb=b.substr(2),hb=qa(hb);ad(a,hb)?(d||a.g("true: "+hb),yc=!0):(d||a.g("false: "+
|
|
|
|
|
hb),yc=!1);yc||(c=!1)}break;case "k":var Ee=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var zc=0,Nd=X(),ib=X(a.f.b[6]);for(a.g("stack trace for "+W(a,ib.D));10>zc;){for(var ua=null,Fe=256;65536>ib.D>>>0;){Nd.D=a.pa(ib,2);if(null==ib.D||!Fe--)break;for(var Ge=a,Ob=Nd,Od=null,jb=Ob.D,Pd=jb,Ac=1;6>=Ac&&jb;Ac++){if(2<Ac){Ob.D=jb;var Pb=Xd(Ge,Ob);if(0<=Pb.indexOf("JSR")){var Qd=Pb.indexOf(" ");if(jb+(Pb.indexOf(" ",Qd+1)-Qd-
|
|
|
|
|
1)/2==Pd){Od=Pb;break}}}jb--}Ob.D=Pd;if(ua=Od)break}if(!ua||null==ua)break;var Rd=null;if("ks"==Ee){var Sd=ua.match(/[0-9A-F]+$/);Sd&&(Rd=de(a,Sd[0]))}ua=pa(ua,50)+" ;"+(Rd||"stack="+W(a,ib.D));a.g(ua);zc++}zc||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){de(a,f[1],!0);break}break;case "m":a:{var ea,fa=null,D=f[1];"?"==D&&(D=void 0);if(void 0!==D){var ma=0;if("all"==D)ma=1878917119,D=null;else if("on"==D)fa=!0,D=null;else if("off"==D)fa=!1,D=null;else{"keys"==D&&(D="key");"kbd"==
|
|
|
|
|
D&&(D="keyboard");for(ea in F)if(D==ea){ma=F[ea];fa=!!(a.aa&ma);break}if(!ma){a.g("unknown message category: "+D);break a}}if(ma)if("on"==f[2])a.aa|=ma,fa=!0;else if("off"==f[2]&&(a.aa&=~ma,fa=!1,1073741824==ma)){for(var Bc=0;Bc<a.ka.length;Bc++)a.g(a.ka[Bc]);a.ka=[]}}var He=0,na="";for(ea in F)if(!D||D==ea){var Ie=!!(a.aa&F[ea]);if(null===fa||fa==Ie)na&&(na+=","),++He%10||(na+="\n\t"),"key"==ea&&(ea="keys"),na+=ea}void 0===D&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");
|
|
|
|
|
a.g((null!==fa?fa?"messages on: ":"messages off: ":"message categories:\n\t")+(na||"none"));hd(a)}break;case "p":if("print"==f[0]){ee(a,b.substr(5));break}var Je="pr"==f[0]?1:0;if(a.W)a.g("step in progress");else{var Td=X(a.f.b[7]);a.Sa(Td);a.W?(a.wa(a.B,Td,!0),a.Ba()||(a.j&&a.j.Xa(),a.W=0)):fe(a,Je?"tr":"t")}break;case "r":if("reset"==b){a.j&&a.j.reset();break}sd(a,f);break;case "s":a:switch(f[1]){case "base":if(f[2]){var kb=+f[2];if(8==kb||10==kb||16==kb)a.fa=kb;else{a.g("invalid base: "+kb);break}}a.g("default base: "+
|
|
|
|
|
a.fa);break;case "cs":var lb;void 0!==f[3]&&(lb=+f[3]);switch(f[2]){case "int":a.f.Ia=lb;break;case "start":a.f.Ua=lb;break;case "stop":a.f.Ja=lb;break;default:a.g("unknown cs option");break a}void 0!==lb&&nc(a.f);a.g("checksums "+(a.f.A.Ha?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(Ec(a.f,+f[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.f.ya.toFixed(2)+"Mhz")+" ("+a.f.za+"x)");break;case "?":a.g("debugger options:");a.g("\tbase #\t\tset default base to #");
|
|
|
|
|
a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:f[1]&&a.g("unknown option: "+f[1])}break;case "t":fe(a,f[0],f[1]);break;case "u":td(a,f[1],f[2],8);break;case "v":if("var"==f[0]){ce(a,b.substr(3))||(c=!1);break}a.g("PDP11js version 1.30.0 ("+a.f.Cb+",RELEASE"+(tb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(window?window.navigator.userAgent:
|
|
|
|
|
"");break;case "?":if(f[1]){ee(a,b.substr(1));break}var mb="commands:",Cc;for(Cc in jd)mb+="\n"+pa(Cc,9)+jd[Cc];Qc(a)||(mb+="\nnote: history disabled if no exec breakpoints");a.g(mb);break;default:a.g("unknown command: "+b),c=!1}}}catch(Ud){a.g("debugger error: "+(Ud.stack||Ud.message)),c=!1}return c}function oc(a,b,d){b=Zc(a,b,d);for(var c in b)if(!Wd(a,b[c]))return!1;return!0}Qa(function(){for(var a=C(document,"pdp11","debugger"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new fd(c);nb(c,d)}});
|
|
|
|
|
function he(a,b,d){u.call(this,"Computer",a,he,67108864);this.A.$=!1;ie(this,b);this.R=lc(this,"autoPower",a);this.G=0;this.X=a.busWidth||a.buswidth;this.j=je;this.O=null;this.L=this.V=!1;this.Y=lc(this,"url")||"";(Math.random()+.1).toString(36);this.B=ke(this);if(this.f=cb("CPU",this.id)){this.I=cb("Debugger",this.id);this.F=new wb({id:this.ub+".bus",busWidth:this.X},this.f,this.I);var c,e=bb(this.id);if((this.H=cb("Panel",this.id))&&this.H.xa)for(b=0;b<e.length;b++)c=e[b],c.ea=this.H.ea,c.g=this.H.g,
|
|
|
|
|
c.xa=this.H.xa;this.g("PDP11js v1.30.0\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");this.g("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<e.length;b++)c=e[b],c.va&&c.va(this,this.F,this.f,this.I);b=null;c=a.resume;void 0!==c&&(1<c.length?b=this.M=c:this.j=parseInt(c,10));var f;if(a=lc(this,"state")||(f=!0,a.state))b=this.T=a,f||(this.L=!0,this.j=je),this.j&&(this.P=
|
|
|
|
|
new I(this,"1.30.0"),le(this.P)?b=null:delete this.P);!b&&this.j&&(b=me(this))&&(this.L=!0);if(b){var h=this;xa(b,null,!0,function(a,b,c){c?(h.M=null,h.L=!1,h.ea("Unable to load machine state from server (error "+c+(b?": "+qa(b):"")+")")):(h.O=b,h.V=!0);E(h)})}else E(this);this.K.power||(this.R=!0);!d&&this.R&&ne(this,this.Va)}else t("Unable to find CPU component")}y(he);var je=0;
|
|
|
|
|
function ie(a,b){if(!b){var d;if("object"==typeof resources&&(d=resources.parms))try{b=eval("("+d+")")}catch(c){t(c.message+" ("+d+")")}}a.W=b}function lc(a,b,d){var c=b.toLowerCase(),c=Va[b]||Va[c];void 0===c&&a.W&&(c=a.W[b]);void 0===c&&d&&(c=d[b]);void 0===c&&"object"==typeof resources&&resources[b]&&(c=b);return c}function ne(a,b,d){for(var c=bb(a.id),e=0;e<=c.length;e++){var f=e<c.length?c[e]:a;if(!rb(f)){rb(f,function(){ne(a,b,d)});return}}b.call(a,d)}
|
|
|
|
|
function oe(a,b){var d=new I(a,"1.30.0","validate");if(le(d)&&pe(d)){var c=qe(d,"timestamp"),e=b?qe(b,"timestamp"):"unknown";c!=e&&(a.ea("Machine state may be out-of-date\n("+c+" vs. "+e+")\nCheck your browser's local storage limits"),b||d.clear())}}m=he.prototype;
|
|
|
|
|
m.Va=function(a){void 0===a&&(a=this.j||(this.O?1:je));if(!this.G){this.G++;var b=!1,d=!1;this.U=!1;var c=this.P||new I(this,"1.30.0");if(-1==a)b=!0;else if(a>je){if(le(c,this.O)){this.J=new I(this,"1.30.0","failsafe");le(this.J)&&(re(this,c),a=2,se(this.J));J(this.J,"timestamp",wa());te(this.J);var e=this.j&&!this.L;if(1==a||ya("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(d=pe(c)){var f=qe(c,"code"),h=qe(c,"data");f&&("ok"==f?le(c,h):("error"==f&&
|
|
|
|
|
"no machine state"!=h?(this.ea("Error: "+h),"unable to verify user"==h&&(Ca("user",""),this.B=null)):this.g(f+": "+h),se(c),le(c)?(d=pe(c),e=!0):d=!1))}e&&oe(this,d?c:null)}else 2==a&&c.clear()}else oe(this);delete this.O;delete this.P}e=bb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.f&&(d=ue(this,h,c,b,d));b=[c,a,d];-1!=a?ne(this,this.sb,b):this.sb(b)}};
|
|
|
|
|
function ue(a,b,d,c,e){if(!b.A.$){b.A.$=!0;if(b.ta){var f=null;e&&((f=qe(d,b.id))||(f=qe(d,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ta(f,c)&&f&&(t("Unable to restore state for "+b.type),a.T&&!a.V?(d.clear(),a.j=je,window&&window.location.reload()):a.U=!0,b.ta(null),e=!1)}if(!c&&b.tb)for(a=b.tb.split("|"),d=0;d<a.length;d++)b.status(a[d])}return e}
|
|
|
|
|
m.sb=function(a){var b=a[0],d=0>a[1];a=a[2];this.Z=!0;this.A.$=!0;var c=this.K.power;c&&(c.textContent="Shutdown");this.f&&(ue(this,this.f,b,d,a),this.f.Pa());this.U&&(re(this,b),b.clear());!d&&this.J&&(this.J.clear(),delete this.J);this.G=0};
|
|
|
|
|
function re(a,b){if(ya("There may be a problem with your PDP11js machine.\n\nTo help us diagnose it, click OK to send this PDP11js machine state to http://www.pcjs.org.")){var d=a.B||"",c=b.toString(),e={app:"PDP11js",ver:"1.30.0"};e.url=a.Y;e.user=d;e.type="bug";e.data=c;xa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
|
|
|
|
function ge(a,b,d){var c,e="none";if(a.G)return null;a.G--;var f=new I(a,"1.30.0"),h=new I(a,"1.30.0","validate"),g=wa();J(h,"timestamp",g);J(f,"timestamp",g);J(f,"version","1.30.0");J(f,"url",window?window.location.href:null);J(f,"browser",window?window.navigator.userAgent:"");a.f&&a.f.sa&&(d&&a.f.ca(),c=a.f.sa(b,d),"object"===typeof c&&J(f,a.f.id,c),d&&(a.f.A.$=!1,!1===c&&(e=null)));for(var g=bb(a.id),k=0;k<g.length;k++){var l=g[k];l.A.$&&(l.sa&&(c=l.sa(b,d),"object"===typeof c&&J(f,l.id,c)),d&&
|
|
|
|
|
(l.A.$=!1,!1===c&&(e=null)))}e&&(d?(g=c=!1,b?(a.B&&ve(a,a.B,f.toString()),te(h)&&te(f)||(e=null,c=g=!0)):a.j&&(c=!0,g=3==a.j),c&&f.clear(g)):e=f.toString());d&&(a.A.$=!1,b=a.K.power)&&(b.textContent="Power");a.G=0;return e}m.reset=function(){this.F&&this.F.reset&&(this.I&&ob(this,0)&&this.I.message("Resetting "+this.F.type,void 0),this.F.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var d=a[b];d!==this&&d!==this.F&&d.reset&&(this.I&&ob(this,0)&&this.I.message("Resetting "+d.type,void 0),d.reset())}};
|
|
|
|
|
m.start=function(a,b){for(var d=bb(this.id),c=0;c<d.length;c++){var e=d[c];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var d=bb(this.id),c=0;c<d.length;c++){var e=d[c];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
|
|
|
|
m.ha=function(a,b,d){var c=this;switch(b){case "power":return this.K[b]=d,d.onclick=function(){c.G||(c.A.$?be(c,!1,!0):ie(c,c.Va))},!0;case "reset":return this.K[b]=d,d.onclick=function(){if(c.A.$&&!c.G)if(c.u&&!c.N){var a=ya("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");be(c,a,!0);!a&&c.T?window&&window.location.reload():c.Va(ee)}else c.reset(),c.f&&c.f.Pa()},!0;case "save":if(la()){d.parentNode.removeChild(d);break}this.K[b]=
|
|
|
|
|
d;d.onclick=function(){var a=fe(c,!0);if(a){var b=!!(c.u&&!c.N||c.T),d=be(c,b);b?qe(c,a,d):c.ea("Resume disabled, machine state not saved")}};return!0}return!1};
|
|
|
|
|
function fe(a,b){var d=a.B;d||(d=Ba("user"),void 0!==d?!d&&b&&(d=null,window&&(d=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.","")),d&&((d=re(a,d))||a.ea("The user ID is invalid."))):b&&a.ea("Browser local storage is not available"));return d}
|
|
|
|
|
function re(a,b){a.B=null;var d=xa(ma()+"/api/v1/user?req=verify&user="+b),c=d[1];if(!d[0]&&c)try{d=eval("("+c+")"),d.code&&"ok"==d.code&&(Ha("user",d.data),a.B=d.data)}catch(e){t(e.message+" ("+c+")")}return a.B}function he(a){var b=null;a.B&&(b=ma()+"/api/v1/user?req=load&user="+a.B+"&state="+se(a,"1.30.0"));return b}
|
|
|
|
|
function qe(a,b,d){if(d){var c={req:"store"};c.user=b;c.state=se(a,"1.30.0");c.data=d;b=xa(ma()+"/api/v1/user",c);c=b[0];if(b[1]){if(c){var e=c.indexOf("\n");0<e&&(c=c.substr(0,e));c.indexOf("Error: ")||(c=c.substr(7))}c='{"code":'+b[1]+',"data":"'+c+'"}'}b=JSON.parse(c);b&&"ok"==b.code?a.ea("Machine state saved to server"):d&&(d=b&&b.data||"unable to save machine state",d="error"==b.code?"Error: "+d:"Error "+b.code+": "+d,a.ea(d),Ha("user",""),a.B=null)}}m.Xa=function(){};
|
|
|
|
|
m.ja=function(a){this.f&&this.f.ja(a);this.H&&this.H.ja(a)};Qa(function(){for(var a=C(document,"pdp11-machine"),b=0;b<a.length;b++)for(var d=a[b],c=B(d),d=C(d,"pdp11","computer"),e=0;e<d.length;e++){var f=d[e],h=B(f),h=new ce(h,c,!0);nb(h,f);h.R&&ie(h,h.Va)}});La.show.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var d=B(a[b]);(d=mb("Computer",d.id))&&d.Z&&!d.A.$&&d.Va(-1)}});
|
|
|
|
|
La.exit.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var d=B(a[b]);(d=mb("Computer",d.id))&&d.A.$&&be(d,!(!d.u||d.N),!0)}});function I(a,b,d){this.id=a.id;this.key=se(a,b,d);this.I=a.I;ne(this,a.Jb)}function se(a,b,d){a=a.id;if(b){var c=b.indexOf(".");0<c&&(a+=".v"+b.substr(0,c))}d&&(a+="."+d);return a}
|
|
|
|
|
I.prototype={constructor:I,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){ne(this);var b=[];try{for(var d=0,c=window.localStorage.length;d<c;d++)b.push(window.localStorage.key(d))}catch(e){}for(d=0;d<b.length;d++)if((c=b[d])&&(a||c.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(c)}catch(e){}b.splice(d,1);d=0}}};
|
|
|
|
|
function ne(a,b){a[a.id]={};b&&J(a,"parms",b);a.f=!1}function oe(a){var b=!0;if(Aa()){var d=JSON.stringify(a[a.id]);Ha(a.key,d)||(t("Unable to store "+d.length+" bytes in browser local storage"),b=!1)}return b}function ke(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(d){t(d.message||d),b=!1}return b}function ge(a,b){return b?(a[a.id]=b,a.f=!0):a.f?!0:Aa()&&(b=Ba(a.key))?(a[a.id]=b,a.f=!0):!1}function le(a,b){return a[a.id][b]||null}function J(a,b,d){try{a[a.id][b]=d}catch(c){}}var te=0;
|
|
|
|
|
function Fe(a,b,d,c,e,f){e("Loading "+a+"...");xa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Ge(g,a,b,d,c,e,f)})}
|
|
|
|
|
function Ge(a,b,d,c,e,f,h){function g(a,f){if(f)h(f,null);else{if(d){ab(d,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);c?"}"==c.slice(-1)?(c=c.slice(0,-1),1<c.length&&(c+=",")):c='{state:"'+c+'",':c="{";c+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+d+"$2"+(c?" parms='"+c+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDP11js$2"),
|
|
|
|
|
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pdp11$2"));g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){g=null,a=p.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?He(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
|
|
|
|
function He(a,b,d){var c;if(c=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=c[2];b("Loading "+e+"...");xa(e,null,!0,function(f,h,g){if(g||!h)d(a,"unable to resolve XML reference: "+c[0]+" ("+g+")");else{if(f=c[3])if(g=h.match(new RegExp("<"+c[1]+"[^>]*>"))){for(var k=g[0],l,n=/( [a-z]+=)(['"])(.*?)\2/g;l=n.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{d(a,"missing <"+c[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
|
|
|
|
"");a=a.replace(c[0],h);He(a,b,d)}})}else d(a,null)}
|
|
|
|
|
function Ie(a,b,d,c){function e(a){if(void 0===g){var b=h&&C(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=oa(a))}function f(a){e("Error: "+a);k&&(--te||Sa(!0));k=!1}var h,g,k=!0;te++;$a[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],p=document.createElement("style");p.type="text/css";p.styleSheet?p.styleSheet.cssText=l:p.appendChild(document.createTextNode(l));n.appendChild(p)}d||
|
|
|
|
|
(d="/versions/pdp11/1.30.0/components.xsl");l=function(c,g){g?Fe(d,null,null,!1,e,function(c,k){if(k)if(ab(a,d,c),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--te||Sa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--te||Sa(!0)):f("invalid machine element: "+
|
|
|
|
|
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(c)}):f(c)};"<"!=b.charAt(0)?Fe(b,a,c,!0,e,l):Ge(b,null,a,c,!1,e,l)}else f("missing machine element: "+a)}catch(q){f(q.message)}return k}window.embedPDP11=function(a,b,d,c){Sa(!1);return Ie(a,b,d,c)};window.enableEvents=Sa;window.sendEvent=Ta;})();
|
|
|
|
|
m.ha=function(a,b,d){var c=this;switch(b){case "power":return this.K[b]=d,d.onclick=function(){c.G||(c.A.$?ge(c,!1,!0):ne(c,c.Va))},!0;case "reset":return this.K[b]=d,d.onclick=function(){if(c.A.$&&!c.G)if(c.j&&!c.M){var a=ya("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");ge(c,a,!0);!a&&c.T?window&&window.location.reload():c.Va(je)}else c.reset(),c.f&&c.f.Pa()},!0;case "save":if(ja()){d.parentNode.removeChild(d);break}this.K[b]=
|
|
|
|
|
d;d.onclick=function(){var a=ke(c,!0);if(a){var b=!!(c.j&&!c.M||c.T),d=ge(c,b);b?ve(c,a,d):c.ea("Resume disabled, machine state not saved")}};return!0}return!1};
|
|
|
|
|
function ke(a,b){var d=a.B;d||(d=Ba("user"),void 0!==d?!d&&b&&(d=null,window&&(d=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.","")),d&&((d=we(a,d))||a.ea("The user ID is invalid."))):b&&a.ea("Browser local storage is not available"));return d}
|
|
|
|
|
function we(a,b){a.B=null;var d=xa(ka()+"/api/v1/user?req=verify&user="+b),c=d[1];if(!d[0]&&c)try{d=eval("("+c+")"),d.code&&"ok"==d.code&&(Ca("user",d.data),a.B=d.data)}catch(e){t(e.message+" ("+c+")")}return a.B}function me(a){var b=null;a.B&&(b=ka()+"/api/v1/user?req=load&user="+a.B+"&state="+xe(a,"1.30.0"));return b}
|
|
|
|
|
function ve(a,b,d){if(d){var c={req:"store"};c.user=b;c.state=xe(a,"1.30.0");c.data=d;b=xa(ka()+"/api/v1/user",c);c=b[0];if(b[1]){if(c){var e=c.indexOf("\n");0<e&&(c=c.substr(0,e));c.indexOf("Error: ")||(c=c.substr(7))}c='{"code":'+b[1]+',"data":"'+c+'"}'}b=JSON.parse(c);b&&"ok"==b.code?a.ea("Machine state saved to server"):d&&(d=b&&b.data||"unable to save machine state",d="error"==b.code?"Error: "+d:"Error "+b.code+": "+d,a.ea(d),Ca("user",""),a.B=null)}}m.Xa=function(){};
|
|
|
|
|
m.ja=function(a){this.f&&this.f.ja(a);this.H&&this.H.ja(a)};Qa(function(){for(var a=C(document,"pdp11-machine"),b=0;b<a.length;b++)for(var d=a[b],c=B(d),d=C(d,"pdp11","computer"),e=0;e<d.length;e++){var f=d[e],h=B(f),h=new he(h,c,!0);nb(h,f);h.R&&ne(h,h.Va)}});La.show.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var d=B(a[b]);(d=cb("Computer",d.id))&&d.Z&&!d.A.$&&d.Va(-1)}});
|
|
|
|
|
La.exit.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var d=B(a[b]);(d=cb("Computer",d.id))&&d.A.$&&ge(d,!(!d.j||d.M),!0)}});function I(a,b,d){this.id=a.id;this.key=xe(a,b,d);this.I=a.I;se(this,a.Mb)}function xe(a,b,d){a=a.id;if(b){var c=b.indexOf(".");0<c&&(a+=".v"+b.substr(0,c))}d&&(a+="."+d);return a}
|
|
|
|
|
I.prototype={constructor:I,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){se(this);var b=[];try{for(var d=0,c=window.localStorage.length;d<c;d++)b.push(window.localStorage.key(d))}catch(e){}for(d=0;d<b.length;d++)if((c=b[d])&&(a||c.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(c)}catch(e){}b.splice(d,1);d=0}}};
|
|
|
|
|
function se(a,b){a[a.id]={};b&&J(a,"parms",b);a.f=!1}function te(a){var b=!0;if(Aa()){var d=JSON.stringify(a[a.id]);Ca(a.key,d)||(t("Unable to store "+d.length+" bytes in browser local storage"),b=!1)}return b}function pe(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(d){t(d.message||d),b=!1}return b}function le(a,b){return b?(a[a.id]=b,a.f=!0):a.f?!0:Aa()&&(b=Ba(a.key))?(a[a.id]=b,a.f=!0):!1}function qe(a,b){return a[a.id][b]||null}function J(a,b,d){try{a[a.id][b]=d}catch(c){}}var ye=0;
|
|
|
|
|
function Ke(a,b,d,c,e,f){e("Loading "+a+"...");xa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Le(g,a,b,d,c,e,f)})}
|
|
|
|
|
function Le(a,b,d,c,e,f,h){function g(a,f){if(f)h(f,null);else{if(d){ab(d,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);c?"}"==c.slice(-1)?(c=c.slice(0,-1),1<c.length&&(c+=",")):c='{state:"'+c+'",':c="{";c+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+d+"$2"+(c?" parms='"+c+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDP11js$2"),
|
|
|
|
|
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pdp11$2"));g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){g=null,a=p.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Me(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
|
|
|
|
function Me(a,b,d){var c;if(c=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=c[2];b("Loading "+e+"...");xa(e,null,!0,function(f,h,g){if(g||!h)d(a,"unable to resolve XML reference: "+c[0]+" ("+g+")");else{if(f=c[3])if(g=h.match(new RegExp("<"+c[1]+"[^>]*>"))){for(var k=g[0],l,n=/( [a-z]+=)(['"])(.*?)\2/g;l=n.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{d(a,"missing <"+c[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
|
|
|
|
"");a=a.replace(c[0],h);Me(a,b,d)}})}else d(a,null)}
|
|
|
|
|
function Ne(a,b,d,c){function e(a){if(void 0===g){var b=h&&C(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=oa(a))}function f(a){e("Error: "+a);k&&(--ye||Sa(!0));k=!1}var h,g,k=!0;ye++;$a[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],p=document.createElement("style");p.type="text/css";p.styleSheet?p.styleSheet.cssText=l:p.appendChild(document.createTextNode(l));n.appendChild(p)}d||
|
|
|
|
|
(d="/versions/pdp11/1.30.0/components.xsl");l=function(c,g){g?Ke(d,null,null,!1,e,function(c,k){if(k)if(ab(a,d,c),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--ye||Sa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--ye||Sa(!0)):f("invalid machine element: "+
|
|
|
|
|
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(c)}):f(c)};"<"!=b.charAt(0)?Ke(b,a,c,!0,e,l):Le(b,null,a,c,!1,e,l)}else f("missing machine element: "+a)}catch(q){f(q.message)}return k}window.embedPDP11=function(a,b,d,c){Sa(!1);return Ne(a,b,d,c)};window.enableEvents=Sa;window.sendEvent=Ta;})();
|
|
|
|
|
|