6502 implementation in SystemVerilog
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
2.2 KiB

2 years ago
localparam ADDR_MODE_IMPLIED = 0;
localparam ADDR_MODE_IMMEDIATE = 1;
localparam ADDR_MODE_ABSOLUTE = 2;
localparam ADDR_MODE_ZP = 3;
localparam ADDR_MODE_INDEXED_ABSOLUTE = 4;
localparam ADDR_MODE_INDEXED_ZP = 5;
localparam ADDR_MODE_INDIRECT = 6;
localparam ADDR_MODE_PREINDEXED_INDIRECT = 7;
localparam ADDR_MODE_POSTINDEXED_INDIRECT = 8;
localparam ADDR_MODE_RELATIVE = 9;
2 years ago
localparam OP_OR = 0;
localparam OP_AND = 1;
localparam OP_EOR = 2;
localparam OP_ADC = 3;
localparam OP_SUB = 4;
localparam OP_ROT = 5;
localparam OP_SHF = 6;
2 years ago
localparam SHIFT_LEFT = 0;
localparam SHIFT_RIGHT = 1;
2 years ago
localparam I_LDA = 0;
localparam I_LDX = 1;
localparam I_LDY = 2;
localparam I_STA = 3;
localparam I_STX = 4;
localparam I_STY = 5;
localparam I_TAX = 6;
localparam I_TAY = 7;
localparam I_TXA = 8;
localparam I_TYA = 9;
localparam I_TSX = 10;
localparam I_TXS = 11;
localparam I_PHA = 12;
localparam I_PHP = 13;
localparam I_PLA = 14;
localparam I_PLP = 15;
localparam I_AND = 16;
localparam I_EOR = 17;
localparam I_ORA = 18;
localparam I_BIT = 19;
localparam I_ADC = 20;
localparam I_SBC = 21;
localparam I_CMP = 22;
localparam I_CPX = 23;
localparam I_CPY = 24;
localparam I_INC = 25;
localparam I_INX = 26;
localparam I_INY = 27;
localparam I_DEC = 28;
localparam I_DEX = 29;
localparam I_DEY = 30;
localparam I_ASL = 31;
localparam I_LSR = 32;
localparam I_ROL = 33;
localparam I_ROR = 34;
localparam I_JMP = 35;
localparam I_JSR = 36;
localparam I_RTS = 37;
localparam I_BCC = 38;
localparam I_BCS = 39;
localparam I_BEQ = 40;
localparam I_BMI = 41;
localparam I_BNE = 42;
localparam I_BPL = 43;
localparam I_BVC = 44;
localparam I_BVS = 45;
localparam I_CLC = 46;
localparam I_CLD = 47;
localparam I_CLI = 48;
localparam I_CLV = 49;
localparam I_SEC = 50;
localparam I_SED = 51;
localparam I_SEI = 52;
localparam I_BRK = 53;
localparam I_NOP = 54;
localparam I_RTI = 55;
2 years ago
// Unofficial opcodes
localparam I_STP = 56;
localparam I_SHY = 57;
2 years ago
localparam P_N = 7;
localparam P_V = 6;
localparam P_B = 5;
localparam P_D = 3;
localparam P_I = 2;
localparam P_Z = 1;
localparam P_C = 0;
localparam DMUX_PC = 3'h0;
localparam DMUX_A = 3'h1;
localparam DMUX_X = 3'h2;
localparam DMUX_Y = 3'h3;
localparam DMUX_SP = 3'h4;
localparam DMUX_AUX = 3'h5;