using System;

namespace BizHawk.Emulation.Cores.Components.H6280
{
	public partial class HuC6280
	{
		public string Disassemble(ushort pc, out int bytesToAdvance)
		{
			byte op = ReadMemory(pc);
			switch (op)
			{
				case 0x00: bytesToAdvance = 1; return "BRK";
				case 0x01: bytesToAdvance = 2; return $"ORA (${ReadMemory(++pc):X2},X)";
				case 0x02: bytesToAdvance = 1; return "SXY";
				case 0x03: bytesToAdvance = 2; return $"ST0 #${ReadMemory(++pc):X2}";
				case 0x04: bytesToAdvance = 2; return $"TSB ${ReadMemory(++pc):X2}";
				case 0x05: bytesToAdvance = 2; return $"ORA ${ReadMemory(++pc):X2}";
				case 0x06: bytesToAdvance = 2; return $"ASL ${ReadMemory(++pc):X2}";
				case 0x07: bytesToAdvance = 2; return $"RMB0 ${ReadMemory(++pc):X2}";
				case 0x08: bytesToAdvance = 1; return "PHP";
				case 0x09: bytesToAdvance = 2; return $"ORA #${ReadMemory(++pc):X2}";
				case 0x0A: bytesToAdvance = 1; return "ASL A";
				case 0x0C: bytesToAdvance = 3; return $"TSB ${ReadWord(++pc):X4}";
				case 0x0D: bytesToAdvance = 3; return $"ORA ${ReadWord(++pc):X4}";
				case 0x0E: bytesToAdvance = 3; return $"ASL ${ReadWord(++pc):X4}";
				case 0x0F: bytesToAdvance = 3; return $"BBR0 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x10: bytesToAdvance = 2; return $"BPL {(sbyte)ReadMemory(++pc)}";
				case 0x11: bytesToAdvance = 2; return $"ORA (${ReadMemory(++pc):X2}),Y";
				case 0x12: bytesToAdvance = 2; return $"ORA (${ReadMemory(++pc):X2})";
				case 0x13: bytesToAdvance = 2; return $"ST1 #${ReadMemory(++pc):X2}";
				case 0x14: bytesToAdvance = 2; return $"TRB ${ReadMemory(++pc):X2}";
				case 0x15: bytesToAdvance = 2; return $"ORA ${ReadMemory(++pc):X2},X";
				case 0x16: bytesToAdvance = 2; return $"ASL ${ReadMemory(++pc):X2},X";
				case 0x17: bytesToAdvance = 2; return $"RMB1 ${ReadMemory(++pc):X2}";
				case 0x18: bytesToAdvance = 1; return "CLC";
				case 0x19: bytesToAdvance = 3; return $"ORA ${ReadWord(++pc):X4},Y";
				case 0x1A: bytesToAdvance = 1; return "INC A";
				case 0x1C: bytesToAdvance = 3; return $"TRB ${ReadWord(++pc):X4}";
				case 0x1D: bytesToAdvance = 3; return $"ORA ${ReadWord(++pc):X4},X";
				case 0x1E: bytesToAdvance = 3; return $"ASL ${ReadWord(++pc):X4},X";
				case 0x1F: bytesToAdvance = 3; return $"BBR1 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x20: bytesToAdvance = 3; return $"JSR ${ReadWord(++pc):X4}";
				case 0x21: bytesToAdvance = 2; return $"AND (${ReadMemory(++pc):X2},X)";
				case 0x22: bytesToAdvance = 1; return "SAX";
				case 0x23: bytesToAdvance = 2; return $"ST2 #${ReadMemory(++pc):X2}";
				case 0x24: bytesToAdvance = 2; return $"BIT ${ReadMemory(++pc):X2}";
				case 0x25: bytesToAdvance = 2; return $"AND ${ReadMemory(++pc):X2}";
				case 0x26: bytesToAdvance = 2; return $"ROL ${ReadMemory(++pc):X2}";
				case 0x27: bytesToAdvance = 2; return $"RMB2 ${ReadMemory(++pc):X2}";
				case 0x28: bytesToAdvance = 1; return "PLP";
				case 0x29: bytesToAdvance = 2; return $"AND #${ReadMemory(++pc):X2}";
				case 0x2A: bytesToAdvance = 1; return "ROL A";
				case 0x2C: bytesToAdvance = 3; return $"BIT ${ReadWord(++pc):X4}";
				case 0x2D: bytesToAdvance = 3; return $"AND ${ReadWord(++pc):X4}";
				case 0x2E: bytesToAdvance = 3; return $"ROL ${ReadWord(++pc):X4}";
				case 0x2F: bytesToAdvance = 3; return $"BBR2 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x30: bytesToAdvance = 2; return $"BMI {(sbyte)ReadMemory(++pc)}";
				case 0x31: bytesToAdvance = 2; return $"AND (${ReadMemory(++pc):X2}),Y";
				case 0x32: bytesToAdvance = 2; return $"AND (${ReadMemory(++pc):X2})";
				case 0x34: bytesToAdvance = 2; return $"BIT ${ReadMemory(++pc):X2},X";
				case 0x35: bytesToAdvance = 2; return $"AND ${ReadMemory(++pc):X2},X";
				case 0x36: bytesToAdvance = 2; return $"ROL ${ReadMemory(++pc):X2},X";
				case 0x37: bytesToAdvance = 2; return $"RMB3 ${ReadMemory(++pc):X2}";
				case 0x38: bytesToAdvance = 1; return "SEC";
				case 0x39: bytesToAdvance = 3; return $"AND ${ReadWord(++pc):X4},Y";
				case 0x3A: bytesToAdvance = 1; return "DEC A";
				case 0x3C: bytesToAdvance = 3; return $"BIT ${ReadWord(++pc):X4},X";
				case 0x3D: bytesToAdvance = 3; return $"AND ${ReadWord(++pc):X4},X";
				case 0x3E: bytesToAdvance = 3; return $"ROL ${ReadWord(++pc):X4},X";
				case 0x3F: bytesToAdvance = 3; return $"BBR3 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x40: bytesToAdvance = 1; return "RTI";
				case 0x41: bytesToAdvance = 2; return $"EOR (${ReadMemory(++pc):X2},X)";
				case 0x42: bytesToAdvance = 1; return "SAY";
				case 0x43: bytesToAdvance = 2; return $"TMA #${ReadMemory(++pc):X2}";
				case 0x44: bytesToAdvance = 2; return $"BSR {(sbyte)ReadMemory(++pc)}";
				case 0x45: bytesToAdvance = 2; return $"EOR ${ReadMemory(++pc):X2}";
				case 0x46: bytesToAdvance = 2; return $"LSR ${ReadMemory(++pc):X2}";
				case 0x47: bytesToAdvance = 2; return $"RMB4 ${ReadMemory(++pc):X2}";
				case 0x48: bytesToAdvance = 1; return "PHA";
				case 0x49: bytesToAdvance = 2; return $"EOR #${ReadMemory(++pc):X2}";
				case 0x4A: bytesToAdvance = 1; return "LSR A";
				case 0x4C: bytesToAdvance = 3; return $"JMP ${ReadWord(++pc):X4}";
				case 0x4D: bytesToAdvance = 3; return $"EOR ${ReadWord(++pc):X4}";
				case 0x4E: bytesToAdvance = 3; return $"LSR ${ReadWord(++pc):X4}";
				case 0x4F: bytesToAdvance = 3; return $"BBR4 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x50: bytesToAdvance = 2; return $"BVC {(sbyte)ReadMemory(++pc)}";
				case 0x51: bytesToAdvance = 2; return $"EOR (${ReadMemory(++pc):X2}),Y";
				case 0x52: bytesToAdvance = 2; return $"EOR (${ReadMemory(++pc):X2})";
				case 0x53: bytesToAdvance = 2; return $"TAM #${ReadMemory(++pc):X2}";
				case 0x54: bytesToAdvance = 1; return "CSL";
				case 0x55: bytesToAdvance = 2; return $"EOR ${ReadMemory(++pc):X2},X";
				case 0x56: bytesToAdvance = 2; return $"LSR ${ReadMemory(++pc):X2},X";
				case 0x57: bytesToAdvance = 2; return $"RMB5 ${ReadMemory(++pc):X2}";
				case 0x58: bytesToAdvance = 1; return "CLI";
				case 0x59: bytesToAdvance = 3; return $"EOR ${ReadWord(++pc):X4},Y";
				case 0x5A: bytesToAdvance = 1; return "PHY";
				case 0x5D: bytesToAdvance = 3; return $"EOR ${ReadWord(++pc):X4},X";
				case 0x5E: bytesToAdvance = 3; return $"LSR ${ReadWord(++pc):X4},X";
				case 0x5F: bytesToAdvance = 3; return $"BBR5 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x60: bytesToAdvance = 1; return "RTS";
				case 0x61: bytesToAdvance = 2; return $"ADC (${ReadMemory(++pc):X2},X)";
				case 0x62: bytesToAdvance = 1; return "CLA";
				case 0x64: bytesToAdvance = 2; return $"STZ ${ReadMemory(++pc):X2}";
				case 0x65: bytesToAdvance = 2; return $"ADC ${ReadMemory(++pc):X2}";
				case 0x66: bytesToAdvance = 2; return $"ROR ${ReadMemory(++pc):X2}";
				case 0x67: bytesToAdvance = 2; return $"RMB6 ${ReadMemory(++pc):X2}";
				case 0x68: bytesToAdvance = 1; return "PLA";
				case 0x69: bytesToAdvance = 2; return $"ADC #${ReadMemory(++pc):X2}";
				case 0x6A: bytesToAdvance = 1; return "ROR A";
				case 0x6C: bytesToAdvance = 3; return $"JMP (${ReadWord(++pc):X4})";
				case 0x6D: bytesToAdvance = 3; return $"ADC ${ReadWord(++pc):X4}";
				case 0x6E: bytesToAdvance = 3; return $"ROR ${ReadWord(++pc):X4}";
				case 0x6F: bytesToAdvance = 3; return $"BBR6 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x70: bytesToAdvance = 2; return $"BVS {(sbyte)ReadMemory(++pc)}";
				case 0x71: bytesToAdvance = 2; return $"ADC (${ReadMemory(++pc):X2}),Y";
				case 0x72: bytesToAdvance = 2; return $"ADC (${ReadMemory(++pc):X2})";
				case 0x73: bytesToAdvance = 7; return $"TII {ReadWord((ushort)(pc + 1)):X4},{ReadWord((ushort)(pc + 3)):X4},{ReadWord((ushort)(pc + 5)):X4}";
				case 0x74: bytesToAdvance = 2; return $"STZ ${ReadMemory(++pc):X2},X";
				case 0x75: bytesToAdvance = 2; return $"ADC ${ReadMemory(++pc):X2},X";
				case 0x76: bytesToAdvance = 2; return $"ROR ${ReadMemory(++pc):X2},X";
				case 0x77: bytesToAdvance = 2; return $"RMB7 ${ReadMemory(++pc):X2}";
				case 0x78: bytesToAdvance = 1; return "SEI";
				case 0x79: bytesToAdvance = 3; return $"ADC ${ReadWord(++pc):X4},Y";
				case 0x7A: bytesToAdvance = 1; return "PLY";
				case 0x7C: bytesToAdvance = 3; return $"JMP (${ReadWord(++pc):X4},X)";
				case 0x7D: bytesToAdvance = 3; return $"ADC ${ReadWord(++pc):X4},X";
				case 0x7E: bytesToAdvance = 3; return $"ROR ${ReadWord(++pc):X4},X";
				case 0x7F: bytesToAdvance = 3; return $"BBR7 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x80: bytesToAdvance = 2; return $"BRA {(sbyte)ReadMemory(++pc)}";
				case 0x81: bytesToAdvance = 2; return $"STA (${ReadMemory(++pc):X2},X)";
				case 0x82: bytesToAdvance = 1; return "CLX";
				case 0x83: bytesToAdvance = 3; return $"TST #${ReadMemory(++pc):X2}, ${ReadMemory(++pc):X2}";
				case 0x84: bytesToAdvance = 2; return $"STY ${ReadMemory(++pc):X2}";
				case 0x85: bytesToAdvance = 2; return $"STA ${ReadMemory(++pc):X2}";
				case 0x86: bytesToAdvance = 2; return $"STX ${ReadMemory(++pc):X2}";
				case 0x87: bytesToAdvance = 2; return $"SMB0 ${ReadMemory(++pc):X2}";
				case 0x88: bytesToAdvance = 1; return "DEY";
				case 0x89: bytesToAdvance = 2; return $"BIT #${ReadMemory(++pc):X2}";
				case 0x8A: bytesToAdvance = 1; return "TXA";
				case 0x8C: bytesToAdvance = 3; return $"STY ${ReadWord(++pc):X4}";
				case 0x8D: bytesToAdvance = 3; return $"STA ${ReadWord(++pc):X4}";
				case 0x8E: bytesToAdvance = 3; return $"STX ${ReadWord(++pc):X4}";
				case 0x8F: bytesToAdvance = 3; return $"BBS0 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x90: bytesToAdvance = 2; return $"BCC {(sbyte)ReadMemory(++pc)}";
				case 0x91: bytesToAdvance = 2; return $"STA (${ReadMemory(++pc):X2}),Y";
				case 0x92: bytesToAdvance = 2; return $"STA (${ReadMemory(++pc):X2})";
				case 0x93: bytesToAdvance = 4; return $"TST #${ReadMemory(++pc):X2}, ${ReadWord(++pc):X4}";
				case 0x94: bytesToAdvance = 2; return $"STY ${ReadMemory(++pc):X2},X";
				case 0x95: bytesToAdvance = 2; return $"STA ${ReadMemory(++pc):X2},X";
				case 0x96: bytesToAdvance = 2; return $"STX ${ReadMemory(++pc):X2},Y";
				case 0x97: bytesToAdvance = 2; return $"SMB1 ${ReadMemory(++pc):X2}";
				case 0x98: bytesToAdvance = 1; return "TYA";
				case 0x99: bytesToAdvance = 3; return $"STA ${ReadWord(++pc):X4},Y";
				case 0x9A: bytesToAdvance = 1; return "TXS";
				case 0x9C: bytesToAdvance = 3; return $"STZ ${ReadWord(++pc):X4}";
				case 0x9D: bytesToAdvance = 3; return $"STA ${ReadWord(++pc):X4},X";
				case 0x9E: bytesToAdvance = 3; return $"STZ ${ReadWord(++pc):X4},X";
				case 0x9F: bytesToAdvance = 3; return $"BBS1 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0xA0: bytesToAdvance = 2; return $"LDY #${ReadMemory(++pc):X2}";
				case 0xA1: bytesToAdvance = 2; return $"LDA (${ReadMemory(++pc):X2},X)";
				case 0xA2: bytesToAdvance = 2; return $"LDX #${ReadMemory(++pc):X2}";
				case 0xA3: bytesToAdvance = 3; return $"TST #${ReadMemory(++pc):X2}, ${ReadMemory(++pc):X2},X";
				case 0xA4: bytesToAdvance = 2; return $"LDY ${ReadMemory(++pc):X2}";
				case 0xA5: bytesToAdvance = 2; return $"LDA ${ReadMemory(++pc):X2}";
				case 0xA6: bytesToAdvance = 2; return $"LDX ${ReadMemory(++pc):X2}";
				case 0xA7: bytesToAdvance = 2; return $"SMB2 ${ReadMemory(++pc):X2}";
				case 0xA8: bytesToAdvance = 1; return "TAY";
				case 0xA9: bytesToAdvance = 2; return $"LDA #${ReadMemory(++pc):X2}";
				case 0xAA: bytesToAdvance = 1; return "TAX";
				case 0xAC: bytesToAdvance = 3; return $"LDY ${ReadWord(++pc):X4}";
				case 0xAD: bytesToAdvance = 3; return $"LDA ${ReadWord(++pc):X4}";
				case 0xAE: bytesToAdvance = 3; return $"LDX ${ReadWord(++pc):X4}";
				case 0xAF: bytesToAdvance = 3; return $"BBS2 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0xB0: bytesToAdvance = 2; return $"BCS {(sbyte)ReadMemory(++pc)}";
				case 0xB1: bytesToAdvance = 2; return $"LDA (${ReadMemory(++pc):X2}),Y";
				case 0xB2: bytesToAdvance = 2; return $"LDA (${ReadMemory(++pc):X2})";
				case 0xB3: bytesToAdvance = 4; return $"TST #${ReadMemory(++pc):X2}, ${ReadWord(++pc):X4},X";
				case 0xB4: bytesToAdvance = 2; return $"LDY ${ReadMemory(++pc):X2},X";
				case 0xB5: bytesToAdvance = 2; return $"LDA ${ReadMemory(++pc):X2},X";
				case 0xB6: bytesToAdvance = 2; return $"LDX ${ReadMemory(++pc):X2},Y";
				case 0xB7: bytesToAdvance = 2; return $"SMB3 ${ReadMemory(++pc):X2}";
				case 0xB8: bytesToAdvance = 1; return "CLV";
				case 0xB9: bytesToAdvance = 3; return $"LDA ${ReadWord(++pc):X4},Y";
				case 0xBA: bytesToAdvance = 1; return "TSX";
				case 0xBC: bytesToAdvance = 3; return $"LDY ${ReadWord(++pc):X4},X";
				case 0xBD: bytesToAdvance = 3; return $"LDA ${ReadWord(++pc):X4},X";
				case 0xBE: bytesToAdvance = 3; return $"LDX ${ReadWord(++pc):X4},Y";
				case 0xBF: bytesToAdvance = 3; return $"BBS3 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0xC0: bytesToAdvance = 2; return $"CPY #${ReadMemory(++pc):X2}";
				case 0xC1: bytesToAdvance = 2; return $"CMP (${ReadMemory(++pc):X2},X)";
				case 0xC2: bytesToAdvance = 1; return "CLY";
				case 0xC3: bytesToAdvance = 7; return $"TDD {ReadWord((ushort)(pc + 1)):X4},{ReadWord((ushort)(pc + 3)):X4},{ReadWord((ushort)(pc + 5)):X4}";
				case 0xC4: bytesToAdvance = 2; return $"CPY ${ReadMemory(++pc):X2}";
				case 0xC5: bytesToAdvance = 2; return $"CMP ${ReadMemory(++pc):X2}";
				case 0xC6: bytesToAdvance = 2; return $"DEC ${ReadMemory(++pc):X2}";
				case 0xC7: bytesToAdvance = 2; return $"SMB4 ${ReadMemory(++pc):X2}";
				case 0xC8: bytesToAdvance = 1; return "INY";
				case 0xC9: bytesToAdvance = 2; return $"CMP #${ReadMemory(++pc):X2}";
				case 0xCA: bytesToAdvance = 1; return "DEX";
				case 0xCC: bytesToAdvance = 3; return $"CPY ${ReadWord(++pc):X4}";
				case 0xCD: bytesToAdvance = 3; return $"CMP ${ReadWord(++pc):X4}";
				case 0xCE: bytesToAdvance = 3; return $"DEC ${ReadWord(++pc):X4}";
				case 0xCF: bytesToAdvance = 3; return $"BBS4 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0xD0: bytesToAdvance = 2; return $"BNE {(sbyte)ReadMemory(++pc)}";
				case 0xD1: bytesToAdvance = 2; return $"CMP (${ReadMemory(++pc):X2}),Y";
				case 0xD2: bytesToAdvance = 2; return $"CMP (${ReadMemory(++pc):X2})";
				case 0xD3: bytesToAdvance = 7; return $"TIN {ReadWord((ushort)(pc + 1)):X4},{ReadWord((ushort)(pc + 3)):X4},{ReadWord((ushort)(pc + 5)):X4}";
				case 0xD4: bytesToAdvance = 1; return "CSH";
				case 0xD5: bytesToAdvance = 2; return $"CMP ${ReadMemory(++pc):X2},X";
				case 0xD6: bytesToAdvance = 2; return $"DEC ${ReadMemory(++pc):X2},X";
				case 0xD7: bytesToAdvance = 2; return $"SMB5 ${ReadMemory(++pc):X2}";
				case 0xD8: bytesToAdvance = 1; return "CLD";
				case 0xD9: bytesToAdvance = 3; return $"CMP ${ReadWord(++pc):X4},Y";
				case 0xDA: bytesToAdvance = 1; return "PHX";
				case 0xDD: bytesToAdvance = 3; return $"CMP ${ReadWord(++pc):X4},X";
				case 0xDE: bytesToAdvance = 3; return $"DEC ${ReadWord(++pc):X4},X";
				case 0xDF: bytesToAdvance = 3; return $"BBS5 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0xE0: bytesToAdvance = 2; return $"CPX #${ReadMemory(++pc):X2}";
				case 0xE1: bytesToAdvance = 2; return $"SBC (${ReadMemory(++pc):X2},X)";
				case 0xE3: bytesToAdvance = 7; return $"TIA {ReadWord((ushort)(pc + 1)):X4},{ReadWord((ushort)(pc + 3)):X4},{ReadWord((ushort)(pc + 5)):X4}";
				case 0xE4: bytesToAdvance = 2; return $"CPX ${ReadMemory(++pc):X2}";
				case 0xE5: bytesToAdvance = 2; return $"SBC ${ReadMemory(++pc):X2}";
				case 0xE6: bytesToAdvance = 2; return $"INC ${ReadMemory(++pc):X2}";
				case 0xE7: bytesToAdvance = 2; return $"SMB6 ${ReadMemory(++pc):X2}";
				case 0xE8: bytesToAdvance = 1; return "INX";
				case 0xE9: bytesToAdvance = 2; return $"SBC #${ReadMemory(++pc):X2}";
				case 0xEA: bytesToAdvance = 1; return "NOP";
				case 0xEC: bytesToAdvance = 3; return $"CPX ${ReadWord(++pc):X4}";
				case 0xED: bytesToAdvance = 3; return $"SBC ${ReadWord(++pc):X4}";
				case 0xEE: bytesToAdvance = 3; return $"INC ${ReadWord(++pc):X4}";
				case 0xEF: bytesToAdvance = 3; return $"BBS6 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0xF0: bytesToAdvance = 2; return $"BEQ {(sbyte)ReadMemory(++pc)}";
				case 0xF1: bytesToAdvance = 2; return $"SBC (${ReadMemory(++pc):X2}),Y";
				case 0xF2: bytesToAdvance = 2; return $"SBC (${ReadMemory(++pc):X2})";
				case 0xF3: bytesToAdvance = 7; return $"TAI {ReadWord((ushort)(pc + 1)):X4},{ReadWord((ushort)(pc + 3)):X4},{ReadWord((ushort)(pc + 5)):X4}";
				case 0xF4: bytesToAdvance = 1; return "SET";
				case 0xF5: bytesToAdvance = 2; return $"SBC ${ReadMemory(++pc):X2},X";
				case 0xF6: bytesToAdvance = 2; return $"INC ${ReadMemory(++pc):X2},X";
				case 0xF7: bytesToAdvance = 2; return $"SMB7 ${ReadMemory(++pc):X2}";
				case 0xF8: bytesToAdvance = 1; return "SED";
				case 0xF9: bytesToAdvance = 3; return $"SBC ${ReadWord(++pc):X4},Y";
				case 0xFA: bytesToAdvance = 1; return "PLX";
				case 0xFD: bytesToAdvance = 3; return $"SBC ${ReadWord(++pc):X4},X";
				case 0xFE: bytesToAdvance = 3; return $"INC ${ReadWord(++pc):X4},X";
				case 0xFF: bytesToAdvance = 3; return $"BBS7 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
			}
			bytesToAdvance = 1;
			return "???";
		}

		// avoid slowing down the other disassembler
		public static string DisassembleExt(ushort pc, out int bytesToAdvance, Func<ushort, byte> ReadMemory, Func<ushort, ushort> ReadWord)
		{
			byte op = ReadMemory(pc);
			switch (op)
			{
				case 0x00: bytesToAdvance = 1; return "BRK";
				case 0x01: bytesToAdvance = 2; return $"ORA (${ReadMemory(++pc):X2},X)";
				case 0x02: bytesToAdvance = 1; return "SXY";
				case 0x03: bytesToAdvance = 2; return $"ST0 #${ReadMemory(++pc):X2}";
				case 0x04: bytesToAdvance = 2; return $"TSB ${ReadMemory(++pc):X2}";
				case 0x05: bytesToAdvance = 2; return $"ORA ${ReadMemory(++pc):X2}";
				case 0x06: bytesToAdvance = 2; return $"ASL ${ReadMemory(++pc):X2}";
				case 0x07: bytesToAdvance = 2; return $"RMB0 ${ReadMemory(++pc):X2}";
				case 0x08: bytesToAdvance = 1; return "PHP";
				case 0x09: bytesToAdvance = 2; return $"ORA #${ReadMemory(++pc):X2}";
				case 0x0A: bytesToAdvance = 1; return "ASL A";
				case 0x0C: bytesToAdvance = 3; return $"TSB ${ReadWord(++pc):X4}";
				case 0x0D: bytesToAdvance = 3; return $"ORA ${ReadWord(++pc):X4}";
				case 0x0E: bytesToAdvance = 3; return $"ASL ${ReadWord(++pc):X4}";
				case 0x0F: bytesToAdvance = 3; return $"BBR0 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x10: bytesToAdvance = 2; return $"BPL {(sbyte)ReadMemory(++pc)}";
				case 0x11: bytesToAdvance = 2; return $"ORA (${ReadMemory(++pc):X2}),Y";
				case 0x12: bytesToAdvance = 2; return $"ORA (${ReadMemory(++pc):X2})";
				case 0x13: bytesToAdvance = 2; return $"ST1 #${ReadMemory(++pc):X2}";
				case 0x14: bytesToAdvance = 2; return $"TRB ${ReadMemory(++pc):X2}";
				case 0x15: bytesToAdvance = 2; return $"ORA ${ReadMemory(++pc):X2},X";
				case 0x16: bytesToAdvance = 2; return $"ASL ${ReadMemory(++pc):X2},X";
				case 0x17: bytesToAdvance = 2; return $"RMB1 ${ReadMemory(++pc):X2}";
				case 0x18: bytesToAdvance = 1; return "CLC";
				case 0x19: bytesToAdvance = 3; return $"ORA ${ReadWord(++pc):X4},Y";
				case 0x1A: bytesToAdvance = 1; return "INC A";
				case 0x1C: bytesToAdvance = 3; return $"TRB ${ReadWord(++pc):X4}";
				case 0x1D: bytesToAdvance = 3; return $"ORA ${ReadWord(++pc):X4},X";
				case 0x1E: bytesToAdvance = 3; return $"ASL ${ReadWord(++pc):X4},X";
				case 0x1F: bytesToAdvance = 3; return $"BBR1 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x20: bytesToAdvance = 3; return $"JSR ${ReadWord(++pc):X4}";
				case 0x21: bytesToAdvance = 2; return $"AND (${ReadMemory(++pc):X2},X)";
				case 0x22: bytesToAdvance = 1; return "SAX";
				case 0x23: bytesToAdvance = 2; return $"ST2 #${ReadMemory(++pc):X2}";
				case 0x24: bytesToAdvance = 2; return $"BIT ${ReadMemory(++pc):X2}";
				case 0x25: bytesToAdvance = 2; return $"AND ${ReadMemory(++pc):X2}";
				case 0x26: bytesToAdvance = 2; return $"ROL ${ReadMemory(++pc):X2}";
				case 0x27: bytesToAdvance = 2; return $"RMB2 ${ReadMemory(++pc):X2}";
				case 0x28: bytesToAdvance = 1; return "PLP";
				case 0x29: bytesToAdvance = 2; return $"AND #${ReadMemory(++pc):X2}";
				case 0x2A: bytesToAdvance = 1; return "ROL A";
				case 0x2C: bytesToAdvance = 3; return $"BIT ${ReadWord(++pc):X4}";
				case 0x2D: bytesToAdvance = 3; return $"AND ${ReadWord(++pc):X4}";
				case 0x2E: bytesToAdvance = 3; return $"ROL ${ReadWord(++pc):X4}";
				case 0x2F: bytesToAdvance = 3; return $"BBR2 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x30: bytesToAdvance = 2; return $"BMI {(sbyte)ReadMemory(++pc)}";
				case 0x31: bytesToAdvance = 2; return $"AND (${ReadMemory(++pc):X2}),Y";
				case 0x32: bytesToAdvance = 2; return $"AND (${ReadMemory(++pc):X2})";
				case 0x34: bytesToAdvance = 2; return $"BIT ${ReadMemory(++pc):X2},X";
				case 0x35: bytesToAdvance = 2; return $"AND ${ReadMemory(++pc):X2},X";
				case 0x36: bytesToAdvance = 2; return $"ROL ${ReadMemory(++pc):X2},X";
				case 0x37: bytesToAdvance = 2; return $"RMB3 ${ReadMemory(++pc):X2}";
				case 0x38: bytesToAdvance = 1; return "SEC";
				case 0x39: bytesToAdvance = 3; return $"AND ${ReadWord(++pc):X4},Y";
				case 0x3A: bytesToAdvance = 1; return "DEC A";
				case 0x3C: bytesToAdvance = 3; return $"BIT ${ReadWord(++pc):X4},X";
				case 0x3D: bytesToAdvance = 3; return $"AND ${ReadWord(++pc):X4},X";
				case 0x3E: bytesToAdvance = 3; return $"ROL ${ReadWord(++pc):X4},X";
				case 0x3F: bytesToAdvance = 3; return $"BBR3 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x40: bytesToAdvance = 1; return "RTI";
				case 0x41: bytesToAdvance = 2; return $"EOR (${ReadMemory(++pc):X2},X)";
				case 0x42: bytesToAdvance = 1; return "SAY";
				case 0x43: bytesToAdvance = 2; return $"TMA #${ReadMemory(++pc):X2}";
				case 0x44: bytesToAdvance = 2; return $"BSR {(sbyte)ReadMemory(++pc)}";
				case 0x45: bytesToAdvance = 2; return $"EOR ${ReadMemory(++pc):X2}";
				case 0x46: bytesToAdvance = 2; return $"LSR ${ReadMemory(++pc):X2}";
				case 0x47: bytesToAdvance = 2; return $"RMB4 ${ReadMemory(++pc):X2}";
				case 0x48: bytesToAdvance = 1; return "PHA";
				case 0x49: bytesToAdvance = 2; return $"EOR #${ReadMemory(++pc):X2}";
				case 0x4A: bytesToAdvance = 1; return "LSR A";
				case 0x4C: bytesToAdvance = 3; return $"JMP ${ReadWord(++pc):X4}";
				case 0x4D: bytesToAdvance = 3; return $"EOR ${ReadWord(++pc):X4}";
				case 0x4E: bytesToAdvance = 3; return $"LSR ${ReadWord(++pc):X4}";
				case 0x4F: bytesToAdvance = 3; return $"BBR4 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x50: bytesToAdvance = 2; return $"BVC {(sbyte)ReadMemory(++pc)}";
				case 0x51: bytesToAdvance = 2; return $"EOR (${ReadMemory(++pc):X2}),Y";
				case 0x52: bytesToAdvance = 2; return $"EOR (${ReadMemory(++pc):X2})";
				case 0x53: bytesToAdvance = 2; return $"TAM #${ReadMemory(++pc):X2}";
				case 0x54: bytesToAdvance = 1; return "CSL";
				case 0x55: bytesToAdvance = 2; return $"EOR ${ReadMemory(++pc):X2},X";
				case 0x56: bytesToAdvance = 2; return $"LSR ${ReadMemory(++pc):X2},X";
				case 0x57: bytesToAdvance = 2; return $"RMB5 ${ReadMemory(++pc):X2}";
				case 0x58: bytesToAdvance = 1; return "CLI";
				case 0x59: bytesToAdvance = 3; return $"EOR ${ReadWord(++pc):X4},Y";
				case 0x5A: bytesToAdvance = 1; return "PHY";
				case 0x5D: bytesToAdvance = 3; return $"EOR ${ReadWord(++pc):X4},X";
				case 0x5E: bytesToAdvance = 3; return $"LSR ${ReadWord(++pc):X4},X";
				case 0x5F: bytesToAdvance = 3; return $"BBR5 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x60: bytesToAdvance = 1; return "RTS";
				case 0x61: bytesToAdvance = 2; return $"ADC (${ReadMemory(++pc):X2},X)";
				case 0x62: bytesToAdvance = 1; return "CLA";
				case 0x64: bytesToAdvance = 2; return $"STZ ${ReadMemory(++pc):X2}";
				case 0x65: bytesToAdvance = 2; return $"ADC ${ReadMemory(++pc):X2}";
				case 0x66: bytesToAdvance = 2; return $"ROR ${ReadMemory(++pc):X2}";
				case 0x67: bytesToAdvance = 2; return $"RMB6 ${ReadMemory(++pc):X2}";
				case 0x68: bytesToAdvance = 1; return "PLA";
				case 0x69: bytesToAdvance = 2; return $"ADC #${ReadMemory(++pc):X2}";
				case 0x6A: bytesToAdvance = 1; return "ROR A";
				case 0x6C: bytesToAdvance = 3; return $"JMP (${ReadWord(++pc):X4})";
				case 0x6D: bytesToAdvance = 3; return $"ADC ${ReadWord(++pc):X4}";
				case 0x6E: bytesToAdvance = 3; return $"ROR ${ReadWord(++pc):X4}";
				case 0x6F: bytesToAdvance = 3; return $"BBR6 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x70: bytesToAdvance = 2; return $"BVS {(sbyte)ReadMemory(++pc)}";
				case 0x71: bytesToAdvance = 2; return $"ADC (${ReadMemory(++pc):X2}),Y";
				case 0x72: bytesToAdvance = 2; return $"ADC (${ReadMemory(++pc):X2})";
				case 0x73: bytesToAdvance = 7; return $"TII {ReadWord((ushort)(pc + 1)):X4},{ReadWord((ushort)(pc + 3)):X4},{ReadWord((ushort)(pc + 5)):X4}";
				case 0x74: bytesToAdvance = 2; return $"STZ ${ReadMemory(++pc):X2},X";
				case 0x75: bytesToAdvance = 2; return $"ADC ${ReadMemory(++pc):X2},X";
				case 0x76: bytesToAdvance = 2; return $"ROR ${ReadMemory(++pc):X2},X";
				case 0x77: bytesToAdvance = 2; return $"RMB7 ${ReadMemory(++pc):X2}";
				case 0x78: bytesToAdvance = 1; return "SEI";
				case 0x79: bytesToAdvance = 3; return $"ADC ${ReadWord(++pc):X4},Y";
				case 0x7A: bytesToAdvance = 1; return "PLY";
				case 0x7C: bytesToAdvance = 3; return $"JMP (${ReadWord(++pc):X4},X)";
				case 0x7D: bytesToAdvance = 3; return $"ADC ${ReadWord(++pc):X4},X";
				case 0x7E: bytesToAdvance = 3; return $"ROR ${ReadWord(++pc):X4},X";
				case 0x7F: bytesToAdvance = 3; return $"BBR7 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x80: bytesToAdvance = 2; return $"BRA {(sbyte)ReadMemory(++pc)}";
				case 0x81: bytesToAdvance = 2; return $"STA (${ReadMemory(++pc):X2},X)";
				case 0x82: bytesToAdvance = 1; return "CLX";
				case 0x83: bytesToAdvance = 3; return $"TST #${ReadMemory(++pc):X2}, ${ReadMemory(++pc):X2}";
				case 0x84: bytesToAdvance = 2; return $"STY ${ReadMemory(++pc):X2}";
				case 0x85: bytesToAdvance = 2; return $"STA ${ReadMemory(++pc):X2}";
				case 0x86: bytesToAdvance = 2; return $"STX ${ReadMemory(++pc):X2}";
				case 0x87: bytesToAdvance = 2; return $"SMB0 ${ReadMemory(++pc):X2}";
				case 0x88: bytesToAdvance = 1; return "DEY";
				case 0x89: bytesToAdvance = 2; return $"BIT #${ReadMemory(++pc):X2}";
				case 0x8A: bytesToAdvance = 1; return "TXA";
				case 0x8C: bytesToAdvance = 3; return $"STY ${ReadWord(++pc):X4}";
				case 0x8D: bytesToAdvance = 3; return $"STA ${ReadWord(++pc):X4}";
				case 0x8E: bytesToAdvance = 3; return $"STX ${ReadWord(++pc):X4}";
				case 0x8F: bytesToAdvance = 3; return $"BBS0 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0x90: bytesToAdvance = 2; return $"BCC {(sbyte)ReadMemory(++pc)}";
				case 0x91: bytesToAdvance = 2; return $"STA (${ReadMemory(++pc):X2}),Y";
				case 0x92: bytesToAdvance = 2; return $"STA (${ReadMemory(++pc):X2})";
				case 0x93: bytesToAdvance = 4; return $"TST #${ReadMemory(++pc):X2}, ${ReadWord(++pc):X4}";
				case 0x94: bytesToAdvance = 2; return $"STY ${ReadMemory(++pc):X2},X";
				case 0x95: bytesToAdvance = 2; return $"STA ${ReadMemory(++pc):X2},X";
				case 0x96: bytesToAdvance = 2; return $"STX ${ReadMemory(++pc):X2},Y";
				case 0x97: bytesToAdvance = 2; return $"SMB1 ${ReadMemory(++pc):X2}";
				case 0x98: bytesToAdvance = 1; return "TYA";
				case 0x99: bytesToAdvance = 3; return $"STA ${ReadWord(++pc):X4},Y";
				case 0x9A: bytesToAdvance = 1; return "TXS";
				case 0x9C: bytesToAdvance = 3; return $"STZ ${ReadWord(++pc):X4}";
				case 0x9D: bytesToAdvance = 3; return $"STA ${ReadWord(++pc):X4},X";
				case 0x9E: bytesToAdvance = 3; return $"STZ ${ReadWord(++pc):X4},X";
				case 0x9F: bytesToAdvance = 3; return $"BBS1 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0xA0: bytesToAdvance = 2; return $"LDY #${ReadMemory(++pc):X2}";
				case 0xA1: bytesToAdvance = 2; return $"LDA (${ReadMemory(++pc):X2},X)";
				case 0xA2: bytesToAdvance = 2; return $"LDX #${ReadMemory(++pc):X2}";
				case 0xA3: bytesToAdvance = 3; return $"TST #${ReadMemory(++pc):X2}, ${ReadMemory(++pc):X2},X";
				case 0xA4: bytesToAdvance = 2; return $"LDY ${ReadMemory(++pc):X2}";
				case 0xA5: bytesToAdvance = 2; return $"LDA ${ReadMemory(++pc):X2}";
				case 0xA6: bytesToAdvance = 2; return $"LDX ${ReadMemory(++pc):X2}";
				case 0xA7: bytesToAdvance = 2; return $"SMB2 ${ReadMemory(++pc):X2}";
				case 0xA8: bytesToAdvance = 1; return "TAY";
				case 0xA9: bytesToAdvance = 2; return $"LDA #${ReadMemory(++pc):X2}";
				case 0xAA: bytesToAdvance = 1; return "TAX";
				case 0xAC: bytesToAdvance = 3; return $"LDY ${ReadWord(++pc):X4}";
				case 0xAD: bytesToAdvance = 3; return $"LDA ${ReadWord(++pc):X4}";
				case 0xAE: bytesToAdvance = 3; return $"LDX ${ReadWord(++pc):X4}";
				case 0xAF: bytesToAdvance = 3; return $"BBS2 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0xB0: bytesToAdvance = 2; return $"BCS {(sbyte)ReadMemory(++pc)}";
				case 0xB1: bytesToAdvance = 2; return $"LDA (${ReadMemory(++pc):X2}),Y";
				case 0xB2: bytesToAdvance = 2; return $"LDA (${ReadMemory(++pc):X2})";
				case 0xB3: bytesToAdvance = 4; return $"TST #${ReadMemory(++pc):X2}, ${ReadWord(++pc):X4},X";
				case 0xB4: bytesToAdvance = 2; return $"LDY ${ReadMemory(++pc):X2},X";
				case 0xB5: bytesToAdvance = 2; return $"LDA ${ReadMemory(++pc):X2},X";
				case 0xB6: bytesToAdvance = 2; return $"LDX ${ReadMemory(++pc):X2},Y";
				case 0xB7: bytesToAdvance = 2; return $"SMB3 ${ReadMemory(++pc):X2}";
				case 0xB8: bytesToAdvance = 1; return "CLV";
				case 0xB9: bytesToAdvance = 3; return $"LDA ${ReadWord(++pc):X4},Y";
				case 0xBA: bytesToAdvance = 1; return "TSX";
				case 0xBC: bytesToAdvance = 3; return $"LDY ${ReadWord(++pc):X4},X";
				case 0xBD: bytesToAdvance = 3; return $"LDA ${ReadWord(++pc):X4},X";
				case 0xBE: bytesToAdvance = 3; return $"LDX ${ReadWord(++pc):X4},Y";
				case 0xBF: bytesToAdvance = 3; return $"BBS3 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0xC0: bytesToAdvance = 2; return $"CPY #${ReadMemory(++pc):X2}";
				case 0xC1: bytesToAdvance = 2; return $"CMP (${ReadMemory(++pc):X2},X)";
				case 0xC2: bytesToAdvance = 1; return "CLY";
				case 0xC3: bytesToAdvance = 7; return $"TDD {ReadWord((ushort)(pc + 1)):X4},{ReadWord((ushort)(pc + 3)):X4},{ReadWord((ushort)(pc + 5)):X4}";
				case 0xC4: bytesToAdvance = 2; return $"CPY ${ReadMemory(++pc):X2}";
				case 0xC5: bytesToAdvance = 2; return $"CMP ${ReadMemory(++pc):X2}";
				case 0xC6: bytesToAdvance = 2; return $"DEC ${ReadMemory(++pc):X2}";
				case 0xC7: bytesToAdvance = 2; return $"SMB4 ${ReadMemory(++pc):X2}";
				case 0xC8: bytesToAdvance = 1; return "INY";
				case 0xC9: bytesToAdvance = 2; return $"CMP #${ReadMemory(++pc):X2}";
				case 0xCA: bytesToAdvance = 1; return "DEX";
				case 0xCC: bytesToAdvance = 3; return $"CPY ${ReadWord(++pc):X4}";
				case 0xCD: bytesToAdvance = 3; return $"CMP ${ReadWord(++pc):X4}";
				case 0xCE: bytesToAdvance = 3; return $"DEC ${ReadWord(++pc):X4}";
				case 0xCF: bytesToAdvance = 3; return $"BBS4 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0xD0: bytesToAdvance = 2; return $"BNE {(sbyte)ReadMemory(++pc)}";
				case 0xD1: bytesToAdvance = 2; return $"CMP (${ReadMemory(++pc):X2}),Y";
				case 0xD2: bytesToAdvance = 2; return $"CMP (${ReadMemory(++pc):X2})";
				case 0xD3: bytesToAdvance = 7; return $"TIN {ReadWord((ushort)(pc + 1)):X4},{ReadWord((ushort)(pc + 3)):X4},{ReadWord((ushort)(pc + 5)):X4}";
				case 0xD4: bytesToAdvance = 1; return "CSH";
				case 0xD5: bytesToAdvance = 2; return $"CMP ${ReadMemory(++pc):X2},X";
				case 0xD6: bytesToAdvance = 2; return $"DEC ${ReadMemory(++pc):X2},X";
				case 0xD7: bytesToAdvance = 2; return $"SMB5 ${ReadMemory(++pc):X2}";
				case 0xD8: bytesToAdvance = 1; return "CLD";
				case 0xD9: bytesToAdvance = 3; return $"CMP ${ReadWord(++pc):X4},Y";
				case 0xDA: bytesToAdvance = 1; return "PHX";
				case 0xDD: bytesToAdvance = 3; return $"CMP ${ReadWord(++pc):X4},X";
				case 0xDE: bytesToAdvance = 3; return $"DEC ${ReadWord(++pc):X4},X";
				case 0xDF: bytesToAdvance = 3; return $"BBS5 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0xE0: bytesToAdvance = 2; return $"CPX #${ReadMemory(++pc):X2}";
				case 0xE1: bytesToAdvance = 2; return $"SBC (${ReadMemory(++pc):X2},X)";
				case 0xE3: bytesToAdvance = 7; return $"TIA {ReadWord((ushort)(pc + 1)):X4},{ReadWord((ushort)(pc + 3)):X4},{ReadWord((ushort)(pc + 5)):X4}";
				case 0xE4: bytesToAdvance = 2; return $"CPX ${ReadMemory(++pc):X2}";
				case 0xE5: bytesToAdvance = 2; return $"SBC ${ReadMemory(++pc):X2}";
				case 0xE6: bytesToAdvance = 2; return $"INC ${ReadMemory(++pc):X2}";
				case 0xE7: bytesToAdvance = 2; return $"SMB6 ${ReadMemory(++pc):X2}";
				case 0xE8: bytesToAdvance = 1; return "INX";
				case 0xE9: bytesToAdvance = 2; return $"SBC #${ReadMemory(++pc):X2}";
				case 0xEA: bytesToAdvance = 1; return "NOP";
				case 0xEC: bytesToAdvance = 3; return $"CPX ${ReadWord(++pc):X4}";
				case 0xED: bytesToAdvance = 3; return $"SBC ${ReadWord(++pc):X4}";
				case 0xEE: bytesToAdvance = 3; return $"INC ${ReadWord(++pc):X4}";
				case 0xEF: bytesToAdvance = 3; return $"BBS6 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
				case 0xF0: bytesToAdvance = 2; return $"BEQ {(sbyte)ReadMemory(++pc)}";
				case 0xF1: bytesToAdvance = 2; return $"SBC (${ReadMemory(++pc):X2}),Y";
				case 0xF2: bytesToAdvance = 2; return $"SBC (${ReadMemory(++pc):X2})";
				case 0xF3: bytesToAdvance = 7; return $"TAI {ReadWord((ushort)(pc + 1)):X4},{ReadWord((ushort)(pc + 3)):X4},{ReadWord((ushort)(pc + 5)):X4}";
				case 0xF4: bytesToAdvance = 1; return "SET";
				case 0xF5: bytesToAdvance = 2; return $"SBC ${ReadMemory(++pc):X2},X";
				case 0xF6: bytesToAdvance = 2; return $"INC ${ReadMemory(++pc):X2},X";
				case 0xF7: bytesToAdvance = 2; return $"SMB7 ${ReadMemory(++pc):X2}";
				case 0xF8: bytesToAdvance = 1; return "SED";
				case 0xF9: bytesToAdvance = 3; return $"SBC ${ReadWord(++pc):X4},Y";
				case 0xFA: bytesToAdvance = 1; return "PLX";
				case 0xFD: bytesToAdvance = 3; return $"SBC ${ReadWord(++pc):X4},X";
				case 0xFE: bytesToAdvance = 3; return $"INC ${ReadWord(++pc):X4},X";
				case 0xFF: bytesToAdvance = 3; return $"BBS7 ${ReadMemory(++pc):X2},{(sbyte)ReadMemory(++pc)}";
			}
			bytesToAdvance = 1;
			return "???";
		}
	}
}
