diff options
| author | LLLL Colonq <llll@colonq> | 2026-07-09 23:51:55 -0400 |
|---|---|---|
| committer | LLLL Colonq <llll@colonq> | 2026-07-09 23:51:55 -0400 |
| commit | 2bdcaf319b1d74ffbaccf08a58336f804761beab (patch) | |
| tree | c21de6df74ec79b5574ad2b89fcc275d10847802 /6502/include/lcq/6502.h | |
Refactor into monorepo
Diffstat (limited to '6502/include/lcq/6502.h')
| -rw-r--r-- | 6502/include/lcq/6502.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/6502/include/lcq/6502.h b/6502/include/lcq/6502.h new file mode 100644 index 0000000..cb3b1fa --- /dev/null +++ b/6502/include/lcq/6502.h @@ -0,0 +1,37 @@ +#ifndef LCOLONQ_6502_H +#define LCOLONQ_6502_H + +#include <lcq/6502/types.h> + +typedef enum { + L6502_FLAG_CARRY = 1 << 1, + L6502_FLAG_ZERO = 1 << 2, + L6502_FLAG_INTERRUPT_DISABLE = 1 << 3, + L6502_FLAG_DECIMAL = 1 << 4, + L6502_FLAG_BREAK_COMMAND = 1 << 5, + L6502_FLAG_OVERFLOW = 1 << 6, + L6502_FLAG_NEGATIVE = 1 << 7, +} l6502_flag; + +typedef struct { + u16 pc; + u8 sp, a, x, y, flags; +} l6502_regs; + +typedef u8 (*l6502_mem_read_handler)(void *data, u16 addr); +typedef void (*l6502_mem_write_handler)(void *data, u16 addr, u8 val); +typedef struct { + l6502_mem_read_handler rh; + l6502_mem_write_handler wh; + void *data; +} l6502_mem; +void l6502_mem_basic_new(l6502_mem *m); + +typedef struct { + l6502_regs regs; + l6502_mem mem; +} l6502_emu; + +void l6502_emulate(l6502_emu *e); + +#endif |
