Changed the remainder operator from '%' to '^/', mainly because '%' must be allowed in MACRO-10 symbols instead, but also because '%' led one to believe it was a "mod" operator (it wasn't); added IFDEF support to the MACRO-10 Mini-Assembler; updated the Debugger's assemble command to recognize filenames with "KLM" extensions, too.
This commit is contained in:
parent
71e2ecb5cb
commit
e7988597c5
17 changed files with 573 additions and 142 deletions
|
|
@ -199,17 +199,17 @@ var Qf=12,Rf=16,Sf=192,Zf=2,Yf=32,$f=64,ce=1,Tf=2,Wf=4,Vf=128,Uf=15,Xf=240,Pf=[5
|
|||
function ag(a){u.call(this,"Debugger",a);this.w=+a.base||16;this.oa=null;this.U=["{","}"];this.fa=["[","]"];this.O=this.ba=this.D=0;this.M=!1;this.b=-1;this.g=[];this.T={}}aa(ag,u);ag.prototype.Kb=function(){return-1};ag.prototype.Lb=function(){};
|
||||
ag.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.M?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(ya(a.substring(d,f))),d=f+1}}return b};
|
||||
function bg(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<<b)-1;else{if(b=Math.pow(2,b),0>a||a>=b)d=a%b,0>d&&(d+=b)}else 32>=b?d=a|0:(b=Math.pow(2,b-1),a<-b?(a<2*-b&&(d=a%(2*b)),d+=2*b):d>=b&&(a>=2*b&&(d=a%(2*b)),d-=2*b));a!=d&&(a=d);return a}
|
||||
function cg(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,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "%":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e<f?1:0;break;case "<=":e=e<=f?1:0;break;case ">":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&=
|
||||
function cg(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,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "^/":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e<f?1:0;break;case "<=":e=e<=f?1:0;break;case ">":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&=
|
||||
f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=bg(e,0,!0),e=0<f?e*Math.pow(2,f):Math.trunc(e/Math.pow(2,-f)));break;default:return!1}a.push(bg(e))}return!0}
|
||||
function dg(a,b,c,d,e,f){var g,h,k,p=!1,t=0,v=[],B=[],y=a.w;for(a.w=e;c<d;){h=b[c++].trim();k=c<d?b[c++]:"";if(h)t=eg(a,h,null,f,t);else if("{"==k){h=1;for(t=c;c<d;)if(c++,k=c<b.length?b[c++]:"","{"==k)h++;else if("}"==k&&!--h)break;t=dg(a,b,t,c-1,a.w,f);h=c<d?b[c++].trim():"";k=c<d?b[c++]:""}else{if(" "==k)continue;if("^B"==k){a.w=2;continue}if("^O"==k){a.w=8;continue}if("^D"==k){a.w=10;continue}if(!(t&-1073741824)){if("+"==k)continue;if("-"==k){t=t<<2|1;continue}if("~"==k||"^-"==k){t=t<<2|2;continue}if("^L"==
|
||||
k){t=t<<2|3;continue}}p=!0;break}if(void 0===t)if(null==a.oa&&f)a.oa=h,t=0;else{p=!0;f=!f;break}v.push(bg(t));if(" "==k)if(c<b.length-1&&!b[c])c++,k=b[c++];else{p=!0;break}if(!k)break;t="<"==a.U[0]?fg:gg;if(!t[k]){p=!0;break}B.length&&t[k]<=t[B[B.length-1]]&&cg(v,B,1);B.push(k);a.w="^_"==k?10:e;t=0}if(p||!cg(v,B)||1!=v.length)p=!0;p?!1===f&&a.i("parse error ("+(h||k)+")"):g=v.pop();a.w=y;return g}
|
||||
function hg(a,b,c,d,e,f){for(var g;0<=(g=b.indexOf(c));){for(var h=0,k=g+1,p=e;k<b.length;){var t=b[k++];if(t==c){p=-1;break}if(!p)break;p--;t=t.charCodeAt(0);7==d?t&=127:t=t-32&63;h=bg(h*Math.pow(2,d)+t,d*e,!0)}if(0<=p){!1===f&&a.i("parse error ("+b+")");break}else b=b.substr(0,g)+ig(a,h,-1)+b.substr(k)}return b}
|
||||
function jg(a,b,c){var d=void 0;a.oa=null;if(b){"{"!=a.U[0]&&(b=b.split(a.U[0]).join("{").split(a.U[1]).join("}"));b=hg(a,b,'"',7,5,c);if(!b)return d;b=hg(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_").replace(/\s+/g," ");b=b.split(/({|}|\|\||&&|\||\^!|\^B|\^O|\^D|\^L|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=dg(a,b,0,b.length,a.w,c);void 0!==d&&!1===c&&kg(a,null,d)}return d}
|
||||
function jg(a,b,c){var d=void 0;a.oa=null;if(b){"{"!=a.U[0]&&(b=b.split(a.U[0]).join("{").split(a.U[1]).join("}"));b=hg(a,b,'"',7,5,c);if(!b)return d;b=hg(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_").replace(/\s+/g," ");b=b.split(/({|}|\|\||&&|\||\^!|\^B|\^O|\^D|\^L|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|\^\/|\/|\*| )/);d=dg(a,b,0,b.length,a.w,c);void 0!==d&&!1===c&&kg(a,null,d)}return d}
|
||||
function lg(a,b){var c,d=a.U[0],e=a.U[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=jg(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?ig(a,g):"undefined")}if(a.fa.length)for(d=a.fa[0],e=a.fa[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.O-a.ba}if(null==e)break;b=b.replace(d[0],e.toString())}return b}function eg(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.Kb(b),0<=f?f=a.Lb(f):(f=a.T[b],null==f&&(f=ma(b,1<b.length?a.w:10))),null!=f){for(;e;){switch(e&3){case 1:f=-bg(f);break;case 2:f|=-1;break;case 3:for(a=35;0<=a&&!(f&Math.pow(2,a));)a--;f=35-a}e>>>=2}f=bg(f)}else d||a.i("invalid "+(c?c:"value")+": "+b);else d||a.i("missing "+(c||"value"));return f}
|
||||
function kg(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.w?ig(a,c,32,8,1)+" "+c+".":ig(a,c,32,16,1)+" "+ig(a,c,32,8,1)+" "+ig(a,c,32,2,8)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.i((null!=b?b+": ":"")+d);return e}function mg(a,b){if(b)return kg(a,b,a.T[b]);var c=0;for(b in a.T)kg(a,b,a.T[b]),c++;return 0<c}
|
||||
function ig(a,b,c,d,e){c=void 0===c?0:c;e=void 0===e?0:e;switch((void 0===d?0:d)||a.w){case 2:(a=0<c?c:0)?36<a&&(a=36):(a=Math.abs(b),a=255>=a?8:262143>=a?18:36);b=oa(b,2,a,"",e);break;case 8:(a=0<c?(c+2)/3|0:0)?12<a&&(a=12):(a=Math.abs(b),a=262143>=a?6:16777215>=a?8:12);b=oa(b,8,a,e?"0o":"");break;case 10:(e=0<c?Math.ceil(.3*c):0)?11<e&&(e=11):e=99999>=Math.abs(b)?5:11;b=oa(b,10,e);break;default:b=n(b,0<c?c+3>>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c}
|
||||
var gg={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"%":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},fg={"||":5,"&&":6,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"%":14,"/":14,"*":14,"!":15,"|":15,"^!":15,"&":15,_:19,"^_":19,"{":20,"}":20};
|
||||
var gg={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},fg={"||":5,"&&":6,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,"!":15,"|":15,"^!":15,"&":15,_:19,"^_":19,"{":20,"}":20};
|
||||
function ng(a){ag.call(this,a);this.style=og;this.H=pg();this.ta=pg();this.S=pg();this.B=[];this.j=this.L=this.A=[];qg(this);this.X=0;rg(this);this.ka={};sg(this,a.messages);this.na=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Nc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Nc(b,a)})}aa(ng,ag);l=ng.prototype;
|
||||
l.Ga=function(a,b,c,d){this.I=b;this.u=c;this.R=a;(a=Jc(a,"messages"))&&sg(this,a);this.sa=tg;$d(this,64,function(a){a:{var b=d.I.b,c=a[0],e=a=0,k=b.length;if(c){a=ug(vg(d,c));if(-1===a){d.i("invalid address: "+c);break a}e=a>>>d.I.g;k=1}d.i("blockid physical blockaddr used size type");d.i("-------- --------- ---------- ------ ------ ----");for(var c=-1,p=0;k--;){var t=b[e];t.type==c?p++||d.i("..."):(c=t.type,p=Sb[c],t&&d.i(n(t.id)+" %"+n(e<<d.I.g)+" %%"+n(t.J)+" "+q(t.pb)+" "+
|
||||
q(t.size)+" "+p),c!=vc&&(c=-1),p=0);a+=d.I.w;e++}}});zb(this)};
|
||||
|
|
|
|||
Loading…
Reference in a new issue