Previous 199869 Revisions Next

r28713 Wednesday 19th March, 2014 at 12:44:45 UTC by Curt Coder
(MESS) micropolis: devcb2. (nw)
[src/mess/machine]micropolis.c micropolis.h

trunk/src/mess/machine/micropolis.c
r28712r28713
6464
6565const micropolis_interface default_micropolis_interface =
6666{
67   DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, { FLOPPY_0, FLOPPY_1, FLOPPY_2, FLOPPY_3}
67   { FLOPPY_0, FLOPPY_1, FLOPPY_2, FLOPPY_3}
6868};
6969
7070#if 0
7171const micropolis_interface default_micropolis_interface_2_drives =
7272{
73   DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, { FLOPPY_0, FLOPPY_1, NULL, NULL}
73   { FLOPPY_0, FLOPPY_1, NULL, NULL}
7474};
7575#endif
7676
r28712r28713
8383
8484micropolis_device::micropolis_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
8585   : device_t(mconfig, MICROPOLIS, "MICROPOLIS", tag, owner, clock, "micropolis", __FILE__),
86   m_read_dden(*this),
87   m_write_intrq(*this),
88   m_write_drq(*this),
8689   m_data(0),
8790   m_drive_num(0),
8891   m_track(0),
r28712r28713
117120   // or initialize to defaults if none provided
118121   else
119122   {
120      memset(&m_in_dden_cb, 0, sizeof(m_in_dden_cb));
121      memset(&m_out_intrq_cb, 0, sizeof(m_out_intrq_cb));
122      memset(&m_out_drq_cb, 0, sizeof(m_out_drq_cb));
123123      m_floppy_drive_tags[0] = "";
124124      m_floppy_drive_tags[1] = "";
125125      m_floppy_drive_tags[2] = "";
r28712r28713
133133
134134void micropolis_device::device_start()
135135{
136   m_in_dden_func.resolve(m_in_dden_cb, *this);
137   m_out_intrq_func.resolve(m_out_intrq_cb, *this);
138   m_out_drq_func.resolve(m_out_drq_cb, *this);
136   m_read_dden.resolve_safe(1);
137   m_write_intrq.resolve_safe();
138   m_write_drq.resolve_safe();
139139
140140   save_item(NAME(m_data));
141141   save_item(NAME(m_drive_num));
trunk/src/mess/machine/micropolis.h
r28712r28713
1717    TYPE DEFINITIONS
1818***************************************************************************/
1919
20#define MCFG_MICROPOLIS_DDEN_CALLBACK(_read) \
21   devcb = &micropolis_device::set_dden_rd_callback(*device, DEVCB2_##_read);
22
23#define MCFG_MICROPOLIS_INTRQ_CALLBACK(_write) \
24   devcb = &micropolis_device::set_intrq_wr_callback(*device, DEVCB2_##_write);
25
26#define MCFG_MICROPOLIS_DRQ_CALLBACK(_write) \
27   devcb = &micropolis_device::set_drq_wr_callback(*device, DEVCB2_##_write);
28
2029/* Interface */
2130struct micropolis_interface
2231{
23   devcb_read_line m_in_dden_cb;
24   devcb_write_line m_out_intrq_cb;
25   devcb_write_line m_out_drq_cb;
2632   const char *m_floppy_drive_tags[4];
2733};
2834
r28712r28713
3137***************************************************************************/
3238
3339class micropolis_device : public device_t,
34                           public micropolis_interface
40                    public micropolis_interface
3541{
3642public:
3743   micropolis_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
3844   ~micropolis_device() {}
3945
46   template<class _Object> static devcb2_base &set_dden_rd_callback(device_t &device, _Object object) { return downcast<micropolis_device &>(device).m_read_dden.set_callback(object); }
47   template<class _Object> static devcb2_base &set_intrq_wr_callback(device_t &device, _Object object) { return downcast<micropolis_device &>(device).m_write_intrq.set_callback(object); }
48   template<class _Object> static devcb2_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast<micropolis_device &>(device).m_write_drq.set_callback(object); }
49
4050   void set_drive(UINT8 drive); // set current drive (0-3)
4151
4252   DECLARE_READ8_MEMBER( status_r );
r28712r28713
5767private:
5868   // internal state
5969
60   devcb_resolved_read_line m_in_dden_func;
61   devcb_resolved_write_line m_out_intrq_func;
62   devcb_resolved_write_line m_out_drq_func;
70   devcb2_read_line m_read_dden;
71   devcb2_write_line m_write_intrq;
72   devcb2_write_line m_write_drq;
6373
6474   /* register */
6575   UINT8 m_data;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team