/*
 *      Rockwell C39 processor module for IDA.
 *      Copyright (c) 2000-2006 Konstantin Norvatoff, <konnor@bk.ru>
 *      Freeware.
 */

#include "c39.hpp"

const instruc_t Instructions[] =
{
  { "",            0                       },
  { "ADC",         CF_USE1                 },
  { "ADD",         CF_USE1                 },
  { "ANC",         CF_USE1                 },
  { "AND",         CF_USE1                 },
  { "ANE",         CF_USE1                 },
  { "ARR",         CF_USE1                 },
  { "ASL",         0                       },
  { "ASR",         CF_USE1                 },
  { "BAR",         CF_USE1|CF_USE2|CF_USE3 },
  { "BAS",         CF_USE1|CF_USE2|CF_USE3 },
  { "BBR",         CF_USE1|CF_USE2|CF_USE3|CF_JUMP },
  { "BBS",         CF_USE1|CF_USE2|CF_USE3|CF_JUMP },
  { "BCC",         CF_USE1|CF_JUMP         },
  { "BCS",         CF_USE1|CF_JUMP         },
  { "BEQ",         CF_USE1|CF_JUMP         },
  { "BIT",         CF_USE1                 },
  { "BMI",         CF_USE1|CF_JUMP         },
  { "BNE",         CF_USE1|CF_JUMP         },
  { "BPL",         CF_USE1|CF_JUMP         },
  { "BRA",         CF_USE1|CF_JUMP|CF_STOP },
  { "BRK",         CF_STOP                 },
  { "BVC",         CF_USE1|CF_JUMP         },
  { "BVS",         CF_USE1|CF_JUMP         },
  { "CLC",         0                       },
  { "CLD",         0                       },
  { "CLI",         0                       },
  { "CLV",         0                       },
  { "CLW",         0                       },
  { "CMP",         CF_USE1                 },
  { "CPX",         CF_USE1                 },
  { "CPY",         CF_USE1                 },
  { "DCP",         CF_USE1|CF_CHG1         },
  { "DEC",         CF_USE1|CF_CHG1         },
  { "DEX",         0                       },
  { "DEY",         0                       },
  { "EOR",         CF_USE1                 },
  { "EXC",         CF_USE1                 },
  { "INC",         CF_USE1|CF_CHG1         },
  { "INI",         0                       },
  { "INX",         0                       },
  { "INY",         0                       },
  { "ISB",         CF_USE1|CF_CHG1         },
  { "JMP",         CF_USE1|CF_STOP|CF_JUMP },
  { "JPI",         CF_USE1|CF_STOP|CF_JUMP },
  { "JSB",         CF_USE1|CF_CALL         },
  { "JSR",         CF_USE1|CF_CALL         },
  { "LAB",         CF_USE1                 },
  { "LAE",         CF_USE1                 },
  { "LAI",         0                       },
  { "LAN",         0                       },
  { "LAX",         CF_USE1                 },
  { "LDA",         CF_USE1                 },
  { "LDX",         CF_USE1                 },
  { "LDY",         CF_USE1                 },
  { "LII",         0                       },
  { "LSR",         0                       },
  { "LXA",         CF_USE1                 },
  { "MPA",         0                       },
  { "MPY",         0                       },
  { "NEG",         CF_USE1                 },
  { "NOP",         0                       },
  { "NXT",         0                       },
  { "ORA",         CF_USE1                 },
  { "PHA",         0                       },
  { "PHI",         0                       },
  { "PHP",         0                       },
  { "PHW",         0                       },
  { "PHX",         0                       },
  { "PHY",         0                       },
  { "PIA",         0                       },
  { "PLA",         0                       },
  { "PLI",         0                       },
  { "PLP",         0                       },
  { "PLW",         0                       },
  { "PLX",         0                       },
  { "PLY",         0                       },
  { "PSH",         0                       },
  { "PUL",         0                       },
  { "RBA",         CF_USE1|CF_USE2         },
  { "RLA",         CF_USE1|CF_CHG1         },
  { "RMB",         CF_USE1|CF_USE2         },
  { "RND",         0                       },
  { "ROL",         0                       },
  { "ROR",         0                       },
  { "RRA",         CF_USE1|CF_CHG1         },
  { "RTI",         CF_STOP                 },
  { "RTS",         CF_STOP                 },
  { "SAX",         CF_CHG1                 },
  { "SBA",         CF_USE1|CF_USE2         },
  { "SBC",         CF_USE1                 },
  { "SBX",         CF_USE1                 },
  { "SEC",         0                       },
  { "SED",         0                       },
  { "SEI",         0                       },
  { "SHA",         CF_CHG1                 },
  { "SHS",         CF_CHG1                 },
  { "SHX",         CF_CHG1                 },
  { "SHY",         CF_CHG1                 },
  { "SLO",         CF_USE1|CF_CHG1         },
  { "SMB",         CF_USE1|CF_USE2|CF_CHG2 },
  { "SRE",         CF_USE1|CF_CHG1         },
  { "STA",         CF_CHG1                 },
  { "STI",         CF_USE1|CF_USE2         },
  { "STX",         CF_CHG1                 },
  { "STY",         CF_CHG1                 },
  { "TAX",         0                       },
  { "TAY",         0                       },
  { "TAW",         0                       },
  { "TIP",         0                       },
  { "TSX",         0                       },
  { "TWA",         0                       },
  { "TXA",         0                       },
  { "TXS",         0                       },
  { "TYA",         0                       }
};

CASSERT(qnumber(Instructions) == C39_last);
