185 lines
5.6 KiB
C++
185 lines
5.6 KiB
C++
/*
|
|
* Interactive disassembler (IDA).
|
|
* Intel 80196 module
|
|
*
|
|
*/
|
|
|
|
#ifndef __INSTRS_HPP
|
|
#define __INSTRS_HPP
|
|
|
|
extern const instruc_t Instructions[];
|
|
|
|
enum nameNum ENUM_SIZE(uint16)
|
|
{
|
|
I196_null = 0, // Unknown Operation
|
|
|
|
I196_add2, // Add words (2 operands)
|
|
I196_add3, // Add words (3 operands)
|
|
I196_addb2, // Add bytes (2 operands)
|
|
I196_addb3, // Add bytes (3 operands)
|
|
|
|
I196_addc, // Add words with carry
|
|
I196_addcb, // Add bytes with carry
|
|
|
|
I196_and2, // Logical AND words (2 operands)
|
|
I196_and3, // Logical AND words (3 operands)
|
|
I196_andb2, // Logical AND bytes (2 operands)
|
|
I196_andb3, // Logical AND bytes (3 operands)
|
|
|
|
I196_bmov, // Block move
|
|
I196_bmovi, // Interruptable block move
|
|
|
|
I196_br, // Branch indirect
|
|
|
|
I196_clr, // Clear word
|
|
I196_clrb, // Clear byte
|
|
I196_clrc, // Clear carry flag
|
|
I196_clrvt, // Clear overflow-trap flag
|
|
|
|
I196_cmp, // Compare words
|
|
I196_cmpb, // Compare bytes
|
|
I196_cmpl, // Compare long
|
|
|
|
I196_dec, // Decrement word
|
|
I196_decb, // Decrement byte
|
|
|
|
I196_di, // Disable interrupts
|
|
|
|
I196_div, // Divide integers
|
|
I196_divb, // Divide short-integers
|
|
I196_divu, // Divide words, unsigned
|
|
I196_divub, // Divide bytes, unsigned
|
|
|
|
I196_djnz, // Decrement and jump if not zero
|
|
I196_djnzw, // Decrement and jump if not zero word
|
|
|
|
I196_dpts, // Disable peripheral transaction server
|
|
|
|
I196_ei, // Enable interrupts
|
|
|
|
I196_epts, // Enable peripheral transaction server
|
|
|
|
I196_ext, // Sign-extend integer into long-integer
|
|
I196_extb, // Sign-extend short-integer into integer
|
|
|
|
I196_idlpd, // Idle/powerdown
|
|
|
|
I196_inc, // Increment word
|
|
I196_incb, // Increment byte
|
|
|
|
I196_jbc, // Jump if bit is clear
|
|
I196_jbs, // Jump if bit is set
|
|
I196_jc, // Jump if carry flag is set
|
|
I196_je, // Jump if equal
|
|
I196_jge, // Jump if signed greater than or equal
|
|
I196_jgt, // Jump if signed greater than
|
|
I196_jh, // Jump if higher (unsigned)
|
|
I196_jle, // Jump if signed less than or equal
|
|
I196_jlt, // Jump if signed less than
|
|
I196_jnc, // Jump if carry flag is clear
|
|
I196_jne, // Jump if not equal
|
|
I196_jnh, // Jump if not higher (unsigned)
|
|
I196_jnst, // Jump if sticky bit flag is clear
|
|
I196_jnv, // Jump if overflow flag is clear
|
|
I196_jnvt, // Jump if overflow-trap flag is clear
|
|
I196_jst, // Jump if sticky bit flag is set
|
|
I196_jv, // Jump if overflow flag is set
|
|
I196_jvt, // Jump if overflow-trap flag is set
|
|
|
|
I196_lcall, // Long call
|
|
|
|
I196_ld, // Load word
|
|
I196_ldb, // Load byte
|
|
I196_ldbse, // Load byte sign-extended
|
|
I196_ldbze, // Load byte zero-extended
|
|
|
|
I196_ljmp, // Long jump
|
|
|
|
I196_mul2, // Multiply integers (2 operands)
|
|
I196_mul3, // Multiply integers (3 operands)
|
|
I196_mulb2, // Multiply short-integers (2 operands)
|
|
I196_mulb3, // Multiply short-integers (3 operands)
|
|
I196_mulu2, // Multiply words, unsigned (2 operands)
|
|
I196_mulu3, // Multiply words, unsigned (3 operands)
|
|
I196_mulub2, // Multiply bytes, unsigned (2 operands)
|
|
I196_mulub3, // Multiply bytes, unsigned (3 operands)
|
|
|
|
I196_neg, // Negate integer
|
|
I196_negb, // Negate short-integer
|
|
|
|
I196_nop, // No operation
|
|
|
|
I196_norml, // Normalize long-integer
|
|
|
|
I196_not, // Complement word
|
|
I196_notb, // Complement byte
|
|
|
|
I196_or, // Logical OR words
|
|
I196_orb, // Logical OR bytes
|
|
|
|
I196_pop, // Pop word
|
|
I196_popa, // Pop all
|
|
I196_popf, // Pop flags
|
|
I196_push, // Push word
|
|
I196_pusha, // Push all
|
|
I196_pushf, // Push flags
|
|
|
|
I196_ret, // Return from subroutine
|
|
|
|
I196_rst, // Reset system
|
|
|
|
I196_scall, // Short call
|
|
|
|
I196_setc, // Set carry flag
|
|
|
|
I196_shl, // Shift word left
|
|
I196_shlb, // Shift byte left
|
|
I196_shll, // Shift double-word left
|
|
I196_shr, // Logical right shift word
|
|
I196_shra, // Arithmetic right shift word
|
|
I196_shrab, // Arithmetic right shift byte
|
|
I196_shral, // Arithmetic right shift double-word
|
|
I196_shrb, // Logical right shift byte
|
|
I196_shrl, // Logical right shift double-word
|
|
|
|
I196_sjmp, // Short jump
|
|
|
|
I196_skip, // Two byte no-operation
|
|
|
|
I196_st, // Store word
|
|
I196_stb, // Store byte
|
|
|
|
I196_sub2, // Subtract words (2 operands)
|
|
I196_sub3, // Subtract words (3 operands)
|
|
I196_subb2, // Subtract bytes (2 operands)
|
|
I196_subb3, // subtract bytes (3 operands)
|
|
|
|
I196_subc, // Subtract words with borrow
|
|
I196_subcb, // Subtract bytes with borrow
|
|
|
|
I196_tijmp, // Table indirect jump
|
|
|
|
I196_trap, // Software trap
|
|
|
|
I196_xch, // Exchange word
|
|
I196_xchb, // Exchange byte
|
|
|
|
I196_xor, // Logical exclusive-or words
|
|
I196_xorb, // Logical exclusive-or bytes
|
|
|
|
// 8x196NU, NP instructions
|
|
|
|
I196_ebmovi, // Extended interruptable block move
|
|
I196_ebr, // Extended branch indirect
|
|
I196_ecall, // Extended call
|
|
I196_ejmp, // Extended jump
|
|
I196_eld, // Extended load word
|
|
I196_eldb, // Extended load byte
|
|
I196_est, // Extended store word
|
|
I196_estb, // Extended store byte
|
|
|
|
I196_last
|
|
};
|
|
|
|
#endif
|