42 lines
928 B
C
42 lines
928 B
C
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
#include <display.h>
|
|
#pragma once
|
|
|
|
typedef struct{
|
|
uint32_t r[16];
|
|
uint32_t pc;
|
|
uint32_t pr;
|
|
uint32_t sr;
|
|
uint32_t mach;
|
|
uint32_t macl;
|
|
uint32_t gbr;
|
|
|
|
uint8_t* rom;
|
|
uint8_t ram[32768*8]; // 0x08100000
|
|
uint8_t vram[8192];
|
|
|
|
uint32_t program_size;
|
|
|
|
uint8_t t;
|
|
uint8_t q;
|
|
uint8_t m;
|
|
|
|
uint32_t cursor_x;
|
|
uint32_t cursor_y;
|
|
|
|
display_t* display;
|
|
}cpu_status_t;
|
|
|
|
int cpu_setup_addin(cpu_status_t*, char*);
|
|
|
|
int cpu_execute(cpu_status_t*);
|
|
int cpu_run_from(cpu_status_t*, uint32_t);
|
|
|
|
uint32_t cpu_read32(cpu_status_t*, uint32_t);
|
|
uint16_t cpu_read16(cpu_status_t*, uint32_t);
|
|
uint8_t cpu_read8(cpu_status_t*, uint32_t);
|
|
|
|
void cpu_write32(cpu_status_t* status, uint32_t addr, uint32_t data);
|
|
void cpu_write16(cpu_status_t* status, uint32_t addr, uint16_t data);
|
|
void cpu_write8(cpu_status_t* status, uint32_t addr, uint8_t data); |