Files
z80/z80mem.h

42 lines
1007 B
C++

#pragma once
#include <stdint.h>
#include <stdio.h>
#define MEMTAG_NONE 0x00
#define MEMTAG_DATA 0x01
#define MEMTAG_INST 0x02
#define MEMTAG_CODE 0x04
#define MEMTAG_IGNORE 0x08
#define MEMTAG_TDATA 0x10
#define MEMTAG_TINST 0x20
#define MEMTAG_TREPEAT 0x40
#define MEMTAG_MODIFIED 0x80
#define MEMTAG_KNOWN 0x07
#define MEMTAG_TOUCHED 0x70
class z80mem
{
public:
static z80mem *get() { return singleton; };
virtual uint8_t readMem(uint16_t address) = 0;
virtual void writeMem(uint16_t address, uint8_t value) = 0;
virtual void loadMem(uint16_t address, uint16_t len, uint8_t *buffer) = 0;
virtual uint8_t getTag(uint16_t address) = 0;
virtual void setTag(uint16_t address, uint8_t value) = 0;
virtual void reset() = 0;
virtual void saveState(FILE* f) = 0;
virtual void loadState(FILE* f) = 0;
virtual uint32_t getSize() = 0;
protected:
static z80mem *singleton;
};