[VM][AY_3_891X] Fix not supported defines, replace flags.
#include <pthread.h>
#include <time.h>
#include <sys/time.h>
+#include <string>
+#include <list>
#ifdef USE_DEBUGGER
static FILEIO* logfile = NULL;
}
}
+void set_dbg_completion_list(OSD *osd, std::list<std::string> *p)
+{
+ osd->set_dbg_completion_list(p);
+}
+
+void clear_dbg_completion_list(OSD *osd)
+{
+ osd->clear_dbg_completion_list();
+}
+
#ifdef _MSC_VER
unsigned __stdcall debugger_thread(void *lpx)
#else
p->running = true;
// initialize console
+ std::list<std::string> helplist;
+ std::list<std::string> complist;
+
+ helplist.clear();
+ complist.clear();
+ // Initialize help
+ helplist.push_back("D [<range>] - dump memory");
+ helplist.push_back("E[{B,W,D}] <address> <list> - edit memory (byte,word,dword)");
+ helplist.push_back("EA <address> \"<value>\" - edit memory (ascii)");
+ helplist.push_back("I[{B,W,D}] <port> - input port (byte,word,dword)");
+ helplist.push_back("O[{B,W,D}] <port> <value> - output port (byte,word,dword)");
+ helplist.push_back("R - show register(s)");
+ helplist.push_back("R <reg> <value> - edit register");
+ helplist.push_back("S <range> <list> - search");
+ helplist.push_back("U [<range>] - unassemble");
+ helplist.push_back("UT [<steps> | <steps> <logging_file>] - unassemble back trace");
+ helplist.push_back("H <value> <value> - hexadd");
+ helplist.push_back("N <filename> - name");
+ helplist.push_back("L [<range>] - load binary/hex/symbol file");
+ helplist.push_back("W <range> - write binary/hex file");
+ helplist.push_back("SC - clear symbol(s)");
+ helplist.push_back("SL - list symbol(s)");
+ helplist.push_back("BX [ON|OFF] - ON/OFF to STOP ON EXCEPTION");
+ helplist.push_back("BP <address> - set breakpoint");
+ helplist.push_back("{R,W}BP <address> - set breakpoint (break at memory access)");
+ helplist.push_back("{I,O}BP <port> [<mask>] - set breakpoint (break at i/o access)");
+ helplist.push_back("[{R,W,I,O}]B{C,D,E} {*,<list>} - clear/disable/enable breakpoint(s)");
+ helplist.push_back("[{R,W,I,O}]BL - list breakpoints");
+ helplist.push_back("[{R,W,I,O}]CP <address/port> [<mask>] - set checkpoint (don't break)");
+
+ helplist.push_back("G - go (press esc key to break)");
+ helplist.push_back("G <address> - go and break at address (ignore breakpoints)");
+ helplist.push_back("P - trace one opcode (step over, ignore breakpoints)");
+ helplist.push_back("T [<count>] - trace (step in)");
+ helplist.push_back("Q - quit");
+
+ helplist.push_back("> <filename> - output logfile");
+ helplist.push_back("< <filename> - input commands from file");
+
+ helplist.push_back("! reset [all/cpu/target] - reset");
+ helplist.push_back("! key <code> [<msec>] - press key");
+ helplist.push_back("! device - enumerate debugger available device");
+ helplist.push_back("! device <id/cpu> - select target device");
+ helplist.push_back("! cpu - enumerate debugger available cpu");
+ helplist.push_back("! cpu <id> - select target cpu");
+ helplist.push_back("!! <remark> - do nothing");
+
+ helplist.push_back("<value> - hexa, decimal(%%d), ascii('a')");
+
+ complist.push_back("D [RANGE]");
+ complist.push_back("EB <ADDR> <LIST...>");
+ complist.push_back("EW <ADDR> <LIST...>");
+ complist.push_back("ED <ADDR> <LIST...>");
+ complist.push_back("EA <ADDR> \"VALUE\"");
+ complist.push_back("IB <PORT>");
+ complist.push_back("IW <PORT>");
+ complist.push_back("ID <PORT>");
+ complist.push_back("OB <PORT>");
+ complist.push_back("OW <PORT>");
+ complist.push_back("OD <PORT>");
+ complist.push_back("R [REG VALUE]");
+ complist.push_back("S <RANGE> <LIST>");
+ complist.push_back("U [RANGE]");
+ complist.push_back("UT [STEPS [LOGGING_FILE]]");
+ complist.push_back("H <VAL1> <VBAL2>");
+ complist.push_back("N <filename>");
+ complist.push_back("L [RANGE]");
+ complist.push_back("W [RANGE]");
+ complist.push_back("SC");
+ complist.push_back("SL");
+ complist.push_back("BX ON");
+ complist.push_back("BX OFF");
+ complist.push_back("BP <ADDRESS>");
+ complist.push_back("RBP <ADDRESS>");
+ complist.push_back("WBP <ADDRESS>");
+ complist.push_back("IBP <PORT> [MASK]");
+ complist.push_back("OBP <PORT> [MASK]");
+ complist.push_back("RBC [* | LIST]");
+ complist.push_back("RBD [* | LIST]");
+ complist.push_back("RBE [* | LIST]");
+ complist.push_back("WBC [* | LIST]");
+ complist.push_back("WBD [* | LIST]");
+ complist.push_back("WBE [* | LIST]");
+ complist.push_back("IBC [* | LIST]");
+ complist.push_back("IBD [* | LIST]");
+ complist.push_back("IBE [* | LIST]");
+ complist.push_back("OBC [* | LIST]");
+ complist.push_back("OBD [* | LIST]");
+ complist.push_back("OBE [* | LIST]");
+ complist.push_back("RBL");
+ complist.push_back("WBL");
+ complist.push_back("IBL");
+ complist.push_back("OBL");
+ complist.push_back("RCP <ADDDRESS/PORT> [MASK]");
+ complist.push_back("WCP <ADDDRESS/PORT> [MASK]");
+ complist.push_back("ICP <ADDDRESS/PORT> [MASK]");
+ complist.push_back("OCP <ADDDRESS/PORT> [MASK]");
+ complist.push_back("G [ADDDRESS]");
+ complist.push_back("P");
+ complist.push_back("T [COUNT]");
+ complist.push_back("Q");
+ complist.push_back("> <FILENAME>");
+ complist.push_back("< <FILENAME>");
+
+ complist.push_back("! reset");
+ complist.push_back("! reset all");
+ complist.push_back("! reset <CPU/TARGET>");
+
+ complist.push_back("! key <CODE> [MSEC]");
+ complist.push_back("! device");
+ complist.push_back("! device <ID/CPU>");
+
+ complist.push_back("! cpu");
+ complist.push_back("! cpu <id>");
+
+ complist.push_back("!! <REM>");
+ set_dbg_completion_list(p->osd, &complist);
+
_TCHAR buffer[8192];
bool cp932 = (p->osd->get_console_code_page() == 932);
} else if(_tcsicmp(params[0], _T("!!")) == 0) {
// do nothing
} else if(_tcsicmp(params[0], _T("?")) == 0) {
- my_printf(p->osd, _T("D [<range>] - dump memory\n"));
- my_printf(p->osd, _T("E[{B,W,D}] <address> <list> - edit memory (byte,word,dword)\n"));
- my_printf(p->osd, _T("EA <address> \"<value>\" - edit memory (ascii)\n"));
- my_printf(p->osd, _T("I[{B,W,D}] <port> - input port (byte,word,dword)\n"));
- my_printf(p->osd, _T("O[{B,W,D}] <port> <value> - output port (byte,word,dword)\n"));
- my_printf(p->osd, _T("R - show register(s)\n"));
- my_printf(p->osd, _T("R <reg> <value> - edit register\n"));
- my_printf(p->osd, _T("S <range> <list> - search\n"));
- my_printf(p->osd, _T("U [<range>] - unassemble\n"));
- my_printf(p->osd, _T("UT [<steps> | <steps> <logging_file>] - unassemble back trace\n"));
- my_printf(p->osd, _T("H <value> <value> - hexadd\n"));
- my_printf(p->osd, _T("N <filename> - name\n"));
- my_printf(p->osd, _T("L [<range>] - load binary/hex/symbol file\n"));
- my_printf(p->osd, _T("W <range> - write binary/hex file\n"));
- my_printf(p->osd, _T("SC - clear symbol(s)\n"));
- my_printf(p->osd, _T("SL - list symbol(s)\n"));
- my_printf(p->osd, _T("BX [ON|OFF] - ON/OFF to STOP ON EXCEPTION\n"));
- my_printf(p->osd, _T("BP <address> - set breakpoint\n"));
- my_printf(p->osd, _T("{R,W}BP <address> - set breakpoint (break at memory access)\n"));
- my_printf(p->osd, _T("{I,O}BP <port> [<mask>] - set breakpoint (break at i/o access)\n"));
- my_printf(p->osd, _T("[{R,W,I,O}]B{C,D,E} {*,<list>} - clear/disable/enable breakpoint(s)\n"));
- my_printf(p->osd, _T("[{R,W,I,O}]BL - list breakpoints\n"));
- my_printf(p->osd, _T("[{R,W,I,O}]CP <address/port> [<mask>] - set checkpoint (don't break)\n"));
-
- my_printf(p->osd, _T("G - go (press esc key to break)\n"));
- my_printf(p->osd, _T("G <address> - go and break at address (ignore breakpoints)\n"));
- my_printf(p->osd, _T("P - trace one opcode (step over, ignore breakpoints)\n"));
- my_printf(p->osd, _T("T [<count>] - trace (step in)\n"));
- my_printf(p->osd, _T("Q - quit\n"));
-
- my_printf(p->osd, _T("> <filename> - output logfile\n"));
- my_printf(p->osd, _T("< <filename> - input commands from file\n"));
-
- my_printf(p->osd, _T("! reset [all/cpu/target] - reset\n"));
- my_printf(p->osd, _T("! key <code> [<msec>] - press key\n"));
- my_printf(p->osd, _T("! device - enumerate debugger available device\n"));
- my_printf(p->osd, _T("! device <id/cpu> - select target device\n"));
- my_printf(p->osd, _T("! cpu - enumerate debugger available cpu\n"));
- my_printf(p->osd, _T("! cpu <id> - select target cpu\n"));
- my_printf(p->osd, _T("!! <remark> - do nothing\n"));
-
- my_printf(p->osd, _T("<value> - hexa, decimal(%%d), ascii('a')\n"));
+ for(auto n = helplist.begin(); n != helplist.end(); ++n) {
+ std::string tmps = *n;
+ my_printf(p->osd, (const _TCHAR *)(tmps.c_str()));
+ my_printf(p->osd, _T("\n"));
+ }
} else {
my_printf(p->osd, _T("unknown command %s\n"), params[0]);
}
lpf_quality = 1.0;
hpf_quality = 1.0;
+ _HAS_AY_3_8910 = osd->check_feature(_T("HAS_AY_3_8910"));
+ _HAS_AY_3_8912 = osd->check_feature(_T("HAS_AY_3_8912"));
+ _HAS_AY_3_8913 = osd->check_feature(_T("HAS_AY_3_8913"));
+ _SUPPORT_AY_3_891X_PORT_A = false;
+ _SUPPORT_AY_3_891X_PORT_B = false;
+ _IS_AY_3_891X_PORT_MODE = osd->check_feature(_T("AY_3_891X_PORT_MODE"));
+ _AY_3_891X_PORT_MODE = osd->get_feature_uint32_value(_T("AY_3_891X_PORT_MODE"));
+
+ if(_HAS_AY_3_8912) {
+ // AY-3-8912: port b is not supported
+ _SUPPORT_AY_3_891X_PORT_A = true;
+ } else if(!(_HAS_AY_3_8913)) {
+ // AY-3-8913: both port a and port b are not supported
+ // AY-3-8910: both port a and port b are supported
+ _SUPPORT_AY_3_891X_PORT_A = true;
+ _SUPPORT_AY_3_891X_PORT_B = true;
+ }
+ _SUPPORT_AY_3_891X_PORT = ((_SUPPORT_AY_3_891X_PORT_A) || (_SUPPORT_AY_3_891X_PORT_B));
+ if(_HAS_AY_3_8910) {
+ set_device_name(_T("AY-3-8910 PSG"));
+ } else if(_HAS_AY_3_8912) {
+ set_device_name(_T("AY-3-8912 PSG"));
+ } else if(_HAS_AY_3_8913) {
+ set_device_name(_T("AY-3-8913 PSG"));
+ }
+
+
if(d_debugger != NULL) {
d_debugger->set_device_name(_T("Debugger (AY-3-891X PSG)"));
d_debugger->set_context_mem(this);
timer_event_id = -1;
this->set_reg(0x27, 0);
-#ifdef SUPPORT_AY_3_891X_PORT
- port[0].first = port[1].first = true;
- port[0].wreg = port[1].wreg = 0;//0xff;
-#ifdef AY_3_891X_PORT_MODE
- mode = AY_3_891X_PORT_MODE;
-#else
- mode = 0;
-#endif
-#endif
+ if(_SUPPORT_AY_3_891X_PORT) {
+ port[0].first = port[1].first = true;
+ port[0].wreg = port[1].wreg = 0;//0xff;
+ if(_IS_AY_3_891X_PORT_MODE) {
+ mode = _AY_3_891X_PORT_MODE;
+ } else {
+ mode = 0;
+ }
+ }
irq_prev = busy = false;
}
void AY_3_891X::write_via_debugger_data8(uint32_t addr, uint32_t data)
{
if(addr < 16) {
-#ifdef SUPPORT_AY_3_891X_PORT
- if(addr == 7) {
-#ifdef AY_3_891X_PORT_MODE
- mode = (data & 0x3f) | AY_3_891X_PORT_MODE;
-#else
- mode = data;
-#endif
- } else if(addr == 14) {
-#ifdef SUPPORT_AY_3_891X_PORT_A
- if(port[0].wreg != data || port[0].first) {
- write_signals(&port[0].outputs, data);
- port[0].wreg = data;
- port[0].first = false;
- }
-#endif
- } else if(addr == 15) {
-#ifdef SUPPORT_AY_3_891X_PORT_B
- if(port[1].wreg != data || port[1].first) {
- write_signals(&port[1].outputs, data);
- port[1].wreg = data;
- port[1].first = false;
+ if(_SUPPORT_AY_3_891X_PORT) {
+ if(addr == 7) {
+ if(_IS_AY_3_891X_PORT_MODE) {
+ mode = (data & 0x3f) | _AY_3_891X_PORT_MODE;
+ } else {
+ mode = data;
+ }
+ } else if(addr == 14) {
+ if(_SUPPORT_AY_3_891X_PORT_A) {
+ if(port[0].wreg != data || port[0].first) {
+ write_signals(&port[0].outputs, data);
+ port[0].wreg = data;
+ port[0].first = false;
+ }
+ }
+ } else if(addr == 15) {
+ if(_SUPPORT_AY_3_891X_PORT_B) {
+ if(port[1].wreg != data || port[1].first) {
+ write_signals(&port[1].outputs, data);
+ port[1].wreg = data;
+ port[1].first = false;
+ }
+ }
}
-#endif
}
-#endif
update_count();
this->set_reg(addr, data);
}
uint32_t AY_3_891X::read_via_debugger_data8(uint32_t addr)
{
if(addr < 16) {
-#ifdef SUPPORT_AY_3_891X_PORT
- if(addr == 14) {
-#ifdef SUPPORT_AY_3_891X_PORT_A
- return (mode & 0x40) ? port[0].wreg : port[0].rreg;
-#endif
- } else if(addr == 15) {
-#ifdef SUPPORT_AY_3_891X_PORT_B
- return (mode & 0x80) ? port[1].wreg : port[1].rreg;
-#endif
+ if(_SUPPORT_AY_3_891X_PORT) {
+ if(addr == 14) {
+ if(_SUPPORT_AY_3_891X_PORT_A) {
+ return (mode & 0x40) ? port[0].wreg : port[0].rreg;
+ }
+ } else if(addr == 15) {
+ if(_SUPPORT_AY_3_891X_PORT_B) {
+ return (mode & 0x80) ? port[1].wreg : port[1].rreg;
+ }
+ }
}
-#endif
return opn->GetReg(addr);
}
return 0;
{
if(id == SIG_AY_3_891X_MUTE) {
mute = ((data & mask) != 0);
-#ifdef SUPPORT_AY_3_891X_PORT_A
+
} else if(id == SIG_AY_3_891X_PORT_A) {
- port[0].rreg = (port[0].rreg & ~mask) | (data & mask);
-#endif
-#ifdef SUPPORT_AY_3_891X_PORT_B
+ if(_SUPPORT_AY_3_891X_PORT_A) {
+ port[0].rreg = (port[0].rreg & ~mask) | (data & mask);
+ }
+
} else if(id == SIG_AY_3_891X_PORT_B) {
- port[1].rreg = (port[1].rreg & ~mask) | (data & mask);
-#endif
+ if(_SUPPORT_AY_3_891X_PORT_B) {
+ port[1].rreg = (port[1].rreg & ~mask) | (data & mask);
+ }
}
}
clock_const = (uint32_t)((double)chip_clock * 1024.0 * 1024.0 / (double)new_clocks + 0.5);
}
+bool AY_3_891X::write_debug_reg(const _TCHAR *reg, uint32_t data)
+{
+ if((reg[0] == 'R') || (reg[0] == 'r')) {
+ if(strlen(reg) >= 2) {
+ _TCHAR *eptr;
+ int regnum = _tcstol(&(reg[1]), &eptr, 16);
+ if(regnum >= 16) {
+ return false;
+ }
+ opn->SetReg((uint32_t)regnum, data);
+ return true;
+ }
+ return false;
+ }
+ if(_SUPPORT_AY_3_891X_PORT) {
+ if(_tcsicmp(reg, _T("PAR")) == 0) {
+ port[0].rreg = data;
+ } else if(_tcsicmp(reg, _T("PAW")) == 0) {
+ port[0].wreg = data;
+ write_signals(&port[0].outputs, data);
+ } else if(_tcsicmp(reg, _T("PBR")) == 0) {
+ port[1].rreg = data;
+ } else if(_tcsicmp(reg, _T("PBW")) == 0) {
+ port[1].wreg = data;
+ write_signals(&port[1].outputs, data);
+ } else if(_tcsicmp(reg, _T("MODE")) == 0) {
+ mode = data;
+ } else {
+ return false;
+ }
+ return true;
+ }
+ return false;
+}
+
+bool AY_3_891X::get_debug_regs_info(_TCHAR *buffer, size_t buffer_len)
+{
+ _TCHAR tmps[512] = {0};
+ if(_SUPPORT_AY_3_891X_PORT) {
+ my_stprintf_s(tmps, 512, _T("PORTA: PAR/PAW = %02X/%02X PORTB: PBR/PBW = %02X/%02X MODE=%02X\n")
+ , port[0].rreg, port[0].wreg, port[1].rreg, port[1].wreg, mode
+ );
+ }
+ _TCHAR tmps2[16 * 12 + 16] = {0};
+ _TCHAR tmps3[16];
+ for(uint32_t i = 0; i < 2; i++) {
+ memset(tmps3, 0x00, sizeof(tmps3));
+ my_stprintf_s(tmps3, 15, _T("+%02d :"), i * 8);
+ _tcsncat(tmps2, tmps3, sizeof(tmps2) - 1);
+ for(uint32_t j = 0; j < 8; j++) {
+ memset(tmps3, 0x00, sizeof(tmps3));
+ my_stprintf_s(tmps3, 7, _T(" %02X"), opn->GetReg(i * 8 + j));
+ _tcsncat(tmps2, tmps3, sizeof(tmps2) - 1);
+ }
+ _tcsncat(tmps2, "\n", sizeof(tmps2) - 1);
+ }
+ my_stprintf_s(buffer, buffer_len - 1, _T("%sCH=%02X CHIP_CLOCK=%d\nREG : +0 +1 +2 +3 +4 +5 +6 +7 +8\n%s"),
+ tmps, ch, chip_clock, tmps2);
+ return true;
+}
+
#define STATE_VERSION 5
bool AY_3_891X::process_state(FILEIO* state_fio, bool loading)
return false;
}
state_fio->StateValue(ch);
-#ifdef SUPPORT_AY_3_891X_PORT
- for(int i = 0; i < 2; i++) {
- state_fio->StateValue(port[i].wreg);
- state_fio->StateValue(port[i].rreg);
- state_fio->StateValue(port[i].first);
- }
+ if(_SUPPORT_AY_3_891X_PORT) {
+ for(int i = 0; i < 2; i++) {
+ state_fio->StateValue(port[i].wreg);
+ state_fio->StateValue(port[i].rreg);
+ state_fio->StateValue(port[i].first);
+ }
+ }
state_fio->StateValue(mode);
-#endif
state_fio->StateValue(chip_clock);
state_fio->StateValue(irq_prev);
state_fio->StateValue(mute);
#include "device.h"
#include "fmgen/opna.h"
-#if defined(HAS_AY_3_8913)
+//#if defined(HAS_AY_3_8913)
// AY-3-8913: both port a and port b are not supported
-#elif defined(HAS_AY_3_8912)
+//#elif defined(HAS_AY_3_8912)
// AY-3-8912: port b is not supported
-#define SUPPORT_AY_3_891X_PORT_A
-#else
+//#define SUPPORT_AY_3_891X_PORT_A
+//#else
// AY-3-8910: both port a and port b are supported
-#define SUPPORT_AY_3_891X_PORT_A
-#define SUPPORT_AY_3_891X_PORT_B
-#endif
-#if defined(SUPPORT_AY_3_891X_PORT_A) || defined(SUPPORT_AY_3_891X_PORT_B)
-#define SUPPORT_AY_3_891X_PORT
-#endif
+//#define SUPPORT_AY_3_891X_PORT_A
+//#define SUPPORT_AY_3_891X_PORT_B
+//#endif
+//#if defined(SUPPORT_AY_3_891X_PORT_A) || defined(SUPPORT_AY_3_891X_PORT_B)
+//#define SUPPORT_AY_3_891X_PORT
+//#endif
-#ifdef SUPPORT_AY_3_891X_PORT_A
#define SIG_AY_3_891X_PORT_A 0
-#endif
-#ifdef SUPPORT_AY_3_891X_PORT_B
#define SIG_AY_3_891X_PORT_B 1
-#endif
#define SIG_AY_3_891X_MUTE 2
class DEBUGGER;
private:
DEBUGGER *d_debugger;
FM::OPN* opn;
+
+ bool _HAS_AY_3_8910;
+ bool _HAS_AY_3_8912;
+ bool _HAS_AY_3_8913;
+ bool _SUPPORT_AY_3_891X_PORT_A;
+ bool _SUPPORT_AY_3_891X_PORT_B;
+ bool _SUPPORT_AY_3_891X_PORT;
+ bool _IS_AY_3_891X_PORT_MODE;
+ uint32_t _AY_3_891X_PORT_MODE;
int base_decibel_fm, base_decibel_psg;
uint8_t ch;
-#ifdef SUPPORT_AY_3_891X_PORT
+//#ifdef SUPPORT_AY_3_891X_PORT
struct {
uint8_t wreg;
uint8_t rreg;
outputs_t outputs;
} port[2];
uint8_t mode;
-#endif
+//#endif
int chip_clock;
bool irq_prev, mute;
public:
AY_3_891X(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
{
-#ifdef SUPPORT_AY_3_891X_PORT
+//#ifdef SUPPORT_AY_3_891X_PORT
for(int i = 0; i < 2; i++) {
initialize_output_signals(&port[i].outputs);
port[i].wreg = port[i].rreg = 0;//0xff;
}
-#endif
+//#endif
base_decibel_fm = base_decibel_psg = 0;
d_debugger = NULL;
use_lpf = false;
use_hpf = false;
sample_rate = 0;
-#if defined(HAS_AY_3_8910)
- set_device_name(_T("AY-3-8910 PSG"));
-#elif defined(HAS_AY_3_8912)
- set_device_name(_T("AY-3-8912 PSG"));
-#elif defined(HAS_AY_3_8913)
- set_device_name(_T("AY-3-8913 PSG"));
-#else
+ _HAS_AY_3_8910 = false;
+ _HAS_AY_3_8912 = false;
+ _HAS_AY_3_8913 = false;
+ _SUPPORT_AY_3_891X_PORT_A = false;
+ _SUPPORT_AY_3_891X_PORT_B = false;
+ _SUPPORT_AY_3_891X_PORT = false;
+ _IS_AY_3_891X_PORT_MODE = false;
+ _AY_3_891X_PORT_MODE = 0;
set_device_name(_T("AY-3-891X PSG"));
-#endif
}
~AY_3_891X() {}
{
return 16;
}
+ bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
+ bool write_debug_reg(const _TCHAR *reg, uint32_t data);
+
void __FASTCALL write_debug_data8(uint32_t addr, uint32_t data)
{
if(addr < 16) {
bool process_state(FILEIO* state_fio, bool loading);
// unique functions
-#ifdef SUPPORT_AY_3_891X_PORT_A
void set_context_port_a(DEVICE* device, int id, uint32_t mask, int shift)
{
register_output_signal(&port[0].outputs, device, id, mask, shift);
}
-#endif
-#ifdef SUPPORT_AY_3_891X_PORT_B
void set_context_port_b(DEVICE* device, int id, uint32_t mask, int shift)
{
register_output_signal(&port[1].outputs, device, id, mask, shift);
}
-#endif
+
void set_context_debugger(DEBUGGER* device)
{
d_debugger = device;
message("* vm/common_vm")
-SET(THIS_LIB_VERSION 2.18.2)
+SET(THIS_LIB_VERSION 2.18.3)
#include(cotire)
set(s_vm_common_vm_srcs