#pragma once #include "Ident.h" enum AsmInsType { ASMIT_ADC, ASMIT_AND, ASMIT_ASL, ASMIT_BCC, ASMIT_BCS, ASMIT_BEQ, ASMIT_BIT, ASMIT_BMI, ASMIT_BNE, ASMIT_BPL, ASMIT_BRK, ASMIT_BVC, ASMIT_BVS, ASMIT_CLC, ASMIT_CLD, ASMIT_CLI, ASMIT_CLV, ASMIT_CMP, ASMIT_CPX, ASMIT_CPY, ASMIT_DEC, ASMIT_DEX, ASMIT_DEY, ASMIT_EOR, ASMIT_INC, ASMIT_INX, ASMIT_INY, ASMIT_JMP, ASMIT_JSR, ASMIT_LDA, ASMIT_LDX, ASMIT_LDY, ASMIT_LSR, ASMIT_NOP, ASMIT_ORA, ASMIT_PHA, ASMIT_PHP, ASMIT_PLA, ASMIT_PLP, ASMIT_ROL, ASMIT_ROR, ASMIT_RTI, ASMIT_RTS, ASMIT_SBC, ASMIT_SEC, ASMIT_SED, ASMIT_SEI, ASMIT_STA, ASMIT_STX, ASMIT_STY, ASMIT_TAX, ASMIT_TAY, ASMIT_TSX, ASMIT_TXA, ASMIT_TXS, ASMIT_TYA, ASMIT_INV, ASMIT_BYTE, NUM_ASM_INS_TYPES }; enum AsmInsMode { ASMIM_IMPLIED, ASMIM_IMMEDIATE, ASMIM_ZERO_PAGE, ASMIM_ZERO_PAGE_X, ASMIM_ZERO_PAGE_Y, ASMIM_ABSOLUTE, ASMIM_ABSOLUTE_X, ASMIM_ABSOLUTE_Y, ASMIM_INDIRECT, ASMIM_INDIRECT_X, ASMIM_INDIRECT_Y, ASMIM_RELATIVE, NUM_ASM_INS_MODES, ASMIM_IMMEDIATE_ADDRESS, NUM_ASM_INS_MODES_X, }; struct AsmInsData { AsmInsType mType; AsmInsMode mMode; }; extern AsmInsData DecInsData[256]; extern short AsmInsOpcodes[NUM_ASM_INS_TYPES][NUM_ASM_INS_MODES]; extern int AsmInsModeSize[NUM_ASM_INS_MODES_X]; extern const char* AsmInstructionNames[NUM_ASM_INS_TYPES]; AsmInsType FindAsmInstruction(const char * ins); bool HasAsmInstructionMode(AsmInsType type, AsmInsMode mode); int AsmInsSize(AsmInsType type, AsmInsMode mode); void InitAssembler(void);