`define load_inst 4'd0 `define store_inst 4'd1 `define alu_inst 4'd2 `define control_transfer_inst 4'd3 `define ACCn 2'd0 `define Xn 2'd1 `define Sn 2'd2 `define PCn 2'd3 `define Never 4'd0 `define Always 4'd1 `define Zequal0 4'd2 `define Zequal1 4'd3 `define justA 4'd0 `define notA 4'd1 `define lslA 4'd2 `define lsrA 4'd3 `define AaddB 4'd4 `define AsubB 4'd5 `define AandB 4'd6 `define AorB 4'd7 `define justB 4'd8 `define NOP {`load_inst,`ACCn,`ACCn,`justA} `define LDA {`load_inst,`ACCn,`ACCn,`justB} `define LDX {`load_inst,`ACCn,`Xn,`justB} `define LDS {`load_inst,`ACCn,`Sn,`justB} `define STA {`store_inst,`ACCn,`ACCn,`justA} `define STX {`store_inst,`Xn,`Xn,`justA} `define STS {`store_inst,`Sn,`Sn,`justA} `define ADD {`alu_inst,`ACCn,`ACCn,`AaddB} `define SUB {`alu_inst,`ACCn,`ACCn,`AsubB} `define AND {`alu_inst,`ACCn,`ACCn,`AandB} `define OR {`alu_inst,`ACCn,`ACCn,`AorB} `define COM {`alu_inst,`ACCn,`ACCn,`notA} `define LSL {`alu_inst,`ACCn,`ACCn,`lslA} `define LSR {`alu_inst,`ACCn,`ACCn,`lsrA} `define BA {`control_transfer_inst,`PCn,`PCn,`Always} `define BEQ {`control_transfer_inst,`PCn,`PCn,`Zequal1} `define BNE {`control_transfer_inst,`PCn,`PCn,`Zequal0} `define INHERENT 4'd0 `define PC_RELATIVE 4'd1 `define IMMEDIATE 4'd2 `define DIRECT 4'd3 `define INDEXED 4'd4