50 lines
915 B
C++
50 lines
915 B
C++
//NEC uPD7725
|
|
//NEC uPD96050
|
|
|
|
class NECDSP : public Coprocessor {
|
|
public:
|
|
enum class Revision : unsigned { uPD7725, uPD96050 } revision;
|
|
unsigned frequency;
|
|
|
|
#include "registers.hpp"
|
|
|
|
uint24 programROM[16384];
|
|
uint16 dataROM[2048];
|
|
uint16 dataRAM[2048];
|
|
|
|
unsigned programROMSize;
|
|
unsigned dataROMSize;
|
|
unsigned dataRAMSize;
|
|
|
|
static void Enter();
|
|
void enter();
|
|
|
|
void exec_op(uint24 opcode);
|
|
void exec_rt(uint24 opcode);
|
|
void exec_jp(uint24 opcode);
|
|
void exec_ld(uint24 opcode);
|
|
|
|
string disassemble(uint14 ip);
|
|
|
|
uint8 sr_read(unsigned);
|
|
void sr_write(unsigned, uint8 data);
|
|
|
|
uint8 dr_read(unsigned);
|
|
void dr_write(unsigned, uint8 data);
|
|
|
|
uint8 dp_read(unsigned addr);
|
|
void dp_write(unsigned addr, uint8 data);
|
|
|
|
void init();
|
|
void load();
|
|
void unload();
|
|
void power();
|
|
void reset();
|
|
|
|
void serialize(serializer&);
|
|
NECDSP();
|
|
~NECDSP();
|
|
};
|
|
|
|
extern NECDSP necdsp;
|