diff options
Diffstat (limited to 'CPU.h')
-rw-r--r-- | CPU.h | 41 |
1 files changed, 41 insertions, 0 deletions
@@ -0,0 +1,41 @@ +#ifndef _CPU +#define _CPU + +struct CPU{ + uint8_t register_a; + uint8_t register_x; + uint8_t register_y; + uint8_t status; + uint16_t pc; + uint8_t memory[0xFFFF]; +}; + +enum adressing_mode{ + Immediate = 1, + ZeroPage, + ZeroPage_X, + ZeroPage_Y, + Absolute, + Absolute_X, + Absolute_Y, + Indirect_X, + Indirect_Y, + NoneAddressing, +}; + + + +struct CPU create_cpu(); +int array_size(uint8_t *program); +uint8_t mem_read(struct CPU *cpu, uint16_t addr); +void mem_write(struct CPU *cpu, uint16_t addr, uint8_t data); +void load(struct CPU *cpu, uint8_t *program); +void load_and_run(struct CPU *cpu, uint8_t *program); +void reset_cpu(struct CPU *cpu); +void update_zero_and_negative_flags(struct CPU *cpu, uint8_t result); +void lda(struct CPU *cpu, enum adressing_mode mode); +void interpret(struct CPU *cpu); +uint16_t mem_read_u16(struct CPU *cpu, uint16_t pos); +uint16_t get_operand_address(struct CPU *cpu, enum adressing_mode mode); + +#endif
\ No newline at end of file |