mirror of https://github.com/bsnes-emu/bsnes.git
77 lines
1.7 KiB
C++
77 lines
1.7 KiB
C++
//NEC uPD7720 (not supported)
|
|
//NEC uPD7725
|
|
//NEC uPD96050
|
|
|
|
#ifndef PROCESSOR_UPD96050_HPP
|
|
#define PROCESSOR_UPD96050_HPP
|
|
|
|
namespace Processor {
|
|
|
|
struct uPD96050 {
|
|
auto power() -> void;
|
|
auto exec() -> void;
|
|
auto serialize(serializer&) -> void;
|
|
|
|
auto execOP(uint24 opcode) -> void;
|
|
auto execRT(uint24 opcode) -> void;
|
|
auto execJP(uint24 opcode) -> void;
|
|
auto execLD(uint24 opcode) -> void;
|
|
|
|
auto readSR() -> uint8;
|
|
auto writeSR(uint8 data) -> void;
|
|
|
|
auto readDR() -> uint8;
|
|
auto writeDR(uint8 data) -> void;
|
|
|
|
auto readDP(uint12 addr) -> uint8;
|
|
auto writeDP(uint12 addr, uint8 data) -> void;
|
|
|
|
auto disassemble(uint14 ip) -> string;
|
|
|
|
enum class Revision : uint { uPD7725, uPD96050 } revision;
|
|
uint24 programROM[16384];
|
|
uint16 dataROM[2048];
|
|
uint16 dataRAM[2048];
|
|
|
|
//registers.cpp
|
|
struct Flag {
|
|
inline operator uint() const;
|
|
inline auto operator=(uint d) -> uint;
|
|
|
|
bool s1, s0, c, z, ov1, ov0;
|
|
};
|
|
|
|
struct Status {
|
|
inline operator uint() const;
|
|
inline auto operator=(uint d) -> uint;
|
|
|
|
bool rqm, usf1, usf0, drs, dma, drc, soc, sic, ei, p1, p0;
|
|
};
|
|
|
|
struct Regs {
|
|
uint16 stack[16]; //LIFO
|
|
varuint pc; //program counter
|
|
varuint rp; //ROM pointer
|
|
varuint dp; //data pointer
|
|
uint4 sp; //stack pointer
|
|
int16 k;
|
|
int16 l;
|
|
int16 m;
|
|
int16 n;
|
|
int16 a; //accumulator
|
|
int16 b; //accumulator
|
|
Flag flaga;
|
|
Flag flagb;
|
|
uint16 tr; //temporary register
|
|
uint16 trb; //temporary register
|
|
Status sr; //status register
|
|
uint16 dr; //data register
|
|
uint16 si;
|
|
uint16 so;
|
|
} regs;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|