/*****************************************************************************/
/* */
-/* instr.h */
+/* instr.h */
/* */
/* Instruction encoding for the ca65 macroassembler */
/* */
/* */
/* */
-/* (C) 1998-2004 Ullrich von Bassewitz */
-/* Römerstrasse 52 */
-/* D-70794 Filderstadt */
-/* EMail: uz@cc65.org */
+/* (C) 1998-2008, Ullrich von Bassewitz */
+/* Roemerstrasse 52 */
+/* D-70794 Filderstadt */
+/* EMail: uz@cc65.org */
/* */
/* */
/* This software is provided 'as-is', without any expressed or implied */
/* common */
#include "cpu.h"
+#include "strbuf.h"
#define AM65_IMM_IMPLICIT 0x00800000UL
#define AM65_IMM (AM65_IMM_ACCU | AM65_IMM_INDEX | AM65_IMM_IMPLICIT)
#define AM65_BLOCKMOVE 0x01000000UL
+#define AM65_BLOCKXFER 0x02000000UL
/* Bitmask for all ZP operations that have correspondent ABS ops */
#define AM65_SET_ZP (AM65_DIR | AM65_DIR_X | AM65_DIR_Y | AM65_DIR_IND | AM65_DIR_X_IND)
/* Bit numbers and count */
#define AM65I_IMM_ACCU 21
#define AM65I_IMM_INDEX 22
-#define AM65I_COUNT 25
+#define AM65I_COUNT 26
typedef struct InsDesc InsDesc;
struct InsDesc {
char Mnemonic[5];
- unsigned long AddrMode; /* Valid adressing modes */
- unsigned char BaseCode; /* Base opcode */
- unsigned char ExtCode; /* Number of ext code table */
+ unsigned long AddrMode; /* Valid adressing modes */
+ unsigned char BaseCode; /* Base opcode */
+ unsigned char ExtCode; /* Number of ext code table */
void (*Emit) (const InsDesc*);/* Handler function */
};
/* An instruction table */
typedef struct InsTable InsTable;
struct InsTable {
- unsigned Count; /* Number of intstructions */
+ unsigned Count; /* Number of intstructions */
InsDesc Ins[1]; /* Varying length */
};
cpu_t GetCPU (void);
/* Return the current CPU */
-int FindInstruction (const char* Ident);
+int FindInstruction (const StrBuf* Ident);
/* Check if Ident is a valid mnemonic. If so, return the index in the
* instruction table. If not, return -1.
*/
+