X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fcc65%2Fopcodes.h;h=fb9e3e53e32244b00e593cadb43e60b441c37a7a;hb=7c1094c086905c47b47ae57a551427d0fc26e049;hp=e5bbbb7ee30335ca20108fa81b6bf709380ccfaa;hpb=9ce1e413e4d5a9f48a57b3ce357e71d62281c7c8;p=cc65 diff --git a/src/cc65/opcodes.h b/src/cc65/opcodes.h index e5bbbb7ee..fb9e3e53e 100644 --- a/src/cc65/opcodes.h +++ b/src/cc65/opcodes.h @@ -6,9 +6,9 @@ /* */ /* */ /* */ -/* (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 */ /* */ /* */ @@ -49,27 +49,8 @@ -/* 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_SPACE, - OPC_STA, - OPC_STAX, - OPC_STEAX, - - /* 65XX opcodes */ OP65_ADC, OP65_AND, OP65_ASL, @@ -135,6 +116,7 @@ typedef enum { OP65_STA, OP65_STX, OP65_STY, + OP65_STZ, OP65_TAX, OP65_TAY, OP65_TRB, @@ -145,29 +127,17 @@ 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_ZPY, /* zeropage,Y */ AM65_ABS, /* absolute */ AM65_ABSX, /* absolute,X */ AM65_ABSY, /* absolute,Y */ @@ -191,18 +161,20 @@ typedef enum { /* 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_XFR 0x0800U /* Transfer instruction */ -#define OF_CALL 0x1000U /* A subroutine call */ +#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 */ @@ -213,13 +185,13 @@ 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 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];