UNPKG

asm80

Version:
101 lines 17.6 kB
var ASM={};(function(a,b){if(typeof module!="undefined"){module.exports=b();}else{if(typeof define=="function"&&typeof define.amd=="object"){define(b); }else{this[a]=b();}}}("ASM",function(){var b=null;var g=null;var x={};var C=false;var c=require("./parser.js").Parser;var n=function(G){return G.map(function(I){var H=I.line; H=H.replace("&lt;","<");H=H.replace("&gt;",">");while(H[H.length-1]===" "){H=H.substr(0,H.length-1);}I.line=H;if(H[0]!==" "){return I;}while(H[0]===" "){H=H.substr(1); }I.line=" "+H;return I;});};var h=function(G){return G.filter(function(I){var H=I.line;while(H[0]===" "){H=H.substr(1);}return H.length?true:false;});}; var q=function(G){return G.map(function(I){var H=I.line;var J={addr:0,line:";;;EMPTYLINE",numline:I.numline};while(H[0]===" "){H=H.substr(1);}return H.length?I:J; });};var A=function(H){var G=1;return H.map(function(I){return{line:I,numline:G++,addr:null,bytes:0};});};var z=function(G){return G.replace(/^\s+|\s+$/g,""); };var v=function(O,I,S,X){var N=O.line;var L=N.match(/^\s*(\@{0,1}[a-zA-Z0-9-_]+):\s*(.*)/);if(L){O.label=L[1].toUpperCase();N=L[2];}var K=N.match(/^\s*(\=)\s*(.*)/); if(K){O.opcode=K[1].toUpperCase();N=K[2];}else{K=N.match(/^\s*([\.a-zA-Z0-9-_]+)\s*(.*)/);if(K){O.opcode=K[1].toUpperCase();N=K[2];}}if(N){while(N.match(/"(.*?);(.*?)"/g)){N=N.replace(/"(.*?);(.*?)"/g,'"$1§$2"'); }var T=N.match(/^\s*([^;]*)(.*)/);if(T&&T[1].length){O.paramstring=T[1];var Y=T[1];while(Y.match(/"(.*?),(.*?)"/g)){Y=Y.replace(/"(.*?),(.*?)"/g,'"$1€$2"'); }var R=Y.match(/([0-9]+)\s*DUP\s*\((.*)\)/i);if(R){var V=parseInt(R[1]);var H="";for(var U=0;U<V;U++){H+=R[2]+",";}Y=H.substring(0,H.length-1);}var P=Y.split(/\s*,\s*/); O.params=P.map(function(Z){return z(Z.replace(/€/g,",").replace(/§/g,";"));});N=T[2].replace(/§/g,";");}}if(N){var J=N.match(/^\s*;*(.*)/);if(J){O.remark=J[1]; if(!O.remark){O.remark=" ";}N="";}}O.notparsed=N;if(O.opcode==="ORG"){O.opcode=".ORG";}if(O.opcode===".ERROR"){throw {msg:O.paramstring,s:O};}if(O.opcode===".EQU"){O.opcode="EQU"; }if(O.opcode===".ORG"){try{return O;}catch(W){throw {msg:W.message,s:O};}}if(O.opcode==="DEFB"){O.opcode="DB";return O;}if(O.opcode===".DB"){O.opcode="DB"; return O;}if(O.opcode===".DW"){O.opcode="DW";return O;}if(O.opcode==="DEFW"){O.opcode="DW";return O;}if(O.opcode==="DEFS"){O.opcode="DS";return O;}if(O.opcode==="DEFM"){O.opcode="DS"; return O;}if(O.opcode===".ALIGN"){O.opcode="ALIGN";return O;}if(O.opcode==="EQU"||O.opcode==="="||O.opcode==="IF"||O.opcode==="IFN"||O.opcode==="ENDIF"||O.opcode===".INCLUDE"||O.opcode===".INCBIN"||O.opcode===".MACRO"||O.opcode===".ENDM"||O.opcode===".BLOCK"||O.opcode===".ENDBLOCK"||O.opcode===".REPT"||O.opcode===".CPU"||O.opcode===".ENT"||O.opcode===".ENGINE"||O.opcode===".PRAGMA"||O.opcode==="END"||O.opcode===".END"||O.opcode==="BSZ"||O.opcode==="FCB"||O.opcode==="FCC"||O.opcode==="FDB"||O.opcode==="FILL"||O.opcode==="RMB"||O.opcode==="ZMB"||O.opcode===".M8"||O.opcode===".X8"||O.opcode===".M16"||O.opcode===".X16"||O.opcode===".PHASE"||O.opcode===".DEPHASE"||O.opcode==="ALIGN"||O.opcode==="DB"||O.opcode==="DS"||O.opcode==="DW"){return O; }if(!O.opcode&&O.label){return O;}var M;try{M=b.parseOpcode(O);}catch(W){throw {msg:W,s:O};}if(M!==null){return M;}if(I[O.opcode]){O.macro=O.opcode;return O; }if(!O.label&&!S){var G={line:O.line,numline:O.numline,addr:null,bytes:0};if(O.remark&&!O.opcode){return O;}if(!O.params){throw {msg:"Unrecognized instruction "+O.opcode,s:O}; }if(!O.opcode){throw {msg:"Unrecognized instruction "+O.opcode,s:O};}G.line=O.opcode+": "+O.params.join();var Q=v(G,I,true,O);if(!Q.opcode){throw {msg:"Unrecognized instruction "+O.opcode,s:O}; }return(Q);}if(S){throw {msg:"Unrecognized instruction "+X.opcode,s:O};}throw {msg:"Unrecognized instruction "+O.opcode,s:O};};var u=function(I){var N,O,Q,aa=null; var L={};var G=null;var M=null;var X=[];for(var U=0,S=I.length;U<S;U++){N=I[U].line;O=N.match(/\s*(\.[^\s]+)(.*)/);if(!O){if(G){L[G].push(I[U]);continue; }else{X.push(I[U]);}continue;}var W=O[1].toUpperCase();var T=O[2].match(/^\s*([^;]*)(.*)/);if(T&&T[1].length){Q=T[1].split(/\s*,\s*/);aa=Q.map(z);}else{aa=null; }if(W===".INCLUDE"){if(!aa[0]){throw {msg:"No file name given at line "+N.numline,s:N};}if(x[aa[0]]){throw {msg:"File "+aa[0]+" is already included elsewhere - maybe recursion at line "+N.numline,s:N}; }var K=g(aa[0]);var J=A(K.split(/\n/));J=h(J);J=n(J);var H=u(J);for(var R=0;R<H[0].length;R++){H[0][R].includedFile=aa[0];X.push(H[0][R]);}for(R in H[1]){L[R]=H[1][R]; }x[aa[0]]=K;continue;}if(W===".ENDM"){if(!G){throw {msg:"ENDM without MACRO at line "+I[U].numline,s:I[U]};}if(M){X.push({numline:I[U].numline,line:";rept unroll",addr:null,bytes:0,remark:"REPT unroll"}); for(var P=0;P<M;P++){for(var Y=0;Y<L[G].length;Y++){var Z=L[G][Y].line;X.push({numline:I[P].numline,line:Z,addr:null,bytes:0});}}}G=null;M=null;continue; }if(W===".MACRO"){if(!aa[0]){throw {msg:"Bad macro name at line "+I[U].numline,s:I[U]};}G=aa[0].toUpperCase();if(L[G]){throw {msg:"Macro redefinition at line "+I[U].numline,s:I[U]}; }L[G]=[];continue;}if(W===".REPT"){if(!aa[0]){throw {msg:"No repeat count given",s:I[U]};}M=c.evaluate(aa[0]);if(!M){throw {msg:"Bad repeat count given",s:I[U]}; }G="*REPT"+I[U].numline;if(L[G]){throw {msg:"Macro redefinition at line "+I[U].numline,s:I[U]};}L[G]=[];continue;}X.push(I[U]);}if(G){throw {msg:"MACRO "+G+" has no appropriate ENDM",s:I[U]}; }return[X,L];};var o=function(J,I){var G={line:J.line,addr:J.addr,macro:J.macro,numline:J.numline};for(var H=0;H<I.length;H++){G.line=G.line.replace("%%"+(H+1),I[H]); }return G;};var e=function(H,L){var J=[];for(var K=0;K<H.length;K++){var M=H[K];if(!M.macro){J.push(M);continue;}var G=L[M.macro];for(var I=0;I<G.length; I++){var N=v(o(G[I],M.params),L);if(M.label){N.label=M.label;}M.label="";N.remark=M.remark;N.macro=M.macro;M.macro=null;M.remark="";J.push(N);}}return J; };var w=function(H,I){b=I;if(I.endian){C=I.endian;}x={};var G=A(H.split(/\n/));G=h(G);G=n(G);var J=u(G);G=J[0].map(function(K){return v(K,J[1]);});G=e(G,J[1]); return G;};var s=function(I,L){b=L;var H=A(I.split(/\n/));H=q(H);H=h(H);H=n(H);var M=u(H);H=H.map(function(O){return v(O,M[1]);});var G="";var N,J;for(var K=0; K<H.length;K++){N=H[K];J="";if(N.remark==="EMPTYLINE"){G+="\n";continue;}if(N.label){J+=N.label;if(N.opcode!=="EQU"&&N.opcode!=="="){J+=":";}J+=" ";}while(J.length<12){J+=" "; }if(N.opcode){J+=N.opcode+" ";}while(J.length<20){J+=" ";}if(N.params){J+=N.params+" ";}if(N.remark){J+=";"+N.remark;}G+=J+"\n";}return G;};var m=function(I,W){var ae=0; var U={};if(W){U=W;}var N=null;var X,Y,L;var Q=0;var P;var ag=[];var J=0;var T;for(var ac=0,ab=I.length;ac<ab;ac++){N=I[ac];N.pass=1;N.addr=ae;U._PC=ae; if(J!==0){N.phase=J;}if(N.opcode==="ENDIF"){Q=0;continue;}if(Q){continue;}if(N.opcode==="IF"){try{P=c.evaluate(N.params[0],U);if(!P){Q=1;}}catch(af){Q=1; }continue;}if(N.opcode==="IFN"){try{P=c.evaluate(N.params[0],U);if(P){Q=1;}}catch(af){}continue;}if(N.opcode===".BLOCK"){ag.push(N.numline);var aa=ag.join("/"); U["__"+aa]=[];continue;}if(N.opcode===".ENDBLOCK"){var ah=U["__"+ag.join("/")];for(var H=0;H<ah.length;H++){U[ah[H]]=U[ag.join("/")+"/"+ah[H]];U[ag.join("/")+"/"+ah[H]]=null; }ag.pop();U.__blocks=JSON.stringify(ag);continue;}if(N.label){var G=N.label;var R=false;if(G[0]==="@"){R=true;G=G.substr(1);N.label=G;}if(ag.length>0){G=ag.join("/")+"/"+G; U["__"+ag.join("/")].push(N.label);}if(!W){if(U[G+"$"]||(R&&U[N.label]!==undefined)){throw {msg:"Redefine label "+N.label+" at line "+N.numline,s:N};}}if(U[N.label]){U[G]=U[N.label]; }else{if(R){U[G]=ae;}}U[G+"$"]=ae;U[N.label]=ae;}try{if(N.opcode===".ORG"){ae=c.evaluate(N.params[0],U);N.addr=ae;continue;}if(N.opcode===".PHASE"){var ad=c.evaluate(N.params[0],U); N.addr=ae;J=ad-ae;ae=ad;continue;}if(N.opcode===".DEPHASE"){N.addr=ae;ae=ae-J;J=0;continue;}if(N.opcode==="EQU"){try{U[N.label]=c.evaluate(N.params[0],U); }catch(af){U[N.label]=null;}continue;}if(N.opcode==="="){U[N.label]=c.evaluate(N.params[0],U);continue;}}catch(af){throw {msg:af.message,s:N};}if(N.opcode==="DB"||N.opcode==="FCB"){N.bytes=0; for(Y=0;Y<N.params.length;Y++){try{X=c.evaluate(N.params[Y],U);if(typeof(X)==="number"){N.bytes++;continue;}if(typeof(X)==="string"){N.bytes+=X.length; continue;}}catch(af){N.bytes++;}}}if(N.opcode==="DS"||N.opcode==="RMB"){T=c.evaluate(N.params[0],U);if(N.params.length===2){X=c.evaluate(N.params[1],U); if(typeof X==="string"){X=X.charCodeAt(0);}N.bytes=T;N.lens=[];for(L=0;L<T;L++){N.lens[L]=X;}}ae=ae+T;continue;}if(N.opcode==="ALIGN"){var Z=c.evaluate(N.params[0],U); ae=ae+((ae%Z>0)?(Z-ae%Z):0);continue;}if(N.opcode==="FILL"){T=c.evaluate(N.params[1],U);X=c.evaluate(N.params[0],U);if(typeof X==="string"){X=X.charCodeAt(0); }N.bytes=T;N.lens=[];for(L=0;L<T;L++){N.lens[L]=X;}ae=ae+T;continue;}if(N.opcode==="BSZ"||N.opcode==="ZMB"){T=c.evaluate(N.params[0],U);N.bytes=T;N.lens=[]; for(L=0;L<T;L++){N.lens[L]=0;}ae=ae+T;continue;}if(N.opcode==="DW"||N.opcode==="FDB"){N.bytes=0;for(Y=0;Y<N.params.length;Y++){try{X=c.evaluate(N.params[Y],U); if(typeof(X)==="number"){N.bytes+=2;continue;}}catch(af){N.bytes+=2;}}}if(N.opcode===".INCBIN"){if(!N.params[0]){throw {msg:"No file name given at line "+N.numline,s:N}; }var K=g(N.params[0],true);if(!K){throw {msg:"Cannot find file "+N.params[0]+" for incbin",s:N};}var M=new Uint8Array(K);N.bytes=0;N.lens=[];for(L=0;L<M.length; L++){var S=M[L];if(S>255){N.lens[N.bytes++]=S>>8;}N.lens[N.bytes++]=S%256;}ae=ae+N.bytes;continue;}if(N.opcode===".M16"){U.__AX=16;continue;}if(N.opcode===".M8"){U.__AX=8; continue;}if(N.opcode===".X16"){U.__MX=16;continue;}if(N.opcode===".X8"){U.__MX=8;continue;}var O=b.parseOpcode(I[ac],U);if(O){N=O;}ae+=N.bytes;}return[I,U]; };var t=function(I,H){var G=I.toString(16);while(G.length<H){G="0"+G;}return G.toUpperCase();};var f=function(G){return t(G&255,2);};var d=function(G){return t(G,4); };var F=function(G){if(typeof(G)=="string"){return G.charCodeAt(0)&255;}else{return G&255;}};var k=function(R){var I=R[0];var Q=R[1];var O=null,H=null,J,U,K; var G=[];var S,T;for(var N=0,M=I.length;N<M;N++){try{O=I[N];O.pass=2;Q._PC=O.addr;if(O.opcode===".BLOCK"){G.push(O.numline);S=Q["__"+G.join("/")];for(T=0; T<S.length;T++){Q[G.join("/")+"/"+S[T]]=Q[S[T]];Q[S[T]]=Q[G.join("/")+"/"+S[T]+"$"];}continue;}if(O.opcode===".ENDBLOCK"){S=Q["__"+G.join("/")];for(T=0; T<S.length;T++){Q[S[T]]=Q[G.join("/")+"/"+S[T]];if(Q[S[T]]===undefined){delete (Q[S[T]]);}Q[G.join("/")+"/"+S[T]]=null;}G.pop();continue;}if(O.opcode===".ENT"){ASM.ENT=c.evaluate(O.params[0],Q); continue;}if(O.opcode===".ENGINE"){ASM.ENGINE=O.params[0];continue;}if(O.opcode===".PRAGMA"){ASM.PRAGMAS=ASM.PRAGMAS||[];ASM.PRAGMAS.push(O.params[0].toUpperCase()); continue;}if(O.opcode==="EQU"){Q[O.label]=c.evaluate(O.params[0],Q);continue;}if(O.opcode==="DB"||O.opcode==="FCB"){U=0;O.lens=[];for(K=0;K<O.params.length; K++){J=c.evaluate(O.params[K],Q);if(typeof(J)==="number"){O.lens[U++]=Math.floor(J%256);continue;}if(typeof(J)==="string"){for(var L=0;L<J.length;L++){O.lens[U++]=J.charCodeAt(L); }continue;}}continue;}if(O.opcode==="DW"||O.opcode==="FDB"){U=0;O.lens=[];for(K=0;K<O.params.length;K++){J=c.evaluate(O.params[K],Q);if(typeof(J)==="number"){if(C){O.lens[U++]=Math.floor(J/256); O.lens[U++]=Math.floor(J%256);}else{O.lens[U++]=Math.floor(J%256);O.lens[U++]=Math.floor(J/256);}continue;}}continue;}if(O.lens&&O.lens[1]&&typeof(O.lens[1])==="function"){if(O.lens[2]==="addr24"){H=O.lens[1](Q); if(C){O.lens[3]=Math.floor(H%256);O.lens[2]=Math.floor((H>>8)%256);O.lens[1]=Math.floor((H>>16)&255);}else{O.lens[1]=Math.floor(H%256);O.lens[2]=Math.floor((H>>8)%256); O.lens[3]=Math.floor((H>>16)&255);}}else{if(O.lens[2]===null){H=O.lens[1](Q);if(typeof(H)=="string"){if(C){O.lens[1]=H.charCodeAt(0)&255;O.lens[2]=H.charCodeAt(1)&255; }else{O.lens[2]=H.charCodeAt(0)&255;O.lens[1]=H.charCodeAt(1)&255;}}else{if(C){O.lens[2]=Math.floor(H%256);O.lens[1]=Math.floor(H/256);}else{O.lens[1]=Math.floor(H%256); O.lens[2]=Math.floor(H/256);}}}else{H=O.lens[1](Q);O.lens[1]=F(H);}}}if(O.lens&&O.lens.length>2&&typeof(O.lens[2])=="function"){H=O.lens[2](Q);if(O.lens[3]===null){H=O.lens[2](Q); if(typeof(H)=="string"){if(C){O.lens[2]=H.charCodeAt(0)&255;O.lens[3]=H.charCodeAt(1)&255;}else{O.lens[3]=H.charCodeAt(0)&255;O.lens[2]=H.charCodeAt(1)&255; }}else{if(C){O.lens[3]=H&255;O.lens[2]=H>>8;}else{O.lens[2]=H&255;O.lens[3]=H>>8;}}}else{O.lens[2]=F(H);}}if(O.lens&&O.lens.length>3&&typeof(O.lens[3])=="function"){H=O.lens[3](Q); if(O.lens[4]===null){H=O.lens[3](Q);if(typeof(H)=="string"){if(C){O.lens[3]=H.charCodeAt(0)&255;O.lens[4]=H.charCodeAt(1)&255;}else{O.lens[4]=H.charCodeAt(0)&255; O.lens[3]=H.charCodeAt(1)&255;}}else{if(C){O.lens[4]=H&255;O.lens[3]=H>>8;}else{O.lens[3]=H&255;O.lens[4]=H>>8;}}}else{O.lens[3]=F(H);}}if(O.lens&&O.lens.length>1){if(typeof(O.lens[1])=="string"){O.lens[1]=O.lens[1].charCodeAt(0); }if(isNaN(O.lens[1])){throw {message:"param out of bounds, NaN"};}if(O.lens[1]>255||O.lens[1]<-128){throw {message:"param out of bounds - "+O.lens[1]}; }if(O.lens[1]<0){O.lens[1]=256+O.lens[1];}}}catch(P){throw {msg:P.message,s:O,e:P};}}return[I,Q];};var p=function(H,N,Q,P){var O;var M;var K="";if(P===undefined){P=false; }for(var L=0,J=H.length;L<J;L++){M=H[L];O="";if(M.macro&&!Q){O+=" **MACRO UNROLL - "+M.macro+"\n";}if(M.addr!==undefined){O+=d(M.addr);if(M.phase){O+=" @"+d(M.addr-M.phase); }O+=(P?" ":" ");}if(M.lens){for(var G=0;G<M.lens.length;G++){O+=f(M.lens[G])+" ";}}if(!P){while(O.length<20){O+=" ";}}if(P){while(O.length<15){O+=" "; }}if(M.label){O+=M.label+": ";}if(!P){while(O.length<30){O+=" ";}}if(P){while(O.length<22){O+=" ";}}if(M.opcode){O+=M.opcode+(P?" ":" ");}if(M.params){O+=M.params+(P?" ":" "); }if(M.remark){O+=";"+M.remark;}K+=O+"\n";}if(Q){return K;}K+="\n\n";for(var I in N){if(N[I]===null){continue;}if(I[0]==="_"&&I[1]==="_"){continue;}if(I[I.length-1]==="$"){continue; }O="";O+=I;while(O.length<12){O+=" ";}O+=d(N[I]);K+=O+"\n";}return K;};var r=function(H,N,Q,P){var M=function(T){T+="";for(var R in N){if(N[R]===null){continue; }if(R[0]==="_"&&R[1]==="_"){continue;}if(R[R.length-1]==="$"){continue;}var S=new RegExp(R,"i");if(T.match(S)){return'<a href="#LBL'+R+'">'+T+"</a>";}}return T; };var O;var L;var J="<html><head><meta charset=utf-8><body><table>";if(P===undefined){P=false;}for(var K=0,I=H.length;K<I;K++){L=H[K];O='<tr id="ln'+L.numline+'">'; if(L.macro&&!Q){O+=" **MACRO UNROLL - "+L.macro+"\n";}if(L.addr!==undefined){O+='<td><a name="ADDR'+d(L.addr)+'">'+d(L.addr)+"</a>";if(L.phase){O+="</td><td>"+d(L.addr-L.phase); }else{O+="</td><td>";}O+="</td>";}else{O+="<td></td><td></td>";}if(L.lens){O+="<td>";for(var G=0;G<L.lens.length;G++){O+=f(L.lens[G])+" ";}O+="</td>";}else{O+="<td></td>"; }if(L.label){O+='<td><a name="LBL'+L.label+'">'+L.label+"</a></td>";}else{O+="<td></td>";}if(L.opcode){O+="<td>"+L.opcode+"</td>";}else{O+="<td></td>"; }if(L.params){O+="<td>"+L.params.map(M)+"</td>";}else{O+="<td></td>";}if(L.remark){O+="<td>;"+L.remark+"</td>";}else{O+="<td></td>";}J+=O+"</tr>\n";}J+="</table>"; return J;};var i=function(G){var L;var I=[];for(var J=0,H=G.length;J<H;J++){L=G[J];if(L.lens){for(var K=0;K<L.lens.length;K++){I[L.addr+K]=J+1;}}}return I; };var B=function(L,H){var J=":";var G=H.length;var K=0;J+=f(G);J+=d(L);J+="00";K=G+Math.floor(L/256)+Math.floor(L%256);for(var I=0;I<H.length;I++){J+=f(H[I]); K+=H[I];}J+=f(256-(K%256));return J;};var a=function(N,L,M){var G=0;var H=[];var K=16;if(M>1){K=M;}var I="";for(var J=0;J<L.length;J++){H.push(L[J]);if(++G===K){I+=B(N,H)+"\n"; H=[];G=0;N+=K;}}if(H.length){I+=B(N,H)+"\n";}return I;};var E=function(J){var N;var P=null;var O=0;var G=[];var L="";var H=16;for(var M=0,K=J.length;M<K; M++){N=J[M];if(N.opcode===".PRAGMA"){if(N.params.length===2&&N.params[0].toUpperCase()==="HEXLEN"){H=parseInt(N.params[1]);if(H<1||H>64){H=16;}}}var Q=N.addr; if(N.phase){Q-=N.phase;}if(Q!==undefined&&O===0){P=Q;}if(Q!==(P+O)){if(O){L+=a(P,G,H);}P=Q;O=0;G=[];}if(N.lens){for(var I=0;I<N.lens.length;I++){G.push(N.lens[I]); }O+=N.lens.length;continue;}}if(G.length){L+=a(P,G,H);}L+=":00000001FF";return L;};var y=function(L,H){var J="S1";var G=H.length;var K=0;J+=f(G+3);J+=d(L); K=G+3+Math.floor(L/256)+Math.floor(L%256);for(var I=0;I<H.length;I++){J+=f(H[I]);K+=H[I];}J+=f(256-(K%256));return J;};var l=function(M,L){var G=0;var H=[]; var K=16;var I="";for(var J=0;J<L.length;J++){H.push(L[J]);if(++G===K){I+=y(M,H)+"\n";H=[];G=0;M+=K;}}if(H.length){I+=y(M,H)+"\n";}return I;};var j=function(I){var M; var Q=null;var N=0;var G=[];var J="";for(var L=0,K=I.length;L<K;L++){M=I[L];var R=M.addr;if(M.phase){R-=M.phase;}if(R!==undefined&&N===0){Q=R;}if(R!==(Q+N)){if(N){J+=l(Q,G); }Q=R;N=0;G=[];}if(M.lens){for(var H=0;H<M.lens.length;H++){G.push(M.lens[H]);}N+=M.lens.length;continue;}}if(G.length){J+=l(Q,G);}var P=ASM.ENT||0;var O=3+Math.floor(P/256)+Math.floor(P%256); J+="S903"+d(P)+f(255-(O%256));return J;};var D=function(G){var M=new Uint8Array(65536);var L,K;for(var I=0,H=G.length;I<H;I++){L=G[I];K=L.addr;if(L.lens){for(var J=0; J<L.lens.length;J++){M[K++]=L.lens[J];}}}return M;};ASM={parse:w,pass1:m,pass2:k,parseLine:v,ENT:null,compile:function(K,I){try{ASM.ENT=null;ASM.ENGINE=null; ASM.PRAGMAS=[];var G=ASM.parse(K,I);var H=ASM.pass1(G);H=ASM.pass1(H[0],H[1]);H=ASM.pass1(H[0],H[1]);H=ASM.pass1(H[0],H[1]);H=ASM.pass1(H[0],H[1]);H=ASM.pass1(H[0],H[1]); H=ASM.pass1(H[0],H[1]);H=ASM.pass2(H);return[null,H];}catch(J){return[J,null];}},compileAsync:function(L,J,G){try{var H=ASM.parse(L,J);var I=ASM.pass1(H); I=ASM.pass2(I);G(null,I);}catch(K){G(K,null);}},lst:p,html:r,hex:E,srec:j,linemap:i,beautify:s,buff:D,fileGet:function(G){g=G;}};return ASM;}));