Previous 199869 Revisions Next

r32683 Sunday 12th October, 2014 at 08:30:17 UTC by Fabio Priuli
tms32031: removed static configs in favor of inline config+devcb. nw.
[src/emu/cpu/tms32031]32031ops.c tms32031.c tms32031.h
[src/mame/audio]cage.c
[src/mame/drivers]gaelco3d.c midvunit.c rastersp.c
[src/mame/includes]gaelco3d.h midvunit.h

trunk/src/mame/drivers/midvunit.c
r32682r32683
439439 *
440440 *************************************/
441441
442static void midvplus_xf1_w(tms3203x_device &device, UINT8 val)
442WRITE8_MEMBER(midvunit_state::midvplus_xf1_w)
443443{
444   midvunit_state *state = device.machine().driver_data<midvunit_state>();
445//  osd_printf_debug("xf1_w = %d\n", val);
444//  osd_printf_debug("xf1_w = %d\n", data);
446445
447   if (state->m_lastval && !val)
448      memcpy(state->m_ram_base, state->m_fastram_base, 0x20000*4);
446   if (m_lastval && !data)
447      memcpy(m_ram_base, m_fastram_base, 0x20000*4);
449448
450   state->m_lastval = val;
449   m_lastval = data;
451450}
452451
453452
r32682r32683
489488ADDRESS_MAP_END
490489
491490
492static const tms3203x_config midvplus_config = { false, NULL, midvplus_xf1_w };
493
494491static ADDRESS_MAP_START( midvplus_map, AS_PROGRAM, 32, midvunit_state )
495492   AM_RANGE(0x000000, 0x01ffff) AM_RAM AM_SHARE("ram_base")
496493   AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("fastram_base")
r32682r32683
10451042   MCFG_MIDWAY_SERIAL_PIC2_YEAR_OFFS(94)
10461043MACHINE_CONFIG_END
10471044
1048
10491045static MACHINE_CONFIG_DERIVED( midvplus, midvcommon )
10501046
10511047   /* basic machine hardware */
10521048   MCFG_CPU_MODIFY("maincpu")
1053   MCFG_TMS3203X_CONFIG(midvplus_config)
10541049   MCFG_CPU_PROGRAM_MAP(midvplus_map)
1050   MCFG_TMS3203X_XF1_CB(WRITE8(midvunit_state, midvplus_xf1_w))
10551051
10561052   MCFG_MACHINE_RESET_OVERRIDE(midvunit_state,midvplus)
10571053   MCFG_DEVICE_REMOVE("nvram")
trunk/src/mame/drivers/rastersp.c
r32682r32683
840840SLOT_INTERFACE_END
841841
842842
843
844843/*************************************
845844 *
846 *  TMS32031
847 *
848 *************************************/
849
850static const tms3203x_config tms_config =
851{
852   true    // Boot-loader mode
853};
854
855
856
857/*************************************
858 *
859845 *  Machine driver
860846 *
861847 *************************************/
r32682r32683
868854   MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(rastersp_state,irq_callback)
869855
870856   MCFG_CPU_ADD("dsp", TMS32031, 33330000)
871   MCFG_TMS3203X_CONFIG(tms_config)
872857   MCFG_CPU_PROGRAM_MAP(dsp_map)
858   MCFG_TMS3203X_MCBL(true)   // Boot-loader mode
873859
874860   /* Devices */
875861   MCFG_TIMER_DRIVER_ADD("tms_timer1", rastersp_state, tms_timer1)
trunk/src/mame/drivers/gaelco3d.c
r32682r32683
465465}
466466
467467
468static void iack_w(tms3203x_device &device, UINT8 state, offs_t addr)
468WRITE8_MEMBER(gaelco3d_state::tms_iack_w)
469469{
470470   if (LOG)
471      logerror("iack_w(%d) - %06X\n", state, addr);
472   device.set_input_line(0, CLEAR_LINE);
471      logerror("iack_w(%d) - %06X\n", data, offset);
472   m_tms->set_input_line(0, CLEAR_LINE);
473473}
474474
475475
r32682r32683
949949 *
950950 *************************************/
951951
952static const tms3203x_config tms_config =
953{
954   true,
955   0,
956   0,
957   iack_w
958};
959
960
961952static MACHINE_CONFIG_START( gaelco3d, gaelco3d_state )
962953
963954   /* basic machine hardware */
r32682r32683
966957   MCFG_CPU_VBLANK_INT_DRIVER("screen", gaelco3d_state,  vblank_gen)
967958
968959   MCFG_CPU_ADD("tms", TMS32031, 60000000)
969   MCFG_TMS3203X_CONFIG(tms_config)
970960   MCFG_CPU_PROGRAM_MAP(tms_map)
961   MCFG_TMS3203X_MCBL(true)
962   MCFG_TMS3203X_IACK_CB(WRITE8(gaelco3d_state, tms_iack_w))
971963
972964   MCFG_CPU_ADD("adsp", ADSP2115, 16000000)
973965   MCFG_ADSP21XX_SPORT_TX_CB(WRITE32(gaelco3d_state, adsp_tx_callback))
trunk/src/mame/audio/cage.c
r32682r32683
593593 *
594594 *************************************/
595595
596static const tms3203x_config cage_config =
597{
598   true
599};
600
601
602596static ADDRESS_MAP_START( cage_map, AS_PROGRAM, 32, atari_cage_device )
603597   AM_RANGE(0x000000, 0x00ffff) AM_RAM
604598   AM_RANGE(0x200000, 0x200000) AM_WRITENOP
r32682r32683
634628
635629   /* basic machine hardware */
636630   MCFG_CPU_ADD("cage", TMS32031, 33868800)
637   MCFG_TMS3203X_CONFIG(cage_config)
638631   MCFG_CPU_PROGRAM_MAP(cage_map)
632   MCFG_TMS3203X_MCBL(true)
639633
640634   MCFG_TIMER_DEVICE_ADD("cage_dma_timer", DEVICE_SELF, atari_cage_device, dma_timer_callback)
641635   MCFG_TIMER_DEVICE_ADD("cage_timer0", DEVICE_SELF, atari_cage_device, cage_timer_callback)
trunk/src/mame/includes/gaelco3d.h
r32682r32683
112112   DECLARE_WRITE16_MEMBER(analog_port_latch_w);
113113   DECLARE_READ32_MEMBER(tms_m68k_ram_r);
114114   DECLARE_WRITE32_MEMBER(tms_m68k_ram_w);
115   DECLARE_WRITE8_MEMBER(tms_iack_w);
115116   DECLARE_WRITE16_MEMBER(tms_reset_w);
116117   DECLARE_WRITE16_MEMBER(tms_irq_w);
117118   DECLARE_WRITE16_MEMBER(tms_control3_w);
trunk/src/mame/includes/midvunit.h
r32682r32683
124124   DECLARE_WRITE32_MEMBER(offroadc_serial_data_w);
125125   DECLARE_READ32_MEMBER(midvplus_misc_r);
126126   DECLARE_WRITE32_MEMBER(midvplus_misc_w);
127   DECLARE_WRITE8_MEMBER(midvplus_xf1_w);
127128   DECLARE_READ32_MEMBER(generic_speedup_r);
128129   DECLARE_DRIVER_INIT(crusnu40);
129130   DECLARE_DRIVER_INIT(crusnu21);
trunk/src/emu/cpu/tms32031/32031ops.c
r32682r32683
108108   }
109109   else if (dreg == TMR_IOF)
110110   {
111      if (m_xf0_w != NULL && IREG(TMR_IOF) & 0x002)
112         (*m_xf0_w)(*this, (IREG(TMR_IOF) >> 2) & 1);
113      if (m_xf1_w != NULL && IREG(TMR_IOF) & 0x020)
114         (*m_xf1_w)(*this, (IREG(TMR_IOF) >> 6) & 1);
111      if (IREG(TMR_IOF) & 0x002)
112         m_xf0_cb((offs_t)0, (IREG(TMR_IOF) >> 2) & 1);
113      if (IREG(TMR_IOF) & 0x020)
114         m_xf1_cb((offs_t)0, (IREG(TMR_IOF) >> 6) & 1);
115115   }
116116   else if (dreg == TMR_ST || dreg == TMR_IF || dreg == TMR_IE)
117117      check_irqs();
r32682r32683
31323132void tms3203x_device::iack_dir(UINT32 op)
31333133{
31343134   offs_t addr = DIRECT(op);
3135   if (m_iack_w)
3136      (*m_iack_w)(*this, ASSERT_LINE, addr);
3135   m_iack_cb(addr, ASSERT_LINE);
31373136   RMEM(addr);
3138   if (m_iack_w)
3139      (*m_iack_w)(*this, CLEAR_LINE, addr);
3137   m_iack_cb(addr, CLEAR_LINE);
31403138}
31413139
31423140void tms3203x_device::iack_ind(UINT32 op)
31433141{
31443142   offs_t addr = INDIRECT_D(op, op >> 8);
3145   if (m_iack_w)
3146      (*m_iack_w)(*this, ASSERT_LINE, addr);
3143   m_iack_cb(addr, ASSERT_LINE);
31473144   RMEM(addr);
3148   if (m_iack_w)
3149      (*m_iack_w)(*this, CLEAR_LINE, addr);
3145   m_iack_cb(addr, CLEAR_LINE);
31503146}
31513147
31523148/*-----------------------------------------------------*/
trunk/src/emu/cpu/tms32031/tms32031.c
r32682r32683
263263      m_is_idling(false),
264264      m_icount(0),
265265      m_program(0),
266      m_direct(0)
266      m_direct(0),
267      m_mcbl_mode(false),
268      m_xf0_cb(*this),
269      m_xf1_cb(*this),
270      m_iack_cb(*this)
267271{
268   m_mcbl_mode = false;
269   m_xf0_w = NULL;
270   m_xf1_w = NULL;
271   m_iack_w = NULL;
272
273272   // initialize remaining state
274273   memset(&m_r, 0, sizeof(m_r));
275274
r32682r32683
320319
321320
322321//-------------------------------------------------
323//  static_set_config - set the configuration
324//  structure
325//-------------------------------------------------
326
327void tms3203x_device::static_set_config(device_t &device, const tms3203x_config &config)
328{
329   tms3203x_device &tms = downcast<tms3203x_device &>(device);
330   static_cast<tms3203x_config &>(tms) = config;
331}
332
333
334//-------------------------------------------------
335322//  rom_region - return a pointer to the device's
336323//  internal ROM region
337324//-------------------------------------------------
r32682r32683
389376   m_program = &space(AS_PROGRAM);
390377   m_direct = &m_program->direct();
391378
379   // resolve devcb handlers
380   m_xf0_cb.resolve_safe();
381   m_xf1_cb.resolve_safe();
382   m_iack_cb.resolve_safe();
383
392384   // set up the internal boot loader ROM
393385   m_bootrom = reinterpret_cast<UINT32*>(memregion(shortname())->base());
394386   m_direct->set_direct_update(direct_update_delegate(FUNC(tms3203x_device::direct_handler), this));
trunk/src/emu/cpu/tms32031/tms32031.h
r32682r32683
9090//  INTERFACE CONFIGURATION MACROS
9191//**************************************************************************
9292
93#define MCFG_TMS3203X_CONFIG(_config) \
94   tms3203x_device::static_set_config(*device, _config);
93#define MCFG_TMS3203X_MCBL(_mode) \
94   tms3203x_device::set_mcbl_mode(*device, _mode);
9595
96#define MCFG_TMS3203X_XF0_CB(_devcb) \
97   devcb = &tms3203x_device::set_xf0_callback(*device, DEVCB_##_devcb);
9698
99#define MCFG_TMS3203X_XF1_CB(_devcb) \
100   devcb = &tms3203x_device::set_xf1_callback(*device, DEVCB_##_devcb);
101
102#define MCFG_TMS3203X_IACK_CB(_devcb) \
103   devcb = &tms3203x_device::set_iack_callback(*device, DEVCB_##_devcb);
104
105
97106//**************************************************************************
98107//  TYPE DEFINITIONS
99108//**************************************************************************
100109
101class tms3203x_device;
102
103// I/O callback types
104typedef void (*tms3203x_xf_func)(tms3203x_device &device, UINT8 val);
105typedef void (*tms3203x_iack_func)(tms3203x_device &device, UINT8 val, offs_t address);
106
107
108// ======================> tms3203x_config
109
110struct tms3203x_config
111{
112   bool                m_mcbl_mode;
113   tms3203x_xf_func    m_xf0_w;
114   tms3203x_xf_func    m_xf1_w;
115   tms3203x_iack_func  m_iack_w;
116};
117
118
119
120110// ======================> tms3203x_device
121111
122class tms3203x_device : public cpu_device,
123                  public tms3203x_config
112class tms3203x_device : public cpu_device
124113{
125114   struct tmsreg
126115   {
r32682r32683
159148
160149public:
161150   // inline configuration helpers
162   static void static_set_config(device_t &device, const tms3203x_config &config);
151   static void set_mcbl_mode(device_t &device, bool mode) { downcast<tms3203x_device &>(device).m_mcbl_mode = mode; }
152   template<class _Object> static devcb_base &set_xf0_callback(device_t &device, _Object object) { return downcast<tms3203x_device &>(device).m_xf0_cb.set_callback(object); }
153   template<class _Object> static devcb_base &set_xf1_callback(device_t &device, _Object object) { return downcast<tms3203x_device &>(device).m_xf1_cb.set_callback(object); }
154   template<class _Object> static devcb_base &set_iack_callback(device_t &device, _Object object) { return downcast<tms3203x_device &>(device).m_iack_cb.set_callback(object); }
163155
164156   // public interfaces
165157   static float fp_to_float(UINT32 floatdata);
r32682r32683
779771   direct_read_data *  m_direct;
780772   UINT32 *            m_bootrom;
781773
774   bool                m_mcbl_mode;
775   devcb_write8        m_xf0_cb;
776   devcb_write8        m_xf1_cb;
777   devcb_write8        m_iack_cb;
778   
782779   // tables
783780   static void (tms3203x_device::*const s_tms32031ops[])(UINT32 op);
784781   static UINT32 (tms3203x_device::*const s_indirect_d[0x20])(UINT32, UINT8);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team