]> git.sur5r.net Git - cc65/blobdiff - src/cc65/opcodes.h
Removed (pretty inconsistently used) tab chars from source code base.
[cc65] / src / cc65 / opcodes.h
index 990a878e50c6aae852fcc105c8576732b13158de..7dc5262c88f362280e8e921a34cf4723b6209f23 100644 (file)
@@ -1,14 +1,14 @@
 /*****************************************************************************/
 /*                                                                           */
-/*                                opcodes.h                                 */
+/*                                 opcodes.h                                 */
 /*                                                                           */
-/*                 Opcode and addressing mode definitions                   */
+/*                  Opcode and addressing mode definitions                   */
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 2001      Ullrich von Bassewitz                                       */
-/*               Wacholderweg 14                                             */
-/*               D-70597 Stuttgart                                           */
+/* (C) 2001-2004 Ullrich von Bassewitz                                       */
+/*               Römerstraße 52                                              */
+/*               D-70794 Filderstadt                                         */
 /* EMail:        uz@cc65.org                                                 */
 /*                                                                           */
 /*                                                                           */
 
 
 /*****************************************************************************/
-/*                                  Data                                    */
+/*                                   Data                                    */
 /*****************************************************************************/
 
 
 
-/* Definitions for the possible opcodes */
+/* 65XX opcodes */
 typedef enum {
-
-    /* Opcodes for the virtual stack machine */
-    OPC_CALL,
-    OPC_ENTER,
-    OPC_JMP,
-    OPC_LDA,
-    OPC_LDAX,
-    OPC_LDEAX,
-    OPC_LEA,
-    OPC_LEAVE,
-    OPC_PHA,
-    OPC_PHAX,
-    OPC_PHEAX,
-    OPC_RET,
-    OPC_SPACE,
-    OPC_STA,
-    OPC_STAX,
-    OPC_STEAX,
-
-    /* 65XX opcodes */
     OP65_ADC,
     OP65_AND,
     OP65_ASL,
@@ -136,6 +116,7 @@ typedef enum {
     OP65_STA,
     OP65_STX,
     OP65_STY,
+    OP65_STZ,
     OP65_TAX,
     OP65_TAY,
     OP65_TRB,
@@ -146,36 +127,23 @@ typedef enum {
     OP65_TYA,
 
     /* Number of opcodes available */
-    OPCODE_COUNT,
-
-    /* Several other opcode information constants */
-    OP65_FIRST = OP65_ADC,
-    OP65_LAST  = OP65_TYA,
-    OP65_COUNT = OP65_LAST - OP65_FIRST + 1
+    OP65_COUNT
 } opc_t;
 
-/* Addressing modes */
+/* 65XX addressing modes */
 typedef enum {
-
-    /* Addressing modes of the virtual stack machine */
-    AM_IMP,
-    AM_IMM,
-    AM_STACK,
-    AM_ABS,
-
-    /* 65XX addressing modes */
-    AM65_IMP,                  /* implicit */
-    AM65_ACC,                  /* accumulator */
-    AM65_IMM,                  /* immidiate */
-    AM65_ZP,                   /* zeropage */
-    AM65_ZPX,                  /* zeropage,X */
+    AM65_IMP,                   /* implicit */
+    AM65_ACC,                   /* accumulator */
+    AM65_IMM,                   /* immidiate */
+    AM65_ZP,                    /* zeropage */
+    AM65_ZPX,                   /* zeropage,X */
     AM65_ZPY,                   /* zeropage,Y */
-    AM65_ABS,                  /* absolute */
-    AM65_ABSX,                 /* absolute,X */
-    AM65_ABSY,                 /* absolute,Y */
-    AM65_ZPX_IND,                      /* (zeropage,x) */
-    AM65_ZP_INDY,                      /* (zeropage),y */
-    AM65_ZP_IND,               /* (zeropage) */
+    AM65_ABS,                   /* absolute */
+    AM65_ABSX,                  /* absolute,X */
+    AM65_ABSY,                  /* absolute,Y */
+    AM65_ZPX_IND,               /* (zeropage,x) */
+    AM65_ZP_INDY,               /* (zeropage),y */
+    AM65_ZP_IND,                /* (zeropage) */
     AM65_BRA                    /* branch */
 } am_t;
 
@@ -192,42 +160,43 @@ typedef enum {
 } bc_t;
 
 /* Opcode info */
-#define OF_NONE                0x0000U /* No additional information */
-#define OF_CPU_6502     0x0000U        /* 6502 opcode */
-#define OF_CPU_VM       0x0001U /* Virtual machine opcode */
-#define OF_MASK_CPU     0x0001U /* Mask for the cpu field */
-#define OF_UBRA                0x0010U /* Unconditional branch */
-#define OF_CBRA                0x0020U /* Conditional branch */
-#define OF_ZBRA         0x0040U        /* Branch on zero flag condition */
-#define OF_FBRA         0x0080U /* Branch on cond set by a load */
-#define OF_LBRA         0x0100U        /* Jump/branch is long */
-#define OF_RET                 0x0200U /* Return from function */
-#define OF_LOAD         0x0400U        /* Register load */
-#define OF_STORE        0x0800U /* Register store */
-#define OF_XFR          0x1000U /* Transfer instruction */
-#define OF_CALL         0x2000U /* A subroutine call */
+#define OF_NONE         0x0000U /* No additional information */
+#define OF_UBRA         0x0001U /* Unconditional branch */
+#define OF_CBRA         0x0002U /* Conditional branch */
+#define OF_ZBRA         0x0004U /* Branch on zero flag condition */
+#define OF_FBRA         0x0008U /* Branch on cond set by a load */
+#define OF_LBRA         0x0010U /* Jump/branch is long */
+#define OF_RET          0x0020U /* Return from function */
+#define OF_LOAD         0x0040U /* Register load */
+#define OF_STORE        0x0080U /* Register store */
+#define OF_XFR          0x0100U /* Transfer instruction */
+#define OF_CALL         0x0200U /* A subroutine call */
+#define OF_REG_INCDEC   0x0400U /* A register increment or decrement */
+#define OF_SETF         0x0800U /* Insn will set all load flags (not carry) */
+#define OF_CMP          0x1000U /* A compare A/X/Y instruction */
+#define OF_NOIMP        0x2000U /* Implicit addressing mode is actually A */
 
 /* Combined infos */
-#define OF_BRA         (OF_UBRA | OF_CBRA)     /* Operation is a jump/branch */
-#define OF_DEAD        (OF_UBRA | OF_RET)      /* Dead end - no exec behind this point */
+#define OF_BRA  (OF_UBRA | OF_CBRA)     /* Operation is a jump/branch */
+#define OF_DEAD (OF_UBRA | OF_RET)      /* Dead end - no exec behind this point */
 
 /* Opcode description */
 typedef struct {
-    opc_t                  OPC;                /* Opcode */
-    char                   Mnemo[9];           /* Mnemonic */
-    unsigned char   Size;                      /* Size, 0 = check addressing mode */
-    unsigned char   Use;                       /* Registers used by this insn */
-    unsigned char   Chg;                       /* Registers changed by this insn */
-    unsigned short  Info;                      /* Additional information */
+    opc_t           OPC;                /* Opcode */
+    char            Mnemo[9];           /* Mnemonic */
+    unsigned char   Size;               /* Size, 0 = check addressing mode */
+    unsigned short  Use;                /* Registers used by this insn */
+    unsigned short  Chg;                /* Registers changed by this insn */
+    unsigned short  Info;               /* Additional information */
 } OPCDesc;
 
 /* Opcode description table */
-extern const OPCDesc OPCTable[OPCODE_COUNT];
+extern const OPCDesc OPCTable[OP65_COUNT];
 
 
 
 /*****************************************************************************/
-/*                                          Code                                    */
+/*                                   Code                                    */
 /*****************************************************************************/
 
 
@@ -248,7 +217,7 @@ INLINE const OPCDesc* GetOPCDesc (opc_t OPC)
     return &OPCTable [OPC];
 }
 #else
-#  define GetOPCDesc(OPC)      (&OPCTable [(OPC)])
+#  define GetOPCDesc(OPC)       (&OPCTable [(OPC)])
 #endif
 
 #if defined(HAVE_INLINE)
@@ -259,7 +228,7 @@ INLINE unsigned GetOPCInfo (opc_t OPC)
     return OPCTable[OPC].Info;
 }
 #else
-#  define GetOPCInfo(OPC)      (OPCTable[(OPC)].Info)
+#  define GetOPCInfo(OPC)       (OPCTable[(OPC)].Info)
 #endif
 
 unsigned char GetAMUseInfo (am_t AM);