asm80
Version:
ASM80 stand-alone assembler
21 lines (17 loc) • 44.1 kB
JavaScript
var Parser = require("./parser.js").Parser;
var Z80={set:{DEC:[-1,-1,-1,-1,5,-1,11,-1,-1,-1,-1,-1,-1,-1],INC:[-1,-1,-1,-1,4,-1,3,-1,-1,-1,-1,-1,-1,-1],AND:[-1,-1,-1,-1,160,230,-1,-1,-1,-1,-1,-1,-1,-1],OR:[-1,-1,-1,-1,176,246,-1,-1,-1,-1,-1,-1,-1,-1],XOR:[-1,-1,-1,-1,168,238,-1,-1,-1,-1,-1,-1,-1,-1],SUB:[-1,-1,-1,-1,144,214,-1,-1,-1,-1,-1,-1,-1,-1],CP:[-1,-1,-1,-1,184,254,-1,-1,-1,-1,-1,-1,-1,-1],SLA:[-1,-1,-1,-1,52e3,-1,-1,-1,-1,-1,-1,-1,-1,-1],SRA:[-1,-1,-1,-1,52008,-1,-1,-1,-1,-1,-1,-1,-1,-1],SRL:[-1,-1,-1,-1,52024,-1,-1,-1,-1,-1,-1,-1,-1,-1],RR:[-1,-1,-1,-1,51992,-1,-1,-1,-1,-1,-1,-1,-1,-1],RL:[-1,-1,-1,-1,51984,-1,-1,-1,-1,-1,-1,-1,-1,-1],RRC:[-1,-1,-1,-1,51976,-1,-1,-1,-1,-1,-1,-1,-1,-1],RLC:[-1,-1,-1,-1,51968,-1,-1,-1,-1,-1,-1,-1,-1,-1],POP:[-1,-1,-1,-1,-1,-1,-1,193,-1,-1,-1,-1,-1,-1],PUSH:[-1,-1,-1,-1,-1,-1,-1,197,-1,-1,-1,-1,-1,-1],RET:[201,-1,-1,-1,-1,-1,-1,-1,192,-1,-1,-1,-1,-1],IM:[-1,-1,-1,-1,-1,-1,-1,-1,-1,60742,-1,-1,-1,-1],RST:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,199,-1,-1,-1],CALL:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,205,-1],JP:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,195,233],DJNZ:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,16,-1,-1],JR:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,24,-1,-1],NOP:[0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],CCF:[63,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],CPD:[60841,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],CPDR:[60857,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],CPI:[60833,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],CPIR:[60849,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],CPL:[47,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],DAA:[39,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],DI:[243,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],EI:[251,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],EXX:[217,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],IND:[60842,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],INDR:[60858,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],INI:[60834,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],INIR:[60850,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],LDD:[60840,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],LDDR:[60856,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],LDI:[60832,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],LDIR:[60848,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],OUTD:[60843,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],OTDR:[60859,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],OUTI:[60835,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],OTIR:[60851,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],HALT:[118,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],NEG:[60740,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],RETI:[60749,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],RETN:[60741,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],RLA:[23,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],RLCA:[7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],RLD:[60783,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],RRA:[31,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],RRCA:[15,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],RRD:[60775,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],SCF:[55,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],EX:[0],LD:[0],ADC:[136,206,60746],ADD:[128,198,9,9],SBC:[152,222,60738],BIT:[-1,-1,-1,-1,52032],RES:[-1,-1,-1,-1,52096],SET:[-1,-1,-1,-1,52160],CAL2:[-1,-1,-1,-1,-1,196],JP2:[-1,-1,-1,-1,-1,194],JR2:[-1,-1,-1,-1,-1,32],IN:[60736,219,-1,-1,-1,-1],OUT:[60737,211,-1,-1,-1,-1]},R8:{DEC:3,INC:3},R16:{DEC:4,INC:4,POP:4,PUSH:4},parseOpcode:function(e){var r,t,s,n,a=function(e){var r=["B","C","D","E","H","L","~","A"].indexOf(e.toUpperCase());return"(HL)"==e.toUpperCase()?6:r},u=function(e){return["B","C","D","E","H","L","F","A"].indexOf(e.toUpperCase())},l=function(e){var r=["BC","DE","HL","SP"].indexOf(e.toUpperCase());return r},p=function(e){var r=["BC","DE","IX","SP"].indexOf(e.toUpperCase());return r},o=function(e){var r=["BC","DE","IY","SP"].indexOf(e.toUpperCase());return r},C=function(e){var r=["BC","DE","HL","AF"].indexOf(e.toUpperCase());return r},i=function(e){var r=["NZ","Z","NC","C","PO","PE","P","M"].indexOf(e.toUpperCase());return r},f=function(e){return"("==e[0]&&")"==e[e.length-1]?e.substr(1,e.length-2):null},U=function(e){var r,t,s=e.substr(0,4).toUpperCase();return"(IX+"==s&&(r=e.substr(4,e.length-5),t=221,e="(HL)"),"(IY+"==s&&(r=e.substr(4,e.length-5),t=253,e="(HL)"),"IX"==s&&(t=221,e="HL"),"IY"==s&&(t=253,e="HL"),"IXL"==s&&(t=221,e="L"),"IXH"==s&&(t=221,e="H"),"IYL"==s&&(t=253,e="L"),"IYH"==s&&(t=253,e="H"),[e,r,t]},c=Z80.set[e.opcode],b=-1,y=1,P=[],v=null,R=null;if(c){if(e.params&&0!==e.params.length){if(1==e.params.length){var I=e.params[0];if(n=U(I),I=n[0],R=n[1],v=n[2],c[11]>0)return e.bytes=2,e.lens=[],e.lens[0]=c[11],e.lens[1]=function(e){var r=Parser.evaluate(I,e),t=e._PC+2,s=r-t;if(s>127)throw"Target is out of relative jump reach";if(s<-128)throw"Target is out of relative jump reach";return s<0&&(s=256+s),s},e;if(c[12]>0)return e.lens=[],"(HL)"==I.toUpperCase()&&c[13]>0?(e.bytes=1,e.lens[0]=c[13],e):"(IX)"==I.toUpperCase()&&c[13]>0?(e.bytes=2,e.lens[0]=221,e.lens[1]=c[13],e):"(IY)"==I.toUpperCase()&&c[13]>0?(e.bytes=2,e.lens[0]=253,e.lens[1]=c[13],e):(e.bytes=3,e.lens[0]=c[12],e.lens[1]=function(e){return Parser.evaluate(I,e)},e.lens[2]=null,e);if(c[9]>0){switch(e.bytes=2,e.lens=[],e.lens[0]=237,s=Parser.evaluate(I)){case 0:return e.lens[1]=70,e;case 1:return e.lens[1]=86,e;case 2:return e.lens[1]=94,e}throw"Invalid interrupt mode"}if(c[10]>0){switch(e.bytes=1,e.lens=[],s=Parser.evaluate(I)){case 0:return e.lens[0]=199,e;case 8:return e.lens[0]=207,e;case 16:return e.lens[0]=215,e;case 24:return e.lens[0]=223,e;case 32:return e.lens[0]=231,e;case 40:return e.lens[0]=239,e;case 48:return e.lens[0]=247,e;case 56:return e.lens[0]=255,e}throw"Invalid RST"}r=i(I),r>=0&&c[8]>0?(b=c[8],b>0&&(b+=r<<3)):(r=l(I),r>=0&&c[6]>=0?(b=c[6],b>0&&(b+=Z80.R16[e.opcode]?r<<Z80.R16[e.opcode]:r)):(r=C(I),r>=0&&c[7]>=0?(b=c[7],b>0&&(b+=Z80.R16[e.opcode]?r<<Z80.R16[e.opcode]:r)):(r=a(I),r>=0&&c[4]>0?(b=c[4],b>0&&(b+=Z80.R8[e.opcode]?r<<Z80.R8[e.opcode]:r)):(b=c[5],t=function(e){return Parser.evaluate(I,e)}))))}else if(2==e.params.length){var L=e.params[0],D=e.params[1];if("EX"==e.opcode)return"DE"==L.toUpperCase()&&"HL"==D.toUpperCase()?(e.lens=[235],e.bytes=1,e):"AF"==L.toUpperCase()&&"AF'"==D.toUpperCase()?(e.lens=[8],e.bytes=1,e):"(SP)"==L.toUpperCase()&&"HL"==D.toUpperCase()?(e.lens=[227],e.bytes=1,e):"(SP)"==L.toUpperCase()&&"IX"==D.toUpperCase()?(e.lens=[221,227],e.bytes=2,e):"(SP)"==L.toUpperCase()&&"IY"==D.toUpperCase()?(e.lens=[253,227],e.bytes=2,e):null;if("CALL"==e.opcode)return c=Z80.set.CAL2,r=i(L),r>=0&&c[5]>0&&(b=c[5],b>0)?(b+=r<<3,e.bytes=3,e.lens=[],e.lens[0]=b,e.lens[1]=function(e){return Parser.evaluate(D,e)},e.lens[2]=null,e):null;if("JP"==e.opcode)return c=Z80.set.JP2,r=i(L),r>=0&&c[5]>0&&(b=c[5],b>0)?(b+=r<<3,e.bytes=3,e.lens=[],e.lens[0]=b,e.lens[1]=function(e){return Parser.evaluate(D,e)},e.lens[2]=null,e):null;if("JR"==e.opcode)return c=Z80.set.JR2,r=i(L),r>=0&&r<4&&c[5]>0&&(b=c[5],b>0)?(b+=r<<3,e.bytes=2,e.lens=[],e.lens[0]=b,e.lens[1]=function(e){var r=Parser.evaluate(D,e),t=e._PC+2,s=r-t;if(s>127)throw"Target is out of relative jump reach";if(s<-128)throw"Target is out of relative jump reach";return s<0&&(s=256+s),s},e):null;if("IN"==e.opcode)return"(C)"==D.toUpperCase()&&(r=u(L),r>=0&&c[0])?(e.lens=[237,64+(r<<3)],e.bytes=2,e):"A"==L.toUpperCase()?(e.lens=[c[1]],e.lens[1]=function(e){return Parser.evaluate(D,e)},e.bytes=2,e):null;if("OUT"==e.opcode)return"(C)"==L.toUpperCase()&&(r=u(D),r>=0&&c[0])?(e.lens=[237,65+(r<<3)],e.bytes=2,e):"A"==D.toUpperCase()?(e.lens=[c[1]],e.lens[1]=function(e){return Parser.evaluate(L,e)},e.bytes=2,e):null;if("LD"==e.opcode){if("A"==L.toUpperCase()&&"R"==D.toUpperCase())return e.bytes=2,e.lens=[237,95],e;if("A"==L.toUpperCase()&&"I"==D.toUpperCase())return e.bytes=2,e.lens=[237,87],e;if("R"==L.toUpperCase()&&"A"==D.toUpperCase())return e.bytes=2,e.lens=[237,79],e;if("I"==L.toUpperCase()&&"A"==D.toUpperCase())return e.bytes=2,e.lens=[237,71],e;if("HL"==L.toUpperCase()&&"DE"==D.toUpperCase())return e.bytes=2,e.lens=[98,106],e;if("HL"==L.toUpperCase()&&"BC"==D.toUpperCase())return e.bytes=2,e.lens=[96,97],e;if("DE"==L.toUpperCase()&&"HL"==D.toUpperCase())return e.bytes=2,e.lens=[84,93],e;if("DE"==L.toUpperCase()&&"BC"==D.toUpperCase())return e.bytes=2,e.lens=[80,81],e;if("BC"==L.toUpperCase()&&"HL"==D.toUpperCase())return e.bytes=2,e.lens=[68,77],e;if("BC"==L.toUpperCase()&&"DE"==D.toUpperCase())return e.bytes=2,e.lens=[66,75],e;var d=U(L);L=d[0],R=d[1],v=d[2];var A=U(D);if(D=A[0],A[1]&&R)throw"Invalid parameters - two indexed";if(A[1]&&(R=A[1]),A[2]&&v)throw"Invalid parameters - two prefixed";A[2]&&(v=A[2]);var E=a(L),h=a(D);if(P=[],E>=0&&h>=0&&(e.bytes=1,P[0]=64+(E<<3)+h),"A"==L.toUpperCase()&&"(BC)"==D.toUpperCase())return e.bytes=1,e.lens=[10],e;if("A"==L.toUpperCase()&&"(DE)"==D.toUpperCase())return e.bytes=1,e.lens=[26],e;if("A"==L.toUpperCase()&&f(D)&&0===e.bytes)return e.bytes=3,e.lens=[58,function(e){return Parser.evaluate(f(D),e)},null],e;if("(BC)"==L.toUpperCase()&&"A"==D.toUpperCase())return e.bytes=1,e.lens=[2],e;if("(DE)"==L.toUpperCase()&&"A"==D.toUpperCase())return e.bytes=1,e.lens=[18],e;if(f(L)&&"A"==D.toUpperCase()&&0===e.bytes)return e.bytes=3,e.lens=[50,function(e){return Parser.evaluate(f(L),e)},null],e;if(7==E&&h<0&&"("==D[0])return e.bytes=3,P[0]=58,P[1]=function(e){return Parser.evaluate(D,e)},P[2]=null,e;if(E>=0&&h<0&&(e.bytes=2,P[0]=6+(E<<3),P[1]=function(e){return Parser.evaluate(D,e)}),0===e.bytes){E=l(L),h=l(D);var H=f(L),O=f(D);E>=0&&!O&&(e.bytes=3,P=[1+(E<<4),function(e){return Parser.evaluate(D,e)},null]),E>=0&&O&&(e.bytes=[4,4,3,4][E],P=[237,75+(E<<4),function(e){return Parser.evaluate(O,e)},null],3==e.bytes&&(P=[42,function(e){return Parser.evaluate(O,e)},null])),H&&h>=0&&(e.bytes=[4,4,3,4][h],P=[237,67+(h<<4),function(e){return Parser.evaluate(H,e)},null],3==e.bytes&&(P=[34,function(e){return Parser.evaluate(H,e)},null])),3==E&&2==h&&(e.bytes=1,P=[249])}return P.length?(v&&(P.unshift(v),e.bytes++),R&&(3==e.bytes&&(P[3]=P[2],P[2]=Parser.evaluate(R),e.bytes=4),2==e.bytes&&(P[2]=Parser.evaluate(R),e.bytes=3)),e.lens=P,e):null}if(c[4]>=0){var S=parseInt(L,10);n=U(D),D=n[0],R=n[1],v=n[2],r=a(D),b=c[4]+8*S+r}"A"==L.toUpperCase()&&(n=U(D),D=n[0],R=n[1],v=n[2],(r=a(D))>=0?b=c[0]+r:(b=c[1],t=function(e){return Parser.evaluate(D,e)})),"IX"==L.toUpperCase()&&(r=p(D))>=0&&(b=c[2]+(r<<4),v=221),"IY"==L.toUpperCase()&&(r=o(D))>=0&&(b=c[2]+(r<<4),v=253),"HL"==L.toUpperCase()&&(r=l(D))>=0&&(b=c[2]+(r<<4))}}else b=c[0];if(b<0)throw"Bad addressing mode at line "+e.numline;return b>255?(y++,P[0]=(65280&b)>>8,P[1]=255&b):P[0]=255&b,v&&(P.unshift(v),y++),R&&(3==y&&(P[3]=P[2],P[2]=Parser.evaluate(R),y=4),2==y&&(P[2]=Parser.evaluate(R),y=3)),t&&(P.push(t),y++),e.lens=P,e.bytes=y,e}return null}};var I8080={set:{RST:{o:199,t:"RST"},LDA:{o:58,t:"IW"},STA:{o:50,t:"IW"},LDAX:{o:10,t:"BD"},STAX:{o:2,t:"BD"},LHLD:{o:42,t:"IW"},SHLD:{o:34,t:"IW"},JMP:{o:195,t:"IW"},JNZ:{o:194,t:"IW"},JZ:{o:202,t:"IW"},JNC:{o:210,t:"IW"},JC:{o:218,t:"IW"},JPO:{o:226,t:"IW"},JPE:{o:234,t:"IW"},JP:{o:242,t:"IW"},JM:{o:250,t:"IW"},JNK:{o:221,t:"IW"},JK:{o:253,t:"IW"},CALL:{o:205,t:"IW"},CNZ:{o:196,t:"IW"},CZ:{o:204,t:"IW"},CNC:{o:212,t:"IW"},CC:{o:220,t:"IW"},CPO:{o:228,t:"IW"},CPE:{o:236,t:"IW"},CP:{o:244,t:"IW"},CM:{o:252,t:"IW"},LXI:{o:1,t:"RPW"},DAD:{o:9,t:"RPWD"},INX:{o:3,t:"RPWD"},DCX:{o:11,t:"RPWD"},PUSH:{o:197,t:"RQW"},POP:{o:193,t:"RQW"},MVI:{o:6,t:"RB"},ADI:{o:198,t:"B"},ACI:{o:206,t:"B"},SUI:{o:214,t:"B"},SBI:{o:222,t:"B"},ANI:{o:230,t:"B"},XRI:{o:238,t:"B"},ORI:{o:246,t:"B"},CPI:{o:254,t:"B"},INR:{o:4,t:"RR"},DCR:{o:5,t:"RR"},MOV:{o:64,t:"RRR"},HLT:{o:118,t:"0"},NOP:{o:0,t:"0"},IN:{o:219,t:"B"},OUT:{o:211,t:"B"},RIM:{o:32,t:"0"},SIM:{o:48,t:"0"},ADD:{o:128,t:"RR0"},ADC:{o:136,t:"RR0"},SUB:{o:144,t:"RR0"},SBB:{o:152,t:"RR0"},ANA:{o:160,t:"RR0"},XRA:{o:168,t:"RR0"},ORA:{o:176,t:"RR0"},CMP:{o:184,t:"RR0"},EI:{o:251,t:"0"},DI:{o:243,t:"0"},SPHL:{o:249,t:"0"},XCHG:{o:235,t:"0"},XTHL:{o:227,t:"0"},DAA:{o:39,t:"0"},CMA:{o:47,t:"0"},STC:{o:55,t:"0"},CMC:{o:63,t:"0"},RLC:{o:7,t:"0"},RRC:{o:15,t:"0"},RAL:{o:23,t:"0"},RAR:{o:31,t:"0"},RRHL:{o:16,t:"0"},RLDE:{o:24,t:"0"},PCHL:{o:233,t:"0"},DSUB:{o:8,t:"0"},RSTV:{o:203,t:"0"},RET:{o:201,t:"0"},RNZ:{o:192,t:"0"},RZ:{o:200,t:"0"},RNC:{o:208,t:"0"},RC:{o:216,t:"0"},RPO:{o:224,t:"0"},RPE:{o:232,t:"0"},RP:{o:240,t:"0"},RM:{o:248,t:"0"}},lens:{R:function(t){return"BCDEHLMA".indexOf(t.toUpperCase())},RDD:function(t){return"BDHSP".indexOf(t.toUpperCase())},RBD:function(t){return"BD".indexOf(t.toUpperCase())},RQQ:function(t){return"BDHPSW".indexOf(t.toUpperCase())},RB:function(t,o){var n=this.R(o[0]);if(n<0)throw"Unknown register "+o[0];return n<<=3,[n|t,function(t){return Parser.evaluate(o[1],t)}]},B:function(t,o){return[t,function(t){return Parser.evaluate(o[0],t)}]},RR:function(t,o){var n=this.R(o[0]);if(n<0)throw"Unknown register "+o[0];return n<<=3,[n|t]},RR0:function(t,o){var n=this.R(o[0]);if(n<0)throw"Unknown register "+o[0];return[n|t]},RRR:function(t,o){var n=this.R(o[0]);if(n<0)throw"Unknown register "+o[0];var r=this.R(o[1]);if(r<0)throw"Unknown register "+o[1];return n<<=3,[n|r|t]},RPW:function(t,o){var n=this.RDD(o[0]);if(n<0||n>3)throw"Unknown register "+o[0];return n<<=4,[n|t,function(t){return Parser.evaluate(o[1],t)},null]},RPWD:function(t,o){var n=this.RDD(o[0]);if(n<0||n>3)throw"Unknown register "+o[0];return n<<=4,[n|t]},BD:function(t,o){var n=this.RBD(o[0]);if(n<0||n>1)throw"Unknown register "+o[0];return n<<=4,[n|t]},RQW:function(t,o){var n=this.RQQ(o[0]);if(n<0||n>3)throw"Unknown register "+o[0];return n<<=4,[n|t]},IW:function(t,o){return[t,function(t){return Parser.evaluate(o[0],t)},null]},RST:function(t,o){var n=parseInt(o[0],10);return[t|n<<3]},0:function(t,o){return[t]}},parseOpcode:function(t){var o=I8080.set[t.opcode];if(o){var n=o.t,r=I8080.lens[n](o.o,t.params);return t.bytes=r.length,t.lens=r,t.resolve=r.reduce(function(t,o){return"function"==typeof o?t+1:t},0),t}return null}};var C6502={set:{SLO:[-1,-1,-1,15,31,27,7,23,-1,-1,3,19,-1],RLA:[-1,-1,-1,47,63,59,39,55,-1,-1,35,51,-1],SRE:[-1,-1,-1,79,95,91,71,87,-1,-1,67,83,-1],RRA:[-1,-1,-1,111,127,123,103,119,-1,-1,99,115,-1],SAX:[-1,-1,-1,143,-1,-1,135,-1,151,-1,131,-1,-1],LAX:[-1,-1,171,175,-1,191,167,-1,183,-1,163,179,-1],DCP:[-1,-1,-1,207,223,219,199,215,-1,-1,195,211,-1],ISC:[-1,-1,-1,239,255,251,231,247,-1,-1,227,243,-1],ANC:[-1,-1,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],ALR:[-1,-1,75,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],ARR:[-1,-1,107,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],XAA:[-1,-1,139,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],AXS:[-1,-1,203,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],AHX:[-1,-1,-1,-1,-1,159,-1,-1,-1,-1,-1,147,-1],SHY:[-1,-1,-1,-1,156,-1,-1,-1,-1,-1,-1,-1,-1],SHX:[-1,-1,-1,-1,-1,158,-1,-1,-1,-1,-1,-1,-1],TAS:[-1,-1,-1,-1,-1,155,-1,-1,-1,-1,-1,-1,-1],LAS:[-1,-1,-1,-1,-1,187,-1,-1,-1,-1,-1,-1,-1],ADC:[-1,-1,105,109,125,121,101,117,-1,-1,97,113,-1],AND:[-1,-1,41,45,61,57,37,53,-1,-1,33,49,-1],ASL:[-1,10,-1,14,30,-1,6,22,-1,-1,-1,-1,-1],BCC:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,144],BCS:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,176],BEQ:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,240],BIT:[-1,-1,-1,44,-1,-1,36,-1,-1,-1,-1,-1,-1],BMI:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48],BNE:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,208],BPL:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,16],BRK:[0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],BVC:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80],BVS:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,112],CLC:[24,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],CLD:[216,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],CLI:[88,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],CLV:[184,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],CMP:[-1,-1,201,205,221,217,197,213,-1,-1,193,209,-1],CPX:[-1,-1,224,236,-1,-1,228,-1,-1,-1,-1,-1,-1],CPY:[-1,-1,192,204,-1,-1,196,-1,-1,-1,-1,-1,-1],DEC:[-1,-1,-1,206,222,-1,198,214,-1,-1,-1,-1,-1],DEX:[202,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],DEY:[136,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],EOR:[-1,-1,73,77,93,89,69,85,-1,-1,65,81,-1],INC:[-1,-1,-1,238,254,-1,230,246,-1,-1,-1,-1,-1],INX:[232,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],INY:[200,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],JMP:[-1,-1,-1,76,-1,-1,-1,-1,-1,108,-1,-1,-1],JSR:[-1,-1,-1,32,-1,-1,-1,-1,-1,-1,-1,-1,-1],LDA:[-1,-1,169,173,189,185,165,181,-1,-1,161,177,-1],LDX:[-1,-1,162,174,-1,190,166,-1,182,-1,-1,-1,-1],LDY:[-1,-1,160,172,188,-1,164,180,-1,-1,-1,-1,-1],LSR:[-1,74,-1,78,94,-1,70,86,-1,-1,-1,-1,-1],NOP:[234,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],ORA:[-1,-1,9,13,29,25,5,21,-1,-1,1,17,-1],PHA:[72,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PHP:[8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PLA:[104,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PLP:[40,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],ROL:[-1,42,-1,46,62,-1,38,54,-1,-1,-1,-1,-1],ROR:[-1,106,-1,110,126,-1,102,118,-1,-1,-1,-1,-1],RTI:[64,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],RTS:[96,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],SBC:[-1,-1,233,237,253,249,229,245,-1,-1,225,241,-1],SEC:[56,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],SED:[248,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],SEI:[120,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],STA:[-1,-1,-1,141,157,153,133,149,-1,-1,129,145,-1],STX:[-1,-1,-1,142,-1,-1,134,-1,150,-1,-1,-1,-1],STY:[-1,-1,-1,140,-1,-1,132,148,-1,-1,-1,-1,-1],TAX:[170,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TAY:[168,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TSX:[186,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TXA:[138,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TXS:[154,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TYA:[152,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]},steptab:[1,1,2,3,3,3,2,2,2,3,2,2,2],parseOpcode:function(e,r){var a,t,n,u,s,l=C6502.set[e.opcode];if(l){if(u=[],e.params){if(1==e.params.length){if(t=e.params[0],a=3,"A"===t&&(a=1),"#"===t[0]&&(a=2,u[1]=function(e){return Parser.evaluate(t.substr(1),e)}),"*"===t[0]&&(a=6,u[1]=function(e){return Parser.evaluate(t.substr(1),e)}),r)try{s=Parser.evaluate(t,r),s<256&&l[6]>=0&&(a=6,u[1]=function(e){return Parser.evaluate(t,e)})}catch(e){}"("===t[0]&&")"===t[t.length-1]&&(a=9,t=t.substr(1,t.length-2),u[1]=function(e){return Parser.evaluate(t,e)},u[2]=null),t.match(/^\$[0-9a-f]{1,2}$/i)&&l[6]>=0&&(a=6,u[1]=function(e){return Parser.evaluate(t,e)}),3===a&&(l[3]==-1&&l[12]?(a=12,u[1]=function(e){var r=Parser.evaluate(t,e)-e._PC-2;return r<0&&(r=256+r),r}):(u[1]=function(e){return Parser.evaluate(t,e)},u[2]=null))}else if(2==e.params.length){if(t=e.params[0],s=null,r)try{s=Parser.evaluate(t,r)}catch(e){}n=e.params[1].toUpperCase(),t.match(/^\$[0-9a-f]{1,2}$/i)?("X"===n&&(a=7),"Y"===n&&(a=8),u[1]=function(e){return Parser.evaluate(t,e)}):"*"===t[0]?(t=t.substr(1),"X"===n&&(a=7),"Y"===n&&(a=8),u[1]=function(e){return Parser.evaluate(t,e)}):s&&s<256&&l[7]>=0&&"X"===n&&"("!==t[0]?("X"===n&&"("!==t[0]&&(a=7),u[1]=function(e){return Parser.evaluate(t,e)}):s&&s<256&&l[8]>=0&&"Y"===n&&"("!==t[0]?("Y"===n&&"("!==t[0]&&(a=8),u[1]=function(e){return Parser.evaluate(t,e)}):("X"===n&&(a=4,u[1]=function(e){return Parser.evaluate(t,e)},u[2]=null),"Y"===n&&"("!==t[0]&&(a=5,u[1]=function(e){return Parser.evaluate(t,e)},u[2]=null),"Y"===n&&"("===t[0]&&(a=11,u[1]=function(e){return Parser.evaluate(t.substr(1,t.length-2),e)}),"X)"===n&&"("===t[0]&&(a=10,u[1]=function(e){return Parser.evaluate(t.substr(1),e)}))}}else a=0,l[0]===-1&&(a=1);if(u[0]=l[a],null===u[0]||"-1"==u[0])throw"Bad addressing mode at line "+e.numline;return e.admode=a,e.lens=u,e.bytes=C6502.steptab[a],e}return null}};var C65816={set:{COP:[-1,-1,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],REP:[-1,-1,194,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],SEP:[-1,-1,226,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PHB:[139,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PHD:[11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PHK:[75,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PHX:[218,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PHY:[90,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PLB:[171,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PLD:[43,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PLX:[250,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PLY:[122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],RTL:[107,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TCS:[27,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TSC:[59,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TCD:[91,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TDC:[123,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TXY:[155,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TYX:[187,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],WAI:[203,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],WDM:[66,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],STP:[219,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],XBA:[235,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],XCE:[251,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TSB:[-1,-1,-1,12,-1,-1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TRB:[-1,-1,-1,28,-1,-1,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],STZ:[-1,-1,-1,156,158,-1,100,116,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],BRA:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,128,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],BRL:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,130,-1,-1],PER:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,98,-1,-1],PEI:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,212,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PEA:[-1,-1,-1,244,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],MVP:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,68,-1],MVN:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,84,-1],ORA:[-1,-1,9,13,29,25,5,21,-1,-1,1,17,-1,18,7,23,19,15,31,-1,-1,-1,-1,3],AND:[-1,-1,41,45,61,57,37,53,-1,-1,33,49,-1,50,39,55,51,47,63,-1,-1,-1,-1,35],EOR:[-1,-1,73,77,93,89,69,85,-1,-1,65,81,-1,82,71,87,83,79,95,-1,-1,-1,-1,67],ADC:[-1,-1,105,109,125,121,101,117,-1,-1,97,113,-1,114,103,119,115,111,127,-1,-1,-1,-1,99],STA:[-1,-1,-1,141,157,153,133,149,-1,-1,129,145,-1,146,135,151,147,143,159,-1,-1,-1,-1,131],LDA:[-1,-1,169,173,189,185,165,181,-1,-1,161,177,-1,178,167,183,179,175,191,-1,-1,-1,-1,163],CMP:[-1,-1,201,205,221,217,197,213,-1,-1,193,209,-1,210,199,215,211,207,223,-1,-1,-1,-1,195],SBC:[-1,-1,233,237,253,249,229,245,-1,-1,225,241,-1,242,231,247,243,239,255,-1,-1,-1,-1,227],JMP:[-1,-1,-1,76,-1,-1,-1,-1,-1,108,-1,-1,-1,-1,-1,-1,-1,92,-1,220,124,-1,-1,-1],JSR:[-1,-1,-1,32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,34,-1,-1,252,-1,-1,-1],ASL:[-1,10,-1,14,30,-1,6,22,-1,-1,-1,-1,-1],BCC:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,144],BCS:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,176],BEQ:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,240],BIT:[-1,-1,137,44,60,-1,36,52,-1,-1,-1,-1,-1],BMI:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48],BNE:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,208],BPL:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,16],BRK:[0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],BVC:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80],BVS:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,112],CLC:[24,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],CLD:[216,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],CLI:[88,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],CLV:[184,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],CPX:[-1,-1,224,236,-1,-1,228,-1,-1,-1,-1,-1,-1],CPY:[-1,-1,192,204,-1,-1,196,-1,-1,-1,-1,-1,-1],DEC:[58,-1,-1,206,222,-1,198,214,-1,-1,-1,-1,-1],DEX:[202,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],DEY:[136,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],INC:[26,-1,-1,238,254,-1,230,246,-1,-1,-1,-1,-1],INX:[232,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],INY:[200,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],LDX:[-1,-1,162,174,-1,190,166,-1,182,-1,-1,-1,-1],LDY:[-1,-1,160,172,188,-1,164,180,-1,-1,-1,-1,-1],LSR:[-1,74,-1,78,94,-1,70,86,-1,-1,-1,-1,-1],NOP:[234,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PHA:[72,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PHP:[8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PLA:[104,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],PLP:[40,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],ROL:[-1,42,-1,46,62,-1,38,54,-1,-1,-1,-1,-1],ROR:[-1,106,-1,110,126,-1,102,118,-1,-1,-1,-1,-1],RTI:[64,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],RTS:[96,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],SEC:[56,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],SED:[248,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],SEI:[120,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],STX:[-1,-1,-1,142,-1,-1,134,-1,150,-1,-1,-1,-1],STY:[-1,-1,-1,140,-1,-1,132,148,-1,-1,-1,-1,-1],TAX:[170,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TAY:[168,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TSX:[186,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TXA:[138,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TXS:[154,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],TYA:[152,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]},steptab:[1,1,2,3,3,3,2,2,2,3,2,2,2,2,2,2,2,4,4,3,3,3,3,2],parseOpcode:function(e,r){if(".m16"===e.opcode)return console.log("M16"),null;var a,t,n,u,s,l,o=C65816.set[e.opcode];if(o){if(s=[],e.params){if(1==e.params.length){if(t=e.params[0],a=3,"A"===t&&(a=1),"#"===t[0]&&(a=2,s[1]=function(e){return Parser.evaluate(t.substr(1),e)}),"*"===t[0]&&(a=6,s[1]=function(e){return Parser.evaluate(t.substr(1),e)}),r)try{l=Parser.evaluate(t,r),l<256&&o[6]>=0&&(a=6,s[1]=function(e){return Parser.evaluate(t,e)}),l>65535&&o[17]>=0&&(a=17,s[1]=function(e){return Parser.evaluate(t,e)},s[2]="addr24",s[3]=null)}catch(e){}if("("===t[0]&&")"===t[t.length-1]){a=9,t=t.substr(1,t.length-2),s[1]=function(e){return Parser.evaluate(t,e)},s[2]=null;try{l=Parser.evaluate(t,r),l<256&&o[13]>=0&&(a=13,s[1]=function(e){return Parser.evaluate(t,e)})}catch(e){}}t.match(/^\$[0-9a-f]{1,2}$/i)&&o[6]>=0&&13!=a&&(a=6,s[1]=function(e){return Parser.evaluate(t,e)}),"["===t[0]&&"]"===t[t.length-1]&&(a=14,o[19]>=0&&(a=19),t=t.substr(1,t.length-2),s[1]=function(e){return Parser.evaluate(t,e)}),3===a&&(o[3]==-1&&o[12]>=0?(a=12,s[1]=function(e){var r=Parser.evaluate(t,e)-e._PC-2;return r<0&&(r=256+r),r}):o[3]==-1&&o[21]>=0?(a=21,s[1]=function(e){var r=Parser.evaluate(t,e)-e._PC-2;return r<0&&(r=65536+r),r}):(s[1]=function(e){return Parser.evaluate(t,e)},s[2]=null))}else if(3==e.params.length)t=e.params[0],n=e.params[1].toUpperCase(),u=e.params[2].toUpperCase(),"Y"===u&&"S)"===n&&o[16]>=0&&(a=16,s[1]=function(e){return Parser.evaluate(t.substr(1),e)});else if(2==e.params.length){if(t=e.params[0],l=null,r)try{l=Parser.evaluate(t,r)}catch(e){}if(n=e.params[1].toUpperCase(),o[22]>=0)a=22,n=e.params[1],s[1]=function(e){return Parser.evaluate(t,e)},s[2]=function(e){return Parser.evaluate(n,e)};else if("S"===n||"s"===n)a=23,s[1]=function(e){return Parser.evaluate(t,e)};else if(t.match(/^\$[0-9a-f]{1,2}$/i))"X"===n&&(a=7),"Y"===n&&(a=8),s[1]=function(e){return Parser.evaluate(t,e)};else if("*"===t[0])t=t.substr(1),"X"===n&&(a=7),"Y"===n&&(a=8),s[1]=function(e){return Parser.evaluate(t,e)};else if(l&&l<256&&o[7]>=0&&"X"===n&&"("!==t[0]&&"["!==t[0])"X"===n&&"("!==t[0]&&(a=7),s[1]=function(e){return Parser.evaluate(t,e)};else if(l&&l<256&&o[8]>=0&&"Y"===n&&"("!==t[0]&&"["!==t[0])"Y"===n&&"("!==t[0]&&(a=8),s[1]=function(e){return Parser.evaluate(t,e)};else{"X"===n&&(a=4,s[1]=function(e){return Parser.evaluate(t,e)},s[2]=null);try{l=Parser.evaluate(t,r),l>65535&&o[18]>=0&&"X"===n&&(a=18,s[1]=function(e){return Parser.evaluate(t,e)},s[2]="addr24",s[3]=null)}catch(e){}"Y"===n&&"("!==t[0]&&(a=5,s[1]=function(e){return Parser.evaluate(t,e)},s[2]=null),"Y"===n&&"("===t[0]&&(a=11,s[1]=function(e){return Parser.evaluate(t.substr(1,t.length-2),e)}),"Y"===n&&"["===t[0]&&(a=15,s[1]=function(e){return Parser.evaluate(t.substr(1,t.length-2),e)}),"X)"===n&&"("===t[0]&&(a=10,o[20]>=0&&(a=20),s[1]=function(e){return Parser.evaluate(t.substr(1),e)})}}}else a=0,o[0]===-1&&(a=1);if(s[0]=o[a],null===s[0]||"-1"==s[0])throw"Bad addressing mode at line "+e.numline;return e.admode=a,e.lens=s,e.bytes=C65816.steptab[a],r&&2===a&&(console.log(r),"LDX"===e.opcode||"LDY"===e.opcode?r.__MX&&16===r.__MX&&(e.bytes++,e.lens[2]=null):"ADC"!==e.opcode&&"AND"!==e.opcode&&"BIT"!==e.opcode&&"CMP"!==e.opcode&&"EOR"!==e.opcode&&"LDA"!==e.opcode&&"ORA"!==e.opcode&&"SBC"!==e.opcode||r.__AX&&16===r.__AX&&(e.bytes++,e.lens[2]=null)),e}return null}};var M6809={set:{NEG:[-1,0,96,112,-1,-1,-1,-1],COM:[-1,3,99,115,-1,-1,-1,-1],LSR:[-1,4,100,116,-1,-1,-1,-1],ROR:[-1,6,102,118,-1,-1,-1,-1],ASR:[-1,7,103,119,-1,-1,-1,-1],LSL:[-1,8,104,120,-1,-1,-1,-1],ASL:[-1,8,104,120,-1,-1,-1,-1],ROL:[-1,9,105,121,-1,-1,-1,-1],DEC:[-1,10,106,122,-1,-1,-1,-1],INC:[-1,12,108,124,-1,-1,-1,-1],TST:[-1,13,109,125,-1,-1,-1,-1],JMP:[-1,14,110,126,-1,-1,-1,-1],CLR:[-1,15,111,127,-1,-1,-1,-1],LEAX:[-1,-1,48,-1,-1,-1,-1,-1],LEAY:[-1,-1,49,-1,-1,-1,-1,-1],LEAS:[-1,-1,50,-1,-1,-1,-1,-1],LEAU:[-1,-1,51,-1,-1,-1,-1,-1],NOP:[18,-1,-1,-1,-1,-1,-1,-1],SYNC:[19,-1,-1,-1,-1,-1,-1,-1],DAA:[25,-1,-1,-1,-1,-1,-1,-1],SEX:[29,-1,-1,-1,-1,-1,-1,-1],RTS:[57,-1,-1,-1,-1,-1,-1,-1],ABX:[58,-1,-1,-1,-1,-1,-1,-1],RTI:[59,-1,-1,-1,-1,-1,-1,-1],CWAI:[-1,-1,-1,-1,-1,60,-1,-1],MUL:[61,-1,-1,-1,-1,-1,-1,-1],SWI:[63,-1,-1,-1,-1,-1,-1,-1],SWI2:[4159,-1,-1,-1,-1,-1,-1,-1],SWI3:[4415,-1,-1,-1,-1,-1,-1,-1],NEGA:[64,-1,-1,-1,-1,-1,-1,-1],COMA:[67,-1,-1,-1,-1,-1,-1,-1],LSRA:[68,-1,-1,-1,-1,-1,-1,-1],RORA:[70,-1,-1,-1,-1,-1,-1,-1],ASRA:[71,-1,-1,-1,-1,-1,-1,-1],LSLA:[72,-1,-1,-1,-1,-1,-1,-1],ASLA:[72,-1,-1,-1,-1,-1,-1,-1],ROLA:[73,-1,-1,-1,-1,-1,-1,-1],DECA:[74,-1,-1,-1,-1,-1,-1,-1],INCA:[76,-1,-1,-1,-1,-1,-1,-1],TSTA:[77,-1,-1,-1,-1,-1,-1,-1],CLRA:[79,-1,-1,-1,-1,-1,-1,-1],NEGB:[80,-1,-1,-1,-1,-1,-1,-1],COMB:[83,-1,-1,-1,-1,-1,-1,-1],LSRB:[84,-1,-1,-1,-1,-1,-1,-1],RORB:[86,-1,-1,-1,-1,-1,-1,-1],ASRB:[87,-1,-1,-1,-1,-1,-1,-1],LSLB:[88,-1,-1,-1,-1,-1,-1,-1],ASLB:[88,-1,-1,-1,-1,-1,-1,-1],ROLB:[89,-1,-1,-1,-1,-1,-1,-1],DECB:[90,-1,-1,-1,-1,-1,-1,-1],INCB:[92,-1,-1,-1,-1,-1,-1,-1],TSTB:[93,-1,-1,-1,-1,-1,-1,-1],CLRB:[95,-1,-1,-1,-1,-1,-1,-1],SUBA:[-1,144,160,176,-1,128,-1,-1],CMPA:[-1,145,161,177,-1,129,-1,-1],SBCA:[-1,146,162,178,-1,130,-1,-1],ANDA:[-1,148,164,180,-1,132,-1,-1],BITA:[-1,149,165,181,-1,133,-1,-1],LDA:[-1,150,166,182,-1,134,-1,-1],STA:[-1,151,167,183,-1,-1,-1,-1],EORA:[-1,152,168,184,-1,136,-1,-1],ADCA:[-1,153,169,185,-1,137,-1,-1],ORA:[-1,154,170,186,-1,138,-1,-1],ADDA:[-1,155,171,187,-1,139,-1,-1],JSR:[-1,157,173,189,-1,-1,-1,-1],SUBD:[-1,147,163,179,-1,-1,131,-1],CMPX:[-1,156,172,188,-1,-1,140,-1],LDX:[-1,158,174,190,-1,-1,142,-1],STX:[-1,159,175,191,-1,-1,-1,-1],CMPD:[-1,4243,4259,4275,-1,-1,4227,-1],CMPY:[-1,4252,4268,4284,-1,-1,4236,-1],LDY:[-1,4254,4270,4286,-1,-1,4238,-1],STY:[-1,4255,4271,4287,-1,-1,-1,-1],LDS:[-1,4318,4334,4350,-1,-1,4302,-1],STS:[-1,4319,4335,4351,-1,-1,-1,-1],SUBB:[-1,208,224,240,-1,192,-1,-1],CMPB:[-1,209,225,241,-1,193,-1,-1],SBCB:[-1,210,226,242,-1,194,-1,-1],ANDB:[-1,212,228,244,-1,196,-1,-1],BITB:[-1,213,229,245,-1,197,-1,-1],LDB:[-1,214,230,246,-1,198,-1,-1],STB:[-1,215,231,247,-1,-1,-1,-1],EORB:[-1,216,232,248,-1,200,-1,-1],ADCB:[-1,217,233,249,-1,201,-1,-1],ORB:[-1,218,234,250,-1,202,-1,-1],ADDB:[-1,219,235,251,-1,203,-1,-1],ADDD:[-1,211,227,243,-1,-1,195,-1],LDD:[-1,220,236,252,-1,-1,204,-1],STD:[-1,221,237,253,-1,-1,-1,-1],LDU:[-1,222,238,254,-1,-1,206,-1],STU:[-1,223,239,255,-1,-1,-1,-1],CMPS:[-1,4508,4524,4540,-1,-1,4492,-1],CMPU:[-1,4499,4515,4531,-1,-1,4483,-1],LBRA:[-1,-1,-1,-1,-1,-1,-1,22],LBSR:[-1,-1,-1,-1,-1,-1,-1,23],BSR:[-1,-1,-1,-1,141,-1,-1,-1],BRA:[-1,-1,-1,-1,32,-1,-1,-1],BRN:[-1,-1,-1,-1,33,-1,-1,-1],BHI:[-1,-1,-1,-1,34,-1,-1,-1],BLS:[-1,-1,-1,-1,35,-1,-1,-1],BHS:[-1,-1,-1,-1,36,-1,-1,-1],BCC:[-1,-1,-1,-1,36,-1,-1,-1],BLO:[-1,-1,-1,-1,37,-1,-1,-1],BCS:[-1,-1,-1,-1,37,-1,-1,-1],BNE:[-1,-1,-1,-1,38,-1,-1,-1],BEQ:[-1,-1,-1,-1,39,-1,-1,-1],BVC:[-1,-1,-1,-1,40,-1,-1,-1],BVS:[-1,-1,-1,-1,41,-1,-1,-1],BPL:[-1,-1,-1,-1,42,-1,-1,-1],BMI:[-1,-1,-1,-1,43,-1,-1,-1],BGE:[-1,-1,-1,-1,44,-1,-1,-1],BLT:[-1,-1,-1,-1,45,-1,-1,-1],BGT:[-1,-1,-1,-1,46,-1,-1,-1],BLE:[-1,-1,-1,-1,47,-1,-1,-1],LBRN:[-1,-1,-1,-1,-1,-1,-1,4129],LBHI:[-1,-1,-1,-1,-1,-1,-1,4130],LBLS:[-1,-1,-1,-1,-1,-1,-1,4131],LBHS:[-1,-1,-1,-1,-1,-1,-1,4132],LBCC:[-1,-1,-1,-1,-1,-1,-1,4132],LBLO:[-1,-1,-1,-1,-1,-1,-1,4133],LBCS:[-1,-1,-1,-1,-1,-1,-1,4133],LBNE:[-1,-1,-1,-1,-1,-1,-1,4134],LBEQ:[-1,-1,-1,-1,-1,-1,-1,4135],LBVC:[-1,-1,-1,-1,-1,-1,-1,4136],LBVS:[-1,-1,-1,-1,-1,-1,-1,4137],LBPL:[-1,-1,-1,-1,-1,-1,-1,4138],LBMI:[-1,-1,-1,-1,-1,-1,-1,4139],LBGE:[-1,-1,-1,-1,-1,-1,-1,4140],LBLT:[-1,-1,-1,-1,-1,-1,-1,4141],LBGT:[-1,-1,-1,-1,-1,-1,-1,4142],LBLE:[-1,-1,-1,-1,-1,-1,-1,4143],ORCC:[-1,-1,-1,-1,-1,26,-1,-1],ANDCC:[-1,-1,-1,-1,-1,28,-1,-1]},parseOpcode:function(e,r){var n,t,s,a,l,u,o=function(e){var r=["D","X","Y","U","S","PC","","","A","B","CC","DP"].indexOf(e.toUpperCase());if(r<0)throw"Not recognized register name";return r},i=function(e){if("D"==e.toUpperCase())return 6;var r=["CC","A","B","DP","X","Y","U","PC"].indexOf(e.toUpperCase());if(r<0)throw"Not recognized register name";return 1<<r},B=function(e){if("D"==e.toUpperCase())return 6;var r=["CC","A","B","DP","X","Y","S","PC"].indexOf(e.toUpperCase());if(r<0)throw"Not recognized register name";return 1<<r},C=M6809.set[e.opcode],f=0,L=-1,p=0,S=null;if(e.lens=[],"EXG"==e.opcode&&(e.lens[0]=30),"TFR"==e.opcode&&(e.lens[0]=31),"EXG"==e.opcode||"TFR"==e.opcode){if(e.bytes=2,2!=e.params.length)throw e.opcode+" needs exactly 2 registers at line "+e.numline;return e.lens[1]=(o(e.params[0])<<4)+o(e.params[1]),e}if("PSHS"==e.opcode){for(e.lens[0]=52,e.bytes=2,e.lens[1]=0,u=0;u<e.params.length;u++)e.lens[1]|=i(e.params[u]);return e}if("PULS"==e.opcode){for(e.lens[0]=53,e.bytes=2,e.lens[1]=0,u=0;u<e.params.length;u++)e.lens[1]|=i(e.params[u]);return e}if("PSHU"==e.opcode){for(e.lens[0]=54,e.bytes=2,e.lens[1]=0,u=0;u<e.params.length;u++)e.lens[1]|=B(e.params[u]);return e}if("PULU"==e.opcode){for(e.lens[0]=55,e.bytes=2,e.lens[1]=0,u=0;u<e.params.length;u++)e.lens[1]|=B(e.params[u]);return e}if(C){if(C[0]>=0)return C[0]>255?(e.lens=[C[0]>>8,255&C[0]],e.bytes=2,e):(e.lens=[C[0]],e.bytes=1,e);if(1==e.params.length&&"["!==e.params[0][0]){if(e.bytes=0,t=e.params[0],"#"==t[0])p=1,f=5,C[5]<0&&C[6]>=0&&(f=6);else if("<"==t[0])p=1,f=1;else if(">"==t[0])p=1,f=3;else{C[1]>=0&&(f=1),C[3]>=0&&(f=3),C[4]>=0&&(f=4),C[7]>=0&&(f=7);try{n=Parser.evaluate(t,r),n<256&&C[1]>=0&&(f=1)}catch(e){}}if(0===f)throw"Not detected addressing mode at line "+e.numline;if(C[f]==-1)throw"Bad addressing mode at line "+e.numline;return L=C[f],4!=f&&7!=f&&(S=p?function(e){return Parser.evaluate(t.substr(1),e)}:function(e){return Parser.evaluate(t,e)}),L>255?e.bytes+=2:e.bytes+=1,4==f&&(S=p?function(e){var r=Parser.evaluate(t.substr(1),e)-e._PC-2;return r<0&&(r=256+r),r}:function(e){var r=Parser.evaluate(t,e)-e._PC-2;return r<0&&(r=256+r),r}),7==f&&(S=p?function(r){var n=Parser.evaluate(t.substr(1),r)-r._PC-e.bytes;return n<0&&(n=65536+n),n}:function(r){var n=Parser.evaluate(t,r)-r._PC-e.bytes;return n<0&&(n=65536+n),n}),L>255?e.lens=[L>>8,255&L,S]:e.lens=[L,S],1==f&&e.bytes++,5==f&&e.bytes++,4==f&&e.bytes++,3==f&&(e.bytes+=2,e.lens[e.bytes-1]=null),6==f&&(e.bytes+=2,e.lens[e.bytes-1]=null),7==f&&(e.bytes+=2,e.lens[e.bytes-1]=null),e}var A=1;if(e.bytes=2,1==e.params.length&&"["===e.params[0][0])return C[2]>256?(e.lens[0]=C[2]>>8,e.lens[1]=255&C[2],A=2,e.bytes++):e.lens[0]=C[2],t=e.params[0],e.lens[A]=159,e.lens[A+1]=function(e){return Parser.evaluate(t.substr(1,t.length-2),e)},e.lens[A+2]=null,e.bytes+=2,e;if(C[2]<=0||2!==e.params.length)throw"Bad addressing mode at line "+e.numline;C[2]>256?(e.lens[0]=C[2]>>8,e.lens[1]=255&C[2],A=2,e.bytes++):e.lens[0]=C[2];var P=0;t=e.params[0],s=e.params[1],a=t,l=s,"["==t[0]&&"]"==s[s.length-1]&&(P=16,t=t.substr(1),s=s.substr(0,s.length-1));var b=function(e){var r=["X","Y","U","S"].indexOf(e.toUpperCase());if(r<0)throw"Register name not recognized: "+e;return r<<5},c=function(e){var r=["X","Y","U","S","PC"].indexOf(e.toUpperCase());if(4==r)return 4;if(r<0)throw"Register name not recognized: "+e;return r<<5};if(""===t){if("-"==s[0])if("-"==s[1])e.lens[A]=131|b(s.substr(2))|P;else{if(P>0)throw"Cannot use predecrement with 1";e.lens[A]=130|b(s.substr(1))}else if("+"==s[1])if("+"==s[2])e.lens[A]=129|b(s.substr(0,1))|P;else{if(P>0)throw"Cannot use postincrement with 1";e.lens[A]=128|b(s.substr(0,1))}else e.lens[A]=132|b(s)|P;return e}if("A"===t.toUpperCase())return e.lens[A]=134|b(s)|P,e;if("B"===t.toUpperCase())return e.lens[A]=133|b(s)|P,e;if("D"===t.toUpperCase())return e.lens[A]=139|b(s)|P,e;try{n=Parser.evaluate(t,r),"PC"==s.toUpperCase()&&(n-=r._PC)}catch(e){n=null}return n<16&&n>-17&&4!=c(s)?(e.lens[A]=b(s)|P|31&n,e):n<256&&n>-129&&null!==n?(n<0&&(n=256+n),e.lens[A]=c(s)|P|136,e.bytes++,"PC"==s.toUpperCase()?e.lens[A+1]=P?function(r){var n=Parser.evaluate(a.substr(1),r)-r._PC-e.bytes;return n<0&&(n=256+n),n}:function(r){var n=Parser.evaluate(a,r)-r._PC-e.bytes;return n<0&&(n=256+n),n}:e.lens[A+1]=P?function(e){return Parser.evaluate(a.substr(1),e)}:function(e){return Parser.evaluate(a,e)},e):(e.bytes+=2,e.lens[A]=c(s)|P|137,"PC"==s.toUpperCase()?e.lens[A+1]=P?function(r){var n=Parser.evaluate(a.substr(1),r)-r._PC-e.bytes;return n<0&&(n+=65536),n}:function(r){var n=Parser.evaluate(a,r)-r._PC-e.bytes;return n<0&&(n+=65536),n}:e.lens[A+1]=P?function(e){return Parser.evaluate(a.substr(1),e)}:function(e){return Parser.evaluate(a,e)},e.lens[A+2]=null,e)}return null},endian:!0};var M6800={set:{ABA:[27,-1,-1,-1,-1,-1,-1],ADCA:[-1,153,-1,185,169,137,-1],ADCB:[-1,217,-1,249,233,201,-1],ADDA:[-1,155,-1,187,171,139,-1],ADDB:[-1,219,-1,251,235,203,-1],ANDA:[-1,148,-1,180,164,132,-1],ANDB:[-1,212,-1,244,228,196,-1],ASL:[-1,-1,-1,120,104,-1,-1],ASLA:[72,-1,-1,-1,-1,-1,-1],ASLB:[88,-1,-1,-1,-1,-1,-1],ASR:[-1,-1,-1,119,103,-1,-1],ASRA:[71,-1,-1,-1,-1,-1,-1],ASRB:[87,-1,-1,-1,-1,-1,-1],BCC:[-1,-1,-1,-1,-1,-1,36],BCS:[-1,-1,-1,-1,-1,-1,37],BEQ:[-1,-1,-1,-1,-1,-1,39],BGE:[-1,-1,-1,-1,-1,-1,44],BGT:[-1,-1,-1,-1,-1,-1,46],BHI:[-1,-1,-1,-1,-1,-1,34],BITA:[-1,149,-1,181,165,133,-1],BITB:[-1,213,-1,245,229,197,-1],BLE:[-1,-1,-1,-1,-1,-1,47],BLS:[-1,-1,-1,-1,-1,-1,35],BLT:[-1,-1,-1,-1,-1,-1,45],BMI:[-1,-1,-1,-1,-1,-1,43],BNE:[-1,-1,-1,-1,-1,-1,38],BPL:[-1,-1,-1,-1,-1,-1,42],BRA:[-1,-1,-1,-1,-1,-1,32],BSR:[-1,-1,-1,-1,-1,-1,141],BVC:[-1,-1,-1,-1,-1,-1,40],BVS:[-1,-1,-1,-1,-1,-1,41],CBA:[17,-1,-1,-1,-1,-1,-1],CLC:[12,-1,-1,-1,-1,-1,-1],CLI:[14,-1,-1,-1,-1,-1,-1],CLR:[-1,-1,-1,127,111,-1,-1],CLRA:[79,-1,-1,-1,-1,-1,-1],CLRB:[95,-1,-1,-1,-1,-1,-1],CLV:[10,-1,-1,-1,-1,-1,-1],CMPA:[-1,145,-1,177,161,129,-1],CMPB:[-1,209,-1,241,225,193,-1],COM:[-1,-1,-1,115,99,-1,-1],COMA:[67,-1,-1,-1,-1,-1,-1],COMB:[83,-1,-1,-1,-1,-1,-1],CPX:[-1,156,140,188,172,-1,-1],DAA:[25,-1,-1,-1,-1,-1,-1],DEC:[-1,-1,-1,122,106,-1,-1],DECA:[74,-1,-1,-1,-1,-1,-1],DECB:[90,-1,-1,-1,-1,-1,-1],DES:[52,-1,-1,-1,-1,-1,-1],DEX:[9,-1,-1,-1,-1,-1,-1],EORA:[-1,152,-1,184,168,136,-1],EORB:[-1,216,-1,248,232,200,-1],INC:[-1,-1,-1,124,108,-1,-1],INCA:[76,-1,-1,-1,-1,-1,-1],INCB:[92,-1,-1,-1,-1,-1,-1],INS:[49,-1,-1,-1,-1,-1,-1],INX:[8,-1,-1,-1,-1,-1,-1],JMP:[-1,-1,-1,126,110,-1,-1],JSR:[-1,-1,-1,189,173,-1,-1],LDAA:[-1,150,-1,182,166,134,-1],LDAB:[-1,214,-1,246,230,198,-1],LDS:[-1,158,142,190,174,-1,-1],LDX:[-1,222,206,254,238,-1,-1],LSR:[-1,-1,-1,116,100,-1,-1],LSRA:[68,-1,-1,-1,-1,-1,-1],LSRB:[84,-1,-1,-1,-1,-1,-1],NEG:[-1,-1,-1,112,96,-1,-1],NEGA:[64,-1,-1,-1,-1,-1,-1],NEGB:[80,-1,-1,-1,-1,-1,-1],NOP:[1,-1,-1,-1,-1,-1,-1],ORAA:[-1,154,-1,186,170,138,-1],ORAB:[-1,218,-1,250,234,202,-1],PSHA:[54,-1,-1,-1,-1,-1,-1],PSHB:[55,-1,-1,-1,-1,-1,-1],PULA:[50,-1,-1,-1,-1,-1,-1],PULB:[51,-1,-1,-1,-1,-1,-1],ROL:[-1,-1,-1,121,105,-1,-1],ROLA:[73,-1,-1,-1,-1,-1,-1],ROLB:[89,-1,-1,-1,-1,-1,-1],ROR:[-1,-1,-1,118,102,-1,-1],RORA:[70,-1,-1,-1,-1,-1,-1],RORB:[86,-1,-1,-1,-1,-1,-1],RTI:[59,-1,-1,-1,-1,-1,-1],RTS:[57,-1,-1,-1,-1,-1,-1],SBA:[16,-1,-1,-1,-1,-1,-1],SBCA:[-1,146,-1,178,162,130,-1],SBCB:[-1,210,-1,242,226,194,-1],SEC:[13,-1,-1,-1,-1,-1,-1],SEI:[15,-1,-1,-1,-1,-1,-1],SEV:[11,-1,-1,-1,-1,-1,-1],STAA:[-1,151,-1,183,167,-1,-1],STAB:[-1,215,-1,247,231,-1,-1],STS:[-1,159,-1,191,175,-1,-1],STX:[-1,223,-1,255,239,-1,-1],SUBA:[-1,144,-1,176,160,128,-1],SUBB:[-1,208,-1,240,224,192,-1],SWI:[63,-1,-1,-1,-1,-1,-1],TAB:[22,-1,-1,-1,-1,-1,-1],TAP:[6,-1,-1,-1,-1,-1,-1],TBA:[23,-1,-1,-1,-1,-1,-1],TPA:[7,-1,-1,-1,-1,-1,-1],TST:[-1,-1,-1,125,109,-1,-1],TSTA:[77,-1,-1,-1,-1,-1,-1],TSTB:[93,-1,-1,-1,-1,-1,-1],TSX:[48,-1,-1,-1,-1,-1,-1],TXS:[53,-1,-1,-1,-1,-1,-1],WAI:[62,-1,-1,-1,-1,-1,-1]},parseOpcode:function(r,e){var s,a=r.opcode;if(r.params&&3==a.length&&r.params[0]&&(1==r.params[0].indexOf(" ")||1==r.params[0].length)){var n=r.params[0]+"";r.reg6800=n.substr(0,1).toUpperCase(),r.params[0]=n.substr(2).trim(),r.paramstring=r.paramstring.substr(2).trim(),a+=r.reg6800}var A=M6800.set[a];if(r.opcode=a,r.lens=[],A){if(A[0]>=0)return A[0]>255?(r.lens=[A[0]>>8,255&A[0]],r.bytes=2,r):(r.lens=[A[0]],r.bytes=1,r);if(s=r.params[0]+"",r.params[0]&&r.params[0].length>0&&!r.params[1]){var t=A[1],B=A[2],S=A[3],u=A[5],l=A[6];if(l>-1)return r.lens[0]=l,r.lens[1]=function(r){var e=Parser.evaluate(s,r)-r._PC-2;return e<0&&(e=256+e),e},r.bytes=2,r;if("#"==s[0]&&B>-1)return r.lens[0]=B,r.lens[1]=function(r){return Parser.evaluate(s.substr(1),r)},r.lens[2]=null,r.bytes=3,r;if("#"==s[0]&&u>-1)return r.lens[0]=u,r.lens[1]=function(r){return Parser.evaluate(s.substr(1),r)},r.bytes=2,r;if(t>-1&&e){var C=null;try{C=Parser.evaluate(s,e)}catch(r){}if(C<256&&C>=0)return r.lens[0]=t,r.lens[1]=function(r){return Parser.evaluate(s,r)},r.bytes=2,r}if(S>-1)return r.lens[0]=S,r.lens[1]=function(r){return Parser.evaluate(s,r)},r.lens[2]=null,r.bytes=3,r}if(A[4]>-1&&"X"==r.params[1])return r.lens[0]=A[4],r.lens[1]=function(r){return Parser.evaluate(s,r)},r.bytes=2,r}return null},endian:!0};var CDP1802={set:{ADC:[116,0],ADCI:[124,1],ADD:[244,0],ADI:[252,1],AND:[242,0],ANI:[250,1],B1:[52,3],B2:[53,3],B3:[54,3],B4:[55,3],BDF:[51,3],BN1:[60,3],BN2:[61,3],BN3:[62,3],BN4:[63,3],BNF:[59,3],BNQ:[57,3],BNZ:[58,3],BQ:[49,3],BR:[48,3],BZ:[50,3],DEC:[32,2],DIS:[113,0],GHI:[144,2],GLO:[128,2],IDL:[0,0],INC:[16,2],INP:[104,5],IRX:[96,0],LBDF:[195,4],LBNF:[203,4],LBNQ:[201,4],LBNZ:[202,4],LBQ:[193,4],LBR:[192,4],LBZ:[194,4],LDA:[64,2],LDI:[248,1],LDN:[0,2],LDX:[240,0],LDXA:[114,0],LSDF:[207,0],LSIE:[204,0],LSKP:[200,0],LSNF:[199,0],LSNQ:[197,0],LSNZ:[198,0],LSQ:[205,0],LSZ:[206,0],MARK:[121,0],NOP:[196,0],OR:[241,0],ORI:[249,1],OUT:[96,5],PHI:[176,2],PLO:[160,2],REQ:[122,0],RET:[112,0],SAV:[120,0],SD:[245,0],SDB:[117,0],SDBI:[125,1],SDI:[253,1],SEP:[208,2],SEQ:[123,0],SEX:[224,2],SHL:[254,0],SHLC:[126,0],SHR:[246,0],SHRC:[118,0],SKP:[56,0],SM:[247,0],SMB:[119,0],SMBI:[127,1],SMI:[255,1],STR:[80,2],STXD:[115,0],XOR:[243,0],XRI:[251,1]},parseOpcode:function(e,r){var a,s=CDP1802.set[e.opcode];e.lens=[];var t=function(e){return e.replace("#","$")};if(s)switch(s[1]){case 0:return e.lens=[s[0]],e.bytes=1,e;case 1:return a=t(e.params[0]+""),e.lens=[s[0],function(e){return Parser.evaluate(a,e)}],e.bytes=2,e;case 4:return a=e.params[0]+"",e.lens=[s[0],function(e){return Parser.evaluate(a,e)},null],e.bytes=3,e;case 3:return a=e.params[0]+"",e.lens=[s[0],function(e){var r=Parser.evaluate(a,e),s=255&r,t=e._PC,n=65280&t|s;if(n!=r)throw{message:"Cross page jump"};return s}],e.bytes=2,e;case 2:a=e.params[0]+"";var n;if(1==a.length)n=parseInt(a,16);else if(2!=a.length&&3!=a.length||"R"!=a[0].toUpperCase())try{n=Parser.evaluate(a,r)}catch(e){n=NaN}else n=parseInt(a.substr(1),10);if(isNaN(n)||n>15||n<0)throw"Unrecognized register: "+a;return e.lens=[s[0]+n],e.bytes=1,e;case 5:a=e.params[0]+"";var S;if(1==a.length)S=parseInt(a,10);else try{S=Parser.evaluate(a,r)}catch(e){S=NaN}if(isNaN(S)||S>7||S<1)throw"Unrecognized port: "+a;return e.lens=[s[0]+S],e.bytes=1,e}return null},endian:!0};(function(name, definition) {
if (typeof module != 'undefined') module.exports = definition();
else if (typeof define == 'function' && typeof define.amd == 'object') define(definition);
else this[name] = definition();
}('Monolith', function() {
"use strict";
return {
"Z80": Z80,
"I8080":I8080,
"C6502":C6502,
"C65816":C65816,
"CDP1802":CDP1802,
"M6800":M6800,
"M6809":M6809
}
}));