#ifndef INC_6502_EMULATOR_MACHINE_H #define INC_6502_EMULATOR_MACHINE_H #include "cpu.h" #include "memory.h" #include "stack.h" #include #include using namespace std; namespace emu_6502 { class MachineImpl; class Machine { private: unique_ptr pimpl; public: Machine(); ~Machine(); Machine(const Machine&) = delete; Machine& operator=(const Machine&) = delete; Cpu& get_cpu(); Memory& get_memory(); Stack& get_stack(); bool is_eop(); uint8_t read_program_byte(); void load(const vector& program, uint16_t load_at); void execute(); }; } #endif //INC_6502_EMULATOR_MACHINE_H