Previous 199869 Revisions Next

r20769 Wednesday 6th February, 2013 at 14:34:13 UTC by Curt Coder
(MESS) devcb2 conversions. (nw)
[src/emu]emu.mak
[src/emu/machine]ds75160a.c ds75160a.h mos6529.c mos6529.h mos6551.c* mos6551.h*
[src/mess/drivers]c128.c c64.c cbm2.c pet2001.c plus4.c vic10.c vic20.c
[src/mess/includes]c128.h c64.h cbm2.h plus4.h
[src/mess/machine]petcass.c petcass.h petexp.c petexp.h superpet.c superpet.h vcs_lightpen.c vcsctrl.c vcsctrl.h

trunk/src/emu/emu.mak
r20768r20769
226226   $(EMUMACHINE)/microtch.o    \
227227   $(EMUMACHINE)/mos6526.o     \
228228   $(EMUMACHINE)/mos6529.o     \
229   $(EMUMACHINE)/mos6551.o     \
229230   $(EMUMACHINE)/msm5832.o     \
230231   $(EMUMACHINE)/msm58321.o    \
231232   $(EMUMACHINE)/msm6242.o     \
trunk/src/emu/machine/ds75160a.c
r20768r20769
2929
3030ds75160a_device::ds75160a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
3131   : device_t(mconfig, DS75160A, "DS75160A", tag, owner, clock),
32      m_read(*this),
33      m_write(*this),
3234      m_data(0xff),
3335      m_te(0),
3436      m_pe(0)
r20768r20769
3739
3840
3941//-------------------------------------------------
40//  device_config_complete - perform any
41//  operations now that the configuration is
42//  complete
43//-------------------------------------------------
44
45void ds75160a_device::device_config_complete()
46{
47   // inherit a copy of the static data
48   const ds75160a_interface *intf = reinterpret_cast<const ds75160a_interface *>(static_config());
49   if (intf != NULL)
50      *static_cast<ds75160a_interface *>(this) = *intf;
51
52   // or initialize to defaults if none provided
53   else
54   {
55      memset(&m_in_bus_cb, 0, sizeof(m_in_bus_cb));
56      memset(&m_out_bus_cb, 0, sizeof(m_out_bus_cb));
57   }
58}
59
60
61//-------------------------------------------------
6242//  device_start - device-specific startup
6343//-------------------------------------------------
6444
6545void ds75160a_device::device_start()
6646{
6747   // resolve callbacks
68   m_in_bus_func.resolve(m_in_bus_cb, *this);
69   m_out_bus_func.resolve(m_out_bus_cb, *this);
48   m_read.resolve_safe(0);
49   m_write.resolve_safe();
7050
7151   // register for state saving
7252   save_item(NAME(m_data));
r20768r20769
8565
8666   if (!m_te)
8767   {
88      data = m_in_bus_func(0);
68      data = m_read(0);
8969   }
9070
9171   return data;
r20768r20769
10282
10383   if (m_te)
10484   {
105      m_out_bus_func(0, m_data);
85      m_write((offs_t)0, m_data);
10686   }
10787}
10888
r20768r20769
11595{
11696   if (m_te != state)
11797   {
118      m_out_bus_func(0, m_te ? m_data : 0xff);
98      m_write((offs_t)0, m_te ? m_data : 0xff);
11999   }
120100
121101   m_te = state;
trunk/src/emu/machine/ds75160a.h
r20768r20769
3333//  INTERFACE CONFIGURATION MACROS
3434///*************************************************************************
3535
36#define MCFG_DS75160A_ADD(_tag, _config) \
36#define MCFG_DS75160A_ADD(_tag, _read, _write) \
3737   MCFG_DEVICE_ADD(_tag, DS75160A, 0)  \
38   MCFG_DEVICE_CONFIG(_config)
38   downcast<ds75160a_device *>(device)->set_callbacks(DEVCB2_##_read, DEVCB2_##_write);
3939
4040
41#define DS75160A_INTERFACE(name) \
42   const ds75160a_interface (name) =
4341
44
45
4642///*************************************************************************
4743//  TYPE DEFINITIONS
4844///*************************************************************************
4945
50// ======================> ds75160a_interface
51
52struct ds75160a_interface
53{
54   devcb_read8     m_in_bus_cb;
55   devcb_write8    m_out_bus_cb;
56};
57
58
5946// ======================> ds75160a_device
6047
61class ds75160a_device : public device_t,
62                  public ds75160a_interface
48class ds75160a_device : public device_t
6349{
6450public:
6551   // construction/destruction
6652   ds75160a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
6753
54   template<class _read, class _write> void set_callbacks(_read rd, _write wr) {
55      m_read.set_callback(rd);
56      m_write.set_callback(wr);
57   }
58
6859   DECLARE_READ8_MEMBER( read );
6960   DECLARE_WRITE8_MEMBER( write );
7061
r20768r20769
7364
7465protected:
7566   // device-level overrides
76   virtual void device_config_complete();
7767   virtual void device_start();
7868
7969private:
80   devcb_resolved_read8    m_in_bus_func;
81   devcb_resolved_write8   m_out_bus_func;
70   devcb2_read8  m_read;
71   devcb2_write8 m_write;
8272
8373   UINT8 m_data;
8474
trunk/src/emu/machine/mos6551.c
r0r20769
1/**********************************************************************
2
3    MOS Technology 6551 Asynchronous Communication Interface Adapter
4
5    Copyright MESS Team.
6    Visit http://mamedev.org for licensing and usage restrictions.
7
8**********************************************************************/
9
10#include "mos6551.h"
11
12
13
14//**************************************************************************
15//  MACROS / CONSTANTS
16//**************************************************************************
17
18#define LOG 0
19
20
21const int mos6551_device::brg_divider[] = {
22   0, 2304, 1536, 1048, 856, 768, 384, 192, 96, 64, 48, 32, 24, 16, 12, 6
23};
24
25
26
27//**************************************************************************
28//  DEVICE DEFINITIONS
29//**************************************************************************
30
31// device type definition
32const device_type MOS6551 = &device_creator<mos6551_device>;
33
34
35
36//**************************************************************************
37//  LIVE DEVICE
38//**************************************************************************
39
40//-------------------------------------------------
41//  mos6551_device - constructor
42//-------------------------------------------------
43
44mos6551_device::mos6551_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
45   : device_t(mconfig, MOS6551, "MOS6551", tag, owner, clock),
46      device_serial_interface(mconfig, *this),
47      m_irq_handler(*this),
48      m_ctrl(0),
49      m_cmd(CMD_RIE),
50      m_st(ST_TDRE),
51      m_ext_rxc(0)
52{
53}
54
55
56//-------------------------------------------------
57//  device_start - device-specific startup
58//-------------------------------------------------
59
60void mos6551_device::device_start()
61{
62   m_irq_handler.resolve_safe();
63
64   transmit_register_reset();
65   receive_register_reset();
66}
67
68
69//-------------------------------------------------
70//  device_reset - device-specific reset
71//-------------------------------------------------
72
73void mos6551_device::device_reset()
74{
75   m_ctrl = 0;
76   m_cmd = CMD_RIE;
77
78   update_serial();
79}
80
81
82//-------------------------------------------------
83//  tra_complete -
84//-------------------------------------------------
85
86void mos6551_device::tra_complete()
87{
88   if ((m_cmd & CMD_TC_MASK) == CMD_TC_TIE_RTS_LO)
89   {
90      m_st |= ST_IRQ;
91      m_irq_handler(ASSERT_LINE);
92   }
93
94   if (!(m_st & ST_TDRE))
95   {
96      transmit_register_setup(m_tdr);
97      m_st |= ST_TDRE;
98   }
99}
100
101
102//-------------------------------------------------
103//  rcv_complete -
104//-------------------------------------------------
105
106void mos6551_device::rcv_complete()
107{
108   if (m_st & ST_RDRF)
109   {
110      m_st |= ST_OR;
111   }
112   else
113   {
114      m_st |= ST_RDRF;
115
116      if (!(m_cmd & CMD_RIE))
117      {
118         m_st |= ST_IRQ;
119         m_irq_handler(ASSERT_LINE);
120      }
121   }
122}
123
124
125//-------------------------------------------------
126//  input_callback -
127//-------------------------------------------------
128
129void mos6551_device::input_callback(UINT8 state)
130{
131   m_input_state = state;
132}
133
134
135//-------------------------------------------------
136//  update_serial -
137//-------------------------------------------------
138
139void mos6551_device::update_serial()
140{
141   int brg = m_ctrl & CTRL_BRG_MASK;
142
143   if (brg == CTRL_BRG_16X_EXTCLK)
144   {
145      set_rcv_rate(m_ext_rxc / 16);
146      set_tra_rate(m_ext_rxc / 16);
147   }
148   else
149   {
150      int baud = clock() / brg_divider[brg] / 16;
151     
152      set_tra_rate(baud);
153
154      if (m_ctrl & CTRL_RXC_BRG)
155      {
156         set_rcv_rate(baud);
157      }
158      else
159      {
160         set_rcv_rate(m_ext_rxc / 16);
161      }
162
163      int num_data_bits = 8;
164      int stop_bit_count = 1;
165      int parity_code = SERIAL_PARITY_NONE;
166
167      switch (m_ctrl & CTRL_WL_MASK)
168      {
169      case CTRL_WL_8: num_data_bits = 8; break;
170      case CTRL_WL_7: num_data_bits = 7; break;
171      case CTRL_WL_6: num_data_bits = 6; break;
172      case CTRL_WL_5: num_data_bits = 5; break;
173      }
174
175      set_data_frame(num_data_bits, stop_bit_count, parity_code);
176   }
177
178   if (m_cmd & CMD_DTR)
179      m_connection_state |= SERIAL_STATE_DTR;
180   else
181      m_connection_state &= ~SERIAL_STATE_DTR;
182
183   if ((m_cmd & CMD_TC_MASK) == CMD_TC_RTS_HI)
184      m_connection_state &= ~SERIAL_STATE_RTS;
185   else
186      m_connection_state |= SERIAL_STATE_RTS;
187
188   serial_connection_out();
189}
190
191
192//-------------------------------------------------
193//  read -
194//-------------------------------------------------
195
196READ8_MEMBER( mos6551_device::read )
197{
198   UINT8 data = 0;
199
200   switch (offset & 0x03)
201   {
202   case 0:
203      if (is_receive_register_full())
204      {
205         receive_register_extract();
206         data = get_received_char();
207      }
208
209      m_st &= ~(ST_RDRF | ST_OR | ST_FE | ST_PE);
210      break;
211
212   case 1:
213      data = m_st;
214      m_st &= ~ST_IRQ;
215      m_irq_handler(CLEAR_LINE);
216      break;
217
218   case 2:
219      data = m_cmd;
220      break;
221
222   case 3:
223      data = m_ctrl;
224      break;
225   }
226
227   return data;
228}
229
230
231//-------------------------------------------------
232//  write -
233//-------------------------------------------------
234
235WRITE8_MEMBER( mos6551_device::write )
236{
237   switch (offset & 0x03)
238   {
239   case 0:
240      m_tdr = data;
241      m_st &= ~ST_TDRE;
242     
243      if (is_transmit_register_empty())
244      {
245         transmit_register_setup(m_tdr);
246         m_st |= ST_TDRE;
247      }
248      break;
249
250   case 1:
251      // programmed reset
252      m_cmd = (m_cmd & 0xe0) | CMD_RIE;
253      m_st &= ~ST_OR;
254      update_serial();
255      break;
256
257   case 2:
258      m_cmd = data;
259      update_serial();
260      break;
261
262   case 3:
263      m_ctrl = data;
264      update_serial();
265      break;
266   }
267}
268
269
270//-------------------------------------------------
271//  set_rxc - set external receiver clock
272//-------------------------------------------------
273
274void mos6551_device::set_rxc(int clock)
275{
276   m_ext_rxc = clock;
277}
Property changes on: trunk/src/emu/machine/mos6551.c
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/machine/mos6551.h
r0r20769
1/**********************************************************************
2
3    MOS Technology 6551 Asynchronous Communication Interface Adapter
4
5    Copyright MESS Team.
6    Visit http://mamedev.org for licensing and usage restrictions.
7
8**********************************************************************
9                            _____   _____
10                   GND   1 |*    \_/     | 28  R/_W
11                   CS0   2 |             | 27  phi2
12                  _CS1   3 |             | 26  _IRQ
13                  _RES   4 |             | 25  DB7
14                   RxC   5 |             | 24  DB6
15                 XTAL1   6 |             | 23  DB5
16                 XTAL2   7 |   MOS6551   | 22  DB4
17                  _RTS   8 |             | 21  DB3
18                  _CTS   9 |             | 20  DB2
19                   TxD  10 |             | 19  DB1
20                  _DTR  11 |             | 18  DB0
21                   RxD  12 |             | 17  _DBR
22                   RS0  13 |             | 16  _DCD
23                   RS1  14 |_____________| 15  Vcc
24
25**********************************************************************/
26
27#pragma once
28
29#ifndef __MOS6551__
30#define __MOS6551__
31
32#include "emu.h"
33
34
35
36//**************************************************************************
37//  INTERFACE CONFIGURATION MACROS
38//**************************************************************************
39
40#define MCFG_MOS6551_ADD(_tag, _clock, _irq) \
41   MCFG_DEVICE_ADD(_tag, MOS6551, _clock) \
42   devcb = &mos6551_device::set_irq_handler(*device, DEVCB2_##_irq);
43
44
45
46//**************************************************************************
47//  TYPE DEFINITIONS
48//**************************************************************************
49
50// ======================> mos6551_device
51
52class mos6551_device :  public device_t,
53                  public device_serial_interface
54{
55public:
56   // construction/destruction
57   mos6551_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
58
59   // static configuration helpers
60   template<class _Object> static devcb2_base &set_irq_handler(device_t &device, _Object object) { return downcast<mos6551_device &>(device).m_irq_handler.set_callback(object); }
61
62   DECLARE_READ8_MEMBER( read );
63   DECLARE_WRITE8_MEMBER( write );
64
65   void set_rxc(int clock);
66
67protected:
68   // device-level overrides
69   virtual void device_start();
70   virtual void device_reset();
71
72   // device_serial_interface overrides
73   virtual void tra_complete();
74   virtual void rcv_complete();
75   virtual void input_callback(UINT8 state);
76
77   enum
78   {
79      CTRL_BRG_16X_EXTCLK = 0,
80      CTRL_BRG_50,
81      CTRL_BRG_75,
82      CTRL_BRG_109_92,
83      CTRL_BRG_134_58,
84      CTRL_BRG_150,
85      CTRL_BRG_300,
86      CTRL_BRG_600,
87      CTRL_BRG_1200,
88      CTRL_BRG_1800,
89      CTRL_BRG_2400,
90      CTRL_BRG_3600,
91      CTRL_BRG_4800,
92      CTRL_BRG_7200,
93      CTRL_BRG_9600,
94      CTRL_BRG_19200,
95      CTRL_BRG_MASK = 0x0f,
96     
97      CTRL_RXC_EXT = 0x00,
98      CTRL_RXC_BRG = 0x10,
99      CTRL_RXC_MASK = 0x10,
100     
101      CTRL_WL_8 = 0x00,
102      CTRL_WL_7 = 0x20,
103      CTRL_WL_6 = 0x40,
104      CTRL_WL_5 = 0x60,
105      CTRL_WL_MASK = 0x60,
106     
107      CTRL_SB_1 = 0x00,
108      CTRL_SB_2 = 0x80,
109      CTRL_SB_MASK = 0x80
110   };
111
112   enum
113   {
114      CMD_DTR = 0x01,
115     
116      CMD_RIE = 0x02,
117     
118      CMD_TC_RTS_HI = 0x00,
119      CMD_TC_TIE_RTS_LO = 0x04,
120      CMD_TC_RTS_LO = 0x08,
121      CMD_TC_BRK = 0x0c,
122      CMD_TC_MASK = 0x0c,
123
124      CMD_ECHO = 0x10,
125
126      CMD_PARITY = 0x20,
127      CMD_PARITY_ODD = 0x00,
128      CMD_PARITY_EVEN = 0x40,
129      CMD_PARITY_MARK = 0x80,
130      CMD_PARITY_SPACE = 0xc0,
131      CMD_PARITY_MASK = 0xc0
132   };
133
134   enum
135   {
136      ST_PE = 0x01,
137      ST_FE = 0x02,
138      ST_OR = 0x04,
139      ST_RDRF = 0x08,
140      ST_TDRE = 0x10,
141      ST_DCD = 0x20,
142      ST_DSR = 0x40,
143      ST_IRQ = 0x80
144   };
145
146   void update_serial();
147
148   devcb2_write_line m_irq_handler;
149
150   UINT8 m_ctrl;
151   UINT8 m_cmd;
152   UINT8 m_st;
153   UINT8 m_tdr;
154
155   int m_ext_rxc;
156
157   static const int brg_divider[16];
158};
159
160
161// device type definition
162extern const device_type MOS6551;
163
164
165
166#endif
Property changes on: trunk/src/emu/machine/mos6551.h
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/machine/mos6529.c
r20768r20769
2020
2121
2222//**************************************************************************
23//  LIVE DEVICE
23//  DEVICE DEFINITIONS
2424//**************************************************************************
2525
2626// device type definition
2727const device_type MOS6529 = &device_creator<mos6529_device>;
2828
29//-------------------------------------------------
30//  mos6529_device - constructor
31//-------------------------------------------------
3229
33mos6529_device::mos6529_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
34   : device_t(mconfig, MOS6529, "MOS6529", tag, owner, clock)
35{
36}
3730
31//**************************************************************************
32//  LIVE DEVICE
33//**************************************************************************
3834
3935//-------------------------------------------------
40//  device_config_complete - perform any
41//  operations now that the configuration is
42//  complete
36//  mos6529_device - constructor
4337//-------------------------------------------------
4438
45void mos6529_device::device_config_complete()
39mos6529_device::mos6529_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
40   : device_t(mconfig, MOS6529, "MOS6529", tag, owner, clock),
41      m_read_port(*this),
42      m_write_port(*this)
4643{
47   // inherit a copy of the static data
48   const mos6529_interface *intf = reinterpret_cast<const mos6529_interface *>(static_config());
49   if (intf != NULL)
50      *static_cast<mos6529_interface *>(this) = *intf;
51
52   // or initialize to defaults if none provided
53   else
54   {
55      memset(&m_in_p_cb, 0, sizeof(m_in_p_cb));
56      memset(&m_out_p_cb, 0, sizeof(m_out_p_cb));
57   }
5844}
5945
6046
r20768r20769
6551void mos6529_device::device_start()
6652{
6753   // resolve callbacks
68   m_in_p_func.resolve(m_in_p_cb, *this);
69   m_out_p_func.resolve(m_out_p_cb, *this);
54   m_read_port.resolve_safe(0);
55   m_write_port.resolve_safe();
7056}
7157
7258
r20768r20769
7662
7763READ8_MEMBER( mos6529_device::read )
7864{
79   return m_in_p_func(0);
65   return m_read_port(0);
8066}
8167
8268
r20768r20769
8672
8773WRITE8_MEMBER( mos6529_device::write )
8874{
89   m_out_p_func(0, data);
75   m_write_port((offs_t)0, data);
9076}
trunk/src/emu/machine/mos6529.h
r20768r20769
3333//  INTERFACE CONFIGURATION MACROS
3434//**************************************************************************
3535
36#define MCFG_MOS6529_ADD(_tag, _config) \
37   MCFG_DEVICE_ADD(_tag, MOS6529, 0)   \
38   MCFG_DEVICE_CONFIG(_config)
36#define MCFG_MOS6529_ADD(_tag, _read, _write) \
37   MCFG_DEVICE_ADD(_tag, MOS6529, 0) \
38   downcast<mos6529_device *>(device)->set_callbacks(DEVCB2_##_read, DEVCB2_##_write);
3939
40#define MOS6529_INTERFACE(name) \
41   const mos6529_interface (name) =
4240
4341
44
4542//**************************************************************************
4643//  TYPE DEFINITIONS
4744//**************************************************************************
4845
49// ======================> mos6529_interface
50
51struct mos6529_interface
52{
53   devcb_read8             m_in_p_cb;
54   devcb_write8            m_out_p_cb;
55};
56
57
5846// ======================> mos6529_device
5947
60class mos6529_device :  public device_t,
61                  public mos6529_interface
48class mos6529_device :  public device_t
6249{
6350public:
6451   // construction/destruction
6552   mos6529_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
6653
54   template<class _read, class _write> void set_callbacks(_read rd, _write wr) {
55      m_read_port.set_callback(rd);
56      m_write_port.set_callback(wr);
57   }
58
6759   DECLARE_READ8_MEMBER( read );
6860   DECLARE_WRITE8_MEMBER( write );
6961
7062protected:
7163   // device-level overrides
72   virtual void device_config_complete();
7364   virtual void device_start();
7465
7566private:
76   devcb_resolved_read8        m_in_p_func;
77   devcb_resolved_write8       m_out_p_func;
67   devcb2_read8  m_read_port;
68   devcb2_write8 m_write_port;
7869};
7970
8071
trunk/src/mess/machine/petcass.c
r20768r20769
5353//-------------------------------------------------
5454
5555pet_datassette_port_device::pet_datassette_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
56      device_t(mconfig, PET_DATASSETTE_PORT, "Datassette Port", tag, owner, clock),
57      device_slot_interface(mconfig, *this)
56   device_t(mconfig, PET_DATASSETTE_PORT, "Datassette Port", tag, owner, clock),
57   device_slot_interface(mconfig, *this),
58   m_read_handler(*this)
5859{
5960}
6061
r20768r20769
6970
7071
7172//-------------------------------------------------
72//  device_config_complete - perform any
73//  operations now that the configuration is
74//  complete
75//-------------------------------------------------
76
77void pet_datassette_port_device::device_config_complete()
78{
79   // inherit a copy of the static data
80   const pet_datassette_port_interface *intf = reinterpret_cast<const pet_datassette_port_interface *>(static_config());
81   if (intf != NULL)
82   {
83      *static_cast<pet_datassette_port_interface *>(this) = *intf;
84   }
85
86   // or initialize to defaults if none provided
87   else
88   {
89      memset(&m_out_read_cb, 0, sizeof(m_out_read_cb));
90   }
91}
92
93
94//-------------------------------------------------
9573//  device_start - device-specific startup
9674//-------------------------------------------------
9775
r20768r20769
10078   m_cart = dynamic_cast<device_pet_datassette_port_interface *>(get_card_device());
10179
10280   // resolve callbacks
103   m_out_read_func.resolve(m_out_read_cb, *this);
81   m_read_handler.resolve_safe();
10482}
10583
10684
r20768r20769
10987READ_LINE_MEMBER( pet_datassette_port_device::sense_r ) { int state = 1; if (m_cart != NULL) state = m_cart->datassette_sense(); return state; }
11088WRITE_LINE_MEMBER( pet_datassette_port_device::motor_w ) { if (m_cart != NULL) m_cart->datassette_motor(state); }
11189
112WRITE_LINE_MEMBER( pet_datassette_port_device::read_w ) { m_out_read_func(state); }
90WRITE_LINE_MEMBER( pet_datassette_port_device::read_w ) { m_read_handler(state); }
trunk/src/mess/machine/petcass.h
r20768r20769
3838//  INTERFACE CONFIGURATION MACROS
3939//**************************************************************************
4040
41#define PET_DATASSETTE_PORT_INTERFACE(_name) \
42   const pet_datassette_port_interface (_name) =
43
44
45#define MCFG_PET_DATASSETTE_PORT_ADD(_tag, _config, _slot_intf, _def_slot, _def_inp) \
41#define MCFG_PET_DATASSETTE_PORT_ADD(_tag, _slot_intf, _def_slot, _def_inp, _devcb) \
4642   MCFG_DEVICE_ADD(_tag, PET_DATASSETTE_PORT, 0) \
47   MCFG_DEVICE_CONFIG(_config) \
48   MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _def_inp, false)
43   MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _def_inp, false) \
44   devcb = &pet_datassette_port_device::set_read_handler(*device, DEVCB2_##_devcb);
4945
5046
5147
r20768r20769
5349//  TYPE DEFINITIONS
5450//**************************************************************************
5551
56// ======================> pet_datassette_port_interface
57
58struct pet_datassette_port_interface
59{
60   devcb_write_line    m_out_read_cb;
61};
62
63
6452// ======================> pet_datassette_port_device
6553
6654class device_pet_datassette_port_interface;
6755
6856class pet_datassette_port_device : public device_t,
69                           public pet_datassette_port_interface,
7057                           public device_slot_interface
7158{
7259public:
r20768r20769
7461   pet_datassette_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
7562   virtual ~pet_datassette_port_device();
7663
64   // static configuration helpers
65   template<class _Object> static devcb2_base &set_read_handler(device_t &device, _Object object) { return downcast<pet_datassette_port_device &>(device).m_read_handler.set_callback(object); }
66
7767   // computer interface
7868   DECLARE_READ_LINE_MEMBER( read );
7969   DECLARE_WRITE_LINE_MEMBER( write );
r20768r20769
8575
8676protected:
8777   // device-level overrides
88   virtual void device_config_complete();
8978   virtual void device_start();
9079
91   devcb_resolved_write_line   m_out_read_func;
80   devcb2_write_line m_read_handler;
9281
9382   device_pet_datassette_port_interface *m_cart;
9483};
trunk/src/mess/machine/vcs_lightpen.c
r20768r20769
2121INPUT_CHANGED_MEMBER( vcs_lightpen_device::trigger )
2222{
2323   // TODO trigger timer at correct screen position
24   m_port->trigger_w(newval);
2425}
2526
2627
r20768r20769
3031   PORT_BIT( 0xdf, IP_ACTIVE_LOW, IPT_UNUSED )
3132
3233   PORT_START("LIGHTX")
33   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X) PORT_NAME("Lightpen X Axis") PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1)
34   PORT_BIT( 0xff, 0x00, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(45) PORT_KEYDELTA(15)
3435
3536   PORT_START("LIGHTY")
36   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y) PORT_NAME("Lightpen Y Axis") PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1)
37   PORT_BIT( 0xff, 0x00, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(45) PORT_KEYDELTA(15)
3738INPUT_PORTS_END
3839
3940
trunk/src/mess/machine/superpet.c
r20768r20769
7070   MCFG_CPU_ADD(M6809_TAG, M6809, XTAL_16MHz/16)
7171   MCFG_CPU_PROGRAM_MAP(superpet_mem)
7272
73   MCFG_ACIA6551_ADD(M6551_TAG) // XTAL_1_8432MHz
73   MCFG_MOS6551_ADD(M6551_TAG, XTAL_1_8432MHz, DEVWRITELINE(DEVICE_SELF, superpet_device, acia_irq_w))
7474   MCFG_MOS6702_ADD(MOS6702_TAG, XTAL_16MHz/16)
7575MACHINE_CONFIG_END
7676
r20768r20769
384384{
385385   m_slot->dma_bd_w(offset, data);
386386}
387
388
389//-------------------------------------------------
390//  acia_irq_w -
391//-------------------------------------------------
392
393WRITE_LINE_MEMBER( superpet_device::acia_irq_w )
394{
395   m_acia_irq = state;
396
397   //m_maincpu->set_input_line(M6809_IRQ_LINE, m_pet_irq || m_acia_irq);
398}
trunk/src/mess/machine/superpet.h
r20768r20769
1515
1616#include "emu.h"
1717#include "cpu/m6809/m6809.h"
18#include "machine/6551acia.h"
18#include "machine/mos6551.h"
1919#include "machine/mos6702.h"
2020#include "machine/petexp.h"
2121
r20768r20769
4141
4242   DECLARE_READ8_MEMBER( read );
4343   DECLARE_WRITE8_MEMBER( write );
44   DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
4445
4546protected:
4647   // device-level overrides
r20768r20769
7778
7879private:
7980   required_device<cpu_device> m_maincpu;
80   required_device<acia6551_device> m_acia;
81   required_device<mos6551_device> m_acia;
8182   required_device<mos6702_device> m_dongle;
8283   required_memory_region m_rom;
8384   optional_shared_ptr<UINT8> m_ram;
trunk/src/mess/machine/vcsctrl.c
r20768r20769
5454
5555vcs_control_port_device::vcs_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
5656   device_t(mconfig, VCS_CONTROL_PORT, "Atari VCS control port", tag, owner, clock),
57   device_slot_interface(mconfig, *this)
57   device_slot_interface(mconfig, *this),
58   m_trigger_handler(*this)
5859{
5960}
6061
r20768r20769
7576void vcs_control_port_device::device_start()
7677{
7778   m_device = dynamic_cast<device_vcs_control_port_interface *>(get_card_device());
79
80   m_trigger_handler.resolve_safe();
7881}
7982
8083
r20768r20769
9093bool vcs_control_port_device::has_pot_x() { return exists() && m_device->has_pot_x(); }
9194bool vcs_control_port_device::has_pot_y() { return exists() && m_device->has_pot_y(); }
9295
96void vcs_control_port_device::trigger_w(int state)
97{
98   m_trigger_handler(state);
99}
100
93101//-------------------------------------------------
94102//  SLOT_INTERFACE( vcs_control_port_devices )
95103//-------------------------------------------------
trunk/src/mess/machine/vcsctrl.h
r20768r20769
2828   MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _def_inp, false)
2929
3030
31#define MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(_devcb) \
32   devcb = &vcs_control_port_device::set_trigger_handler(*device, DEVCB2_##_devcb);
3133
34
35
3236//**************************************************************************
3337//  TYPE DEFINITIONS
3438//**************************************************************************
r20768r20769
4549   vcs_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
4650   virtual ~vcs_control_port_device();
4751
52   // static configuration helpers
53   template<class _Object> static devcb2_base &set_trigger_handler(device_t &device, _Object object) { return downcast<vcs_control_port_device &>(device).m_trigger_handler.set_callback(object); }
54
4855   // computer interface
4956
5057   // Data returned by the joy_r methods:
r20768r20769
7279   bool has_pot_x();
7380   bool has_pot_y();
7481
82   void trigger_w(int state);
83
7584protected:
7685   // device-level overrides
7786   virtual void device_start();
7887
7988   device_vcs_control_port_interface *m_device;
89
90private:
91   devcb2_write_line m_trigger_handler;
8092};
8193
8294
trunk/src/mess/machine/petexp.c
r20768r20769
3737
3838pet_expansion_slot_device::pet_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
3939   device_t(mconfig, PET_EXPANSION_SLOT, "PET memory expansion port", tag, owner, clock),
40   device_slot_interface(mconfig, *this)
40   device_slot_interface(mconfig, *this),
41   m_read_dma(*this),
42   m_write_dma(*this)
4143{
4244}
4345
r20768r20769
7274
7375
7476//-------------------------------------------------
75//  device_config_complete - perform any
76//  operations now that the configuration is
77//  complete
78//-------------------------------------------------
79
80void pet_expansion_slot_device::device_config_complete()
81{
82   // inherit a copy of the static data
83   const pet_expansion_slot_interface *intf = reinterpret_cast<const pet_expansion_slot_interface *>(static_config());
84   if (intf != NULL)
85   {
86      *static_cast<pet_expansion_slot_interface *>(this) = *intf;
87   }
88
89   // or initialize to defaults if none provided
90   else
91   {
92      memset(&m_in_dma_bd_cb, 0, sizeof(m_in_dma_bd_cb));
93      memset(&m_out_dma_bd_cb, 0, sizeof(m_out_dma_bd_cb));
94   }
95}
96
97
98//-------------------------------------------------
9977//  device_start - device-specific startup
10078//-------------------------------------------------
10179
r20768r20769
10482   m_card = dynamic_cast<device_pet_expansion_card_interface *>(get_card_device());
10583
10684   // resolve callbacks
107   m_in_dma_bd_func.resolve(m_in_dma_bd_cb, *this);
108   m_out_dma_bd_func.resolve(m_out_dma_bd_cb, *this);
85   m_read_dma.resolve_safe(0);
86   m_write_dma.resolve_safe();
10987}
11088
11189
r20768r20769
186164
187165UINT8 pet_expansion_slot_device::dma_bd_r(offs_t offset)
188166{
189   return m_in_dma_bd_func(offset);
167   return m_read_dma(offset);
190168}
191169
192170
r20768r20769
196174
197175void pet_expansion_slot_device::dma_bd_w(offs_t offset, UINT8 data)
198176{
199   m_out_dma_bd_func(offset, data);
177   m_write_dma(offset, data);
200178}
201179
202180
trunk/src/mess/machine/petexp.h
r20768r20769
3030//  INTERFACE CONFIGURATION MACROS
3131//**************************************************************************
3232
33#define PET_EXPANSION_INTERFACE(_name) \
34   const pet_expansion_slot_interface (_name) =
35
36
37#define MCFG_PET_EXPANSION_SLOT_ADD(_tag, _clock, _config, _slot_intf, _def_slot, _def_inp) \
33#define MCFG_PET_EXPANSION_SLOT_ADD(_tag, _clock, _slot_intf, _def_slot, _def_inp) \
3834   MCFG_DEVICE_ADD(_tag, PET_EXPANSION_SLOT, _clock) \
39   MCFG_DEVICE_CONFIG(_config) \
4035   MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _def_inp, false)
4136
4237
38#define MCFG_PET_EXPANSION_SLOT_DMA_CALLBACKS(_read, _write) \
39   downcast<pet_expansion_slot_device *>(device)->set_callbacks(DEVCB2_##_read, DEVCB2_##_write);
4340
41
42
4443//**************************************************************************
4544//  TYPE DEFINITIONS
4645//**************************************************************************
4746
48// ======================> pet_expansion_slot_interface
49
50struct pet_expansion_slot_interface
51{
52   devcb_read8         m_in_dma_bd_cb;
53   devcb_write8        m_out_dma_bd_cb;
54};
55
56
5747// ======================> pet_expansion_slot_device
5848
5949class device_pet_expansion_card_interface;
6050
6151class pet_expansion_slot_device : public device_t,
62                           public device_slot_interface,
63                           public pet_expansion_slot_interface
52                           public device_slot_interface
6453{
6554public:
6655   // construction/destruction
6756   pet_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
6857   virtual ~pet_expansion_slot_device();
6958
59   template<class _read, class _write> void set_callbacks(_read rd, _write wr) {
60      m_read_dma.set_callback(rd);
61      m_write_dma.set_callback(wr);
62   }
63
7064   // computer interface
7165   int norom_r(address_space &space, offs_t offset, int sel);
7266   UINT8 read(address_space &space, offs_t offset, UINT8 data, int sel);
r20768r20769
8175
8276protected:
8377   // device-level overrides
84   virtual void device_config_complete();
8578   virtual void device_start();
8679   virtual void device_reset();
8780
8881   device_pet_expansion_card_interface *m_card;
8982
90   devcb_resolved_read8        m_in_dma_bd_func;
91   devcb_resolved_write8       m_out_dma_bd_func;
83   devcb2_read8  m_read_dma;
84   devcb2_write8 m_write_dma;
9285};
9386
9487
trunk/src/mess/includes/cbm2.h
r20768r20769
99#include "formats/cbm_snqk.h"
1010#include "includes/cbm.h"
1111#include "machine/6525tpi.h"
12#include "machine/6551acia.h"
1312#include "machine/cbm2exp.h"
1413#include "machine/cbm2user.h"
1514#include "machine/cbmipt.h"
r20768r20769
1716#include "machine/ds75161a.h"
1817#include "machine/ieee488.h"
1918#include "machine/mos6526.h"
19#include "machine/mos6551.h"
2020#include "machine/petcass.h"
2121#include "machine/pic8259.h"
2222#include "machine/pla.h"
r20768r20769
104104         m_graphics(1),
105105         m_todclk(0),
106106         m_tpi1_irq(CLEAR_LINE),
107         m_cass_rd(1),
108         m_user_flag(0),
107         m_acia_irq(CLEAR_LINE),
109108         m_user_irq(CLEAR_LINE),
110109         m_tpi2_pa(0),
111110         m_tpi2_pb(0)
r20768r20769
117116   required_device<sid6581_device> m_sid;
118117   required_device<tpi6525_device> m_tpi1;
119118   required_device<tpi6525_device> m_tpi2;
120   required_device<acia6551_device> m_acia;
119   required_device<mos6551_device> m_acia;
121120   required_device<mos6526_device> m_cia;
122121   required_device<ds75160a_device> m_ieee1;
123122   required_device<ds75161a_device> m_ieee2;
r20768r20769
225224   // interrupt state
226225   int m_todclk;
227226   int m_tpi1_irq;
228   int m_cass_rd;
229   int m_user_flag;
227   int m_acia_irq;
230228   int m_user_irq;
231229
232230   // keyboard state;
trunk/src/mess/includes/plus4.h
r20768r20769
6969   required_device<m7501_device> m_maincpu;
7070   required_device<pls100_device> m_pla;
7171   required_device<mos7360_device> m_ted;
72   optional_device<acia6551_device> m_acia;
72   optional_device<mos6551_device> m_acia;
7373   optional_device<mos6529_device> m_spi_user;
7474   required_device<mos6529_device> m_spi_kb;
7575   optional_device<t6721_device> m_t6721;
r20768r20769
106106   DECLARE_READ8_MEMBER( ted_videoram_r );
107107
108108   DECLARE_READ8_MEMBER( cpu_r );
109   DECLARE_READ8_MEMBER( c16_cpu_r );
110109   DECLARE_WRITE8_MEMBER( cpu_w );
111110
112111   DECLARE_WRITE_LINE_MEMBER( ted_irq_w );
r20768r20769
114113   DECLARE_READ8_MEMBER( ted_rom_r );
115114   DECLARE_READ8_MEMBER( ted_k_r );
116115
117   DECLARE_READ8_MEMBER( spi_kb_r );
118116   DECLARE_WRITE8_MEMBER( spi_kb_w );
119117
118   DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
119
120120   DECLARE_READ8_MEMBER( exp_dma_r );
121121   DECLARE_WRITE8_MEMBER( exp_dma_w );
122122   DECLARE_WRITE_LINE_MEMBER( exp_irq_w );
r20768r20769
153153};
154154
155155
156class c16_state : public plus4_state
157{
158public:
159   c16_state(const machine_config &mconfig, device_type type, const char *tag)
160      : plus4_state(mconfig, type, tag)
161   { }
156162
163   DECLARE_READ8_MEMBER( cpu_r );
164};
165
166
167
157168#endif
trunk/src/mess/includes/c64.h
r20768r20769
7171         m_cia2_irq(CLEAR_LINE),
7272         m_vic_irq(CLEAR_LINE),
7373         m_exp_irq(CLEAR_LINE),
74         m_exp_nmi(CLEAR_LINE),
75         m_cass_rd(1),
76         m_iec_srq(1)
74         m_exp_nmi(CLEAR_LINE)
7775   { }
7876
7977   required_device<m6510_device> m_maincpu;
r20768r20769
134132   DECLARE_READ8_MEMBER( cpu_r );
135133   DECLARE_WRITE8_MEMBER( cpu_w );
136134
137   DECLARE_WRITE_LINE_MEMBER( tape_read_w );
138
139   DECLARE_WRITE_LINE_MEMBER( iec_srq_w );
140
141135   DECLARE_READ8_MEMBER( exp_dma_r );
142136   DECLARE_WRITE8_MEMBER( exp_dma_w );
143137   DECLARE_WRITE_LINE_MEMBER( exp_irq_w );
r20768r20769
161155   int m_exp_irq;
162156   int m_exp_nmi;
163157   int m_exp_dma;
164   int m_cass_rd;
165   int m_iec_srq;
166158};
167159
168160
trunk/src/mess/includes/c128.h
r20768r20769
181181   DECLARE_READ8_MEMBER( cpu_r );
182182   DECLARE_WRITE8_MEMBER( cpu_w );
183183
184   DECLARE_WRITE_LINE_MEMBER( tape_read_w );
185
186184   DECLARE_WRITE_LINE_MEMBER( iec_srq_w );
187185   DECLARE_WRITE_LINE_MEMBER( iec_data_w );
188186
trunk/src/mess/drivers/c128.c
r20768r20769
5050
5151   m_subcpu->set_input_line(M8502_IRQ_LINE, irq);
5252   m_subcpu->set_input_line(INPUT_LINE_NMI, nmi);
53
54   int flag = m_cass_rd && m_iec_srq;
55
56   m_cia1->flag_w(flag);
5753}
5854
5955
r20768r20769
13281324
13291325
13301326//-------------------------------------------------
1331//  PET_DATASSETTE_PORT_INTERFACE( datassette_intf )
1332//-------------------------------------------------
1333
1334WRITE_LINE_MEMBER( c128_state::tape_read_w )
1335{
1336   m_cass_rd = state;
1337
1338   check_interrupts();
1339}
1340
1341static PET_DATASSETTE_PORT_INTERFACE( datassette_intf )
1342{
1343   DEVCB_DRIVER_LINE_MEMBER(c128_state, tape_read_w),
1344};
1345
1346
1347//-------------------------------------------------
13481327//  C64_EXPANSION_INTERFACE( expansion_intf )
13491328//-------------------------------------------------
13501329
r20768r20769
14621441   save_item(NAME(m_exp_irq));
14631442   save_item(NAME(m_exp_nmi));
14641443   save_item(NAME(m_exp_dma));
1465   save_item(NAME(m_cass_rd));
1466   save_item(NAME(m_iec_srq));
14671444   save_item(NAME(m_vic_k));
14681445   save_item(NAME(m_caps_lock));
14691446}
r20768r20769
15311508   MCFG_MOS6526_ADD(MOS6526_1_TAG, VIC6567_CLOCK, 60, cia1_intf)
15321509   MCFG_MOS6526_ADD(MOS6526_2_TAG, VIC6567_CLOCK, 60, cia2_intf)
15331510   MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS)
1534   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, "c1530", NULL)
1511   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, "c1530", NULL, DEVWRITELINE(MOS6526_2_TAG, mos6526_device, flag_w))
15351512   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
1513   MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(MOS8564_TAG, mos8564_device, lp_w))
15361514   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL)
15371515   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6567_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL)
15381516   MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL)
15391517
15401518   // software list
15411519   MCFG_SOFTWARE_LIST_ADD("cart_list_vic10", "vic10")
1542   MCFG_SOFTWARE_LIST_FILTER("cart_list_vic10", "NTSC")
15431520   MCFG_SOFTWARE_LIST_ADD("cart_list_c64", "c64_cart")
1544   MCFG_SOFTWARE_LIST_FILTER("cart_list_c64", "NTSC")
1545   MCFG_SOFTWARE_LIST_ADD("cart_list_c128", "c128_cart")
1546   MCFG_SOFTWARE_LIST_FILTER("cart_list_c128", "NTSC")
1547   MCFG_SOFTWARE_LIST_ADD("disk_list_c64", "c64_flop")
1548   MCFG_SOFTWARE_LIST_FILTER("disk_list_c64", "NTSC")
1549   MCFG_SOFTWARE_LIST_ADD("disk_list_c128", "c128_flop")
1550   MCFG_SOFTWARE_LIST_FILTER("disk_list_c128", "NTSC")
1521   MCFG_SOFTWARE_LIST_ADD("cart_list", "c128_cart")
1522   MCFG_SOFTWARE_LIST_ADD("cass_list_c64", "c64_cass")
1523   MCFG_SOFTWARE_LIST_ADD("flop_list_c64", "c64_flop")
1524   MCFG_SOFTWARE_LIST_ADD("flop_list", "c128_flop")
15511525   MCFG_SOFTWARE_LIST_ADD("from_list", "c128_rom")
1526   MCFG_SOFTWARE_LIST_FILTER("cart_list_vic10", "NTSC")
1527   MCFG_SOFTWARE_LIST_FILTER("cart_list_c64", "NTSC")
1528   MCFG_SOFTWARE_LIST_FILTER("cart_list", "NTSC")
1529   MCFG_SOFTWARE_LIST_FILTER("cass_list_c64", "NTSC")
1530   MCFG_SOFTWARE_LIST_FILTER("flop_list_c64", "NTSC")
1531   MCFG_SOFTWARE_LIST_FILTER("flop_list", "NTSC")
15521532   MCFG_SOFTWARE_LIST_FILTER("from_list", "NTSC")
15531533
15541534   // function ROM
r20768r20769
16351615   MCFG_MOS6526_ADD(MOS6526_1_TAG, VIC6569_CLOCK, 50, cia1_intf)
16361616   MCFG_MOS6526_ADD(MOS6526_2_TAG, VIC6569_CLOCK, 50, cia2_intf)
16371617   MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS)
1638   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, "c1530", NULL)
1618   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, "c1530", NULL, DEVWRITELINE(MOS6526_2_TAG, mos6526_device, flag_w))
16391619   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
1620   MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(MOS8566_TAG, mos8566_device, lp_w))
16401621   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL)
16411622   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL)
16421623   MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL)
16431624
16441625   // software list
16451626   MCFG_SOFTWARE_LIST_ADD("cart_list_vic10", "vic10")
1646   MCFG_SOFTWARE_LIST_FILTER("cart_list_vic10", "PAL")
16471627   MCFG_SOFTWARE_LIST_ADD("cart_list_c64", "c64_cart")
1648   MCFG_SOFTWARE_LIST_FILTER("cart_list_c64", "PAL")
1649   MCFG_SOFTWARE_LIST_ADD("cart_list_c128", "c128_cart")
1650   MCFG_SOFTWARE_LIST_FILTER("cart_list_c128", "PAL")
1651   MCFG_SOFTWARE_LIST_ADD("disk_list_c64", "c64_flop")
1652   MCFG_SOFTWARE_LIST_FILTER("disk_list_c64", "PAL")
1653   MCFG_SOFTWARE_LIST_ADD("disk_list_c128", "c128_flop")
1654   MCFG_SOFTWARE_LIST_FILTER("disk_list_c128", "PAL")
1628   MCFG_SOFTWARE_LIST_ADD("cart_list", "c128_cart")
1629   MCFG_SOFTWARE_LIST_ADD("cass_list_c64", "c64_cass")
1630   MCFG_SOFTWARE_LIST_ADD("flop_list_c64", "c64_flop")
1631   MCFG_SOFTWARE_LIST_ADD("flop_list", "c128_flop")
16551632   MCFG_SOFTWARE_LIST_ADD("from_list", "c128_rom")
1633   MCFG_SOFTWARE_LIST_FILTER("cart_list_vic10", "PAL")
1634   MCFG_SOFTWARE_LIST_FILTER("cart_list_c64", "PAL")
1635   MCFG_SOFTWARE_LIST_FILTER("cart_list", "PAL")
1636   MCFG_SOFTWARE_LIST_FILTER("cass_list_c64", "PAL")
1637   MCFG_SOFTWARE_LIST_FILTER("flop_list_c64", "PAL")
1638   MCFG_SOFTWARE_LIST_FILTER("flop_list", "PAL")
16561639   MCFG_SOFTWARE_LIST_FILTER("from_list", "PAL")
16571640
16581641   // function ROM
trunk/src/mess/drivers/c64.c
r20768r20769
4848
4949   m_maincpu->set_input_line(M6510_IRQ_LINE, irq);
5050   m_maincpu->set_input_line(INPUT_LINE_NMI, nmi);
51
52   int flag = m_cass_rd && m_iec_srq;
53
54   m_cia1->flag_w(flag);
5551}
5652
5753
r20768r20769
999995
1000996
1001997//-------------------------------------------------
1002//  PET_DATASSETTE_PORT_INTERFACE( datassette_intf )
1003//-------------------------------------------------
1004
1005WRITE_LINE_MEMBER( c64_state::tape_read_w )
1006{
1007   m_cass_rd = state;
1008
1009   check_interrupts();
1010}
1011
1012static PET_DATASSETTE_PORT_INTERFACE( datassette_intf )
1013{
1014   DEVCB_DRIVER_LINE_MEMBER(c64_state, tape_read_w),
1015};
1016
1017
1018//-------------------------------------------------
1019998//  CBM_IEC_INTERFACE( iec_intf )
1020999//-------------------------------------------------
10211000
1022WRITE_LINE_MEMBER( c64_state::iec_srq_w )
1023{
1024   m_iec_srq = state;
1025
1026   check_interrupts();
1027}
1028
10291001static CBM_IEC_INTERFACE( iec_intf )
10301002{
1031   DEVCB_DRIVER_LINE_MEMBER(c64_state, iec_srq_w),
1003   DEVCB_DEVICE_LINE_MEMBER(MOS6526_1_TAG, mos6526_device, flag_w),
10321004   DEVCB_DEVICE_LINE_MEMBER(C64_USER_PORT_TAG, c64_user_port_device, atn_w),
10331005   DEVCB_NULL,
10341006   DEVCB_NULL,
r20768r20769
11431115   save_item(NAME(m_exp_irq));
11441116   save_item(NAME(m_exp_nmi));
11451117   save_item(NAME(m_exp_dma));
1146   save_item(NAME(m_cass_rd));
1147   save_item(NAME(m_iec_srq));
11481118}
11491119
11501120
r20768r20769
11941164   MCFG_PLS100_ADD(PLA_TAG)
11951165   MCFG_MOS6526_ADD(MOS6526_1_TAG, VIC6567_CLOCK, 60, cia1_intf)
11961166   MCFG_MOS6526_ADD(MOS6526_2_TAG, VIC6567_CLOCK, 60, cia2_intf)
1197   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, "c1530", NULL)
1167   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, "c1530", NULL, DEVWRITELINE(MOS6526_1_TAG, mos6526_device, flag_w))
11981168   MCFG_CBM_IEC_ADD(iec_intf, "c1541")
11991169   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
1170   MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(MOS6567_TAG, mos6567_device, lp_w))
12001171   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL)
12011172   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6567_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL)
12021173   MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL)
r20768r20769
12941265   MCFG_PLS100_ADD(PLA_TAG)
12951266   MCFG_MOS6526_ADD(MOS6526_1_TAG, VIC6569_CLOCK, 50, cia1_intf)
12961267   MCFG_MOS6526_ADD(MOS6526_2_TAG, VIC6569_CLOCK, 50, cia2_intf)
1297   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, "c1530", NULL)
1268   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, "c1530", NULL, DEVWRITELINE(MOS6526_1_TAG, mos6526_device, flag_w))
12981269   MCFG_CBM_IEC_ADD(iec_intf, "c1541")
12991270   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
1271   MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(MOS6569_TAG, mos6569_device, lp_w))
13001272   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL)
13011273   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL)
13021274   MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL)
r20768r20769
13741346   MCFG_MOS6526_ADD(MOS6526_2_TAG, VIC6569_CLOCK, 50, cia2_intf)
13751347   MCFG_CBM_IEC_BUS_ADD(iec_intf)
13761348   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
1349   MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(MOS6569_TAG, mos6569_device, lp_w))
13771350   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL)
13781351   MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL)
13791352   MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL)
trunk/src/mess/drivers/cbm2.c
r20768r20769
16631663
16641664
16651665//-------------------------------------------------
1666//  PET_DATASSETTE_PORT_INTERFACE( datassette_intf )
1667//-------------------------------------------------
1668
1669WRITE_LINE_MEMBER( cbm2_state::tape_read_w )
1670{
1671   m_cass_rd = state;
1672
1673   m_cia->flag_w(m_cass_rd && m_user_flag);
1674}
1675
1676static PET_DATASSETTE_PORT_INTERFACE( datassette_intf )
1677{
1678   DEVCB_DRIVER_LINE_MEMBER(cbm2_state, tape_read_w)
1679};
1680
1681
1682//-------------------------------------------------
1683//  DS75160A_INTERFACE( ds75160a_intf )
1684//-------------------------------------------------
1685
1686static DS75160A_INTERFACE( ds75160a_intf )
1687{
1688   DEVCB_DEVICE_MEMBER(IEEE488_TAG, ieee488_device, dio_r),
1689   DEVCB_DEVICE_MEMBER(IEEE488_TAG, ieee488_device, dio_w)
1690};
1691
1692
1693//-------------------------------------------------
16941666//  DS75161A_INTERFACE( ds75161a_intf )
16951667//-------------------------------------------------
16961668
r20768r20769
20121984   save_item(NAME(m_ntsc));
20131985   save_item(NAME(m_todclk));
20141986   save_item(NAME(m_tpi1_irq));
2015   save_item(NAME(m_cass_rd));
2016   save_item(NAME(m_user_flag));
20171987   save_item(NAME(m_tpi2_pa));
20181988   save_item(NAME(m_tpi2_pb));
20191989   save_item(NAME(m_cia_pa));
r20768r20769
21322102   m_busy2 = 1;
21332103   m_graphics = 1;
21342104   m_tpi1_irq = CLEAR_LINE;
2135   m_cass_rd = 1;
21362105   m_user_irq = CLEAR_LINE;
21372106
21382107   m_maincpu->reset();
r20768r20769
22142183   MCFG_PLS100_ADD(PLA2_TAG)
22152184   MCFG_TPI6525_ADD(MOS6525_1_TAG, p500_tpi1_intf)
22162185   MCFG_TPI6525_ADD(MOS6525_2_TAG, p500_tpi2_intf)
2217   MCFG_ACIA6551_ADD(MOS6551A_TAG)
2186   MCFG_MOS6551_ADD(MOS6551A_TAG, XTAL_1_8432MHz, DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i4_w))
22182187   MCFG_MOS6526_ADD(MOS6526_TAG, VIC6567_CLOCK, 60, cia_intf)
2219   MCFG_DS75160A_ADD(DS75160A_TAG, ds75160a_intf)
2188   MCFG_DS75160A_ADD(DS75160A_TAG, DEVREAD8(IEEE488_TAG, ieee488_device, dio_r), DEVWRITE8(IEEE488_TAG, ieee488_device, dio_w))
22202189   MCFG_DS75161A_ADD(DS75161A_TAG, ds75161a_intf)
22212190   MCFG_CBM_IEEE488_ADD(ieee488_intf, "c8050")
2222   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, NULL, NULL)
2191   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, NULL, NULL, DEVWRITELINE(MOS6526_TAG, mos6526_device, flag_w))
22232192   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
2193   MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(MOS6567_TAG, mos6567_device, lp_w))
22242194   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL, NULL)
22252195   MCFG_CBM2_EXPANSION_SLOT_ADD(CBM2_EXPANSION_SLOT_TAG, VIC6567_CLOCK, cbm2_expansion_cards, NULL, NULL)
22262196   MCFG_CBM2_USER_PORT_ADD(CBM2_USER_PORT_TAG, p500_user_intf, cbm2_user_port_cards, NULL, NULL)
r20768r20769
22642234   MCFG_PLS100_ADD(PLA2_TAG)
22652235   MCFG_TPI6525_ADD(MOS6525_1_TAG, p500_tpi1_intf)
22662236   MCFG_TPI6525_ADD(MOS6525_2_TAG, p500_tpi2_intf)
2267   MCFG_ACIA6551_ADD(MOS6551A_TAG)
2237   MCFG_MOS6551_ADD(MOS6551A_TAG, XTAL_1_8432MHz, DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i4_w))
22682238   MCFG_MOS6526_ADD(MOS6526_TAG, VIC6569_CLOCK, 50, cia_intf)
2269   MCFG_DS75160A_ADD(DS75160A_TAG, ds75160a_intf)
2239   MCFG_DS75160A_ADD(DS75160A_TAG, DEVREAD8(IEEE488_TAG, ieee488_device, dio_r), DEVWRITE8(IEEE488_TAG, ieee488_device, dio_w))
22702240   MCFG_DS75161A_ADD(DS75161A_TAG, ds75161a_intf)
22712241   MCFG_CBM_IEEE488_ADD(ieee488_intf, "c8050")
2272   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, NULL, NULL)
2242   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, NULL, NULL, DEVWRITELINE(MOS6526_TAG, mos6526_device, flag_w))
22732243   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
2244   MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(MOS6569_TAG, mos6569_device, lp_w))
22742245   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL, NULL)
22752246   MCFG_CBM2_EXPANSION_SLOT_ADD(CBM2_EXPANSION_SLOT_TAG, VIC6569_CLOCK, cbm2_expansion_cards, NULL, NULL)
22762247   MCFG_CBM2_USER_PORT_ADD(CBM2_USER_PORT_TAG, p500_user_intf, cbm2_user_port_cards, NULL, NULL)
r20768r20769
23212292   MCFG_PLS100_ADD(PLA1_TAG)
23222293   MCFG_TPI6525_ADD(MOS6525_1_TAG, tpi1_intf)
23232294   MCFG_TPI6525_ADD(MOS6525_2_TAG, tpi2_intf)
2324   MCFG_ACIA6551_ADD(MOS6551A_TAG)
2295   MCFG_MOS6551_ADD(MOS6551A_TAG, XTAL_1_8432MHz, DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i4_w))
23252296   MCFG_MOS6526_ADD(MOS6526_TAG, XTAL_18MHz/9, 60, cia_intf)
2326   MCFG_DS75160A_ADD(DS75160A_TAG, ds75160a_intf)
2297   MCFG_DS75160A_ADD(DS75160A_TAG, DEVREAD8(IEEE488_TAG, ieee488_device, dio_r), DEVWRITE8(IEEE488_TAG, ieee488_device, dio_w))
23272298   MCFG_DS75161A_ADD(DS75161A_TAG, ds75161a_intf)
23282299   MCFG_CBM_IEEE488_ADD(ieee488_intf, "c8050")
2329   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, NULL, NULL)
2300   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, NULL, NULL, DEVWRITELINE(MOS6526_TAG, mos6526_device, flag_w))
23302301   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
23312302   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL, NULL)
23322303   MCFG_CBM2_EXPANSION_SLOT_ADD(CBM2_EXPANSION_SLOT_TAG, XTAL_18MHz/9, cbm2_expansion_cards, NULL, NULL)
r20768r20769
23452316//  MACHINE_CONFIG( b128 )
23462317//-------------------------------------------------
23472318
2348static MACHINE_CONFIG_START( b128, cbm2_state )
2349   MCFG_FRAGMENT_ADD(cbm2lp_ntsc)
2319static MACHINE_CONFIG_DERIVED( b128, cbm2lp_ntsc )
23502320   MCFG_FRAGMENT_ADD(128k)
23512321MACHINE_CONFIG_END
23522322
r20768r20769
23552325//  MACHINE_CONFIG( b256 )
23562326//-------------------------------------------------
23572327
2358static MACHINE_CONFIG_START( b256, cbm2_state )
2359   MCFG_FRAGMENT_ADD(cbm2lp_ntsc)
2328static MACHINE_CONFIG_DERIVED( b256, cbm2lp_ntsc )
23602329   MCFG_FRAGMENT_ADD(256k)
23612330MACHINE_CONFIG_END
23622331
r20768r20769
23652334//  MACHINE_CONFIG( cbm2lp_pal )
23662335//-------------------------------------------------
23672336
2368static MACHINE_CONFIG_START( cbm2lp_pal, cbm2_state )
2369   MCFG_FRAGMENT_ADD(cbm2lp_ntsc)
2370
2337static MACHINE_CONFIG_DERIVED( cbm2lp_pal, cbm2lp_ntsc )
23712338   MCFG_MACHINE_START_OVERRIDE(cbm2_state, cbm2_pal)
23722339
23732340   MCFG_DEVICE_REMOVE(MOS6526_TAG)
r20768r20769
23792346//  MACHINE_CONFIG( cbm610 )
23802347//-------------------------------------------------
23812348
2382static MACHINE_CONFIG_START( cbm610, cbm2_state )
2383   MCFG_FRAGMENT_ADD(cbm2lp_pal)
2349static MACHINE_CONFIG_DERIVED( cbm610, cbm2lp_pal )
23842350   MCFG_FRAGMENT_ADD(128k)
23852351MACHINE_CONFIG_END
23862352
r20768r20769
23892355//  MACHINE_CONFIG( cbm620 )
23902356//-------------------------------------------------
23912357
2392static MACHINE_CONFIG_START( cbm620, cbm2_state )
2393   MCFG_FRAGMENT_ADD(cbm2lp_pal)
2358static MACHINE_CONFIG_DERIVED( cbm620, cbm2lp_pal )
23942359   MCFG_FRAGMENT_ADD(256k)
23952360MACHINE_CONFIG_END
23962361
r20768r20769
23992364//  MACHINE_CONFIG( cbm2hp_ntsc )
24002365//-------------------------------------------------
24012366
2402static MACHINE_CONFIG_START( cbm2hp_ntsc, cbm2hp_state )
2403   MCFG_FRAGMENT_ADD(cbm2lp_ntsc)
2404
2405   // devices
2367static MACHINE_CONFIG_DERIVED_CLASS( cbm2hp_ntsc, cbm2lp_ntsc, cbm2hp_state )
24062368   MCFG_DEVICE_REMOVE(MOS6525_2_TAG)
24072369   MCFG_TPI6525_ADD(MOS6525_2_TAG, hp_tpi2_intf)
24082370MACHINE_CONFIG_END
r20768r20769
24122374//  MACHINE_CONFIG( b128hp )
24132375//-------------------------------------------------
24142376
2415static MACHINE_CONFIG_START( b128hp, cbm2hp_state )
2416   MCFG_FRAGMENT_ADD(cbm2hp_ntsc)
2377static MACHINE_CONFIG_DERIVED( b128hp, cbm2hp_ntsc )
24172378   MCFG_FRAGMENT_ADD(128k)
24182379MACHINE_CONFIG_END
24192380
r20768r20769
24222383//  MACHINE_CONFIG( b256hp )
24232384//-------------------------------------------------
24242385
2425static MACHINE_CONFIG_START( b256hp, cbm2hp_state )
2426   MCFG_FRAGMENT_ADD(cbm2hp_ntsc)
2386static MACHINE_CONFIG_DERIVED( b256hp, cbm2hp_ntsc )
24272387   MCFG_FRAGMENT_ADD(256k)
24282388MACHINE_CONFIG_END
24292389
r20768r20769
24322392//  MACHINE_CONFIG( bx256hp )
24332393//-------------------------------------------------
24342394
2435static MACHINE_CONFIG_START( bx256hp, cbm2hp_state )
2436   MCFG_FRAGMENT_ADD(b256hp)
2437
2395static MACHINE_CONFIG_DERIVED( bx256hp, b256hp )
24382396   MCFG_MACHINE_START_OVERRIDE(cbm2_state, cbm2x_ntsc)
24392397
24402398   MCFG_CPU_ADD(EXT_I8088_TAG, I8088, XTAL_12MHz)
r20768r20769
24512409//  MACHINE_CONFIG( cbm2hp_pal )
24522410//-------------------------------------------------
24532411
2454static MACHINE_CONFIG_START( cbm2hp_pal, cbm2hp_state )
2455   MCFG_FRAGMENT_ADD(cbm2hp_ntsc)
2456
2412static MACHINE_CONFIG_DERIVED( cbm2hp_pal, cbm2hp_ntsc )
24572413   MCFG_MACHINE_START_OVERRIDE(cbm2_state, cbm2_pal)
24582414
24592415   // devices
r20768r20769
24692425//  MACHINE_CONFIG( cbm710 )
24702426//-------------------------------------------------
24712427
2472static MACHINE_CONFIG_START( cbm710, cbm2hp_state )
2473   MCFG_FRAGMENT_ADD(cbm2hp_pal)
2428static MACHINE_CONFIG_DERIVED( cbm710, cbm2hp_pal )
24742429   MCFG_FRAGMENT_ADD(128k)
24752430MACHINE_CONFIG_END
24762431
r20768r20769
24792434//  MACHINE_CONFIG( cbm720 )
24802435//-------------------------------------------------
24812436
2482static MACHINE_CONFIG_START( cbm720, cbm2hp_state )
2483   MCFG_FRAGMENT_ADD(cbm2hp_pal)
2437static MACHINE_CONFIG_DERIVED( cbm720, cbm2hp_pal )
24842438   MCFG_FRAGMENT_ADD(256k)
24852439MACHINE_CONFIG_END
24862440
r20768r20769
24892443//  MACHINE_CONFIG( cbm730 )
24902444//-------------------------------------------------
24912445
2492static MACHINE_CONFIG_START( cbm730, cbm2hp_state )
2493   MCFG_FRAGMENT_ADD(cbm720)
2494
2446static MACHINE_CONFIG_DERIVED( cbm730, cbm720 )
24952447   MCFG_MACHINE_START_OVERRIDE(cbm2_state, cbm2x_pal)
24962448
24972449   MCFG_CPU_ADD(EXT_I8088_TAG, I8088, XTAL_12MHz)
r20768r20769
25372489   ROM_LOAD( "906114-03.u88", 0x00, 0xf5, CRC(668c073e) SHA1(1115858bb2dc91ea9e2016ba2e23ec94239358b4) )
25382490ROM_END
25392491
2540
2541//-------------------------------------------------
2542//  ROM( p500p )
2543//-------------------------------------------------
2544
25452492#define rom_p500p   rom_p500
25462493
25472494
r20768r20769
25902537   ROM_LOAD( "906114-04.u18", 0x00, 0xf5, CRC(ae3ec265) SHA1(334e0bc4b2c957ecb240c051d84372f7b47efba3) )
25912538ROM_END
25922539
2540#define rom_cbm610  rom_b128
2541#define rom_cbm620  rom_b256
25932542
2543
25942544//-------------------------------------------------
25952545//  ROM( b256 )
25962546//-------------------------------------------------
r20768r20769
26162566
26172567
26182568//-------------------------------------------------
2619//  ROM( cbm610 )
2620//-------------------------------------------------
2621
2622#define rom_cbm610  rom_b128
2623
2624
2625//-------------------------------------------------
2626//  ROM( cbm620 )
2627//-------------------------------------------------
2628
2629#define rom_cbm620  rom_b256
2630
2631
2632//-------------------------------------------------
26332569//  ROM( cbm620_hu )
26342570//-------------------------------------------------
26352571
r20768r20769
26732609   ROM_LOAD( "906114-05.u75", 0x00, 0xf5, CRC(ff6ba6b6) SHA1(45808c570eb2eda7091c51591b3dbd2db1ac646a) )
26742610ROM_END
26752611
2612#define rom_cbm710  rom_b128hp
26762613
2614
26772615//-------------------------------------------------
26782616//  ROM( b256hp )
26792617//-------------------------------------------------
r20768r20769
26972635   ROM_LOAD( "906114-05.u75", 0x00, 0xf5, CRC(ff6ba6b6) SHA1(45808c570eb2eda7091c51591b3dbd2db1ac646a) )
26982636ROM_END
26992637
2638#define rom_cbm720  rom_b256hp
27002639
2640
27012641//-------------------------------------------------
27022642//  ROM( bx256hp )
27032643//-------------------------------------------------
r20768r20769
27242664   ROM_LOAD( "906114-05.u75", 0x00, 0xf5, CRC(ff6ba6b6) SHA1(45808c570eb2eda7091c51591b3dbd2db1ac646a) )
27252665ROM_END
27262666
2727
2728//-------------------------------------------------
2729//  ROM( cbm710 )
2730//-------------------------------------------------
2731
2732#define rom_cbm710  rom_b128hp
2733
2734
2735//-------------------------------------------------
2736//  ROM( cbm720 )
2737//-------------------------------------------------
2738
2739#define rom_cbm720  rom_b256hp
2740
2741
2742//-------------------------------------------------
2743//  ROM( cbm730 )
2744//-------------------------------------------------
2745
27462667#define rom_cbm730  rom_bx256hp
27472668
27482669
trunk/src/mess/drivers/vic10.c
r20768r20769
555555   m_cassette->motor_w(BIT(data, 5));
556556}
557557
558//-------------------------------------------------
559//  PET_DATASSETTE_PORT_INTERFACE( datassette_intf )
560//-------------------------------------------------
561558
562static PET_DATASSETTE_PORT_INTERFACE( datassette_intf )
563{
564   DEVCB_DEVICE_LINE_MEMBER(MOS6526_TAG, mos6526_device, flag_w)
565};
566
567
568559//-------------------------------------------------
569560//  C64_EXPANSION_INTERFACE( expansion_intf )
570561//-------------------------------------------------
r20768r20769
652643   MCFG_SOUND_ADD(MOS6581_TAG, SID6581, VIC6566_CLOCK)
653644   MCFG_SOUND_CONFIG(sid_intf)
654645   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
655   MCFG_SOUND_ADD("dac", DAC, 0)
656   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
657646
658647   // devices
659648   MCFG_MOS6526_ADD(MOS6526_TAG, VIC6566_CLOCK, 60, cia_intf)
660   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, NULL, NULL)
649   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, "c1530", NULL, DEVWRITELINE(MOS6526_TAG, mos6526_device, flag_w))
661650   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
651   MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(MOS6566_TAG, mos6566_device, lp_w))
662652   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL)
663653   MCFG_VIC10_EXPANSION_SLOT_ADD(VIC10_EXPANSION_SLOT_TAG, VIC6566_CLOCK, expansion_intf, vic10_expansion_cards, NULL, NULL)
664654
trunk/src/mess/drivers/vic20.c
r20768r20769
702702
703703
704704//-------------------------------------------------
705//  PET_DATASSETTE_PORT_INTERFACE( datassette_intf )
706//-------------------------------------------------
707
708static PET_DATASSETTE_PORT_INTERFACE( datassette_intf )
709{
710   DEVCB_DEVICE_LINE_MEMBER(M6522_1_TAG, via6522_device, write_ca1),
711};
712
713
714//-------------------------------------------------
715705//  CBM_IEC_INTERFACE( cbm_iec_intf )
716706//-------------------------------------------------
717707
r20768r20769
822812   // devices
823813   MCFG_VIA6522_ADD(M6522_0_TAG, 0, via0_intf)
824814   MCFG_VIA6522_ADD(M6522_1_TAG, 0, via1_intf)
825   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, "c1530", NULL)
815   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, "c1530", NULL, DEVWRITELINE(M6522_1_TAG, via6522_device, write_ca1))
826816   MCFG_CBM_IEC_ADD(cbm_iec_intf, "c1541")
827   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, "joy", NULL)
828817   MCFG_VIC20_USER_PORT_ADD(VIC20_USER_PORT_TAG, user_intf, vic20_user_port_cards, NULL, NULL)
829818   MCFG_QUICKLOAD_ADD("quickload", cbm_vc20, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS)
830819
r20768r20769
853842   MCFG_SPEAKER_STANDARD_MONO("mono")
854843   MCFG_MOS6560_ADD(M6560_TAG, SCREEN_TAG, MOS6560_CLOCK, vic_intf, vic_videoram_map, vic_colorram_map)
855844   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
856   MCFG_SOUND_ADD("dac", DAC, 0)
857   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
858845
859846   // devices
860847   MCFG_VIC20_EXPANSION_SLOT_ADD(VIC20_EXPANSION_SLOT_TAG, MOS6560_CLOCK, expansion_intf, vic20_expansion_cards, NULL, NULL)
848   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, "joy", NULL)
849   MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(M6560_TAG, mos6560_device, lp_w))
861850
862851   // software lists
863852   MCFG_SOFTWARE_LIST_FILTER("cart_list", "NTSC")
r20768r20769
880869   MCFG_SPEAKER_STANDARD_MONO("mono")
881870   MCFG_MOS6561_ADD(M6560_TAG, SCREEN_TAG, MOS6561_CLOCK, vic_intf, vic_videoram_map, vic_colorram_map)
882871   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
883   MCFG_SOUND_ADD("dac", DAC, 0)
884   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
885872
886873   // devices
887874   MCFG_VIC20_EXPANSION_SLOT_ADD(VIC20_EXPANSION_SLOT_TAG, MOS6561_CLOCK, expansion_intf, vic20_expansion_cards, NULL, NULL)
875   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, "joy", NULL)
876   MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(M6561_TAG, mos6561_device, lp_w))
888877
889878   // software lists
890879   MCFG_SOFTWARE_LIST_FILTER("cart_list", "PAL")
trunk/src/mess/drivers/plus4.c
r20768r20769
503503   return data;
504504}
505505
506READ8_MEMBER( plus4_state::c16_cpu_r )
506READ8_MEMBER( c16_state::cpu_r )
507507{
508508   /*
509509
r20768r20769
650650
651651
652652//-------------------------------------------------
653//  MOS6529_INTERFACE( spi_user_intf )
654//-------------------------------------------------
655
656static MOS6529_INTERFACE( spi_user_intf )
657{
658   DEVCB_DEVICE_MEMBER(PLUS4_USER_PORT_TAG, plus4_user_port_device, p_r),
659   DEVCB_DEVICE_MEMBER(PLUS4_USER_PORT_TAG, plus4_user_port_device, p_w)
660};
661
662
663//-------------------------------------------------
664653//  MOS6529_INTERFACE( spi_kb_intf )
665654//-------------------------------------------------
666655
667READ8_MEMBER( plus4_state::spi_kb_r )
668{
669   return 0xff;
670}
671
672656WRITE8_MEMBER( plus4_state::spi_kb_w )
673657{
674658   m_kb = data;
675659}
676660
677static MOS6529_INTERFACE( spi_kb_intf )
678{
679   DEVCB_DRIVER_MEMBER(plus4_state, spi_kb_r),
680   DEVCB_DRIVER_MEMBER(plus4_state, spi_kb_w)
681};
682661
683
684662//-------------------------------------------------
685//  PET_DATASSETTE_PORT_INTERFACE( datassette_intf )
663//  MOS6551_INTERFACE( acia_intf )
686664//-------------------------------------------------
687665
688static PET_DATASSETTE_PORT_INTERFACE( datassette_intf )
666WRITE_LINE_MEMBER( plus4_state::acia_irq_w )
689667{
690   DEVCB_NULL
691};
668   m_acia_irq = state;
692669
670   check_interrupts();
671}
693672
673
694674//-------------------------------------------------
695675//  CBM_IEC_INTERFACE( iec_intf )
696676//-------------------------------------------------
r20768r20769
821801   MCFG_M7501_PORT_PULLS(0x00, 0xc0)
822802   MCFG_CPU_VBLANK_INT_DRIVER(SCREEN_TAG, plus4_state, c16_frame_interrupt)
823803   MCFG_CPU_PERIODIC_INT_DRIVER(plus4_state, c16_raster_interrupt, TED7360_HRETRACERATE)
824   MCFG_QUANTUM_TIME(attotime::from_hz(60))
804   MCFG_QUANTUM_PERFECT_CPU(MOS7501_TAG)
825805
826806   // video and sound hardware
827807   MCFG_SPEAKER_STANDARD_MONO("mono")
r20768r20769
830810
831811   // devices
832812   MCFG_PLS100_ADD(PLA_TAG)
833   MCFG_ACIA6551_ADD(MOS6551_TAG)
834   MCFG_MOS6529_ADD(MOS6529_USER_TAG, spi_user_intf)
835   MCFG_MOS6529_ADD(MOS6529_KB_TAG, spi_kb_intf)
836   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, plus4_datassette_devices, "c1531", NULL)
813   MCFG_MOS6551_ADD(MOS6551_TAG, XTAL_1_8432MHz, DEVWRITELINE(DEVICE_SELF, plus4_state, acia_irq_w))
814   MCFG_MOS6529_ADD(MOS6529_USER_TAG, DEVREAD8(PLUS4_USER_PORT_TAG, plus4_user_port_device, p_r), DEVWRITE8(PLUS4_USER_PORT_TAG, plus4_user_port_device, p_w))
815   MCFG_MOS6529_ADD(MOS6529_KB_TAG, CONSTANT(0xff), DEVWRITE8(DEVICE_SELF, plus4_state, spi_kb_w))
816   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, plus4_datassette_devices, "c1531", NULL, NULL)
837817   MCFG_CBM_IEC_ADD(iec_intf, NULL)
838818   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
839819   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL)
r20768r20769
867847   MCFG_M7501_PORT_PULLS(0x00, 0xc0)
868848   MCFG_CPU_VBLANK_INT_DRIVER(SCREEN_TAG, plus4_state, c16_frame_interrupt)
869849   MCFG_CPU_PERIODIC_INT_DRIVER(plus4_state, c16_raster_interrupt, TED7360_HRETRACERATE)
870   MCFG_QUANTUM_TIME(attotime::from_hz(60))
850   MCFG_QUANTUM_PERFECT_CPU(MOS7501_TAG)
871851
872852   // video and sound hardware
873853   MCFG_SPEAKER_STANDARD_MONO("mono")
r20768r20769
876856
877857   // devices
878858   MCFG_PLS100_ADD(PLA_TAG)
879   MCFG_ACIA6551_ADD(MOS6551_TAG)
880   MCFG_MOS6529_ADD(MOS6529_USER_TAG, spi_user_intf)
881   MCFG_MOS6529_ADD(MOS6529_KB_TAG, spi_kb_intf)
882   MCFG_QUICKLOAD_ADD("quickload", cbm_c16, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS)
883   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, plus4_datassette_devices, "c1531", NULL)
859   MCFG_MOS6551_ADD(MOS6551_TAG, XTAL_1_8432MHz, DEVWRITELINE(DEVICE_SELF, plus4_state, acia_irq_w))
860   MCFG_MOS6529_ADD(MOS6529_USER_TAG, DEVREAD8(PLUS4_USER_PORT_TAG, plus4_user_port_device, p_r), DEVWRITE8(PLUS4_USER_PORT_TAG, plus4_user_port_device, p_w))
861   MCFG_MOS6529_ADD(MOS6529_KB_TAG, CONSTANT(0xff), DEVWRITE8(DEVICE_SELF, plus4_state, spi_kb_w))
862   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, plus4_datassette_devices, "c1531", NULL, NULL)
884863   MCFG_CBM_IEC_ADD(iec_intf, NULL)
885864   MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL)
886865   MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy", NULL)
887866   MCFG_PLUS4_EXPANSION_SLOT_ADD(PLUS4_EXPANSION_SLOT_TAG, XTAL_17_73447MHz/20, expansion_intf, plus4_expansion_cards, "c1551", NULL)
888867   MCFG_PLUS4_USER_PORT_ADD(PLUS4_USER_PORT_TAG, plus4_user_port_cards, NULL, NULL)
868   MCFG_QUICKLOAD_ADD("quickload", cbm_c16, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS)
889869
890870   // internal ram
891871   MCFG_RAM_ADD(RAM_TAG)
r20768r20769
905885//  MACHINE_CONFIG( c16n )
906886//-------------------------------------------------
907887
908static MACHINE_CONFIG_DERIVED( c16n, ntsc )
888static MACHINE_CONFIG_DERIVED_CLASS( c16n, ntsc, c16_state )
909889   MCFG_CPU_MODIFY(MOS7501_TAG)
910   MCFG_M7501_PORT_CALLBACKS(READ8(plus4_state, c16_cpu_r), WRITE8(plus4_state, cpu_w))
890   MCFG_M7501_PORT_CALLBACKS(READ8(c16_state, cpu_r), WRITE8(plus4_state, cpu_w))
911891   MCFG_M7501_PORT_PULLS(0x00, 0xc0)
912892
913893   MCFG_DEVICE_REMOVE(MOS6551_TAG)
r20768r20769
927907//  MACHINE_CONFIG( c16p )
928908//-------------------------------------------------
929909
930static MACHINE_CONFIG_DERIVED( c16p, pal )
910static MACHINE_CONFIG_DERIVED_CLASS( c16p, pal, c16_state )
931911   MCFG_CPU_MODIFY(MOS7501_TAG)
932   MCFG_M7501_PORT_CALLBACKS(READ8(plus4_state, c16_cpu_r), WRITE8(plus4_state, cpu_w))
912   MCFG_M7501_PORT_CALLBACKS(READ8(c16_state, cpu_r), WRITE8(plus4_state, cpu_w))
933913   MCFG_M7501_PORT_PULLS(0x00, 0xc0)
934914
935915   MCFG_DEVICE_REMOVE(MOS6551_TAG)
trunk/src/mess/drivers/pet2001.c
r20768r20769
881881
882882
883883//-------------------------------------------------
884//  PET_DATASSETTE_PORT_INTERFACE( datassette_intf )
885//-------------------------------------------------
886
887static PET_DATASSETTE_PORT_INTERFACE( datassette_intf )
888{
889   DEVCB_DEVICE_LINE_MEMBER(M6520_1_TAG, pia6821_device, ca1_w)
890};
891
892
893//-------------------------------------------------
894//  PET_DATASSETTE_PORT_INTERFACE( datassette2_intf )
895//-------------------------------------------------
896
897static PET_DATASSETTE_PORT_INTERFACE( datassette2_intf )
898{
899   DEVCB_DEVICE_LINE_MEMBER(M6522_TAG, via6522_device, write_cb1)
900};
901
902
903//-------------------------------------------------
904//  PET_EXPANSION_INTERFACE( exp_intf )
905//-------------------------------------------------
906
907static PET_EXPANSION_INTERFACE( exp_intf )
908{
909   DEVCB_DRIVER_MEMBER(pet_state, read),
910   DEVCB_DRIVER_MEMBER(pet_state, write)
911};
912
913
914//-------------------------------------------------
915884//  PET_USER_PORT_INTERFACE( user_intf )
916885//-------------------------------------------------
917886
r20768r20769
12021171   MCFG_PIA6821_ADD(M6520_1_TAG, pia1_intf)
12031172   MCFG_PIA6821_ADD(M6520_2_TAG, pia2_intf)
12041173   MCFG_CBM_IEEE488_ADD(ieee488_intf, "c4040")
1205   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, "c2n", NULL)
1206   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT2_TAG, datassette2_intf, cbm_datassette_devices, NULL, NULL)
1207   MCFG_PET_EXPANSION_SLOT_ADD(PET_EXPANSION_SLOT_TAG, XTAL_8MHz/8, exp_intf, pet_expansion_cards, NULL, NULL)
1174   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, "c2n", NULL, DEVWRITELINE(M6520_1_TAG, pia6821_device, ca1_w))
1175   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT2_TAG, cbm_datassette_devices, NULL, NULL, DEVWRITELINE(M6522_TAG, via6522_device, write_cb1))
1176   MCFG_PET_EXPANSION_SLOT_ADD(PET_EXPANSION_SLOT_TAG, XTAL_8MHz/8, pet_expansion_cards, NULL, NULL)
1177   MCFG_PET_EXPANSION_SLOT_DMA_CALLBACKS(READ8(pet_state, read), WRITE8(pet_state, write))
12081178   MCFG_PET_USER_PORT_ADD(PET_USER_PORT_TAG, user_intf, pet_user_port_cards, NULL, NULL)
12091179   MCFG_QUICKLOAD_ADD("quickload", cbm_pet, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS)
12101180
r20768r20769
14781448   MCFG_PIA6821_ADD(M6520_1_TAG, pia1_intf)
14791449   MCFG_PIA6821_ADD(M6520_2_TAG, pia2_intf)
14801450   MCFG_CBM_IEEE488_ADD(ieee488_intf, "c8050")
1481   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, datassette_intf, cbm_datassette_devices, "c2n", NULL)
1482   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT2_TAG, datassette2_intf, cbm_datassette_devices, NULL, NULL)
1483   MCFG_PET_EXPANSION_SLOT_ADD(PET_EXPANSION_SLOT_TAG, XTAL_16MHz/16, exp_intf, pet_expansion_cards, NULL, NULL)
1451   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, "c2n", NULL, DEVWRITELINE(M6520_1_TAG, pia6821_device, ca1_w))
1452   MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT2_TAG, cbm_datassette_devices, NULL, NULL, DEVWRITELINE(M6522_TAG, via6522_device, write_cb1))
1453   MCFG_PET_EXPANSION_SLOT_ADD(PET_EXPANSION_SLOT_TAG, XTAL_16MHz/16, pet_expansion_cards, NULL, NULL)
1454   MCFG_PET_EXPANSION_SLOT_DMA_CALLBACKS(READ8(pet_state, read), WRITE8(pet_state, write))
14841455   MCFG_PET_USER_PORT_ADD(PET_USER_PORT_TAG, user_intf, pet_user_port_cards, NULL, NULL)
14851456   MCFG_QUICKLOAD_ADD("quickload", cbm_pet, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS)
14861457
r20768r20769
15051476
15061477static MACHINE_CONFIG_DERIVED_CLASS( superpet, pet8032, superpet_state )
15071478   MCFG_DEVICE_REMOVE(PET_EXPANSION_SLOT_TAG)
1508   MCFG_PET_EXPANSION_SLOT_ADD(PET_EXPANSION_SLOT_TAG, XTAL_16MHz/16, exp_intf, pet_expansion_cards, "superpet", NULL)
1479   MCFG_PET_EXPANSION_SLOT_ADD(PET_EXPANSION_SLOT_TAG, XTAL_16MHz/16, pet_expansion_cards, "superpet", NULL)
1480   MCFG_PET_EXPANSION_SLOT_DMA_CALLBACKS(READ8(pet_state, read), WRITE8(pet_state, write))
15091481
15101482   MCFG_SOFTWARE_LIST_ADD("flop_list2", "superpet_flop")
15111483MACHINE_CONFIG_END

Previous 199869 Revisions Next


© 1997-2024 The MAME Team