home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / CROSSASM / 68ASMSIM.ZIP / simsrc / opcodes.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-04-09  |  6.2 KB  |  157 lines

  1.  
  2. /***************************** 68000 SIMULATOR ****************************
  3.  
  4. File Name: OPCODES.H
  5. Version: 1.0
  6.  
  7. This file contains opcode values to decode 68000 instructions.  It is
  8.     included in the file "run.c"
  9.  
  10. ***************************************************************************/
  11.  
  12.  
  13.  
  14. extern int    ORI(), ORI_TO_CCR(), ORI_TO_SR(), BIT_OP(), MOVEP(), 
  15.                 ANDI(), ANDI_TO_CCR(), ANDI_TO_SR(), SUBI(), ADDI(), 
  16.                 EORI(), EORI_TO_CCR(), EORI_TO_SR(), CMPI(), MOVEA(), 
  17.                 MOVE(), NEGX(), MOVE_FR_SR(), CHK(), LEA(), CLR(), 
  18.                 NEG(), MOVE_TO_CCR(), NOT(), MOVE_TO_SR(), NBCD(), 
  19.                 SWAP(), PEA(), EXT(), MOVEM(), TST(), TAS(), 
  20.                 ILLEGAL(), TRAP(), LINK(), UNLK(), MOVE_USP(), 
  21.                 RESET(), NOP(), STOP(), RTE(), RTS(), TRAPV(), RTR(), 
  22.                 JSR(), JMP(), ADDQ(), SCC(), DBCC(), SUBQ(), BCC(), 
  23.                 BRA(), BSR(), MOVEQ(), OR(), DIVU(), SBCD(), DIVS(), 
  24.                 SUB(), SUBA(), SUBX(), CMP(), CMPA(), EOR(), CMPM(), 
  25.                 AND(), MULU(), ABCD(), EXG(), MULS(), ADD(), ADDA(), 
  26.                 ADDX(), SHIFT_ROT();
  27.  
  28.  
  29. int        offsets[] = 
  30.     { 0, 15, 16, 18, 20, 53, 57, 60, 61, 65, 68, 68, 72, 79, 82, 84, 83 };
  31.  
  32.  
  33. /***************************  W  A  R  N  I  N  G  *************************/
  34. /*                                                                         */
  35. /*  IF YOU CHANGE THE BELOW STRUCTURE, BE SURE TO MAKE THE CORRESPNDING       */
  36. /*  CHANGES IN THE "NAMES" ARRAY AT THE END OF THIS FILE                           */
  37. /*                                                                         */
  38. /*                                                                         */
  39. /***************************  W  A  R  N  I  N  G  *************************/
  40.  
  41. struct inst_rec {
  42.         int    mask;
  43.         int    val;
  44.         char    name[13];
  45.         }
  46.         inst_arr[] =
  47.         {
  48.             {    0x0000, 0x0a3c, "EORI_TO_CCR " },
  49.             {    0x0000, 0x0a7c, "EORI_TO_SR  " },
  50.             {    0x0000, 0x003c, "ORI_TO_CCR  " },
  51.             {    0x0000, 0x007c, "ORI_TO_SR   " },
  52.             {    0x0000, 0x023c, "ANDI_TO_CCR " },
  53.             {    0x0000, 0x027c, "ANDI_TO_SR  " },
  54.             {    0x0fc7, 0x0008, "MOVEP       " },
  55.             {    0x00ff, 0x0200, "ANDI        " },
  56.             {    0x00ff, 0x0000, "ORI         " },
  57.             {    0x00ff, 0x0400, "SUBI        " },
  58.             {    0x00ff, 0x0600, "ADDI        " },
  59.             {    0x00ff, 0x0800, "BIT_OP      " },
  60.             {    0x00ff, 0x0a00, "EORI        " },
  61.             {    0x00ff, 0x0c00, "CMPI        " },
  62.             {    0x0eff, 0x0100, "BIT_OP      " },
  63.             {    0x0fff, 0x1000, "MOVEB       " },
  64.             {    0x0e3f, 0x2040, "MOVEAL      " },
  65.             {    0x0fff, 0x2000, "MOVEL       " },
  66.             {    0x0e3f, 0x3040, "MOVEAW      " },
  67.             {    0x0fff, 0x3000, "MOVEW       " },
  68.             {    0x0000, 0x4afc, "ILLEGAL     " },
  69.             {    0x0000, 0x4e70, "RESET       " },
  70.             {    0x0000, 0x4e71, "NOP         " },
  71.             {    0x0000, 0x4e72, "STOP        " },
  72.             {    0x0000, 0x4e73, "RTE         " },
  73.             {    0x0000, 0x4e75, "RTS         " },
  74.             {    0x0000, 0x4e76, "TRAPV       " },
  75.             {    0x0000, 0x4e77, "RTR         " },
  76.             {    0x0007, 0x4e50, "LINK        " },
  77.             {    0x0007, 0x4e58, "UNLK        " },
  78.             {    0x0007, 0x4e60, "MOVE_TO_USP " },
  79.             {    0x0007, 0x4e68, "MOVE_FR_USP " },
  80.             {    0x0007, 0x4840, "SWAP        " },
  81.             {    0x0007, 0x4880, "EXT         " },
  82.             {    0x0007, 0x48c0, "EXT         " },
  83.             {    0x000f, 0x4e40, "TRAP        " },
  84.             {    0x003f, 0x40c0, "MOVE_FR_SR  " },
  85.             {    0x003f, 0x44c0, "MOVE_TO_CCR " },
  86.             {    0x003f, 0x46c0, "MOVE_TO_SR  " },
  87.             {    0x003f, 0x4800, "NBCD        " },
  88.             {    0x003f, 0x4840, "PEA         " },
  89.             {    0x003f, 0x4ac0, "TAS         " },
  90.             {    0x003f, 0x4e80, "JSR         " },
  91.             {    0x003f, 0x4ec0, "JMP         " },
  92.             {    0x007f, 0x4c80, "MOVEM_TO_REG" },
  93.             {    0x007f, 0x4880, "MOVEM_TO_EA " },
  94.             {    0x00ff, 0x4200, "CLR         " },
  95.             {    0x00ff, 0x4000, "NEGX        " },
  96.             {    0x00ff, 0x4400, "NEG         " },
  97.             {    0x00ff, 0x4600, "NOT         " },
  98.             {    0x00ff, 0x4a00, "TST         " },
  99.             {    0x0e3f, 0x4180, "CHK         " },
  100.             {    0x0e3f, 0x41c0, "LEA         " },
  101.             {    0x0f07, 0x50c8, "DBCC        " },
  102.             {    0x0f3f, 0x50c0, "SCC         " },
  103.             {    0x0eff, 0x5100, "SUBQ        " },
  104.             {    0x0eff, 0x5000, "ADDQ        " },
  105.             {    0x00ff, 0x6000, "BRA         " },
  106.             {    0x00ff, 0x6100, "BSR         " },
  107.             {    0x0fff, 0x6000, "BCC         " },
  108.             {    0x0eff, 0x7000, "MOVEQ       " },
  109.             {    0x0e0f, 0x8100, "SBCD        " },
  110.             {    0x0e3f, 0x80c0, "DIVU        " },
  111.             {    0x0e3f, 0x81c0, "DIVS        " },
  112.             {    0x0fff, 0x8000, "OR          " },
  113.             {    0x0ecf, 0x9100, "SUBX        " },
  114.             {    0x0f3f, 0x90c0, "SUBA        " },
  115.             {    0x0fff, 0x9000, "SUB         " },
  116.             {    0x0f3f, 0xb0c0, "CMPA        " },
  117.             {    0x0ec7, 0xb108, "CMPM        " },
  118.             {    0x0eff, 0xb000, "CMP         " },
  119.             {    0x0eff, 0xb100, "EOR         " },
  120.             {    0x0e07, 0xc140, "EXG_D       " },
  121.             {    0x0e07, 0xc148, "EXG_A       " },
  122.             {    0x0e07, 0xc188, "EXG_D_AND_A " },
  123.             {    0x0e0f, 0xc100, "ABCD        " },
  124.             {    0x0e3f, 0xc1c0, "MULS        " },
  125.             {    0x0e3f, 0xc0c0, "MULU        " },
  126.             {    0x0fff, 0xc000, "AND         " },
  127.             {    0x0ecf, 0xd100, "ADDX        " },
  128.             {    0x0f3f, 0xd0c0, "ADDA        " },
  129.             {    0x0fff, 0xd000, "ADD         " },
  130.             {    0x073f, 0xe0c0, "SHIFT_ROT   " },
  131.             {    0x0fff, 0xe000, "SHIFT_ROT   " },
  132.         };
  133.  
  134.  
  135. /***************************  W  A  R  N  I  N  G  *************************/
  136. /*                                                                         */
  137. /*  IF YOU CHANGE THE BELOW ARRAY, BE SURE TO MAKE THE CORRESPNDING           */
  138. /*  CHANGES IN THE "INST_REC" STRUCTURE ABOVE                                        */
  139. /*                                                                         */
  140. /*                                                                         */
  141. /***************************  W  A  R  N  I  N  G  *************************/
  142.  
  143. int    (*(names[]))() =
  144.         {
  145.         EORI_TO_CCR, EORI_TO_SR, ORI_TO_CCR, ORI_TO_SR,    ANDI_TO_CCR, 
  146.         ANDI_TO_SR, MOVEP, ANDI, ORI, SUBI, ADDI, BIT_OP, EORI, CMPI, 
  147.         BIT_OP, MOVE, MOVEA, MOVE, MOVEA, MOVE,    ILLEGAL, RESET, NOP, 
  148.         STOP, RTE, RTS, TRAPV, RTR, LINK, UNLK, MOVE_USP, MOVE_USP, 
  149.         SWAP, EXT, EXT, TRAP, MOVE_FR_SR, MOVE_TO_CCR, MOVE_TO_SR, 
  150.         NBCD, PEA, TAS, JSR,    JMP, MOVEM, MOVEM, CLR, NEGX, NEG, NOT, 
  151.         TST, CHK, LEA, DBCC, SCC, SUBQ, ADDQ, BRA, BSR, BCC, MOVEQ, 
  152.         SBCD,    DIVU, DIVS, OR, SUBX, SUBA, SUB, CMPA, CMPM, CMP, EOR,
  153.         EXG, EXG, EXG, ABCD, MULS,    MULU, AND, ADDX, ADDA, ADD, SHIFT_ROT, 
  154.         SHIFT_ROT
  155.         };
  156.  
  157.