From 3dec06f9af2854969805cc3267a6095158a298dd Mon Sep 17 00:00:00 2001 From: leo Date: Sun, 19 Nov 2023 21:36:31 -0300 Subject: opcodes de maneira mais simples --- CPU.h | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 CPU.h (limited to 'CPU.h') diff --git a/CPU.h b/CPU.h new file mode 100644 index 0000000..6157914 --- /dev/null +++ b/CPU.h @@ -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 -- cgit v1.2.3