Previous 199869 Revisions Next

r21072 Thursday 14th February, 2013 at 18:27:41 UTC by Curt Coder
(MESS) Cleanups. (nw)
[src/emu/sound]mos6581.c sid.c sid.h
[src/mame/drivers]cdi.c
[src/mess/drivers]c128.c c64.c cbm2.c vic10.c vic20.c
[src/mess/includes]c128.h c64.h vic20.h
[src/mess/machine]c1551.c c1551.h c1571.c c1581.c c64_4dxh.c c64_4dxh.h c64_4ksa.c c64_4ksa.h c64_4tba.c c64_4tba.h c64_cpm.c c64_easyflash.c c64_easyflash.h c64_fcc.c c64_fcc.h c64_final.c c64_final.h c64_final3.c c64_final3.h c64_ieee488.c c64_ieee488.h c64_mach5.c c64_mach5.h c64_magic_formel.c c64_magic_voice.c c64_magic_voice.h c64_sfx_sound_expander.c c64_sfx_sound_expander.h c64_stardos.c c64_stardos.h c64_supercpu.c c64_supercpu.h c64_tdos.c c64_tdos.h c64_warp_speed.c c64_warp_speed.h c64exp.c c64exp.h c64user.c c64user.h plus4exp.c plus4exp.h plus4user.c plus4user.h vic1010.c vic10exp.c vic10exp.h vic20exp.c vic20exp.h

trunk/src/mame/drivers/cdi.c
r21071r21072
8585   switch((FPTR)param)
8686   {
8787      case 0x39:
88         if(m_input1->read() & 0x01) send = true;
88         if(m_input1 && m_input1->read() & 0x01) send = true;
8989         break;
9090      case 0x37:
91         if(m_input1->read() & 0x02) send = true;
91         if(m_input1 && m_input1->read() & 0x02) send = true;
9292         break;
9393      case 0x31:
94         if(m_input1->read() & 0x04) send = true;
94         if(m_input1 && m_input1->read() & 0x04) send = true;
9595         break;
9696      case 0x32:
97         if(m_input1->read() & 0x08) send = true;
97         if(m_input1 && m_input1->read() & 0x08) send = true;
9898         break;
9999      case 0x33:
100         if(m_input1->read() & 0x10) send = true;
100         if(m_input1 && m_input1->read() & 0x10) send = true;
101101         break;
102102
103103      case 0x30:
104         if(m_input2->read() & 0x01) send = true;
104         if(m_input2 && m_input2->read() & 0x01) send = true;
105105         break;
106106      case 0x38:
107         if(m_input2->read() & 0x02) send = true;
107         if(m_input2 && m_input2->read() & 0x02) send = true;
108108         break;
109109      case 0x34:
110         if(m_input2->read() & 0x04) send = true;
110         if(m_input2 && m_input2->read() & 0x04) send = true;
111111         break;
112112      case 0x35:
113         if(m_input2->read() & 0x08) send = true;
113         if(m_input2 && m_input2->read() & 0x08) send = true;
114114         break;
115115      case 0x36:
116         if(m_input2->read() & 0x10) send = true;
116         if(m_input2 && m_input2->read() & 0x10) send = true;
117117         break;
118118   }
119119
trunk/src/emu/sound/sid.c
r21071r21072
335335   case 0x1f:
336336   data=0xff;
337337   break;
338   case 0x19:                         /* paddle 1 */
339   if (!This->in_potx_func.isnull())
340      data = This->in_potx_func(offset);
341   else
342      data=0;
343   break;
344   case 0x1a:                         /* paddle 2 */
345   if (!This->in_poty_func.isnull())
346      data = This->in_poty_func(offset);
347   else
348      data=0;
349   break;
350338   case 0x1b:
351339   This->mixer_channel->update();
352340   data = This->optr3.output;
trunk/src/emu/sound/sid.h
r21071r21072
1616   device_t *device;
1717   sound_stream *mixer_channel; // mame stream/ mixer channel
1818
19   devcb_resolved_read8 in_potx_func;
20   devcb_resolved_read8 in_poty_func;
21
2219   int type;
2320   UINT32 clock;
2421
trunk/src/emu/sound/mos6581.c
r21071r21072
123123
124124READ8_MEMBER( mos6581_device::read )
125125{
126   return sid6581_port_r(machine(), m_token, offset);
126   UINT8 data = 0;
127
128   switch (offset & 0x1f)
129   {
130   case 0x19:
131      data = m_read_potx(0);
132      break;
133
134   case 0x1a:
135      data = m_read_poty(0);
136      break;
137
138   default:
139      data = sid6581_port_r(machine(), m_token, offset);
140      break;
141   }
142
143   return data;
127144}
128145
129146
trunk/src/mess/machine/c64_fcc.c
r21071r21072
9595//  INPUT_PORTS( c64_fcc )
9696//-------------------------------------------------
9797
98INPUT_CHANGED_MEMBER( c64_final_chesscard_device::reset )
99{
100   if (!newval)
101   {
102      device_reset();
103   }
104
105   m_slot->reset_w(newval ? CLEAR_LINE : ASSERT_LINE);
106}
107
10898static INPUT_PORTS_START( c64_fcc )
10999   PORT_START("RESET")
110   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11) PORT_CHANGED_MEMBER(DEVICE_SELF, c64_final_chesscard_device, reset, 0)
100   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_expansion_slot_device, reset_w)
111101INPUT_PORTS_END
112102
113103
trunk/src/mess/machine/c64_fcc.h
r21071r21072
3737   virtual machine_config_constructor device_mconfig_additions() const;
3838   virtual ioport_constructor device_input_ports() const;
3939
40   DECLARE_INPUT_CHANGED_MEMBER( reset );
4140   DECLARE_READ8_MEMBER( nvram_r );
4241   DECLARE_WRITE8_MEMBER( nvram_w );
4342
trunk/src/mess/machine/c64_sfx_sound_expander.c
r21071r21072
3030//  ym3526_interface ym3526_config
3131//-------------------------------------------------
3232
33static const ym3526_interface ym3526_config =
33WRITE_LINE_MEMBER( c64_sfx_sound_expander_cartridge_device::opl_irq_w )
3434{
35   DEVCB_LINE_MEMBER(c64_sfx_sound_expander_cartridge_device, irq_w)
36};
37
38
39//-------------------------------------------------
40//  C64_EXPANSION_INTERFACE( expansion_intf )
41//-------------------------------------------------
42
43READ8_MEMBER( c64_sfx_sound_expander_cartridge_device::dma_cd_r )
44{
45   return m_slot->dma_cd_r(offset);
46}
47
48WRITE8_MEMBER( c64_sfx_sound_expander_cartridge_device::dma_cd_w )
49{
50   m_slot->dma_cd_w(offset, data);
51}
52
53WRITE_LINE_MEMBER( c64_sfx_sound_expander_cartridge_device::irq_w )
54{
5535   m_slot->irq_w(state);
5636}
5737
58WRITE_LINE_MEMBER( c64_sfx_sound_expander_cartridge_device::nmi_w )
38static const ym3526_interface ym3526_config =
5939{
60   m_slot->nmi_w(state);
61}
62
63WRITE_LINE_MEMBER( c64_sfx_sound_expander_cartridge_device::dma_w )
64{
65   m_slot->dma_w(state);
66}
67
68WRITE_LINE_MEMBER( c64_sfx_sound_expander_cartridge_device::reset_w )
69{
70   m_slot->reset_w(state);
71}
72
73static C64_EXPANSION_INTERFACE( expansion_intf )
74{
75   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_sfx_sound_expander_cartridge_device, dma_cd_r),
76   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_sfx_sound_expander_cartridge_device, dma_cd_w),
77   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_sfx_sound_expander_cartridge_device, irq_w),
78   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_sfx_sound_expander_cartridge_device, nmi_w),
79   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_sfx_sound_expander_cartridge_device, dma_w),
80   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_sfx_sound_expander_cartridge_device, reset_w)
40   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_sfx_sound_expander_cartridge_device, opl_irq_w)
8141};
8242
8343
r21071r21072
9151   MCFG_SOUND_CONFIG(ym3526_config)
9252   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
9353
94   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, 0, expansion_intf, c64_expansion_cards, NULL, NULL)
54   MCFG_C64_PASSTHRU_EXPANSION_SLOT_ADD()
9555MACHINE_CONFIG_END
9656
9757
trunk/src/mess/machine/c64_sfx_sound_expander.h
r21071r21072
3636   virtual machine_config_constructor device_mconfig_additions() const;
3737   virtual ioport_constructor device_input_ports() const;
3838
39   // not really public
40   DECLARE_READ8_MEMBER( dma_cd_r );
41   DECLARE_WRITE8_MEMBER( dma_cd_w );
42   DECLARE_WRITE_LINE_MEMBER( irq_w );
43   DECLARE_WRITE_LINE_MEMBER( nmi_w );
44   DECLARE_WRITE_LINE_MEMBER( dma_w );
45   DECLARE_WRITE_LINE_MEMBER( reset_w );
39   DECLARE_WRITE_LINE_MEMBER( opl_irq_w );
4640
4741protected:
4842   // device-level overrides
trunk/src/mess/machine/c64_stardos.c
r21071r21072
5151//  INPUT_PORTS( c64_stardos )
5252//-------------------------------------------------
5353
54INPUT_CHANGED_MEMBER( c64_stardos_cartridge_device::reset )
55{
56   if (!newval)
57   {
58      device_reset();
59   }
60
61   m_slot->reset_w(newval ? CLEAR_LINE : ASSERT_LINE);
62}
63
6454static INPUT_PORTS_START( c64_stardos )
6555   PORT_START("RESET")
66   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11) PORT_CHANGED_MEMBER(DEVICE_SELF, c64_stardos_cartridge_device, reset, 0)
56   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_expansion_slot_device, reset_w)
6757INPUT_PORTS_END
6858
6959
trunk/src/mess/machine/c64_stardos.h
r21071r21072
3535   // optional information overrides
3636   virtual ioport_constructor device_input_ports() const;
3737
38   DECLARE_INPUT_CHANGED_MEMBER( reset );
39
4038protected:
4139   // device-level overrides
4240   virtual void device_config_complete() { m_shortname = "c64_stardos"; }
trunk/src/mess/machine/c64_4tba.c
r21071r21072
2020const device_type C64_4TBA = &device_creator<c64_4tba_device>;
2121
2222
23INPUT_CHANGED_MEMBER( c64_4tba_device::fire3 )
24{
25   m_slot->sp2_w(newval);
26}
23//-------------------------------------------------
24//  INPUT_PORTS( c64_4tba )
25//-------------------------------------------------
2726
28static INPUT_PORTS_START( c64_4player )
27static INPUT_PORTS_START( c64_4tba )
2928   PORT_START("SP2")
30   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_CHANGED_MEMBER(DEVICE_SELF, c64_4tba_device, fire3, 0)
29   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_user_port_device, sp2_w)
3130
3231   PORT_START("PB")
3332   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
r21071r21072
5049
5150ioport_constructor c64_4tba_device::device_input_ports() const
5251{
53   return INPUT_PORTS_NAME( c64_4player );
52   return INPUT_PORTS_NAME( c64_4tba );
5453}
5554
5655
trunk/src/mess/machine/c64_4tba.h
r21071r21072
3434   // optional information overrides
3535   virtual ioport_constructor device_input_ports() const;
3636
37   DECLARE_INPUT_CHANGED_MEMBER( fire3 );
38
3937protected:
4038   // device-level overrides
4139   virtual void device_config_complete() { m_shortname = "c64_4tba"; }
trunk/src/mess/machine/c1551.c
r21071r21072
372372
373373READ8_MEMBER( c1551_device::exp_dma_r )
374374{
375   return m_slot->dma_cd_r(offset);
375   return m_slot->dma_cd_r(space, offset);
376376}
377377
378378WRITE8_MEMBER( c1551_device::exp_dma_w )
379379{
380   m_slot->dma_cd_w(offset, data);
380   m_slot->dma_cd_w(space, offset, data);
381381}
382382
383383WRITE_LINE_MEMBER( c1551_device::exp_irq_w )
r21071r21072
513513   m_maincpu->reset();
514514
515515   m_tpi0->reset();
516   
517   m_exp->reset();
516518
517519   // initialize gate array
518520   m_ga->test_w(1);
r21071r21072
597599
598600   m_exp->cd_w(space, offset, data, ba, cs0, c1l, c2l, cs1, c1h, c2h);
599601}
600
601
602//-------------------------------------------------
603//  plus4_breset_w - buffered reset write
604//-------------------------------------------------
605
606void c1551_device::plus4_breset_w(int state)
607{
608   if (state == ASSERT_LINE)
609   {
610      device_reset();
611   }
612
613   m_exp->breset_w(state);
614}
trunk/src/mess/machine/c1551.h
r21071r21072
7878   // device_plus4_expansion_card_interface overrides
7979   virtual UINT8 plus4_cd_r(address_space &space, offs_t offset, UINT8 data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h);
8080   virtual void plus4_cd_w(address_space &space, offs_t offset, UINT8 data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h);
81   virtual void plus4_breset_w(int state);
8281
8382private:
8483   bool tpi1_selected(offs_t offset);
trunk/src/mess/machine/c64user.c
r21071r21072
6060
6161
6262//-------------------------------------------------
63//  c64_user_port_device - destructor
64//-------------------------------------------------
65
66c64_user_port_device::~c64_user_port_device()
67{
68}
69
70
71//-------------------------------------------------
7263//  device_config_complete - perform any
7364//  operations now that the configuration is
7465//  complete
r21071r21072
10293
10394void c64_user_port_device::device_start()
10495{
105   m_cart = dynamic_cast<device_c64_user_port_interface *>(get_card_device());
96   m_card = dynamic_cast<device_c64_user_port_interface *>(get_card_device());
10697
10798   // resolve callbacks
10899   m_out_cnt1_func.resolve(m_out_cnt1_cb, *this);
r21071r21072
120111
121112void c64_user_port_device::device_reset()
122113{
123   port_reset_w(ASSERT_LINE);
124   port_reset_w(CLEAR_LINE);
114   if (get_card_device())
115   {
116      get_card_device()->reset();
117   }
125118}
126119
127120
128READ8_MEMBER( c64_user_port_device::pb_r ) { UINT8 data = 0xff; if (m_cart != NULL) data = m_cart->c64_pb_r(space, offset); return data; }
129WRITE8_MEMBER( c64_user_port_device::pb_w ) { if (m_cart != NULL) m_cart->c64_pb_w(space, offset, data); }
130READ_LINE_MEMBER( c64_user_port_device::pa2_r ) { int state = 1; if (m_cart != NULL) state = m_cart->c64_pa2_r(); return state; }
131WRITE_LINE_MEMBER( c64_user_port_device::pa2_w ) { if (m_cart != NULL) m_cart->c64_pa2_w(state); }
132WRITE_LINE_MEMBER( c64_user_port_device::pc2_w ) { if (m_cart != NULL) m_cart->c64_pc2_w(state); }
133WRITE_LINE_MEMBER( c64_user_port_device::atn_w ) { if (m_cart != NULL) m_cart->c64_atn_w(state); }
134WRITE_LINE_MEMBER( c64_user_port_device::port_reset_w ) { if (m_cart != NULL) m_cart->c64_reset_w(state); }
135
136WRITE_LINE_MEMBER( c64_user_port_device::cnt1_w ) { m_out_cnt1_func(state); }
137WRITE_LINE_MEMBER( c64_user_port_device::sp1_w ) { m_out_sp1_func(state); }
138WRITE_LINE_MEMBER( c64_user_port_device::cnt2_w ) { m_out_cnt2_func(state); }
139WRITE_LINE_MEMBER( c64_user_port_device::sp2_w ) { m_out_sp2_func(state); }
140WRITE_LINE_MEMBER( c64_user_port_device::flag2_w ) { m_out_flag2_func(state); }
141WRITE_LINE_MEMBER( c64_user_port_device::reset_w ) { m_out_reset_func(state); }
121READ8_MEMBER( c64_user_port_device::pb_r ) { UINT8 data = 0xff; if (m_card != NULL) data = m_card->c64_pb_r(space, offset); return data; }
122WRITE8_MEMBER( c64_user_port_device::pb_w ) { if (m_card != NULL) m_card->c64_pb_w(space, offset, data); }
123READ_LINE_MEMBER( c64_user_port_device::pa2_r ) { int state = 1; if (m_card != NULL) state = m_card->c64_pa2_r(); return state; }
124WRITE_LINE_MEMBER( c64_user_port_device::pa2_w ) { if (m_card != NULL) m_card->c64_pa2_w(state); }
125WRITE_LINE_MEMBER( c64_user_port_device::pc2_w ) { if (m_card != NULL) m_card->c64_pc2_w(state); }
126WRITE_LINE_MEMBER( c64_user_port_device::atn_w ) { if (m_card != NULL) m_card->c64_atn_w(state); }
trunk/src/mess/machine/c64user.h
r21071r21072
8282public:
8383   // construction/destruction
8484   c64_user_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
85   virtual ~c64_user_port_device();
8685
8786   // computer interface
8887   DECLARE_READ8_MEMBER( pb_r );
r21071r21072
9089   DECLARE_READ_LINE_MEMBER( pa2_r );
9190   DECLARE_WRITE_LINE_MEMBER( pa2_w );
9291   DECLARE_WRITE_LINE_MEMBER( pc2_w );
93   DECLARE_WRITE_LINE_MEMBER( port_reset_w );
92   DECLARE_WRITE_LINE_MEMBER( atn_w );
9493
9594   // cartridge interface
96   DECLARE_WRITE_LINE_MEMBER( sp1_w );
97   DECLARE_WRITE_LINE_MEMBER( cnt1_w );
98   DECLARE_WRITE_LINE_MEMBER( sp2_w );
99   DECLARE_WRITE_LINE_MEMBER( cnt2_w );
100   DECLARE_WRITE_LINE_MEMBER( flag2_w );
101   DECLARE_WRITE_LINE_MEMBER( atn_w );
102   DECLARE_WRITE_LINE_MEMBER( reset_w );
95   DECLARE_WRITE_LINE_MEMBER( cnt1_w ) { m_out_cnt1_func(state); }
96   DECLARE_WRITE_LINE_MEMBER( sp1_w ) { m_out_sp1_func(state); }
97   DECLARE_WRITE_LINE_MEMBER( cnt2_w ) { m_out_cnt2_func(state); }
98   DECLARE_WRITE_LINE_MEMBER( sp2_w ) { m_out_sp2_func(state); }
99   DECLARE_WRITE_LINE_MEMBER( flag2_w ) { m_out_flag2_func(state); }
100   DECLARE_WRITE_LINE_MEMBER( reset_w ) { m_out_reset_func(state); }
103101
104102protected:
105103   // device-level overrides
r21071r21072
114112   devcb_resolved_write_line   m_out_flag2_func;
115113   devcb_resolved_write_line   m_out_reset_func;
116114
117   device_c64_user_port_interface *m_cart;
115   device_c64_user_port_interface *m_card;
118116};
119117
120118
r21071r21072
140138   virtual void c64_sp2_w(int state) { };
141139   virtual void c64_atn_w(int state) { };
142140
143   // reset
144   virtual void c64_reset_w(int state) { };
145
146141protected:
147142   c64_user_port_device *m_slot;
148143};
trunk/src/mess/machine/c64exp.c
r21071r21072
1212
1313
1414//**************************************************************************
15//  MACROS/CONSTANTS
16//**************************************************************************
17
18#define LOG 0
19
20
21
22//**************************************************************************
2315//  DEVICE DEFINITIONS
2416//**************************************************************************
2517
r21071r21072
142134c64_expansion_slot_device::c64_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
143135      device_t(mconfig, C64_EXPANSION_SLOT, "C64 expansion port", tag, owner, clock),
144136      device_slot_interface(mconfig, *this),
145      device_image_interface(mconfig, *this)
137      device_image_interface(mconfig, *this),
138      m_read_dma_cd(*this),
139      m_write_dma_cd(*this),
140      m_write_irq(*this),
141      m_write_nmi(*this),
142      m_write_dma(*this),
143      m_write_reset(*this)
146144{
147145}
148146
149147
150148//-------------------------------------------------
151//  c64_expansion_slot_device - destructor
152//-------------------------------------------------
153
154c64_expansion_slot_device::~c64_expansion_slot_device()
155{
156}
157
158
159//-------------------------------------------------
160//  device_config_complete - perform any
161//  operations now that the configuration is
162//  complete
163//-------------------------------------------------
164
165void c64_expansion_slot_device::device_config_complete()
166{
167   // inherit a copy of the static data
168   const c64_expansion_slot_interface *intf = reinterpret_cast<const c64_expansion_slot_interface *>(static_config());
169   if (intf != NULL)
170   {
171      *static_cast<c64_expansion_slot_interface *>(this) = *intf;
172   }
173
174   // or initialize to defaults if none provided
175   else
176   {
177      memset(&m_in_dma_cd_cb, 0, sizeof(m_in_dma_cd_cb));
178      memset(&m_out_dma_cd_cb, 0, sizeof(m_out_dma_cd_cb));
179      memset(&m_out_irq_cb, 0, sizeof(m_out_irq_cb));
180      memset(&m_out_nmi_cb, 0, sizeof(m_out_nmi_cb));
181      memset(&m_out_dma_cb, 0, sizeof(m_out_dma_cb));
182      memset(&m_out_reset_cb, 0, sizeof(m_out_reset_cb));
183   }
184
185   // set brief and instance name
186   update_names();
187}
188
189
190//-------------------------------------------------
191149//  device_start - device-specific startup
192150//-------------------------------------------------
193151
194152void c64_expansion_slot_device::device_start()
195153{
196   m_cart = dynamic_cast<device_c64_expansion_card_interface *>(get_card_device());
154   m_card = dynamic_cast<device_c64_expansion_card_interface *>(get_card_device());
197155
198156   // resolve callbacks
199   m_in_dma_cd_func.resolve(m_in_dma_cd_cb, *this);
200   m_out_dma_cd_func.resolve(m_out_dma_cd_cb, *this);
201   m_out_irq_func.resolve(m_out_irq_cb, *this);
202   m_out_nmi_func.resolve(m_out_nmi_cb, *this);
203   m_out_dma_func.resolve(m_out_dma_cb, *this);
204   m_out_reset_func.resolve(m_out_reset_cb, *this);
157   m_read_dma_cd.resolve_safe(0);
158   m_write_dma_cd.resolve_safe();
159   m_write_irq.resolve_safe();
160   m_write_nmi.resolve_safe();
161   m_write_dma.resolve_safe();
162   m_write_reset.resolve_safe();
205163
206164   // inherit bus clock
207165   if (clock() == 0)
r21071r21072
219177
220178void c64_expansion_slot_device::device_reset()
221179{
222   port_reset_w(ASSERT_LINE);
223   port_reset_w(CLEAR_LINE);
180   if (get_card_device())
181   {
182      get_card_device()->reset();
183   }
224184}
225185
226186
r21071r21072
230190
231191bool c64_expansion_slot_device::call_load()
232192{
233   if (m_cart)
193   if (m_card)
234194   {
235195      size_t size = 0;
236196
r21071r21072
240200
241201         if (!mame_stricmp(filetype(), "80"))
242202         {
243            fread(m_cart->c64_roml_pointer(machine(), size), size);
244            m_cart->m_exrom = (0);
203            fread(m_card->c64_roml_pointer(machine(), size), size);
204            m_card->m_exrom = (0);
245205
246206            if (size == 0x4000)
247207            {
248               m_cart->m_game = 0;
208               m_card->m_game = 0;
249209            }
250210         }
251211         else if (!mame_stricmp(filetype(), "a0"))
252212         {
253            fread(m_cart->c64_romh_pointer(machine(), 0x2000), 0x2000);
213            fread(m_card->c64_romh_pointer(machine(), 0x2000), 0x2000);
254214
255            m_cart->m_exrom = 0;
256            m_cart->m_game = 0;
215            m_card->m_exrom = 0;
216            m_card->m_game = 0;
257217         }
258218         else if (!mame_stricmp(filetype(), "e0"))
259219         {
260            fread(m_cart->c64_romh_pointer(machine(), 0x2000), 0x2000);
220            fread(m_card->c64_romh_pointer(machine(), 0x2000), 0x2000);
261221
262            m_cart->m_game = 0;
222            m_card->m_game = 0;
263223         }
264224         else if (!mame_stricmp(filetype(), "crt"))
265225         {
r21071r21072
273233               UINT8 *roml = NULL;
274234               UINT8 *romh = NULL;
275235
276               if (roml_size) roml = m_cart->c64_roml_pointer(machine(), roml_size);
277               if (romh_size) romh = m_cart->c64_romh_pointer(machine(), romh_size);
236               if (roml_size) roml = m_card->c64_roml_pointer(machine(), roml_size);
237               if (romh_size) romh = m_card->c64_romh_pointer(machine(), romh_size);
278238
279239               cbm_crt_read_data(m_file, roml, romh);
280240            }
281241
282            m_cart->m_exrom = exrom;
283            m_cart->m_game = game;
242            m_card->m_exrom = exrom;
243            m_card->m_game = game;
284244         }
285245      }
286246      else
r21071r21072
290250         if (size)
291251         {
292252            // Ultimax (VIC-10) cartridge
293            memcpy(m_cart->c64_romh_pointer(machine(), size), get_software_region("uprom"), size);
253            memcpy(m_card->c64_romh_pointer(machine(), size), get_software_region("uprom"), size);
294254
295255            size = get_software_region_length("lorom");
296            if (size) memcpy(m_cart->c64_roml_pointer(machine(), size), get_software_region("lorom"), size);
256            if (size) memcpy(m_card->c64_roml_pointer(machine(), size), get_software_region("lorom"), size);
297257
298            m_cart->m_exrom = 1;
299            m_cart->m_game = 0;
258            m_card->m_exrom = 1;
259            m_card->m_game = 0;
300260         }
301261         else
302262         {
303263            // Commodore 64/128 cartridge
304264            size = get_software_region_length("roml");
305            if (size) memcpy(m_cart->c64_roml_pointer(machine(), size), get_software_region("roml"), size);
265            if (size) memcpy(m_card->c64_roml_pointer(machine(), size), get_software_region("roml"), size);
306266
307267            size = get_software_region_length("romh");
308            if (size) memcpy(m_cart->c64_romh_pointer(machine(), size), get_software_region("romh"), size);
268            if (size) memcpy(m_card->c64_romh_pointer(machine(), size), get_software_region("romh"), size);
309269
310270            size = get_software_region_length("ram");
311            if (size) memset(m_cart->c64_ram_pointer(machine(), size), 0, size);
271            if (size) memset(m_card->c64_ram_pointer(machine(), size), 0, size);
312272
313273            size = get_software_region_length("nvram");
314            if (size) memset(m_cart->c64_nvram_pointer(machine(), size), 0, size);
274            if (size) memset(m_card->c64_nvram_pointer(machine(), size), 0, size);
315275
316            if (get_feature("exrom") != NULL) m_cart->m_exrom = atol(get_feature("exrom"));
317            if (get_feature("game") != NULL) m_cart->m_game = atol(get_feature("game"));
276            if (get_feature("exrom") != NULL) m_card->m_exrom = atol(get_feature("exrom"));
277            if (get_feature("game") != NULL) m_card->m_game = atol(get_feature("game"));
318278         }
319279      }
320280   }
r21071r21072
361321
362322UINT8 c64_expansion_slot_device::cd_r(address_space &space, offs_t offset, UINT8 data, int sphi2, int ba, int roml, int romh, int io1, int io2)
363323{
364   if (m_cart != NULL)
324   if (m_card != NULL)
365325   {
366      data = m_cart->c64_cd_r(space, offset, data, sphi2, ba, roml, romh, io1, io2);
326      data = m_card->c64_cd_r(space, offset, data, sphi2, ba, roml, romh, io1, io2);
367327   }
368328
369329   return data;
r21071r21072
376336
377337void c64_expansion_slot_device::cd_w(address_space &space, offs_t offset, UINT8 data, int sphi2, int ba, int roml, int romh, int io1, int io2)
378338{
379   if (m_cart != NULL)
339   if (m_card != NULL)
380340   {
381      m_cart->c64_cd_w(space, offset, data, sphi2, ba, roml, romh, io1, io2);
341      m_card->c64_cd_w(space, offset, data, sphi2, ba, roml, romh, io1, io2);
382342   }
383343}
384344
r21071r21072
391351{
392352   int state = 1;
393353
394   if (m_cart != NULL)
354   if (m_card != NULL)
395355   {
396      state = m_cart->c64_game_r(offset, sphi2, ba, rw, hiram);
356      state = m_card->c64_game_r(offset, sphi2, ba, rw, hiram);
397357   }
398358
399359   return state;
r21071r21072
408368{
409369   int state = 1;
410370
411   if (m_cart != NULL)
371   if (m_card != NULL)
412372   {
413      state = m_cart->c64_exrom_r(offset, sphi2, ba, rw, hiram);
373      state = m_card->c64_exrom_r(offset, sphi2, ba, rw, hiram);
414374   }
415375
416376   return state;
417377}
418
419
420WRITE_LINE_MEMBER( c64_expansion_slot_device::port_reset_w ) { if (m_cart != NULL) m_cart->c64_reset_w(state); }
421
422
423//-------------------------------------------------
424//  dma_cd_r - DMA read
425//-------------------------------------------------
426
427UINT8 c64_expansion_slot_device::dma_cd_r(offs_t offset)
428{
429   return m_in_dma_cd_func(offset);
430}
431
432
433//-------------------------------------------------
434//  dma_cd_w - DMA write
435//-------------------------------------------------
436
437void c64_expansion_slot_device::dma_cd_w(offs_t offset, UINT8 data)
438{
439   m_out_dma_cd_func(offset, data);
440}
441
442
443WRITE_LINE_MEMBER( c64_expansion_slot_device::irq_w ) { m_out_irq_func(state); }
444WRITE_LINE_MEMBER( c64_expansion_slot_device::nmi_w ) { m_out_nmi_func(state); }
445WRITE_LINE_MEMBER( c64_expansion_slot_device::dma_w ) { m_out_dma_func(state); }
446WRITE_LINE_MEMBER( c64_expansion_slot_device::reset_w ) { m_out_reset_func(state); }
447
448
449//-------------------------------------------------
450//  phi2 - system clock frequency
451//-------------------------------------------------
452
453int c64_expansion_slot_device::phi2()
454{
455   return clock();
456}
457
458
459//-------------------------------------------------
460//  dotclock - dot clock frequency
461//-------------------------------------------------
462
463int c64_expansion_slot_device::dotclock()
464{
465   return phi2() * 8;
466}
trunk/src/mess/machine/c64exp.h
r21071r21072
5454//  INTERFACE CONFIGURATION MACROS
5555//**************************************************************************
5656
57#define C64_EXPANSION_INTERFACE(_name) \
58   const c64_expansion_slot_interface (_name) =
59
60
61#define MCFG_C64_EXPANSION_SLOT_ADD(_tag, _clock, _config, _slot_intf, _def_slot, _def_inp) \
57#define MCFG_C64_EXPANSION_SLOT_ADD(_tag, _clock, _slot_intf, _def_slot, _def_inp) \
6258   MCFG_DEVICE_ADD(_tag, C64_EXPANSION_SLOT, _clock) \
63   MCFG_DEVICE_CONFIG(_config) \
6459   MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _def_inp, false)
6560
61#define MCFG_C64_PASSTHRU_EXPANSION_SLOT_ADD() \
62   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, 0, c64_expansion_cards, NULL, NULL) \
63   MCFG_C64_EXPANSION_SLOT_IRQ_CALLBACKS(DEVWRITELINE(DEVICE_SELF_OWNER, c64_expansion_slot_device, irq_w), DEVWRITELINE(DEVICE_SELF_OWNER, c64_expansion_slot_device, nmi_w), DEVWRITELINE(DEVICE_SELF_OWNER, c64_expansion_slot_device, reset_w)) \
64   MCFG_C64_EXPANSION_SLOT_DMA_CALLBACKS(DEVREAD8(DEVICE_SELF_OWNER, c64_expansion_slot_device, dma_cd_r), DEVWRITE8(DEVICE_SELF_OWNER, c64_expansion_slot_device, dma_cd_w), DEVWRITELINE(DEVICE_SELF_OWNER, c64_expansion_slot_device, dma_w))
6665
6766
67#define MCFG_C64_EXPANSION_SLOT_IRQ_CALLBACKS(_irq, _nmi, _reset) \
68   downcast<c64_expansion_slot_device *>(device)->set_irq_callbacks(DEVCB2_##_irq, DEVCB2_##_nmi, DEVCB2_##_reset);
69
70#define MCFG_C64_EXPANSION_SLOT_DMA_CALLBACKS(_read, _write, _dma) \
71   downcast<c64_expansion_slot_device *>(device)->set_dma_callbacks(DEVCB2_##_read, DEVCB2_##_write, DEVCB2_##_dma);
72
73
74
6875//**************************************************************************
6976//  TYPE DEFINITIONS
7077//**************************************************************************
7178
72// ======================> c64_expansion_slot_interface
73
74struct c64_expansion_slot_interface
75{
76   devcb_read8         m_in_dma_cd_cb;
77   devcb_write8        m_out_dma_cd_cb;
78   devcb_write_line    m_out_irq_cb;
79   devcb_write_line    m_out_nmi_cb;
80   devcb_write_line    m_out_dma_cb;
81   devcb_write_line    m_out_reset_cb;
82};
83
84
8579// ======================> c64_expansion_slot_device
8680
8781class device_c64_expansion_card_interface;
8882
8983class c64_expansion_slot_device : public device_t,
90                           public c64_expansion_slot_interface,
9184                           public device_slot_interface,
9285                           public device_image_interface
9386{
9487public:
9588   // construction/destruction
9689   c64_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
97   virtual ~c64_expansion_slot_device();
9890
91   template<class _irq, class _nmi, class _reset> void set_irq_callbacks(_irq irq, _nmi nmi, _reset reset) {
92      m_write_irq.set_callback(irq);
93      m_write_dma_cd.set_callback(nmi);
94      m_write_reset.set_callback(reset);
95   }
96
97   template<class _read, class _write, class _dma> void set_dma_callbacks(_read read, _write write, _dma dma) {
98      m_read_dma_cd.set_callback(read);
99      m_write_dma_cd.set_callback(write);
100      m_write_dma.set_callback(dma);
101   }
102
99103   // computer interface
100104   UINT8 cd_r(address_space &space, offs_t offset, UINT8 data, int sphi2, int ba, int roml, int romh, int io1, int io2);
101105   void cd_w(address_space &space, offs_t offset, UINT8 data, int sphi2, int ba, int roml, int romh, int io1, int io2);
102106   int game_r(offs_t offset, int sphi2, int ba, int rw, int hiram);
103107   int exrom_r(offs_t offset, int sphi2, int ba, int rw, int hiram);
104   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
105   DECLARE_WRITE_LINE_MEMBER( port_reset_w );
106108
107109   // cartridge interface
108   UINT8 dma_cd_r(offs_t offset);
109   void dma_cd_w(offs_t offset, UINT8 data);
110   DECLARE_WRITE_LINE_MEMBER( irq_w );
111   DECLARE_WRITE_LINE_MEMBER( nmi_w );
112   DECLARE_WRITE_LINE_MEMBER( dma_w );
113   DECLARE_WRITE_LINE_MEMBER( reset_w );
114   int phi2();
115   int dotclock();
110   DECLARE_READ8_MEMBER( dma_cd_r ) { return m_read_dma_cd(offset); }
111   DECLARE_WRITE8_MEMBER( dma_cd_w ) { m_write_dma_cd(offset, data); }
112   DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_write_irq(state); }
113   DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_write_nmi(state); }
114   DECLARE_WRITE_LINE_MEMBER( dma_w ) { m_write_dma(state); }
115   DECLARE_WRITE_LINE_MEMBER( reset_w ) { m_write_reset(state); }
116   int phi2() { return clock(); }
117   int dotclock() { return phi2() * 8; }
116118
117119protected:
118120   // device-level overrides
119   virtual void device_config_complete();
121   virtual void device_config_complete() { update_names(); }
120122   virtual void device_start();
121123   virtual void device_reset();
122124
r21071r21072
138140   // slot interface overrides
139141   virtual const char * get_default_card_software(const machine_config &config, emu_options &options);
140142
141   devcb_resolved_read8        m_in_dma_cd_func;
142   devcb_resolved_write8       m_out_dma_cd_func;
143   devcb_resolved_write_line   m_out_irq_func;
144   devcb_resolved_write_line   m_out_nmi_func;
145   devcb_resolved_write_line   m_out_dma_func;
146   devcb_resolved_write_line   m_out_reset_func;
143   devcb2_read8        m_read_dma_cd;
144   devcb2_write8       m_write_dma_cd;
145   devcb2_write_line   m_write_irq;
146   devcb2_write_line   m_write_nmi;
147   devcb2_write_line   m_write_dma;
148   devcb2_write_line   m_write_reset;
147149
148   device_c64_expansion_card_interface *m_cart;
150   device_c64_expansion_card_interface *m_card;
149151};
150152
151153
r21071r21072
172174   virtual void c64_cd_w(address_space &space, offs_t offset, UINT8 data, int sphi2, int ba, int roml, int romh, int io1, int io2) { };
173175   virtual int c64_game_r(offs_t offset, int sphi2, int ba, int rw, int hiram) { return m_game; }
174176   virtual int c64_exrom_r(offs_t offset, int sphi2, int ba, int rw, int hiram) { return m_exrom; }
175   virtual void c64_reset_w(int state) { };
176177
177178   c64_expansion_slot_device *m_slot;
178179
trunk/src/mess/machine/c64_easyflash.c
r21071r21072
5151//  INPUT_PORTS( c64_easyflash )
5252//-------------------------------------------------
5353
54INPUT_CHANGED_MEMBER( c64_easyflash_cartridge_device::reset )
55{
56   if (!newval)
57   {
58      device_reset();
59   }
60
61   m_slot->reset_w(newval ? CLEAR_LINE : ASSERT_LINE);
62}
63
6454static INPUT_PORTS_START( c64_easyflash )
6555   PORT_START("JP1")
6656   PORT_DIPNAME( 0x01, 0x00, "Boot" )
r21071r21072
6858   PORT_DIPSETTING(    0x01, "Boot" )
6959
7060   PORT_START("RESET")
71   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_NAME("Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, c64_easyflash_cartridge_device, reset, 0)
61   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_expansion_slot_device, reset_w)
7262INPUT_PORTS_END
7363
7464
trunk/src/mess/machine/c64_easyflash.h
r21071r21072
3636   virtual machine_config_constructor device_mconfig_additions() const;
3737   virtual ioport_constructor device_input_ports() const;
3838
39   DECLARE_INPUT_CHANGED_MEMBER( reset );
40
4139protected:
4240   // device-level overrides
4341   virtual void device_config_complete() { m_shortname = "c64_easyflash"; }
trunk/src/mess/machine/c1571.c
r21071r21072
771771
772772   MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, via0_intf)
773773   MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, via1_intf)
774   MCFG_MOS6526_ADD(M6526_TAG, XTAL_16MHz/16, 0, DEVWRITELINE(DEVICE_SELF_OWNER, c1571_device, cia_irq_w))
775   MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(DEVICE_SELF_OWNER, c1571_device, cia_cnt_w), DEVWRITELINE(DEVICE_SELF_OWNER, c1571_device, cia_sp_w))
776   MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF_OWNER, c1571_device, cia_pb_r), DEVWRITE8(DEVICE_SELF_OWNER, c1571_device, cia_pb_w), DEVWRITELINE(DEVICE_SELF_OWNER, c1571_device, cia_pc_w))
774   MCFG_MOS6526_ADD(M6526_TAG, XTAL_16MHz/16, 0, DEVWRITELINE(DEVICE_SELF, c1571_device, cia_irq_w))
775   MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(DEVICE_SELF, c1571_device, cia_cnt_w), DEVWRITELINE(DEVICE_SELF, c1571_device, cia_sp_w))
776   MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF, c1571_device, cia_pb_r), DEVWRITE8(DEVICE_SELF, c1571_device, cia_pb_w), DEVWRITELINE(DEVICE_SELF, c1571_device, cia_pc_w))
777777   MCFG_WD1770x_ADD(WD1770_TAG, XTAL_16MHz/2)
778778
779779   MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1570_floppy_interface)
r21071r21072
793793
794794   MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, via0_intf)
795795   MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, via1_intf)
796
797   MCFG_MOS6526_ADD(M6526_TAG, XTAL_16MHz/16, 0, DEVWRITELINE(DEVICE_SELF_OWNER, c1571_device, cia_irq_w))
798   MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(DEVICE_SELF_OWNER, c1571_device, cia_cnt_w), DEVWRITELINE(DEVICE_SELF_OWNER, c1571_device, cia_sp_w))
799   MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF_OWNER, c1571_device, cia_pb_r), DEVWRITE8(DEVICE_SELF_OWNER, c1571_device, cia_pb_w), DEVWRITELINE(DEVICE_SELF_OWNER, c1571_device, cia_pc_w))
800   
796   MCFG_MOS6526_ADD(M6526_TAG, XTAL_16MHz/16, 0, DEVWRITELINE(DEVICE_SELF, c1571_device, cia_irq_w))
797   MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(DEVICE_SELF, c1571_device, cia_cnt_w), DEVWRITELINE(DEVICE_SELF, c1571_device, cia_sp_w))
798   MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF, c1571_device, cia_pb_r), DEVWRITE8(DEVICE_SELF, c1571_device, cia_pb_w), DEVWRITELINE(DEVICE_SELF, c1571_device, cia_pc_w))
801799   MCFG_WD1770x_ADD(WD1770_TAG, XTAL_16MHz/2)
802800
803801   MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1571_floppy_interface)
r21071r21072
839837
840838   MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, via0_intf)
841839   MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, via1_intf)
842
843   MCFG_MOS6526_ADD(M6526_TAG, XTAL_16MHz/16, 0, DEVWRITELINE(DEVICE_SELF_OWNER, c1571_device, cia_irq_w))
844   MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(DEVICE_SELF_OWNER, c1571_device, cia_cnt_w), DEVWRITELINE(DEVICE_SELF_OWNER, c1571_device, cia_sp_w))
845   MCFG_MOS6526_PORT_A_CALLBACKS(DEVREAD8(DEVICE_SELF_OWNER, mini_chief_device, cia_pa_r), DEVWRITE8(DEVICE_SELF_OWNER, mini_chief_device, cia_pa_w))
846   MCFG_MOS6526_PORT_B_CALLBACKS(NULL, DEVWRITE8(DEVICE_SELF_OWNER, c1571_device, cia_pb_w), DEVWRITELINE(DEVICE_SELF_OWNER, c1571_device, cia_pc_w))
847   
840   MCFG_MOS6526_ADD(M6526_TAG, XTAL_16MHz/16, 0, DEVWRITELINE(DEVICE_SELF, c1571_device, cia_irq_w))
841   MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(DEVICE_SELF, c1571_device, cia_cnt_w), DEVWRITELINE(DEVICE_SELF, c1571_device, cia_sp_w))
842   MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF, c1571_device, cia_pb_r), DEVWRITE8(DEVICE_SELF, c1571_device, cia_pb_w), DEVWRITELINE(DEVICE_SELF, c1571_device, cia_pc_w))
848843   MCFG_WD1770x_ADD(WD1770_TAG, XTAL_16MHz/2)
849844
850845   MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1571_floppy_interface)
trunk/src/mess/machine/c64_supercpu.c
r21071r21072
5757
5858
5959//-------------------------------------------------
60//  C64_EXPANSION_INTERFACE( expansion_intf )
61//-------------------------------------------------
62
63READ8_MEMBER( c64_supercpu_device::dma_cd_r )
64{
65   return m_slot->dma_cd_r(offset);
66}
67
68WRITE8_MEMBER( c64_supercpu_device::dma_cd_w )
69{
70   m_slot->dma_cd_w(offset, data);
71}
72
73WRITE_LINE_MEMBER( c64_supercpu_device::irq_w )
74{
75   m_slot->irq_w(state);
76}
77
78WRITE_LINE_MEMBER( c64_supercpu_device::nmi_w )
79{
80   m_slot->nmi_w(state);
81}
82
83WRITE_LINE_MEMBER( c64_supercpu_device::dma_w )
84{
85   m_slot->dma_w(state);
86}
87
88WRITE_LINE_MEMBER( c64_supercpu_device::reset_w )
89{
90   m_slot->reset_w(state);
91}
92
93static C64_EXPANSION_INTERFACE( expansion_intf )
94{
95   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_supercpu_device, dma_cd_r),
96   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_supercpu_device, dma_cd_w),
97   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_supercpu_device, irq_w),
98   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_supercpu_device, nmi_w),
99   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_supercpu_device, dma_w),
100   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_supercpu_device, reset_w)
101};
102
103
104//-------------------------------------------------
10560//  MACHINE_CONFIG_FRAGMENT( c64_supercpu )
10661//-------------------------------------------------
10762
r21071r21072
10964   MCFG_CPU_ADD(G65816_TAG, G65816, 1000000)
11065   MCFG_CPU_PROGRAM_MAP(c64_supercpu_map)
11166
112   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, 0, expansion_intf, c64_expansion_cards, NULL, NULL)
67   MCFG_C64_PASSTHRU_EXPANSION_SLOT_ADD()
11368MACHINE_CONFIG_END
11469
11570
r21071r21072
12883//  INPUT_PORTS( c64_supercpu )
12984//-------------------------------------------------
13085
131INPUT_CHANGED_MEMBER( c64_supercpu_device::reset )
132{
133   if (!newval)
134   {
135      device_reset();
136   }
137
138   m_slot->reset_w(newval ? CLEAR_LINE : ASSERT_LINE);
139}
140
14186static INPUT_PORTS_START( c64_supercpu )
14287   PORT_START("FRONT")
14388   PORT_DIPNAME( 0x01, 0x01, "Unit" )
r21071r21072
15196   PORT_DIPSETTING(    0x00, "Turbo" )
15297
15398   PORT_START("RESET")
154   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11) PORT_CHANGED_MEMBER(DEVICE_SELF, c64_supercpu_device, reset, 0)
99   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_expansion_slot_device, reset_w)
155100INPUT_PORTS_END
156101
157102
r21071r21072
165110}
166111
167112
113
168114//**************************************************************************
169115//  LIVE DEVICE
170116//**************************************************************************
trunk/src/mess/machine/c64_supercpu.h
r21071r21072
3737   virtual machine_config_constructor device_mconfig_additions() const;
3838   virtual ioport_constructor device_input_ports() const;
3939
40   DECLARE_INPUT_CHANGED_MEMBER( reset );
41
42   DECLARE_READ8_MEMBER( dma_cd_r );
43   DECLARE_WRITE8_MEMBER( dma_cd_w );
44   DECLARE_WRITE_LINE_MEMBER( irq_w );
45   DECLARE_WRITE_LINE_MEMBER( nmi_w );
46   DECLARE_WRITE_LINE_MEMBER( dma_w );
47   DECLARE_WRITE_LINE_MEMBER( reset_w );
48
4940protected:
5041   // device-level overrides
5142   virtual void device_config_complete() { m_shortname = "c64_supercpu"; }
trunk/src/mess/machine/c1581.c
r21071r21072
299299   MCFG_CPU_PROGRAM_MAP(c1581_mem)
300300
301301   MCFG_MOS8520_ADD(M8520_TAG, XTAL_16MHz/8, 0, INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
302   MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(DEVICE_SELF_OWNER, c1581_device, cnt_w), DEVWRITELINE(DEVICE_SELF_OWNER, c1581_device, sp_w))
303   MCFG_MOS6526_PORT_A_CALLBACKS(DEVREAD8(DEVICE_SELF_OWNER, c1581_device, cia_pa_r), DEVWRITE8(DEVICE_SELF_OWNER, c1581_device, cia_pa_w))
304   MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF_OWNER, c1581_device, cia_pb_r), DEVWRITE8(DEVICE_SELF_OWNER, c1581_device, cia_pb_w), NULL)
302   MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(DEVICE_SELF, c1581_device, cnt_w), DEVWRITELINE(DEVICE_SELF, c1581_device, sp_w))
303   MCFG_MOS6526_PORT_A_CALLBACKS(DEVREAD8(DEVICE_SELF, c1581_device, cia_pa_r), DEVWRITE8(DEVICE_SELF, c1581_device, cia_pa_w))
304   MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF, c1581_device, cia_pb_r), DEVWRITE8(DEVICE_SELF, c1581_device, cia_pb_w), NULL)
305305
306306   MCFG_WD1772x_ADD(WD1772_TAG, XTAL_16MHz/2)
307307
trunk/src/mess/machine/vic10exp.c
r21071r21072
1616
1717
1818//**************************************************************************
19//  GLOBAL VARIABLES
19//  DEVICE DEFINITIONS
2020//**************************************************************************
2121
2222const device_type VIC10_EXPANSION_SLOT = &device_creator<vic10_expansion_slot_device>;
r21071r21072
114114
115115
116116//-------------------------------------------------
117//  vic10_expansion_slot_device - destructor
118//-------------------------------------------------
119
120vic10_expansion_slot_device::~vic10_expansion_slot_device()
121{
122}
123
124
125//-------------------------------------------------
126117//  device_config_complete - perform any
127118//  operations now that the configuration is
128119//  complete
r21071r21072
157148
158149void vic10_expansion_slot_device::device_start()
159150{
160   m_cart = dynamic_cast<device_vic10_expansion_card_interface *>(get_card_device());
151   m_card = dynamic_cast<device_vic10_expansion_card_interface *>(get_card_device());
161152
162153   // resolve callbacks
163154   m_out_irq_func.resolve(m_out_irq_cb, *this);
r21071r21072
181172
182173void vic10_expansion_slot_device::device_reset()
183174{
184   res_w(ASSERT_LINE);
185   res_w(CLEAR_LINE);
175   if (get_card_device())
176   {
177      get_card_device()->reset();
178   }
186179}
187180
188181
r21071r21072
192185
193186bool vic10_expansion_slot_device::call_load()
194187{
195   if (m_cart)
188   if (m_card)
196189   {
197190      size_t size = 0;
198191
r21071r21072
202195
203196         if (!mame_stricmp(filetype(), "80"))
204197         {
205            fread(m_cart->vic10_lorom_pointer(machine(), 0x2000), 0x2000);
198            fread(m_card->vic10_lorom_pointer(machine(), 0x2000), 0x2000);
206199
207200            if (size == 0x4000)
208201            {
209               fread(m_cart->vic10_uprom_pointer(machine(), 0x2000), 0x2000);
202               fread(m_card->vic10_uprom_pointer(machine(), 0x2000), 0x2000);
210203            }
211204         }
212         else if (!mame_stricmp(filetype(), "e0")) fread(m_cart->vic10_uprom_pointer(machine(), size), size);
205         else if (!mame_stricmp(filetype(), "e0")) fread(m_card->vic10_uprom_pointer(machine(), size), size);
213206         else if (!mame_stricmp(filetype(), "crt"))
214207         {
215208            size_t roml_size = 0;
r21071r21072
222215               UINT8 *roml = NULL;
223216               UINT8 *romh = NULL;
224217
225               if (roml_size) roml = m_cart->vic10_lorom_pointer(machine(), roml_size);
226               if (romh_size) romh = m_cart->vic10_uprom_pointer(machine(), romh_size);
218               if (roml_size) roml = m_card->vic10_lorom_pointer(machine(), roml_size);
219               if (romh_size) romh = m_card->vic10_uprom_pointer(machine(), romh_size);
227220
228221               cbm_crt_read_data(m_file, roml, romh);
229222            }
r21071r21072
232225      else
233226      {
234227         size = get_software_region_length("lorom");
235         if (size) memcpy(m_cart->vic10_lorom_pointer(machine(), size), get_software_region("lorom"), size);
228         if (size) memcpy(m_card->vic10_lorom_pointer(machine(), size), get_software_region("lorom"), size);
236229
237230         size = get_software_region_length("uprom");
238         if (size) memcpy(m_cart->vic10_uprom_pointer(machine(), size), get_software_region("uprom"), size);
231         if (size) memcpy(m_card->vic10_uprom_pointer(machine(), size), get_software_region("uprom"), size);
239232
240233         size = get_software_region_length("exram");
241         if (size) m_cart->vic10_exram_pointer(machine(), size);
234         if (size) m_card->vic10_exram_pointer(machine(), size);
242235      }
243236   }
244237
r21071r21072
284277
285278UINT8 vic10_expansion_slot_device::cd_r(address_space &space, offs_t offset, UINT8 data, int lorom, int uprom, int exram)
286279{
287   if (m_cart != NULL)
280   if (m_card != NULL)
288281   {
289      data = m_cart->vic10_cd_r(space, offset, data, lorom, uprom, exram);
282      data = m_card->vic10_cd_r(space, offset, data, lorom, uprom, exram);
290283   }
291284
292285   return data;
r21071r21072
299292
300293void vic10_expansion_slot_device::cd_w(address_space &space, offs_t offset, UINT8 data, int lorom, int uprom, int exram)
301294{
302   if (m_cart != NULL)
295   if (m_card != NULL)
303296   {
304      m_cart->vic10_cd_w(space, offset, data, lorom, uprom, exram);
297      m_card->vic10_cd_w(space, offset, data, lorom, uprom, exram);
305298   }
306299}
307300
308WRITE_LINE_MEMBER( vic10_expansion_slot_device::port_res_w ) { if (m_cart != NULL) m_cart->vic10_res_w(state); }
309
310READ_LINE_MEMBER( vic10_expansion_slot_device::p0_r ) { int state = 0; if (m_cart != NULL) state = m_cart->vic10_p0_r(); return state; }
311WRITE_LINE_MEMBER( vic10_expansion_slot_device::p0_w ) { if (m_cart != NULL) m_cart->vic10_p0_w(state); }
301READ_LINE_MEMBER( vic10_expansion_slot_device::p0_r ) { int state = 0; if (m_card != NULL) state = m_card->vic10_p0_r(); return state; }
302WRITE_LINE_MEMBER( vic10_expansion_slot_device::p0_w ) { if (m_card != NULL) m_card->vic10_p0_w(state); }
312303WRITE_LINE_MEMBER( vic10_expansion_slot_device::irq_w ) { m_out_irq_func(state); }
313WRITE_LINE_MEMBER( vic10_expansion_slot_device::sp_w ) { m_out_sp_func(state); if (m_cart != NULL) m_cart->vic10_sp_w(state); }
314WRITE_LINE_MEMBER( vic10_expansion_slot_device::cnt_w ) { m_out_cnt_func(state); if (m_cart != NULL) m_cart->vic10_cnt_w(state); }
304WRITE_LINE_MEMBER( vic10_expansion_slot_device::sp_w ) { m_out_sp_func(state); if (m_card != NULL) m_card->vic10_sp_w(state); }
305WRITE_LINE_MEMBER( vic10_expansion_slot_device::cnt_w ) { m_out_cnt_func(state); if (m_card != NULL) m_card->vic10_cnt_w(state); }
315306WRITE_LINE_MEMBER( vic10_expansion_slot_device::res_w ) { m_out_res_func(state); }
trunk/src/mess/machine/vic10exp.h
r21071r21072
9292public:
9393   // construction/destruction
9494   vic10_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
95   virtual ~vic10_expansion_slot_device();
9695
9796   // computer interface
9897   UINT8 cd_r(address_space &space, offs_t offset, UINT8 data, int lorom, int uprom, int exram);
9998   void cd_w(address_space &space, offs_t offset, UINT8 data, int lorom, int uprom, int exram);
10099   DECLARE_READ_LINE_MEMBER( p0_r );
101100   DECLARE_WRITE_LINE_MEMBER( p0_w );
102   DECLARE_WRITE_LINE_MEMBER( port_res_w );
103101
104102   // cartridge interface
105103   DECLARE_WRITE_LINE_MEMBER( irq_w );
r21071r21072
107105   DECLARE_WRITE_LINE_MEMBER( cnt_w );
108106   DECLARE_WRITE_LINE_MEMBER( res_w );
109107
110   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
111
112108protected:
113109   // device-level overrides
114110   virtual void device_config_complete();
r21071r21072
138134   devcb_resolved_write_line   m_out_cnt_func;
139135   devcb_resolved_write_line   m_out_res_func;
140136
141   device_vic10_expansion_card_interface *m_cart;
137   device_vic10_expansion_card_interface *m_card;
142138};
143139
144140
r21071r21072
167163   virtual void vic10_p0_w(int state) { };
168164   virtual void vic10_sp_w(int state) { };
169165   virtual void vic10_cnt_w(int state) { };
170   virtual void vic10_res_w(int state) { };
171166
172167   vic10_expansion_slot_device *m_slot;
173168
trunk/src/mess/machine/c64_cpm.c
r21071r21072
209209   {
210210      offs_t addr = (offset + 0x1000) & 0xffff;
211211
212      data = m_slot->dma_cd_r(addr);
212      data = m_slot->dma_cd_r(space, addr);
213213   }
214214
215215   return data;
r21071r21072
226226   {
227227      offs_t addr = (offset + 0x1000) & 0xffff;
228228
229      m_slot->dma_cd_w(addr, data);
229      m_slot->dma_cd_w(space, addr, data);
230230   }
231231}
trunk/src/mess/machine/c64_magic_voice.c
r21071r21072
4646
4747
4848//-------------------------------------------------
49//  C64_EXPANSION_INTERFACE( expansion_intf )
50//-------------------------------------------------
51
52READ8_MEMBER( c64_magic_voice_cartridge_device::dma_cd_r )
53{
54   return m_slot->dma_cd_r(offset);
55}
56
57WRITE8_MEMBER( c64_magic_voice_cartridge_device::dma_cd_w )
58{
59   m_slot->dma_cd_w(offset, data);
60}
61
62WRITE_LINE_MEMBER( c64_magic_voice_cartridge_device::irq_w )
63{
64   m_slot->irq_w(state);
65}
66
67WRITE_LINE_MEMBER( c64_magic_voice_cartridge_device::nmi_w )
68{
69   m_slot->nmi_w(state);
70}
71
72WRITE_LINE_MEMBER( c64_magic_voice_cartridge_device::dma_w )
73{
74   m_slot->dma_w(state);
75}
76
77WRITE_LINE_MEMBER( c64_magic_voice_cartridge_device::reset_w )
78{
79   m_slot->reset_w(state);
80}
81
82static C64_EXPANSION_INTERFACE( expansion_intf )
83{
84   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_magic_voice_cartridge_device, dma_cd_r),
85   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_magic_voice_cartridge_device, dma_cd_w),
86   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_magic_voice_cartridge_device, irq_w),
87   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_magic_voice_cartridge_device, nmi_w),
88   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_magic_voice_cartridge_device, dma_w),
89   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_magic_voice_cartridge_device, reset_w)
90};
91
92
93//-------------------------------------------------
9449//  MACHINE_CONFIG_FRAGMENT( c64_magic_voice )
9550//-------------------------------------------------
9651
r21071r21072
10257   MCFG_T6721A_EOS_HANDLER(DEVWRITELINE(MOS6525_TAG, tpi6525_device, i2_w))
10358   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
10459
105   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, 0, expansion_intf, c64_expansion_cards, NULL, NULL)
60   MCFG_C64_PASSTHRU_EXPANSION_SLOT_ADD()
10661MACHINE_CONFIG_END
10762
10863
trunk/src/mess/machine/c64_magic_voice.h
r21071r21072
3636   // optional information overrides
3737   virtual machine_config_constructor device_mconfig_additions() const;
3838
39   // not really public
40   DECLARE_READ8_MEMBER( dma_cd_r );
41   DECLARE_WRITE8_MEMBER( dma_cd_w );
42   DECLARE_WRITE_LINE_MEMBER( irq_w );
43   DECLARE_WRITE_LINE_MEMBER( nmi_w );
44   DECLARE_WRITE_LINE_MEMBER( dma_w );
45   DECLARE_WRITE_LINE_MEMBER( reset_w );
46
4739protected:
4840   // device-level overrides
4941   virtual void device_config_complete() { m_shortname = "c64_magic_voice"; }
trunk/src/mess/machine/plus4exp.c
r21071r21072
184184
185185
186186//-------------------------------------------------
187//  plus4_expansion_slot_device - destructor
188//-------------------------------------------------
189
190plus4_expansion_slot_device::~plus4_expansion_slot_device()
191{
192}
193
194
195//-------------------------------------------------
196187//  device_config_complete - perform any
197188//  operations now that the configuration is
198189//  complete
r21071r21072
227218
228219void plus4_expansion_slot_device::device_start()
229220{
230   m_cart = dynamic_cast<device_plus4_expansion_card_interface *>(get_card_device());
221   m_card = dynamic_cast<device_plus4_expansion_card_interface *>(get_card_device());
231222
232223   // resolve callbacks
233224   m_in_dma_cd_func.resolve(m_in_dma_cd_cb, *this);
r21071r21072
251242
252243void plus4_expansion_slot_device::device_reset()
253244{
254   breset_w(ASSERT_LINE);
255   breset_w(CLEAR_LINE);
245   if (get_card_device())
246   {
247      get_card_device()->reset();
248   }
256249}
257250
258251
r21071r21072
262255
263256bool plus4_expansion_slot_device::call_load()
264257{
265   if (m_cart)
258   if (m_card)
266259   {
267260      size_t size = 0;
268261
r21071r21072
273266      else
274267      {
275268         size = get_software_region_length("c1l");
276         if (size) memcpy(m_cart->plus4_c1l_pointer(machine(), size), get_software_region("c1l"), size);
269         if (size) memcpy(m_card->plus4_c1l_pointer(machine(), size), get_software_region("c1l"), size);
277270
278271         size = get_software_region_length("c1h");
279         if (size) memcpy(m_cart->plus4_c1h_pointer(machine(), size), get_software_region("c1h"), size);
272         if (size) memcpy(m_card->plus4_c1h_pointer(machine(), size), get_software_region("c1h"), size);
280273
281274         size = get_software_region_length("c2l");
282         if (size) memcpy(m_cart->plus4_c2l_pointer(machine(), size), get_software_region("c2l"), size);
275         if (size) memcpy(m_card->plus4_c2l_pointer(machine(), size), get_software_region("c2l"), size);
283276
284277         size = get_software_region_length("c2h");
285         if (size) memcpy(m_cart->plus4_c2h_pointer(machine(), size), get_software_region("c2h"), size);
278         if (size) memcpy(m_card->plus4_c2h_pointer(machine(), size), get_software_region("c2h"), size);
286279
287280         size = get_software_region_length("ram");
288         if (size) memset(m_cart->plus4_ram_pointer(machine(), size), 0, size);
281         if (size) memset(m_card->plus4_ram_pointer(machine(), size), 0, size);
289282
290283         size = get_software_region_length("nvram");
291         if (size) memset(m_cart->plus4_nvram_pointer(machine(), size), 0, size);
284         if (size) memset(m_card->plus4_nvram_pointer(machine(), size), 0, size);
292285      }
293286   }
294287
r21071r21072
324317
325318UINT8 plus4_expansion_slot_device::cd_r(address_space &space, offs_t offset, UINT8 data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h)
326319{
327   if (m_cart != NULL)
320   if (m_card != NULL)
328321   {
329      data = m_cart->plus4_cd_r(space, offset, data, ba, cs0, c1l, c1h, cs1, c2l, c2h);
322      data = m_card->plus4_cd_r(space, offset, data, ba, cs0, c1l, c1h, cs1, c2l, c2h);
330323   }
331324
332325   return data;
r21071r21072
339332
340333void plus4_expansion_slot_device::cd_w(address_space &space, offs_t offset, UINT8 data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h)
341334{
342   if (m_cart != NULL)
335   if (m_card != NULL)
343336   {
344      m_cart->plus4_cd_w(space, offset, data, ba, cs0, c1l, c1h, cs1, c2l, c2h);
337      m_card->plus4_cd_w(space, offset, data, ba, cs0, c1l, c1h, cs1, c2l, c2h);
345338   }
346339}
347
348
349//-------------------------------------------------
350//  breset_w - buffered reset write
351//-------------------------------------------------
352
353WRITE_LINE_MEMBER( plus4_expansion_slot_device::breset_w )
354{
355   if (m_cart != NULL)
356   {
357      m_cart->plus4_breset_w(state);
358   }
359}
360
361
362//-------------------------------------------------
363//  dma_cd_r - DMA read
364//-------------------------------------------------
365
366UINT8 plus4_expansion_slot_device::dma_cd_r(offs_t offset)
367{
368   return m_in_dma_cd_func(offset);
369}
370
371
372//-------------------------------------------------
373//  dma_cd_w - DMA write
374//-------------------------------------------------
375
376void plus4_expansion_slot_device::dma_cd_w(offs_t offset, UINT8 data)
377{
378   m_out_dma_cd_func(offset, data);
379}
380
381
382WRITE_LINE_MEMBER( plus4_expansion_slot_device::irq_w ) { m_out_irq_func(state); }
383WRITE_LINE_MEMBER( plus4_expansion_slot_device::aec_w ) { m_out_aec_func(state); }
384
385
386//-------------------------------------------------
387//  phi2 - system clock frequency
388//-------------------------------------------------
389
390int plus4_expansion_slot_device::phi2()
391{
392   return clock();
393}
trunk/src/mess/machine/c64_tdos.c
r21071r21072
9090
9191
9292//-------------------------------------------------
93//  C64_EXPANSION_INTERFACE( expansion_intf )
94//-------------------------------------------------
95
96READ8_MEMBER( c64_tdos_cartridge_device::dma_cd_r )
97{
98   return m_slot->dma_cd_r(offset);
99}
100
101WRITE8_MEMBER( c64_tdos_cartridge_device::dma_cd_w )
102{
103   m_slot->dma_cd_w(offset, data);
104}
105
106WRITE_LINE_MEMBER( c64_tdos_cartridge_device::irq_w )
107{
108   m_slot->irq_w(state);
109}
110
111WRITE_LINE_MEMBER( c64_tdos_cartridge_device::nmi_w )
112{
113   m_slot->nmi_w(state);
114}
115
116WRITE_LINE_MEMBER( c64_tdos_cartridge_device::dma_w )
117{
118   m_slot->dma_w(state);
119}
120
121WRITE_LINE_MEMBER( c64_tdos_cartridge_device::reset_w )
122{
123   m_slot->reset_w(state);
124}
125
126static C64_EXPANSION_INTERFACE( expansion_intf )
127{
128   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_tdos_cartridge_device, dma_cd_r),
129   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_tdos_cartridge_device, dma_cd_w),
130   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_tdos_cartridge_device, irq_w),
131   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_tdos_cartridge_device, nmi_w),
132   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_tdos_cartridge_device, dma_w),
133   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_tdos_cartridge_device, reset_w)
134};
135
136
137//-------------------------------------------------
13893//  MACHINE_CONFIG_FRAGMENT( c64_multiscreen )
13994//-------------------------------------------------
14095
14196static MACHINE_CONFIG_FRAGMENT( c64_tdos )
14297   MCFG_MC6852_ADD(MC68A52P_TAG, XTAL_6_5MHz, ssda_intf)
143
144   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, 0, expansion_intf, c64_expansion_cards, NULL, NULL)
98   
99    MCFG_C64_PASSTHRU_EXPANSION_SLOT_ADD()
145100MACHINE_CONFIG_END
146101
147102
trunk/src/mess/machine/plus4exp.h
r21071r21072
9494public:
9595   // construction/destruction
9696   plus4_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
97   virtual ~plus4_expansion_slot_device();
9897
9998   // computer interface
10099   UINT8 cd_r(address_space &space, offs_t offset, UINT8 data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h);
101100   void cd_w(address_space &space, offs_t offset, UINT8 data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h);
102101   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
103   DECLARE_WRITE_LINE_MEMBER( breset_w );
104102
105103   // cartridge interface
106   UINT8 dma_cd_r(offs_t offset);
107   void dma_cd_w(offs_t offset, UINT8 data);
108   DECLARE_WRITE_LINE_MEMBER( irq_w );
109   DECLARE_WRITE_LINE_MEMBER( aec_w );
110   int phi2();
111   int dotclock();
104   DECLARE_READ8_MEMBER( dma_cd_r ) { return m_in_dma_cd_func(offset); }
105   DECLARE_WRITE8_MEMBER( dma_cd_w ) { m_out_dma_cd_func(offset, data); }
106   DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_out_irq_func(state); }
107   DECLARE_WRITE_LINE_MEMBER( aec_w ) { m_out_aec_func(state); }
108   int phi2() { return clock(); }
112109
113110protected:
114111   // device-level overrides
r21071r21072
139136   devcb_resolved_write_line   m_out_irq_func;
140137   devcb_resolved_write_line   m_out_aec_func;
141138
142   device_plus4_expansion_card_interface *m_cart;
139   device_plus4_expansion_card_interface *m_card;
143140};
144141
145142
r21071r21072
165162   // runtime
166163   virtual UINT8 plus4_cd_r(address_space &space, offs_t offset, UINT8 data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h) { return data; };
167164   virtual void plus4_cd_w(address_space &space, offs_t offset, UINT8 data, int ba, int cs0, int c1l, int c2l, int cs1, int c1h, int c2h) { };
168   virtual void plus4_breset_w(int state) { };
169165
170166protected:
171167   plus4_expansion_slot_device *m_slot;
trunk/src/mess/machine/c64_tdos.h
r21071r21072
3535   // optional information overrides
3636   virtual machine_config_constructor device_mconfig_additions() const;
3737
38   // not really public
39   DECLARE_READ8_MEMBER( dma_cd_r );
40   DECLARE_WRITE8_MEMBER( dma_cd_w );
41   DECLARE_WRITE_LINE_MEMBER( irq_w );
42   DECLARE_WRITE_LINE_MEMBER( nmi_w );
43   DECLARE_WRITE_LINE_MEMBER( dma_w );
44   DECLARE_WRITE_LINE_MEMBER( reset_w );
45
4638protected:
4739   // device-level overrides
4840   virtual void device_config_complete() { m_shortname = "c64_tdos"; }
trunk/src/mess/machine/c64_4ksa.c
r21071r21072
2020const device_type C64_4KSA = &device_creator<c64_4ksa_device>;
2121
2222
23INPUT_CHANGED_MEMBER( c64_4ksa_device::fire4 )
24{
25   m_slot->sp2_w(newval);
26}
23//-------------------------------------------------
24//  INPUT_PORTS( c64_4ksa )
25//-------------------------------------------------
2726
28static INPUT_PORTS_START( c64_4player )
27static INPUT_PORTS_START( c64_4ksa )
2928   PORT_START("SP2")
30   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CHANGED_MEMBER(DEVICE_SELF, c64_4ksa_device, fire4, 0)
29   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_user_port_device, sp2_w)
3130
3231   PORT_START("PB")
3332   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
r21071r21072
5049
5150ioport_constructor c64_4ksa_device::device_input_ports() const
5251{
53   return INPUT_PORTS_NAME( c64_4player );
52   return INPUT_PORTS_NAME( c64_4ksa );
5453}
5554
5655
trunk/src/mess/machine/c64_4ksa.h
r21071r21072
3434   // optional information overrides
3535   virtual ioport_constructor device_input_ports() const;
3636
37   DECLARE_INPUT_CHANGED_MEMBER( fire4 );
38
3937protected:
4038   // device-level overrides
4139   virtual void device_config_complete() { m_shortname = "c64_4ksa"; }
trunk/src/mess/machine/c64_magic_formel.c
r21071r21072
129129
130130
131131//-------------------------------------------------
132//  INPUT_PORTS( c64_magic_formel )
132//  INPUT_CHANGED_MEMBER( freeze )
133133//-------------------------------------------------
134134
135135INPUT_CHANGED_MEMBER( c64_magic_formel_cartridge_device::freeze )
136136{
137   if (!newval && (m_pb7_ff & m_cb2_ff))
137   if (newval && (m_pb7_ff & m_cb2_ff))
138138   {
139139      m_cb2_ff = 0;
140140
r21071r21072
146146   }
147147}
148148
149
150//-------------------------------------------------
151//  INPUT_PORTS( c64_magic_formel )
152//-------------------------------------------------
153
149154static INPUT_PORTS_START( c64_magic_formel )
150155   PORT_START("FREEZE")
151   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_NAME("Freeze") PORT_CHANGED_MEMBER(DEVICE_SELF, c64_magic_formel_cartridge_device, freeze, 0)
156   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Freeze") PORT_CODE(KEYCODE_F12) PORT_CHANGED_MEMBER(DEVICE_SELF, c64_magic_formel_cartridge_device, freeze, 0)
152157INPUT_PORTS_END
153158
154159
trunk/src/mess/machine/c64_4dxh.c
r21071r21072
2020const device_type C64_4DXH = &device_creator<c64_4dxh_device>;
2121
2222
23INPUT_CHANGED_MEMBER( c64_4dxh_device::fire4 )
24{
25   m_slot->sp2_w(newval);
26}
23//-------------------------------------------------
24//  INPUT_PORTS( c64_4dxh )
25//-------------------------------------------------
2726
28static INPUT_PORTS_START( c64_4player )
27static INPUT_PORTS_START( c64_4dxh )
2928   PORT_START("SP2")
30   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CHANGED_MEMBER(DEVICE_SELF, c64_4dxh_device, fire4, 0)
29   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_user_port_device, sp2_w)
3130
3231   PORT_START("PB")
3332   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
r21071r21072
5049
5150ioport_constructor c64_4dxh_device::device_input_ports() const
5251{
53   return INPUT_PORTS_NAME( c64_4player );
52   return INPUT_PORTS_NAME( c64_4dxh );
5453}
5554
5655
trunk/src/mess/machine/c64_4dxh.h
r21071r21072
3434   // optional information overrides
3535   virtual ioport_constructor device_input_ports() const;
3636
37   DECLARE_INPUT_CHANGED_MEMBER( fire4 );
38
3937protected:
4038   // device-level overrides
4139   virtual void device_config_complete() { m_shortname = "c64_4dxh"; }
trunk/src/mess/machine/vic20exp.c
r21071r21072
1616
1717
1818//**************************************************************************
19//  MACROS/CONSTANTS
19//  DEVICE DEFINITIONS
2020//**************************************************************************
2121
22#define LOG 0
23
24
25
26//**************************************************************************
27//  GLOBAL VARIABLES
28//**************************************************************************
29
3022const device_type VIC20_EXPANSION_SLOT = &device_creator<vic20_expansion_slot_device>;
3123
3224
r21071r21072
172164
173165
174166//-------------------------------------------------
175//  vic20_expansion_slot_device - destructor
176//-------------------------------------------------
177
178vic20_expansion_slot_device::~vic20_expansion_slot_device()
179{
180}
181
182
183//-------------------------------------------------
184167//  device_config_complete - perform any
185168//  operations now that the configuration is
186169//  complete
r21071r21072
214197
215198void vic20_expansion_slot_device::device_start()
216199{
217   m_cart = dynamic_cast<device_vic20_expansion_card_interface *>(get_card_device());
200   m_card = dynamic_cast<device_vic20_expansion_card_interface *>(get_card_device());
218201
219202   // resolve callbacks
220203   m_out_irq_func.resolve(m_out_irq_cb, *this);
r21071r21072
237220
238221void vic20_expansion_slot_device::device_reset()
239222{
240   port_res_w(ASSERT_LINE);
241   port_res_w(CLEAR_LINE);
223   if (get_card_device())
224   {
225      get_card_device()->reset();
226   }
242227}
243228
244229
r21071r21072
248233
249234bool vic20_expansion_slot_device::call_load()
250235{
251   if (m_cart)
236   if (m_card)
252237   {
253238      size_t size = 0;
254239
255240      if (software_entry() == NULL)
256241      {
257         if (!mame_stricmp(filetype(), "20")) fread(m_cart->vic20_blk1_pointer(machine(), 0x2000), 0x2000);
258         else if (!mame_stricmp(filetype(), "40")) fread(m_cart->vic20_blk2_pointer(machine(), 0x2000), 0x2000);
259         else if (!mame_stricmp(filetype(), "60")) fread(m_cart->vic20_blk3_pointer(machine(), 0x2000), 0x2000);
260         else if (!mame_stricmp(filetype(), "70")) fread(m_cart->vic20_blk3_pointer(machine(), 0x2000) + 0x1000, 0x1000);
261         else if (!mame_stricmp(filetype(), "a0")) fread(m_cart->vic20_blk5_pointer(machine(), 0x2000), 0x2000);
262         else if (!mame_stricmp(filetype(), "b0")) fread(m_cart->vic20_blk5_pointer(machine(), 0x2000) + 0x1000, 0x1000);
242         if (!mame_stricmp(filetype(), "20")) fread(m_card->vic20_blk1_pointer(machine(), 0x2000), 0x2000);
243         else if (!mame_stricmp(filetype(), "40")) fread(m_card->vic20_blk2_pointer(machine(), 0x2000), 0x2000);
244         else if (!mame_stricmp(filetype(), "60")) fread(m_card->vic20_blk3_pointer(machine(), 0x2000), 0x2000);
245         else if (!mame_stricmp(filetype(), "70")) fread(m_card->vic20_blk3_pointer(machine(), 0x2000) + 0x1000, 0x1000);
246         else if (!mame_stricmp(filetype(), "a0")) fread(m_card->vic20_blk5_pointer(machine(), 0x2000), 0x2000);
247         else if (!mame_stricmp(filetype(), "b0")) fread(m_card->vic20_blk5_pointer(machine(), 0x2000) + 0x1000, 0x1000);
263248         else if (!mame_stricmp(filetype(), "crt"))
264249         {
265250            // read the header
r21071r21072
267252            fread(&header, 2);
268253            UINT16 address = pick_integer_le(header, 0, 2);
269254
270            if (LOG) logerror("Address %04x\n", address);
271
272255            switch (address)
273256            {
274            case 0x2000: fread(m_cart->vic20_blk1_pointer(machine(), 0x2000), 0x2000); break;
275            case 0x4000: fread(m_cart->vic20_blk2_pointer(machine(), 0x2000), 0x2000); break;
276            case 0x6000: fread(m_cart->vic20_blk3_pointer(machine(), 0x2000), 0x2000); break;
277            case 0x7000: fread(m_cart->vic20_blk3_pointer(machine(), 0x2000) + 0x1000, 0x1000); break;
278            case 0xa000: fread(m_cart->vic20_blk5_pointer(machine(), 0x2000), 0x2000); break;
279            case 0xb000: fread(m_cart->vic20_blk5_pointer(machine(), 0x2000) + 0x1000, 0x1000); break;
257            case 0x2000: fread(m_card->vic20_blk1_pointer(machine(), 0x2000), 0x2000); break;
258            case 0x4000: fread(m_card->vic20_blk2_pointer(machine(), 0x2000), 0x2000); break;
259            case 0x6000: fread(m_card->vic20_blk3_pointer(machine(), 0x2000), 0x2000); break;
260            case 0x7000: fread(m_card->vic20_blk3_pointer(machine(), 0x2000) + 0x1000, 0x1000); break;
261            case 0xa000: fread(m_card->vic20_blk5_pointer(machine(), 0x2000), 0x2000); break;
262            case 0xb000: fread(m_card->vic20_blk5_pointer(machine(), 0x2000) + 0x1000, 0x1000); break;
280263            default: return IMAGE_INIT_FAIL;
281264            }
282265         }
r21071r21072
284267      else
285268      {
286269         size = get_software_region_length("blk1");
287         if (size) memcpy(m_cart->vic20_blk1_pointer(machine(), size), get_software_region("blk1"), size);
270         if (size) memcpy(m_card->vic20_blk1_pointer(machine(), size), get_software_region("blk1"), size);
288271
289272         size = get_software_region_length("blk2");
290         if (size) memcpy(m_cart->vic20_blk2_pointer(machine(), size), get_software_region("blk2"), size);
273         if (size) memcpy(m_card->vic20_blk2_pointer(machine(), size), get_software_region("blk2"), size);
291274
292275         size = get_software_region_length("blk3");
293         if (size) memcpy(m_cart->vic20_blk3_pointer(machine(), size), get_software_region("blk3"), size);
276         if (size) memcpy(m_card->vic20_blk3_pointer(machine(), size), get_software_region("blk3"), size);
294277
295278         size = get_software_region_length("blk5");
296         if (size) memcpy(m_cart->vic20_blk5_pointer(machine(), size), get_software_region("blk5"), size);
279         if (size) memcpy(m_card->vic20_blk5_pointer(machine(), size), get_software_region("blk5"), size);
297280
298281         size = get_software_region_length("ram");
299         if (size) memcpy(m_cart->vic20_ram_pointer(machine(), size), get_software_region("ram"), size);
282         if (size) memcpy(m_card->vic20_ram_pointer(machine(), size), get_software_region("ram"), size);
300283
301284         size = get_software_region_length("nvram");
302         if (size) memcpy(m_cart->vic20_nvram_pointer(machine(), size), get_software_region("nvram"), size);
285         if (size) memcpy(m_card->vic20_nvram_pointer(machine(), size), get_software_region("nvram"), size);
303286
304287      }
305288   }
r21071r21072
336319
337320UINT8 vic20_expansion_slot_device::cd_r(address_space &space, offs_t offset, UINT8 data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3)
338321{
339   if (m_cart != NULL)
322   if (m_card != NULL)
340323   {
341      data = m_cart->vic20_cd_r(space, offset, data, ram1, ram2, ram3, blk1, blk2, blk3, blk5, io2, io3);
324      data = m_card->vic20_cd_r(space, offset, data, ram1, ram2, ram3, blk1, blk2, blk3, blk5, io2, io3);
342325   }
343326
344327   return data;
r21071r21072
351334
352335void vic20_expansion_slot_device::cd_w(address_space &space, offs_t offset, UINT8 data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3)
353336{
354   if (m_cart != NULL)
337   if (m_card != NULL)
355338   {
356      m_cart->vic20_cd_w(space, offset, data, ram1, ram2, ram3, blk1, blk2, blk3, blk5, io2, io3);
339      m_card->vic20_cd_w(space, offset, data, ram1, ram2, ram3, blk1, blk2, blk3, blk5, io2, io3);
357340   }
358341}
359342
360WRITE_LINE_MEMBER( vic20_expansion_slot_device::port_res_w ) { if (m_cart != NULL) m_cart->vic20_res_w(state); }
361
362343WRITE_LINE_MEMBER( vic20_expansion_slot_device::irq_w ) { m_out_irq_func(state); }
363344WRITE_LINE_MEMBER( vic20_expansion_slot_device::nmi_w ) { m_out_nmi_func(state); }
364345WRITE_LINE_MEMBER( vic20_expansion_slot_device::res_w ) { m_out_res_func(state); }
trunk/src/mess/machine/vic20exp.h
r21071r21072
9090public:
9191   // construction/destruction
9292   vic20_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
93   virtual ~vic20_expansion_slot_device();
9493
9594   // computer interface
9695   UINT8 cd_r(address_space &space, offs_t offset, UINT8 data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3);
9796   void cd_w(address_space &space, offs_t offset, UINT8 data, int ram1, int ram2, int ram3, int blk1, int blk2, int blk3, int blk5, int io2, int io3);
98   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
99   DECLARE_WRITE_LINE_MEMBER( port_res_w );
10097
10198   // cartridge interface
10299   DECLARE_WRITE_LINE_MEMBER( irq_w );
r21071r21072
131128   devcb_resolved_write_line   m_out_nmi_func;
132129   devcb_resolved_write_line   m_out_res_func;
133130
134   device_vic20_expansion_card_interface *m_cart;
131   device_vic20_expansion_card_interface *m_card;
135132};
136133
137134
trunk/src/mess/machine/c64_mach5.c
r21071r21072
2222//  INPUT_PORTS( c64_mach5 )
2323//-------------------------------------------------
2424
25INPUT_CHANGED_MEMBER( c64_mach5_cartridge_device::reset )
26{
27   if (!newval)
28   {
29      device_reset();
30   }
31
32   m_slot->reset_w(newval ? CLEAR_LINE : ASSERT_LINE);
33}
34
3525static INPUT_PORTS_START( c64_mach5 )
3626   PORT_START("S1")
3727   PORT_DIPNAME( 0x01, 0x00, "Mode" )
r21071r21072
3929   PORT_DIPSETTING(    0x01, "C128" )
4030
4131   PORT_START("S2")
42   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_NAME("Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, c64_mach5_cartridge_device, reset, 0)
32   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_expansion_slot_device, reset_w)
4333INPUT_PORTS_END
4434
4535
trunk/src/mess/machine/c64_mach5.h
r21071r21072
3333   // optional information overrides
3434   virtual ioport_constructor device_input_ports() const;
3535
36   DECLARE_INPUT_CHANGED_MEMBER( reset );
37
3836protected:
3937   // device-level overrides
4038   virtual void device_config_complete() { m_shortname = "c64_mach5"; }
trunk/src/mess/machine/plus4user.c
r21071r21072
6060
6161
6262//-------------------------------------------------
63//  plus4_user_port_device - destructor
64//-------------------------------------------------
65
66plus4_user_port_device::~plus4_user_port_device()
67{
68}
69
70
71//-------------------------------------------------
7263//  device_start - device-specific startup
7364//-------------------------------------------------
7465
r21071r21072
8475
8576void plus4_user_port_device::device_reset()
8677{
87   breset_w(ASSERT_LINE);
88   breset_w(CLEAR_LINE);
78   if (get_card_device())
79   {
80      get_card_device()->reset();
81   }
8982}
9083
9184
r21071r21072
10194WRITE_LINE_MEMBER( plus4_user_port_device::rts_w ) { if (m_cart != NULL) m_cart->plus4_rts_w(state); }
10295WRITE_LINE_MEMBER( plus4_user_port_device::rxc_w ) { if (m_cart != NULL) m_cart->plus4_rxc_w(state); }
10396WRITE_LINE_MEMBER( plus4_user_port_device::atn_w ) { if (m_cart != NULL) m_cart->plus4_atn_w(state); }
104WRITE_LINE_MEMBER( plus4_user_port_device::breset_w ) { if (m_cart != NULL) m_cart->plus4_breset_w(state); }
trunk/src/mess/machine/plus4user.h
r21071r21072
6363public:
6464   // construction/destruction
6565   plus4_user_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
66   virtual ~plus4_user_port_device();
6766
6867   // computer interface
6968   DECLARE_READ8_MEMBER( p_r );
r21071r21072
7675   DECLARE_WRITE_LINE_MEMBER( rts_w );
7776   DECLARE_WRITE_LINE_MEMBER( rxc_w );
7877   DECLARE_WRITE_LINE_MEMBER( atn_w );
79   DECLARE_WRITE_LINE_MEMBER( breset_w );
8078
8179protected:
8280   // device-level overrides
r21071r21072
110108   virtual void plus4_rxc_w(int state) { };
111109   virtual void plus4_atn_w(int state) { };
112110
113   // reset
114   virtual void plus4_breset_w(int state) { };
115
116111protected:
117112   plus4_user_port_device *m_slot;
118113};
trunk/src/mess/machine/vic1010.c
r21071r21072
143143{
144144   for (int i = 0; i < MAX_SLOTS; i++)
145145   {
146      m_expansion_slot[i]->port_res_w(state);
146      m_expansion_slot[i]->reset();
147147   }
148148}
trunk/src/mess/machine/c64_warp_speed.c
r21071r21072
5656//  INPUT_PORTS( c64_warp_speed )
5757//-------------------------------------------------
5858
59INPUT_CHANGED_MEMBER( c64_warp_speed_cartridge_device::reset )
60{
61   if (!newval)
62   {
63      device_reset();
64   }
65
66   m_slot->reset_w(newval ? CLEAR_LINE : ASSERT_LINE);
67}
68
6959static INPUT_PORTS_START( c64_warp_speed )
7060   PORT_START("SW1")
7161   PORT_DIPNAME( 0x01, 0x01, "Mode" )
r21071r21072
7363   PORT_DIPSETTING(    0x00, "C128" )
7464
7565   PORT_START("SW2")
76   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11) PORT_CHANGED_MEMBER(DEVICE_SELF, c64_warp_speed_cartridge_device, reset, 0)
66   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_expansion_slot_device, reset_w)
7767INPUT_PORTS_END
7868
7969
trunk/src/mess/machine/c64_warp_speed.h
r21071r21072
3434   // optional information overrides
3535   virtual ioport_constructor device_input_ports() const;
3636
37   DECLARE_INPUT_CHANGED_MEMBER( reset );
38
3937protected:
4038   // device-level overrides
4139   virtual void device_config_complete() { m_shortname = "c64_warp_speed"; }
trunk/src/mess/machine/c64_final3.c
r21071r21072
1818const device_type C64_FINAL3 = &device_creator<c64_final3_cartridge_device>;
1919
2020
21INPUT_CHANGED_MEMBER( c64_final3_cartridge_device::reset )
22{
23   if (!newval)
24   {
25      device_reset();
26   }
21//-------------------------------------------------
22//  INPUT_CHANGED_MEMBER( freeze )
23//-------------------------------------------------
2724
28   m_slot->reset_w(newval ? CLEAR_LINE : ASSERT_LINE);
29}
30
3125INPUT_CHANGED_MEMBER( c64_final3_cartridge_device::freeze )
3226{
33   if (!newval)
27   if (newval)
3428   {
3529      m_game = 0;
3630      m_hidden = 0;
3731   }
3832
39   m_slot->nmi_w(newval ? CLEAR_LINE : ASSERT_LINE);
33   m_slot->nmi_w(newval);
4034}
4135
36
37//-------------------------------------------------
38//  INPUT_PORTS( c64_final3 )
39//-------------------------------------------------
40
4241static INPUT_PORTS_START( c64_final3 )
4342   PORT_START("SW")
44   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11) PORT_CHANGED_MEMBER(DEVICE_SELF, c64_final3_cartridge_device, reset, 0)
45   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Freeze") PORT_CODE(KEYCODE_F12) PORT_CHANGED_MEMBER(DEVICE_SELF, c64_final3_cartridge_device, freeze, 0)
43   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_expansion_slot_device, reset_w)
44   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Freeze") PORT_CODE(KEYCODE_F12) PORT_CHANGED_MEMBER(DEVICE_SELF, c64_final3_cartridge_device, freeze, 0)
4645INPUT_PORTS_END
4746
4847
trunk/src/mess/machine/c64_final3.h
r21071r21072
3434   // optional information overrides
3535   virtual ioport_constructor device_input_ports() const;
3636
37   DECLARE_INPUT_CHANGED_MEMBER( reset );
3837   DECLARE_INPUT_CHANGED_MEMBER( freeze );
3938
4039protected:
trunk/src/mess/machine/c64_final.c
r21071r21072
1818const device_type C64_FINAL = &device_creator<c64_final_cartridge_device>;
1919
2020
21INPUT_CHANGED_MEMBER( c64_final_cartridge_device::reset )
22{
23   if (!newval)
24   {
25      device_reset();
26   }
21//-------------------------------------------------
22//  INPUT_CHANGED_MEMBER( freeze )
23//-------------------------------------------------
2724
28   m_slot->reset_w(newval ? CLEAR_LINE : ASSERT_LINE);
29}
30
3125INPUT_CHANGED_MEMBER( c64_final_cartridge_device::freeze )
3226{
33   if (!newval)
27   if (newval)
3428   {
3529      m_game = 0;
3630   }
3731
38   m_slot->nmi_w(newval ? CLEAR_LINE : ASSERT_LINE);
32   m_slot->nmi_w(newval);
3933}
4034
35
36//-------------------------------------------------
37//  INPUT_PORTS( c64_final )
38//-------------------------------------------------
39
4140static INPUT_PORTS_START( c64_final )
4241   PORT_START("SW")
43   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11) PORT_CHANGED_MEMBER(DEVICE_SELF, c64_final_cartridge_device, reset, 0)
44   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Freeze") PORT_CODE(KEYCODE_F12) PORT_CHANGED_MEMBER(DEVICE_SELF, c64_final_cartridge_device, freeze, 0)
42   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F11) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_expansion_slot_device, reset_w)
43   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Freeze") PORT_CODE(KEYCODE_F12) PORT_CHANGED_MEMBER(DEVICE_SELF, c64_final_cartridge_device, freeze, 0)
4544INPUT_PORTS_END
4645
4746
trunk/src/mess/machine/c64_final.h
r21071r21072
3434   // optional information overrides
3535   virtual ioport_constructor device_input_ports() const;
3636
37   DECLARE_INPUT_CHANGED_MEMBER( reset );
3837   DECLARE_INPUT_CHANGED_MEMBER( freeze );
3938
4039protected:
trunk/src/mess/machine/c64_ieee488.c
r21071r21072
151151
152152
153153//-------------------------------------------------
154//  C64_EXPANSION_INTERFACE( expansion_intf )
155//-------------------------------------------------
156
157READ8_MEMBER( c64_ieee488_device::dma_cd_r )
158{
159   return m_slot->dma_cd_r(offset);
160}
161
162WRITE8_MEMBER( c64_ieee488_device::dma_cd_w )
163{
164   m_slot->dma_cd_w(offset, data);
165}
166
167WRITE_LINE_MEMBER( c64_ieee488_device::irq_w )
168{
169   m_slot->irq_w(state);
170}
171
172WRITE_LINE_MEMBER( c64_ieee488_device::nmi_w )
173{
174   m_slot->nmi_w(state);
175}
176
177WRITE_LINE_MEMBER( c64_ieee488_device::dma_w )
178{
179   m_slot->dma_w(state);
180}
181
182WRITE_LINE_MEMBER( c64_ieee488_device::reset_w )
183{
184   m_slot->reset_w(state);
185}
186
187static C64_EXPANSION_INTERFACE( expansion_intf )
188{
189   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_ieee488_device, dma_cd_r),
190   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c64_ieee488_device, dma_cd_w),
191   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_ieee488_device, irq_w),
192   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_ieee488_device, nmi_w),
193   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_ieee488_device, dma_w),
194   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_ieee488_device, reset_w)
195};
196
197
198//-------------------------------------------------
199154//  MACHINE_CONFIG_FRAGMENT( c64_ieee488 )
200155//-------------------------------------------------
201156
202157static MACHINE_CONFIG_FRAGMENT( c64_ieee488 )
203158   MCFG_TPI6525_ADD(MOS6525_TAG, tpi_intf)
159   
204160   MCFG_CBM_IEEE488_ADD(NULL)
205   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, 0, expansion_intf, c64_expansion_cards, NULL, NULL)
161   MCFG_C64_PASSTHRU_EXPANSION_SLOT_ADD()
206162MACHINE_CONFIG_END
207163
208164
r21071r21072
264220{
265221   data = m_exp->cd_r(space, offset, data, sphi2, ba, roml, romh, io1, io2);
266222
267   if (!roml)
223   if (!roml && m_roml_sel)
268224   {
269      if (m_roml_sel)
270      {
271         data = m_roml[offset & 0xfff];
272      }
225      data = m_roml[offset & 0xfff];
273226   }
274227   else if (!io2)
275228   {
276      data |= tpi6525_r(m_tpi, space, offset & 0x07);
229      data = tpi6525_r(m_tpi, space, offset & 0x07);
277230   }
278231
279232   return data;
trunk/src/mess/machine/c64_ieee488.h
r21071r21072
4343   DECLARE_WRITE8_MEMBER( tpi_pa_w );
4444   DECLARE_READ8_MEMBER( tpi_pc_r );
4545   DECLARE_WRITE8_MEMBER( tpi_pc_w );
46   DECLARE_READ8_MEMBER( dma_cd_r );
47   DECLARE_WRITE8_MEMBER( dma_cd_w );
48   DECLARE_WRITE_LINE_MEMBER( irq_w );
49   DECLARE_WRITE_LINE_MEMBER( nmi_w );
50   DECLARE_WRITE_LINE_MEMBER( dma_w );
51   DECLARE_WRITE_LINE_MEMBER( reset_w );
5246
5347protected:
5448   // device-level overrides
trunk/src/mess/includes/vic20.h
r21071r21072
109109
110110   DECLARE_WRITE_LINE_MEMBER( exp_reset_w );
111111
112   DECLARE_INPUT_CHANGED_MEMBER( restore_w );
113
114112   // keyboard state
115113   int m_key_col;
114
115   enum
116   {
117      BLK0 = 0,
118      BLK1,
119      BLK2,
120      BLK3,
121      BLK4,
122      BLK5,
123      BLK6,
124      BLK7
125   };
126
127
128   enum
129   {
130      RAM0 = 0,
131      RAM1,
132      RAM2,
133      RAM3,
134      RAM4,
135      RAM5,
136      RAM6,
137      RAM7
138   };
139
140
141   enum
142   {
143      IO0 = 4,
144      COLOR = 5,
145      IO2 = 6,
146      IO3 = 7
147   };
116148};
117149
118150#endif
trunk/src/mess/includes/c64.h
r21071r21072
132132   DECLARE_READ8_MEMBER( cpu_r );
133133   DECLARE_WRITE8_MEMBER( cpu_w );
134134
135   DECLARE_READ8_MEMBER( exp_dma_r );
136   DECLARE_WRITE8_MEMBER( exp_dma_w );
135   DECLARE_READ8_MEMBER( exp_dma_cd_r );
136   DECLARE_WRITE8_MEMBER( exp_dma_cd_w );
137137   DECLARE_WRITE_LINE_MEMBER( exp_irq_w );
138138   DECLARE_WRITE_LINE_MEMBER( exp_nmi_w );
139139   DECLARE_WRITE_LINE_MEMBER( exp_dma_w );
trunk/src/mess/includes/c128.h
r21071r21072
184184   DECLARE_WRITE_LINE_MEMBER( iec_srq_w );
185185   DECLARE_WRITE_LINE_MEMBER( iec_data_w );
186186
187   DECLARE_READ8_MEMBER( exp_dma_r );
188   DECLARE_WRITE8_MEMBER( exp_dma_w );
187   DECLARE_READ8_MEMBER( exp_dma_cd_r );
188   DECLARE_WRITE8_MEMBER( exp_dma_cd_w );
189189   DECLARE_WRITE_LINE_MEMBER( exp_irq_w );
190190   DECLARE_WRITE_LINE_MEMBER( exp_nmi_w );
191191   DECLARE_WRITE_LINE_MEMBER( exp_dma_w );
trunk/src/mess/drivers/c128.c
r21071r21072
12781278//  C64_EXPANSION_INTERFACE( expansion_intf )
12791279//-------------------------------------------------
12801280
1281READ8_MEMBER( c128_state::exp_dma_r )
1281READ8_MEMBER( c128_state::exp_dma_cd_r )
12821282{
12831283   int ba = 0, aec = 1, z80io = 1;
12841284   offs_t vma = 0;
r21071r21072
12861286   return read_memory(space, offset, vma, ba, aec, z80io);
12871287}
12881288
1289WRITE8_MEMBER( c128_state::exp_dma_w )
1289WRITE8_MEMBER( c128_state::exp_dma_cd_w )
12901290{
12911291   int ba = 0, aec = 1, z80io = 1;
12921292   offs_t vma = 0;
r21071r21072
13231323   }
13241324}
13251325
1326static C64_EXPANSION_INTERFACE( expansion_intf )
1327{
1328   DEVCB_DRIVER_MEMBER(c128_state, exp_dma_r),
1329   DEVCB_DRIVER_MEMBER(c128_state, exp_dma_w),
1330   DEVCB_DRIVER_LINE_MEMBER(c128_state, exp_irq_w),
1331   DEVCB_DRIVER_LINE_MEMBER(c128_state, exp_nmi_w),
1332   DEVCB_DRIVER_LINE_MEMBER(c128_state, exp_dma_w),
1333   DEVCB_DRIVER_LINE_MEMBER(c128_state, exp_reset_w)
1334};
13351326
1336
13371327//-------------------------------------------------
13381328//  C64_USER_PORT_INTERFACE( user_intf )
13391329//-------------------------------------------------
r21071r21072
14101400   m_reset = 1;
14111401
14121402   m_mmu->reset();
1403   m_vic->reset();
1404   m_vdc->reset();
1405   m_sid->reset();
14131406   m_cia1->reset();
14141407   m_cia2->reset();
1408
14151409   m_iec->reset();
14161410   m_exp->reset();
14171411   m_user->reset();
r21071r21072
14691463   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
14701464   MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(MOS8564_TAG, mos8564_device, lp_w))
14711465   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL)
1472   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6567_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL)
1466   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6567_CLOCK, c64_expansion_cards, NULL, NULL)
1467   MCFG_C64_EXPANSION_SLOT_IRQ_CALLBACKS(DEVWRITELINE(DEVICE_SELF, c128_state, exp_irq_w), DEVWRITELINE(DEVICE_SELF, c128_state, exp_nmi_w), DEVWRITELINE(DEVICE_SELF, c128_state, exp_reset_w))
1468   MCFG_C64_EXPANSION_SLOT_DMA_CALLBACKS(DEVREAD8(DEVICE_SELF, c128_state, exp_dma_cd_r), DEVWRITE8(DEVICE_SELF, c128_state, exp_dma_cd_w), DEVWRITELINE(DEVICE_SELF, c128_state, exp_dma_w))
14731469   MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL)
14741470
14751471   // software list
r21071r21072
15881584   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
15891585   MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(MOS8566_TAG, mos8566_device, lp_w))
15901586   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL)
1591   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL)
1587   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, c64_expansion_cards, NULL, NULL)
1588   MCFG_C64_EXPANSION_SLOT_IRQ_CALLBACKS(DEVWRITELINE(DEVICE_SELF, c128_state, exp_irq_w), DEVWRITELINE(DEVICE_SELF, c128_state, exp_nmi_w), DEVWRITELINE(DEVICE_SELF, c128_state, exp_reset_w))
1589   MCFG_C64_EXPANSION_SLOT_DMA_CALLBACKS(DEVREAD8(DEVICE_SELF, c128_state, exp_dma_cd_r), DEVWRITE8(DEVICE_SELF, c128_state, exp_dma_cd_w), DEVWRITELINE(DEVICE_SELF, c128_state, exp_dma_w))
15921590   MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL)
15931591
15941592   // software list
trunk/src/mess/drivers/vic10.c
r21071r21072
585585void vic10_state::machine_reset()
586586{
587587   m_maincpu->reset();
588   
589   m_vic->reset();
590   m_sid->reset();
591   m_cia->reset();
588592
589593   m_exp->reset();
590594}
trunk/src/mess/drivers/cbm2.c
r21071r21072
20662066
20672067   m_maincpu->reset();
20682068
2069   if (m_crtc) m_crtc->reset();
2070   m_sid->reset();
20692071   m_tpi1->reset();
20702072   m_tpi2->reset();
20712073   m_acia->reset();
r21071r21072
20832085{
20842086   MACHINE_RESET_CALL_MEMBER(cbm2);
20852087
2088   m_vic->reset();
2089
20862090   m_statvid = 1;
20872091   m_vicdotsel = 1;
20882092   m_vicbnksel = 0x03;
trunk/src/mess/drivers/vic20.c
r21071r21072
7171
7272
7373//**************************************************************************
74//  MACROS/CONSTANTS
75//**************************************************************************
76
77enum
78{
79   BLK0 = 0,
80   BLK1,
81   BLK2,
82   BLK3,
83   BLK4,
84   BLK5,
85   BLK6,
86   BLK7
87};
88
89
90enum
91{
92   RAM0 = 0,
93   RAM1,
94   RAM2,
95   RAM3,
96   RAM4,
97   RAM5,
98   RAM6,
99   RAM7
100};
101
102
103enum
104{
105   IO0 = 4,
106   COLOR = 5,
107   IO2 = 6,
108   IO3 = 7
109};
110
111
112
113//**************************************************************************
11474//  MEMORY MANAGEMENT
11575//**************************************************************************
11676
r21071r21072
341301//  INPUT_PORTS( vic20 )
342302//-------------------------------------------------
343303
344INPUT_CHANGED_MEMBER( vic20_state::restore_w )
345{
346   m_via0->write_ca1(newval);
347}
348
349304static INPUT_PORTS_START( vic20 )
350305   PORT_START( "ROW0" )
351306   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Del  Inst") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
r21071r21072
428383   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2)              PORT_CHAR('2') PORT_CHAR('"')
429384
430385   PORT_START( "RESTORE" )
431   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RESTORE") PORT_CODE(KEYCODE_PRTSCR) PORT_CHANGED_MEMBER(DEVICE_SELF, vic20_state, restore_w, 0)
386   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RESTORE") PORT_CODE(KEYCODE_PRTSCR) PORT_WRITE_LINE_DEVICE_MEMBER(M6522_0_TAG, via6522_device, write_ca1)
432387
433388   PORT_START( "LOCK" )
434389   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("SHIFT LOCK") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
r21071r21072
756711{
757712   m_maincpu->reset();
758713
714   m_vic->reset();
715   m_via0->reset();
716   m_via1->reset();
717
759718   m_iec->reset();
760719   m_exp->reset();
761720   m_user->reset();
trunk/src/mess/drivers/c64.c
r21071r21072
474474//-------------------------------------------------
475475
476476static INPUT_PORTS_START( c64gs )
477   // no keyboard
477478INPUT_PORTS_END
478479
479480
r21071r21072
946947//  C64_EXPANSION_INTERFACE( expansion_intf )
947948//-------------------------------------------------
948949
949READ8_MEMBER( c64_state::exp_dma_r )
950READ8_MEMBER( c64_state::exp_dma_cd_r )
950951{
951952   return m_maincpu->space(AS_PROGRAM).read_byte(offset);
952953}
953954
954WRITE8_MEMBER( c64_state::exp_dma_w )
955WRITE8_MEMBER( c64_state::exp_dma_cd_w )
955956{
956957   m_maincpu->space(AS_PROGRAM).write_byte(offset, data);
957958}
r21071r21072
988989   }
989990}
990991
991static C64_EXPANSION_INTERFACE( expansion_intf )
992{
993   DEVCB_DRIVER_MEMBER(c64_state, exp_dma_r),
994   DEVCB_DRIVER_MEMBER(c64_state, exp_dma_w),
995   DEVCB_DRIVER_LINE_MEMBER(c64_state, exp_irq_w),
996   DEVCB_DRIVER_LINE_MEMBER(c64_state, exp_nmi_w),
997   DEVCB_DRIVER_LINE_MEMBER(c64_state, exp_dma_w),
998   DEVCB_DRIVER_LINE_MEMBER(c64_state, exp_reset_w)
999};
1000992
1001
1002993//-------------------------------------------------
1003994//  C64_USER_PORT_INTERFACE( user_intf )
1004995//-------------------------------------------------
r21071r21072
10601051{
10611052   m_maincpu->reset();
10621053
1054   m_vic->reset();
1055   m_sid->reset();
10631056   m_cia1->reset();
10641057   m_cia2->reset();
1058   
10651059   m_iec->reset();
10661060   m_exp->reset();
10671061   m_user->reset();
r21071r21072
11111105   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
11121106   MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(MOS6567_TAG, mos6567_device, lp_w))
11131107   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL)
1114   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6567_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL)
1108   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6567_CLOCK, c64_expansion_cards, NULL, NULL)
1109   MCFG_C64_EXPANSION_SLOT_IRQ_CALLBACKS(DEVWRITELINE(DEVICE_SELF, c64_state, exp_irq_w), DEVWRITELINE(DEVICE_SELF, c64_state, exp_nmi_w), DEVWRITELINE(DEVICE_SELF, c64_state, exp_reset_w))
1110   MCFG_C64_EXPANSION_SLOT_DMA_CALLBACKS(DEVREAD8(DEVICE_SELF, c64_state, exp_dma_cd_r), DEVWRITE8(DEVICE_SELF, c64_state, exp_dma_cd_w), DEVWRITELINE(DEVICE_SELF, c64_state, exp_dma_w))
11151111   MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL)
11161112   MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS)
11171113
r21071r21072
12201216   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
12211217   MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(MOS6569_TAG, mos6569_device, lp_w))
12221218   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL)
1223   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL)
1219   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, c64_expansion_cards, NULL, NULL)
1220   MCFG_C64_EXPANSION_SLOT_IRQ_CALLBACKS(DEVWRITELINE(DEVICE_SELF, c64_state, exp_irq_w), DEVWRITELINE(DEVICE_SELF, c64_state, exp_nmi_w), DEVWRITELINE(DEVICE_SELF, c64_state, exp_reset_w))
1221   MCFG_C64_EXPANSION_SLOT_DMA_CALLBACKS(DEVREAD8(DEVICE_SELF, c64_state, exp_dma_cd_r), DEVWRITE8(DEVICE_SELF, c64_state, exp_dma_cd_w), DEVWRITELINE(DEVICE_SELF, c64_state, exp_dma_w))
12241222   MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL)
12251223   MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS)
12261224
r21071r21072
13071305   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
13081306   MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(MOS6569_TAG, mos6569_device, lp_w))
13091307   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL)
1310   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL)
1308   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, c64_expansion_cards, NULL, NULL)
1309   MCFG_C64_EXPANSION_SLOT_IRQ_CALLBACKS(DEVWRITELINE(DEVICE_SELF, c64_state, exp_irq_w), DEVWRITELINE(DEVICE_SELF, c64_state, exp_nmi_w), DEVWRITELINE(DEVICE_SELF, c64_state, exp_reset_w))
1310   MCFG_C64_EXPANSION_SLOT_DMA_CALLBACKS(DEVREAD8(DEVICE_SELF, c64_state, exp_dma_cd_r), DEVWRITE8(DEVICE_SELF, c64_state, exp_dma_cd_w), DEVWRITELINE(DEVICE_SELF, c64_state, exp_dma_w))
13111311   MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL)
13121312   MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS)
13131313

Previous 199869 Revisions Next


© 1997-2024 The MAME Team