asm80
Version:
ASM80 stand-alone assembler
1 lines • 49.9 kB
JavaScript
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(-128>s)throw"Target is out of relative jump reach";return 0>s&&(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&&4>r&&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(-128>s)throw"Target is out of relative jump reach";return 0>s&&(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&&0>h&&"("==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&&0>h&&(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(0>b)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(0>n)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(0>n)throw"Unknown register "+o[0];return n<<=3,[n|t]},RR0:function(t,o){var n=this.R(o[0]);if(0>n)throw"Unknown register "+o[0];return[n|t]},RRR:function(t,o){var n=this.R(o[0]);if(0>n)throw"Unknown register "+o[0];var r=this.R(o[1]);if(0>r)throw"Unknown register "+o[1];return n<<=3,[n|r|t]},RPW:function(t,o){var n=this.RDD(o[0]);if(0>n||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(0>n||n>3)throw"Unknown register "+o[0];return n<<=4,[n|t]},BD:function(t,o){var n=this.RBD(o[0]);if(0>n||n>1)throw"Unknown register "+o[0];return n<<=4,[n|t]},RQW:function(t,o){var n=this.RQQ(o[0]);if(0>n||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){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 I8008={set:{ADA:{o:128,t:"0"},ADB:{o:129,t:"0"},ADC:{o:130,t:"0"},ADD:{o:131,t:"0"},ADE:{o:132,t:"0"},ADH:{o:133,t:"0"},ADL:{o:134,t:"0"},ADM:{o:135,t:"0"},ACA:{o:136,t:"0"},ACB:{o:137,t:"0"},ACC:{o:138,t:"0"},ACD:{o:139,t:"0"},ACE:{o:140,t:"0"},ACH:{o:141,t:"0"},ACL:{o:142,t:"0"},ACM:{o:143,t:"0"},SUA:{o:144,t:"0"},SUB:{o:145,t:"0"},SUC:{o:146,t:"0"},SUD:{o:147,t:"0"},SUE:{o:148,t:"0"},SUH:{o:149,t:"0"},SUL:{o:150,t:"0"},SUM:{o:151,t:"0"},SBA:{o:152,t:"0"},SBB:{o:153,t:"0"},SBC:{o:154,t:"0"},SBD:{o:155,t:"0"},SBE:{o:156,t:"0"},SBH:{o:157,t:"0"},SBL:{o:158,t:"0"},SBM:{o:159,t:"0"},NDA:{o:160,t:"0"},NDB:{o:161,t:"0"},NDC:{o:162,t:"0"},NDD:{o:163,t:"0"},NDE:{o:164,t:"0"},NDH:{o:165,t:"0"},NDL:{o:166,t:"0"},NDM:{o:167,t:"0"},XRA:{o:168,t:"0"},XRB:{o:169,t:"0"},XRC:{o:170,t:"0"},XRD:{o:171,t:"0"},XRE:{o:172,t:"0"},XRH:{o:173,t:"0"},XRL:{o:174,t:"0"},XRM:{o:175,t:"0"},ORA:{o:176,t:"0"},ORB:{o:177,t:"0"},ORC:{o:178,t:"0"},ORD:{o:179,t:"0"},ORE:{o:180,t:"0"},ORH:{o:181,t:"0"},ORL:{o:182,t:"0"},ORM:{o:183,t:"0"},CPA:{o:184,t:"0"},CPB:{o:185,t:"0"},CPC:{o:186,t:"0"},CPD:{o:187,t:"0"},CPE:{o:188,t:"0"},CPH:{o:189,t:"0"},CPL:{o:190,t:"0"},CPM:{o:191,t:"0"},LAA:{o:192,t:"0"},LAB:{o:193,t:"0"},LAC:{o:194,t:"0"},LAD:{o:195,t:"0"},LAE:{o:196,t:"0"},LAH:{o:197,t:"0"},LAL:{o:198,t:"0"},LAM:{o:199,t:"0"},LBA:{o:200,t:"0"},LBB:{o:201,t:"0"},LBC:{o:202,t:"0"},LBD:{o:203,t:"0"},LBE:{o:204,t:"0"},LBH:{o:205,t:"0"},LBL:{o:206,t:"0"},LBM:{o:207,t:"0"},LCA:{o:208,t:"0"},LCB:{o:209,t:"0"},LCC:{o:210,t:"0"},LCD:{o:211,t:"0"},LCE:{o:212,t:"0"},LCH:{o:213,t:"0"},LCL:{o:214,t:"0"},LCM:{o:215,t:"0"},LDA:{o:216,t:"0"},LDB:{o:217,t:"0"},LDC:{o:218,t:"0"},LDD:{o:219,t:"0"},LDE:{o:220,t:"0"},LDH:{o:221,t:"0"},LDL:{o:222,t:"0"},LDM:{o:223,t:"0"},LEA:{o:224,t:"0"},LEB:{o:225,t:"0"},LEC:{o:226,t:"0"},LED:{o:227,t:"0"},LEE:{o:228,t:"0"},LEH:{o:229,t:"0"},LEL:{o:230,t:"0"},LEM:{o:231,t:"0"},LHA:{o:232,t:"0"},LHB:{o:233,t:"0"},LHC:{o:234,t:"0"},LHD:{o:235,t:"0"},LHE:{o:236,t:"0"},LHH:{o:237,t:"0"},LHL:{o:238,t:"0"},LHM:{o:239,t:"0"},LLA:{o:240,t:"0"},LLB:{o:241,t:"0"},LLC:{o:242,t:"0"},LLD:{o:243,t:"0"},LLE:{o:244,t:"0"},LLH:{o:245,t:"0"},LLL:{o:246,t:"0"},LLM:{o:247,t:"0"},LMA:{o:248,t:"0"},LMB:{o:249,t:"0"},LMC:{o:250,t:"0"},LMD:{o:251,t:"0"},LME:{o:252,t:"0"},LMH:{o:253,t:"0"},LML:{o:254,t:"0"},LMM:{o:255,t:"0"},JMP:{o:68,t:"IW"},CAL:{o:70,t:"IW"},CALL:{o:70,t:"IW"},RET:{o:7,t:"0"},JFC:{o:64,t:"IW"},JFZ:{o:72,t:"IW"},JFS:{o:80,t:"IW"},JFP:{o:88,t:"IW"},JTC:{o:96,t:"IW"},JTZ:{o:104,t:"IW"},JTS:{o:112,t:"IW"},JTP:{o:120,t:"IW"},CFC:{o:66,t:"IW"},CFZ:{o:74,t:"IW"},CFS:{o:82,t:"IW"},CFP:{o:90,t:"IW"},CTC:{o:98,t:"IW"},CTZ:{o:106,t:"IW"},CTS:{o:114,t:"IW"},CTP:{o:122,t:"IW"},RFC:{o:3,t:"0"},RFZ:{o:11,t:"0"},RFS:{o:19,t:"0"},RFP:{o:27,t:"0"},RTC:{o:35,t:"0"},RTZ:{o:43,t:"0"},RTS:{o:51,t:"0"},RTP:{o:59,t:"0"},JNC:{o:64,t:"IW"},JNZ:{o:72,t:"IW"},JP:{o:80,t:"IW"},JPO:{o:88,t:"IW"},JC:{o:96,t:"IW"},JZ:{o:104,t:"IW"},JM:{o:112,t:"IW"},JPE:{o:120,t:"IW"},CNC:{o:66,t:"IW"},CNZ:{o:74,t:"IW"},CP:{o:82,t:"IW"},CPO:{o:90,t:"IW"},CC:{o:98,t:"IW"},CZ:{o:106,t:"IW"},CM:{o:114,t:"IW"},"CPE-":{o:122,t:"IW"},RNC:{o:3,t:"0"},RNZ:{o:11,t:"0"},RP:{o:19,t:"0"},RPO:{o:27,t:"0"},RC:{o:35,t:"0"},RZ:{o:43,t:"0"},RM:{o:51,t:"0"},RPE:{o:59,t:"0"},RST:{o:5,t:"RST"},INP:{o:65,t:"INP"},IN:{o:65,t:"INP"},OUT:{o:81,t:"OUT"},LAI:{o:6,t:"B"},LBI:{o:14,t:"B"},LCI:{o:22,t:"B"},LDI:{o:30,t:"B"},LEI:{o:38,t:"B"},LHI:{o:46,t:"B"},LLI:{o:54,t:"B"},LMI:{o:62,t:"B"},RLC:{o:2,t:"0"},RRC:{o:10,t:"0"},RAL:{o:18,t:"0"},RAR:{o:26,t:"0"},ADI:{o:4,t:"B"},ACI:{o:12,t:"B"},SUI:{o:20,t:"B"},SBI:{o:28,t:"B"},NDI:{o:36,t:"B"},ANI:{o:36,t:"B"},XRI:{o:44,t:"B"},ORI:{o:52,t:"B"},CPI:{o:60,t:"B"},INB:{o:8,t:"0"},INC:{o:16,t:"0"},IND:{o:24,t:"0"},INE:{o:32,t:"0"},INH:{o:40,t:"0"},INL:{o:48,t:"0"},DCB:{o:9,t:"0"},DCC:{o:17,t:"0"},DCD:{o:25,t:"0"},DCE:{o:33,t:"0"},DCH:{o:41,t:"0"},DCL:{o:49,t:"0"},MVI:{o:6,t:"RB"},MOV:{o:192,t:"RRR"},"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"},INR:{o:0,t:"RR-"},DCR:{o:1,t:"RR"},HLT:{o:255,t:"0"},NOP:{o:192,t:"0"}},lens:{R:function(t){return"ABCDEHLM".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 r=this.R(o[0]);if(0>r)throw"Unknown register "+o[0];return r<<=3,[r|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 r=this.R(o[0]);if(0>r)throw"Unknown register "+o[0];return r<<=3,[r|t]},"RR-":function(t,o){var r=this.R(o[0]);if(0>r)throw"Unknown register "+o[0];if(0===r)throw"Canot use A register here";return r<<=3,[r|t]},RR0:function(t,o){var r=this.R(o[0]);if(0>r)throw"Unknown register "+o[0];return[r|t]},RRR:function(t,o){var r=this.R(o[0]);if(0>r)throw"Unknown register "+o[0];var n=this.R(o[1]);if(0>n)throw"Unknown register "+o[1];return r<<=3,[r|n|t]},RPW:function(t,o){var r=this.RDD(o[0]);if(0>r||r>3)throw"Unknown register "+o[0];return r<<=4,[r|t,function(t){return Parser.evaluate(o[1],t)},null]},RPWD:function(t,o){var r=this.RDD(o[0]);if(0>r||r>3)throw"Unknown register "+o[0];return r<<=4,[r|t]},BD:function(t,o){var r=this.RBD(o[0]);if(0>r||r>1)throw"Unknown register "+o[0];return r<<=4,[r|t]},RQW:function(t,o){var r=this.RQQ(o[0]);if(0>r||r>3)throw"Unknown register "+o[0];return r<<=4,[r|t]},IW:function(t,o){return[t,function(t){return Parser.evaluate(o[0],t)},null]},INP:function(t,o){var r=Parser.evaluate(o[0],vars);if(0>r||r>7)throw"INP address out of limit (0-7): "+o[0];return[t+(r<<1)]},OUT:function(t,o){var r=Parser.evaluate(o[0],vars);if(8>r||r>31)throw"OUT address out of limit (8-31): "+o[0];return r-=8,[t+(r<<1)]},RST:function(t,o){var r=parseInt(o[0],10);return[t|r<<3]},0:function(t){return[t]}},parseOpcode:function(t){var o=I8008.set[t.opcode];if(o){t.params&&["CPE","ADD","ADC","SBB","SUB","XRA","ORA"].indexOf(t.opcode)>=0&&t.params.length&&(o=I8008.set[t.opcode+"-"]);var r=o.t,n=I8008.lens[r](o.o,t.params);return t.bytes=n.length,t.lens=n,t.resolve=n.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),256>s&&l[6]>=0&&(a=6,u[1]=function(e){return Parser.evaluate(t,e)})}catch(P){}"("===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&&(-1==l[3]&&l[12]?(a=12,u[1]=function(e){var r=Parser.evaluate(t,e)-e._PC-2;return 0>r&&(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(P){}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&&256>s&&l[7]>=0&&"X"===n&&"("!==t[0]?("X"===n&&"("!==t[0]&&(a=7),u[1]=function(e){return Parser.evaluate(t,e)}):s&&256>s&&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,-1===l[0]&&(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),256>l&&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(P){}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),256>l&&o[13]>=0&&(a=13,s[1]=function(e){return Parser.evaluate(t,e)})}catch(P){}}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&&(-1==o[3]&&o[12]>=0?(a=12,s[1]=function(e){var r=Parser.evaluate(t,e)-e._PC-2;return 0>r&&(r=256+r),r}):-1==o[3]&&o[21]>=0?(a=21,s[1]=function(e){var r=Parser.evaluate(t,e)-e._PC-2;return 0>r&&(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(P){}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&&256>l&&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&&256>l&&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(P){}"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,-1===o[0]&&(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(0>r)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(0>r)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(0>r)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),256>n&&C[1]>=0&&(f=1)}catch(A){}}if(0===f)throw"Not detected addressing mode at line "+e.numline;if(-1==C[f])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)}),e.bytes+=L>255?2:1,4==f&&(S=p?function(e){var r=Parser.evaluate(t.substr(1),e)-e._PC-2;return 0>r&&(r=256+r),r}:function(e){var r=Parser.evaluate(t,e)-e._PC-2;return 0>r&&(r=256+r),r}),7==f&&(S=p?function(r){var n=Parser.evaluate(t.substr(1),r)-r._PC-e.bytes;return 0>n&&(n=65536+n),n}:function(r){var n=Parser.evaluate(t,r)-r._PC-e.bytes;return 0>n&&(n=65536+n),n}),e.lens=L>255?[L>>8,255&L,S]:[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 P=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],P=2,e.bytes++):e.lens[0]=C[2],t=e.params[0],e.lens[P]=159,e.lens[P+1]=function(e){return Parser.evaluate(t.substr(1,t.length-2),e)},e.lens[P+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],P=2,e.bytes++):e.lens[0]=C[2];var c=0;t=e.params[0],s=e.params[1],a=t,l=s,"["==t[0]&&"]"==s[s.length-1]&&(c=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(0>r)throw"Register name not recognized: "+e;return r<<5},d=function(e){var r=["X","Y","U","S","PC"].indexOf(e.toUpperCase());if(4==r)return 4;if(0>r)throw"Register name not recognized: "+e;return r<<5};if(""===t){if("-"==s[0])if("-"==s[1])e.lens[P]=131|b(s.substr(2))|c;else{if(c>0)throw"Cannot use predecrement with 1";e.lens[P]=130|b(s.substr(1))}else if("+"==s[1])if("+"==s[2])e.lens[P]=129|b(s.substr(0,1))|c;else{if(c>0)throw"Cannot use postincrement with 1";e.lens[P]=128|b(s.substr(0,1))}else e.lens[P]=132|b(s)|c;return e}if("A"===t.toUpperCase())return e.lens[P]=134|b(s)|c,e;if("B"===t.toUpperCase())return e.lens[P]=133|b(s)|c,e;if("D"===t.toUpperCase())return e.lens[P]=139|b(s)|c,e;try{n=Parser.evaluate(t,r),"PC"==s.toUpperCase()&&(n-=r._PC)}catch(A){n=null}return 16>n&&n>-17&&4!=d(s)?(e.lens[P]=b(s)|c|31&n,e):256>n&&n>-129&&null!==n?(0>n&&(n=256+n),e.lens[P]=d(s)|c|136,e.bytes++,e.lens[P+1]="PC"==s.toUpperCase()?c?function(r){var n=Parser.evaluate(a.substr(1),r)-r._PC-e.bytes;return 0>n&&(n=256+n),n}:function(r){var n=Parser.evaluate(a,r)-r._PC-e.bytes;return 0>n&&(n=256+n),n}:c?function(e){return Parser.evaluate(a.substr(1),e)}:function(e){return Parser.evaluate(a,e)},e):(e.bytes+=2,e.lens[P]=d(s)|c|137,e.lens[P+1]="PC"==s.toUpperCase()?c?function(r){var n=Parser.evaluate(a.substr(1),r)-r._PC-e.bytes;return 0>n&&(n+=65536),n}:function(r){var n=Parser.evaluate(a,r)-r._PC-e.bytes;return 0>n&&(n+=65536),n}:c?function(e){return Parser.evaluate(a.substr(1),e)}:function(e){return Parser.evaluate(a,e)},e.lens[P+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 a,s=r.opcode;if(r.params&&3==s.length&&!("A"!=r.params[0]&&"B"!=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(),s+=r.reg6800}var A=M6800.set[s];if(r.opcode=s,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(a=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(a,r)-r._PC-2;return 0>e&&(e=256+e),e},r.bytes=2,r;if("#"==a[0]&&B>-1)return r.lens[0]=B,r.lens[1]=function(r){return Parser.evaluate(a.substr(1),r)},r.lens[2]=null,r.bytes=3,r;if("#"==a[0]&&u>-1)return r.lens[0]=u,r.lens[1]=function(r){return Parser.evaluate(a.substr(1),r)},r.bytes=2,r;if(t>-1&&e){var C=null;try{C=Parser.evaluate(a,e)}catch(R){}if(256>C&&C>=0)return r.lens[0]=t,r.lens[1]=function(r){return Parser.evaluate(a,r)},r.bytes=2,r}if(S>-1)return r.lens[0]=S,r.lens[1]=function(r){return Parser.evaluate(a,r)},r.lens[2]=null,r.bytes=3,r}if(A[4]>-1&&"X"==r.params[1].toUpperCase())return r.lens[0]=A[4],r.lens[1]=function(r){return Parser.evaluate(a,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(S){n=0/0}else n=parseInt(a.substr(1),10);if(isNaN(n)||n>15||0>n)throw"Unrecognized register: "+a;return e.lens=[s[0]+n],e.bytes=1,e;case 5:a=e.params[0]+"";var B;if(1==a.length)B=parseInt(a,10);else try{B=Parser.evaluate(a,r)}catch(S){B=0/0}if(isNaN(B)||B>7||1>B)throw"Unrecognized port: "+a;return e.lens=[s[0]+B],e.bytes=1,e}return null},endian:!0};