#include #include "src/f6502.h" int load(uint8_t* mem, FILE* file) { return fread(mem, 65536, 1, file); } void print_registers(const f6502_Registers* regs, FILE* file) { fprintf(file, "PC: $%04x\n", regs->PC); fprintf(file, " S: $%02x\n", regs->S); fprintf(file, " A: $%02x\n", regs->A); fprintf(file, " X: $%02x\n", regs->X); fprintf(file, " Y: $%02x\n", regs->Y); fprintf(file, " P: $%02x\n", regs->P); } static f6502_Core core = {0}; int main(int argc, char* argv[]) { f6502_init(&core); if (load(core.memory.ram, stdin) != 1) { fprintf(stderr, "Failed to load e6502 memory\n"); return 1; } core.memory.ram[0xbffc] = 0; f6502_reset(&core); core.registers.PC = 0x400; int total_clocks = 0; int clocks_elapsed = 1; while (clocks_elapsed > 0) { clocks_elapsed = f6502_step(&core, 1000); if (clocks_elapsed < 0) total_clocks -= clocks_elapsed; else total_clocks += clocks_elapsed; } fprintf(stdout, "Ran %d\n", total_clocks); print_registers(&core.registers, stdout); return 0; }