Fixed limits on MACRO-10 ASCII and SIXBIT constants

This commit is contained in:
Jeff 2017-03-19 14:13:24 -07:00 committed by Jeff Parsons
commit 5d2a1ed16b
6 changed files with 8 additions and 7 deletions

View file

@ -202,7 +202,7 @@ function dg(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)
function eg(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=dg(e,0,!0),e=0<f?e*Math.pow(2,f):Math.trunc(e/Math.pow(2,-f)));break;default:return!1}a.push(dg(e))}return!0}
function fg(a,b,c,d,e,f){var g,h,k,p=!1,u=0,v=[],B=[],y=a.L;for(a.L=e;c<d;){h=b[c++].trim();k=c<d?b[c++]:"";if(h)u=gg(a,h,null,f,u);else if("{"==k){h=1;for(u=c;c<d;)if(c++,k=c<b.length?b[c++]:"","{"==k)h++;else if("}"==k&&!--h)break;u=fg(a,b,u,c-1,a.L,f);h=c<d?b[c++].trim():"";k=c<d?b[c++]:""}else{if("~"==k||"^-"==k){u=1;continue}if("-"==k){u=-1;continue}p=!0;break}if(void 0===u)if(null==a.oa&&f)a.oa=h,u=0;else{p=!0;f=!f;break}v.push(dg(u));if(!k)break;B.length&&hg[k]<hg[B[B.length-1]]&&eg(v,B,1);
B.push(k);a.L="^_"==k?10:e;u=0}eg(v,B)&&1==v.length||(p=!0);p?!1===f&&a.i("parse error ("+(h||k)+")"):g=v.pop();a.L=y;return g}function ig(a,b,c,d,e,f){for(var g;0<=(g=b.indexOf(c));){for(var h=0,k=g+1,p=e;p;){var u=b[k++];if(u==c){p=-1;break}u=u.charCodeAt(0);7==d?u&=127:u=u-32&63;h=dg(h*Math.pow(2,d)+u,d*e,!0);p--}if(0<=p){!1===f&&a.i("parse error ("+b+")");break}else b=b.substr(0,g)+jg(a,h,-1)+b.substr(k)}return b}
B.push(k);a.L="^_"==k?10:e;u=0}eg(v,B)&&1==v.length||(p=!0);p?!1===f&&a.i("parse error ("+(h||k)+")"):g=v.pop();a.L=y;return g}function ig(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 u=b[k++];if(u==c){p=-1;break}if(!p)break;p--;u=u.charCodeAt(0);7==d?u&=127:u=u-32&63;h=dg(h*Math.pow(2,d)+u,d*e,!0)}if(0<=p){!1===f&&a.i("parse error ("+b+")");break}else b=b.substr(0,g)+jg(a,h,-1)+b.substr(k)}return b}
function kg(a,b,c){var d=void 0;a.oa=null;if(b){"{"!=a.W[0]&&(b=b.split(a.W[0]).join("{").split(a.W[1]).join("}"));b=ig(a,b,'"',7,5,c);if(!b)return d;b=ig(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_");b=b.split(/(\{|}|\|\||&&|\||\^!|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);d=fg(a,b,0,b.length,a.L,c);void 0!==d&&!1===c&&lg(a,null,d)}return d}
function mg(a,b){var c,d=a.W[0],e=a.W[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=kg(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?jg(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 gg(a,b,c,d,e){e=void 0===e?0:e;var f;null!=b?(f=a.Kb(b),0<=f?f=a.Lb(f):(f=a.T[b],null==f&&(f=1<b.length?a.L:10,0>e&&(b="-"+b,e=0),f=ma(b,f))),null!=f?0>e?f=-f:0<e&&(f|=-1):d||a.i("invalid "+(c?c:"value")+": "+b)):d||a.i("missing "+(c||"value"));return f}