/* ---------------------------------------------------------------------- */
/*                   Copyright (C) 1991 by Natrlich!                     */
/*                      This file is copyrighted!                         */
/*                Refer to the documentation for details.                 */
/* ---------------------------------------------------------------------- */
#include "defines.h"
#include "ops.h"

/*              A   I   A   R   R   A   R   R   I   R   I   I   I
                C   N   B   E   E   B   E   E   M   E   N   N   N
                C   S   S   L   L   S   L   L   P   L   D   D   D
                U   T   0   X   Y       X   Y   L   A   X   Y
                            0   0

 Labels have two entries: one in ABS w/255
 and one in RELA w/the real value.
*/

#if OS == MSDOS
# define _brk  xbrk
#endif

byte
   _adc[] = {   0,105,101,117,  0,109,125,121,  0,  0, 97,113,114 },
   _and[] = {   0, 41, 37, 53,  0, 45, 61, 57,  0,  0, 33, 49, 50 },
   _asl[] = {  10,  0,  6, 22,  0, 14, 30,  0,  0,  0,  0,  0,  0 },
   _bcc[] = {   0,  0,  0,  0,  0,255,  0,  0,  0,144,  0,  0,  0 },
   _bcs[] = {   0,  0,  0,  0,  0,255,  0,  0,  0,176,  0,  0,  0 },
   _beq[] = {   0,  0,  0,  0,  0,255,  0,  0,  0,240,  0,  0,  0 },
   _bit[] = {   0,  0, 36, 52,  0, 44, 60,  0,  0,  0,  0,  0,  0 },
   _bmi[] = {   0,  0,  0,  0,  0,255,  0,  0,  0, 48,  0,  0,  0 },
   _bne[] = {   0,  0,  0,  0,  0,255,  0,  0,  0,208,  0,  0,  0 },
   _bpl[] = {   0,  0,  0,  0,  0,255,  0,  0,  0, 16,  0,  0,  0 },
   _bra[] = {   0,  0,  0,  0,  0,255,  0,  0,  0,128,  0,  0,  0 },
   _brk[] = {   0,  0,  0,  0,  0,  0,  0,  0,255,  0,  0,  0,  0 },
   _bvc[] = {   0,  0,  0,  0,  0,255,  0,  0,  0, 80,  0,  0,  0 },
   _bvs[] = {   0,  0,  0,  0,  0,255,  0,  0,  0,112,  0,  0,  0 },
   _clc[] = {   0,  0,  0,  0,  0,  0,  0,  0, 24,  0,  0,  0,  0 },
   _cld[] = {   0,  0,  0,  0,  0,  0,  0,  0,216,  0,  0,  0,  0 },
   _cli[] = {   0,  0,  0,  0,  0,  0,  0,  0, 88,  0,  0,  0,  0 },
   _clv[] = {   0,  0,  0,  0,  0,  0,  0,  0,184,  0,  0,  0,  0 },
   _cmp[] = {   0,201,197,213,  0,205,221,217,  0,  0,193,209,210 },
   _cpx[] = {   0,224,228,  0,  0,236,  0,  0,  0,  0,  0,  0,  0 },
   _cpy[] = {   0,192,196,  0,  0,204,  0,  0,  0,  0,  0,  0,  0 },
   _dea[] = {   0,  0,  0,  0,  0,  0,  0,  0, 58,  0,  0,  0,  0 },
   _dec[] = {   0,  0,198,214,  0,206,222,  0,  0,  0,  0,  0,  0 },
   _dex[] = {   0,  0,  0,  0,  0,  0,  0,  0,202,  0,  0,  0,  0 },
   _dey[] = {   0,  0,  0,  0,  0,  0,  0,  0,136,  0,  0,  0,  0 },
   _eor[] = {   0, 73, 69, 85,  0, 77, 93, 89,  0,  0, 65, 81, 82 },
   _ina[] = {   0,  0,  0,  0,  0,  0,  0,  0, 26,  0,  0,  0,  0 },
   _inc[] = {   0,  0,230,246,  0,238,254,  0,  0,  0,  0,  0,  0 },
   _inx[] = {   0,  0,  0,  0,  0,  0,  0,  0,232,  0,  0,  0,  0 },
   _iny[] = {   0,  0,  0,  0,  0,  0,  0,  0,200,  0,  0,  0,  0 },
   _jmp[] = {   0,  0,  0,  0,  0, 76,  0,  0,  0,  0,124,  0,108 },
   _jsr[] = {   0,  0,  0,  0,  0, 32,  0,  0,  0,  0,  0,  0,  0 },
   _lda[] = {   0,169,165,181,  0,173,189,185,  0,  0,161,177,178 },
   _ldx[] = {   0,162,166,  0,182,174,  0,190,  0,  0,  0,  0,  0 },
   _ldy[] = {   0,160,164,180,  0,172,188,  0,  0,  0,  0,  0,  0 },
   _lsr[] = {  74,  0, 70, 86,  0, 78, 94,  0,  0,  0,  0,  0,  0 },
   _nop[] = {   0,  0,  0,  0,  0,  0,  0,  0,234,  0,  0,  0,  0 },
   _ora[] = {   0,  9,  5, 21,  0, 13, 29, 25,  0,  0,  1, 17, 18 },
   _pha[] = {   0,  0,  0,  0,  0,  0,  0,  0, 72,  0,  0,  0,  0 },
   _php[] = {   0,  0,  0,  0,  0,  0,  0,  0,  8,  0,  0,  0,  0 },
   _phx[] = {   0,  0,  0,  0,  0,  0,  0,  0,218,  0,  0,  0,  0 },
   _phy[] = {   0,  0,  0,  0,  0,  0,  0,  0, 90,  0,  0,  0,  0 },
   _pla[] = {   0,  0,  0,  0,  0,  0,  0,  0,104,  0,  0,  0,  0 },
   _plp[] = {   0,  0,  0,  0,  0,  0,  0,  0, 40,  0,  0,  0,  0 },
   _plx[] = {   0,  0,  0,  0,  0,  0,  0,  0,250,  0,  0,  0,  0 },
   _ply[] = {   0,  0,  0,  0,  0,  0,  0,  0,122,  0,  0,  0,  0 },
   _rol[] = {  42,  0, 38, 54,  0, 46, 62,  0,  0,  0,  0,  0,  0 },
   _ror[] = { 106,  0,102,118,  0,110,126,  0,  0,  0,  0,  0,  0 },
   _rti[] = {   0,  0,  0,  0,  0,  0,  0,  0, 64,  0,  0,  0,  0 },
   _rts[] = {   0,  0,  0,  0,  0,  0,  0,  0, 96,  0,  0,  0,  0 },
   _sbc[] = {   0,233,229,245,  0,237,253,249,  0,  0,225,241,242 },
   _sec[] = {   0,  0,  0,  0,  0,  0,  0,  0, 56,  0,  0,  0,  0 },
   _sed[] = {   0,  0,  0,  0,  0,  0,  0,  0,248,  0,  0,  0,  0 },
   _sei[] = {   0,  0,  0,  0,  0,  0,  0,  0,120,  0,  0,  0,  0 },
   _sta[] = {   0,  0,133,149,  0,141,157,153,  0,  0,129,145,146 },
   _stx[] = {   0,  0,134,  0,150,142,  0,  0,  0,  0,  0,  0,  0 },
   _sty[] = {   0,  0,132,148,  0,140,  0,  0,  0,  0,  0,  0,  0 },
   _stz[] = {   0,  0,100,116,  0,156,158,  0,  0,  0,  0,  0,  0 },
   _tax[] = {   0,  0,  0,  0,  0,  0,  0,  0,170,  0,  0,  0,  0 },
   _tay[] = {   0,  0,  0,  0,  0,  0,  0,  0,168,  0,  0,  0,  0 },
   _trb[] = {   0,  0, 20,  0,  0, 28,  0,  0,  0,  0,  0,  0,  0 },
   _tsb[] = {   0,  0,  4,  0,  0, 12,  0,  0,  0,  0,  0,  0,  0 },
   _tsx[] = {   0,  0,  0,  0,  0,  0,  0,  0,186,  0,  0,  0,  0 },
   _txa[] = {   0,  0,  0,  0,  0,  0,  0,  0,138,  0,  0,  0,  0 },
   _txs[] = {   0,  0,  0,  0,  0,  0,  0,  0,154,  0,  0,  0,  0 },
   _tya[] = {   0,  0,  0,  0,  0,  0,  0,  0,152,  0,  0,  0,  0 };


static byte _[] = "Coming soon : FTOE NASTY TAPE 68000 Simulator (maybe)";

_ops     ops[] =
{
   { "ADC" , _adc },
   { "AND" , _and },
   { "ASL" , _asl },
   { "BCC" , _bcc },
   { "BCS" , _bcs },
   { "BEQ" , _beq },
   { "BIT" , _bit },
   { "BMI" , _bmi },
   { "BNE" , _bne },
   { "BPL" , _bpl },
   { "BRA" , _bra },          /* 65C02 */
   { "BRK" , _brk },
   { "BVC" , _bvc },
   { "BVS" , _bvs },
   { "CLC" , _clc },
   { "CLD" , _cld },
   { "CLI" , _cli },
   { "CLV" , _clv },
   { "CMP" , _cmp },
   { "CPX" , _cpx },
   { "CPY" , _cpy },
   { "DEA" , _dea },          /* 65C02 */
   { "DEC" , _dec },
   { "DEX" , _dex },
   { "DEY" , _dey },
   { "EOR" , _eor },
   { "INA" , _ina },          /* 65C02 */
   { "INC" , _inc },
   { "INX" , _inx },
   { "INY" , _iny },
   { "JMP" , _jmp },
   { "JSR" , _jsr },
   { "LDA" , _lda },
   { "LDX" , _ldx },
   { "LDY" , _ldy },
   { "LSR" , _lsr },
   { "NOP" , _nop },
   { "ORA" , _ora },
   { "PHA" , _pha },
   { "PHP" , _php },
   { "PHX" , _phx },          /* 65C02 */
   { "PHY" , _phy },          /* 65C02 */
   { "PLA" , _pla },
   { "PLP" , _plp },
   { "PLX" , _plx },          /* 65C02 */
   { "PLY" , _ply },          /* 65C02 */
   { "ROL" , _rol },
   { "ROR" , _ror },
   { "RTI" , _rti },
   { "RTS" , _rts },
   { "SBC" , _sbc },
   { "SEC" , _sec },
   { "SED" , _sed },
   { "SEI" , _sei },
   { "STA" , _sta },
   { "STX" , _stx },
   { "STY" , _sty },
   { "STZ" , _stz },          /* 65C02 */
   { "TAX" , _tax },
   { "TAY" , _tay },
   { "TRB" , _trb },          /* 65C02 */
   { "TSB" , _tsb },          /* 65C02 */
   { "TSY" , _tsx },
   { "TXA" , _txa },
   { "TXS" , _txs },
   { "TYA" , _tya },
   { ""    , _    }       /* just for fun */
};
