Successfully assembled my first MACRO-10 source file (DAKAD.MAC)
This commit is contained in:
parent
e1f37c8275
commit
3f8705ad98
9 changed files with 631 additions and 476 deletions
|
|
@ -196,11 +196,12 @@ l.Vd=function(a,b,c){x(this,a,b,c,"DATA");this.O=b;this.ia&=~(de|Xf);Eb(this,"tr
|
|||
this.g.scrollHeight;this.w+=c}else if(null!=this.j){if(10==b||1024<=this.j.length)this.i(this.j),this.j="";10!=b&&(this.j+=String.fromCharCode(b))}this.u&&Xc(this.u,this.Z,Pf(this,Yf))};l.Ud=function(a,b,c){x(this,a,b,c,"CONTROL");this.F?(this.I&&(b^this.C)&(Zf|$f)&&(a=0,this.D?(a|=b&Zf?32:0,a|=b&$f?320:0):(a|=b&Zf?16:0,a|=b&$f?1048576:0),this.I.call(this.b,a)),this.C=b,this.C&ag&&(this.F=!1)):(this.B=b,this.F=!0)};l.Td=function(a,b,c){x(this,a,b,c,"BAUDRATES");this.L=b};
|
||||
var Rf=12,Sf=16,Tf=192,$f=2,Zf=32,ag=64,de=1,Uf=2,Xf=4,Wf=128,Vf=15,Yf=240,Qf=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Of=[!1,0,0,133,142,39,238],Jf="buffer",Lf={0:If.prototype.Hd,1:If.prototype.Gd},Mf={0:If.prototype.Vd,1:If.prototype.Ud,2:If.prototype.Td};Va(function(){for(var a=rb(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=pb(c),d=new If(d);qb(d,c)}});
|
||||
function bg(a){t.call(this,"Debugger",a);this.sa=+a.base||16;this.na=["{","}"];this.Z=["[","]"];this.N=this.Y=this.C=0;this.L=!1;this.b=-1;this.g=[];this.S={}}aa(bg,t);bg.prototype.Kb=function(){return-1};bg.prototype.Lb=function(){};
|
||||
bg.prototype.Ab=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.L?a="end":a=this.g[this.b+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(Aa(a.substring(d,f))),d=f+1}}return b};function cg(a){return a|0}
|
||||
bg.prototype.Ab=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.L?a="end":a=this.g[this.b+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(Aa(a.substring(d,f))),d=f+1}}return b};
|
||||
function cg(a){var b,c=a;b=32;if(32>=b)c=a|0;else if(b=Math.pow(2,b-1),a<-b||a>=b)c=a%b;a!=c&&(a=c);return a}
|
||||
function dg(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=
|
||||
f&e;break;case "!":case "|":d=f|e;break;case "^^":d=f^e;break;case "&&":d=f&&e?1:0;break;case "||":d=f||e?1:0;break;default:return!1}a.push(cg(d))}return!0}
|
||||
function eg(a,b,c){var d;b&&(b=fg(a,b));if(b){for(var e=0,f=!1,g=b,h=[],k=[],p=b.split(/(\|\||&&|\||^^|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<p.length;){var u=p[e++],v=u.length,u=Aa(u);if(!u){f=!0;break}u=gg(a,u,null,!1===c);if(void 0===u){f=!0;c=!1;break}h.push(u);if(e==p.length)break;var u=p[e++],B=u.length;k.length&&hg[u]<hg[k[k.length-1]]&&dg(h,k,1);k.push(u);b=b.substr(v+B)}dg(h,k)&&1==h.length||(f=!0);f?c&&a.i("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),c&&
|
||||
ig(a,null,d))}return d}
|
||||
function eg(a,b,c){var d;b&&(b=fg(a,b));if(b){for(var e=0,f=!1,g=b,h=[],k=[],p=b.split(/(\|\||&&|\||^^|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<p.length;){var u=p[e++],v=u.length,u=Aa(u);if(!u){f=!0;break}u=gg(a,u,null,!1===c);if(void 0===u){f=!0;c=!1;break}h.push(cg(u));if(e==p.length)break;var u=p[e++],B=u.length;k.length&&hg[u]<hg[k[k.length-1]]&&dg(h,k,1);k.push(u);b=b.substr(v+B)}dg(h,k)&&1==h.length||(f=!0);f?c&&a.i("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),
|
||||
c&&ig(a,null,d))}return d}
|
||||
function fg(a,b){var c,d=a.na[0],e=a.na[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=eg(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?jg(a,g):"undefined")}if(a.Z.length)for(d=a.Z[0],e=a.Z[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=b.replace("["+c[1]+"]","unimplemented");for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e=a.N-
|
||||
a.Y}if(null==e)break;b=b.replace(d[0],e.toString())}return b}function gg(a,b,c,d){var e;null!=b?(e=a.Kb(b),0<=e?e=a.Lb(e):(e=a.S[b],null==e&&(e=ma(b,a.sa))),null!=e||d||a.i("invalid "+(c?c:"value")+": "+b)):d||a.i("missing "+(c||"value"));return e}
|
||||
function ig(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f=4,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++){g&&(g=","+g);var k=d&255,p=void 0,u=8,v="";u?32<u&&(u=32):u=32;for(var B=null==k||isNaN(k),y=p=p||u;0<u--;)y||(v=","+v,y=p),v=(B?"?":k&1?"1":"0")+v,k>>=1,y--;g=v+g;d>>=8}d=n(c,0,!0)+" "+c+". "+pa(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.i((null!=b?b+": ":"")+d);return e}
|
||||
|
|
@ -210,7 +211,7 @@ l.Ga=function(a,b,c,d){this.H=b;this.u=c;this.R=a;(a=Kc(a,"messages"))&&qg(this,
|
|||
q(u.size)+" "+p),c!=wc&&(c=-1),p=0);a+=d.H.w;e++}}});Ab(this)};
|
||||
l.ca=function(a,b,c){var d=this;switch(b){case "debugInput":return this.U=this.P[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Oc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.b<d.g.length-1&&(b=d.g[++d.b])):40==a.keyCode&&(0<d.b?b=d.g[--d.b]:(b="",d.b=-1)),null!=b){var e=b.length;c.value=b;c.setSelectionRange(e,e)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.P[b]=c,Ta(c,function(){if(d.U){var a=d.U.value;d.U.value=
|
||||
"";Oc(d,a,!0);return!0}return!1}),!0;case "step":return this.P[b]=c,Ta(c,function(a){var b=!1;Bb(d,!0)||(Cb(d,!0),b=ug(d,a?1:0),Cb(d,!1));return b}),!0}return!1};l.Za=function(){this.U&&this.U.focus()};function sg(a){a=a&&a.J;null==a&&(a=-1);return a}l.Ha=function(a,b){var c=255,d=sg(a);-1!==d&&(c=Vb(this.H,d),b&&vg(a,b));return c};l.Gb=function(a,b){var c=65535,d=sg(a);-1!==d&&(c=Xb(this.H,d),b&&vg(a,b));return c};l.Xb=function(a,b,c){var d=sg(a);-1!==d&&(Yb(this.H,d,b),c&&vg(a,c),Pc(this.u,!0))};
|
||||
l.Qc=function(a,b,c){var d=sg(a);if(-1!==d){var e=this.H,f=d&e.j,g=(d&e.C)>>>e.g;f!=e.j?e.b[g].Sb(f,b&65535,d):(e.b[g++].qb(f,b&255,d),e.b[g&e.I].qb(0,b>>8&255,d+1));c&&vg(a,c);Pc(this.u,!0)}};function ng(a){return{J:a,Fa:!1}}function Tg(a){return[a.J,a.Fa]}function Vg(a){return{J:a[0],Fa:a[1]}}
|
||||
l.Qc=function(a,b,c){var d=sg(a);if(-1!==d){var e=this.H,f=d&e.j,g=(d&e.C)>>>e.g;f!=e.j?e.b[g].Sb(f,b&65535,d):(e.b[g++].qb(f,b&255,d),e.b[g&e.I].qb(0,b>>8&255,d+1));c&&vg(a,c);Pc(this.u,!0)}};function ng(a){return{J:a,Fa:!1}}function wg(a){return[a.J,a.Fa]}function Ug(a){return{J:a[0],Fa:a[1]}}
|
||||
function tg(a,b,c){var d;c=(c?a.F:a.oa).J;if(void 0!==b){d=b=fg(a,b)||b;var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.A.length;c++){var f=a.A[c].ra[d];if(void 0!==f){d=f.o;void 0!==d&&(e=ng(d));break}}if(d=e)return d;c=eg(a,b,void 0)}null!=c&&(d=ng(c));return d}function Wg(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.sd=a.Ab(b.Jc=c[2]))}function vg(a,b){null!=a.J&&(a.J+=b||1)}function Xg(a){return n(a,4)}
|
||||
function Yg(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.Ha(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function qg(a,b){a.K=a;a.ha=a.wd=536870912;a.V=null;a.X=[];b=a.Ab(b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in Ib)0<=Fa(b,c)&&(a.ha|=Ib[c],a.i(c+" messages enabled"))}function ae(a,b,c){for(var d in Ib)if(b==Ib[d]){a.ea[d]=c;break}}
|
||||
l.Kb=function(a,b){var c;a=a.toUpperCase();null==b?c=Fa(Zg,a):(c=Fa(Zg,a.substr(b,2)),0>c&&(c=Fa(Zg,a.substr(b,1))));return c};function $g(a,b){var c=0;a=a.Lb(b);if(void 0!==a)switch(b){case ah:case bh:case ch:case dh:case eh:case fh:case gh:case hh:c=2;break;case ih:case jh:case kh:case lh:case mh:case nh:case oh:c=4}return c?n(a,c):"??"}
|
||||
|
|
@ -221,7 +222,7 @@ function Fb(a,b,c,d,e,f,g,h){h|=256;null!=f&&(a.ha&h)!=h||a.message(b.cb+"."+(nu
|
|||
function pg(a){var b;if(Td(a)){if(!a.D||!a.D.length){a.D=Array(qh);for(b=0;b<a.D.length;b++)a.D[b]=ng();a.T=0;a.i("instruction history buffer allocated")}if(!a.B||!a.B.length)for(a.B=Array(256),b=0;b<a.B.length;b++)a.B[b]=[b,0]}else a.D&&a.D.length&&a.i("instruction history buffer freed"),a.T=0,a.D=[],a.B=[]}function rh(a,b){if(!sh(a))return!1;a.u.tb(b);return!0}
|
||||
function ug(a,b,c,d){if(!sh(a))return!1;a.C=0;b||Td(a)&&Ud(a,a.u.j,0);try{var e=a.u.Eb(b);0<e&&(a.C+=e,Tc(a.u,e,!0),Qc(a.u,e),a.N++)}catch(f){"number"!=typeof f&&(a.C=0,yb(a.u,f.stack||f.message))}!1!==d&&Pc(a.u);Nc(a,c||!1);return 0<a.C}l.da=function(a){this.u&&this.u.da(a)};function Nc(a,b){void 0===b&&(b=!0);a.F=ng(a.u.j);b&&1!=a.M?th(a):uh(a)}
|
||||
function sh(a){var b;if(b=a.u&&zb(a.u))b=a.u,b.G.ja?b=!0:(b.i(b.toString()+" not powered"),b=!1);b&&!Bb(a.u)?(a=a.u,a.G.error?(a.i(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}l.wa=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};l.va=function(a,b){b&&this.i(a?"suspending":"shutting down");return a?this.save():!0};l.reset=function(a){pg(this);this.N=this.Y=0;this.V=null;this.C=0;this.F=ng(this.u.j);this.G.la=!1;vh(this);a||Nc(this)};
|
||||
l.save=function(){var a=new ud(this);a.set(0,Tg(this.F));a.set(1,Tg(this.O));a.set(2,[this.g,this.L,this.ha]);a.set(3,this.A);return a.data()};l.restore=function(a){var b=0;void 0!==a[2]&&(this.F=Vg(a[b++]),this.O=Vg(a[b++]),this.g=a[b][0],"string"==typeof this.g&&(this.g=[this.g]),this.L=a[b][1],this.ha|=a[b][2]);a[3]&&(this.A=a[3]);return!0};l.start=function(a,b){this.M||this.i("running");this.G.la=!0;this.za=a;this.Aa=b};
|
||||
l.save=function(){var a=new ud(this);a.set(0,wg(this.F));a.set(1,wg(this.O));a.set(2,[this.g,this.L,this.ha]);a.set(3,this.A);return a.data()};l.restore=function(a){var b=0;void 0!==a[2]&&(this.F=Ug(a[b++]),this.O=Ug(a[b++]),this.g=a[b][0],"string"==typeof this.g&&(this.g=[this.g]),this.L=a[b][1],this.ha|=a[b][2]);a[3]&&(this.A=a[3]);return!0};l.start=function(a,b){this.M||this.i("running");this.G.la=!0;this.za=a;this.Aa=b};
|
||||
l.stop=function(a,b){if(this.G.la){this.G.la=!1;this.C=b-this.Aa;if(!this.M){b="stopped";if(this.C){a-=this.za;var c=0<a?Math.round(1E3*this.C/a):0;b+=" (";Td(this)&&(b+=this.N+" opcodes, ",this.Y-=this.N,this.N=0);b+=this.C+" cycles, "+a+" ms, "+c+" hz)"}else Db(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.i(b)}Nc(this,!0);this.Za();vh(this,this.u.j)}};function Td(a){return 1<a.j.length||!!a.W}
|
||||
function Ud(a,b,c){var d=a.u;if(0<c&&(a.W&&!--a.W||Hc(a,b,1,a.j)))return!0;0<=c&&a.B.length&&(a.N++,b=Vb(a.H,b),null!=b&&(a.B[b][1]++,b=a.D[a.T],b.J=d.j,b.Fa=!1,++a.T==a.D.length&&(a.T=0)));return!1}function dc(a,b,c){a.i("break on input from port "+q(b)+": "+n(c));a.da(!0)}function ic(a,b,c){a.i("break on output to port "+q(b)+": "+n(c));a.da(!0)}
|
||||
function og(a){var b,c;a.j=["bp"];if(a.I)for(b=1;b<a.I.length;b++){c=a.I[b];var d=a.H;Gc(d.b[sg(c)>>>d.g],!1)}a.I=["br"];if(a.w)for(b=1;b<a.w.length;b++)c=a.w[b],d=a.H,Gc(d.b[sg(c)>>>d.g],!0);a.w=["bw"];a.ta=0}l.Pa=function(a,b,c){var d=!0;c||wh(this,a,b,!1,!0);if(a!=this.j){var e=sg(b);if(-1===e)this.i("invalid address: "+Xg(b.J)),d=!1;else{var f=this.H;f.b[e>>>f.g].Pa(e&f.j,a==this.w)}}d&&(a.push(b),c?b.Fa=!0:(xh(this,a,a.length-1,"set"),pg(this)));return d};
|
||||
|
|
@ -246,18 +247,18 @@ function zh(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.i(">> "+b):(a.L&&(a.i("e
|
|||
u,void 0===f[2])a.i("begin assemble at "+Xg(u.J)),a.L=!0,Pc(a.u);else{var v;a.i("not supported yet");v=[];if(v.length){for(var B=0;B<v.length;B++)a.Xb(u,v[B],1);a.i(Ah(a,a.O))}}break;case "b":a:{var y=f[0],w=f[1],C=b;if("?"==w)a.i("breakpoint commands:"),a.i("\tbi [p]\ttoggle break on input port [p]"),a.i("\tbo [p]\ttoggle break on output port [p]"),a.i("\tbp [a]\tset exec breakpoint at addr [a]"),a.i("\tbr [a]\tset read breakpoint at addr [a]"),a.i("\tbw [a]\tset write breakpoint at addr [a]"),a.i("\tbc [a]\tclear breakpoint at addr [a]"),
|
||||
a.i("\tbl\tlist all breakpoints"),a.i("\tbn [n]\tbreak after [n] instruction(s)");else{var T=y.charAt(1);if("l"==T){var za;za=0+yh(a,a.j);za+=yh(a,a.I);(za+=yh(a,a.w))||a.i("no breakpoints")}else if("n"==T)a.W=gg(a,w),a.i("break after "+a.W+" instruction(s)");else if(void 0===w)a.i("missing breakpoint address");else{var L=ng();if("*"!=w&&(L=tg(a,w,!0),!L))break a;w=q(L.J);"c"==T?null==L.J?(og(a),a.i("all breakpoints cleared")):wh(a,a.j,L)||wh(a,a.I,L)||wh(a,a.w,L)||a.i("breakpoint missing: "+Xg(L.J)):
|
||||
"i"==T?a.i("breakpoint "+(ac(a.H,L.J)?"enabled":"cleared")+": port "+w+" (input)"):"o"==T?a.i("breakpoint "+(ec(a.H,L.J)?"enabled":"cleared")+": port "+w+" (output)"):null!=L.J&&(Wg(a,L,C),"p"==T?a.Pa(a.j,L):"r"==T?a.Pa(a.I,L):"w"==T?a.Pa(a.w,L):a.i("unknown breakpoint command: "+T))}}}break;case "c":a.ua&&(a.ua.value="");break;case "d":a:{var ja,ua=f[0],na=f[1],Ma=f[2],fc=f[3];if("?"==na){var Nb="";for(ja in Ib)a.ea[ja]&&(Nb&&(Nb+=","),Nb+=ja);Nb+=",state,symbols";a.i("dump memory commands:");a.i("\tdb [a] [#] dump # bytes at address a");
|
||||
a.i("\tdw [a] [#] dump # words at address a");a.i("\tdd [a] [#] dump # dwords at address a");a.i("\tdh [#] [#] dump # instructions from history");Nb.length&&a.i("dump extension commands:\n\t"+Nb)}else if("state"==na){var qe=bi(a.R,!0);"console"==Ma?console.log(qe):(a.ua&&(a.ua.value=""),qe&&a.i(qe))}else if("symbols"==na)for(var re=0;re<a.A.length;re++){var se=a.A[re],Ob;for(Ob in se.ra)if("."!=Ob.charAt(0)){var wg=se.ra[Ob].o;if(void 0!==wg){var xg=se.ra[Ob].l;xg&&(Ob=xg);a.i(Xg(wg)+" "+
|
||||
Ob)}}}else{if("d"==ua){for(ja in Ib)if(f[1]==ja){var yg=a.ea[ja];yg?(f.shift(),f.shift(),yg(f)):a.i("no dump registered for "+na);break a}na||(ua=a.Da||"db")}else a.Da=ua;if("dh"==ua){var zg=na,Ag=Ma,Bg="",Cg=0,Na=a.T,Za=a.D;if(Za.length){var Ba=+zg||a.xa,kc=+Ag||10;isNaN(Ba)?Ba=kc:Bg="more ";Ba>Za.length&&(a.i("note: only "+Za.length+" available"),Ba=Za.length);Na-=Ba;0>Na&&(null==Za[Za.length-1].J?(Ba=Na+Ba,Na=0):Na+=Za.length);var te=[];"call"==Ag&&(kc=1E5,te=["CALL"]);for(void 0!==zg&&a.i(Ba+
|
||||
" instructions earlier:");0<kc&&Na!=a.T;){var Dg=Za[Na++];if(null==Dg.J)break;var lc=ng(Dg.J),Fi=Ba--,Eg=Ah(a,lc,"history",Fi);(!te.length||0<=Eg.indexOf(te[0]))&&a.i(Eg);lc.Jb&&(Na+=lc.Jb,kc-=lc.Jb,Ba-=lc.Jb);Na>=Za.length&&(Na=0);a.xa=Ba;Cg++;kc--}}Cg||(a.i("no "+Bg+"history available"),a.xa=void 0)}else{var $c=tg(a,na);if($c){var ad=0;Ma&&("l"==Ma.charAt(0)&&(Ma=Ma.substr(1)||fc),ad=gg(a,Ma)>>>0,65536<ad&&(ad=65536));for(var mc="",bd="dd"==ua?4:"dw"==ua?2:1,cd=bd*ad||128,Gi=cd+15>>4||1;Gi--&&0<
|
||||
cd;){var dd=0,ue=0,nc,ve="",Fg="",na=Xg($c.J);for(nc=16;0<nc&&0<cd;nc--){var ed=a.Ha($c,1),dd=dd|ed<<(ue++<<3);ue==bd&&(ve+=n(dd,2*bd),ve+=1==bd?9==nc?"-":" ":" ",dd=ue=0);Fg+=32<=ed&&128>ed?String.fromCharCode(ed):".";cd--}mc&&(mc+="\n");mc+=na+" "+ve+(nc?"":" "+Fg)}mc&&a.i(mc);a.oa=$c}}}}break;case "e":if("else"==f[0])break;var fd=1,Gg=255,Hg=a.Ha,Ig=a.Xb;"ew"==f[0]&&(fd=2,Gg=65535,Hg=a.Gb,Ig=a.Qc);var Jg=fd<<1,Kg=f[1];if(null==Kg)a.i("edit memory commands:"),a.i("\teb [a] [...] edit bytes at address a"),
|
||||
a.i("\tew [a] [...] edit words at address a");else{var gd=tg(a,Kg);if(gd)for(var hd=2;hd<f.length;hd++){var oc=eg(a,f[hd]);if(void 0===oc){a.i("unrecognized value: "+f[hd]);break}oc&~Gg&&a.i("warning: "+n(oc)+" exceeds "+fd+"-byte value");var Hi=Hg.call(a,gd);a.i("changing "+Xg(gd.J)+" from "+n(Hi,Jg,!0)+" to "+n(oc,Jg,!0));Ig.call(a,gd,oc,fd)}}break;case "f":Wh(a,f[1]);break;case "g":a:{var Lg=f[1],Ii=b;if(void 0!==Lg){var we=tg(a,Lg,!0);if(!we)break a;Wg(a,we,Ii);a.Pa(a.j,we,!0)}rh(a,!0)||c||a.i("cpu busy or unavailable, run command ignored")}break;
|
||||
a.i("\tdw [a] [#] dump # words at address a");a.i("\tdd [a] [#] dump # dwords at address a");a.i("\tdh [#] [#] dump # instructions from history");Nb.length&&a.i("dump extension commands:\n\t"+Nb)}else if("state"==na){var qe=bi(a.R,!0);"console"==Ma?console.log(qe):(a.ua&&(a.ua.value=""),qe&&a.i(qe))}else if("symbols"==na)for(var re=0;re<a.A.length;re++){var se=a.A[re],Ob;for(Ob in se.ra)if("."!=Ob.charAt(0)){var xg=se.ra[Ob].o;if(void 0!==xg){var yg=se.ra[Ob].l;yg&&(Ob=yg);a.i(Xg(xg)+" "+
|
||||
Ob)}}}else{if("d"==ua){for(ja in Ib)if(f[1]==ja){var zg=a.ea[ja];zg?(f.shift(),f.shift(),zg(f)):a.i("no dump registered for "+na);break a}na||(ua=a.Da||"db")}else a.Da=ua;if("dh"==ua){var Ag=na,Bg=Ma,Cg="",Dg=0,Na=a.T,Za=a.D;if(Za.length){var Ba=+Ag||a.xa,kc=+Bg||10;isNaN(Ba)?Ba=kc:Cg="more ";Ba>Za.length&&(a.i("note: only "+Za.length+" available"),Ba=Za.length);Na-=Ba;0>Na&&(null==Za[Za.length-1].J?(Ba=Na+Ba,Na=0):Na+=Za.length);var te=[];"call"==Bg&&(kc=1E5,te=["CALL"]);for(void 0!==Ag&&a.i(Ba+
|
||||
" instructions earlier:");0<kc&&Na!=a.T;){var Eg=Za[Na++];if(null==Eg.J)break;var lc=ng(Eg.J),Fi=Ba--,Fg=Ah(a,lc,"history",Fi);(!te.length||0<=Fg.indexOf(te[0]))&&a.i(Fg);lc.Jb&&(Na+=lc.Jb,kc-=lc.Jb,Ba-=lc.Jb);Na>=Za.length&&(Na=0);a.xa=Ba;Dg++;kc--}}Dg||(a.i("no "+Cg+"history available"),a.xa=void 0)}else{var $c=tg(a,na);if($c){var ad=0;Ma&&("l"==Ma.charAt(0)&&(Ma=Ma.substr(1)||fc),ad=gg(a,Ma)>>>0,65536<ad&&(ad=65536));for(var mc="",bd="dd"==ua?4:"dw"==ua?2:1,cd=bd*ad||128,Gi=cd+15>>4||1;Gi--&&0<
|
||||
cd;){var dd=0,ue=0,nc,ve="",Gg="",na=Xg($c.J);for(nc=16;0<nc&&0<cd;nc--){var ed=a.Ha($c,1),dd=dd|ed<<(ue++<<3);ue==bd&&(ve+=n(dd,2*bd),ve+=1==bd?9==nc?"-":" ":" ",dd=ue=0);Gg+=32<=ed&&128>ed?String.fromCharCode(ed):".";cd--}mc&&(mc+="\n");mc+=na+" "+ve+(nc?"":" "+Gg)}mc&&a.i(mc);a.oa=$c}}}}break;case "e":if("else"==f[0])break;var fd=1,Hg=255,Ig=a.Ha,Jg=a.Xb;"ew"==f[0]&&(fd=2,Hg=65535,Ig=a.Gb,Jg=a.Qc);var Kg=fd<<1,Lg=f[1];if(null==Lg)a.i("edit memory commands:"),a.i("\teb [a] [...] edit bytes at address a"),
|
||||
a.i("\tew [a] [...] edit words at address a");else{var gd=tg(a,Lg);if(gd)for(var hd=2;hd<f.length;hd++){var oc=eg(a,f[hd]);if(void 0===oc){a.i("unrecognized value: "+f[hd]);break}oc&~Hg&&a.i("warning: "+n(oc)+" exceeds "+fd+"-byte value");var Hi=Ig.call(a,gd);a.i("changing "+Xg(gd.J)+" from "+n(Hi,Kg,!0)+" to "+n(oc,Kg,!0));Jg.call(a,gd,oc,fd)}}break;case "f":Wh(a,f[1]);break;case "g":a:{var Mg=f[1],Ii=b;if(void 0!==Mg){var we=tg(a,Mg,!0);if(!we)break a;Wg(a,we,Ii);a.Pa(a.j,we,!0)}rh(a,!0)||c||a.i("cpu busy or unavailable, run command ignored")}break;
|
||||
case "h":a:{var xe;if(a.G.la)xe="halting",a.da();else{if(Bb(a,!0))break a;xe="already halted"}c||a.i(xe)}break;case "i":if("if"==f[0]){var ye;var pc=b.substr(2),pc=Aa(pc);eg(a,pc)?(c||a.i("true: "+pc),ye=!0):(c||a.i("false: "+pc),ye=!1);ye||(d=!1);break}if("int"==f[0]){var id;var Ji=f[1];if(a.u.N&512){var ze=eg(a,Ji);null==ze?id=!1:(a.i("requesting interrupt level "+ze),Sd(a.u,ze),id=!0)}else a.i("interrupts disabled (use rif=1 to enable)"),id=!1;id||(d=!1);break}var Ae=f[1];if(Ae&&"?"!=Ae){var Be=
|
||||
gg(a,Ae);if(void 0!==Be){var Ki=cc(a.H,Be);a.i(q(Be)+": "+qa(Ki))}}else a.i("input commands:"),a.i("\ti [p]\tread port [p]"),a.i("warning: port accesses can affect hardware state");break;case "k":var Li=f[0];if("?"==f[1])a.i("stack trace commands:"),a.i("\tk\tshow frame addresses"),a.i("\tks\tshow symbol information");else{var Ce=0,Mg=ng(),qc=ng(a.u.M);for(a.i("stack trace for "+Xg(qc.J));10>Ce;){for(var ub=null,Mi=256;65536>qc.J>>>0;){Mg.J=a.Gb(qc,2);if(null==qc.J||!Mi--)break;for(var Ni=a,jd=Mg,
|
||||
Ng=null,rc=jd.J,Og=rc,De=1;6>=De&&rc;De++){if(2<De){jd.J=rc;var kd=Ah(Ni,jd);if(0<=kd.indexOf("CALL")){var Pg=kd.indexOf(" ");if(rc+(kd.indexOf(" ",Pg+1)-Pg-1)/2==Og){Ng=kd;break}}}rc--}jd.J=Og;if(ub=Ng)break}if(!ub||null==ub)break;var Qg=null;if("ks"==Li){var Rg=ub.match(/[0-9A-F]+$/);Rg&&(Qg=Yh(a,Rg[0]))}ub=ya(ub,50)+" ;"+(Qg||"stack="+Xg(qc.J));a.i(ub);Ce++}Ce||a.i("no return addresses found")}break;case "l":"ln"==f[0]&&Yh(a,f[1],!0);break;case "m":a:{var $a,ab=null,ba=f[1];"?"==ba&&(ba=void 0);
|
||||
gg(a,Ae);if(void 0!==Be){var Ki=cc(a.H,Be);a.i(q(Be)+": "+qa(Ki))}}else a.i("input commands:"),a.i("\ti [p]\tread port [p]"),a.i("warning: port accesses can affect hardware state");break;case "k":var Li=f[0];if("?"==f[1])a.i("stack trace commands:"),a.i("\tk\tshow frame addresses"),a.i("\tks\tshow symbol information");else{var Ce=0,Ng=ng(),qc=ng(a.u.M);for(a.i("stack trace for "+Xg(qc.J));10>Ce;){for(var ub=null,Mi=256;65536>qc.J>>>0;){Ng.J=a.Gb(qc,2);if(null==qc.J||!Mi--)break;for(var Ni=a,jd=Ng,
|
||||
Og=null,rc=jd.J,Pg=rc,De=1;6>=De&&rc;De++){if(2<De){jd.J=rc;var kd=Ah(Ni,jd);if(0<=kd.indexOf("CALL")){var Qg=kd.indexOf(" ");if(rc+(kd.indexOf(" ",Qg+1)-Qg-1)/2==Pg){Og=kd;break}}}rc--}jd.J=Pg;if(ub=Og)break}if(!ub||null==ub)break;var Rg=null;if("ks"==Li){var Sg=ub.match(/[0-9A-F]+$/);Sg&&(Rg=Yh(a,Sg[0]))}ub=ya(ub,50)+" ;"+(Rg||"stack="+Xg(qc.J));a.i(ub);Ce++}Ce||a.i("no return addresses found")}break;case "l":"ln"==f[0]&&Yh(a,f[1],!0);break;case "m":a:{var $a,ab=null,ba=f[1];"?"==ba&&(ba=void 0);
|
||||
if(void 0!==ba){var nb=0;if("all"==ba)nb=1878917119,ba=null;else if("on"==ba)ab=!0,ba=null;else if("off"==ba)ab=!1,ba=null;else{"keys"==ba&&(ba="key");"kbd"==ba&&(ba="keyboard");for($a in Ib)if(ba==$a){nb=Ib[$a];ab=!!(a.ha&nb);break}if(!nb){a.i("unknown message category: "+ba);break a}}if(nb)if("on"==f[2])a.ha|=nb,ab=!0;else if("off"==f[2]&&(a.ha&=~nb,ab=!1,1073741824==nb)){for(var Ee=0;Ee<a.X.length;Ee++)a.i(a.X[Ee]);a.X=[]}}var Oi=0,sc="";for($a in Ib)if(!ba||ba==$a){var Pi=!!(a.ha&Ib[$a]);if(null===
|
||||
ab||ab==Pi)sc&&(sc+=","),++Oi%10||(sc+="\n\t"),"key"==$a&&($a="keys"),sc+=$a}void 0===ba&&a.i("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.i((null!==ab?ab?"messages on: ":"messages off: ":"message categories:\n\t")+(sc||"none"));pg(a)}break;case "o":var Fe=f[1],Qi=f[2];if(Fe&&"?"!=Fe){var Ge=gg(a,Fe,"port #"),He=gg(a,Qi);void 0!==Ge&&void 0!==He&&(hc(a.H,Ge,He),a.i(q(Ge)+": "+qa(He)))}else a.i("output commands:"),a.i("\to [p] [b]\twrite byte [b] to port [p]"),a.i("warning: port accesses can affect hardware state");
|
||||
break;case "p":if("print"==f[0]){$h(a,b.substr(5));break}var Sg="pr"==f[0]?1:0,Ri=1+Sg;if(a.M)a.i("step in progress");else{var Ie=ng(a.u.j);switch(a.Ha(Ie)){case 205:a.M=Ri,vg(Ie,3)}a.M?(a.Pa(a.j,Ie,!0),rh(a)||(a.R&&a.R.Za(),a.M=0)):ai(a,Sg?"tr":"t")}break;case "r":if("reset"==b){a.R&&a.R.reset();break}th(a,f);break;case "s":Zh(a,f);break;case "t":ai(a,f[0],f[1]);break;case "u":uh(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Xh(a,b.substr(3))||(d=!1);break}a.i("PC8080 version 1.34.2 ("+a.u.xb+",RELEASE"+
|
||||
(Gb?",TYPEDARRAYS":",LONGARRAYS")+")");a.i(Ia());break;case "?":if(f[1]){$h(a,b.substr(1));break}var Je="commands:",Ke;for(Ke in ci)Je+="\n"+ya(Ke,9)+ci[Ke];Td(a)||(Je+="\nnote: frequency/history disabled if no exec breakpoints");a.i(Je);break;default:a.i("unknown command: "+b),d=!1}}}catch(Ug){a.i("debugger error: "+(Ug.stack||Ug.message)),d=!1}return d}function Oc(a,b,c){b=a.Ab(b,c);for(var d in b)if(!zh(a,b[+d]))return!1;return!0}
|
||||
break;case "p":if("print"==f[0]){$h(a,b.substr(5));break}var Tg="pr"==f[0]?1:0,Ri=1+Tg;if(a.M)a.i("step in progress");else{var Ie=ng(a.u.j);switch(a.Ha(Ie)){case 205:a.M=Ri,vg(Ie,3)}a.M?(a.Pa(a.j,Ie,!0),rh(a)||(a.R&&a.R.Za(),a.M=0)):ai(a,Tg?"tr":"t")}break;case "r":if("reset"==b){a.R&&a.R.reset();break}th(a,f);break;case "s":Zh(a,f);break;case "t":ai(a,f[0],f[1]);break;case "u":uh(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Xh(a,b.substr(3))||(d=!1);break}a.i("PC8080 version 1.34.2 ("+a.u.xb+",RELEASE"+
|
||||
(Gb?",TYPEDARRAYS":",LONGARRAYS")+")");a.i(Ia());break;case "?":if(f[1]){$h(a,b.substr(1));break}var Je="commands:",Ke;for(Ke in ci)Je+="\n"+ya(Ke,9)+ci[Ke];Td(a)||(Je+="\nnote: frequency/history disabled if no exec breakpoints");a.i(Je);break;default:a.i("unknown command: "+b),d=!1}}}catch(Vg){a.i("debugger error: "+(Vg.stack||Vg.message)),d=!1}return d}function Oc(a,b,c){b=a.Ab(b,c);for(var d in b)if(!zh(a,b[+d]))return!1;return!0}
|
||||
var ci={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},
|
||||
mg=8080,Bh=8086,Ch="NONE ACI ADC ADD ADI ANA ANI CALL CC CM CNC CNZ CP CPE CPO CZ CMA CMC CMP CPI DAA DAD DCR DCX DI EI HLT IN INR INX JMP JC JM JNC JNZ JP JPE JPO JZ LDA LDAX LHLD LXI MOV MVI NOP ORA ORI OUT PCHL POP PUSH RAL RAR RET RC RM RNC RNZ RP RPE RPO RZ RLC RRC RST SBB SBI SHLD SPHL STA STAX STC SUB SUI XCHG XRA XRI XTHL".split(" "),Dh="NONE ADC ADC ADD ADD AND AND CALL CALLC CALLS CALLNC CALLNZ CALLNS CALLP CALLNP CALLZ NOT CMC CMP CMP DAA ADD DEC DEC CLI STI HLT IN INC INC JMP JC JS JNC JNZ JNS JP JNP JZ MOV MOV MOV MOV MOV MOV NOP OR OR OUT JMP POP PUSH RCL RCR RET RETC RETS RETNC RETNZ RETNS RETP RETNP RETZ ROL ROR RST SBB SBB MOV MOV MOV MOV STC SUB SUB XCHG XOR XOR XCHG".split(" "),
|
||||
bh=0,ch=1,dh=2,eh=3,fh=4,gh=5,hh=6,ah=7,ih=8,jh=9,kh=10,lh=11,mh=12,nh=13,oh=14,Zg="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),Gh=15,Fh=240,Oh=3840,Hh=61440,Eh=0,Q=1,Kh=2,Lh=3,Nh=16,P=32,Mh=64,Ph=128,R=ah<<8|Nh|Q,S=bh<<8|Nh|Q,U=ch<<8|Nh|Q,V=dh<<8|Nh|Q,W=eh<<8|Nh|Q,X=fh<<8|Nh|Q,Y=gh<<8|Nh|Q,Z=hh<<8|Nh|Q|Mh,di=ih<<8|Nh|Lh,ei=jh<<8|Nh|Lh,fi=kh<<8|Nh|Lh,gi=lh<<8|Nh|Lh,hi=oh<<8|Nh|Lh,Jh=4096,Ih=8192,O=16384,Qh=32768,rg=[[45],[42,di,P],[71,di|Mh,R|O],[29,di],[28,S],[22,S],[44,S,P],[63],[45,Qh],[21,
|
||||
|
|
|
|||
Loading…
Reference in a new issue