Final tweaks to initial sticky machine demo

This commit is contained in:
Jeff Parsons 2017-01-03 17:28:35 -08:00 • committed by Jeff Parsons
commit 43bec5fd03
7 changed files with 99 additions and 43 deletions

View file

@ -57,12 +57,12 @@ function bb(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof
f,e))});if(b&&"object"==typeof b){var l="",m;for(m in b)b.hasOwnProperty(m)&&(l&&(l+="&"),l+=m+"="+encodeURIComponent(b[m]));l=l.replace(/%20/g,"+");k.open("POST",a,c);k.setRequestHeader("Content-type","application/x-www-form-urlencoded");k.send(l)}else k.open("GET",a,c),"bytes"==b&&k.overrideMimeType("text/plain; charset=x-user-defined"),k.send();c||(f=k.responseText,200!=k.status&&(e=k.status||-1),d&&d(a,f,e),g=[f,e]);return g}
function cb(a,b){var c,d={ca:null,ea:null,wa:null,va:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.wa=g.load;d.va=g.exec;if(e=g.bytes)d.ca=e;else if(e=g.words)for(d.ca=Array(2*e.length),f=c=0;c<e.length;c++)d.ca[f++]=e[c]&255,d.ca[f++]=e[c]>>8&255;else if(e=g.data)for(d.ca=Array(4*e.length),f=c=0;c<e.length;c++)d.ca[f++]=
e[c]&255,d.ca[f++]=e[c]>>8&255,d.ca[f++]=e[c]>>16&255,d.ca[f++]=e[c]>>24&255;else d.ca=g;d.ea=g.symbols;d.ca.length?1==d.ca.length&&(v(d.ca[0]),d=null):(v("Empty resource: "+a),d=null)}catch(k){v("Resource data error ("+a+"): "+k.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){v("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.ca=e)}return d}
function db(){return"http://"+(window?window.location.host:"www.pcjs.org")}function eb(){if(null==gb){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}gb=a}return gb}function mb(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function db(){return"http://"+(window?window.location.host:"www.pcjs.org")}function eb(){if(null==fb){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}fb=a}return fb}function hb(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function nb(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function ob(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)}return!1}
function pb(a){if(!qb){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}qb=c}return qb[a]}
function rb(a,b){var c=null;a="data:application/octet-stream;base64,"+a;b&&(c=document.createElement("a"),"string"!=typeof c.download&&(c=null));c?(c.href=a,c.download=b,document.body.appendChild(c),c.click(),document.body.removeChild(c),b="Check your Downloads folder for "+b+"."):(window.open(a),b="Check your browser for a new window/tab containing the requested data"+(b?" ("+b+")":"")+".");return b}function sb(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
function tb(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}function ub(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function vb(a){wb.init.push(a)}
function xb(a){if(yb)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){v(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function zb(a){!yb&&a?(yb=!0,Ab&&Bb("init"),Cb&&Bb("show")):yb=a}function Bb(a){wb[a]&&xb(wb[a])}var qb=null,wb={init:[],show:[],exit:[]},Ab=!1,Cb=!1,yb=!0,gb=null;ub("onload",function(){Ab=!0;xb(wb.init)});ub("onpageshow",function(){Cb=!0;xb(wb.show)});ub(ob("Opera")||ob("iOS")?"onunload":"onbeforeunload",function(){xb(wb.exit)});
function xb(a){if(yb)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){v(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function zb(a){!yb&&a?(yb=!0,Ab&&Bb("init"),Cb&&Bb("show")):yb=a}function Bb(a){wb[a]&&xb(wb[a])}var qb=null,wb={init:[],show:[],exit:[]},Ab=!1,Cb=!1,yb=!0,fb=null;ub("onload",function(){Ab=!0;xb(wb.init)});ub("onpageshow",function(){Cb=!0;xb(wb.show)});ub(ob("Opera")||ob("iOS")?"onunload":"onbeforeunload",function(){xb(wb.exit)});
var Db="undefined"!==typeof ArrayBuffer,x="pdp11",Eb="PDPjs",Fb=!1,Gb=Db,Nb=!0,Ob=!0,Pb="UNKNOWN PANIC ABORT ILLEGAL RED YELLOW FAULT TRACE HALT OPCODE INTERRUPT".split(" "),Qb={48:"DL11R",52:"DL11X",56:"PC11R",60:"PC11X",64:"KW11",112:"RL11",144:"RK11"},x="pdp11",Eb="PDPjs",Fb=!1,Gb=Db,Ob=Nb=!0,Rb={cpu:1,trap:2,fault:4,"int":8,bus:16,memory:32,mmu:64,rom:128,device:256,panel:512,keyboard:1024,key:2048,pc11:4096,paper:4096,disk:8192,read:16384,write:32768,rk11:65536,rl11:131072,dl11:262144,serial:262144,
kw11:524288,timer:524288,speaker:16777216,computer:33554432,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};
function Sb(a,b){q.call(this,"Panel",a,0,512);this.j=this.v=0;this.I=b;this.ua=this.i=this.Ya=this.vb=0;this.B=this.G=this.w=!1;this.H=Tb;this.g={};this.b={START:[1,1,!0,!1,this.Xd],STEP:[1,1,!1,!1,this.Yd],ENABLE:[1,1,!1,!1,this.Td],CONT:[1,1,!0,!1,this.Rd],DEP:[0,0,!0,!1,this.Sd],EXAM:[1,1,!0,!1,this.Ud],LOAD:[1,1,!0,!1,this.Wd],TEST:[0,0,!0,!1,this.Vd]};for(a=0;22>a;a++)this.b["S"+a]=[0,0,!1,!1,this.Zd,a];this.F=this.f=this.D=this.J=null;A(this)}p(Sb,q);h=Sb.prototype;h.reset=function(){this.stop()};
@ -215,7 +215,7 @@ function Vh(a,b,c,d,e,f,g){a.L=b;a.j=c;a.i=d;a.ca=e;a.wa=f;a.va=g;d==Gh?a.I&&wh(
h.Cf=function(a){a&1&&(this.b&32768?(a&=-2,this.b&64&&hd(this.f,this.H)):(this.b&=-129,this.b|=2048,this.G=0,id(this.f,this.R,1E3/Math.round(this.S/10))));this.b=this.b&-66|a&65};h.re=function(){this.b&=-129;this.b|=2048;return this.G};h.Bf=function(){};var Eh="",Oh="?",Ph="??",Fh=0,Hh=1,Gh=2,Jh="readProgress",Wh="pcjs-progress-bar",Xh={},Mh=(Xh[65384]=[null,null,Ed.prototype.se,Ed.prototype.Cf,"PRS"],Xh[65386]=[null,null,Ed.prototype.re,Ed.prototype.Bf,"PRB"],Xh);
function Yh(a,b,c){q.call(this,"Disk",{id:a.lb+".disk"+H(++Zh,4)},0,8192);this.controller=a;this.J=a.J;this.F=a.F;this.v=b;this.Na=b.name;this.Aa=this.gc="";this.cc=b.cc;this.X=this.da=this.aa=this.oa=this.mode=0;this.b=[];this.i=null;this.j=!1;$h(this,c,b.X,b.da,b.aa,b.oa);this.g=this.w=null;A(this)}p(Yh,q);h=Yh.prototype;h.ta=function(a,b,c,d){this.F=d};
function $h(a,b,c,d,e,f){a.mode=b;a.X=c;a.da=d;a.aa=e;a.oa=f;a.b=[];if("preload"!=a.mode){b=Array(a.X);for(c=0;c<b.length;c++){d=Array(a.da);for(e=0;e<d.length;e++){f=Array(a.aa);for(var g=1;g<=f.length;g++)f[g-1]=ai(null,c,e,g,a.oa,0);d[e]=f}b[c]=d}a.b=b}a.i=null}
function bi(a,b,c,d,e){var f=c;if(a.g)return!0;a.Na=b;a.Aa=c;a.gc=Pa(c);a.g=e;a.w=a.controller;if(d){var g=new FileReader;g.onload=function(){var b=g.result,c,d=b?b.byteLength:0,e=ra[d];if(e){a.X=e[0];a.da=e[1];a.aa=e[2];a.oa=e[3]||512;c=a.oa>>2;var f=e=0,b=new DataView(b,0,d);a.b=Array(a.X);for(d=0;d<a.b.length;d++)for(var u=a.b[d]=Array(a.da),t=0;t<u.length;t++)for(var E=u[t]=Array(a.aa),z=0;z<E.length;z++){for(var D=ai(null,d,t,z+1,a.oa,0),F=D.data,fb=0;fb<c;fb++,f+=4)var W=F[fb]=b.getInt32(f,
function bi(a,b,c,d,e){var f=c;if(a.g)return!0;a.Na=b;a.Aa=c;a.gc=Pa(c);a.g=e;a.w=a.controller;if(d){var g=new FileReader;g.onload=function(){var b=g.result,c,d=b?b.byteLength:0,e=ra[d];if(e){a.X=e[0];a.da=e[1];a.aa=e[2];a.oa=e[3]||512;c=a.oa>>2;var f=e=0,b=new DataView(b,0,d);a.b=Array(a.X);for(d=0;d<a.b.length;d++)for(var u=a.b[d]=Array(a.da),t=0;t<u.length;t++)for(var E=u[t]=Array(a.aa),z=0;z<E.length;z++){for(var D=ai(null,d,t,z+1,a.oa,0),F=D.data,gb=0;gb<c;gb++,f+=4)var W=F[gb]=b.getInt32(f,
!0),e=e+W&-1;D.Ja=c;E[z]=D}a.i=e;c=a}else a.O("Unrecognized disk format ("+d+" bytes)");a.g&&(a.g.call(a.controller,a.v,c,a.Na,a.Aa),a.g=null)};g.readAsArrayBuffer(d);return!0}0>c.indexOf("/api/v1/dump")&&(b=Qa(c),"json"==b||"gz"==b?f=encodeURI(c):(d="path",e="&mbhd=10",!c.indexOf("http:")||!c.indexOf("ftp:")||0<="dsk ima img 360 720 12 144".split(" ").indexOf(b)?(d="disk",e="&mbhd=0"):Ra(c,"/")&&(d="dir"),f=db()+"/api/v1/dump?"+d+"="+encodeURIComponent(c)+(a.cc?"":e)+"&format=json"));return!!bb(f,
null,!0,function(b,c,d){ci(a,b,c,d)})}
function ci(a,b,c,d){var e=null,f=0>d&&!!a.J&&!a.J.A.fa;a.j=!1;if(d)a.controller.O('Unable to load disk "'+a.Na+'" (error '+d+": "+b+")",f);else{ua(a.controller.lb,b,c);try{if(0<Pa(a.gc,!0).toLowerCase().indexOf("-readonly"))a.j=!0;else{var g=c.indexOf("\n");0<g&&1024>g&&0<c.substring(0,g).indexOf("write-protected")&&(a.j=!0)}var k;"<"==c.substr(0,1)?k=["Missing disk image: "+a.Na]:k=0>c.indexOf("0x")&&'["'!=c.substr(0,2)?JSON.parse(c.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+
@ -317,17 +317,17 @@ function qk(a,b,c){if("?"==c)a.u("trace commands:"),a.u("\tt [#]\ttrace # instr
function Qj(a,b,c,d){if(b=vj(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=hj(a,c.substr(1)),null!=c&&(d=c);else{d=vj(a,c,!0);if(!d||d.K<b.K)return;e=d.K-b.K;if(256<e){a.u("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=Ka(a,!1)||a.I?a.w:null;var g=null!=f?"cycles":null,k=lk(a,b),l=b.K;if(k[0]&&d&&(!c&&d||0>k[0].indexOf("+"))){var m=k[0]+":";k[2]&&(m+=" "+k[2]);a.u(m)}k[3]&&(g=k[3],f=null);f=Xj(a,b,g,f);a.u(f);a.H=b;e-=b.K-l;c++}}}
function Wj(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(">> "+b):(a.P&&(a.u("ended assemble at "+yj(a,a.N)),a.H=a.N,a.P=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.S=null;if(Ja(a)&&0<b.length){a.P&&(b="a "+yj(a,a.N)+" "+b);var f=!1,g=b.replace(/ +/g," ").split(" ");g[0]=g[0].toLowerCase();if(g&&g.length)for(var k=g[0],l=k.charAt(0),m=1;m<k.length;m++){var n=k.charAt(m);if("?"==l||"r"==l||"a">n||"z"<n){g[0]=k.substr(m);g.unshift(k.substr(0,m));break}}switch(g[0].charAt(0)){case "a":var r=
vj(a,g[1],!0);if(r)if(a.N=r,void 0===g[2])a.u("begin assemble at "+yj(a,r)),a.P=!0,J(a.J);else{var u;a.u("not supported yet");u=[];if(u.length){for(var t=0;t<u.length;t++)a.Nc(r,u[t],1);a.u(Xj(a,a.N))}}break;case "b":a:{var E=g[0],z=g[1],D=b;if("?"==z)a.u("breakpoint commands:"),a.u("\tbp [#]\tset exec breakpoint at addr #"),a.u("\tbr [#]\tset read breakpoint at addr #"),a.u("\tbw [#]\tset write breakpoint at addr #"),a.u("\tbc [#]\tclear breakpoint at addr #"),a.u("\tbl\tlist all breakpoints"),a.u("\tbn [#]\tbreak after # instruction(s)");
else{var F=E.charAt(1);if("l"==F){var fb;fb=0+Vj(a,a.g);fb+=Vj(a,a.L);(fb+=Vj(a,a.G))||a.u("no breakpoints")}else if("n"==F)a.ba=hj(a,z),a.u("break after "+a.ba+" instruction(s)");else if(void 0===z)a.u("missing breakpoint address");else{var W=V();if("*"!=z&&(W=vj(a,z,!0),!W))break a;"c"==F?null==W.K?(mj(a),a.u("all breakpoints cleared")):Tj(a,a.g,W)||Tj(a,a.L,W)||Tj(a,a.G,W)||a.u("breakpoint missing: "+yj(a,W)):null!=W.K&&(xj(a,W,D),"p"==F?a.pb(a.g,W):"r"==F?a.pb(a.L,W):"w"==F?a.pb(a.G,W):a.u("unknown breakpoint command: "+
else{var F=E.charAt(1);if("l"==F){var gb;gb=0+Vj(a,a.g);gb+=Vj(a,a.L);(gb+=Vj(a,a.G))||a.u("no breakpoints")}else if("n"==F)a.ba=hj(a,z),a.u("break after "+a.ba+" instruction(s)");else if(void 0===z)a.u("missing breakpoint address");else{var W=V();if("*"!=z&&(W=vj(a,z,!0),!W))break a;"c"==F?null==W.K?(mj(a),a.u("all breakpoints cleared")):Tj(a,a.g,W)||Tj(a,a.L,W)||Tj(a,a.G,W)||a.u("breakpoint missing: "+yj(a,W)):null!=W.K&&(xj(a,W,D),"p"==F?a.pb(a.g,W):"r"==F?a.pb(a.L,W):"w"==F?a.pb(a.G,W):a.u("unknown breakpoint command: "+
F))}}}break;case "c":a.Pa&&(a.Pa.value="");break;case "d":a:{var Hb,Ta=g[0],Fa=g[1],Ua=g[2],Qk=g[3];if("?"==Fa){var Ib="";for(Hb in Rb)a.la[Hb]&&(Ib&&(Ib+=","),Ib+=Hb);Ib+=",state,symbols";a.u("dump memory commands:");a.u("\tda [a] dump info for address a");a.u("\tdb [a] [n] dump n bytes at address a");a.u("\tdw [a] [n] dump n words at address a");a.u("\tdd [a] [n] dump n dwords at address a");a.u("\tds [a] [n] dump n words at address a as JSON");a.u("\tdh [p] [n] dump n instructions from history position p");
Ib.length&&a.u("dump extension commands:\n\t"+Ib)}else if("state"==Fa){var Ne=rk(a.J,!0);"console"==Ua?console.log(Ne):(a.Pa&&(a.Pa.value=""),Ne&&a.u(Ne))}else if("symbols"==Fa)for(var Oe=0;Oe<a.B.length;Oe++){var Pe=a.B[Oe],Jb;for(Jb in Pe.ea)if("."!=Jb.charAt(0)){var ji=Pe.ea[Jb].o;if(void 0!==ji){var ki=Pe.ea[Jb].l;ki&&(Jb=ki);a.u(O(a,ji)+" "+Jb)}}}else{if("d"==Ta){for(Hb in Rb)if(g[1]==Hb){var li=a.la[Hb];li?(g.shift(),g.shift(),li(g)):a.u("no dump registered for "+Fa);break a}Fa||(Ta=a.Ha||"dw")}else a.Ha=
Ta;if("dh"==Ta){var mi=Fa,ni=Ua,oi="",pi=0,wa=a.R,Ga=a.i;if(Ga.length){var qa=+mi||a.na,rc=+ni||10;isNaN(qa)?qa=rc:oi="more ";qa>Ga.length&&(a.u("note: only "+Ga.length+" available"),qa=Ga.length);wa-=qa;0>wa&&(null==Ga[Ga.length-1].K?(qa=wa+qa,wa=0):wa+=Ga.length);var Qe=[];"call"==ni&&(rc=1E5,Qe=["CALL"]);for(void 0!==mi&&a.u(qa+" instructions earlier:");0<rc&&wa!=a.R;){var qi=Ga[wa++];if(null==qi.K)break;var sc=V(qi.K),Rk=qa--,ri=Xj(a,sc,"history",Rk);(!Qe.length||0<=ri.indexOf(Qe[0]))&&a.u(ri);
sc.Ac&&(wa+=sc.Ac,rc-=sc.Ac,qa-=sc.Ac);wa>=Ga.length&&(wa=0);a.na=qa;pi++;rc--}}pi||(a.u("no "+oi+"history available"),a.na=void 0)}else{var fa=vj(a,Fa);if(fa)if("da"==Ta){var Re=fa.Ka||65535<fa.K,K=Fe(a.f,fa.K||0,Re);a.u(Xa("",Re?12:19)+Na(fa.K,Re?22:17,3)+" "+G(fa.K,8));6>K.length?(2<K.length&&(a.u(" OFFSET: "+Na(K[3],13,3)+" "+G(K[3],8)),a.u("UNIMAP["+Oa(K[1])+"]: "+Na(K[2],22,3)+" "+G(K[2],8))),a.u(" PHYSICAL: "+Na(K[0],22,3)+" "+G(K[0],8))):(a.u(" OFFSET: "+
Na(K[1],13,3)+" "+G(K[1],8)),a.u("+ "+sk[K[2]]+"PAR"+K[3]+": "+Na(K[4],22,3)+" "+G(K[4],8)),a.u("& MMUMASK: "+Na(K[5],22,3)+" "+G(K[5],8)),a.u("= PHYSICAL: "+Na(K[0],22,3)+" "+G(K[0],8)))}else{var hb=0,Se="ds"==Ta;if(Ua){if("l"==Ua.charAt(0))Ua=Ua.substr(1)||Qk,hb=hj(a,Ua);else{var si=vj(a,Ua);si&&(hb=si.K-fa.K)}0>hb&&(hb=0);65536<hb&&(hb=65536)}var Tk=a.xa;fa.xa&&(a.xa=fa.xa);for(var ib="dd"==Ta?4:"db"==Ta?1:2,wd=ib*hb||128,Te=Se?16:a.xa,Uk=(wd+Te-1)/Te|0||1,jb="";Uk--&&0<wd;){for(var kb=
"",Ue="",Fa=yj(a,fa),xd=Te,tc=0,uc=0;0<xd&&0<wd;){var Kb=1,yd=1==ib?a.Mc(fa,Kb):a.Oa(fa,Kb=2),tc=tc|yd<<(uc<<3),uc=uc+Kb;uc==ib&&(Se?(kb&&(kb+=","),kb+="0x"+H(tc,2*ib)):(kb+=O(a,tc,ib),kb+=1==ib?9==xd?"-":" ":" "),tc=uc=0);xd-=Kb;for(wd-=Kb;1==ib&&Kb--;)var Ve=yd&255,Ue=Ue+(32<=Ve&&128>Ve?String.fromCharCode(Ve):"."),yd=yd>>8}jb&&(jb+="\n");jb=Se?jb+(kb+","):jb+(Fa+": "+kb+(xd?"":" "+Ue))}jb&&a.u(jb);a.Ca=fa;a.xa=Tk}}}}break;case "e":if("else"==g[0])break;var Lb,We,Xe,Ye,Ze=g[0],$e=g[1];"eb"==Ze?
Na(K[1],13,3)+" "+G(K[1],8)),a.u("+ "+sk[K[2]]+"PAR"+K[3]+": "+Na(K[4],22,3)+" "+G(K[4],8)),a.u("& MMUMASK: "+Na(K[5],22,3)+" "+G(K[5],8)),a.u("= PHYSICAL: "+Na(K[0],22,3)+" "+G(K[0],8)))}else{var ib=0,Se="ds"==Ta;if(Ua){if("l"==Ua.charAt(0))Ua=Ua.substr(1)||Qk,ib=hj(a,Ua);else{var si=vj(a,Ua);si&&(ib=si.K-fa.K)}0>ib&&(ib=0);65536<ib&&(ib=65536)}var Tk=a.xa;fa.xa&&(a.xa=fa.xa);for(var jb="dd"==Ta?4:"db"==Ta?1:2,wd=jb*ib||128,Te=Se?16:a.xa,Uk=(wd+Te-1)/Te|0||1,kb="";Uk--&&0<wd;){for(var lb=
"",Ue="",Fa=yj(a,fa),xd=Te,tc=0,uc=0;0<xd&&0<wd;){var Kb=1,yd=1==jb?a.Mc(fa,Kb):a.Oa(fa,Kb=2),tc=tc|yd<<(uc<<3),uc=uc+Kb;uc==jb&&(Se?(lb&&(lb+=","),lb+="0x"+H(tc,2*jb)):(lb+=O(a,tc,jb),lb+=1==jb?9==xd?"-":" ":" "),tc=uc=0);xd-=Kb;for(wd-=Kb;1==jb&&Kb--;)var Ve=yd&255,Ue=Ue+(32<=Ve&&128>Ve?String.fromCharCode(Ve):"."),yd=yd>>8}kb&&(kb+="\n");kb=Se?kb+(lb+","):kb+(Fa+": "+lb+(xd?"":" "+Ue))}kb&&a.u(kb);a.Ca=fa;a.xa=Tk}}}}break;case "e":if("else"==g[0])break;var Lb,We,Xe,Ye,Ze=g[0],$e=g[1];"eb"==Ze?
(Lb=1,We=255,Xe=a.Mc,Ye=a.Nc):"e"==Ze||"ew"==Ze?(Lb=2,We=65535,Xe=a.Oa,Ye=a.yd):$e=null;if(null==$e)a.u("edit memory commands:"),a.u("\teb [a] [...] edit bytes at address a"),a.u("\tew [a] [...] edit words at address a");else{var zd=vj(a,$e);if(zd)for(var Ad=2;Ad<g.length;Ad++){var vc=fj(a,g[Ad]);if(void 0===vc){a.u("unrecognized value: "+g[Ad]);break}vc&~We&&a.u("warning: "+H(vc)+" exceeds "+Lb+"-byte value");a.u("changing "+yj(a,zd)+(B(a,16)?"":" from "+O(a,Xe.call(a,zd),Lb))+" to "+O(a,vc,Lb));
Ye.call(a,zd,vc,Lb)}}break;case "g":a:{var ti=g[1],Vk=b;if(void 0!==ti){var af=vj(a,ti,!0);if(!af)break a;xj(a,af,Vk);a.pb(a.g,af,!0)}Nj(a,!0,c)}break;case "h":a.A.U?(c||a.u("halting"),a.Z()):Ka(a,!0)||c||a.u("already halted");break;case "i":if("if"==g[0]){var bf;var wc=b.substr(2),wc=Ya(wc);fj(a,wc)?(c||a.u("true: "+wc),bf=!0):(c||a.u("false: "+wc),bf=!1);bf||(d=!1);break}f=!0;break;case "k":var Wk=g[0];if("?"==g[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");
else{var cf=0,df=V(),xc=V(a.f.g[6]);for(a.u("stack trace for "+yj(a,xc));10>cf;){for(var lb=null,Xk=256;65536>xc.K>>>0;){df.K=a.Oa(xc,2);if(null==xc.K||!Xk--)break;if(!(df.K&1)){for(var Yk=a,Bd=df,ui=null,yc=Bd.K,vi=yc,ef=1;6>=ef&&yc;ef++){if(2<ef){Bd.K=yc;var Cd=Xj(Yk,Bd);if(0<=Cd.indexOf("JSR")){var wi=Cd.indexOf(" ");if(yc+(Cd.indexOf(" ",wi+1)-wi-1)/2==vi){ui=Cd;break}}}yc-=2}Bd.K=vi;if(lb=ui)break}}if(!lb||null==lb)break;var xi=null;if("ks"==Wk){var yi=lb.match(/[0-9A-F]+$/);yi&&(xi=ok(a,yi[0]))}lb=
Xa(lb,50)+" ;"+(xi||"stack="+yj(a,xc));a.u(lb);cf++}cf||a.u("no return addresses found")}break;case "l":if("ln"==g[0]){ok(a,g[1],!0);break}f=!0;break;case "m":a:{var Ha,Ia=null,N=g[1];"?"==N&&(N=void 0);if(void 0!==N){var Va=0;if("all"==N)Va=1879046143,N=null;else if("on"==N)Ia=!0,N=null;else if("off"==N)Ia=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(Ha in Rb)if(N==Ha){Va=Rb[Ha];Ia=!!(a.ha&Va);break}if(!Va){a.u("unknown message category: "+N);break a}}if(Va)if("on"==g[2])a.ha|=
else{var cf=0,df=V(),xc=V(a.f.g[6]);for(a.u("stack trace for "+yj(a,xc));10>cf;){for(var mb=null,Xk=256;65536>xc.K>>>0;){df.K=a.Oa(xc,2);if(null==xc.K||!Xk--)break;if(!(df.K&1)){for(var Yk=a,Bd=df,ui=null,yc=Bd.K,vi=yc,ef=1;6>=ef&&yc;ef++){if(2<ef){Bd.K=yc;var Cd=Xj(Yk,Bd);if(0<=Cd.indexOf("JSR")){var wi=Cd.indexOf(" ");if(yc+(Cd.indexOf(" ",wi+1)-wi-1)/2==vi){ui=Cd;break}}}yc-=2}Bd.K=vi;if(mb=ui)break}}if(!mb||null==mb)break;var xi=null;if("ks"==Wk){var yi=mb.match(/[0-9A-F]+$/);yi&&(xi=ok(a,yi[0]))}mb=
Xa(mb,50)+" ;"+(xi||"stack="+yj(a,xc));a.u(mb);cf++}cf||a.u("no return addresses found")}break;case "l":if("ln"==g[0]){ok(a,g[1],!0);break}f=!0;break;case "m":a:{var Ha,Ia=null,N=g[1];"?"==N&&(N=void 0);if(void 0!==N){var Va=0;if("all"==N)Va=1879046143,N=null;else if("on"==N)Ia=!0,N=null;else if("off"==N)Ia=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(Ha in Rb)if(N==Ha){Va=Rb[Ha];Ia=!!(a.ha&Va);break}if(!Va){a.u("unknown message category: "+N);break a}}if(Va)if("on"==g[2])a.ha|=
Va,Ia=!0;else if("off"==g[2]&&(a.ha&=~Va,Ia=!1,1073741824==Va)){for(var zi=1E3<=a.M.length?a.M.length-1E3:0;zi<a.M.length;)a.u(a.M[zi++]);a.M=[]}}var Zk=0,zc="";for(Ha in Rb)if(!N||N==Ha){var $k=!!(a.ha&Rb[Ha]);if(null===Ia||Ia==$k)zc&&(zc+=","),++Zk%10||(zc+="\n\t"),"key"==Ha&&(Ha="keys"),zc+=Ha}void 0===N&&a.u("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.u((null!==Ia?Ia?"messages on: ":"messages off: ":"message categories:\n\t")+(zc||"none"));nj(a)}break;case "p":if("print"==
g[0]){pk(a,b.substr(5));break}var al=g[0];if("?"==g[1])a.u("step commands:"),a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else{var Ai="pr"==al?1:0,Bi=1+Ai;if(a.I)a.u("step in progress");else{var Dd=V(a.f.g[7]),Mb=a.Oa(Dd);3==Mb||4==Mb||34816==(Mb&65280)||32256==(Mb&65024)||35072==(Mb&65280)?(a.I=Bi,wj(Dd,2)):2048==(Mb&65024)&&(Xj(a,Dd),a.I=Bi);a.I?(a.pb(a.g,Dd,!0),Nj(a)||(a.J&&ie(a.J),a.I=0)):qk(a,Ai?"tr":"t")}}break;case "r":if("reset"==b){a.J&&a.J.reset();
break}Pj(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var Ac=+g[2];if(8==Ac||10==Ac||16==Ac)a.xa=Ac;else{a.u("invalid base: "+Ac);break}}a.u("default base: "+a.xa);break;case "cs":var Bc;void 0!==g[3]&&(Bc=+g[3]);switch(g[2]){case "int":a.f.Ab=Bc;break;case "start":a.f.Tb=Bc;break;case "stop":a.f.Cb=Bc;break;default:a.u("unknown cs option");break a}void 0!==Bc&&ae(a.f);a.u("checksums "+(a.f.A.zb?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(fe(a.f,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));
@ -355,12 +355,12 @@ h.start=function(a,b){for(var c=za(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"
function J(a,b){if(a.f){var c=a.f,d=b||0,e=c.C.speed;e&&(0>=d||30<=(c.oc+=d))&&(e.textContent=c.A.U?c.mb.toFixed(2)+"Mhz":"Stopped",c.oc=0)}if(a.i&&(a=a.i,b=b||0,a.v)){c=a.f.A.U;d=!!(a.f.i&8);if(0>=b||60<=(a.j+=b)){for(e=0;e<a.f.g.length;e++)dc(a,"R"+e,a.f.g[e]);e=ud(a.f);dc(a,"PS",e);dc(a,"NF",e&8?1:0,1);dc(a,"ZF",e&4?1:0,1);dc(a,"VF",e&2?1:0,1);dc(a,"CF",e&1?1:0,1);a.j=0}Fc(a,0<b&&c&&!d?a.f.Za:a.ua);pc(a,a.vb);b=a.f;b=b.Ha?b.T&16?1:2:4;Hc(a,"B22",b&1);Hc(a,"B18",b&2);Hc(a,"B16",b&4)}}
h.pa=function(a,b,c){var d=this;switch(b){case "power":return this.C[b]=c,c.onclick=function(){d.j||(d.A.fa?rk(d,!1,!0):Ak(d,d.Ub))},!0;case "reset":return this.C[b]=c,c.onclick=function(){if(d.A.fa&&!d.j)if(d.b&&!d.H){var a=ya("Click OK to save changes to this "+Eb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");rk(d,a,!0);!a&&d.L?window&&window.location.reload():(a||(d.B=!0),d.Ub(xk),d.B=!1)}else d.reset(),d.f&&d.f.Ia()},!0;case "save":if(Ra(db(),"pcjs.org"))c.parentNode.removeChild(c);
else return this.C[b]=c,c.onclick=function(){var a=wk(d,!0);if(a){var b=!!(d.b&&!d.H||d.L),c=rk(d,b);b?bl(d,a,c):d.O("Resume disabled, machine state not saved")}},!0}return!1};
function wk(a,b){var c=a.g;c||((c=mb(Mk),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=dl(a,c))||a.O("The user ID is invalid.")):b&&a.O("Browser local storage is not available"));return c}
function wk(a,b){var c=a.g;c||((c=hb(Mk),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=dl(a,c))||a.O("The user ID is invalid.")):b&&a.O("Browser local storage is not available"));return c}
function dl(a,b){a.g=null;b=bb(db()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(nb(Mk,b.data),a.g=b.data)}catch(d){v(d.message+" ("+c+")")}return a.g}function zk(a){var b=null;a.g&&(b=db()+"/api/v1/user?req=load&user="+a.g+"&state="+el(a,"1.32.0"));return b}
function bl(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=el(a,"1.32.0");d.data=c;b=bb(db()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.O("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.O(c),nb(Mk,""),a.g=null)}}
function Kh(a){var b;a=za(a.id);for(var c=0;c<a.length;c++){var d=a[c];if(b)b==d&&(b=null);else if("RAM"==d.type)return d}return null}function ie(a,b){if(a.Pa){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a.Pa.focus();!b&&window&&window.scrollTo(c,d)}}var Hk="failsafe",Ck="validate",Ek="timestamp",Ok="version",Pk="url",Sk="browser",Mk="user",Gk=-1,xk=0,Fk=1,Jk=2,cl=3;
vb(function(){for(var a=y(document,x+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=w(c),c=y(c,x,"computer"),e=0;e<c.length;e++){var f=c[e],g=w(f),g=new uk(g,d,!0);Ca(g,f);g.M&&Ak(g,g.Ub)}});wb.show.push(function(){for(var a=y(document,x,"computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=Ba("Computer",c.id))&&c.R&&!c.A.fa&&c.Ub(Gk)}});wb.exit.push(function(){for(var a=y(document,x,"computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=Ba("Computer",c.id))&&c.A.fa&&rk(c,!(!c.b||c.H),!0)}});
function M(a,b,c){this.id=a.id;this.b="";this.f={};this.g=this.C=!1;this.key=el(a,b,c);Kk(this,a.Fd)}h=M.prototype;h.set=function(a,b){try{this.f[a]=b}catch(c){}};h.get=function(a){return this.f[a]||null};h.data=function(){return this.f};function yk(a,b){return b?(a.b=b,a.g=!0,a.C=!1,!0):a.g?!0:eb()&&(b=mb(a.key))?(a.b=b,a.g=!0):!1}function Dk(a){var b=!0;if(!a.C)try{a.f=JSON.parse(a.b),a.C=!0}catch(c){v(c.message||c),b=!1}return b}
function M(a,b,c){this.id=a.id;this.b="";this.f={};this.g=this.C=!1;this.key=el(a,b,c);Kk(this,a.Fd)}h=M.prototype;h.set=function(a,b){try{this.f[a]=b}catch(c){}};h.get=function(a){return this.f[a]||null};h.data=function(){return this.f};function yk(a,b){return b?(a.b=b,a.g=!0,a.C=!1,!0):a.g?!0:eb()&&(b=hb(a.key))?(a.b=b,a.g=!0):!1}function Dk(a){var b=!0;if(!a.C)try{a.f=JSON.parse(a.b),a.C=!0}catch(c){v(c.message||c),b=!1}return b}
function Lk(a){var b=!0;if(eb()){var c=JSON.stringify(a.f);nb(a.key,c)||(v("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}h.toString=function(){return this.f?JSON.stringify(this.f):this.b};function Kk(a,b){a.b="";a.f={};a.g=a.C=!1;b&&a.set("parms",b)}
h.clear=function(a){Kk(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function el(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var fl=0;
function gl(a,b,c,d,e,f){e("Loading "+a+"...");bb(a,null,!0,function(g,k,l){l?(k||(k="unable to load "+a+" ("+l+")"),f(k,null)):hl(k,a,b,c,d,e,f)})}
@ -370,4 +370,4 @@ function il(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=
"");a=a.replace(d[0],g);il(a,b,c)}})}else c(a,null)}
function jl(a,b,c,d){function e(a){if(void 0===k){var b=g&&y(g,"machine-warning");k=b&&b[0]||g}k&&(k.innerHTML=Sa(a))}function f(a){e("Error: "+a);l&&(--fl||zb(!0));l=!1}var g,k,l=!0;fl++;va[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css";r.styleSheet?r.styleSheet.cssText=m:r.appendChild(document.createTextNode(m));n.appendChild(r)}c||
(c="/versions/pdpjs/1.32.0/components.xsl");m=function(d,k){k?gl(c,null,null,!1,e,function(d,l){l?(ua(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=k.transformNode(l))?(g.outerHTML=l,--fl||zb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(l),(l=d.transformToFragment(k,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--fl||zb(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?gl(b,a,d,!0,e,m):hl(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(u){f(u.message)}return l}window.embedPDP11=function(a,b,c,d){zb(!1);return jl(a,b,c,d)};window.enableEvents=zb;window.sendEvent=Bb;})();//# sourceMappingURL=/tmp/pdpjs/1.32.0/pdp11-dbg.map
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?gl(b,a,d,!0,e,m):hl(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(u){f(u.message)}return l}window.embedPDP11=function(a,b,c,d){zb(!1);return jl(a,b,c,d)};window.findMachineComponent=function(a,b){return Ba(b,a+".machine")};window.enableEvents=zb;window.sendEvent=Bb;})();//# sourceMappingURL=/tmp/pdpjs/1.32.0/pdp11-dbg.map

View file

@ -280,4 +280,4 @@ function mh(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=
"");a=a.replace(d[0],g);mh(a,b,c)}})}else c(a,null)}
function nh(a,b,c,d){function e(a){if(void 0===k){var b=g&&C(g,"machine-warning");k=b&&b[0]||g}k&&(k.innerHTML=Ea(a))}function f(a){e("Error: "+a);l&&(--jh||Ya(!0));l=!1}var g,k,l=!0;jh++;ra[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css";t.styleSheet?t.styleSheet.cssText=m:t.appendChild(document.createTextNode(m));p.appendChild(t)}c||
(c="/versions/pdpjs/1.32.0/components.xsl");m=function(d,k){k?kh(c,null,null,!1,e,function(d,l){l?(qa(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=k.transformNode(l))?(g.outerHTML=l,--jh||Ya(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(l),(l=d.transformToFragment(k,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--jh||Ya(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?kh(b,a,d,!0,e,m):lh(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(x){f(x.message)}return l}window.embedPDP11=function(a,b,c,d){Ya(!1);return nh(a,b,c,d)};window.enableEvents=Ya;window.sendEvent=$a;})();//# sourceMappingURL=/tmp/pdpjs/1.32.0/pdp11.map
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?kh(b,a,d,!0,e,m):lh(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(x){f(x.message)}return l}window.embedPDP11=function(a,b,c,d){Ya(!1);return nh(a,b,c,d)};window.findMachineComponent=function(a,b){return va(b,a+".machine")};window.enableEvents=Ya;window.sendEvent=$a;})();//# sourceMappingURL=/tmp/pdpjs/1.32.0/pdp11.map