fruitmachine/M6502EmulatorDll/M6502EmulatorDll/memory.h

44 lines
1.1 KiB
C++

#pragma once
#include <vector>
#include <iomanip>
#include <stdint.h>
#include <sstream>
#include <string>
#include <vector>
#include "WideAddress.h"
#include "page.h"
enum INDEX_MODE { INDEX_NONE = 0x01, INDEX_X = 0x02, INDEX_Y = 0x03 };
WideAddress uintAddressToWideAddress(uint16_t address);
uint16_t wideAddressToUintAddress(WideAddress address);
class MemoryMap {
private:
Page pages[256];
MemoryMap() {};
MemoryMap(MemoryMap const&) {};
MemoryMap& operator=(MemoryMap const&) {};
static MemoryMap* m_pInstance;
public:
static MemoryMap* Instance();
uint8_t read_byte(uint16_t int_address);
void write_byte(uint16_t int_address, uint8_t data);
uint8_t read_byte(WideAddress address, bool overrides);
void write_byte(WideAddress address, uint8_t data);
void write_byte(WideAddress address, uint8_t data, bool overrides);
uint8_t read_zero_page_byte(uint8_t int_address);
void write_zero_page_byte(uint8_t int_address, uint8_t data);
void initialize();
void load_binary(uint16_t destination, std::string filename);
void handleReadOverrides(WideAddress);
void handleWriteOverrides(WideAddress);
};