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

@ -171,7 +171,7 @@ function Y(a,b,c,d){var e=b;c=c||a.ja;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<
function Ne(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.length)return!1;var f,g=b.pop();f=b.pop();switch(e){case "*":f*=g;break;case "/":if(!g)return!1;f=Math.trunc(f/g);break;case "%":if(!g)return!1;f%=g;break;case "+":f+=g;break;case "-":f-=g;break;case "<<":f<<=g;break;case ">>":f>>=g;break;case ">>>":f>>>=g;break;case "<":f=f<g?1:0;break;case "<=":f=f<=g?1:0;break;case ">":f=f>g?1:0;break;case ">=":f=f>=g?1:0;break;case "==":f=f==g?1:0;break;case "!=":f=f!=g?1:0;break;
case "&":e=a;32>=e.ja?f&=g:(f=Y(e,f,0,!0),g=Y(e,g,0,!0),f=((f/Me|0)&(g/Me|0))*Me+((f&g)>>>0));break;case "!":case "|":e=a;32>=e.ja?f|=g:(f=Y(e,f,0,!0),g=Y(e,g,0,!0),f=(f/Me|0|g/Me|0)*Me+((f|g)>>>0));break;case "^!":f=Le(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=Y(a,f,0,!0),f=0<g?f*Math.pow(2,g):Math.trunc(f/Math.pow(2,-g)));break;default:return!1}b.push(Y(a,f))}return!0}
function Oe(a,b,c,d,e,f){var g,h,k,m=!1,p=0,t=[],C=[],H=a.U;for(a.U=e;c<d;){h=b[c++].trim();k=c<d?b[c++]:"";if(h)p=Pe(a,h,null,f,p);else if("{"==k){h=1;for(p=c;c<d;)if(c++,k=c<b.length?b[c++]:"","{"==k)h++;else if("}"==k&&!--h)break;p=Oe(a,b,p,c-1,a.U,f);h=c<d?b[c++].trim():"";k=c<d?b[c++]:""}else{if("~"==k||"^-"==k){p=1;continue}if("-"==k){p=-1;continue}m=!0;break}if(void 0===p)if(null==a.ga&&f)a.ga=h,p=0;else{m=!0;f=!f;break}t.push(Y(a,p));if(!k)break;C.length&&Qe[k]<Qe[C[C.length-1]]&&Ne(a,t,C,
1);C.push(k);a.U="^_"==k?10:e;p=0}Ne(a,t,C)&&1==t.length||(m=!0);m?!1===f&&a.u("parse error ("+(h||k)+")"):g=t.pop();a.U=H;return g}function Re(a,b,c,d,e,f){for(var g;0<=(g=b.indexOf(c));){for(var h=0,k=g+1,m=e;m;){var p=b[k++];if(p==c){m=-1;break}p=p.charCodeAt(0);7==d?p&=127:p=p-32&63;h=Y(a,h*Math.pow(2,d)+p,d*e,!0);m--}if(0<=m){!1===f&&a.u("parse error ("+b+")");break}else b=b.substr(0,g)+K(a,h,-1)+b.substr(k)}return b}
1);C.push(k);a.U="^_"==k?10:e;p=0}Ne(a,t,C)&&1==t.length||(m=!0);m?!1===f&&a.u("parse error ("+(h||k)+")"):g=t.pop();a.U=H;return g}function Re(a,b,c,d,e,f){for(var g;0<=(g=b.indexOf(c));){for(var h=0,k=g+1,m=e;k<b.length;){var p=b[k++];if(p==c){m=-1;break}if(!m)break;m--;p=p.charCodeAt(0);7==d?p&=127:p=p-32&63;h=Y(a,h*Math.pow(2,d)+p,d*e,!0)}if(0<=m){!1===f&&a.u("parse error ("+b+")");break}else b=b.substr(0,g)+K(a,h,-1)+b.substr(k)}return b}
function Se(a,b,c){var d=void 0;a.ga=null;if(b){"{"!=a.Y[0]&&(b=b.split(a.Y[0]).join("{").split(a.Y[1]).join("}"));b=Re(a,b,'"',7,5,c);if(!b)return d;b=Re(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_");b=b.split(/(\{|}|\|\||&&|\||\^!|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);d=Oe(a,b,0,b.length,a.U,c);void 0!==d&&!1===c&&Te(a,null,d)}return d}
function Pe(a,b,c,d,e){e=void 0===e?0:e;var f;null!=b?(f=a.nb(b),0<=f?f=a.ob(f):(f=a.K[b],null==f&&(f=1<b.length?a.U:10,0>e&&(b="-"+b,e=0),f=na(b,f))),null!=f?0>e?f=-f:0<e&&(f=Le(a,f,-1)):d||a.u("invalid "+(c?c:"value")+": "+b)):d||a.u("missing "+(c||"value"));return f}
function Te(a,b,c){var d,e=!1;if(void 0!==c){e=!0;if(8==a.U)d=c+". "+n(c,0,!0);else{d=c;var f=4,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++)g&&(g=","+g),g=ua(d&255,8)+g,d>>=8;d=q(c,0,!0)+" "+c+". "+n(c,0,!0)+" "+("0b"+g)}32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.u((null!=b?b+": ":"")+d);return e}function Ue(a){var b=a.K;a.K={};return b}function Ve(a,b){if(b)return Te(a,b,a.K[b]);var c=0;for(b in a.K)Te(a,b,a.K[b]),c++;return 0<c}