/*
 *      Interactive disassembler (IDA).
 *      Version 3.05
 *      Copyright (c) 1990-95 by Ilfak Guilfanov.
 *      ALL RIGHTS RESERVED.
 *                              FIDO:   2:5020/209
 *                              E-mail: ig@estar.msk.su
 *
 */

#include <ida.hpp>
#include <idp.hpp>
#include "ins.hpp"

instruc_t Instructions[] = {

{ "",  0			},           // Unknown Operation

{ "cmp",   CF_USE1 | CF_USE2	},           // Compare Byte Data Comparison
{ "xor",   CF_CHG1 | CF_USE2	},           // Exclusive Or Exclusive Logical Sum of Byte Data
{ "and",   CF_CHG1 | CF_USE2	},           // AND Logical Product of Byte Data
{ "or",    CF_CHG1 | CF_USE2	},           // OR Logical Sum of Byte Data
{ "add",   CF_CHG1 | CF_USE2	},           // ADD Byte Data Addition
{ "sub",   CF_CHG1 | CF_USE2	},           // Subtract Byte Data Subtraction
{ "addc",  CF_CHG1 | CF_USE2	},           // Add with Carry Addition of Byte Data with Carry
{ "subc",  CF_CHG1 | CF_USE2	},           // Subtract with Carry Subtraction of Byte Data with Carry

{ "subw", CF_CHG1 | CF_USE2	},           // Subtract Word Data Subtraction
{ "addw", CF_CHG1 | CF_USE2	},           // Add Word Data Addition
{ "cmpw", CF_CHG1 | CF_USE2	},           // Compare Word Data Comparison

{ "inc", CF_CHG1  		},           // Increment Byte Data Increment
{ "dec", CF_CHG1  		},           // Decrement Byte Data Decrement

{ "incw", CF_CHG1		},           // Increment Word Data Increment
{ "decw", CF_CHG1		},           // Decrement Word Data Decrement


{ "ror",  CF_CHG1		},           // Rotate Right Byte Data Rotation to the Right
{ "rol",  CF_CHG1		},           // Rotate Left Byte Data Rotation to the Left
{ "rorc", CF_CHG1		},           // Rotate Right with Carry Byte Data Rotation to the Right with Carry
{ "rolc", CF_CHG1		},           // Rotate Left with Carry Byte Data Rotation to the Left with Carry

{ "call",  CF_USE1 | CF_CALL 	},           // CALL Subroutine Call (16 Bit Direct)
{ "callt", CF_USE1 | CF_CALL 	},           // Call Table Subroutine Call (Call Table Reference)
{ "ret",   CF_STOP 		},           // Return from Subroutine
{ "reti",  CF_STOP 		},           // Return from Interrupt / Return from Hardware Vectored Interrupt

{ "mov", CF_CHG1 | CF_USE2 	},           // Move Byte Data Transfer
{ "xch", CF_CHG1 | CF_CHG2 	},           // Exchange Byte Data Exchange

{ "xchw", CF_CHG1 | CF_CHG2	},           // Exchange Word Data Exchange

{ "set1", CF_CHG1		},           // Set Single Bit (Carry Flag) 1 Bit Data Set
{ "clr1", CF_CHG1		},           // Clear Single Bit (Carry Flag) 1 Bit Data Clear
{ "not1", 0			},           // Not Single Bit (Carry Flag) 1 Bit Data Logical Negation

{ "push", CF_USE1		},           // Push
{ "pop",  CF_CHG1		},           // Pop
{ "movw",  CF_CHG1 | CF_USE2	},           // Move Word Data Transfer / Word Data Transfer with Stack Pointer

{ "br",   CF_USE1 		},           // Unconditional Branch
{ "bc",   CF_USE1 		},           // Branch if Carry Conditional Branch with Carry Flag (CY = 1)
{ "bnc",  CF_USE1 		},           // Branch if Not Carry Conditional Branch with Carry Flag (CY = 0)
{ "bz",   CF_USE1 		},           // Branch if Zero Conditional Branch with Zero Flag (Z = 1)
{ "bnz",  CF_USE1 		},           // Branch if Not Zero Conditional Branch with Zero Flag (Z = 0)
{ "bt",   CF_USE1 | CF_USE2	},           // Branch if True Conditional Branch by Bit Test (Byte Data Bit = 1)
{ "bf",   CF_USE1 | CF_USE2	},           // Branch if False Conditional Branch by Bit Test (Byte Data Bit = 0)
{ "dbnz", CF_USE1		},           // Decrement and Branch if Not Zero Conditional Loop (R1 != 0)
{ "nop",  0			},           // No Operation
{ "EI",   CF_USE1		},           // Enable Interrupt
{ "DI",   CF_USE1		},           // Disable Interrupt
{ "HALT", 0			},           // HALT Mode Set
{ "STOP", CF_STOP		}            // Stop Mode Set

 };

