Cleaned up device and sound interfaces to match the CPU

interfaces when handling strings. Namely, the generic
get_info functions allocate a temporary string and the
device in question copies its string to the target,
instead of assigning a const char *. Updated all device
and sound cores to operate this way.

Added the concept of a cpu_state_table, which is
supplied by the CPU cores and which describes all the
register state accessible to the debugger and other
subsystems. The format of the table is such that most
data can be simply fetched from memory without the
further involvement of the CPU core, including the 
display of common formats. Extensibility points are
available for custom display and for importing/exporting
the data to intermediate variables for more complicated
scenarios. Updated the ADSP21xx, TMS340x0, and i86 cores
to use this.

Removed the old debugger register list, which was never
used. Replaced it with using ordering from the
cpu_state_table.

Renamed REG_PC -> REG_GENPC, REG_SP -> REG_GENSP, and
REG_PREVIOUSPC -> REG_GENPCBASE. Updated a few spots
that were using these directly. Moved these definitions
into the end of the register area rather than leaving
them outside which put them in a weird range.
This commit is contained in:
Aaron Giles 2008-12-19 06:46:17 +00:00
parent 3fdd1d460a
commit 42c9aeff39
136 changed files with 2085 additions and 1673 deletions

2
.gitattributes vendored
View File

@ -147,7 +147,7 @@ src/emu/cpu/i86/host.h svneol=native#text/plain
src/emu/cpu/i86/i286.c svneol=native#text/plain
src/emu/cpu/i86/i286.h svneol=native#text/plain
src/emu/cpu/i86/i86.c svneol=native#text/plain
src/emu/cpu/i86/i86.h svneol=native#text/plain
src/emu/cpu/i86/i86.h -text svneol=native#text/plain
src/emu/cpu/i86/i86.txt svneol=native#text/plain
src/emu/cpu/i86/i86mem.c svneol=native#text/plain
src/emu/cpu/i86/i86mem.h svneol=native#text/plain

View File

@ -81,22 +81,22 @@ static const INT32 constants[] =
#define MSTAT_GOMODE 0x40 /* go mode enable */
/* you must call this in order to change MSTAT */
INLINE void set_mstat(adsp2100_state *adsp, int new_value)
INLINE void update_mstat(adsp2100_state *adsp)
{
if ((new_value ^ adsp->mstat) & MSTAT_BANK)
if ((adsp->mstat ^ adsp->mstat_prev) & MSTAT_BANK)
{
ADSPCORE temp = adsp->core;
adsp->core = adsp->alt;
adsp->alt = temp;
}
if ((new_value ^ adsp->mstat) & MSTAT_TIMER)
if ((adsp->mstat ^ adsp->mstat_prev) & MSTAT_TIMER)
if (adsp->timer_fired != NULL)
(*adsp->timer_fired)(adsp->device, (new_value & MSTAT_TIMER) != 0);
if (new_value & MSTAT_STICKYV)
(*adsp->timer_fired)(adsp->device, (adsp->mstat & MSTAT_TIMER) != 0);
if (adsp->mstat & MSTAT_STICKYV)
adsp->astat_clear = ~(CFLAG | NFLAG | ZFLAG);
else
adsp->astat_clear = ~(CFLAG | VFLAG | NFLAG | ZFLAG);
adsp->mstat = new_value;
adsp->mstat_prev = adsp->mstat;
}
@ -291,7 +291,8 @@ INLINE void stat_stack_pop(adsp2100_state *adsp)
if (adsp->stat_sp == 0)
adsp->sstat |= STATUS_EMPTY;
}
set_mstat(adsp, adsp->stat_stack[adsp->stat_sp][0]);
adsp->mstat = adsp->stat_stack[adsp->stat_sp][0];
update_mstat(adsp);
adsp->imask = adsp->stat_stack[adsp->stat_sp][1];
adsp->astat = adsp->stat_stack[adsp->stat_sp][2];
check_irqs(adsp);
@ -322,6 +323,17 @@ INLINE int CONDITION(adsp2100_state *adsp, int c)
register writing
===========================================================================*/
INLINE void update_i(adsp2100_state *adsp, int which)
{
adsp->base[which] = adsp->i[which] & adsp->lmask[which];
}
INLINE void update_l(adsp2100_state *adsp, int which)
{
adsp->lmask[which] = mask_table[adsp->l[which] & 0x3fff];
adsp->base[which] = adsp->i[which] & adsp->lmask[which];
}
static void wr_inval(adsp2100_state *adsp, INT32 val) { logerror( "ADSP %04x: Writing to an invalid register!\n", adsp->ppc ); }
static void wr_ax0(adsp2100_state *adsp, INT32 val) { adsp->core.ax0.s = val; }
static void wr_ax1(adsp2100_state *adsp, INT32 val) { adsp->core.ax1.s = val; }
@ -339,14 +351,14 @@ static void wr_mr1(adsp2100_state *adsp, INT32 val) { adsp->core.mr.mrx.mr1.s
static void wr_mr2(adsp2100_state *adsp, INT32 val) { adsp->core.mr.mrx.mr2.s = (INT8)val; }
static void wr_sr0(adsp2100_state *adsp, INT32 val) { adsp->core.sr.srx.sr0.s = val; }
static void wr_sr1(adsp2100_state *adsp, INT32 val) { adsp->core.sr.srx.sr1.s = val; }
static void wr_i0(adsp2100_state *adsp, INT32 val) { adsp->i[0] = val & 0x3fff; adsp->base[0] = val & adsp->lmask[0]; }
static void wr_i1(adsp2100_state *adsp, INT32 val) { adsp->i[1] = val & 0x3fff; adsp->base[1] = val & adsp->lmask[1]; }
static void wr_i2(adsp2100_state *adsp, INT32 val) { adsp->i[2] = val & 0x3fff; adsp->base[2] = val & adsp->lmask[2]; }
static void wr_i3(adsp2100_state *adsp, INT32 val) { adsp->i[3] = val & 0x3fff; adsp->base[3] = val & adsp->lmask[3]; }
static void wr_i4(adsp2100_state *adsp, INT32 val) { adsp->i[4] = val & 0x3fff; adsp->base[4] = val & adsp->lmask[4]; }
static void wr_i5(adsp2100_state *adsp, INT32 val) { adsp->i[5] = val & 0x3fff; adsp->base[5] = val & adsp->lmask[5]; }
static void wr_i6(adsp2100_state *adsp, INT32 val) { adsp->i[6] = val & 0x3fff; adsp->base[6] = val & adsp->lmask[6]; }
static void wr_i7(adsp2100_state *adsp, INT32 val) { adsp->i[7] = val & 0x3fff; adsp->base[7] = val & adsp->lmask[7]; }
static void wr_i0(adsp2100_state *adsp, INT32 val) { adsp->i[0] = val & 0x3fff; update_i(adsp, 0); }
static void wr_i1(adsp2100_state *adsp, INT32 val) { adsp->i[1] = val & 0x3fff; update_i(adsp, 1); }
static void wr_i2(adsp2100_state *adsp, INT32 val) { adsp->i[2] = val & 0x3fff; update_i(adsp, 2); }
static void wr_i3(adsp2100_state *adsp, INT32 val) { adsp->i[3] = val & 0x3fff; update_i(adsp, 3); }
static void wr_i4(adsp2100_state *adsp, INT32 val) { adsp->i[4] = val & 0x3fff; update_i(adsp, 4); }
static void wr_i5(adsp2100_state *adsp, INT32 val) { adsp->i[5] = val & 0x3fff; update_i(adsp, 5); }
static void wr_i6(adsp2100_state *adsp, INT32 val) { adsp->i[6] = val & 0x3fff; update_i(adsp, 6); }
static void wr_i7(adsp2100_state *adsp, INT32 val) { adsp->i[7] = val & 0x3fff; update_i(adsp, 7); }
static void wr_m0(adsp2100_state *adsp, INT32 val) { adsp->m[0] = (INT32)(val << 18) >> 18; }
static void wr_m1(adsp2100_state *adsp, INT32 val) { adsp->m[1] = (INT32)(val << 18) >> 18; }
static void wr_m2(adsp2100_state *adsp, INT32 val) { adsp->m[2] = (INT32)(val << 18) >> 18; }
@ -355,17 +367,16 @@ static void wr_m4(adsp2100_state *adsp, INT32 val) { adsp->m[4] = (INT32)(val
static void wr_m5(adsp2100_state *adsp, INT32 val) { adsp->m[5] = (INT32)(val << 18) >> 18; }
static void wr_m6(adsp2100_state *adsp, INT32 val) { adsp->m[6] = (INT32)(val << 18) >> 18; }
static void wr_m7(adsp2100_state *adsp, INT32 val) { adsp->m[7] = (INT32)(val << 18) >> 18; }
static void wr_l0(adsp2100_state *adsp, INT32 val) { adsp->l[0] = val & 0x3fff; adsp->lmask[0] = mask_table[val & 0x3fff]; adsp->base[0] = adsp->i[0] & adsp->lmask[0]; }
static void wr_l1(adsp2100_state *adsp, INT32 val) { adsp->l[1] = val & 0x3fff; adsp->lmask[1] = mask_table[val & 0x3fff]; adsp->base[1] = adsp->i[1] & adsp->lmask[1]; }
static void wr_l2(adsp2100_state *adsp, INT32 val) { adsp->l[2] = val & 0x3fff; adsp->lmask[2] = mask_table[val & 0x3fff]; adsp->base[2] = adsp->i[2] & adsp->lmask[2]; }
static void wr_l3(adsp2100_state *adsp, INT32 val) { adsp->l[3] = val & 0x3fff; adsp->lmask[3] = mask_table[val & 0x3fff]; adsp->base[3] = adsp->i[3] & adsp->lmask[3]; }
static void wr_l4(adsp2100_state *adsp, INT32 val) { adsp->l[4] = val & 0x3fff; adsp->lmask[4] = mask_table[val & 0x3fff]; adsp->base[4] = adsp->i[4] & adsp->lmask[4]; }
static void wr_l5(adsp2100_state *adsp, INT32 val) { adsp->l[5] = val & 0x3fff; adsp->lmask[5] = mask_table[val & 0x3fff]; adsp->base[5] = adsp->i[5] & adsp->lmask[5]; }
static void wr_l6(adsp2100_state *adsp, INT32 val) { adsp->l[6] = val & 0x3fff; adsp->lmask[6] = mask_table[val & 0x3fff]; adsp->base[6] = adsp->i[6] & adsp->lmask[6]; }
static void wr_l7(adsp2100_state *adsp, INT32 val) { adsp->l[7] = val & 0x3fff; adsp->lmask[7] = mask_table[val & 0x3fff]; adsp->base[7] = adsp->i[7] & adsp->lmask[7]; }
static void wr_l0(adsp2100_state *adsp, INT32 val) { adsp->l[0] = val & 0x3fff; update_l(adsp, 0); }
static void wr_l1(adsp2100_state *adsp, INT32 val) { adsp->l[1] = val & 0x3fff; update_l(adsp, 1); }
static void wr_l2(adsp2100_state *adsp, INT32 val) { adsp->l[2] = val & 0x3fff; update_l(adsp, 2); }
static void wr_l3(adsp2100_state *adsp, INT32 val) { adsp->l[3] = val & 0x3fff; update_l(adsp, 3); }
static void wr_l4(adsp2100_state *adsp, INT32 val) { adsp->l[4] = val & 0x3fff; update_l(adsp, 4); }
static void wr_l5(adsp2100_state *adsp, INT32 val) { adsp->l[5] = val & 0x3fff; update_l(adsp, 5); }
static void wr_l6(adsp2100_state *adsp, INT32 val) { adsp->l[6] = val & 0x3fff; update_l(adsp, 6); }
static void wr_l7(adsp2100_state *adsp, INT32 val) { adsp->l[7] = val & 0x3fff; update_l(adsp, 7); }
static void wr_astat(adsp2100_state *adsp, INT32 val) { adsp->astat = val & 0x00ff; }
static void wr_mstat(adsp2100_state *adsp, INT32 val) { set_mstat(adsp, val & adsp->mstat_mask); }
static void wr_sstat(adsp2100_state *adsp, INT32 val) { adsp->sstat = val & 0x00ff; }
static void wr_mstat(adsp2100_state *adsp, INT32 val) { adsp->mstat = val & adsp->mstat_mask; update_mstat(adsp); }
static void wr_imask(adsp2100_state *adsp, INT32 val) { adsp->imask = val & adsp->imask_mask; check_irqs(adsp); }
static void wr_icntl(adsp2100_state *adsp, INT32 val) { adsp->icntl = val & 0x001f; check_irqs(adsp); }
static void wr_cntr(adsp2100_state *adsp, INT32 val) { cntr_stack_push(adsp); adsp->cntr = val & 0x3fff; }

View File

@ -211,6 +211,7 @@ typedef struct
UINT32 astat;
UINT32 sstat;
UINT32 mstat;
UINT32 mstat_prev;
UINT32 astat_clear;
UINT32 idle;
@ -261,10 +262,11 @@ typedef struct
adsp21xx_tx_func sport_tx_callback;
adsp21xx_timer_func timer_fired;
/* Memory spaces */
/* memory spaces */
const address_space *program;
const address_space *data;
const address_space *io;
cpu_state_table state;
} adsp2100_state;
@ -283,6 +285,133 @@ static UINT32 pcbucket[0x4000];
#endif
/***************************************************************************
CPU STATE DESCRIPTION
***************************************************************************/
#define ADSP21XX_STATE_ENTRY(_name, _format, _member, _datamask, _flags) \
CPU_STATE_ENTRY(ADSP2100_##_name, #_name, _format, adsp2100_state, _member, _datamask, ~0, _flags)
#define ADSP21XX_STATE_ENTRY_MASK(_name, _format, _member, _datamask, _flags, _validmask) \
CPU_STATE_ENTRY(ADSP2100_##_name, #_name, _format, adsp2100_state, _member, _datamask, _validmask, _flags)
static const cpu_state_entry state_array[] =
{
ADSP21XX_STATE_ENTRY(PC, "%04X", pc, 0xffff, 0)
ADSP21XX_STATE_ENTRY(GENPC, "%04X", pc, 0xffff, CPUSTATE_NOSHOW)
ADSP21XX_STATE_ENTRY(GENPCBASE, "%04X", ppc, 0xffff, CPUSTATE_NOSHOW)
ADSP21XX_STATE_ENTRY(AX0, "%04X", core.ax0.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(AX1, "%04X", core.ax1.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(AY0, "%04X", core.ay0.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(AY1, "%04X", core.ay1.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(AR, "%04X", core.ar.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(AF, "%04X", core.af.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(MX0, "%04X", core.mx0.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(MX1, "%04X", core.mx1.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(MY0, "%04X", core.my0.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(MY1, "%04X", core.my1.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(MR0, "%04X", core.mr.mrx.mr0.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(MR1, "%04X", core.mr.mrx.mr1.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(MR2, "%02X", core.mr.mrx.mr2.u, 0xff, CPUSTATE_IMPORT_SEXT)
ADSP21XX_STATE_ENTRY(MF, "%04X", core.mf.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(SI, "%04X", core.si.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(SE, "%02X", core.se.u, 0xff, CPUSTATE_IMPORT_SEXT)
ADSP21XX_STATE_ENTRY(SB, "%02X", core.sb.u, 0x1f, CPUSTATE_IMPORT_SEXT)
ADSP21XX_STATE_ENTRY(SR0, "%04X", core.sr.srx.sr0.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(SR1, "%04X", core.sr.srx.sr0.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(AX0_SEC, "%04X", alt.ax0.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(AX1_SEC, "%04X", alt.ax1.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(AY0_SEC, "%04X", alt.ay0.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(AY1_SEC, "%04X", alt.ay1.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(AR_SEC, "%04X", alt.ar.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(AF_SEC, "%04X", alt.af.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(MX0_SEC, "%04X", alt.mx0.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(MX1_SEC, "%04X", alt.mx1.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(MY0_SEC, "%04X", alt.my0.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(MY1_SEC, "%04X", alt.my1.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(MR0_SEC, "%04X", alt.mr.mrx.mr0.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(MR1_SEC, "%04X", alt.mr.mrx.mr1.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(MR2_SEC, "%02X", alt.mr.mrx.mr2.u, 0xff, CPUSTATE_IMPORT_SEXT)
ADSP21XX_STATE_ENTRY(MF_SEC, "%04X", alt.mf.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(SI_SEC, "%04X", alt.si.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(SE_SEC, "%02X", alt.se.u, 0xff, CPUSTATE_IMPORT_SEXT)
ADSP21XX_STATE_ENTRY(SB_SEC, "%02X", alt.sb.u, 0x1f, CPUSTATE_IMPORT_SEXT)
ADSP21XX_STATE_ENTRY(SR0_SEC, "%04X", alt.sr.srx.sr0.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(SR1_SEC, "%04X", alt.sr.srx.sr0.u, 0xffff, 0)
ADSP21XX_STATE_ENTRY(I0, "%04X", i[0], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(I1, "%04X", i[1], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(I2, "%04X", i[2], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(I3, "%04X", i[3], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(I4, "%04X", i[4], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(I5, "%04X", i[5], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(I6, "%04X", i[6], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(I7, "%04X", i[7], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(L0, "%04X", l[0], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(L1, "%04X", l[1], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(L2, "%04X", l[2], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(L3, "%04X", l[3], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(L4, "%04X", l[4], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(L5, "%04X", l[5], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(L6, "%04X", l[6], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(L7, "%04X", l[7], 0x3fff, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(M0, "%04X", m[0], 0x3fff, CPUSTATE_IMPORT_SEXT)
ADSP21XX_STATE_ENTRY(M1, "%04X", m[1], 0x3fff, CPUSTATE_IMPORT_SEXT)
ADSP21XX_STATE_ENTRY(M2, "%04X", m[2], 0x3fff, CPUSTATE_IMPORT_SEXT)
ADSP21XX_STATE_ENTRY(M3, "%04X", m[3], 0x3fff, CPUSTATE_IMPORT_SEXT)
ADSP21XX_STATE_ENTRY(M4, "%04X", m[4], 0x3fff, CPUSTATE_IMPORT_SEXT)
ADSP21XX_STATE_ENTRY(M5, "%04X", m[5], 0x3fff, CPUSTATE_IMPORT_SEXT)
ADSP21XX_STATE_ENTRY(M6, "%04X", m[6], 0x3fff, CPUSTATE_IMPORT_SEXT)
ADSP21XX_STATE_ENTRY(M7, "%04X", m[7], 0x3fff, CPUSTATE_IMPORT_SEXT)
ADSP21XX_STATE_ENTRY(PX, "%02X", px, 0xff, 0)
ADSP21XX_STATE_ENTRY(CNTR, "%04X", cntr, 0x3fff, 0)
ADSP21XX_STATE_ENTRY(ASTAT, "%02X", astat, 0xff, 0)
ADSP21XX_STATE_ENTRY(SSTAT, "%02X", sstat, 0xff, 0)
ADSP21XX_STATE_ENTRY_MASK(MSTAT, "%01X", mstat, 0x0f, CPUSTATE_IMPORT, (1 << CHIP_TYPE_ADSP2100))
ADSP21XX_STATE_ENTRY_MASK(MSTAT, "%02X", mstat, 0x7f, CPUSTATE_IMPORT, ~(1 << CHIP_TYPE_ADSP2100))
ADSP21XX_STATE_ENTRY(PCSP, "%02X", pc_sp, 0xff, 0)
ADSP21XX_STATE_ENTRY(GENSP, "%02X", pc_sp, 0xff, CPUSTATE_NOSHOW)
ADSP21XX_STATE_ENTRY(CNTRSP, "%01X", cntr_sp, 0xf, 0)
ADSP21XX_STATE_ENTRY(STATSP, "%01X", stat_sp, 0xf, 0)
ADSP21XX_STATE_ENTRY(LOOPSP, "%01X", loop_sp, 0xf, 0)
ADSP21XX_STATE_ENTRY_MASK(IMASK, "%01X", imask, 0x00f, CPUSTATE_IMPORT, (1 << CHIP_TYPE_ADSP2100))
ADSP21XX_STATE_ENTRY_MASK(IMASK, "%02X", imask, 0x03f, CPUSTATE_IMPORT, ~((1 << CHIP_TYPE_ADSP2100) | (1 << CHIP_TYPE_ADSP2181)))
ADSP21XX_STATE_ENTRY_MASK(IMASK, "%03X", imask, 0x3ff, CPUSTATE_IMPORT, (1 << CHIP_TYPE_ADSP2181))
ADSP21XX_STATE_ENTRY(ICNTL, "%02X", icntl, 0x1f, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(IRQSTATE0, "%1u", irq_state[0], 0x1, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(IRQSTATE1, "%1u", irq_state[1], 0x1, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY(IRQSTATE2, "%1u", irq_state[2], 0x1, CPUSTATE_IMPORT)
ADSP21XX_STATE_ENTRY_MASK(IRQSTATE3, "%1u", irq_state[3], 0x1, CPUSTATE_IMPORT, (1 << CHIP_TYPE_ADSP2100))
ADSP21XX_STATE_ENTRY(FLAGIN, "%1u", flagin, 0x1, 0)
ADSP21XX_STATE_ENTRY(FLAGOUT, "%1u", flagout, 0x1, 0)
ADSP21XX_STATE_ENTRY(FL0, "%1u", fl0, 0x1, 0)
ADSP21XX_STATE_ENTRY(FL1, "%1u", fl1, 0x1, 0)
ADSP21XX_STATE_ENTRY(FL2, "%1u", fl2, 0x1, 0)
};
static const cpu_state_table state_table_template =
{
NULL, /* pointer to the base of state (offsets are relative to this) */
0, /* subtype this table refers to */
ARRAY_LENGTH(state_array), /* number of entries */
state_array /* array of entries */
};
/***************************************************************************
PRIVATE FUNCTION PROTOTYPES
***************************************************************************/
@ -544,7 +673,7 @@ static void set_irq_line(adsp2100_state *adsp, int irqline, int state)
INITIALIZATION AND SHUTDOWN
***************************************************************************/
static adsp2100_state *adsp21xx_init(const device_config *device, cpu_irq_callback irqcallback)
static adsp2100_state *adsp21xx_init(const device_config *device, cpu_irq_callback irqcallback, int chiptype)
{
adsp2100_state *adsp = device->token;
@ -553,14 +682,18 @@ static adsp2100_state *adsp21xx_init(const device_config *device, cpu_irq_callba
fatalerror("creating adsp2100 tables failed");
/* set the IRQ callback */
adsp->chip_type = chiptype;
adsp->irq_callback = irqcallback;
adsp->device = device;
adsp->device = device;
adsp->program = cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM);
adsp->data = cpu_get_address_space(device, ADDRESS_SPACE_DATA);
adsp->io = cpu_get_address_space(device, ADDRESS_SPACE_IO);
/* set up the state table */
adsp->state = state_table_template;
adsp->state.baseptr = adsp;
adsp->state.subtypemask = 1 << chiptype;
/* set up ALU register pointers */
adsp->alu_xregs[0] = &adsp->core.ax0;
@ -653,6 +786,7 @@ static adsp2100_state *adsp21xx_init(const device_config *device, cpu_irq_callba
state_save_register_device_item(device, 0, adsp->astat);
state_save_register_device_item(device, 0, adsp->sstat);
state_save_register_device_item(device, 0, adsp->mstat);
state_save_register_device_item(device, 0, adsp->mstat_prev);
state_save_register_device_item(device, 0, adsp->astat_clear);
state_save_register_device_item(device, 0, adsp->idle);
@ -734,6 +868,7 @@ static CPU_RESET( adsp21xx )
adsp->mstat = 0;
adsp->sstat = 0x55;
adsp->idle = 0;
update_mstat(adsp);
/* reset stacks */
adsp->pc_sp = 0;
@ -892,9 +1027,6 @@ static CPU_EXECUTE( adsp21xx )
check_irqs(adsp);
/* reset the core */
set_mstat(adsp, adsp->mstat);
/* count cycles and interrupt cycles */
adsp->icount = cycles;
@ -1086,18 +1218,17 @@ static CPU_EXECUTE( adsp21xx )
break;
case 0x0c:
/* 00001100 xxxxxxxx xxxxxxxx mode control */
temp = adsp->mstat;
if (adsp->chip_type >= CHIP_TYPE_ADSP2101)
{
if (op & 0x000008) temp = (temp & ~MSTAT_GOMODE) | ((op << 5) & MSTAT_GOMODE);
if (op & 0x002000) temp = (temp & ~MSTAT_INTEGER) | ((op >> 8) & MSTAT_INTEGER);
if (op & 0x008000) temp = (temp & ~MSTAT_TIMER) | ((op >> 9) & MSTAT_TIMER);
if (op & 0x000008) adsp->mstat = (adsp->mstat & ~MSTAT_GOMODE) | ((op << 5) & MSTAT_GOMODE);
if (op & 0x002000) adsp->mstat = (adsp->mstat & ~MSTAT_INTEGER) | ((op >> 8) & MSTAT_INTEGER);
if (op & 0x008000) adsp->mstat = (adsp->mstat & ~MSTAT_TIMER) | ((op >> 9) & MSTAT_TIMER);
}
if (op & 0x000020) temp = (temp & ~MSTAT_BANK) | ((op >> 4) & MSTAT_BANK);
if (op & 0x000080) temp = (temp & ~MSTAT_REVERSE) | ((op >> 5) & MSTAT_REVERSE);
if (op & 0x000200) temp = (temp & ~MSTAT_STICKYV) | ((op >> 6) & MSTAT_STICKYV);
if (op & 0x000800) temp = (temp & ~MSTAT_SATURATE) | ((op >> 7) & MSTAT_SATURATE);
set_mstat(adsp, temp);
if (op & 0x000020) adsp->mstat = (adsp->mstat & ~MSTAT_BANK) | ((op >> 4) & MSTAT_BANK);
if (op & 0x000080) adsp->mstat = (adsp->mstat & ~MSTAT_REVERSE) | ((op >> 5) & MSTAT_REVERSE);
if (op & 0x000200) adsp->mstat = (adsp->mstat & ~MSTAT_STICKYV) | ((op >> 6) & MSTAT_STICKYV);
if (op & 0x000800) adsp->mstat = (adsp->mstat & ~MSTAT_SATURATE) | ((op >> 7) & MSTAT_SATURATE);
update_mstat(adsp);
break;
case 0x0d:
/* 00001101 0000xxxx xxxxxxxx internal data move */
@ -1641,6 +1772,58 @@ extern CPU_DISASSEMBLE( adsp21xx );
/***************************************************************************
STATE HANDLING CALLBACKS
***************************************************************************/
static CPU_IMPORT_STATE( adsp21xx )
{
adsp2100_state *adsp = device->token;
switch (entry->index)
{
case ADSP2100_MSTAT:
update_mstat(adsp);
break;
case ADSP2100_IMASK:
case ADSP2100_ICNTL:
case ADSP2100_IRQSTATE0:
case ADSP2100_IRQSTATE1:
case ADSP2100_IRQSTATE2:
case ADSP2100_IRQSTATE3:
check_irqs(adsp);
break;
case ADSP2100_I0:
case ADSP2100_I1:
case ADSP2100_I2:
case ADSP2100_I3:
case ADSP2100_I4:
case ADSP2100_I5:
case ADSP2100_I6:
case ADSP2100_I7:
update_i(adsp, entry->index - ADSP2100_I0);
break;
case ADSP2100_L0:
case ADSP2100_L1:
case ADSP2100_L2:
case ADSP2100_L3:
case ADSP2100_L4:
case ADSP2100_L5:
case ADSP2100_L6:
case ADSP2100_L7:
update_l(adsp, entry->index - ADSP2100_L0);
break;
default:
fatalerror("CPU_IMPORT_STATE(adsp21xx) called for unexpected value\n");
break;
}
}
/**************************************************************************
* Generic set_info
**************************************************************************/
@ -1651,104 +1834,8 @@ static CPU_SET_INFO( adsp21xx )
switch (state)
{
/* --- the following bits of info are set as 64-bit signed integers --- */
case CPUINFO_INT_PC:
case CPUINFO_INT_REGISTER + ADSP2100_PC: adsp->pc = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_AX0: wr_ax0(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_AX1: wr_ax1(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_AY0: wr_ay0(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_AY1: wr_ay1(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_AR: wr_ar(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_AF: adsp->core.af.u = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_MX0: wr_mx0(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_MX1: wr_mx1(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_MY0: wr_my0(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_MY1: wr_my1(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_MR0: wr_mr0(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_MR1: wr_mr1(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_MR2: wr_mr2(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_MF: adsp->core.mf.u = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_SI: wr_si(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_SE: wr_se(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_SB: wr_sb(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_SR0: wr_sr0(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_SR1: wr_sr1(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_AX0_SEC: adsp->alt.ax0.s = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_AX1_SEC: adsp->alt.ax1.s = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_AY0_SEC: adsp->alt.ay0.s = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_AY1_SEC: adsp->alt.ay1.s = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_AR_SEC: adsp->alt.ar.s = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_AF_SEC: adsp->alt.af.u = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_MX0_SEC: adsp->alt.mx0.s = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_MX1_SEC: adsp->alt.mx1.s = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_MY0_SEC: adsp->alt.my0.s = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_MY1_SEC: adsp->alt.my1.s = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_MR0_SEC: adsp->alt.mr.mrx.mr0.s = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_MR1_SEC: adsp->alt.mr.mrx.mr1.s = info->i; adsp->alt.mr.mrx.mr2.s = (INT16)info->i >> 15; break;
case CPUINFO_INT_REGISTER + ADSP2100_MR2_SEC: adsp->alt.mr.mrx.mr2.s = (INT8)info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_MF_SEC: adsp->alt.mf.u = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_SI_SEC: adsp->alt.si.s = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_SE_SEC: adsp->alt.se.s = (INT8)info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_SB_SEC: adsp->alt.sb.s = (INT32)(info->i << 27) >> 27; break;
case CPUINFO_INT_REGISTER + ADSP2100_SR0_SEC: adsp->alt.sr.srx.sr0.s = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_SR1_SEC: adsp->alt.sr.srx.sr1.s = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_I0: wr_i0(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_I1: wr_i1(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_I2: wr_i2(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_I3: wr_i3(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_I4: wr_i4(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_I5: wr_i5(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_I6: wr_i6(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_I7: wr_i7(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_L0: wr_l0(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_L1: wr_l1(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_L2: wr_l2(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_L3: wr_l3(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_L4: wr_l4(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_L5: wr_l5(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_L6: wr_l6(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_L7: wr_l7(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_M0: wr_m0(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_M1: wr_m1(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_M2: wr_m2(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_M3: wr_m3(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_M4: wr_m4(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_M5: wr_m5(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_M6: wr_m6(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_M7: wr_m7(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_PX: wr_px(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_CNTR: adsp->cntr = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_ASTAT: wr_astat(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_SSTAT: wr_sstat(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_MSTAT: wr_mstat(adsp, info->i); break;
case CPUINFO_INT_SP:
case CPUINFO_INT_REGISTER + ADSP2100_PCSP: adsp->pc_sp = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_CNTRSP: adsp->cntr_sp = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_STATSP: adsp->stat_sp = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_LOOPSP: adsp->loop_sp = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_IMASK: wr_imask(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_ICNTL: wr_icntl(adsp, info->i); break;
case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE0: adsp->irq_state[0] = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE1: adsp->irq_state[1] = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE2: adsp->irq_state[2] = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE3: adsp->irq_state[3] = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_FLAGIN: adsp->flagin = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_FLAGOUT: adsp->flagout = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_FL0: adsp->fl0 = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_FL1: adsp->fl1 = info->i; break;
case CPUINFO_INT_REGISTER + ADSP2100_FL2: adsp->fl2 = info->i; break;
case CPUINFO_INT_PC: adsp->pc = info->i; break;
case CPUINFO_INT_SP: adsp->pc_sp = info->i; break;
}
}
@ -1786,104 +1873,8 @@ static CPU_GET_INFO( adsp21xx )
case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break;
case CPUINFO_INT_PREVIOUSPC: info->i = adsp->ppc; break;
case CPUINFO_INT_PC:
case CPUINFO_INT_REGISTER + ADSP2100_PC: info->i = adsp->pc; break;
case CPUINFO_INT_REGISTER + ADSP2100_AX0: info->i = adsp->core.ax0.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_AX1: info->i = adsp->core.ax1.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_AY0: info->i = adsp->core.ay0.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_AY1: info->i = adsp->core.ay1.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_AR: info->i = adsp->core.ar.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_AF: info->i = adsp->core.af.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MX0: info->i = adsp->core.mx0.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MX1: info->i = adsp->core.mx1.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MY0: info->i = adsp->core.my0.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MY1: info->i = adsp->core.my1.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MR0: info->i = adsp->core.mr.mrx.mr0.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MR1: info->i = adsp->core.mr.mrx.mr1.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MR2: info->i = adsp->core.mr.mrx.mr2.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MF: info->i = adsp->core.mf.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_SI: info->i = adsp->core.si.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_SE: info->i = adsp->core.se.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_SB: info->i = adsp->core.sb.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_SR0: info->i = adsp->core.sr.srx.sr0.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_SR1: info->i = adsp->core.sr.srx.sr1.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_AX0_SEC: info->i = adsp->alt.ax0.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_AX1_SEC: info->i = adsp->alt.ax1.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_AY0_SEC: info->i = adsp->alt.ay0.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_AY1_SEC: info->i = adsp->alt.ay1.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_AR_SEC: info->i = adsp->alt.ar.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_AF_SEC: info->i = adsp->alt.af.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MX0_SEC: info->i = adsp->alt.mx0.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MX1_SEC: info->i = adsp->alt.mx1.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MY0_SEC: info->i = adsp->alt.my0.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MY1_SEC: info->i = adsp->alt.my1.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MR0_SEC: info->i = adsp->alt.mr.mrx.mr0.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MR1_SEC: info->i = adsp->alt.mr.mrx.mr1.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MR2_SEC: info->i = adsp->alt.mr.mrx.mr2.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_MF_SEC: info->i = adsp->alt.mf.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_SI_SEC: info->i = adsp->alt.si.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_SE_SEC: info->i = adsp->alt.se.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_SB_SEC: info->i = adsp->alt.sb.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_SR0_SEC: info->i = adsp->alt.sr.srx.sr0.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_SR1_SEC: info->i = adsp->alt.sr.srx.sr1.u; break;
case CPUINFO_INT_REGISTER + ADSP2100_I0: info->i = adsp->i[0]; break;
case CPUINFO_INT_REGISTER + ADSP2100_I1: info->i = adsp->i[1]; break;
case CPUINFO_INT_REGISTER + ADSP2100_I2: info->i = adsp->i[2]; break;
case CPUINFO_INT_REGISTER + ADSP2100_I3: info->i = adsp->i[3]; break;
case CPUINFO_INT_REGISTER + ADSP2100_I4: info->i = adsp->i[4]; break;
case CPUINFO_INT_REGISTER + ADSP2100_I5: info->i = adsp->i[5]; break;
case CPUINFO_INT_REGISTER + ADSP2100_I6: info->i = adsp->i[6]; break;
case CPUINFO_INT_REGISTER + ADSP2100_I7: info->i = adsp->i[7]; break;
case CPUINFO_INT_REGISTER + ADSP2100_L0: info->i = adsp->l[0]; break;
case CPUINFO_INT_REGISTER + ADSP2100_L1: info->i = adsp->l[1]; break;
case CPUINFO_INT_REGISTER + ADSP2100_L2: info->i = adsp->l[2]; break;
case CPUINFO_INT_REGISTER + ADSP2100_L3: info->i = adsp->l[3]; break;
case CPUINFO_INT_REGISTER + ADSP2100_L4: info->i = adsp->l[4]; break;
case CPUINFO_INT_REGISTER + ADSP2100_L5: info->i = adsp->l[5]; break;
case CPUINFO_INT_REGISTER + ADSP2100_L6: info->i = adsp->l[6]; break;
case CPUINFO_INT_REGISTER + ADSP2100_L7: info->i = adsp->l[7]; break;
case CPUINFO_INT_REGISTER + ADSP2100_M0: info->i = adsp->m[0]; break;
case CPUINFO_INT_REGISTER + ADSP2100_M1: info->i = adsp->m[1]; break;
case CPUINFO_INT_REGISTER + ADSP2100_M2: info->i = adsp->m[2]; break;
case CPUINFO_INT_REGISTER + ADSP2100_M3: info->i = adsp->m[3]; break;
case CPUINFO_INT_REGISTER + ADSP2100_M4: info->i = adsp->m[4]; break;
case CPUINFO_INT_REGISTER + ADSP2100_M5: info->i = adsp->m[5]; break;
case CPUINFO_INT_REGISTER + ADSP2100_M6: info->i = adsp->m[6]; break;
case CPUINFO_INT_REGISTER + ADSP2100_M7: info->i = adsp->m[7]; break;
case CPUINFO_INT_REGISTER + ADSP2100_PX: info->i = adsp->px; break;
case CPUINFO_INT_REGISTER + ADSP2100_CNTR: info->i = adsp->cntr; break;
case CPUINFO_INT_REGISTER + ADSP2100_ASTAT: info->i = adsp->astat; break;
case CPUINFO_INT_REGISTER + ADSP2100_SSTAT: info->i = adsp->sstat; break;
case CPUINFO_INT_REGISTER + ADSP2100_MSTAT: info->i = adsp->mstat; break;
case CPUINFO_INT_SP:
case CPUINFO_INT_REGISTER + ADSP2100_PCSP: info->i = adsp->pc_sp; break;
case CPUINFO_INT_REGISTER + ADSP2100_CNTRSP: info->i = adsp->cntr_sp; break;
case CPUINFO_INT_REGISTER + ADSP2100_STATSP: info->i = adsp->stat_sp; break;
case CPUINFO_INT_REGISTER + ADSP2100_LOOPSP: info->i = adsp->loop_sp; break;
case CPUINFO_INT_REGISTER + ADSP2100_IMASK: info->i = adsp->imask; break;
case CPUINFO_INT_REGISTER + ADSP2100_ICNTL: info->i = adsp->icntl; break;
case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE0: info->i = adsp->irq_state[0]; break;
case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE1: info->i = adsp->irq_state[1]; break;
case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE2: info->i = adsp->irq_state[2]; break;
case CPUINFO_INT_REGISTER + ADSP2100_IRQSTATE3: info->i = adsp->irq_state[3]; break;
case CPUINFO_INT_REGISTER + ADSP2100_FLAGIN: info->i = adsp->flagin; break;
case CPUINFO_INT_REGISTER + ADSP2100_FLAGOUT: info->i = adsp->flagout; break;
case CPUINFO_INT_REGISTER + ADSP2100_FL0: info->i = adsp->fl0; break;
case CPUINFO_INT_REGISTER + ADSP2100_FL1: info->i = adsp->fl1; break;
case CPUINFO_INT_REGISTER + ADSP2100_FL2: info->i = adsp->fl2; break;
case CPUINFO_INT_PC: info->i = adsp->pc; break;
case CPUINFO_INT_SP: info->i = adsp->pc_sp; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_SET_INFO: /* set per CPU */ break;
@ -1893,7 +1884,9 @@ static CPU_GET_INFO( adsp21xx )
case CPUINFO_PTR_EXECUTE: info->execute = CPU_EXECUTE_NAME(adsp21xx); break;
case CPUINFO_PTR_BURN: info->burn = NULL; break;
case CPUINFO_PTR_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(adsp21xx); break;
case CPUINFO_FCT_IMPORT_STATE: info->import_state = CPU_IMPORT_STATE_NAME(adsp21xx); break;
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &adsp->icount; break;
case CPUINFO_PTR_STATE_TABLE: info->state_table = &adsp->state; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: /* set per CPU */ break;
@ -1913,103 +1906,6 @@ static CPU_GET_INFO( adsp21xx )
adsp->astat & 0x02 ? 'N':'.',
adsp->astat & 0x01 ? 'Z':'.');
break;
case CPUINFO_STR_REGISTER + ADSP2100_PC: sprintf(info->s, "PC: %04X", adsp->pc); break;
case CPUINFO_STR_REGISTER + ADSP2100_AX0: sprintf(info->s, "AX0: %04X", adsp->core.ax0.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_AX1: sprintf(info->s, "AX1: %04X", adsp->core.ax1.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_AY0: sprintf(info->s, "AY0: %04X", adsp->core.ay0.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_AY1: sprintf(info->s, "AY1: %04X", adsp->core.ay1.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_AR: sprintf(info->s, "AR: %04X", adsp->core.ar.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_AF: sprintf(info->s, "AF: %04X", adsp->core.af.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_MX0: sprintf(info->s, "MX0: %04X", adsp->core.mx0.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_MX1: sprintf(info->s, "MX1: %04X", adsp->core.mx1.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_MY0: sprintf(info->s, "MY0: %04X", adsp->core.my0.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_MY1: sprintf(info->s, "MY1: %04X", adsp->core.my1.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_MR0: sprintf(info->s, "MR0: %04X", adsp->core.mr.mrx.mr0.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_MR1: sprintf(info->s, "MR1: %04X", adsp->core.mr.mrx.mr1.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_MR2: sprintf(info->s, "MR2: %02X", adsp->core.mr.mrx.mr2.u & 0x00ff); break;
case CPUINFO_STR_REGISTER + ADSP2100_MF: sprintf(info->s, "MF: %04X", adsp->core.mf.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_SI: sprintf(info->s, "SI: %04X", adsp->core.si.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_SE: sprintf(info->s, "SE: %02X ", adsp->core.se.u & 0x00ff); break;
case CPUINFO_STR_REGISTER + ADSP2100_SB: sprintf(info->s, "SB: %02X ", adsp->core.sb.u & 0x001f); break;
case CPUINFO_STR_REGISTER + ADSP2100_SR0: sprintf(info->s, "SR0: %04X", adsp->core.sr.srx.sr0.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_SR1: sprintf(info->s, "SR1: %04X", adsp->core.sr.srx.sr1.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_AX0_SEC: sprintf(info->s, "AX0_SEC: %04X", adsp->alt.ax0.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_AX1_SEC: sprintf(info->s, "AX1_SEC: %04X", adsp->alt.ax1.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_AY0_SEC: sprintf(info->s, "AY0_SEC: %04X", adsp->alt.ay0.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_AY1_SEC: sprintf(info->s, "AY1_SEC: %04X", adsp->alt.ay1.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_AR_SEC: sprintf(info->s, "AR_SEC: %04X", adsp->alt.ar.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_AF_SEC: sprintf(info->s, "AF_SEC: %04X", adsp->alt.af.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_MX0_SEC: sprintf(info->s, "MX0_SEC: %04X", adsp->alt.mx0.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_MX1_SEC: sprintf(info->s, "MX1_SEC: %04X", adsp->alt.mx1.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_MY0_SEC: sprintf(info->s, "MY0_SEC: %04X", adsp->alt.my0.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_MY1_SEC: sprintf(info->s, "MY1_SEC: %04X", adsp->alt.my1.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_MR0_SEC: sprintf(info->s, "MR0_SEC: %04X", adsp->alt.mr.mrx.mr0.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_MR1_SEC: sprintf(info->s, "MR1_SEC: %04X", adsp->alt.mr.mrx.mr1.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_MR2_SEC: sprintf(info->s, "MR2_SEC: %02X", adsp->alt.mr.mrx.mr2.u & 0x00ff); break;
case CPUINFO_STR_REGISTER + ADSP2100_MF_SEC: sprintf(info->s, "MF_SEC: %04X", adsp->alt.mf.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_SI_SEC: sprintf(info->s, "SI_SEC: %04X", adsp->alt.si.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_SE_SEC: sprintf(info->s, "SE_SEC: %02X ", adsp->alt.se.u & 0x00ff); break;
case CPUINFO_STR_REGISTER + ADSP2100_SB_SEC: sprintf(info->s, "SB_SEC: %02X ", adsp->alt.sb.u & 0x001f); break;
case CPUINFO_STR_REGISTER + ADSP2100_SR0_SEC: sprintf(info->s, "SR0_SEC: %04X", adsp->alt.sr.srx.sr0.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_SR1_SEC: sprintf(info->s, "SR1_SEC: %04X", adsp->alt.sr.srx.sr1.u); break;
case CPUINFO_STR_REGISTER + ADSP2100_I0: sprintf(info->s, "I0: %04X", adsp->i[0]); break;
case CPUINFO_STR_REGISTER + ADSP2100_I1: sprintf(info->s, "I1: %04X", adsp->i[1]); break;
case CPUINFO_STR_REGISTER + ADSP2100_I2: sprintf(info->s, "I2: %04X", adsp->i[2]); break;
case CPUINFO_STR_REGISTER + ADSP2100_I3: sprintf(info->s, "I3: %04X", adsp->i[3]); break;
case CPUINFO_STR_REGISTER + ADSP2100_I4: sprintf(info->s, "I4: %04X", adsp->i[4]); break;
case CPUINFO_STR_REGISTER + ADSP2100_I5: sprintf(info->s, "I5: %04X", adsp->i[5]); break;
case CPUINFO_STR_REGISTER + ADSP2100_I6: sprintf(info->s, "I6: %04X", adsp->i[6]); break;
case CPUINFO_STR_REGISTER + ADSP2100_I7: sprintf(info->s, "I7: %04X", adsp->i[7]); break;
case CPUINFO_STR_REGISTER + ADSP2100_L0: sprintf(info->s, "L0: %04X", adsp->l[0]); break;
case CPUINFO_STR_REGISTER + ADSP2100_L1: sprintf(info->s, "L1: %04X", adsp->l[1]); break;
case CPUINFO_STR_REGISTER + ADSP2100_L2: sprintf(info->s, "L2: %04X", adsp->l[2]); break;
case CPUINFO_STR_REGISTER + ADSP2100_L3: sprintf(info->s, "L3: %04X", adsp->l[3]); break;
case CPUINFO_STR_REGISTER + ADSP2100_L4: sprintf(info->s, "L4: %04X", adsp->l[4]); break;
case CPUINFO_STR_REGISTER + ADSP2100_L5: sprintf(info->s, "L5: %04X", adsp->l[5]); break;
case CPUINFO_STR_REGISTER + ADSP2100_L6: sprintf(info->s, "L6: %04X", adsp->l[6]); break;
case CPUINFO_STR_REGISTER + ADSP2100_L7: sprintf(info->s, "L7: %04X", adsp->l[7]); break;
case CPUINFO_STR_REGISTER + ADSP2100_M0: sprintf(info->s, "M0: %04X", adsp->m[0]); break;
case CPUINFO_STR_REGISTER + ADSP2100_M1: sprintf(info->s, "M1: %04X", adsp->m[1]); break;
case CPUINFO_STR_REGISTER + ADSP2100_M2: sprintf(info->s, "M2: %04X", adsp->m[2]); break;
case CPUINFO_STR_REGISTER + ADSP2100_M3: sprintf(info->s, "M3: %04X", adsp->m[3]); break;
case CPUINFO_STR_REGISTER + ADSP2100_M4: sprintf(info->s, "M4: %04X", adsp->m[4]); break;
case CPUINFO_STR_REGISTER + ADSP2100_M5: sprintf(info->s, "M5: %04X", adsp->m[5]); break;
case CPUINFO_STR_REGISTER + ADSP2100_M6: sprintf(info->s, "M6: %04X", adsp->m[6]); break;
case CPUINFO_STR_REGISTER + ADSP2100_M7: sprintf(info->s, "M7: %04X", adsp->m[7]); break;
case CPUINFO_STR_REGISTER + ADSP2100_PX: sprintf(info->s, "PX: %02X ", adsp->px); break;
case CPUINFO_STR_REGISTER + ADSP2100_CNTR: sprintf(info->s, "CNTR:%04X", adsp->cntr); break;
case CPUINFO_STR_REGISTER + ADSP2100_ASTAT: sprintf(info->s, "ASTA:%02X ", adsp->astat); break;
case CPUINFO_STR_REGISTER + ADSP2100_SSTAT: sprintf(info->s, "SSTA:%02X ", adsp->sstat); break;
case CPUINFO_STR_REGISTER + ADSP2100_MSTAT: sprintf(info->s, "MSTA:%02X ", adsp->mstat); break;
case CPUINFO_STR_REGISTER + ADSP2100_PCSP: sprintf(info->s, "PCSP:%02X ", adsp->pc_sp); break;
case CPUINFO_STR_REGISTER + ADSP2100_CNTRSP: sprintf(info->s, "CTSP:%01X ", adsp->cntr_sp); break;
case CPUINFO_STR_REGISTER + ADSP2100_STATSP: sprintf(info->s, "STSP:%01X ", adsp->stat_sp); break;
case CPUINFO_STR_REGISTER + ADSP2100_LOOPSP: sprintf(info->s, "LPSP:%01X ", adsp->loop_sp); break;
case CPUINFO_STR_REGISTER + ADSP2100_IMASK: sprintf(info->s, "IMSK:%03X ", adsp->imask); break;
case CPUINFO_STR_REGISTER + ADSP2100_ICNTL: sprintf(info->s, "ICTL:%02X ", adsp->icntl); break;
case CPUINFO_STR_REGISTER + ADSP2100_IRQSTATE0: sprintf(info->s, "IRQ0:%X ", adsp->irq_state[0]); break;
case CPUINFO_STR_REGISTER + ADSP2100_IRQSTATE1: sprintf(info->s, "IRQ1:%X ", adsp->irq_state[1]); break;
case CPUINFO_STR_REGISTER + ADSP2100_IRQSTATE2: sprintf(info->s, "IRQ2:%X ", adsp->irq_state[2]); break;
case CPUINFO_STR_REGISTER + ADSP2100_IRQSTATE3: sprintf(info->s, "IRQ3:%X ", adsp->irq_state[3]); break;
case CPUINFO_STR_REGISTER + ADSP2100_FLAGIN: sprintf(info->s, "FI: %X ", adsp->flagin); break;
case CPUINFO_STR_REGISTER + ADSP2100_FLAGOUT: sprintf(info->s, "FO: %X ", adsp->flagout); break;
case CPUINFO_STR_REGISTER + ADSP2100_FL0: sprintf(info->s, "FL0: %X ", adsp->fl0); break;
case CPUINFO_STR_REGISTER + ADSP2100_FL1: sprintf(info->s, "FL1: %X ", adsp->fl1); break;
case CPUINFO_STR_REGISTER + ADSP2100_FL2: sprintf(info->s, "FL2: %X ", adsp->fl2); break;
}
}
@ -2034,8 +1930,7 @@ static void adsp21xx_load_boot_data(UINT8 *srcdata, UINT32 *dstdata)
static CPU_INIT( adsp2100 )
{
adsp2100_state *adsp = adsp21xx_init(device, irqcallback);
adsp->chip_type = CHIP_TYPE_ADSP2100;
adsp2100_state *adsp = adsp21xx_init(device, irqcallback, CHIP_TYPE_ADSP2100);
adsp->mstat_mask = 0x0f;
adsp->imask_mask = 0x0f;
}
@ -2091,8 +1986,7 @@ CPU_GET_INFO( adsp2100 )
static CPU_INIT( adsp2101 )
{
adsp2100_state *adsp = adsp21xx_init(device, irqcallback);
adsp->chip_type = CHIP_TYPE_ADSP2101;
adsp2100_state *adsp = adsp21xx_init(device, irqcallback, CHIP_TYPE_ADSP2101);
adsp->mstat_mask = 0x7f;
adsp->imask_mask = 0x3f;
}
@ -2161,8 +2055,7 @@ CPU_GET_INFO( adsp2101 )
static CPU_INIT( adsp2104 )
{
adsp2100_state *adsp = adsp21xx_init(device, irqcallback);
adsp->chip_type = CHIP_TYPE_ADSP2104;
adsp2100_state *adsp = adsp21xx_init(device, irqcallback, CHIP_TYPE_ADSP2104);
adsp->mstat_mask = 0x7f;
adsp->imask_mask = 0x3f;
}
@ -2236,8 +2129,7 @@ CPU_GET_INFO( adsp2104 )
static CPU_INIT( adsp2105 )
{
adsp2100_state *adsp = adsp21xx_init(device, irqcallback);
adsp->chip_type = CHIP_TYPE_ADSP2105;
adsp2100_state *adsp = adsp21xx_init(device, irqcallback, CHIP_TYPE_ADSP2105);
adsp->mstat_mask = 0x7f;
adsp->imask_mask = 0x3f;
}
@ -2305,8 +2197,7 @@ CPU_GET_INFO( adsp2105 )
static CPU_INIT( adsp2115 )
{
adsp2100_state *adsp = adsp21xx_init(device, irqcallback);
adsp->chip_type = CHIP_TYPE_ADSP2115;
adsp2100_state *adsp = adsp21xx_init(device, irqcallback, CHIP_TYPE_ADSP2115);
adsp->mstat_mask = 0x7f;
adsp->imask_mask = 0x3f;
}
@ -2380,8 +2271,7 @@ CPU_GET_INFO( adsp2115 )
static CPU_INIT( adsp2181 )
{
adsp2100_state *adsp = adsp21xx_init(device, irqcallback);
adsp->chip_type = CHIP_TYPE_ADSP2181;
adsp2100_state *adsp = adsp21xx_init(device, irqcallback, CHIP_TYPE_ADSP2181);
adsp->mstat_mask = 0x7f;
adsp->imask_mask = 0x3ff;
}

View File

@ -30,7 +30,7 @@ typedef void (*adsp21xx_timer_func)(const device_config *device, int enable);
enum
{
ADSP2100_PC=1,
ADSP2100_PC,
ADSP2100_AX0, ADSP2100_AX1, ADSP2100_AY0, ADSP2100_AY1, ADSP2100_AR, ADSP2100_AF,
ADSP2100_MX0, ADSP2100_MX1, ADSP2100_MY0, ADSP2100_MY1, ADSP2100_MR0, ADSP2100_MR1, ADSP2100_MR2, ADSP2100_MF,
ADSP2100_SI, ADSP2100_SE, ADSP2100_SB, ADSP2100_SR0, ADSP2100_SR1,
@ -43,7 +43,11 @@ enum
ADSP2100_FLAGIN, ADSP2100_FLAGOUT, ADSP2100_FL0, ADSP2100_FL1, ADSP2100_FL2,
ADSP2100_AX0_SEC, ADSP2100_AX1_SEC, ADSP2100_AY0_SEC, ADSP2100_AY1_SEC, ADSP2100_AR_SEC, ADSP2100_AF_SEC,
ADSP2100_MX0_SEC, ADSP2100_MX1_SEC, ADSP2100_MY0_SEC, ADSP2100_MY1_SEC, ADSP2100_MR0_SEC, ADSP2100_MR1_SEC, ADSP2100_MR2_SEC, ADSP2100_MF_SEC,
ADSP2100_SI_SEC, ADSP2100_SE_SEC, ADSP2100_SB_SEC, ADSP2100_SR0_SEC, ADSP2100_SR1_SEC
ADSP2100_SI_SEC, ADSP2100_SE_SEC, ADSP2100_SB_SEC, ADSP2100_SR0_SEC, ADSP2100_SR1_SEC,
ADSP2100_GENPC = REG_GENPC,
ADSP2100_GENSP = REG_GENSP,
ADSP2100_GENPCBASE = REG_GENPCBASE
};
enum

View File

@ -175,7 +175,6 @@
#include "debugger.h"
#include "x86emit.h"
#include "eminline.h"
#undef REG_SP
#include "x86log.h"
#include <math.h>
#include <stddef.h>

View File

@ -91,7 +91,6 @@
#include "debugger.h"
#include "x86emit.h"
#include "eminline.h"
#undef REG_SP
#include "x86log.h"
#include <math.h>
#include <stddef.h>

View File

@ -2351,9 +2351,9 @@ TABLE_FUNCTION(uint, get_reg, (g65816i_cpu_struct *cpustate, int regnum))
case G65816_A: return REGISTER_B | REGISTER_A;
case G65816_X: return REGISTER_X;
case G65816_Y: return REGISTER_Y;
case REG_SP: return REGISTER_S;
case REG_GENSP: return REGISTER_S;
case G65816_S: return REGISTER_S;
case REG_PC: return REGISTER_PC;
case REG_GENPC: return REGISTER_PC;
case G65816_PC: return REGISTER_PC;
case G65816_PB: return REGISTER_PB >> 16;
case G65816_DB: return REGISTER_DB >> 16;
@ -2361,7 +2361,7 @@ TABLE_FUNCTION(uint, get_reg, (g65816i_cpu_struct *cpustate, int regnum))
case G65816_P: return g65816i_get_reg_p(cpustate);
case G65816_NMI_STATE: return LINE_NMI;
case G65816_IRQ_STATE: return LINE_IRQ;
case REG_PREVIOUSPC: return REGISTER_PPC;
case REG_GENPCBASE: return REGISTER_PPC;
}
return 0;
}
@ -2372,11 +2372,11 @@ TABLE_FUNCTION(void, set_reg, (g65816i_cpu_struct *cpustate, int regnum, uint va
{
switch(regnum)
{
case REG_PC: case G65816_PC: REGISTER_PC = MAKE_UINT_16(val); break;
case REG_GENPC: case G65816_PC: REGISTER_PC = MAKE_UINT_16(val); break;
#if FLAG_SET_E
case REG_SP: case G65816_S: REGISTER_S = MAKE_UINT_8(val) | 0x100; break;
case REG_GENSP: case G65816_S: REGISTER_S = MAKE_UINT_8(val) | 0x100; break;
#else
case REG_SP: case G65816_S: REGISTER_S = MAKE_UINT_16(val); break;
case REG_GENSP: case G65816_S: REGISTER_S = MAKE_UINT_16(val); break;
#endif
case G65816_P: g65816i_set_reg_p(cpustate, val); break;
#if FLAG_SET_M

View File

@ -51,12 +51,16 @@ struct _i8086_state
INT8 test_state; /* PJB 03/05 */
INT32 extra_cycles; /* extra cycles for interrupts */
UINT16 ip;
UINT32 sp;
memory_interface mem;
const device_config *device;
const address_space *program;
const address_space *io;
int icount;
cpu_state_table state;
unsigned prefix_base; /* base address of the latest prefix segment */
char seg_prefix; /* prefix segment indicator */
@ -65,6 +69,55 @@ struct _i8086_state
};
/***************************************************************************
CPU STATE DESCRIPTION
***************************************************************************/
#define I86_STATE_ENTRY(_name, _format, _member, _datamask, _flags) \
CPU_STATE_ENTRY(I8086_##_name, #_name, _format, i8086_state, _member, _datamask, ~0, _flags)
static const cpu_state_entry state_array[] =
{
I86_STATE_ENTRY(GENPC, "%9s", pc, 0xfffff, CPUSTATE_IMPORT)
I86_STATE_ENTRY(GENPCBASE, "%08X", pc, 0xfffff, CPUSTATE_NOSHOW) /* not implemented */
I86_STATE_ENTRY(IP, "%04X", ip, 0xffff, CPUSTATE_IMPORT | CPUSTATE_EXPORT)
I86_STATE_ENTRY(FLAGS, "%04X", flags, 0xffff, CPUSTATE_NOSHOW | CPUSTATE_IMPORT | CPUSTATE_EXPORT)
I86_STATE_ENTRY(AX, "%04X", regs.w[AX], 0xffff, 0)
I86_STATE_ENTRY(BX, "%04X", regs.w[BX], 0xffff, 0)
I86_STATE_ENTRY(CX, "%04X", regs.w[CX], 0xffff, 0)
I86_STATE_ENTRY(DX, "%04X", regs.w[DX], 0xffff, 0)
I86_STATE_ENTRY(SI, "%04X", regs.w[SI], 0xffff, 0)
I86_STATE_ENTRY(DI, "%04X", regs.w[DI], 0xffff, 0)
I86_STATE_ENTRY(BP, "%04X", regs.w[BP], 0xffff, 0)
I86_STATE_ENTRY(SP, "%04X", regs.w[SP], 0xffff, 0)
I86_STATE_ENTRY(GENSP, "%9s", sp, 0xfffff, CPUSTATE_IMPORT | CPUSTATE_EXPORT)
I86_STATE_ENTRY(AL, "%02X", regs.b[AL], 0xff, CPUSTATE_NOSHOW)
I86_STATE_ENTRY(BL, "%02X", regs.b[BL], 0xff, CPUSTATE_NOSHOW)
I86_STATE_ENTRY(CL, "%02X", regs.b[CL], 0xff, CPUSTATE_NOSHOW)
I86_STATE_ENTRY(DL, "%02X", regs.b[DL], 0xff, CPUSTATE_NOSHOW)
I86_STATE_ENTRY(AH, "%02X", regs.b[AH], 0xff, CPUSTATE_NOSHOW)
I86_STATE_ENTRY(BH, "%02X", regs.b[BH], 0xff, CPUSTATE_NOSHOW)
I86_STATE_ENTRY(CH, "%02X", regs.b[CH], 0xff, CPUSTATE_NOSHOW)
I86_STATE_ENTRY(DH, "%02X", regs.b[DH], 0xff, CPUSTATE_NOSHOW)
I86_STATE_ENTRY(CS, "%04X", sregs[CS], 0xffff, CPUSTATE_IMPORT)
I86_STATE_ENTRY(DS, "%04X", sregs[DS], 0xffff, CPUSTATE_IMPORT)
I86_STATE_ENTRY(ES, "%04X", sregs[ES], 0xffff, CPUSTATE_IMPORT)
I86_STATE_ENTRY(SS, "%04X", sregs[SS], 0xffff, CPUSTATE_IMPORT)
};
static const cpu_state_table state_table_template =
{
NULL, /* pointer to the base of state (offsets are relative to this) */
0, /* subtype this table refers to */
ARRAY_LENGTH(state_array), /* number of entries */
state_array /* array of entries */
};
#include "i86time.c"
@ -152,6 +205,11 @@ static CPU_INIT( i8086 )
cpustate->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);
cpustate->io = memory_find_address_space(device, ADDRESS_SPACE_IO);
/* set up the state table */
cpustate->state = state_table_template;
cpustate->state.baseptr = cpustate;
cpustate->state.subtypemask = 1;
i8086_state_register(device);
configure_memory_16bit(cpustate);
}
@ -170,12 +228,15 @@ static CPU_RESET( i8086 )
i8086_state *cpustate = device->token;
cpu_irq_callback save_irqcallback;
memory_interface save_mem;
cpu_state_table save_state;
save_irqcallback = cpustate->irq_callback;
save_mem = cpustate->mem;
save_state = cpustate->state;
memset(cpustate, 0, sizeof(*cpustate));
cpustate->irq_callback = save_irqcallback;
cpustate->mem = save_mem;
cpustate->state = save_state;
cpustate->device = device;
cpustate->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);
cpustate->io = memory_find_address_space(device, ADDRESS_SPACE_IO);
@ -225,11 +286,6 @@ static CPU_EXECUTE( i8086 )
{
i8086_state *cpustate = device->token;
cpustate->base[CS] = SegBase(CS);
cpustate->base[DS] = SegBase(DS);
cpustate->base[ES] = SegBase(ES);
cpustate->base[SS] = SegBase(SS);
/* copy over the cycle counts if they're not correct */
if (timing.id != 8086)
timing = i8086_cycles;
@ -286,11 +342,6 @@ static CPU_EXECUTE( i80186 )
{
i8086_state *cpustate = device->token;
cpustate->base[CS] = SegBase(CS);
cpustate->base[DS] = SegBase(DS);
cpustate->base[ES] = SegBase(ES);
cpustate->base[SS] = SegBase(SS);
/* copy over the cycle counts if they're not correct */
if (timing.id != 80186)
timing = i80186_cycles;
@ -323,6 +374,110 @@ static CPU_EXECUTE( i80186 )
/**************************************************************************
* STATE IMPORT/EXPORT
**************************************************************************/
static CPU_IMPORT_STATE( i8086 )
{
i8086_state *cpustate = device->token;
switch (entry->index)
{
case I8086_GENPC:
if (cpustate->pc - cpustate->base[CS] >= 0x10000)
{
cpustate->base[CS] = cpustate->pc & 0xffff0;
cpustate->sregs[CS] = cpustate->base[CS] >> 4;
}
break;
case I8086_IP:
cpustate->pc = cpustate->base[CS] + cpustate->ip;
break;
case I8086_GENSP:
if (cpustate->sp - cpustate->base[SS] >= 0x10000)
{
cpustate->base[SS] = cpustate->sp & 0xffff0;
cpustate->sregs[SS] = cpustate->base[SS] >> 4;
}
cpustate->regs.w[SP] = cpustate->sp - cpustate->base[SS];
break;
case I8086_FLAGS:
ExpandFlags(cpustate->flags);
break;
case I8086_ES:
cpustate->base[ES] = SegBase(ES);
break;
case I8086_CS:
cpustate->base[CS] = SegBase(CS);
break;
case I8086_SS:
cpustate->base[SS] = SegBase(SS);
break;
case I8086_DS:
cpustate->base[DS] = SegBase(DS);
break;
default:
fatalerror("CPU_IMPORT_STATE(i8086) called for unexpected value\n");
break;
}
}
static CPU_EXPORT_STATE( i8086 )
{
i8086_state *cpustate = device->token;
switch (entry->index)
{
case I8086_IP:
cpustate->ip = cpustate->pc - cpustate->base[CS];
break;
case I8086_FLAGS:
cpustate->flags = CompressFlags();
break;
case I8086_GENSP:
cpustate->sp = cpustate->base[SS] + cpustate->regs.w[SP];
break;
default:
fatalerror("CPU_EXPORT_STATE(i8086) called for unexpected value\n");
break;
}
}
static CPU_EXPORT_STRING( i8086 )
{
i8086_state *cpustate = device->token;
switch (entry->index)
{
case I8086_GENPC:
sprintf(string, "%04X:%04X", cpustate->sregs[CS] & 0xffff, (cpustate->pc - cpustate->base[CS]) & 0xffff);
break;
case I8086_GENSP:
sprintf(string, "%04X:%04X", cpustate->sregs[SS] & 0xffff, cpustate->regs.w[SP] & 0xffff);
break;
default:
fatalerror("CPU_EXPORT_STRING(i8086) called for unexpected value\n");
break;
}
}
/**************************************************************************
* Generic set_info
**************************************************************************/
@ -337,43 +492,6 @@ static CPU_SET_INFO( i8086 )
case CPUINFO_INT_INPUT_STATE + 0: set_irq_line(cpustate, 0, info->i); break;
case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: set_irq_line(cpustate, INPUT_LINE_NMI, info->i); break;
case CPUINFO_INT_INPUT_STATE + INPUT_LINE_TEST: set_test_line(cpustate, info->i); break; /* PJB 03/05 */
case CPUINFO_INT_PC:
case CPUINFO_INT_REGISTER + I8086_PC:
if (info->i - cpustate->base[CS] >= 0x10000)
{
cpustate->base[CS] = info->i & 0xffff0;
cpustate->sregs[CS] = cpustate->base[CS] >> 4;
}
cpustate->pc = info->i;
break;
case CPUINFO_INT_REGISTER + I8086_IP: cpustate->pc = cpustate->base[CS] + info->i; break;
case CPUINFO_INT_SP:
if (info->i - cpustate->base[SS] < 0x10000)
{
cpustate->regs.w[SP] = info->i - cpustate->base[SS];
}
else
{
cpustate->base[SS] = info->i & 0xffff0;
cpustate->sregs[SS] = cpustate->base[SS] >> 4;
cpustate->regs.w[SP] = info->i & 0x0000f;
}
break;
case CPUINFO_INT_REGISTER + I8086_SP: cpustate->regs.w[SP] = info->i; break;
case CPUINFO_INT_REGISTER + I8086_FLAGS: cpustate->flags = info->i; ExpandFlags(info->i); break;
case CPUINFO_INT_REGISTER + I8086_AX: cpustate->regs.w[AX] = info->i; break;
case CPUINFO_INT_REGISTER + I8086_CX: cpustate->regs.w[CX] = info->i; break;
case CPUINFO_INT_REGISTER + I8086_DX: cpustate->regs.w[DX] = info->i; break;
case CPUINFO_INT_REGISTER + I8086_BX: cpustate->regs.w[BX] = info->i; break;
case CPUINFO_INT_REGISTER + I8086_BP: cpustate->regs.w[BP] = info->i; break;
case CPUINFO_INT_REGISTER + I8086_SI: cpustate->regs.w[SI] = info->i; break;
case CPUINFO_INT_REGISTER + I8086_DI: cpustate->regs.w[DI] = info->i; break;
case CPUINFO_INT_REGISTER + I8086_ES: cpustate->sregs[ES] = info->i; cpustate->base[ES] = SegBase(ES); break;
case CPUINFO_INT_REGISTER + I8086_CS: cpustate->sregs[CS] = info->i; cpustate->base[CS] = SegBase(CS); break;
case CPUINFO_INT_REGISTER + I8086_SS: cpustate->sregs[SS] = info->i; cpustate->base[SS] = SegBase(SS); break;
case CPUINFO_INT_REGISTER + I8086_DS: cpustate->sregs[DS] = info->i; cpustate->base[DS] = SegBase(DS); break;
case CPUINFO_INT_REGISTER + I8086_VECTOR: cpustate->int_vector = info->i; break;
}
}
@ -418,25 +536,6 @@ CPU_GET_INFO( i8086 )
case CPUINFO_INT_PREVIOUSPC: info->i = cpustate->prevpc; break;
case CPUINFO_INT_PC:
case CPUINFO_INT_REGISTER + I8086_PC: info->i = cpustate->pc; break;
case CPUINFO_INT_REGISTER + I8086_IP: info->i = cpustate->pc - cpustate->base[CS]; break;
case CPUINFO_INT_SP: info->i = cpustate->base[SS] + cpustate->regs.w[SP]; break;
case CPUINFO_INT_REGISTER + I8086_SP: info->i = cpustate->regs.w[SP]; break;
case CPUINFO_INT_REGISTER + I8086_FLAGS: cpustate->flags = CompressFlags(); info->i = cpustate->flags; break;
case CPUINFO_INT_REGISTER + I8086_AX: info->i = cpustate->regs.w[AX]; break;
case CPUINFO_INT_REGISTER + I8086_CX: info->i = cpustate->regs.w[CX]; break;
case CPUINFO_INT_REGISTER + I8086_DX: info->i = cpustate->regs.w[DX]; break;
case CPUINFO_INT_REGISTER + I8086_BX: info->i = cpustate->regs.w[BX]; break;
case CPUINFO_INT_REGISTER + I8086_BP: info->i = cpustate->regs.w[BP]; break;
case CPUINFO_INT_REGISTER + I8086_SI: info->i = cpustate->regs.w[SI]; break;
case CPUINFO_INT_REGISTER + I8086_DI: info->i = cpustate->regs.w[DI]; break;
case CPUINFO_INT_REGISTER + I8086_ES: info->i = cpustate->sregs[ES]; break;
case CPUINFO_INT_REGISTER + I8086_CS: info->i = cpustate->sregs[CS]; break;
case CPUINFO_INT_REGISTER + I8086_SS: info->i = cpustate->sregs[SS]; break;
case CPUINFO_INT_REGISTER + I8086_DS: info->i = cpustate->sregs[DS]; break;
case CPUINFO_INT_REGISTER + I8086_VECTOR: info->i = cpustate->int_vector; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_SET_INFO: info->setinfo = CPU_SET_INFO_NAME(i8086); break;
case CPUINFO_PTR_INIT: info->init = CPU_INIT_NAME(i8086); break;
@ -446,6 +545,10 @@ CPU_GET_INFO( i8086 )
case CPUINFO_PTR_BURN: info->burn = NULL; break;
case CPUINFO_PTR_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(i8086); break;
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &cpustate->icount; break;
case CPUINFO_PTR_STATE_TABLE: info->state_table = &cpustate->state; break;
case CPUINFO_FCT_IMPORT_STATE: info->import_state = CPU_IMPORT_STATE_NAME(i8086); break;
case CPUINFO_FCT_EXPORT_STATE: info->export_state = CPU_EXPORT_STATE_NAME(i8086); break;
case CPUINFO_FCT_EXPORT_STRING: info->export_string = CPU_EXPORT_STRING_NAME(i8086);break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "8086"); break;
@ -474,23 +577,6 @@ CPU_GET_INFO( i8086 )
cpustate->flags & 0x0002 ? 'N' : '.',
cpustate->flags & 0x0001 ? 'C' : '.');
break;
case CPUINFO_STR_REGISTER + I8086_PC: sprintf(info->s, "PC:%04X", cpustate->pc); break;
case CPUINFO_STR_REGISTER + I8086_IP: sprintf(info->s, "IP: %04X", cpustate->pc - cpustate->base[CS]); break;
case CPUINFO_STR_REGISTER + I8086_SP: sprintf(info->s, "SP: %04X", cpustate->regs.w[SP]); break;
case CPUINFO_STR_REGISTER + I8086_FLAGS: sprintf(info->s, "F:%04X", cpustate->flags); break;
case CPUINFO_STR_REGISTER + I8086_AX: sprintf(info->s, "AX:%04X", cpustate->regs.w[AX]); break;
case CPUINFO_STR_REGISTER + I8086_CX: sprintf(info->s, "CX:%04X", cpustate->regs.w[CX]); break;
case CPUINFO_STR_REGISTER + I8086_DX: sprintf(info->s, "DX:%04X", cpustate->regs.w[DX]); break;
case CPUINFO_STR_REGISTER + I8086_BX: sprintf(info->s, "BX:%04X", cpustate->regs.w[BX]); break;
case CPUINFO_STR_REGISTER + I8086_BP: sprintf(info->s, "BP:%04X", cpustate->regs.w[BP]); break;
case CPUINFO_STR_REGISTER + I8086_SI: sprintf(info->s, "SI: %04X", cpustate->regs.w[SI]); break;
case CPUINFO_STR_REGISTER + I8086_DI: sprintf(info->s, "DI: %04X", cpustate->regs.w[DI]); break;
case CPUINFO_STR_REGISTER + I8086_ES: sprintf(info->s, "ES:%04X", cpustate->sregs[ES]); break;
case CPUINFO_STR_REGISTER + I8086_CS: sprintf(info->s, "CS:%04X", cpustate->sregs[CS]); break;
case CPUINFO_STR_REGISTER + I8086_SS: sprintf(info->s, "SS:%04X", cpustate->sregs[SS]); break;
case CPUINFO_STR_REGISTER + I8086_DS: sprintf(info->s, "DS:%04X", cpustate->sregs[DS]); break;
case CPUINFO_STR_REGISTER + I8086_VECTOR: sprintf(info->s, "V:%02X", cpustate->int_vector); break;
}
}

View File

@ -10,7 +10,6 @@
enum
{
I8086_PC=0,
I8086_IP,
I8086_AX,
I8086_CX,
@ -20,12 +19,24 @@ enum
I8086_BP,
I8086_SI,
I8086_DI,
I8086_AL,
I8086_CL,
I8086_DL,
I8086_BL,
I8086_AH,
I8086_CH,
I8086_DH,
I8086_BH,
I8086_FLAGS,
I8086_ES,
I8086_CS,
I8086_SS,
I8086_DS,
I8086_VECTOR
I8086_VECTOR,
I8086_GENPC = REG_GENPC,
I8086_GENSP = REG_GENSP,
I8086_GENPCBASE = REG_GENPCBASE
};
/* Public functions */

View File

@ -2903,7 +2903,7 @@ TABLE_FUNCTION(uint, get_reg, (m37710i_cpu_struct *cpustate, int regnum))
case M37710_D: return REG_D;
case M37710_P: return m37710i_get_reg_p(cpustate);
case M37710_IRQ_STATE: return LINE_IRQ;
case REG_PREVIOUSPC: return REG_PPC;
case REG_GENPCBASE: return REG_PPC;
}
return 0;
}

View File

@ -214,9 +214,9 @@ static unsigned minx_get_reg( int regnum )
{
switch( regnum )
{
case REG_PC: return GET_MINX_PC;
case REG_GENPC: return GET_MINX_PC;
case MINX_PC: return regs.PC;
case REG_SP:
case REG_GENSP:
case MINX_SP: return regs.SP;
case MINX_BA: return regs.BA;
case MINX_HL: return regs.HL;
@ -239,9 +239,9 @@ static void minx_set_reg( int regnum, unsigned val )
{
switch( regnum )
{
case REG_PC: break;
case REG_GENPC: break;
case MINX_PC: regs.PC = val; break;
case REG_SP:
case REG_GENSP:
case MINX_SP: regs.SP = val; break;
case MINX_BA: regs.BA = val; break;
case MINX_HL: regs.HL = val; break;
@ -322,8 +322,8 @@ CPU_GET_INFO( minx )
case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break;
case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break;
case CPUINFO_INT_INPUT_STATE + 0: info->i = 0; break;
case CPUINFO_INT_REGISTER + REG_PC: info->i = GET_MINX_PC; break;
case CPUINFO_INT_REGISTER + REG_SP:
case CPUINFO_INT_REGISTER + REG_GENPC: info->i = GET_MINX_PC; break;
case CPUINFO_INT_REGISTER + REG_GENSP:
case CPUINFO_INT_REGISTER + MINX_PC:
case CPUINFO_INT_REGISTER + MINX_SP:
case CPUINFO_INT_REGISTER + MINX_BA:

View File

@ -271,9 +271,9 @@ unsigned sm8500_get_reg( sm8500_state *cpustate, int regnum )
{
switch( regnum )
{
case REG_PC:
case REG_GENPC:
case SM8500_PC: return cpustate->PC;
case REG_SP:
case REG_GENSP:
case SM8500_SP: return ( cpustate->SYS & 0x40 ) ? cpustate->SP : cpustate->SP & 0xFF ;
case SM8500_PS: return ( cpustate->PS0 << 8 ) | cpustate->PS1;
case SM8500_SYS16: return cpustate->SYS;
@ -311,9 +311,9 @@ static void sm8500_set_reg( sm8500_state *cpustate, int regnum, unsigned val )
{
switch( regnum )
{
case REG_PC:
case REG_GENPC:
case SM8500_PC: cpustate->PC = val; break;
case REG_SP:
case REG_GENSP:
case SM8500_SP: cpustate->SP = val; break;
case SM8500_PS: sm8500_set_reg( cpustate, SM8500_PS0, ( val >> 8 ) & 0xFF ); sm8500_set_reg( cpustate, SM8500_PS1, val & 0xFF ); break;
case SM8500_SYS16: cpustate->SYS = val; break;
@ -497,8 +497,8 @@ CPU_GET_INFO( sm8500 )
case CPUINFO_INT_REGISTER + SM8500_P2C:
case CPUINFO_INT_REGISTER + SM8500_P3C:
info->i = sm8500_get_reg( cpustate, state - CPUINFO_INT_REGISTER ); break;
case CPUINFO_INT_REGISTER + REG_PC: info->i = sm8500_get_reg( cpustate, SM8500_PC ); break;
case CPUINFO_INT_REGISTER + REG_SP: info->i = sm8500_get_reg( cpustate, SM8500_SP ); break;
case CPUINFO_INT_REGISTER + REG_GENPC: info->i = sm8500_get_reg( cpustate, SM8500_PC ); break;
case CPUINFO_INT_REGISTER + REG_GENSP: info->i = sm8500_get_reg( cpustate, SM8500_SP ); break;
case CPUINFO_INT_PREVIOUSPC: info->i = 0x0000; break;

View File

@ -88,7 +88,7 @@ static void unimpl(tms34010_state *tms, UINT16 op)
return;
PUSH(tms, tms->pc);
PUSH(tms, GET_ST(tms));
PUSH(tms, tms->st);
RESET_ST(tms);
tms->pc = RLONG(tms, 0xfffffc20);
COUNT_UNKNOWN_CYCLES(tms,16);
@ -1562,7 +1562,7 @@ static void getpc_b (tms34010_state *tms, UINT16 op) { GETPC(B); }
#define GETST(R) \
{ \
R##REG(tms,DSTREG(op)) = GET_ST(tms); \
R##REG(tms,DSTREG(op)) = tms->st; \
COUNT_CYCLES(tms,1); \
}
static void getst_a (tms34010_state *tms, UINT16 op) { GETST(A); }
@ -1844,7 +1844,7 @@ static void popst(tms34010_state *tms, UINT16 op)
static void pushst(tms34010_state *tms, UINT16 op)
{
PUSH(tms, GET_ST(tms));
PUSH(tms, tms->st);
COUNT_CYCLES(tms,2);
}
@ -1892,7 +1892,7 @@ static void trap(tms34010_state *tms, UINT16 op)
if (t)
{
PUSH(tms, tms->pc);
PUSH(tms, GET_ST(tms));
PUSH(tms, tms->st);
}
RESET_ST(tms);
tms->pc = RLONG(tms, 0xffffffe0-(t<<5));

View File

@ -45,6 +45,7 @@ typedef struct _tms34010_state tms34010_state;
struct _tms34010_state
{
UINT32 pc;
UINT32 ppc;
UINT32 st;
void (*pixel_write)(tms34010_state *tms, offs_t offset, UINT32 data);
UINT32 (*pixel_read)(tms34010_state *tms, offs_t offset);
@ -76,13 +77,15 @@ struct _tms34010_state
XY xy;
} regs[31];
/* for the 34010, we only copy 32 of these into the new state */
UINT16 IOregs[64];
cpu_state_table state;
};
#include "34010ops.h"
/***************************************************************************
GLOBAL VARIABLES
***************************************************************************/
@ -98,6 +101,7 @@ static TIMER_CALLBACK( scanline_callback );
static STATE_POSTLOAD( tms34010_state_postload );
/***************************************************************************
MACROS
***************************************************************************/
@ -188,14 +192,68 @@ static STATE_POSTLOAD( tms34010_state_postload );
/***************************************************************************
INLINE SHORTCUTS
CPU STATE DESCRIPTION
***************************************************************************/
/* Combine indiviual flags into the Status Register */
INLINE UINT32 GET_ST(tms34010_state *tms)
#define TMS340X0_STATE_ENTRY(_name, _format, _member, _datamask, _flags) \
CPU_STATE_ENTRY(TMS34010_##_name, #_name, _format, tms34010_state, _member, _datamask, ~0, _flags)
static const cpu_state_entry state_array[] =
{
return tms->st;
}
TMS340X0_STATE_ENTRY(PC, "%08X", pc, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(GENPC, "%08X", pc, 0xffffffff, CPUSTATE_NOSHOW)
TMS340X0_STATE_ENTRY(GENPCBASE, "%08X", ppc, 0xffffffff, CPUSTATE_NOSHOW)
TMS340X0_STATE_ENTRY(SP, "%08X", regs[15].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(GENSP, "%08X", regs[15].reg, 0xffffffff, CPUSTATE_NOSHOW)
TMS340X0_STATE_ENTRY(ST, "%08X", st, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(A0, "%08X", regs[0].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(A1, "%08X", regs[1].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(A2, "%08X", regs[2].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(A3, "%08X", regs[3].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(A4, "%08X", regs[4].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(A5, "%08X", regs[5].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(A6, "%08X", regs[6].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(A7, "%08X", regs[7].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(A8, "%08X", regs[8].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(A9, "%08X", regs[9].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(A10, "%08X", regs[10].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(A11, "%08X", regs[11].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(A12, "%08X", regs[12].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(A13, "%08X", regs[13].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(A14, "%08X", regs[14].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(B0, "%08X", regs[30-0].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(B1, "%08X", regs[30-1].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(B2, "%08X", regs[30-2].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(B3, "%08X", regs[30-3].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(B4, "%08X", regs[30-4].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(B5, "%08X", regs[30-5].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(B6, "%08X", regs[30-6].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(B7, "%08X", regs[30-7].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(B8, "%08X", regs[30-8].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(B9, "%08X", regs[30-9].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(B10, "%08X", regs[30-10].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(B11, "%08X", regs[30-11].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(B12, "%08X", regs[30-12].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(B13, "%08X", regs[30-13].reg, 0xffffffff, 0)
TMS340X0_STATE_ENTRY(B14, "%08X", regs[30-14].reg, 0xffffffff, 0)
};
static const cpu_state_table state_table_template =
{
NULL, /* pointer to the base of state (offsets are relative to this) */
0, /* subtype this table refers to */
ARRAY_LENGTH(state_array), /* number of entries */
state_array /* array of entries */
};
/***************************************************************************
INLINE SHORTCUTS
***************************************************************************/
/* Break up Status Register into indiviual flags */
INLINE void SET_ST(tms34010_state *tms, UINT32 st)
@ -540,7 +598,7 @@ static void check_interrupt(tms34010_state *tms)
if (!(IOREG(tms, REG_HSTCTLH) & 0x0200))
{
PUSH(tms, tms->pc);
PUSH(tms, GET_ST(tms));
PUSH(tms, tms->st);
}
/* leap to the vector */
@ -596,7 +654,7 @@ static void check_interrupt(tms34010_state *tms)
if (vector)
{
PUSH(tms, tms->pc);
PUSH(tms, GET_ST(tms));
PUSH(tms, tms->st);
RESET_ST(tms);
tms->pc = RLONG(tms, vector);
COUNT_CYCLES(tms,16);
@ -624,7 +682,12 @@ static CPU_INIT( tms34010 )
tms->irq_callback = irqcallback;
tms->device = device;
tms->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);
tms->screen = device_list_find_by_tag(device->machine->config->devicelist, VIDEO_SCREEN, configdata->screen_tag);
tms->screen = devtag_get_device(device->machine, VIDEO_SCREEN, configdata->screen_tag);
/* set up the state table */
tms->state = state_table_template;
tms->state.baseptr = tms;
tms->state.subtypemask = 1;
/* allocate a scanline timer and set it to go off at the start */
tms->scantimer = timer_alloc(device->machine, scanline_callback, tms);
@ -656,6 +719,7 @@ static CPU_RESET( tms34010 )
UINT16 *shiftreg = tms->shiftreg;
cpu_irq_callback save_irqcallback = tms->irq_callback;
emu_timer *save_scantimer = tms->scantimer;
cpu_state_table savetable = tms->state;
memset(tms, 0, sizeof(*tms));
@ -666,6 +730,7 @@ static CPU_RESET( tms34010 )
tms->scantimer = save_scantimer;
tms->device = device;
tms->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);
tms->state = savetable;
/* fetch the initial PC and reset the state */
tms->pc = RLONG(tms, 0xffffffe0) & 0xfffffff0;
@ -777,7 +842,9 @@ static CPU_EXECUTE( tms34010 )
{
do
{
UINT16 op = ROPCODE(tms);
UINT16 op;
tms->ppc = tms->pc;
op = ROPCODE(tms);
(*opcode_table[op >> 4])(tms, op);
} while (tms->icount > 0);
}
@ -786,11 +853,8 @@ static CPU_EXECUTE( tms34010 )
do
{
UINT16 op;
if ((tms->device->machine->debug_flags & DEBUG_FLAG_CALL_HOOK) != 0)
{
tms->st = GET_ST(tms);
debugger_instruction_hook(tms->device, tms->pc);
}
tms->ppc = tms->pc;
op = ROPCODE(tms);
(*opcode_table[op >> 4])(tms, op);
} while (tms->icount > 0);
@ -1657,42 +1721,6 @@ static CPU_SET_INFO( tms34010 )
/* --- the following bits of info are set as 64-bit signed integers --- */
case CPUINFO_INT_INPUT_STATE + 0: set_irq_line(tms, 0, info->i); break;
case CPUINFO_INT_INPUT_STATE + 1: set_irq_line(tms, 1, info->i); break;
case CPUINFO_INT_PC: tms->pc = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_PC: tms->pc = info->i; break;
case CPUINFO_INT_SP:
case CPUINFO_INT_REGISTER + TMS34010_SP: SP(tms) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_ST: tms->st = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_A0: AREG(tms, 0) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_A1: AREG(tms, 1) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_A2: AREG(tms, 2) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_A3: AREG(tms, 3) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_A4: AREG(tms, 4) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_A5: AREG(tms, 5) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_A6: AREG(tms, 6) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_A7: AREG(tms, 7) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_A8: AREG(tms, 8) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_A9: AREG(tms, 9) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_A10: AREG(tms, 10) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_A11: AREG(tms, 11) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_A12: AREG(tms, 12) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_A13: AREG(tms, 13) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_A14: AREG(tms, 14) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_B0: BREG(tms, 0) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_B1: BREG(tms, 1) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_B2: BREG(tms, 2) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_B3: BREG(tms, 3) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_B4: BREG(tms, 4) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_B5: BREG(tms, 5) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_B6: BREG(tms, 6) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_B7: BREG(tms, 7) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_B8: BREG(tms, 8) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_B9: BREG(tms, 9) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_B10: BREG(tms, 10) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_B11: BREG(tms, 11) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_B12: BREG(tms, 12) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_B13: BREG(tms, 13) = info->i; break;
case CPUINFO_INT_REGISTER + TMS34010_B14: BREG(tms, 14) = info->i; break;
}
}
@ -1733,44 +1761,6 @@ CPU_GET_INFO( tms34010 )
case CPUINFO_INT_INPUT_STATE + 0: info->i = (IOREG(tms, REG_INTPEND) & TMS34010_INT1) ? ASSERT_LINE : CLEAR_LINE; break;
case CPUINFO_INT_INPUT_STATE + 1: info->i = (IOREG(tms, REG_INTPEND) & TMS34010_INT2) ? ASSERT_LINE : CLEAR_LINE; break;
case CPUINFO_INT_PREVIOUSPC: /* not implemented */ break;
case CPUINFO_INT_PC:
case CPUINFO_INT_REGISTER + TMS34010_PC: info->i = tms->pc; break;
case CPUINFO_INT_SP:
case CPUINFO_INT_REGISTER + TMS34010_SP: info->i = SP(tms); break;
case CPUINFO_INT_REGISTER + TMS34010_ST: info->i = tms->st; break;
case CPUINFO_INT_REGISTER + TMS34010_A0: info->i = AREG(tms, 0); break;
case CPUINFO_INT_REGISTER + TMS34010_A1: info->i = AREG(tms, 1); break;
case CPUINFO_INT_REGISTER + TMS34010_A2: info->i = AREG(tms, 2); break;
case CPUINFO_INT_REGISTER + TMS34010_A3: info->i = AREG(tms, 3); break;
case CPUINFO_INT_REGISTER + TMS34010_A4: info->i = AREG(tms, 4); break;
case CPUINFO_INT_REGISTER + TMS34010_A5: info->i = AREG(tms, 5); break;
case CPUINFO_INT_REGISTER + TMS34010_A6: info->i = AREG(tms, 6); break;
case CPUINFO_INT_REGISTER + TMS34010_A7: info->i = AREG(tms, 7); break;
case CPUINFO_INT_REGISTER + TMS34010_A8: info->i = AREG(tms, 8); break;
case CPUINFO_INT_REGISTER + TMS34010_A9: info->i = AREG(tms, 9); break;
case CPUINFO_INT_REGISTER + TMS34010_A10: info->i = AREG(tms, 10); break;
case CPUINFO_INT_REGISTER + TMS34010_A11: info->i = AREG(tms, 11); break;
case CPUINFO_INT_REGISTER + TMS34010_A12: info->i = AREG(tms, 12); break;
case CPUINFO_INT_REGISTER + TMS34010_A13: info->i = AREG(tms, 13); break;
case CPUINFO_INT_REGISTER + TMS34010_A14: info->i = AREG(tms, 14); break;
case CPUINFO_INT_REGISTER + TMS34010_B0: info->i = BREG(tms, 0); break;
case CPUINFO_INT_REGISTER + TMS34010_B1: info->i = BREG(tms, 1); break;
case CPUINFO_INT_REGISTER + TMS34010_B2: info->i = BREG(tms, 2); break;
case CPUINFO_INT_REGISTER + TMS34010_B3: info->i = BREG(tms, 3); break;
case CPUINFO_INT_REGISTER + TMS34010_B4: info->i = BREG(tms, 4); break;
case CPUINFO_INT_REGISTER + TMS34010_B5: info->i = BREG(tms, 5); break;
case CPUINFO_INT_REGISTER + TMS34010_B6: info->i = BREG(tms, 6); break;
case CPUINFO_INT_REGISTER + TMS34010_B7: info->i = BREG(tms, 7); break;
case CPUINFO_INT_REGISTER + TMS34010_B8: info->i = BREG(tms, 8); break;
case CPUINFO_INT_REGISTER + TMS34010_B9: info->i = BREG(tms, 9); break;
case CPUINFO_INT_REGISTER + TMS34010_B10: info->i = BREG(tms, 10); break;
case CPUINFO_INT_REGISTER + TMS34010_B11: info->i = BREG(tms, 11); break;
case CPUINFO_INT_REGISTER + TMS34010_B12: info->i = BREG(tms, 12); break;
case CPUINFO_INT_REGISTER + TMS34010_B13: info->i = BREG(tms, 13); break;
case CPUINFO_INT_REGISTER + TMS34010_B14: info->i = BREG(tms, 14); break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_SET_INFO: info->setinfo = CPU_SET_INFO_NAME(tms34010); break;
case CPUINFO_PTR_INIT: info->init = CPU_INIT_NAME(tms34010); break;
@ -1780,6 +1770,7 @@ CPU_GET_INFO( tms34010 )
case CPUINFO_PTR_BURN: info->burn = NULL; break;
case CPUINFO_PTR_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(tms34010); break;
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &tms->icount; break;
case CPUINFO_PTR_STATE_TABLE: info->state_table = &tms->state; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "TMS34010"); break;
@ -1809,40 +1800,6 @@ CPU_GET_INFO( tms34010 )
tms->st & 0x00000002 ? 'F':'.',
tms->st & 0x00000001 ? 'F':'.');
break;
case CPUINFO_STR_REGISTER + TMS34010_PC: sprintf(info->s, "PC :%08X", tms->pc); break;
case CPUINFO_STR_REGISTER + TMS34010_SP: sprintf(info->s, "SP :%08X", AREG(tms, 15)); break;
case CPUINFO_STR_REGISTER + TMS34010_ST: sprintf(info->s, "ST :%08X", tms->st); break;
case CPUINFO_STR_REGISTER + TMS34010_A0: sprintf(info->s, "A0 :%08X", AREG(tms, 0)); break;
case CPUINFO_STR_REGISTER + TMS34010_A1: sprintf(info->s, "A1 :%08X", AREG(tms, 1)); break;
case CPUINFO_STR_REGISTER + TMS34010_A2: sprintf(info->s, "A2 :%08X", AREG(tms, 2)); break;
case CPUINFO_STR_REGISTER + TMS34010_A3: sprintf(info->s, "A3 :%08X", AREG(tms, 3)); break;
case CPUINFO_STR_REGISTER + TMS34010_A4: sprintf(info->s, "A4 :%08X", AREG(tms, 4)); break;
case CPUINFO_STR_REGISTER + TMS34010_A5: sprintf(info->s, "A5 :%08X", AREG(tms, 5)); break;
case CPUINFO_STR_REGISTER + TMS34010_A6: sprintf(info->s, "A6 :%08X", AREG(tms, 6)); break;
case CPUINFO_STR_REGISTER + TMS34010_A7: sprintf(info->s, "A7 :%08X", AREG(tms, 7)); break;
case CPUINFO_STR_REGISTER + TMS34010_A8: sprintf(info->s, "A8 :%08X", AREG(tms, 8)); break;
case CPUINFO_STR_REGISTER + TMS34010_A9: sprintf(info->s, "A9 :%08X", AREG(tms, 9)); break;
case CPUINFO_STR_REGISTER + TMS34010_A10: sprintf(info->s,"A10:%08X", AREG(tms, 10)); break;
case CPUINFO_STR_REGISTER + TMS34010_A11: sprintf(info->s,"A11:%08X", AREG(tms, 11)); break;
case CPUINFO_STR_REGISTER + TMS34010_A12: sprintf(info->s,"A12:%08X", AREG(tms, 12)); break;
case CPUINFO_STR_REGISTER + TMS34010_A13: sprintf(info->s,"A13:%08X", AREG(tms, 13)); break;
case CPUINFO_STR_REGISTER + TMS34010_A14: sprintf(info->s,"A14:%08X", AREG(tms, 14)); break;
case CPUINFO_STR_REGISTER + TMS34010_B0: sprintf(info->s, "B0 :%08X", BREG(tms, 0)); break;
case CPUINFO_STR_REGISTER + TMS34010_B1: sprintf(info->s, "B1 :%08X", BREG(tms, 1)); break;
case CPUINFO_STR_REGISTER + TMS34010_B2: sprintf(info->s, "B2 :%08X", BREG(tms, 2)); break;
case CPUINFO_STR_REGISTER + TMS34010_B3: sprintf(info->s, "B3 :%08X", BREG(tms, 3)); break;
case CPUINFO_STR_REGISTER + TMS34010_B4: sprintf(info->s, "B4 :%08X", BREG(tms, 4)); break;
case CPUINFO_STR_REGISTER + TMS34010_B5: sprintf(info->s, "B5 :%08X", BREG(tms, 5)); break;
case CPUINFO_STR_REGISTER + TMS34010_B6: sprintf(info->s, "B6 :%08X", BREG(tms, 6)); break;
case CPUINFO_STR_REGISTER + TMS34010_B7: sprintf(info->s, "B7 :%08X", BREG(tms, 7)); break;
case CPUINFO_STR_REGISTER + TMS34010_B8: sprintf(info->s, "B8 :%08X", BREG(tms, 8)); break;
case CPUINFO_STR_REGISTER + TMS34010_B9: sprintf(info->s, "B9 :%08X", BREG(tms, 9)); break;
case CPUINFO_STR_REGISTER + TMS34010_B10: sprintf(info->s,"B10:%08X", BREG(tms, 10)); break;
case CPUINFO_STR_REGISTER + TMS34010_B11: sprintf(info->s,"B11:%08X", BREG(tms, 11)); break;
case CPUINFO_STR_REGISTER + TMS34010_B12: sprintf(info->s,"B12:%08X", BREG(tms, 12)); break;
case CPUINFO_STR_REGISTER + TMS34010_B13: sprintf(info->s,"B13:%08X", BREG(tms, 13)); break;
case CPUINFO_STR_REGISTER + TMS34010_B14: sprintf(info->s,"B14:%08X", BREG(tms, 14)); break;
}
}
@ -1856,8 +1813,6 @@ CPU_GET_INFO( tms34020 )
switch (state)
{
/* --- the following bits of info are returned as 64-bit signed integers --- */
case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(tms34010_state); break;
case CPUINFO_INT_CLOCK_MULTIPLIER: info->i = 1; break;
case CPUINFO_INT_CLOCK_DIVIDER: info->i = 4; break;
/* --- the following bits of info are returned as pointers to data or functions --- */

View File

@ -19,7 +19,7 @@
/* register indexes for get_reg and set_reg */
enum
{
TMS34010_PC = 1,
TMS34010_PC,
TMS34010_SP,
TMS34010_ST,
TMS34010_A0,
@ -51,7 +51,11 @@ enum
TMS34010_B11,
TMS34010_B12,
TMS34010_B13,
TMS34010_B14
TMS34010_B14,
TMS34010_GENPC = REG_GENPC,
TMS34010_GENSP = REG_GENSP,
TMS34010_GENPCBASE = REG_GENPCBASE
};

View File

@ -88,6 +88,10 @@ struct _cpu_class_data
UINT32 cycles_per_second; /* cycles per second, adjusted for multipliers */
attoseconds_t attoseconds_per_cycle; /* attoseconds per adjusted clock cycle */
/* internal state reflection */
const cpu_state_table *state; /* pointer to the base table */
const cpu_state_entry *regstate[MAX_REGS];/* pointer to the state entry for each register */
/* these below are hacks to support multiple interrupts per frame */
INT32 iloops; /* number of interrupts remaining this frame */
emu_timer * partial_frame_timer; /* the timer that triggers partial frame interrupts */
@ -118,7 +122,12 @@ static TIMER_CALLBACK( triggertime_callback );
static TIMER_CALLBACK( empty_event_queue );
static IRQ_CALLBACK( standard_irq_callback );
static void register_save_states(const device_config *device);
static UINT64 get_register_value(const device_config *device, void *baseptr, const cpu_state_entry *entry);
static void set_register_value(const device_config *device, void *baseptr, const cpu_state_entry *entry, UINT64 value);
static void get_register_string_value(const device_config *device, void *baseptr, const cpu_state_entry *entry, char *dest);
#ifdef UNUSED_FUNCTION
static int get_register_string_max_width(const device_config *device, void *baseptr, const cpu_state_entry *entry);
#endif
/***************************************************************************
@ -431,6 +440,25 @@ static DEVICE_START( cpu )
}
update_clock_information(device);
/* fetch information about the CPU states */
classdata->state = cpu_get_state_table(device);
if (classdata->state != NULL)
{
int stateindex;
/* loop over all states specified, and work with any that apply */
for (stateindex = 0; stateindex < classdata->state->entrycount; stateindex++)
{
const cpu_state_entry *entry = &classdata->state->entrylist[stateindex];
if (entry->validmask == 0 || (entry->validmask & classdata->state->subtypemask) != 0)
{
assert(entry->index < MAX_REGS);
assert(classdata->regstate[entry->index] == NULL);
classdata->regstate[entry->index] = entry;
}
}
}
/* if no state registered for saving, we can't save */
if (num_regs == 0)
{
@ -544,6 +572,20 @@ static DEVICE_SET_INFO( cpu )
/* no parameters to set */
default:
/* if we have a state pointer, we can handle some stuff for free */
if (device->token != NULL)
{
const cpu_class_data *classdata = cpu_get_class_data(device);
if (classdata->state != NULL)
{
if (state >= CPUINFO_INT_REGISTER && state <= CPUINFO_INT_REGISTER_LAST)
{
set_register_value(device, classdata->state->baseptr, classdata->regstate[state - CPUINFO_INT_REGISTER], info->i);
return;
}
}
}
/* integer data */
if (state >= DEVINFO_INT_FIRST && state <= DEVINFO_INT_LAST)
{
@ -593,6 +635,27 @@ DEVICE_GET_INFO( cpu )
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(cpu); break;
default:
/* if we have a state pointer, we can handle some stuff for free */
if (device->token != NULL)
{
const cpu_class_data *classdata = cpu_get_class_data(device);
if (classdata->state != NULL)
{
if (state >= CPUINFO_INT_REGISTER && state <= CPUINFO_INT_REGISTER_LAST)
{
info->i = get_register_value(device, classdata->state->baseptr, classdata->regstate[state - CPUINFO_INT_REGISTER]);
return;
}
else if (state >= CPUINFO_STR_REGISTER && state <= CPUINFO_STR_REGISTER_LAST)
{
cinfo.s = info->s;
get_register_string_value(device, classdata->state->baseptr, classdata->regstate[state - CPUINFO_STR_REGISTER], cinfo.s);
info->s = cinfo.s;
return;
}
}
}
/* integer data */
if (state >= DEVINFO_INT_FIRST && state <= DEVINFO_INT_LAST)
{
@ -1471,3 +1534,333 @@ static void register_save_states(const device_config *device)
}
}
/*-------------------------------------------------
get_register_value - return a register value
of a CPU using the state table
-------------------------------------------------*/
static UINT64 get_register_value(const device_config *device, void *baseptr, const cpu_state_entry *entry)
{
void *dataptr;
UINT64 result;
/* NULL entry returns 0 */
if (entry == NULL || baseptr == NULL)
return 0;
/* if we have an exporter, call it now */
if ((entry->flags & CPUSTATE_EXPORT) != 0)
{
cpu_state_io_func exportcb = (cpu_state_io_func)device_get_info_fct(device, CPUINFO_FCT_EXPORT_STATE);
assert(exportcb != NULL);
(*exportcb)(device, baseptr, entry);
}
/* pick up the value */
dataptr = (UINT8 *)baseptr + entry->dataoffs;
switch (entry->datasize)
{
default:
case 1: result = *(UINT8 *)dataptr; break;
case 2: result = *(UINT16 *)dataptr; break;
case 4: result = *(UINT32 *)dataptr; break;
case 8: result = *(UINT64 *)dataptr; break;
}
return result & entry->mask;
}
/*-------------------------------------------------
set_register_value - set the value of a
CPU register using the state table
-------------------------------------------------*/
static void set_register_value(const device_config *device, void *baseptr, const cpu_state_entry *entry, UINT64 value)
{
void *dataptr;
/* NULL entry is a no-op */
if (entry == NULL || baseptr == NULL)
return;
/* apply the mask */
value &= entry->mask;
/* sign-extend if necessary */
if ((entry->flags & CPUSTATE_IMPORT_SEXT) != 0 && value > (entry->mask >> 1))
value |= ~entry->mask;
/* store the value */
dataptr = (UINT8 *)baseptr + entry->dataoffs;
switch (entry->datasize)
{
default:
case 1: *(UINT8 *)dataptr = value; break;
case 2: *(UINT16 *)dataptr = value; break;
case 4: *(UINT32 *)dataptr = value; break;
case 8: *(UINT64 *)dataptr = value; break;
}
/* if we have an importer, call it now */
if ((entry->flags & CPUSTATE_IMPORT) != 0)
{
cpu_state_io_func importcb = (cpu_state_io_func)device_get_info_fct(device, CPUINFO_FCT_IMPORT_STATE);
assert(importcb != NULL);
(*importcb)(device, baseptr, entry);
}
}
/*-------------------------------------------------
get_register_string_value - return a string
representation of a CPU register using the
state table
-------------------------------------------------*/
static void get_register_string_value(const device_config *device, void *baseptr, const cpu_state_entry *entry, char *dest)
{
static const UINT64 decdivisor[] = {
1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000,
U64(10000000000), U64(100000000000), U64(1000000000000),
U64(10000000000000), U64(100000000000000), U64(1000000000000000),
U64(10000000000000000), U64(100000000000000000), U64(1000000000000000000),
U64(10000000000000000000)
};
static const char hexchars[] = "0123456789ABCDEF";
int leadzero = 0, width = 0, percent = 0, explicitsign = 0, hitnonzero = 0, reset;
const char *fptr;
UINT64 result;
/* NULL entry does nothing */
if (entry == NULL || entry->symbol == NULL || entry->format == NULL)
return;
/* fetch the data */
result = get_register_value(device, baseptr, entry);
/* start with the basics */
dest += sprintf(dest, "%s%s:", (entry->flags & CPUSTATE_NOSHOW) ? "~" : "", entry->symbol);
/* parse the format */
reset = TRUE;
for (fptr = entry->format; *fptr != 0; fptr++)
{
int digitnum;
/* reset any accumulated state */
if (reset)
leadzero = width = percent = explicitsign = reset = 0;
/* if we're not within a format, then anything other than a % outputs directly */
if (!percent && *fptr != '%')
{
*dest++ = *fptr;
continue;
}
/* handle each character in turn */
switch (*fptr)
{
/* % starts a format; %% outputs a single % */
case '%':
if (!percent)
percent = TRUE;
else
{
*dest++ = *fptr;
percent = FALSE;
}
break;
/* 0 means insert leading 0s, unless it follows another width digit */
case '0':
if (width == 0)
leadzero = TRUE;
else
width *= 10;
break;
/* 1-9 accumulate into the width */
case '1': case '2': case '3': case '4': case '5':
case '6': case '7': case '8': case '9':
width = width * 10 + (*fptr - '0');
break;
/* + means explicit sign */
case '+':
explicitsign = TRUE;
break;
/* X outputs as hexadecimal */
case 'X':
if (width == 0)
fatalerror("Width required for %%X formats\n");
hitnonzero = FALSE;
while (leadzero && width > 16)
{
*dest++ = ' ';
width--;
}
for (digitnum = 15; digitnum >= 0; digitnum--)
{
int digit = (result >> (4 * digitnum)) & 0x0f;
if (digit != 0)
*dest++ = hexchars[digit];
else if (hitnonzero || (leadzero && digitnum < width) || digitnum == 0)
*dest++ = '0';
hitnonzero |= digit;
}
reset = TRUE;
break;
/* d outputs as signed decimal */
case 'd':
if (width == 0)
fatalerror("Width required for %%d formats\n");
if ((result & entry->mask) > (entry->mask >> 1))
{
result = -result & entry->mask;
*dest++ = '-';
width--;
}
else if (explicitsign)
{
*dest++ = '+';
width--;
}
/* fall through to unsigned case */
/* u outputs as unsigned decimal */
case 'u':
if (width == 0)
fatalerror("Width required for %%u formats\n");
hitnonzero = FALSE;
while (leadzero && width > ARRAY_LENGTH(decdivisor))
{
*dest++ = ' ';
width--;
}
for (digitnum = ARRAY_LENGTH(decdivisor); digitnum >= 0; digitnum--)
{
int digit = (result >= decdivisor[digitnum]) ? (result / decdivisor[digitnum]) % 10 : 0;
if (digit != 0)
*dest++ = '0' + digit;
else if (hitnonzero || (leadzero && digitnum < width) || digitnum == 0)
*dest++ = '0';
hitnonzero |= digit;
}
reset = TRUE;
break;
/* s is a custom format */
case 's':
{
cpu_string_io_func exportstring = (cpu_string_io_func)device_get_info_fct(device, CPUINFO_FCT_EXPORT_STRING);
assert(exportstring != NULL);
(*exportstring)(device, baseptr, entry, dest);
dest += strlen(dest);
break;
}
/* other formats unknown */
default:
fatalerror("Unknown format character '%c'\n", *fptr);
break;
}
}
*dest = 0;
}
/*-------------------------------------------------
get_register_string_max_width - return the
maximum width of a string described by a
format
-------------------------------------------------*/
#ifdef UNUSED_FUNCTION
static int get_register_string_max_width(const device_config *device, void *baseptr, const cpu_state_entry *entry)
{
int leadzero = 0, width = 0, percent = 0, explicitsign = 0, reset;
int totalwidth = 0;
const char *fptr;
/* NULL entry does nothing */
if (entry == NULL || entry->symbol == NULL || entry->format == NULL)
return 0;
/* parse the format */
reset = TRUE;
for (fptr = entry->format; *fptr != 0; fptr++)
{
/* reset any accumulated state */
if (reset)
leadzero = width = percent = explicitsign = reset = 0;
/* if we're not within a format, then anything other than a % outputs directly */
if (!percent && *fptr != '%')
{
totalwidth++;
continue;
}
/* handle each character in turn */
switch (*fptr)
{
/* % starts a format; %% outputs a single % */
case '%':
if (!percent)
percent = TRUE;
else
{
totalwidth++;
percent = FALSE;
}
break;
/* 0 means insert leading 0s, unless it follows another width digit */
case '0':
if (width == 0)
leadzero = TRUE;
else
width *= 10;
break;
/* 1-9 accumulate into the width */
case '1': case '2': case '3': case '4': case '5':
case '6': case '7': case '8': case '9':
width = width * 10 + (*fptr - '0');
break;
/* + means explicit sign */
case '+':
explicitsign = TRUE;
break;
/* X outputs as hexadecimal */
/* d outputs as signed decimal */
/* u outputs as unsigned decimal */
/* s outputs as custom format */
case 'X':
case 'd':
case 'u':
case 's':
totalwidth += width;
reset = TRUE;
break;
if (width == 0)
fatalerror("Width required for %%d formats\n");
totalwidth += width;
break;
/* other formats unknown */
default:
fatalerror("Unknown format character '%c'\n", *fptr);
break;
}
}
return totalwidth;
}
#endif

View File

@ -18,6 +18,7 @@
#include "memory.h"
#include "watchdog.h"
#include "state.h"
#include <stddef.h>
// mingw has this defined for 32-bit compiles
@ -67,7 +68,11 @@ enum
/* Maximum number of registers of any CPU */
enum
{
MAX_REGS = 256
MAX_REGS = 256,
REG_GENPCBASE = MAX_REGS - 1,
REG_GENPC = MAX_REGS - 2,
REG_GENSP = MAX_REGS - 3
};
@ -101,14 +106,14 @@ enum
CPUINFO_INT_PAGE_SHIFT, /* R/O: size of a page log 2 (i.e., 12=4096), or 0 if paging not supported */
CPUINFO_INT_PAGE_SHIFT_LAST = CPUINFO_INT_PAGE_SHIFT + ADDRESS_SPACES - 1,
CPUINFO_INT_SP, /* R/W: the current stack pointer value */
CPUINFO_INT_PC, /* R/W: the current PC value */
CPUINFO_INT_PREVIOUSPC, /* R/W: the previous PC value */
CPUINFO_INT_INPUT_STATE, /* R/W: states for each input line */
CPUINFO_INT_INPUT_STATE_LAST = CPUINFO_INT_INPUT_STATE + MAX_INPUT_LINES - 1,
CPUINFO_INT_OUTPUT_STATE, /* R/W: states for each output line */
CPUINFO_INT_OUTPUT_STATE_LAST = CPUINFO_INT_OUTPUT_STATE + MAX_OUTPUT_LINES - 1,
CPUINFO_INT_REGISTER, /* R/W: values of up to MAX_REGs registers */
CPUINFO_INT_SP = CPUINFO_INT_REGISTER + REG_GENSP, /* R/W: the current stack pointer value */
CPUINFO_INT_PC = CPUINFO_INT_REGISTER + REG_GENPC, /* R/W: the current PC value */
CPUINFO_INT_PREVIOUSPC = CPUINFO_INT_REGISTER + REG_GENPCBASE, /* R/W: the previous PC value */
CPUINFO_INT_REGISTER_LAST = CPUINFO_INT_REGISTER + MAX_REGS - 1,
CPUINFO_INT_CPU_SPECIFIC = 0x08000, /* R/W: CPU-specific values start here */
@ -121,7 +126,7 @@ enum
/* R/O: int *icount */
CPUINFO_PTR_INTERNAL_MEMORY_MAP, /* R/O: const addrmap_token *map */
CPUINFO_PTR_INTERNAL_MEMORY_MAP_LAST = CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACES - 1,
CPUINFO_PTR_DEBUG_REGISTER_LIST, /* R/O: int *list: list of registers for the debugger */
CPUINFO_PTR_STATE_TABLE, /* R/O: cpu_state_table *state */
CPUINFO_PTR_CPU_SPECIFIC = DEVINFO_PTR_DEVICE_SPECIFIC, /* R/W: CPU-specific values start here */
@ -142,6 +147,10 @@ enum
CPUINFO_PTR_READOP, /* R/O: int (*readop)(const device_config *device, UINT32 offset, int size, UINT64 *value) */
CPUINFO_PTR_DEBUG_INIT, /* R/O: void (*debug_init)(const device_config *device) */
CPUINFO_PTR_VALIDITY_CHECK, /* R/O: int (*validity_check)(const game_driver *driver, const void *config) */
CPUINFO_FCT_IMPORT_STATE, /* R/O: void (*import_state)(const device_config *device, void *baseptr, const cpu_state_entry *entry) */
CPUINFO_FCT_EXPORT_STATE, /* R/O: void (*export_state)(const device_config *device, void *baseptr, const cpu_state_entry *entry) */
CPUINFO_FCT_IMPORT_STRING, /* R/O: void (*import_string)(const device_config *device, void *baseptr, const cpu_state_entry *entry, const char *format, char *string) */
CPUINFO_FCT_EXPORT_STRING, /* R/O: void (*export_string)(const device_config *device, void *baseptr, const cpu_state_entry *entry, const char *format, char *string) */
CPUINFO_FCT_CPU_SPECIFIC = DEVINFO_FCT_DEVICE_SPECIFIC, /* R/W: CPU-specific values start here */
@ -164,24 +173,6 @@ enum
};
/* get_reg/set_reg constants */
enum
{
/* This value is passed to cpu_get_reg to retrieve the previous
* program counter value, ie. before a CPU emulation started
* to fetch opcodes and arguments for the current instrution. */
REG_PREVIOUSPC = CPUINFO_INT_PREVIOUSPC - CPUINFO_INT_REGISTER,
/* This value is passed to cpu_get_reg to retrieve the current
* program counter value. */
REG_PC = CPUINFO_INT_PC - CPUINFO_INT_REGISTER,
/* This value is passed to cpu_get_reg to retrieve the current
* stack pointer value. */
REG_SP = CPUINFO_INT_SP - CPUINFO_INT_REGISTER
};
/* Translation intentions */
#define TRANSLATE_TYPE_MASK 0x03 /* read write or fetch */
#define TRANSLATE_USER_MASK 0x04 /* user mode or fully privileged */
@ -208,6 +199,13 @@ enum
#define DASMFLAG_STEP_OVER_EXTRA(x) ((x) << DASMFLAG_OVERINSTSHIFT)
/* state table flags */
#define CPUSTATE_NOSHOW 0x01 /* don't display this entry in the registers view */
#define CPUSTATE_IMPORT 0x02 /* call the import function after writing new data */
#define CPUSTATE_IMPORT_SEXT 0x04 /* sign-extend the data when writing new data */
#define CPUSTATE_EXPORT 0x08 /* call the export function prior to fetching the data */
/***************************************************************************
MACROS
@ -271,6 +269,22 @@ enum
#define CPU_VALIDITY_CHECK(name) int CPU_VALIDITY_CHECK_NAME(name)(const game_driver *driver, const void *config)
#define CPU_VALIDITY_CHECK_CALL(name) CPU_VALIDITY_CHECK_NAME(name)(driver, config)
#define CPU_IMPORT_STATE_NAME(name) cpu_state_import_##name
#define CPU_IMPORT_STATE(name) void CPU_IMPORT_STATE_NAME(name)(const device_config *device, void *baseptr, const cpu_state_entry *entry)
#define CPU_IMPORT_STATE_CALL(name) CPU_IMPORT_STATE_NAME(name)(device, baseptr, entry)
#define CPU_EXPORT_STATE_NAME(name) cpu_state_export_##name
#define CPU_EXPORT_STATE(name) void CPU_EXPORT_STATE_NAME(name)(const device_config *device, void *baseptr, const cpu_state_entry *entry)
#define CPU_EXPORT_STATE_CALL(name) CPU_EXPORT_STATE_NAME(name)(device, baseptr, entry)
#define CPU_IMPORT_STRING_NAME(name) cpu_string_import_##name
#define CPU_IMPORT_STRING(name) void CPU_IMPORT_STRING_NAME(name)(const device_config *device, void *baseptr, const cpu_state_entry *entry, char *string)
#define CPU_IMPORT_STRING_CALL(name) CPU_IMPORT_STRING_NAME(name)(device, baseptr, entry, string)
#define CPU_EXPORT_STRING_NAME(name) cpu_string_export_##name
#define CPU_EXPORT_STRING(name) void CPU_EXPORT_STRING_NAME(name)(const device_config *device, void *baseptr, const cpu_state_entry *entry, char *string)
#define CPU_EXPORT_STRING_CALL(name) CPU_EXPORT_STRING_NAME(name)(device, baseptr, entry, string)
#define cpu_get_index(cpu) device_list_index((cpu)->machine->config->devicelist, CPU, (cpu)->tag)
@ -294,11 +308,11 @@ enum
#define cpu_get_logaddr_width(cpu, space) device_get_info_int(cpu, CPUINFO_INT_LOGADDR_WIDTH + (space))
#define cpu_get_page_shift(cpu, space) device_get_info_int(cpu, CPUINFO_INT_PAGE_SHIFT + (space))
#define cpu_get_reg(cpu, reg) device_get_info_int(cpu, CPUINFO_INT_REGISTER + (reg))
#define cpu_get_previouspc(cpu) ((offs_t)cpu_get_reg(cpu, REG_PREVIOUSPC))
#define cpu_get_pc(cpu) ((offs_t)cpu_get_reg(cpu, REG_PC))
#define cpu_get_sp(cpu) cpu_get_reg(cpu, REG_SP)
#define cpu_get_previouspc(cpu) ((offs_t)cpu_get_reg(cpu, REG_GENPCBASE))
#define cpu_get_pc(cpu) ((offs_t)cpu_get_reg(cpu, REG_GENPC))
#define cpu_get_sp(cpu) cpu_get_reg(cpu, REG_GENSP)
#define cpu_get_icount_ptr(cpu) (int *)device_get_info_ptr(cpu, CPUINFO_PTR_INSTRUCTION_COUNTER)
#define cpu_get_debug_register_list(cpu) device_get_info_ptr(cpu, CPUINFO_PTR_DEBUG_REGISTER_LIST)
#define cpu_get_state_table(cpu) (const cpu_state_table *)device_get_info_ptr(cpu, CPUINFO_PTR_STATE_TABLE)
#define cpu_get_name(cpu) device_get_info_string(cpu, CPUINFO_STR_NAME)
#define cpu_get_core_family(cpu) device_get_info_string(cpu, CPUINFO_STR_CORE_FAMILY)
#define cpu_get_core_version(cpu) device_get_info_string(cpu, CPUINFO_STR_CORE_VERSION)
@ -316,6 +330,10 @@ enum
#define cputag_get_address_space(mach, tag, space) cpu_get_address_space(cputag_get_cpu(mach, tag), space)
#define CPU_STATE_ENTRY(_index, _symbol, _format, _struct, _member, _datamask, _validmask, _flags) \
{ _index, _validmask, offsetof(_struct, _member), _datamask, sizeof(((_struct *)0)->_member), _flags, _symbol, _format },
/***************************************************************************
TYPE DEFINITIONS
@ -325,8 +343,9 @@ enum
typedef struct _cpu_debug_data cpu_debug_data;
/* forward declaration of this union */
/* forward declaration of types */
typedef union _cpuinfo cpuinfo;
typedef struct _cpu_state_entry cpu_state_entry;
/* define the various callback functions */
@ -346,6 +365,33 @@ typedef int (*cpu_readop_func)(const device_config *device, UINT32 offset, int s
typedef void (*cpu_debug_init_func)(const device_config *device);
typedef offs_t (*cpu_disassemble_func)(const device_config *device, char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram);
typedef int (*cpu_validity_check_func)(const game_driver *driver, const void *config);
typedef void (*cpu_state_io_func)(const device_config *device, void *baseptr, const cpu_state_entry *entry);
typedef void (*cpu_string_io_func)(const device_config *device, void *baseptr, const cpu_state_entry *entry, char *string);
/* structure describing a single item of exposed CPU state */
struct _cpu_state_entry
{
UINT32 index; /* state index this entry applies to */
UINT32 validmask; /* mask for which CPU subtypes this entry is valid */
FPTR dataoffs; /* offset to the data, relative to the baseptr */
UINT64 mask; /* mask applied to the data */
UINT8 datasize; /* size of the data item in memory */
UINT8 flags; /* flags */
const char * symbol; /* symbol for display; all lower-case version for expressions */
const char * format; /* supported formats */
};
/* structure describing a table of exposed CPU state */
typedef struct _cpu_state_table cpu_state_table;
struct _cpu_state_table
{
void * baseptr; /* pointer to the base of state (offsets are relative to this) */
UINT32 subtypemask; /* mask of subtypes that apply to this CPU */
UINT32 entrycount; /* number of entries */
const cpu_state_entry * entrylist; /* array of entries */
};
/* a cpu_type is just a pointer to the CPU's get_info function */
@ -373,7 +419,12 @@ union _cpuinfo
cpu_debug_init_func debug_init; /* CPUINFO_PTR_DEBUG_INIT */
cpu_disassemble_func disassemble; /* CPUINFO_PTR_DISASSEMBLE */
cpu_validity_check_func validity_check; /* CPUINFO_PTR_VALIDITY_CHECK */
cpu_state_io_func import_state; /* CPUINFO_FCT_IMPORT_STATE */
cpu_state_io_func export_state; /* CPUINFO_FCT_EXPORT_STATE */
cpu_string_io_func import_string; /* CPUINFO_FCT_IMPORT_STRING */
cpu_string_io_func export_string; /* CPUINFO_FCT_EXPORT_STRING */
int * icount; /* CPUINFO_PTR_INSTRUCTION_COUNTER */
const cpu_state_table * state_table; /* CPUINFO_PTR_STATE_TABLE */
const addrmap8_token * internal_map8; /* CPUINFO_PTR_INTERNAL_MEMORY_MAP */
const addrmap16_token * internal_map16; /* CPUINFO_PTR_INTERNAL_MEMORY_MAP */
const addrmap32_token * internal_map32; /* CPUINFO_PTR_INTERNAL_MEMORY_MAP */

View File

@ -78,12 +78,6 @@ struct _debugcpu_private
/***************************************************************************
LOCAL VARIABLES
***************************************************************************/
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
@ -214,7 +208,6 @@ void debug_cpu_init(running_machine *machine)
info->symtable = symtable_alloc(global->symtable, (void *)cpu);
/* add a global symbol for the current instruction pointer */
symtable_add_register(info->symtable, "curpc", NULL, get_current_pc, 0);
symtable_add_register(info->symtable, "cycles", NULL, get_cycles, NULL);
if (classheader->space[ADDRESS_SPACE_PROGRAM] != NULL)
symtable_add_register(info->symtable, "logunmap", (void *)classheader->space[ADDRESS_SPACE_PROGRAM], get_logunmap, set_logunmap);
@ -249,6 +242,10 @@ void debug_cpu_init(running_machine *machine)
/* add the symbol to the table */
symtable_add_register(info->symtable, symname, (void *)(FPTR)regnum, get_cpu_reg, set_cpu_reg);
}
/* if no curpc, add one */
if (symtable_find(info->symtable, "curpc") == NULL)
symtable_add_register(info->symtable, "curpc", NULL, get_current_pc, 0);
}
/* first CPU is visible by default */
@ -319,7 +316,7 @@ int debug_cpu_within_instruction_hook(running_machine *machine)
int debug_cpu_is_stopped(running_machine *machine)
{
debugcpu_private *global = machine->debugcpu_data;
return global->execution_state == EXECUTION_STATE_STOPPED;
return (global != NULL) ? (global->execution_state == EXECUTION_STATE_STOPPED) : FALSE;
}

View File

@ -1185,12 +1185,12 @@ static void registers_view_recompute(debug_view *view)
{
debug_view_registers *regdata = view->extra_data;
int regnum, maxtaglen, maxvallen;
const int *list;
const cpu_state_table *table;
/* if no CPU, reset to the first one */
if (regdata->device == NULL)
regdata->device = view->machine->cpu[0];
list = cpu_get_debug_register_list(regdata->device);
table = cpu_get_state_table(regdata->device);
/* reset the view parameters */
view->topleft.y = 0;
@ -1264,15 +1264,20 @@ static void registers_view_recompute(debug_view *view)
int regid;
/* identify the register id */
regid = list ? list[regnum] : regnum;
if (regid < 0)
if (table != NULL)
{
if (regnum >= table->entrycount)
break;
regid = table->entrylist[regnum].index;
}
else
regid = regnum;
/* retrieve the string for this register */
str = cpu_get_reg_string(regdata->device, regid);
/* did we get a string? */
if (str && str[0] != '\0' && str[0] != '~')
if (str != NULL && str[0] != 0 && str[0] != '~')
registers_view_add_register(view, regid, str);
}

View File

@ -1953,6 +1953,8 @@ int symtable_add(symbol_table *table, const char *name, const symbol_entry *entr
int strindex;
int all_digits, i;
assert_always(entry->table == table, "Mismatched symbol tables");
/* we cannot add numeric symbols */
all_digits = TRUE;
for (i = 0; name[i]; i++)
@ -2018,6 +2020,7 @@ int symtable_add_register(symbol_table *table, const char *name, void *symref, s
symbol.type = SMT_REGISTER;
symbol.info.reg.getter = getter;
symbol.info.reg.setter = setter;
symbol.table = table;
return symtable_add(table, name, &symbol);
}
@ -2036,6 +2039,7 @@ int symtable_add_function(symbol_table *table, const char *name, void *symref, U
symbol.info.func.minparams = minparams;
symbol.info.func.maxparams = maxparams;
symbol.info.func.execute = execute;
symbol.table = table;
return symtable_add(table, name, &symbol);
}
@ -2052,6 +2056,7 @@ int symtable_add_value(symbol_table *table, const char *name, UINT64 value)
symbol.ref = NULL;
symbol.type = SMT_VALUE;
symbol.info.gen.value = value;
symbol.table = table;
return symtable_add(table, name, &symbol);
}

View File

@ -50,7 +50,7 @@ static void device_list_reset(running_machine *machine);
a temporary string buffer
-------------------------------------------------*/
INLINE char *get_temp_string_buffer(void)
char *get_temp_string_buffer(void)
{
char *string = &temp_string_pool[temp_string_pool_index++ % TEMP_STRING_POOL_ENTRIES][0];
string[0] = 0;

View File

@ -212,7 +212,7 @@ union _deviceinfo
INT64 i; /* generic integers */
void * p; /* generic pointers */
genf * f; /* generic function pointers */
const char * s; /* generic strings */
char * s; /* generic strings */
device_set_info_func set_info; /* DEVINFO_FCT_SET_INFO */
device_start_func start; /* DEVINFO_FCT_START */

View File

@ -1219,10 +1219,10 @@ DEVICE_GET_INFO(via6522)
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(via6522); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "6522 VIA"; break;
case DEVINFO_STR_FAMILY: info->s = "6522 VIA"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_NAME: strcpy(info->s, "6522 VIA"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "6522 VIA"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: /* Nothing */ break;
}
}

View File

@ -854,10 +854,10 @@ DEVICE_GET_INFO(cia6526r1)
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(cia); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "6526 CIA rev1"; break;
case DEVINFO_STR_FAMILY: info->s = "6526 CIA"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_NAME: strcpy(info->s, "6526 CIA rev1"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "6526 CIA"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: /* Nothing */ break;
}
}
@ -872,7 +872,7 @@ DEVICE_GET_INFO(cia6526r2)
switch (state)
{
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "6526 CIA rev2"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "6526 CIA rev2"); break;
default: DEVICE_GET_INFO_CALL(cia6526r1); break;
}
}
@ -887,7 +887,7 @@ DEVICE_GET_INFO(cia8520)
switch (state)
{
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "8520 CIA"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "8520 CIA"); break;
default: DEVICE_GET_INFO_CALL(cia6526r1); break;
}
}

View File

@ -518,10 +518,10 @@ DEVICE_GET_INFO( riot6532 )
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(riot6532);break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "6532 (RIOT)"; break;
case DEVINFO_STR_FAMILY: info->s = "I/O devices"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "6532 (RIOT)"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "I/O devices"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -862,10 +862,10 @@ DEVICE_GET_INFO( acia6850 )
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(acia6850); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "6850 ACIA"; break;
case DEVINFO_STR_FAMILY: info->s = "6850 ACIA"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_NAME: strcpy(info->s, "6850 ACIA"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "6850 ACIA"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: /* Nothing */ break;
}
}

View File

@ -640,10 +640,10 @@ DEVICE_GET_INFO(duart68681)
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(duart68681);break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "DUART 68681"; break;
case DEVINFO_STR_FAMILY: info->s = "DUART"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "DUART 68681"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "DUART"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -244,10 +244,10 @@ DEVICE_GET_INFO( ttl74123 )
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(ttl74123); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "74123"; break;
case DEVINFO_STR_FAMILY: info->s = "TTL"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "74123"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "TTL"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -440,11 +440,11 @@ DEVICE_GET_INFO( dma8237 ) {
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(dma8237); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "Intel DMA8237"; break;
case DEVINFO_STR_FAMILY: info->s = "DMA8237"; break;
case DEVINFO_STR_VERSION: info->s = "1.00"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright the MAME and MESS Teams"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "Intel DMA8237"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "DMA8237"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.00"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright the MAME and MESS Teams"); break;
}
}

View File

@ -581,11 +581,11 @@ DEVICE_GET_INFO(ppi8255) {
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(ppi8255); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "Intel PPI8255"; break;
case DEVINFO_STR_FAMILY: info->s = "PPI8255"; break;
case DEVINFO_STR_VERSION: info->s = "1.00"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright the MAME and MESS Teams"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "Intel PPI8255"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "PPI8255"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.00"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright the MAME and MESS Teams"); break;
}
}

View File

@ -424,10 +424,10 @@ DEVICE_GET_INFO( dma8257 )
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(dma8257);break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "DMA8257"; break;
case DEVINFO_STR_FAMILY: info->s = "DMA controllers"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "DMA8257"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "DMA controllers"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -230,10 +230,10 @@ DEVICE_GET_INFO(at28c16)
case DEVINFO_FCT_NVRAM: info->nvram = DEVICE_NVRAM_NAME(at28c16); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "AT28C16"; break;
case DEVINFO_STR_FAMILY: info->s = "EEPROM"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "AT28C16"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "EEPROM"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -202,10 +202,10 @@ DEVICE_GET_INFO( cdp1852 )
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(cdp1852); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "RCA CDP1852"; break;
case DEVINFO_STR_FAMILY: info->s = "RCA CDP1800"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "RCA CDP1852"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "RCA CDP1800"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -1824,10 +1824,10 @@ DEVICE_GET_INFO( ide_controller )
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(ide_controller);break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "IDE Controller"; break;
case DEVINFO_STR_FAMILY: info->s = "Disk Controller"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "IDE Controller"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "Disk Controller"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -260,10 +260,10 @@ DEVICE_GET_INFO( latch8 )
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(latch8);break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "8 bit latch"; break;
case DEVINFO_STR_FAMILY: info->s = "Latches"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "8 bit latch"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "Latches"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -1634,10 +1634,10 @@ DEVICE_GET_INFO( laserdisc )
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(laserdisc); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = (intf != NULL) ? intf->name : "Unknown Laserdisc Player"; break;
case DEVINFO_STR_FAMILY: info->s = "Laserdisc Player"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, (intf != NULL) ? intf->name : "Unknown Laserdisc Player"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "Laserdisc Player"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -183,11 +183,11 @@ DEVICE_GET_INFO( msm6242 )
case DEVINFO_FCT_RESET: /* Nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "OKI MSM6242"; break;
case DEVINFO_STR_FAMILY: info->s = "MSM6242 RTC"; break;
case DEVINFO_STR_VERSION: info->s = "1.00"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "OKI MSM6242"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "MSM6242 RTC"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.00"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -274,10 +274,10 @@ DEVICE_GET_INFO( pci_bus )
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(pci_bus);break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "PCI Bus"; break;
case DEVINFO_STR_FAMILY: info->s = "Peripherial Bus"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "PCI Bus"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "Peripherial Bus"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -450,11 +450,11 @@ DEVICE_GET_INFO( pic8259 ) {
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(pic8259); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "Intel PIC8259"; break;
case DEVINFO_STR_FAMILY: info->s = "PIC8259"; break;
case DEVINFO_STR_VERSION: info->s = "1.00"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright the MAME and MESS Teams"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "Intel PIC8259"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "PIC8259"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.00"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright the MAME and MESS Teams"); break;
}
}

View File

@ -1142,11 +1142,11 @@ DEVICE_GET_INFO( pit8253 ) {
case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(pit8253); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "Intel PIT8253"; break;
case DEVINFO_STR_FAMILY: info->s = "PIT8253"; break;
case DEVINFO_STR_VERSION: info->s = "1.00"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright the MAME and MESS Teams"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "Intel PIT8253"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "PIT8253"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.00"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright the MAME and MESS Teams"); break;
}
}
@ -1154,7 +1154,7 @@ DEVICE_GET_INFO( pit8253 ) {
DEVICE_GET_INFO( pit8254 ) {
switch ( state ) {
/* --- the following bits of info are returned as 64-bit signed integers --- */
case DEVINFO_STR_NAME: info->s = "Intel PIT8254"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "Intel PIT8254"); break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case DEVINFO_FCT_START: info->start = DEVICE_START_NAME(pit8254); break;

View File

@ -624,10 +624,10 @@ static DEVICE_GET_INFO( smc91c9x )
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: /* provided by subclasses */ break;
case DEVINFO_STR_FAMILY: info->s = "SMC91C9X Ethernet Controller";break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "SMC91C9X Ethernet Controller");break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}
@ -636,7 +636,7 @@ DEVICE_GET_INFO( smc91c94 )
switch (state)
{
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "SMC91C94"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "SMC91C94"); break;
default: DEVICE_GET_INFO_CALL(smc91c9x); break;
}
}
@ -646,7 +646,7 @@ DEVICE_GET_INFO( smc91c96 )
switch (state)
{
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "SMC91C96"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "SMC91C96"); break;
default: DEVICE_GET_INFO_CALL(smc91c9x); break;
}
}

View File

@ -481,11 +481,11 @@ static DEVICE_GET_INFO(timekeeper)
case DEVINFO_FCT_NVRAM: info->nvram = DEVICE_NVRAM_NAME(timekeeper); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "Timekeeper"; break;
case DEVINFO_STR_FAMILY: info->s = "EEPROM"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "Timekeeper"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "EEPROM"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}
@ -494,7 +494,7 @@ DEVICE_GET_INFO( m48t02 )
switch (state)
{
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "M48T02"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "M48T02"); break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case DEVINFO_FCT_START: info->start = DEVICE_START_NAME(m48t02); break;
@ -508,7 +508,7 @@ DEVICE_GET_INFO( m48t35 )
switch (state)
{
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "M48T35"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "M48T35"); break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case DEVINFO_FCT_START: info->start = DEVICE_START_NAME(m48t35); break;
@ -522,7 +522,7 @@ DEVICE_GET_INFO( m48t58 )
switch (state)
{
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "M48T58"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "M48T58"); break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case DEVINFO_FCT_START: info->start = DEVICE_START_NAME(m48t58); break;
@ -536,7 +536,7 @@ DEVICE_GET_INFO( mk48t08 )
switch (state)
{
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "MK48T08"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "MK48T08"); break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case DEVINFO_FCT_START: info->start = DEVICE_START_NAME(mk48t08); break;

View File

@ -178,10 +178,10 @@ DEVICE_GET_INFO(x2212)
case DEVINFO_FCT_NVRAM: info->nvram = DEVICE_NVRAM_NAME(x2212); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "X2212"; break;
case DEVINFO_STR_FAMILY: info->s = "EEPROM"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "X2212"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "EEPROM"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -545,11 +545,11 @@ DEVICE_GET_INFO( z80ctc )
case DEVINFO_FCT_IRQ_RETI: info->f = (genf *)z80ctc_irq_reti; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "Zilog Z80 CTC"; break;
case DEVINFO_STR_FAMILY: info->s = "Z80"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "Zilog Z80 CTC"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "Z80"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -511,11 +511,11 @@ DEVICE_GET_INFO( z80dma )
case DEVINFO_FCT_IRQ_RETI: info->f = (genf *)z80dma_irq_reti; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "Z80DMA"; break;
case DEVINFO_STR_FAMILY: info->s = "DMA controllers"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "Z80DMA"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "DMA controllers"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -610,11 +610,11 @@ DEVICE_GET_INFO( z80pio )
case DEVINFO_FCT_IRQ_RETI: info->f = (genf *)z80pio_irq_reti; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "Zilog Z80 PIO"; break;
case DEVINFO_STR_FAMILY: info->s = "Z80"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "Zilog Z80 PIO"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "Z80"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -840,11 +840,11 @@ DEVICE_GET_INFO( z80sio )
case DEVINFO_FCT_IRQ_RETI: info->f = (genf *)z80sio_irq_reti; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "Zilog Z80 SIO"; break;
case DEVINFO_STR_FAMILY: info->s = "Z80"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "Zilog Z80 SIO"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "Z80"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -753,10 +753,11 @@ genf *sndnum_get_info_fct(int sndnum, UINT32 state)
const char *sndnum_get_info_string(int sndnum, UINT32 state)
{
extern char *get_temp_string_buffer(void);
sndinfo info;
VERIFY_SNDNUM(sndnum_get_info_string);
info.s = NULL;
info.s = get_temp_string_buffer();
(*sound[sndnum].intf.get_info)(sound[sndnum].device, state, &info);
return info.s;
}
@ -862,12 +863,13 @@ genf *sndti_get_info_fct(sound_type sndtype, int sndindex, UINT32 state)
const char *sndti_get_info_string(sound_type sndtype, int sndindex, UINT32 state)
{
extern char *get_temp_string_buffer(void);
sndinfo info;
int sndnum;
VERIFY_SNDTI(sndti_get_info_string);
sndnum = sound_matrix[sndtype][sndindex] - 1;
info.s = NULL;
info.s = get_temp_string_buffer();
(*sound[sndnum].intf.get_info)(sound[sndnum].device, state, &info);
return info.s;
}
@ -986,11 +988,12 @@ genf *sndtype_get_info_fct(sound_type sndtype, UINT32 state)
const char *sndtype_get_info_string(sound_type sndtype, UINT32 state)
{
extern char *get_temp_string_buffer(void);
snd_class_header *classheader = &snd_type_header[sndtype];
sndinfo info;
VERIFY_SNDTYPE(sndtype_get_info_string);
info.s = NULL;
info.s = get_temp_string_buffer();
(*classheader->get_info)(NULL, state, &info);
return info.s;
}
@ -1030,10 +1033,10 @@ static SND_GET_INFO( dummy_sound )
case SNDINFO_PTR_RESET: /* Nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Dummy"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Dummy"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Dummy"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Dummy"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -235,7 +235,7 @@ union _sndinfo
INT64 i; /* generic integers */
void * p; /* generic pointers */
genf * f; /* generic function pointers */
const char *s; /* generic strings */
char * s; /* generic strings */
snd_set_info_func set_info; /* SNDINFO_PTR_SET_INFO */
snd_start_func start; /* SNDINFO_PTR_START */

View File

@ -878,11 +878,11 @@ DEVICE_GET_INFO( speaker_output )
case DEVINFO_FCT_RESET: /* Nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case DEVINFO_STR_NAME: info->s = "Speaker"; break;
case DEVINFO_STR_FAMILY: info->s = "Sound"; break;
case DEVINFO_STR_VERSION: info->s = "1.0"; break;
case DEVINFO_STR_SOURCE_FILE: info->s = __FILE__; break;
case DEVINFO_STR_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case DEVINFO_STR_NAME: strcpy(info->s, "Speaker"); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "Sound"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -230,10 +230,10 @@ SND_GET_INFO( ym2151 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( ym2151 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "YM2151"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Yamaha FM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "YM2151"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Yamaha FM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -349,10 +349,10 @@ SND_GET_INFO( ym2203 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( ym2203 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "YM2203"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Yamaha FM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "YM2203"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Yamaha FM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -177,10 +177,10 @@ SND_GET_INFO( ym2413 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( ym2413 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "YM2413"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Yamaha FM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "YM2413"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Yamaha FM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -317,10 +317,10 @@ SND_GET_INFO( ym2608 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( ym2608 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "YM2608"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Yamaha FM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "YM2608"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Yamaha FM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -503,11 +503,11 @@ SND_GET_INFO( ym2610 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( ym2610 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "YM2610"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Yamaha FM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "YM2610"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Yamaha FM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}
#endif
@ -540,11 +540,11 @@ SND_GET_INFO( ym2610b )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( ym2610 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "YM2610B"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Yamaha FM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "YM2610B"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Yamaha FM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -370,11 +370,11 @@ SND_GET_INFO( ym2612 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( ym2612 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "YM2612"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Yamaha FM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "YM2612"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Yamaha FM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}
@ -406,11 +406,11 @@ SND_GET_INFO( ym3438 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( ym2612 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "YM3438"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Yamaha FM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "YM3438"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Yamaha FM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -181,11 +181,11 @@ SND_GET_INFO( ymf262 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( ymf262 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "YMF262"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Yamaha FM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "YMF262"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Yamaha FM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -182,11 +182,11 @@ SND_GET_INFO( ym3812 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( ym3812 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "YM3812"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Yamaha FM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "YM3812"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Yamaha FM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}
@ -352,11 +352,11 @@ SND_GET_INFO( ym3526 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( ym3526 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "YM3526"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Yamaha FM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "YM3526"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Yamaha FM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}
@ -566,11 +566,11 @@ SND_GET_INFO( y8950 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( y8950 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Y8950"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Yamaha FM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Y8950"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Yamaha FM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -307,11 +307,11 @@ SND_GET_INFO( tms5110 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( tms5110 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "TMS5110"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "TI Speech"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "TMS5110"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "TI Speech"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}
@ -320,7 +320,7 @@ SND_GET_INFO( tms5100 )
switch (state)
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( tms5100 ); break;
case SNDINFO_STR_NAME: info->s = "TMS5100"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "TMS5100"); break;
default: SND_GET_INFO_CALL(tms5110); break;
}
}
@ -330,7 +330,7 @@ SND_GET_INFO( tms5110a )
switch (state)
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( tms5110a ); break;
case SNDINFO_STR_NAME: info->s = "TMS5100A"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "TMS5100A"); break;
default: SND_GET_INFO_CALL(tms5110); break;
}
}
@ -340,7 +340,7 @@ SND_GET_INFO( cd2801 )
switch (state)
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( cd2801 ); break;
case SNDINFO_STR_NAME: info->s = "CD2801"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "CD2801"); break;
default: SND_GET_INFO_CALL(tms5110); break;
}
}
@ -350,7 +350,7 @@ SND_GET_INFO( tmc0281 )
switch (state)
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( tmc0281 ); break;
case SNDINFO_STR_NAME: info->s = "TMS5100"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "TMS5100"); break;
default: SND_GET_INFO_CALL(tms5110); break;
}
}
@ -360,7 +360,7 @@ SND_GET_INFO( cd2802 )
switch (state)
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( cd2802 ); break;
case SNDINFO_STR_NAME: info->s = "CD2802"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "CD2802"); break;
default: SND_GET_INFO_CALL(tms5110); break;
}
}
@ -370,7 +370,7 @@ SND_GET_INFO( m58817 )
switch (state)
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( m58817 ); break;
case SNDINFO_STR_NAME: info->s = "M58817"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "M58817"); break;
default: SND_GET_INFO_CALL(tms5110); break;
}
}

View File

@ -263,11 +263,11 @@ SND_GET_INFO( tms5220 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( tms5220 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "TMS5220"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "TI Speech"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "TMS5220"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "TI Speech"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}
@ -277,7 +277,7 @@ SND_GET_INFO( tmc0285 )
switch (state)
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( tms5200 ); break;
case SNDINFO_STR_NAME: info->s = "TMC0285"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "TMC0285"); break;
default: SND_GET_INFO_CALL( tms5220 ); break;
}
}
@ -289,7 +289,7 @@ SND_GET_INFO( tms5200 )
switch (state)
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( tms5200 ); break;
case SNDINFO_STR_NAME: info->s = "TMS5200"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "TMS5200"); break;
default: SND_GET_INFO_CALL( tms5220 ); break;
}
}

View File

@ -1390,11 +1390,11 @@ SND_GET_INFO( aica )
case SNDINFO_PTR_RESET: /* Nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "AICA"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Sega/Yamaha custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0.1"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "AICA"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Sega/Yamaha custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0.1"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -346,10 +346,10 @@ SND_GET_INFO( astrocade )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( astrocade ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Astrocade"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Bally"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "2.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Astrocade"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Bally"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "2.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -876,11 +876,11 @@ SND_GET_INFO( ay8910 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( ay8910 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "AY-3-8910A"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "PSG"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "AY-3-8910A"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "PSG"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}
@ -889,7 +889,7 @@ SND_GET_INFO( ay8912 )
switch (state)
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( ay8910 ); break;
case SNDINFO_STR_NAME: info->s = "AY-3-8912A"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "AY-3-8912A"); break;
default: SND_GET_INFO_CALL(ay8910); break;
}
}
@ -899,7 +899,7 @@ SND_GET_INFO( ay8913 )
switch (state)
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( ay8910 ); break;
case SNDINFO_STR_NAME: info->s = "AY-3-8913A"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "AY-3-8913A"); break;
default: SND_GET_INFO_CALL(ay8910); break;
}
}
@ -909,7 +909,7 @@ SND_GET_INFO( ay8930 )
switch (state)
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( ay8910 ); break;
case SNDINFO_STR_NAME: info->s = "AY8930"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "AY8930"); break;
default: SND_GET_INFO_CALL(ay8910); break;
}
}
@ -919,7 +919,7 @@ SND_GET_INFO( ym2149 )
switch (state)
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( ym2149 ); break;
case SNDINFO_STR_NAME: info->s = "YM2149"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "YM2149"); break;
default: SND_GET_INFO_CALL(ay8910); break;
}
}
@ -929,7 +929,7 @@ SND_GET_INFO( ym3439 )
switch (state)
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( ym2149 ); break;
case SNDINFO_STR_NAME: info->s = "YM3439"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "YM3439"); break;
default: SND_GET_INFO_CALL(ay8910); break;
}
}
@ -939,7 +939,7 @@ SND_GET_INFO( ymz284 )
switch (state)
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( ym2149 ); break;
case SNDINFO_STR_NAME: info->s = "YMZ284"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "YMZ284"); break;
default: SND_GET_INFO_CALL(ay8910); break;
}
}
@ -949,7 +949,7 @@ SND_GET_INFO( ymz294 )
switch (state)
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( ym2149 ); break;
case SNDINFO_STR_NAME: info->s = "YMZ294"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "YMZ294"); break;
default: SND_GET_INFO_CALL(ay8910); break;
}
}

View File

@ -188,10 +188,10 @@ SND_GET_INFO( beep )
case SNDINFO_PTR_RESET: /* nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Beep"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Beep"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright The MESS Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Beep"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Beep"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright The MESS Team"); break;
}
}

View File

@ -508,10 +508,10 @@ SND_GET_INFO( bsmt2000 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( bsmt2000 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "BSMT2000"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Data East Wavetable"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "BSMT2000"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Data East Wavetable"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -522,11 +522,11 @@ SND_GET_INFO( c140 )
case SNDINFO_PTR_RESET: /* nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "C140"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Namco PCM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "C140"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Namco PCM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -599,11 +599,11 @@ SND_GET_INFO( c352 )
case SNDINFO_PTR_RESET: /* nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "C352"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Namco PCM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.1"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "C352"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Namco PCM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.1"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -356,11 +356,11 @@ SND_GET_INFO( c6280 )
case SNDINFO_PTR_RESET: /* nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "HuC6280"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "????"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "HuC6280"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "????"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -322,11 +322,11 @@ SND_GET_INFO( cdda )
case SNDINFO_PTR_RESET: /* nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "CD/DA"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "CD Audio"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "CD/DA"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "CD Audio"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -194,10 +194,10 @@ SND_GET_INFO( cdp1869 )
case SNDINFO_PTR_RESET: /* nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "CDP1869"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "RCA CDP1869"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "CDP1869"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "RCA CDP1869"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -583,11 +583,11 @@ SND_GET_INFO( cem3394 )
case SNDINFO_PTR_RESET: /* nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "CEM3394"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Analog Synth"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "CEM3394"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Analog Synth"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -80,11 +80,11 @@ SND_GET_INFO( custom )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( custom ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Custom"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "None"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Custom"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "None"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -177,11 +177,11 @@ SND_GET_INFO( dac )
case SNDINFO_PTR_RESET: /* nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "DAC"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "TI Speech"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "DAC"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "DAC"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -764,11 +764,11 @@ SND_GET_INFO( discrete )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( discrete ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Discrete"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Analog"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.1"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Discrete"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Analog"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.1"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -257,11 +257,11 @@ SND_GET_INFO( dmadac )
case SNDINFO_PTR_RESET: /* nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "DMA-driven DAC"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "DAC"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "DMA-driven DAC"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "DAC"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -540,11 +540,11 @@ SND_GET_INFO( es5503 )
case SNDINFO_PTR_RESET: /* Nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "ES5503"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Ensoniq ES550x"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright R. Belmont"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "ES5503"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Ensoniq ES550x"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright R. Belmont"); break;
}
}

View File

@ -2167,11 +2167,11 @@ SND_GET_INFO( es5505 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( es5505 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "ES5505"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Ensoniq Wavetable"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "ES5505"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Ensoniq Wavetable"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}
@ -2202,11 +2202,11 @@ SND_GET_INFO( es5506 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( es5506 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "ES5506"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Ensoniq Wavetable"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "ES5506"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Ensoniq Wavetable"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -458,11 +458,11 @@ SND_GET_INFO( es8712 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( es8712 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "ES8712"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Excellent Systems ADPCM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "ES8712"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Excellent Systems ADPCM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -138,11 +138,11 @@ SND_GET_INFO( filter_rc )
case SNDINFO_PTR_RESET: /* Nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "RC Filter"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Filters"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "RC Filter"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Filters"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -70,11 +70,11 @@ SND_GET_INFO( filter_volume )
case SNDINFO_PTR_RESET: /* Nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Volume Filter"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Filters"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Volume Filter"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Filters"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -322,11 +322,11 @@ SND_GET_INFO( gaelco_gae1 )
case SNDINFO_PTR_RESET: /* nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Gaelco GAE1"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Gaelco custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Gaelco GAE1"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Gaelco custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}
@ -358,11 +358,11 @@ SND_GET_INFO( gaelco_cg1v )
case SNDINFO_PTR_RESET: /* nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Gaelco CG1V"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Gaelco custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Gaelco CG1V"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Gaelco custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -346,11 +346,11 @@ SND_GET_INFO( hc55516 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( hc55516 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "HC-55516"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "CVSD"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "2.1"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "HC-55516"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "CVSD"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "2.1"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}
@ -361,7 +361,7 @@ SND_GET_INFO( mc3417 )
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( mc3417 ); break;
case SNDINFO_PTR_RESET: /* chip has no reset pin */ break;
case SNDINFO_STR_NAME: info->s = "MC3417"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "MC3417"); break;
default: SND_GET_INFO_CALL(hc55516); break;
}
}
@ -373,7 +373,7 @@ SND_GET_INFO( mc3418 )
{
case SNDINFO_PTR_START: info->start = SND_START_NAME( mc3418 ); break;
case SNDINFO_PTR_RESET: /* chip has no reset pin */ break;
case SNDINFO_STR_NAME: info->s = "MC3418"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "MC3418"); break;
default: SND_GET_INFO_CALL(hc55516); break;
}
}

View File

@ -562,11 +562,11 @@ SND_GET_INFO( ics2115 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( ics2115 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "ICS2115"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "ICS"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.01"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "ICS2115"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "ICS"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.01"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -294,11 +294,11 @@ SND_GET_INFO( iremga20 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( iremga20 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Irem GA20"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Irem custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Irem GA20"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Irem custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -274,11 +274,11 @@ SND_GET_INFO( k005289 )
case SNDINFO_PTR_RESET: /* nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "K005289"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Konami custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "K005289"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Konami custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -500,11 +500,11 @@ SND_GET_INFO( k007232 )
case SNDINFO_PTR_RESET: /* nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "K007232"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Konami custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "K007232"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Konami custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -245,11 +245,11 @@ SND_GET_INFO( k051649 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( k051649 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "K051649"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Konami custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "K051649"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Konami custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -488,11 +488,11 @@ SND_GET_INFO( k053260 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( k053260); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "K053260"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Konami custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "K053260"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Konami custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -721,11 +721,11 @@ SND_GET_INFO( k054539 )
case SNDINFO_PTR_RESET: /* nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "K054539"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Konami custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "K054539"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Konami custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -319,16 +319,16 @@ SND_GET_INFO( msm5205 )
/* --- the following bits of info are returned as pointers to data or functions --- */
case SNDINFO_PTR_SET_INFO: info->set_info = SND_SET_INFO_NAME( msm5205 ); break;
case SNDINFO_PTR_START: info->start = SND_START_NAME( msm5205 );break;
case SNDINFO_PTR_START: info->start = SND_START_NAME( msm5205 ); break;
case SNDINFO_PTR_STOP: /* nothing */ break;
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( msm5205 );break;
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( msm5205 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "MSM5205"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "ADPCM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "MSM5205"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "ADPCM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -854,11 +854,11 @@ SND_GET_INFO( msm5232 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( msm5232 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "MSM5232"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Oki Tone"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.1"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "MSM5232"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Oki Tone"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.1"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -715,11 +715,11 @@ SND_GET_INFO( multipcm )
case SNDINFO_PTR_RESET: /* Nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Sega/Yamaha 315-5560"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Sega custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "2.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Sega/Yamaha 315-5560"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Sega custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "2.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -181,11 +181,11 @@ SND_GET_INFO( namco_63701x )
case SNDINFO_PTR_RESET: /* Nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Namco 63701X"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Namco custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Namco 63701X"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Namco custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -826,11 +826,11 @@ SND_GET_INFO( namco )
case SNDINFO_PTR_RESET: /* Nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Namco"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Namco custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Namco"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Namco custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}
@ -860,11 +860,11 @@ SND_GET_INFO( namco_15xx )
case SNDINFO_PTR_RESET: /* Nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Namco 15XX"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Namco custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Namco 15XX"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Namco custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}
@ -894,11 +894,11 @@ SND_GET_INFO( namco_cus30 )
case SNDINFO_PTR_RESET: /* Nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Namco CUS30"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Namco custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Namco CUS30"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Namco custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -221,11 +221,11 @@ SND_GET_INFO( namco_52xx )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( namco_52xx ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "Namco 52XX"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Namco custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "Namco 52XX"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Namco custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -782,11 +782,11 @@ SND_GET_INFO( nesapu )
case SNDINFO_PTR_RESET: /* Nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "N2A03"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Nintendo custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "N2A03"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Nintendo custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -258,11 +258,11 @@ SND_GET_INFO( nile )
case SNDINFO_PTR_RESET: /* Nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "NiLe"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Seta custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "NiLe"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Seta custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -483,11 +483,11 @@ SND_GET_INFO( okim6258 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME(okim6258); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "OKI6258"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "OKI ADPCM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "OKI6258"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "OKI ADPCM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -674,11 +674,11 @@ SND_GET_INFO( okim6295 )
case SNDINFO_PTR_RESET: info->reset = SND_RESET_NAME( okim6295 ); break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "OKI6295"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "OKI ADPCM"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "OKI6295"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "OKI ADPCM"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

View File

@ -1535,11 +1535,11 @@ SND_GET_INFO( pokey )
case SNDINFO_PTR_RESET: /* Nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "POKEY"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Atari custom"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "4.51"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright Nicola Salmoria and the MAME Team"; break;
case SNDINFO_STR_NAME: strcpy(info->s, "POKEY"); break;
case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Atari custom"); break;
case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "4.51"); break;
case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}

Some files were not shown because too many files have changed in this diff Show More