Supported 65816 instructions

Due to legacy from xkas, Asar's MVN and MVP instructions are backwards from most other assemblers: the syntax is MVN dest, src. Also, a 16-bit argument like MVN $ssdd (where $ss is source, $dd is destination) is accepted too (edit: not in asar2 it isn't).

All other instructions use syntax recommended by WDC, with some additional liberties:

  • for accumulator-addressed instructions (inc a etc), the a argument can be omitted.
  • cop, brk and wdm are assembled as 2-byte instructions, with with the second byte being optional and defaulting to zero.
; instruction: assembles to these bytes: BRK ; 00 00 BRK #$12 ; 00 12 ORA ($12,x) ; 01 12 COP ; 02 00 COP #$12 ; 02 12 ORA $12,s ; 03 12 TSB $12 ; 04 12 ORA $12 ; 05 12 ASL $12 ; 06 12 ORA [$12] ; 07 12 PHP ; 08 ORA #$12 ; 09 12 ORA #$1234 ; 09 34 12 ASL A ; 0a PHD ; 0b TSB $1234 ; 0c 34 12 ORA $1234 ; 0d 34 12 ASL $1234 ; 0e 34 12 ORA $123456 ; 0f 56 34 12 BPL $12 ; 10 12 ORA ($12),y ; 11 12 ORA ($12) ; 12 12 ORA ($12,s),y ; 13 12 TRB $12 ; 14 12 ORA $12,x ; 15 12 ASL $12,x ; 16 12 ORA [$12],y ; 17 12 CLC ; 18 ORA $1234,y ; 19 34 12 INC A ; 1a TCS ; 1b TRB $1234 ; 1c 34 12 ORA $1234,x ; 1d 34 12 ASL $1234,x ; 1e 34 12 ORA $123456,x ; 1f 56 34 12 JSR $1234 ; 20 34 12 AND ($12,x) ; 21 12 JSL $123456 ; 22 56 34 12 AND $12,s ; 23 12 BIT $12 ; 24 12 AND $12 ; 25 12 ROL $12 ; 26 12 AND [$12] ; 27 12 PLP ; 28 AND #$12 ; 29 12 AND #$1234 ; 29 34 12 ROL A ; 2a PLD ; 2b BIT $1234 ; 2c 34 12 AND $1234 ; 2d 34 12 ROL $1234 ; 2e 34 12 AND $123456 ; 2f 56 34 12 BMI $12 ; 30 12 AND ($12),y ; 31 12 AND ($12) ; 32 12 AND ($12,s),y ; 33 12 BIT $12,x ; 34 12 AND $12,x ; 35 12 ROL $12,x ; 36 12 AND [$12],y ; 37 12 SEC ; 38 AND $1234,y ; 39 34 12 DEC A ; 3a TSC ; 3b BIT $1234,x ; 3c 34 12 AND $1234,x ; 3d 34 12 ROL $1234,x ; 3e 34 12 AND $123456,x ; 3f 56 34 12 RTI ; 40 EOR ($12,x) ; 41 12 WDM ; 42 00 WDM #$12 ; 42 12 EOR $12,s ; 43 12 MVP $12,$34 ; 44 12 34 EOR $12 ; 45 12 LSR $12 ; 46 12 EOR [$12] ; 47 12 PHA ; 48 EOR #$12 ; 49 12 EOR #$1234 ; 49 34 12 LSR A ; 4a PHK ; 4b JMP $1234 ; 4c 34 12 EOR $1234 ; 4d 34 12 LSR $1234 ; 4e 34 12 EOR $123456 ; 4f 56 34 12 BVC $12 ; 50 23 EOR ($12),y ; 51 12 EOR ($12) ; 52 12 EOR ($12,s),y ; 53 12 MVN $12,$34 ; 54 12 34 EOR $12,x ; 55 12 LSR $12,x ; 56 12 EOR [$12],y ; 57 12 CLI ; 58 EOR $1234,y ; 59 34 12 PHY ; 5a TCD ; 5b JML $123456 ; 5c 56 34 12 EOR $1234,x ; 5d 34 12 LSR $1234,x ; 5e 34 12 EOR $123456,x ; 5f 56 34 12 RTS ; 60 ADC ($12,x) ; 61 12 PER $1234 ; 62 34 12 ADC $12,s ; 63 12 STZ $12 ; 64 12 ADC $12 ; 65 12 ROR $12 ; 66 12 ADC [$12] ; 67 12 PLA ; 68 ADC #$12 ; 69 12 ADC #$1234 ; 69 34 12 ROR A ; 6a RTL ; 6b JMP ($1234) ; 6c 34 12 ADC $1234 ; 6d 34 12 ROR $1234 ; 6e 34 12 ADC $123456 ; 6f 56 34 12 BVS $12 ; 70 12 ADC ($12),y ; 71 12 ADC ($12) ; 72 12 ADC ($12,s),y ; 73 12 STZ $12,x ; 74 12 ADC $12,x ; 75 12 ROR $12,x ; 76 12 ADC [$12],y ; 77 12 SEI ; 78 ADC $1234,y ; 79 34 12 PLY ; 7a TDC ; 7b JMP ($1234,x) ; 7c 34 12 ADC $1234,x ; 7d 34 12 ROR $1234,x ; 7e 34 12 ADC $123456,x ; 7f 56 34 12 BRA $12 ; 80 12 STA ($12,x) ; 81 12 BRL $1234 ; 82 34 12 STA $12,s ; 83 12 STY $12 ; 84 12 STA $12 ; 85 12 STX $12 ; 86 12 STA [$12] ; 87 12 DEY ; 88 BIT #$12 ; 89 12 BIT #$1234 ; 89 34 12 TXA ; 8a PHB ; 8b STY $1234 ; 8c 34 12 STA $1234 ; 8d 34 12 STX $1234 ; 8e 34 12 STA $123456 ; 8f 56 34 12 BCC $12 ; 90 12 STA ($12),y ; 91 12 STA ($12) ; 92 12 STA ($12,s),y ; 93 12 STY $12,x ; 94 12 STA $12,x ; 95 12 STX $12,y ; 96 12 STA [$12],y ; 97 12 TYA ; 98 STA $1234,y ; 99 34 12 TXS ; 9a TXY ; 9b STZ $1234 ; 9c 34 12 STA $1234,x ; 9d 34 12 STZ $1234,x ; 9e 34 12 STA $123456,x ; 9f 56 34 12 LDY #$12 ; a0 12 LDY #$1234 ; a0 34 12 LDA ($12,x) ; a1 12 LDX #$12 ; a2 12 LDX #$1234 ; a2 34 12 LDA $12,s ; a3 12 LDY $12 ; a4 12 LDA $12 ; a5 12 LDX $12 ; a6 12 LDA [$12] ; a7 12 TAY ; a8 LDA #$12 ; a9 12 LDA #$1234 ; a9 34 12 TAX ; aa PLB ; ab LDY $1234 ; ac 34 12 LDA $1234 ; ad 34 12 LDX $1234 ; ae 34 12 LDA $123456 ; af 56 34 12 BCS $12 ; b0 12 LDA ($12),y ; b1 12 LDA ($12) ; b2 12 LDA ($12,s),y ; b3 12 LDY $12,x ; b4 12 LDA $12,x ; b5 12 LDX $12,y ; b6 12 LDA [$12],y ; b7 12 CLV ; b8 LDA $1234,y ; b9 34 12 TSX ; ba TYX ; bb LDY $1234,x ; bc 34 12 LDA $1234,x ; bd 34 12 LDX $1234,y ; be 34 12 LDA $123456,x ; bf 56 34 12 CPY #$12 ; c0 12 CPY #$1234 ; c0 34 12 CMP ($12,x) ; c1 12 REP #$12 ; c2 12 CMP $12,s ; c3 12 CPY $12 ; c4 12 CMP $12 ; c5 12 DEC $12 ; c6 12 CMP [$12] ; c7 12 INY ; c8 CMP #$12 ; c9 12 CMP #$1234 ; c9 34 12 DEX ; ca WAI ; cb CPY $1234 ; cc 34 12 CMP $1234 ; cd 34 12 DEC $1234 ; ce 34 12 CMP $123456 ; cf 56 34 12 BNE $12 ; d0 12 CMP ($12),y ; d1 12 CMP ($12) ; d2 12 CMP ($12,s),y ; d3 12 PEI ($12) ; d4 12 CMP $12,x ; d5 12 DEC $12,x ; d6 12 CMP [$12],y ; d7 12 CLD ; d8 CMP $1234,y ; d9 34 12 PHX ; da STP ; db JML [$1234] ; dc 34 12 CMP $1234,x ; dd 34 12 DEC $1234,x ; de 34 12 CMP $123456,x ; df 56 34 12 CPX #$12 ; e0 12 CPX #$1234 ; e0 34 12 SBC ($12,x) ; e1 12 SEP #$12 ; e2 12 SBC $12,s ; e3 12 CPX $12 ; e4 12 SBC $12 ; e5 12 INC $12 ; e6 12 SBC [$12] ; e7 12 INX ; e8 SBC #$12 ; e9 12 SBC #$1234 ; e9 34 12 NOP ; ea XBA ; eb CPX $1234 ; ec 34 12 SBC $1234 ; ed 34 12 INC $1234 ; ee 34 12 SBC $123456 ; ef 56 34 12 BEQ $12 ; f0 22 SBC ($12),y ; f1 12 SBC ($12) ; f2 12 SBC ($12,s),y ; f3 12 PEA $1234 ; f4 34 12 SBC $12,x ; f5 12 INC $12,x ; f6 12 SBC [$12],y ; f7 12 SED ; f8 SBC $1234,y ; f9 34 12 PLX ; fa XCE ; fb JSR ($1234,x) ; fc 34 12 SBC $1234,x ; fd 34 12 INC $1234,x ; fe 34 12 SBC $123456,x ; ff 56 34 12