Previous 199869 Revisions Next

r23499 Thursday 6th June, 2013 at 16:26:48 UTC by smf
moved handlers into the ide_controller_device (nw)
[src/emu/machine]ataflash.c idectrl.c idectrl.h
[src/mame/drivers]calchase.c chihiro.c cobra.c djmain.c fruitpc.c funkball.c gamecstl.c jaguar.c kinst.c mediagx.c midqslvr.c photoply.c qdrmfgp.c queen.c savquest.c seattle.c taitotz.c twinkle.c vegas.c viper.c voyager.c zn.c
[src/mame/includes]djmain.h qdrmfgp.h
[src/mame/machine]midwayic.c
[src/mess/includes]bebox.h
[src/mess/machine]a2cffa.c a2vulcan.c a2zipdrive.c adam_ide.c bebox.c c64_ide64.c isa_ide.c kc_d004.c
[src/mess/machine/ti99]tn_ide.c tn_ide.h

trunk/src/emu/machine/ataflash.c
r23498r23499
4141
4242READ16_MEMBER( ata_flash_pccard_device::read_memory )
4343{
44   return ide_controller16_pcmcia_r(m_card, space, offset, mem_mask);
44   return m_card->ide_controller16_pcmcia_r(space, offset, mem_mask);
4545}
4646
4747WRITE16_MEMBER( ata_flash_pccard_device::write_memory )
4848{
49   ide_controller16_pcmcia_w(m_card, space, offset, data, mem_mask);
49   m_card->ide_controller16_pcmcia_w(space, offset, data, mem_mask);
5050}
5151
5252READ16_MEMBER( ata_flash_pccard_device::read_reg )
trunk/src/emu/machine/idectrl.c
r23498r23499
13701370    select: 0->CS1Fx active, 1->CS3Fx active
13711371    offset: register offset (state of DA2-DA0)
13721372*/
1373int ide_bus_r(device_t *device, int select, int offset)
1373int ide_controller_device::ide_bus_r(int select, int offset)
13741374{
1375   ide_controller_device *ide = (ide_controller_device *) device;
1376   return ide->ide_controller_read(select ? 1 : 0, offset, select == 0 && offset == 0 ? 2 : 1);
1375   return ide_controller_read(select ? 1 : 0, offset, select == 0 && offset == 0 ? 2 : 1);
13771376}
13781377
13791378/*
r23498r23499
13851384    offset: register offset (state of DA2-DA0)
13861385    data: data written (state of D0-D15 or D0-D7)
13871386*/
1388void ide_bus_w(device_t *device, int select, int offset, int data)
1387void ide_controller_device::ide_bus_w(int select, int offset, int data)
13891388{
1390   ide_controller_device *ide = (ide_controller_device *) device;
13911389   if (select == 0 && offset == 0)
1392      ide->ide_controller_write(0, 0, 2, data);
1390      ide_controller_write(0, 0, 2, data);
13931391   else
1394      ide->ide_controller_write(select ? 1 : 0, offset, 1, data & 0xff);
1392      ide_controller_write(select ? 1 : 0, offset, 1, data & 0xff);
13951393}
13961394
1397UINT32 ide_controller_r(device_t *device, int reg, int size)
1395UINT32 ide_controller_device::ide_controller_r(int reg, int size)
13981396{
1399   ide_controller_device *ide = (ide_controller_device *) device;
14001397   if (reg >= 0x1f0 && reg < 0x1f8)
1401      return ide->ide_controller_read(0, reg & 7, size);
1398      return ide_controller_read(0, reg & 7, size);
14021399   if (reg >= 0x3f0 && reg < 0x3f8)
1403      return ide->ide_controller_read(1, reg & 7, size);
1400      return ide_controller_read(1, reg & 7, size);
14041401   if (reg >= 0x030 && reg < 0x040)
1405      return ide->ide_controller_read(2, reg & 0xf, size);
1402      return ide_controller_read(2, reg & 0xf, size);
14061403   return 0xffffffff;
14071404}
14081405
1409void ide_controller_w(device_t *device, int reg, int size, UINT32 data)
1406void ide_controller_device::ide_controller_w(int reg, int size, UINT32 data)
14101407{
1411   ide_controller_device *ide = (ide_controller_device *) device;
14121408   if (reg >= 0x1f0 && reg < 0x1f8)
1413      ide->ide_controller_write(0, reg & 7, size, data);
1409      ide_controller_write(0, reg & 7, size, data);
14141410   if (reg >= 0x3f0 && reg < 0x3f8)
1415      ide->ide_controller_write(1, reg & 7, size, data);
1411      ide_controller_write(1, reg & 7, size, data);
14161412   if (reg >= 0x030 && reg < 0x040)
1417      ide->ide_controller_write(2, reg & 0xf, size, data);
1413      ide_controller_write(2, reg & 0xf, size, data);
14181414}
14191415
14201416
r23498r23499
14241420 *
14251421 *************************************/
14261422
1427READ32_DEVICE_HANDLER( ide_controller32_r )
1423READ32_MEMBER( ide_controller_device::ide_controller32_r )
14281424{
14291425   int size;
14301426
14311427   offset *= 4;
14321428   size = convert_to_offset_and_size32(&offset, mem_mask);
14331429
1434   return ide_controller_r(device, offset, size) << ((offset & 3) * 8);
1430   return ide_controller_r(offset, size) << ((offset & 3) * 8);
14351431}
14361432
14371433
1438WRITE32_DEVICE_HANDLER( ide_controller32_w )
1434WRITE32_MEMBER( ide_controller_device::ide_controller32_w )
14391435{
14401436   int size;
14411437
r23498r23499
14431439   size = convert_to_offset_and_size32(&offset, mem_mask);
14441440   data = data >> ((offset & 3) * 8);
14451441
1446   ide_controller_w(device, offset, size, data);
1442   ide_controller_w(offset, size, data);
14471443}
14481444
14491445
1450READ16_DEVICE_HANDLER( ide_controller16_pcmcia_r )
1446READ16_MEMBER( ide_controller_device::ide_controller16_pcmcia_r )
14511447{
1452   ide_controller_device *ide = (ide_controller_device *) device;
1453
14541448   int size;
14551449   UINT32 res = 0xffff;
14561450
r23498r23499
14581452   size = convert_to_offset_and_size16(&offset, mem_mask);
14591453
14601454   if (offset < 0x008)
1461      res = ide->ide_controller_read(0, offset & 7, size);
1455      res = ide_controller_read(0, offset & 7, size);
14621456   if (offset >= 0x008 && offset < 0x010)
1463      res = ide->ide_controller_read(1, offset & 7, size);
1457      res = ide_controller_read(1, offset & 7, size);
14641458
14651459   return res << ((offset & 1) * 8);
14661460}
14671461
14681462
1469WRITE16_DEVICE_HANDLER( ide_controller16_pcmcia_w )
1463WRITE16_MEMBER( ide_controller_device::ide_controller16_pcmcia_w )
14701464{
14711465   int size;
14721466
1473   ide_controller_device *ide = (ide_controller_device *) device;
1474
14751467   offset *= 2;
14761468   size = convert_to_offset_and_size16(&offset, mem_mask);
14771469   data = data >> ((offset & 1) * 8);
14781470
14791471   if (offset < 0x008)
1480      ide->ide_controller_write(0, offset & 7, size, data);
1472      ide_controller_write(0, offset & 7, size, data);
14811473   if (offset >= 0x008 && offset < 0x010)
1482      ide->ide_controller_write(1, offset & 7, size, data);
1474      ide_controller_write(1, offset & 7, size, data);
14831475}
14841476
1485READ32_DEVICE_HANDLER( ide_bus_master32_r )
1477READ32_MEMBER( ide_controller_device::ide_bus_master32_r )
14861478{
14871479   int size;
14881480
1489   ide_controller_device *ide = (ide_controller_device *) device;
1490
14911481   offset *= 4;
14921482   size = convert_to_offset_and_size32(&offset, mem_mask);
14931483
1494   return ide->ide_bus_master_read(offset, size) << ((offset & 3) * 8);
1484   return ide_bus_master_read(offset, size) << ((offset & 3) * 8);
14951485}
14961486
14971487
1498WRITE32_DEVICE_HANDLER( ide_bus_master32_w )
1488WRITE32_MEMBER( ide_controller_device::ide_bus_master32_w )
14991489{
15001490   int size;
15011491
1502   ide_controller_device *ide = (ide_controller_device *) device;
1503
15041492   offset *= 4;
15051493   size = convert_to_offset_and_size32(&offset, mem_mask);
15061494
1507   ide->ide_bus_master_write(offset, size, data >> ((offset & 3) * 8));
1495   ide_bus_master_write(offset, size, data >> ((offset & 3) * 8));
15081496}
15091497
15101498
r23498r23499
15151503 *
15161504 *************************************/
15171505
1518READ16_DEVICE_HANDLER( ide_controller16_r )
1506READ16_MEMBER( ide_controller_device::ide_controller16_r )
15191507{
15201508   int size;
15211509
15221510   offset *= 2;
15231511   size = convert_to_offset_and_size16(&offset, mem_mask);
15241512
1525   return ide_controller_r(device, offset, size) << ((offset & 1) * 8);
1513   return ide_controller_r(offset, size) << ((offset & 1) * 8);
15261514}
15271515
15281516
1529WRITE16_DEVICE_HANDLER( ide_controller16_w )
1517WRITE16_MEMBER( ide_controller_device::ide_controller16_w )
15301518{
15311519   int size;
15321520
15331521   offset *= 2;
15341522   size = convert_to_offset_and_size16(&offset, mem_mask);
15351523
1536   ide_controller_w(device, offset, size, data >> ((offset & 1) * 8));
1524   ide_controller_w(offset, size, data >> ((offset & 1) * 8));
15371525}
15381526
15391527SLOT_INTERFACE_START(ide_devices)
trunk/src/emu/machine/idectrl.h
r23498r23499
1414#ifndef __IDECTRL_H__
1515#define __IDECTRL_H__
1616
17#include "devlegcy.h"
18
1917#include "idehd.h"
2018#include "harddisk.h"
2119
r23498r23499
7169   MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed)
7270
7371/***************************************************************************
74    FUNCTION PROTOTYPES
75***************************************************************************/
76
77int ide_bus_r(device_t *config, int select, int offset);
78void ide_bus_w(device_t *config, int select, int offset, int data);
79
80UINT32 ide_controller_r(device_t *config, int reg, int size);
81void ide_controller_w(device_t *config, int reg, int size, UINT32 data);
82
83DECLARE_READ32_DEVICE_HANDLER( ide_controller32_r );
84DECLARE_WRITE32_DEVICE_HANDLER( ide_controller32_w );
85DECLARE_READ16_DEVICE_HANDLER( ide_controller16_pcmcia_r );
86DECLARE_WRITE16_DEVICE_HANDLER( ide_controller16_pcmcia_w );
87DECLARE_READ32_DEVICE_HANDLER( ide_bus_master32_r );
88DECLARE_WRITE32_DEVICE_HANDLER( ide_bus_master32_w );
89
90DECLARE_READ16_DEVICE_HANDLER( ide_controller16_r );
91DECLARE_WRITE16_DEVICE_HANDLER( ide_controller16_w );
92
93/***************************************************************************
9472    TYPE DEFINITIONS
9573***************************************************************************/
9674
r23498r23499
11290   void ide_set_master_password(const UINT8 *password);
11391   void ide_set_user_password(const UINT8 *password);
11492
93   int ide_bus_r(int select, int offset);
94   void ide_bus_w(int select, int offset, int data);
95
96   UINT32 ide_controller_r(int reg, int size);
97   void ide_controller_w(int reg, int size, UINT32 data);
98
99   DECLARE_READ32_MEMBER( ide_controller32_r );
100   DECLARE_WRITE32_MEMBER( ide_controller32_w );
101   DECLARE_READ16_MEMBER( ide_controller16_pcmcia_r );
102   DECLARE_WRITE16_MEMBER( ide_controller16_pcmcia_w );
103   DECLARE_READ32_MEMBER( ide_bus_master32_r );
104   DECLARE_WRITE32_MEMBER( ide_bus_master32_w );
105
106   DECLARE_READ16_MEMBER( ide_controller16_r );
107   DECLARE_WRITE16_MEMBER( ide_controller16_w );
108
115109   UINT32 ide_controller_read(int bank, offs_t offset, int size);
116110   void ide_controller_write(int bank, offs_t offset, int size, UINT32 data);
117111   UINT32 ide_bus_master_read(offs_t offset, int size);
r23498r23499
190184
191185extern const device_type IDE_CONTROLLER;
192186
193
194
195187#endif  /* __IDECTRL_H__ */
trunk/src/mess/includes/bebox.h
r23498r23499
1010#define BEBOX_H_
1111
1212#include "emu.h"
13#include "machine/53c810.h"
14#include "machine/am9517a.h"
15#include "machine/idectrl.h"
1316#include "machine/ins8250.h"
14#include "machine/am9517a.h"
15#include "machine/53c810.h"
16#include "machine/upd765.h"
17#include "machine/ram.h"
1817#include "machine/pic8259.h"
1918#include "machine/pit8253.h"
19#include "machine/ram.h"
20#include "machine/upd765.h"
2021
2122class bebox_state : public driver_device
2223{
r23498r23499
3637         m_pic8259_1(*this, "pic8259_1"),
3738         m_pic8259_2(*this, "pic8259_2"),
3839         m_pit8254(*this, "pit8254"),
39         m_ram(*this, RAM_TAG){ }
40         m_ram(*this, RAM_TAG),
41         m_ide(*this, "ide")
42   {
43   }
4044
4145   required_device<cpu_device> m_ppc1;
4246   required_device<cpu_device> m_ppc2;
r23498r23499
4751   required_device<pic8259_device> m_pic8259_2;
4852   required_device<pit8254_device> m_pit8254;
4953   required_device<ram_device> m_ram;
54   required_device<ide_controller_device> m_ide;
5055   UINT32 m_cpu_imask[2];
5156   UINT32 m_interrupts;
5257   UINT32 m_crossproc_interrupts;
trunk/src/mess/machine/a2zipdrive.c
r23498r23499
116116      case 5:
117117      case 6:
118118      case 7:
119         return ide_controller_r(m_ide, 0x1f0+offset, 1);
119         return m_ide->ide_controller_r(0x1f0+offset, 1);
120120
121121      case 8: // data port
122         m_lastdata = ide_controller_r(m_ide, 0x1f0, 2);
122         m_lastdata = m_ide->ide_controller_r(0x1f0, 2);
123123//          printf("%04x @ IDE data\n", m_lastdata);
124124         return m_lastdata&0xff;
125125
r23498r23499
152152      case 6:
153153      case 7:
154154//          printf("%02x to IDE controller @ %x\n", data, offset);
155         ide_controller_w(m_ide, 0x1f0+offset, 1, data);
155         m_ide->ide_controller_w(0x1f0+offset, 1, data);
156156         break;
157157
158158      case 8:
r23498r23499
164164//          printf("%02x to IDE data hi\n", data);
165165         m_lastdata &= 0x00ff;
166166         m_lastdata |= (data << 8);
167         ide_controller_w(m_ide, 0x1f0, 2, m_lastdata);
167         m_ide->ide_controller_w(0x1f0, 2, m_lastdata);
168168         break;
169169
170170      default:
trunk/src/mess/machine/bebox.c
r23498r23499
504504 *
505505 *************************************/
506506
507static device_t *ide_device(running_machine &machine)
508{
509   return machine.device("ide");
510}
507READ8_MEMBER(bebox_state::bebox_800001F0_r ) { return m_ide->ide_controller_r(offset + 0x1F0, 1); }
508WRITE8_MEMBER(bebox_state::bebox_800001F0_w ) { m_ide->ide_controller_w(offset + 0x1F0, 1, data); }
511509
512READ8_MEMBER(bebox_state::bebox_800001F0_r ) { return ide_controller_r(ide_device(space.machine()), offset + 0x1F0, 1); }
513WRITE8_MEMBER(bebox_state::bebox_800001F0_w ) { ide_controller_w(ide_device(space.machine()), offset + 0x1F0, 1, data); }
514
515510READ64_MEMBER(bebox_state::bebox_800003F0_r )
516511{
517512   UINT64 result = 0;
518513
519514   if (((mem_mask >> 8) & 0xFF) == 0)
520515   {
521      result |= ide_controller_r(space.machine().device("ide"), 0x3F6, 1) << 8;
516      result |= m_ide->ide_controller_r(0x3F6, 1) << 8;
522517   }
523518   return result;
524519}
r23498r23499
527522WRITE64_MEMBER(bebox_state::bebox_800003F0_w )
528523{
529524   if (((mem_mask >> 8) & 0xFF) == 0)
530      ide_controller_w(space.machine().device("ide"), 0x3F6, 1, (data >> 8) & 0xFF);
525      m_ide->ide_controller_w(0x3F6, 1, (data >> 8) & 0xFF);
531526}
532527
533528
trunk/src/mess/machine/c64_ide64.c
r23498r23499
181181
182182      if (io1_offset >= 0x20 && io1_offset < 0x30)
183183      {
184         m_ide_data = ide_bus_r(m_ide, BIT(offset, 3), offset & 0x07);
184         m_ide_data = m_ide->ide_bus_r(BIT(offset, 3), offset & 0x07);
185185
186186         data = m_ide_data & 0xff;
187187      }
r23498r23499
278278      {
279279         m_ide_data = (m_ide_data & 0xff00) | data;
280280
281         ide_bus_w(m_ide, BIT(offset, 3), offset & 0x07, m_ide_data);
281         m_ide->ide_bus_w(BIT(offset, 3), offset & 0x07, m_ide_data);
282282      }
283283      else if (io1_offset == 0x31)
284284      {
trunk/src/mess/machine/adam_ide.c
r23498r23499
121121      case 0x05:
122122      case 0x06:
123123      case 0x07:
124         data = ide_bus_r(m_ide, 0, offset & 0x07) & 0xff;
124         data = m_ide->ide_bus_r(0, offset & 0x07) & 0xff;
125125         break;
126126
127127      case 0x40: // Printer status
r23498r23499
142142         break;
143143
144144      case 0x58:
145         m_ide_data = ide_bus_r(m_ide, 0, 0);
145         m_ide_data = m_ide->ide_bus_r(0, 0);
146146
147147         data = m_ide_data & 0xff;
148148         break;
r23498r23499
152152         break;
153153
154154      case 0x5a:
155         data = ide_bus_r(m_ide, 1, 6) & 0xff;
155         data = m_ide->ide_bus_r(1, 6) & 0xff;
156156         break;
157157
158158      case 0x5b: // Digital Input Register
r23498r23499
181181      case 0x05:
182182      case 0x06:
183183      case 0x07:
184         ide_bus_w(m_ide, 0, offset & 0x07, data);
184         m_ide->ide_bus_w(0, offset & 0x07, data);
185185         break;
186186
187187      case 0x40:
r23498r23499
193193
194194      case 0x58:
195195         m_ide_data |= data;
196         ide_bus_w(m_ide, 0, 0, m_ide_data);
196         m_ide->ide_bus_w(0, 0, m_ide_data);
197197         break;
198198
199199      case 0x59:
trunk/src/mess/machine/isa_ide.c
r23498r23499
1111
1212READ16_MEMBER(isa16_ide_device::ide16_r)
1313{
14   return ide_controller16_r(m_ide, space, 0x1f0/2 + offset, mem_mask);
14   return m_ide->ide_controller16_r(space, 0x1f0/2 + offset, mem_mask);
1515}
1616
1717WRITE16_MEMBER(isa16_ide_device::ide16_w)
1818{
19   ide_controller16_w(m_ide, space, 0x1f0/2 + offset, data, mem_mask);
19   m_ide->ide_controller16_w(space, 0x1f0/2 + offset, data, mem_mask);
2020}
2121
2222READ8_MEMBER(isa16_ide_device::ide16_alt_r )
2323{
24   return ide_controller16_r(m_ide, space, 0x3f6/2, 0x00ff);
24   return m_ide->ide_controller16_r(space, 0x3f6/2, 0x00ff);
2525}
2626
2727WRITE8_MEMBER(isa16_ide_device::ide16_alt_w )
2828{
29   ide_controller16_w(m_ide, space, 0x3f6/2, data, 0x00ff);
29   m_ide->ide_controller16_w(space, 0x3f6/2, data, 0x00ff);
3030}
3131
3232DEVICE_ADDRESS_MAP_START(map, 16, isa16_ide_device)
trunk/src/mess/machine/a2vulcan.c
r23498r23499
151151   switch (offset)
152152   {
153153      case 0:
154         m_lastdata = ide_controller_r(m_ide, 0x1f0+offset, 2);
154         m_lastdata = m_ide->ide_controller_r(0x1f0+offset, 2);
155155//          printf("IDE: read %04x\n", m_lastdata);
156156         m_last_read_was_0 = true;
157157         return m_lastdata&0xff;
r23498r23499
164164         }
165165         else
166166         {
167            return ide_controller_r(m_ide, 0x1f0+offset, 1);
167            return m_ide->ide_controller_r(0x1f0+offset, 1);
168168         }
169169         break;
170170
r23498r23499
174174      case 5:
175175      case 6:
176176      case 7:
177         return ide_controller_r(m_ide, 0x1f0+offset, 1);
177         return m_ide->ide_controller_r(0x1f0+offset, 1);
178178
179179      default:
180180//          printf("Read @ C0n%x\n", offset);
r23498r23499
206206            m_lastdata &= 0x00ff;
207207            m_lastdata |= (data << 8);
208208//              printf("IDE: write %04x\n", m_lastdata);
209            ide_controller_w(m_ide, 0x1f0, 2, m_lastdata);
209            m_ide->ide_controller_w(0x1f0, 2, m_lastdata);
210210         }
211211         else
212212         {
213            ide_controller_w(m_ide, 0x1f0+offset, 1, data);
213            m_ide->ide_controller_w(0x1f0+offset, 1, data);
214214         }
215215         break;
216216
r23498r23499
221221      case 6:
222222      case 7:
223223//          printf("%02x to IDE controller @ %x\n", data, offset);
224         ide_controller_w(m_ide, 0x1f0+offset, 1, data);
224         m_ide->ide_controller_w(0x1f0+offset, 1, data);
225225         break;
226226
227227      case 9: // ROM bank
trunk/src/mess/machine/ti99/tn_ide.c
r23498r23499
151151         case 2:     /* IDE registers set 1 (CS1Fx) */
152152            if (m_tms9995_mode ? (!(addr & 1)) : (addr & 1))
153153            {   /* first read triggers 16-bit read cycle */
154               m_input_latch = (! (addr & 0x10)) ? ide_bus_r(m_ide, 0, (addr >> 1) & 0x7) : 0;
154               m_input_latch = (! (addr & 0x10)) ? m_ide->ide_bus_r(0, (addr >> 1) & 0x7) : 0;
155155            }
156156
157157            /* return latched input */
r23498r23499
162162         case 3:     /* IDE registers set 2 (CS3Fx) */
163163            if (m_tms9995_mode ? (!(addr & 1)) : (addr & 1))
164164            {   /* first read triggers 16-bit read cycle */
165               m_input_latch = (! (addr & 0x10)) ? ide_bus_r(m_ide, 1, (addr >> 1) & 0x7) : 0;
165               m_input_latch = (! (addr & 0x10)) ? m_ide->ide_bus_r(1, (addr >> 1) & 0x7) : 0;
166166            }
167167
168168            /* return latched input */
r23498r23499
232232
233233            if (m_tms9995_mode ? (addr & 1) : (!(addr & 1)))
234234            {   /* second write triggers 16-bit write cycle */
235               ide_bus_w(m_ide, 0, (addr >> 1) & 0x7, m_output_latch);
235               m_ide->ide_bus_w(0, (addr >> 1) & 0x7, m_output_latch);
236236            }
237237            break;
238238         case 3:     /* IDE registers set 2 (CS3Fx) */
r23498r23499
250250
251251            if (m_tms9995_mode ? (addr & 1) : (!(addr & 1)))
252252            {   /* second write triggers 16-bit write cycle */
253               ide_bus_w(m_ide, 1, (addr >> 1) & 0x7, m_output_latch);
253               m_ide->ide_bus_w(1, (addr >> 1) & 0x7, m_output_latch);
254254            }
255255            break;
256256         }
r23498r23499
297297void nouspikel_ide_interface_device::device_start()
298298{
299299   m_rtc = subdevice<rtc65271_device>("ide_rtc");
300   m_ide = subdevice("ide");
300   m_ide = subdevice<ide_controller_device>("ide");
301301
302302   m_ram = memregion(BUFFER_TAG)->base();
303303   m_sram_enable_dip = false; // TODO: what is this?
trunk/src/mess/machine/ti99/tn_ide.h
r23498r23499
1414
1515#include "emu.h"
1616#include "ti99defs.h"
17#include "machine/idectrl.h"
1718#include "machine/rtc65271.h"
1819
1920extern const device_type TI99_IDE;
r23498r23499
4445
4546private:
4647   rtc65271_device*    m_rtc;
47   device_t*          m_ide;
48   ide_controller_device* m_ide;
4849
4950   bool    m_clk_irq;
5051   bool    m_sram_enable;
trunk/src/mess/machine/a2cffa.c
r23498r23499
143143         break;
144144
145145      case 8:
146         m_lastdata = ide_controller_r(m_ide, 0x1f0+offset-8, 2);
146         m_lastdata = m_ide->ide_controller_r(0x1f0+offset-8, 2);
147147         return m_lastdata & 0xff;
148148
149149      case 9:
r23498r23499
153153      case 0xd:
154154      case 0xe:
155155      case 0xf:
156         return ide_controller_r(m_ide, 0x1f0+offset-8, 1);
156         return m_ide->ide_controller_r(0x1f0+offset-8, 1);
157157   }
158158
159159   return 0xff;
r23498r23499
184184      case 8:
185185         m_lastdata &= 0xff00;
186186         m_lastdata |= data;
187         ide_controller_w(m_ide, 0x1f0+offset-8, 2, m_lastdata);
187         m_ide->ide_controller_w(0x1f0+offset-8, 2, m_lastdata);
188188         break;
189189
190190      case 9:
r23498r23499
194194      case 0xd:
195195      case 0xe:
196196      case 0xf:
197         ide_controller_w(m_ide, 0x1f0+offset-8, 1, data);
197         m_ide->ide_controller_w(0x1f0+offset-8, 1, data);
198198         break;
199199   }
200200}
trunk/src/mess/machine/kc_d004.c
r23498r23499
454454            data_shift = 8;
455455
456456         if (io_addr == 0x06 || io_addr == 0x07 || io_addr > 0x08 || (io_addr == 0x08 && !m_lh))
457            m_ide_data = ide_bus_r(m_ide, ide_cs, io_addr & 0x07);
457            m_ide_data = m_ide->ide_bus_r(ide_cs, io_addr & 0x07);
458458
459459         data = (m_ide_data >> data_shift) & 0xff;
460460      }
r23498r23499
494494         m_ide_data = (data << data_shift) | (m_ide_data & (0xff00 >> data_shift));
495495
496496         if (io_addr == 0x06 || io_addr == 0x07 || io_addr > 0x08 || (io_addr == 0x08 && m_lh))
497            ide_bus_w(m_ide, ide_cs, io_addr & 0x07, m_ide_data);
497            m_ide->ide_bus_w(ide_cs, io_addr & 0x07, m_ide_data);
498498      }
499499
500500      m_lh = (io_addr == 0x08) ? !m_lh : ((io_addr > 0x08) ? 0 : m_lh);
trunk/src/mame/machine/midwayic.c
r23498r23499
10651065   UINT8 shift = 8 * (offset & 3);
10661066   UINT32 result;
10671067
1068   ide_controller_device *ide = (ide_controller_device *) device;
1069
10681070   /* offset 0 is a special case */
10691071   if (offset == 0)
1070      result = ide_controller32_r(device, space, ideoffs, 0x0000ffff);
1072      result = ide->ide_controller32_r(space, ideoffs, 0x0000ffff);
10711073
10721074   /* everything else is byte-sized */
10731075   else
1074      result = ide_controller32_r(device, space, ideoffs, 0xff << shift) >> shift;
1076      result = ide->ide_controller32_r(space, ideoffs, 0xff << shift) >> shift;
10751077   return result;
10761078}
10771079
r23498r23499
10821084   offs_t ideoffs = 0x1f0/4 + (offset >> 2);
10831085   UINT8 shift = 8 * (offset & 3);
10841086
1087   ide_controller_device *ide = (ide_controller_device *) device;
1088
10851089   /* offset 0 is a special case */
10861090   if (offset == 0)
1087      ide_controller32_w(device, space, ideoffs, data, 0x0000ffff);
1091      ide->ide_controller32_w(space, ideoffs, data, 0x0000ffff);
10881092
10891093   /* everything else is byte-sized */
10901094   else
1091      ide_controller32_w(device, space, ideoffs, data << shift, 0xff << shift);
1095      ide->ide_controller32_w(space, ideoffs, data << shift, 0xff << shift);
10921096}
trunk/src/mame/includes/qdrmfgp.h
r23498r23499
1#include "machine/idectrl.h"
12#include "sound/k054539.h"
23
34class qdrmfgp_state : public driver_device
r23498r23499
910      m_nvram(*this, "nvram"),
1011      m_workram(*this, "workram"),
1112      m_k056832(*this, "k056832"),
12      m_k054539(*this, "k054539") { }
13      m_k054539(*this, "k054539"),
14      m_ide(*this, "ide")
15   {
16   }
1317
1418   required_device<cpu_device> m_maincpu;
1519   required_shared_ptr<UINT16> m_nvram;
r23498r23499
1721   required_shared_ptr<UINT16> m_workram;
1822   required_device<k056832_device> m_k056832;
1923   required_device<k054539_device> m_k054539;
24   required_device<ide_controller_device> m_ide;
2025   UINT16 m_control;
2126   INT32 m_gp2_irq_control;
2227   INT32 m_pal;
trunk/src/mame/includes/djmain.h
r23498r23499
1#include "machine/idectrl.h"
2
13class djmain_state : public driver_device
24{
35public:
r23498r23499
68      m_obj_ram(*this, "obj_ram"),
79      m_maincpu(*this, "maincpu"),
810      m_k056832(*this, "k056832"),
9      m_k055555(*this, "k055555") { }
11      m_k055555(*this, "k055555"),
12      m_ide(*this, "ide")
13   {
14   }
1015
1116   int m_sndram_bank;
1217   UINT8 *m_sndram;
r23498r23499
6469   required_device<cpu_device> m_maincpu;
6570   required_device<k056832_device> m_k056832;
6671   required_device<k055555_device> m_k055555;
72   required_device<ide_controller_device> m_ide;
6773};
6874
6975/*----------- defined in video/djmain.c -----------*/
trunk/src/mame/drivers/vegas.c
r23498r23499
14581458
14591459static READ32_DEVICE_HANDLER( ide_main_r )
14601460{
1461   return ide_controller32_r(device, space, 0x1f0/4 + offset, mem_mask);
1461   ide_controller_device *ide = (ide_controller_device *) device;
1462   return ide->ide_controller32_r(space, 0x1f0/4 + offset, mem_mask);
14621463}
14631464
14641465
14651466static WRITE32_DEVICE_HANDLER( ide_main_w )
14661467{
1467   ide_controller32_w(device, space, 0x1f0/4 + offset, data, mem_mask);
1468   ide_controller_device *ide = (ide_controller_device *) device;
1469   ide->ide_controller32_w(space, 0x1f0/4 + offset, data, mem_mask);
14681470}
14691471
14701472
14711473static READ32_DEVICE_HANDLER( ide_alt_r )
14721474{
1473   return ide_controller32_r(device, space, 0x3f4/4 + offset, mem_mask);
1475   ide_controller_device *ide = (ide_controller_device *) device;
1476   return ide->ide_controller32_r(space, 0x3f4/4 + offset, mem_mask);
14741477}
14751478
14761479
14771480static WRITE32_DEVICE_HANDLER( ide_alt_w )
14781481{
1479   ide_controller32_w(device, space, 0x3f4/4 + offset, data, mem_mask);
1482   ide_controller_device *ide = (ide_controller_device *) device;
1483   ide->ide_controller32_w(space, 0x3f4/4 + offset, data, mem_mask);
14801484}
14811485
14821486
1487static READ32_DEVICE_HANDLER( ide_bus_master32_r )
1488{
1489   ide_controller_device *ide = (ide_controller_device *) device;
1490   return ide->ide_bus_master32_r(space, offset, mem_mask);
1491}
1492
1493
1494static WRITE32_DEVICE_HANDLER( ide_bus_master32_w )
1495{
1496   ide_controller_device *ide = (ide_controller_device *) device;
1497   ide->ide_bus_master32_w(space, offset, data, mem_mask);
1498}
1499
1500
14831501static READ32_DEVICE_HANDLER( ethernet_r )
14841502{
14851503   UINT32 result = 0;
trunk/src/mame/drivers/funkball.c
r23498r23499
215215#if 0
216216READ32_MEMBER(funkball_state::ide_r)
217217{
218   device_t *device = machine().device("ide");
219   return ide_controller32_r(device, space, 0x1f0/4 + offset, mem_mask);
218   return m_ide->ide_controller32_r(space, 0x1f0/4 + offset, mem_mask);
220219}
221220
222221WRITE32_MEMBER(funkball_state::ide_w)
223222{
224   device_t *device = machine().device("ide");
225   ide_controller32_w(device, space, 0x1f0/4 + offset, data, mem_mask);
223   m_ide->ide_controller32_w(space, 0x1f0/4 + offset, data, mem_mask);
226224}
227225
228226READ32_MEMBER(funkball_state::fdc_r)
229227{
230   device_t *device = machine().device("ide");
231   return ide_controller32_r(device, space, 0x3f0/4 + offset, mem_mask);
228   return m-ide->ide_controller32_r(space, 0x3f0/4 + offset, mem_mask);
232229}
233230
234231WRITE32_MEMBER(funkball_state::fdc_w)
235232{
236   device_t *device = machine().device("ide");
237233   //mame_printf_debug("FDC: write %08X, %08X, %08X\n", data, offset, mem_mask);
238   ide_controller32_w(device, space, 0x3f0/4 + offset, data, mem_mask);
234   m_ide->ide_controller32_w(space, 0x3f0/4 + offset, data, mem_mask);
239235}
240236#endif
241237
trunk/src/mame/drivers/qdrmfgp.c
r23498r23499
181181
182182/*************/
183183
184#define IDE_STD_OFFSET  (0x1f0/2)
185#define IDE_ALT_OFFSET  (0x3f6/2)
186
187184READ16_MEMBER(qdrmfgp_state::ide_std_r)
188185{
189   device_t *device = machine().device("ide");
190186   if (offset & 0x01)
191      return ide_controller16_r(device, space, IDE_STD_OFFSET + offset/2, 0xff00) >> 8;
187      return m_ide->ide_controller16_r(space, 0x1f0/2 + offset/2, 0xff00) >> 8;
192188   else
193      return ide_controller16_r(device, space, IDE_STD_OFFSET + offset/2, 0xffff);
189      return m_ide->ide_controller16_r(space, 0x1f0/2 + offset/2, 0xffff);
194190}
195191
196192WRITE16_MEMBER(qdrmfgp_state::ide_std_w)
197193{
198   device_t *device = machine().device("ide");
199194   if (offset & 0x01)
200      ide_controller16_w(device, space, IDE_STD_OFFSET + offset/2, data << 8, 0xff00);
195      m_ide->ide_controller16_w(space, 0x1f0/2 + offset/2, data << 8, 0xff00);
201196   else
202      ide_controller16_w(device, space, IDE_STD_OFFSET + offset/2, data, 0xffff);
197      m_ide->ide_controller16_w(space, 0x1f0/2 + offset/2, data, 0xffff);
203198}
204199
205200READ16_MEMBER(qdrmfgp_state::ide_alt_r)
206201{
207   device_t *device = machine().device("ide");
208202   if (offset == 0)
209      return ide_controller16_r(device, space, IDE_ALT_OFFSET, 0x00ff);
203      return m_ide->ide_controller16_r(space, 0x3f6/2, 0x00ff);
210204
211205   return 0;
212206}
213207
214208WRITE16_MEMBER(qdrmfgp_state::ide_alt_w)
215209{
216   device_t *device = machine().device("ide");
217210   if (offset == 0)
218      ide_controller16_w(device, space, IDE_ALT_OFFSET, data, 0x00ff);
211      m_ide->ide_controller16_w(space, 0x3f6/2, data, 0x00ff);
219212}
220213
221214
222215READ16_MEMBER(qdrmfgp_state::gp2_ide_std_r)
223216{
224   device_t *device = machine().device("ide");
225217   if (offset & 0x01)
226218   {
227219      if (offset == 0x07)
r23498r23499
238230               break;
239231         }
240232      }
241      return ide_controller16_r(device, space, IDE_STD_OFFSET + offset/2, 0xff00) >> 8;
242   } else {
243      return ide_controller16_r(device, space, IDE_STD_OFFSET + offset/2, 0xffff);
233
234      return m_ide->ide_controller16_r(space, 0x1f0/2 + offset/2, 0xff00) >> 8;
244235   }
236   else
237   {
238      return m_ide->ide_controller16_r(space, 0x1f0/2 + offset/2, 0xffff);
239   }
245240}
246241
247242
r23498r23499
638633
639634   /* reset the IDE controller */
640635   m_gp2_irq_control = 0;
641   machine().device("ide")->reset();
636   m_ide->reset();
642637}
643638
644639
trunk/src/mame/drivers/gamecstl.c
r23498r23499
328328
329329READ32_MEMBER(gamecstl_state::ide_r)
330330{
331   return ide_controller32_r(m_ide, space, 0x1f0/4 + offset, mem_mask);
331   return m_ide->ide_controller32_r(space, 0x1f0/4 + offset, mem_mask);
332332}
333333
334334WRITE32_MEMBER(gamecstl_state::ide_w)
335335{
336   ide_controller32_w(m_ide, space, 0x1f0/4 + offset, data, mem_mask);
336   m_ide->ide_controller32_w(space, 0x1f0/4 + offset, data, mem_mask);
337337}
338338
339339READ32_MEMBER(gamecstl_state::fdc_r)
340340{
341   return ide_controller32_r(m_ide, space, 0x3f0/4 + offset, mem_mask);
341   return m_ide->ide_controller32_r(space, 0x3f0/4 + offset, mem_mask);
342342}
343343
344344WRITE32_MEMBER(gamecstl_state::fdc_w)
345345{
346346   //mame_printf_debug("FDC: write %08X, %08X, %08X\n", data, offset, mem_mask);
347   ide_controller32_w(m_ide, space, 0x3f0/4 + offset, data, mem_mask);
347   m_ide->ide_controller32_w(space, 0x3f0/4 + offset, data, mem_mask);
348348}
349349
350350
trunk/src/mame/drivers/seattle.c
r23498r23499
429429      m_interrupt_config(*this, "int_config"),
430430      m_asic_reset(*this, "asic_reset"),
431431      m_rombase(*this, "rombase"),
432      m_maincpu(*this, "maincpu") { }
432      m_maincpu(*this, "maincpu"),
433      m_ide(*this, "ide")
434   {
435   }
433436
434437   required_shared_ptr<UINT32> m_nvram;
435438   required_shared_ptr<UINT32> m_rambase;
r23498r23499
515518   void update_widget_irq();
516519   void init_common(int ioasic, int serialnum, int yearoffs, int config);
517520   required_device<cpu_device> m_maincpu;
521   required_device<ide_controller_device> m_ide;
518522};
519523
520524/*************************************
r23498r23499
17711775
17721776READ32_MEMBER(seattle_state::seattle_ide_r)
17731777{
1774   device_t *device = machine().device("ide");
17751778   /* note that blitz times out if we don't have this cycle stealing */
17761779   if (offset == 0x3f6/4)
17771780      m_maincpu->eat_cycles(100);
1778   return ide_controller32_r(device, space, offset, mem_mask);
1781   return m_ide->ide_controller32_r(space, offset, mem_mask);
17791782}
17801783
17811784static ADDRESS_MAP_START( seattle_map, AS_PROGRAM, 32, seattle_state )
17821785   ADDRESS_MAP_UNMAP_HIGH
17831786   AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("rambase") // wg3dh only has 4MB; sfrush, blitz99 8MB
17841787   AM_RANGE(0x08000000, 0x08ffffff) AM_DEVREAD_LEGACY("voodoo", voodoo_r) AM_WRITE(seattle_voodoo_w)
1785   AM_RANGE(0x0a000000, 0x0a0003ff) AM_READ(seattle_ide_r) AM_DEVWRITE_LEGACY("ide", ide_controller32_w)
1788   AM_RANGE(0x0a000000, 0x0a0003ff) AM_READ(seattle_ide_r) AM_DEVWRITE("ide", ide_controller_device, ide_controller32_w)
17861789   AM_RANGE(0x0a00040c, 0x0a00040f) AM_NOP                     // IDE-related, but annoying
1787   AM_RANGE(0x0a000f00, 0x0a000f07) AM_DEVREADWRITE_LEGACY("ide", ide_bus_master32_r, ide_bus_master32_w)
1790   AM_RANGE(0x0a000f00, 0x0a000f07) AM_DEVREADWRITE("ide", ide_controller_device, ide_bus_master32_r, ide_bus_master32_w)
17881791   AM_RANGE(0x0c000000, 0x0c000fff) AM_READWRITE(galileo_r, galileo_w)
17891792   AM_RANGE(0x13000000, 0x13000003) AM_WRITE(asic_fifo_w)
17901793   AM_RANGE(0x16000000, 0x1600003f) AM_READWRITE_LEGACY(midway_ioasic_r, midway_ioasic_w)
trunk/src/mame/drivers/zn.c
r23498r23499
4444      m_ram(*this, "maincpu:ram"),
4545      m_cbaj_fifo1(*this, "cbaj_fifo1"),
4646      m_cbaj_fifo2(*this, "cbaj_fifo2"),
47      m_mb3773(*this, "mb3773")
47      m_mb3773(*this, "mb3773"),
48      m_ide(*this, "ide")
4849   {
4950   }
5051
r23498r23499
129130   optional_device<fifo7200_device> m_cbaj_fifo1;
130131   optional_device<fifo7200_device> m_cbaj_fifo2;
131132   optional_device<mb3773_device> m_mb3773;
133   optional_device<ide_controller_device> m_ide;
132134};
133135
134136inline void ATTR_PRINTF(3,4) zn_state::verboselog( int n_level, const char *s_fmt, ... )
r23498r23499
13311333
13321334void zn_state::atpsx_dma_read( UINT32 *p_n_psxram, UINT32 n_address, INT32 n_size )
13331335{
1334   device_t *ide = machine().device("ide");
1335
13361336//  logerror("DMA read: %d bytes (%d words) to %08x\n", n_size<<2, n_size, n_address);
13371337
13381338   if (n_address < 0x10000)
r23498r23499
13461346   address_space &space = machine().firstcpu->space(AS_PROGRAM);
13471347   while( n_size > 0 )
13481348   {
1349      psxwritebyte( p_n_psxram, n_address, ide_controller32_r( ide, space, 0x1f0 / 4, 0x000000ff ) );
1349      psxwritebyte( p_n_psxram, n_address, m_ide->ide_controller32_r( space, 0x1f0 / 4, 0x000000ff ) );
13501350      n_address++;
13511351      n_size--;
13521352   }
r23498r23499
13611361   AM_RANGE(0x1f000000, 0x1f1fffff) AM_ROM AM_REGION("roms", 0)
13621362   AM_RANGE(0x1f000000, 0x1f000003) AM_WRITENOP
13631363   AM_RANGE(0x1f7e8000, 0x1f7e8003) AM_NOP
1364   AM_RANGE(0x1f7e4000, 0x1f7e4fff) AM_DEVREADWRITE_LEGACY("ide", ide_controller32_r, ide_controller32_w )
1365   AM_RANGE(0x1f7f4000, 0x1f7f4fff) AM_DEVREADWRITE_LEGACY("ide", ide_controller32_r, ide_controller32_w )
1364   AM_RANGE(0x1f7e4000, 0x1f7e4fff) AM_DEVREADWRITE("ide", ide_controller_device, ide_controller32_r, ide_controller32_w )
1365   AM_RANGE(0x1f7f4000, 0x1f7f4fff) AM_DEVREADWRITE("ide", ide_controller_device, ide_controller32_r, ide_controller32_w )
13661366
13671367   AM_IMPORT_FROM(zn_map)
13681368ADDRESS_MAP_END
13691369
13701370MACHINE_RESET_MEMBER(zn_state,coh1000w)
13711371{
1372   machine().device("ide")->reset();
1372   m_ide->reset();
13731373}
13741374
13751375static MACHINE_CONFIG_DERIVED( coh1000w, zn1_2mb_vram )
r23498r23499
18761876
18771877READ8_MEMBER(zn_state::jdredd_idestat_r)
18781878{
1879   device_t *device = machine().device("ide");
1880   return ide_controller_r( device, 0x1f7, 1 );
1879   return m_ide->ide_controller_r( 0x1f7, 1 );
18811880}
18821881
18831882READ16_MEMBER(zn_state::jdredd_ide_r)
18841883{
1885   device_t *device = machine().device("ide");
18861884   UINT16 data = 0;
18871885
18881886   if( ACCESSING_BITS_0_7 )
18891887   {
1890      data |= ide_controller_r( device, 0x1f0 + offset, 1 ) << 0;
1888      data |= m_ide->ide_controller_r( 0x1f0 + offset, 1 ) << 0;
18911889   }
18921890   if( ACCESSING_BITS_8_15 )
18931891   {
1894      data |= ide_controller_r( device, 0x1f0 + offset, 1 ) << 8;
1892      data |= m_ide->ide_controller_r( 0x1f0 + offset, 1 ) << 8;
18951893   }
18961894
18971895   return data;
r23498r23499
18991897
19001898WRITE16_MEMBER(zn_state::jdredd_ide_w)
19011899{
1902   device_t *device = machine().device("ide");
19031900   if( ACCESSING_BITS_0_7 )
19041901   {
1905      ide_controller_w( device, 0x1f0 + offset, 1, data >> 0 );
1902      m_ide->ide_controller_w( 0x1f0 + offset, 1, data >> 0 );
19061903   }
19071904   if( ACCESSING_BITS_8_15 )
19081905   {
1909      ide_controller_w( device, 0x1f0 + offset, 1, data >> 8 );
1906      m_ide->ide_controller_w( 0x1f0 + offset, 1, data >> 8 );
19101907   }
19111908}
19121909
r23498r23499
19991996
20001997MACHINE_RESET_MEMBER(zn_state,jdredd)
20011998{
2002   machine().device("ide")->reset();
1999   m_ide->reset();
20032000}
20042001
20052002static MACHINE_CONFIG_DERIVED( coh1000a, zn1_2mb_vram )
trunk/src/mame/drivers/jaguar.c
r23498r23499
10891089   AM_RANGE(0x04000000, 0x047fffff) AM_RAM AM_SHARE("sharedram")
10901090   AM_RANGE(0x04800000, 0x04bfffff) AM_ROMBANK("maingfxbank")
10911091   AM_RANGE(0x04c00000, 0x04dfffff) AM_ROMBANK("mainsndbank")
1092   AM_RANGE(0x04e00000, 0x04e003ff) AM_DEVREADWRITE_LEGACY("ide", ide_controller32_r, ide_controller32_w)
1092   AM_RANGE(0x04e00000, 0x04e003ff) AM_DEVREADWRITE("ide", ide_controller_device, ide_controller32_r, ide_controller32_w)
10931093   AM_RANGE(0x04f00000, 0x04f003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff)
10941094   AM_RANGE(0x04f00400, 0x04f007ff) AM_RAM AM_SHARE("gpuclut")
10951095   AM_RANGE(0x04f02100, 0x04f021ff) AM_READWRITE(gpuctrl_r, gpuctrl_w)
r23498r23499
11231123   AM_RANGE(0xa40000, 0xa40003) AM_WRITE(eeprom_enable_w)
11241124   AM_RANGE(0xb70000, 0xb70003) AM_READWRITE(misc_control_r, misc_control_w)
11251125   AM_RANGE(0xc00000, 0xdfffff) AM_ROMBANK("mainsndbank")
1126   AM_RANGE(0xe00000, 0xe003ff) AM_DEVREADWRITE_LEGACY("ide",  ide_controller32_r, ide_controller32_w)
1126   AM_RANGE(0xe00000, 0xe003ff) AM_DEVREADWRITE("ide", ide_controller_device, ide_controller32_r, ide_controller32_w)
11271127   AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff)
11281128   AM_RANGE(0xf00400, 0xf007ff) AM_RAM AM_SHARE("gpuclut")
11291129   AM_RANGE(0xf02100, 0xf021ff) AM_READWRITE(gpuctrl_r, gpuctrl_w)
r23498r23499
11511151   AM_RANGE(0x000000, 0x7fffff) AM_RAM AM_SHARE("sharedram")
11521152   AM_RANGE(0x800000, 0xbfffff) AM_ROMBANK("gpugfxbank")
11531153   AM_RANGE(0xc00000, 0xdfffff) AM_ROMBANK("dspsndbank")
1154   AM_RANGE(0xe00000, 0xe003ff) AM_DEVREADWRITE_LEGACY("ide", ide_controller32_r, ide_controller32_w)
1154   AM_RANGE(0xe00000, 0xe003ff) AM_DEVREADWRITE("ide", ide_controller_device, ide_controller32_r, ide_controller32_w)
11551155   AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff)
11561156   AM_RANGE(0xf00400, 0xf007ff) AM_RAM AM_SHARE("gpuclut")
11571157   AM_RANGE(0xf02100, 0xf021ff) AM_READWRITE(gpuctrl_r, gpuctrl_w)
trunk/src/mame/drivers/mediagx.c
r23498r23499
416416
417417READ32_MEMBER(mediagx_state::ide_r)
418418{
419   return ide_controller32_r(m_ide, space, 0x1f0/4 + offset, mem_mask);
419   return m_ide->ide_controller32_r(space, 0x1f0/4 + offset, mem_mask);
420420}
421421
422422WRITE32_MEMBER(mediagx_state::ide_w)
423423{
424   ide_controller32_w(m_ide, space, 0x1f0/4 + offset, data, mem_mask);
424   m_ide->ide_controller32_w(space, 0x1f0/4 + offset, data, mem_mask);
425425}
426426
427427READ32_MEMBER(mediagx_state::fdc_r)
428428{
429   return ide_controller32_r(m_ide, space, 0x3f0/4 + offset, mem_mask);
429   return m_ide->ide_controller32_r(space, 0x3f0/4 + offset, mem_mask);
430430}
431431
432432WRITE32_MEMBER(mediagx_state::fdc_w)
433433{
434   ide_controller32_w(m_ide, space, 0x3f0/4 + offset, data, mem_mask);
434   m_ide->ide_controller32_w(space, 0x3f0/4 + offset, data, mem_mask);
435435}
436436
437437
trunk/src/mame/drivers/fruitpc.c
r23498r23499
6767
6868READ32_MEMBER(fruitpc_state::ide_r)
6969{
70   return ide_controller32_r(m_ide, space, 0x1f0/4 + offset, mem_mask);
70   return m_ide->ide_controller32_r(space, 0x1f0/4 + offset, mem_mask);
7171}
7272
7373WRITE32_MEMBER(fruitpc_state::ide_w)
7474{
75   ide_controller32_w(m_ide, space, 0x1f0/4 + offset, data, mem_mask);
75   m_ide->ide_controller32_w(space, 0x1f0/4 + offset, data, mem_mask);
7676}
7777
7878READ32_MEMBER(fruitpc_state::fdc_r)
7979{
80   return ide_controller32_r(m_ide, space, 0x3f0/4 + offset, mem_mask);
80   return m_ide->ide_controller32_r(space, 0x3f0/4 + offset, mem_mask);
8181}
8282
8383WRITE32_MEMBER(fruitpc_state::fdc_w)
8484{
8585   //mame_printf_debug("FDC: write %08X, %08X, %08X\n", data, offset, mem_mask);
86   ide_controller32_w(m_ide, space, 0x3f0/4 + offset, data, mem_mask);
86   m_ide->ide_controller32_w(space, 0x3f0/4 + offset, data, mem_mask);
8787}
8888
8989static ADDRESS_MAP_START( fruitpc_map, AS_PROGRAM, 32, fruitpc_state )
trunk/src/mame/drivers/viper.c
r23498r23499
309309public:
310310   viper_state(const machine_config &mconfig, device_type type, const char *tag)
311311      : driver_device(mconfig, type, tag),
312      m_maincpu(*this, "maincpu") { }
312      m_maincpu(*this, "maincpu"),
313      m_ide(*this, "ide")
314   {
315   }
313316
314
315317   UINT32 m_epic_iack;
316318   int m_cf_card_ide;
317319   int m_unk1_bit;
r23498r23499
361363   int ds2430_insert_cmd_bit(int bit);
362364   void DS2430_w(int bit);
363365   required_device<cpu_device> m_maincpu;
366   required_device<ide_controller_device> m_ide;
364367};
365368
366369UINT32 viper_state::screen_update_viper(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
r23498r23499
12551258
12561259READ64_MEMBER(viper_state::cf_card_data_r)
12571260{
1258   device_t *device = machine().device("ide");
12591261   UINT64 r = 0;
12601262
12611263   if (ACCESSING_BITS_16_31)
r23498r23499
12641266      {
12651267         case 0x8:   // Duplicate Even RD Data
12661268         {
1267            r |= ide_bus_r(device, 0, 0) << 16;
1269            r |= m_ide->ide_bus_r(0, 0) << 16;
12681270            break;
12691271         }
12701272
r23498r23499
12791281
12801282WRITE64_MEMBER(viper_state::cf_card_data_w)
12811283{
1282   device_t *device = machine().device("ide");
12831284   if (ACCESSING_BITS_16_31)
12841285   {
12851286      switch (offset & 0xf)
12861287      {
12871288         case 0x8:   // Duplicate Even RD Data
12881289         {
1289            ide_bus_w(device, 0, 0, (data >> 16) & 0xffff);
1290            m_ide->ide_bus_w(0, 0, (data >> 16) & 0xffff);
12901291            break;
12911292         }
12921293
r23498r23499
13001301
13011302READ64_MEMBER(viper_state::cf_card_r)
13021303{
1303   device_t *device = machine().device("ide");
13041304   UINT64 r = 0;
13051305
13061306   if (ACCESSING_BITS_16_31)
r23498r23499
13181318            case 0x6:   // Select Card/Head
13191319            case 0x7:   // Status
13201320            {
1321               r |= ide_bus_r(device, 0, offset & 7) << 16;
1321               r |= m_ide->ide_bus_r(0, offset & 7) << 16;
13221322               break;
13231323            }
13241324
r23498r23499
13271327
13281328            case 0xd:   // Duplicate Error
13291329            {
1330               r |= ide_bus_r(device, 0, 1) << 16;
1330               r |= m_ide->ide_bus_r(0, 1) << 16;
13311331               break;
13321332            }
13331333            case 0xe:   // Alt Status
13341334            case 0xf:   // Drive Address
13351335            {
1336               r |= ide_bus_r(device, 1, offset & 7) << 16;
1336               r |= m_ide->ide_bus_r(1, offset & 7) << 16;
13371337               break;
13381338            }
13391339
r23498r23499
13641364
13651365WRITE64_MEMBER(viper_state::cf_card_w)
13661366{
1367   device_t *device = machine().device("ide");
1368
13691367   #ifdef VIPER_DEBUG_LOG
13701368   //printf("%s:compact_flash_w: %08X%08X, %08X, %08X%08X\n", machine().describe_context(), (UINT32)(data>>32), (UINT32)(data), offset, (UINT32)(mem_mask >> 32), (UINT32)(mem_mask));
13711369   #endif
r23498r23499
13851383            case 0x6:   // Select Card/Head
13861384            case 0x7:   // Command
13871385            {
1388               ide_bus_w(device, 0, offset & 7, (data >> 16) & 0xffff);
1386               m_ide->ide_bus_w(0, offset & 7, (data >> 16) & 0xffff);
13891387               break;
13901388            }
13911389
r23498r23499
13941392
13951393            case 0xd:   // Duplicate Features
13961394            {
1397               ide_bus_w(device, 0, 1, (data >> 16) & 0xffff);
1395               m_ide->ide_bus_w(0, 1, (data >> 16) & 0xffff);
13981396               break;
13991397            }
14001398            case 0xe:   // Device Ctl
14011399            case 0xf:   // Reserved
14021400            {
1403               ide_bus_w(device, 1, offset & 7, (data >> 16) & 0xffff);
1401               m_ide->ide_bus_w(1, offset & 7, (data >> 16) & 0xffff);
14041402               break;
14051403            }
14061404
r23498r23499
14261424                  // cylinder low register is set to 0x00
14271425                  // cylinder high register is set to 0x00
14281426
1429                  ide_bus_w(device, 1, 6, 0x04);
1427                  m_ide->ide_bus_w(1, 6, 0x04);
14301428
1431                  ide_bus_w(device, 0, 2, 0x01);
1432                  ide_bus_w(device, 0, 3, 0x01);
1433                  ide_bus_w(device, 0, 4, 0x00);
1434                  ide_bus_w(device, 0, 5, 0x00);
1429                  m_ide->ide_bus_w(0, 2, 0x01);
1430                  m_ide->ide_bus_w(0, 3, 0x01);
1431                  m_ide->ide_bus_w(0, 4, 0x00);
1432                  m_ide->ide_bus_w(0, 5, 0x00);
14351433               }
14361434               break;
14371435            }
r23498r23499
14571455
14581456READ64_MEMBER(viper_state::ata_r)
14591457{
1460   device_t *device = machine().device("ide");
14611458   UINT64 r = 0;
14621459
14631460   if (ACCESSING_BITS_16_31)
14641461   {
14651462      int reg = (offset >> 4) & 0x7;
14661463
1467      r |= ide_bus_r(device, (offset & 0x80) ? 1 : 0, reg) << 16;
1464      r |= m_ide->ide_bus_r((offset & 0x80) ? 1 : 0, reg) << 16;
14681465   }
14691466
14701467   return r;
r23498r23499
14721469
14731470WRITE64_MEMBER(viper_state::ata_w)
14741471{
1475   device_t *device = machine().device("ide");
14761472   if (ACCESSING_BITS_16_31)
14771473   {
14781474      int reg = (offset >> 4) & 0x7;
14791475
1480      ide_bus_w(device, (offset & 0x80) ? 1 : 0, reg, (UINT16)(data >> 16));
1476      m_ide->ide_bus_w((offset & 0x80) ? 1 : 0, reg, (UINT16)(data >> 16));
14811477   }
14821478}
14831479
r23498r23499
20192015
20202016void viper_state::machine_reset()
20212017{
2022   ide_controller_device *ide = (ide_controller_device *) machine().device("ide");
2023
2024   ide->reset();
2018   m_ide->reset();
20252019   mpc8240_epic_reset();
20262020
2027   UINT8 *ide_features = ide->ide_get_features(0);
2021   UINT8 *ide_features = m_ide->ide_get_features(0);
20282022
20292023   // Viper expects these settings or the BIOS fails
20302024   ide_features[51*2+0] = 0;           /* 51: PIO data transfer cycle timing mode */
trunk/src/mame/drivers/djmain.c
r23498r23499
271271
272272//---------
273273
274#define IDE_STD_OFFSET  (0x1f0/2)
275#define IDE_ALT_OFFSET  (0x3f6/2)
276
277274READ32_MEMBER(djmain_state::ide_std_r)
278275{
279   device_t *device = machine().device("ide");
280276   if (ACCESSING_BITS_0_7)
281      return ide_controller16_r(device, space, IDE_STD_OFFSET + offset, 0xff00) >> 8;
277      return m_ide->ide_controller16_r(space, 0x1f0/2 + offset, 0xff00) >> 8;
282278   else
283      return ide_controller16_r(device, space, IDE_STD_OFFSET + offset, 0xffff) << 16;
279      return m_ide->ide_controller16_r(space, 0x1f0/2 + offset, 0xffff) << 16;
284280}
285281
286282WRITE32_MEMBER(djmain_state::ide_std_w)
287283{
288   device_t *device = machine().device("ide");
289284   if (ACCESSING_BITS_0_7)
290      ide_controller16_w(device, space, IDE_STD_OFFSET + offset, data << 8, 0xff00);
285      m_ide->ide_controller16_w(space, 0x1f0/2 + offset, data << 8, 0xff00);
291286   else
292      ide_controller16_w(device, space, IDE_STD_OFFSET + offset, data >> 16, 0xffff);
287      m_ide->ide_controller16_w(space, 0x1f0/2 + offset, data >> 16, 0xffff);
293288}
294289
295290
296291READ32_MEMBER(djmain_state::ide_alt_r)
297292{
298   device_t *device = machine().device("ide");
299293   if (offset == 0)
300      return ide_controller16_r(device, space, IDE_ALT_OFFSET, 0x00ff) << 24;
294      return m_ide->ide_controller16_r(space, 0x3f6/2, 0x00ff) << 24;
301295
302296   return 0;
303297}
304298
305299WRITE32_MEMBER(djmain_state::ide_alt_w)
306300{
307   device_t *device = machine().device("ide");
308301   if (offset == 0 && ACCESSING_BITS_16_23)
309      ide_controller16_w(device, space, IDE_ALT_OFFSET, data >> 24, 0x00ff);
302      m_ide->ide_controller16_w(space, 0x3f6/2, data >> 24, 0x00ff);
310303}
311304
312305
r23498r23499
13951388
13961389void djmain_state::machine_start()
13971390{
1398   ide_controller_device *ide = (ide_controller_device *) machine().device("ide");
1391   if (m_ide_master_password != NULL)
1392      m_ide->ide_set_master_password(m_ide_master_password);
1393   if (m_ide_user_password != NULL)
1394      m_ide->ide_set_user_password(m_ide_user_password);
13991395
1400   if (ide != NULL && m_ide_master_password != NULL)
1401      ide->ide_set_master_password(m_ide_master_password);
1402   if (ide != NULL && m_ide_user_password != NULL)
1403      ide->ide_set_user_password(m_ide_user_password);
1404
14051396   save_item(NAME(m_sndram_bank));
14061397   save_item(NAME(m_pending_vb_int));
14071398   save_item(NAME(m_v_ctrl));
r23498r23499
14181409   sndram_set_bank();
14191410
14201411   /* reset the IDE controller */
1421   machine().device("ide")->reset();
1412   m_ide->reset();
14221413
14231414   /* reset LEDs */
14241415   set_led_status(machine(), 0, 1);
trunk/src/mame/drivers/voyager.c
r23498r23499
4949
5050READ32_MEMBER(voyager_state::ide_r)
5151{
52   return ide_controller32_r(m_ide, space, 0x1f0/4 + offset, mem_mask);
52   return m_ide->ide_controller32_r(space, 0x1f0/4 + offset, mem_mask);
5353}
5454
5555WRITE32_MEMBER(voyager_state::ide_w)
5656{
57   ide_controller32_w(m_ide, space, 0x1f0/4 + offset, data, mem_mask);
57   m_ide->ide_controller32_w(space, 0x1f0/4 + offset, data, mem_mask);
5858}
5959
6060READ32_MEMBER(voyager_state::fdc_r)
6161{
62   return ide_controller32_r(m_ide, space, 0x3f0/4 + offset, mem_mask);
62   return m_ide->ide_controller32_r(space, 0x3f0/4 + offset, mem_mask);
6363}
6464
6565WRITE32_MEMBER(voyager_state::fdc_w)
6666{
6767   //mame_printf_debug("FDC: write %08X, %08X, %08X\n", data, offset, mem_mask);
68   ide_controller32_w(m_ide, space, 0x3f0/4 + offset, data, mem_mask);
68   m_ide->ide_controller32_w(space, 0x3f0/4 + offset, data, mem_mask);
6969}
7070
7171
trunk/src/mame/drivers/kinst.c
r23498r23499
150150      m_rambase2(*this, "rambase2"),
151151      m_control(*this, "control"),
152152      m_rombase(*this, "rombase"),
153      m_maincpu(*this, "maincpu") { }
153      m_maincpu(*this, "maincpu"),
154      m_ide(*this, "ide" )
155   {
156   }
154157
155158   required_shared_ptr<UINT32> m_rambase;
156159   required_shared_ptr<UINT32> m_rambase2;
r23498r23499
172175   UINT32 screen_update_kinst(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
173176   INTERRUPT_GEN_MEMBER(irq0_start);
174177   required_device<cpu_device> m_maincpu;
178   required_device<ide_controller_device> m_ide;
175179
176180protected:
177181   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
r23498r23499
211215
212216void kinst_state::machine_reset()
213217{
214   ide_controller_device *ide = (ide_controller_device *) machine().device("ide");
215   UINT8 *features = ide->ide_get_features(0);
218   UINT8 *features = m_ide->ide_get_features(0);
216219
217220   if (strncmp(machine().system().name, "kinst2", 6) != 0)
218221   {
r23498r23499
322325
323326READ32_MEMBER(kinst_state::kinst_ide_r)
324327{
325   device_t *device = machine().device("ide");
326   return midway_ide_asic_r(device, space, offset / 2, mem_mask);
328   return midway_ide_asic_r(m_ide, space, offset / 2, mem_mask);
327329}
328330
329331
330332WRITE32_MEMBER(kinst_state::kinst_ide_w)
331333{
332   device_t *device = machine().device("ide");
333   midway_ide_asic_w(device, space, offset / 2, data, mem_mask);
334   midway_ide_asic_w(m_ide, space, offset / 2, data, mem_mask);
334335}
335336
336337
337338READ32_MEMBER(kinst_state::kinst_ide_extra_r)
338339{
339   device_t *device = machine().device("ide");
340   return ide_controller32_r(device, space, 0x3f6/4, 0x00ff0000) >> 16;
340   return m_ide->ide_controller32_r(space, 0x3f6/4, 0x00ff0000) >> 16;
341341}
342342
343343
344344WRITE32_MEMBER(kinst_state::kinst_ide_extra_w)
345345{
346   device_t *device = machine().device("ide");
347   ide_controller32_w(device, space, 0x3f6/4, data << 16, 0x00ff0000);
346   m_ide->ide_controller32_w(space, 0x3f6/4, data << 16, 0x00ff0000);
348347}
349348
350349
trunk/src/mame/drivers/savquest.c
r23498r23499
537537
538538READ32_MEMBER(savquest_state::ide_r)
539539{
540   return ide_controller32_r(m_ide, space, 0x1f0/4 + offset, mem_mask);
540   return m_ide->ide_controller32_r(space, 0x1f0/4 + offset, mem_mask);
541541}
542542
543543WRITE32_MEMBER(savquest_state::ide_w)
544544{
545   ide_controller32_w(m_ide, space, 0x1f0/4 + offset, data, mem_mask);
545   m_ide->ide_controller32_w(space, 0x1f0/4 + offset, data, mem_mask);
546546}
547547
548548READ32_MEMBER(savquest_state::fdc_r)
549549{
550   return ide_controller32_r(m_ide, space, 0x3f0/4 + offset, mem_mask);
550   return m_ide->ide_controller32_r(space, 0x3f0/4 + offset, mem_mask);
551551}
552552
553553WRITE32_MEMBER(savquest_state::fdc_w)
554554{
555555   //mame_printf_debug("FDC: write %08X, %08X, %08X\n", data, offset, mem_mask);
556   ide_controller32_w(m_ide, space, 0x3f0/4 + offset, data, mem_mask);
556   m_ide->ide_controller32_w(space, 0x3f0/4 + offset, data, mem_mask);
557557}
558558
559559static ADDRESS_MAP_START(savquest_map, AS_PROGRAM, 32, savquest_state)
trunk/src/mame/drivers/photoply.c
r23498r23499
4040
4141READ32_MEMBER(photoply_state::ide_r)
4242{
43   device_t *device = machine().device("ide");
44   return ide_controller32_r(device, space, 0x1f0/4 + offset, mem_mask);
43   return m_ide->ide_controller32_r(space, 0x1f0/4 + offset, mem_mask);
4544}
4645
4746WRITE32_MEMBER(photoply_state::ide_w)
4847{
49   device_t *device = machine().device("ide");
50   ide_controller32_w(device, space, 0x1f0/4 + offset, data, mem_mask);
48   m_ide->ide_controller32_w(space, 0x1f0/4 + offset, data, mem_mask);
5149}
5250
5351READ32_MEMBER(photoply_state::fdc_r)
5452{
55   device_t *device = machine().device("ide");
56   return ide_controller32_r(device, space, 0x3f0/4 + offset, mem_mask);
53   return m_ide->ide_controller32_r(space, 0x3f0/4 + offset, mem_mask);
5754}
5855
5956WRITE32_MEMBER(photoply_state::fdc_w)
6057{
61   device_t *device = machine().device("ide");
6258   //mame_printf_debug("FDC: write %08X, %08X, %08X\n", data, offset, mem_mask);
63   ide_controller32_w(device, space, 0x3f0/4 + offset, data, mem_mask);
59   m_ide->ide_controller32_w(space, 0x3f0/4 + offset, data, mem_mask);
6460}
6561
6662static ADDRESS_MAP_START( photoply_map, AS_PROGRAM, 32, photoply_state )
trunk/src/mame/drivers/chihiro.c
r23498r23499
412412   struct chihiro_devices {
413413      pic8259_device    *pic8259_1;
414414      pic8259_device    *pic8259_2;
415      device_t    *ide;
415      ide_controller_device *ide;
416416   } chihiro_devs;
417417
418418   nv2a_renderer *nvidia_nv2a;
r23498r23499
26872687
26882688   offset *= 4;
26892689   size = convert_to_offset_and_size32(&offset, mem_mask);
2690   return ide_controller_r(chihiro_devs.ide, offset+0x01f0, size) << ((offset & 3) * 8);
2690   return chihiro_devs.ide->ide_controller_r(offset+0x01f0, size) << ((offset & 3) * 8);
26912691}
26922692
26932693WRITE32_MEMBER( chihiro_state::ide_w )
r23498r23499
26972697   offset *= 4;
26982698   size = convert_to_offset_and_size32(&offset, mem_mask);
26992699   data = data >> ((offset & 3) * 8);
2700   ide_controller_w(chihiro_devs.ide, offset+0x01f0, size, data);
2700   chihiro_devs.ide->ide_controller_w(offset+0x01f0, size, data);
27012701}
27022702
27032703// ======================> ide_baseboard_device
r23498r23499
30033003   AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
30043004   AM_RANGE(0x8000, 0x80ff) AM_READWRITE(dummy_r, dummy_w)
30053005   AM_RANGE(0xc000, 0xc0ff) AM_READWRITE(smbus_r, smbus_w)
3006   AM_RANGE(0xff60, 0xff67) AM_DEVREADWRITE_LEGACY("ide", ide_bus_master32_r, ide_bus_master32_w)
3006   AM_RANGE(0xff60, 0xff67) AM_DEVREADWRITE("ide", ide_controller_device, ide_bus_master32_r, ide_bus_master32_w)
30073007ADDRESS_MAP_END
30083008
30093009static INPUT_PORTS_START( chihiro )
r23498r23499
30213021   m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(chihiro_state::irq_callback),this));
30223022   chihiro_devs.pic8259_1 = machine().device<pic8259_device>( "pic8259_1" );
30233023   chihiro_devs.pic8259_2 = machine().device<pic8259_device>( "pic8259_2" );
3024   chihiro_devs.ide = machine().device( "ide" );
3024   chihiro_devs.ide = machine().device<ide_controller_device>( "ide" );
30253025   if (machine().debug_flags & DEBUG_FLAG_ENABLED)
30263026      debug_console_register_command(machine(),"chihiro",CMDFLAG_NONE,0,1,4,chihiro_debug_commands);
30273027}
trunk/src/mame/drivers/midqslvr.c
r23498r23499
362362
363363READ32_MEMBER(midqslvr_state::ide_r)
364364{
365   return ide_controller32_r(m_ide, space, 0x1f0/4 + offset, mem_mask);
365   return m_ide->ide_controller32_r(space, 0x1f0/4 + offset, mem_mask);
366366}
367367
368368WRITE32_MEMBER(midqslvr_state::ide_w)
369369{
370   ide_controller32_w(m_ide, space, 0x1f0/4 + offset, data, mem_mask);
370   m_ide->ide_controller32_w(space, 0x1f0/4 + offset, data, mem_mask);
371371}
372372
373373READ32_MEMBER(midqslvr_state::fdc_r)
374374{
375   return ide_controller32_r(m_ide, space, 0x3f0/4 + offset, mem_mask);
375   return m_ide->ide_controller32_r(space, 0x3f0/4 + offset, mem_mask);
376376}
377377
378378WRITE32_MEMBER(midqslvr_state::fdc_w)
379379{
380380   //mame_printf_debug("FDC: write %08X, %08X, %08X\n", data, offset, mem_mask);
381   ide_controller32_w(m_ide, space, 0x3f0/4 + offset, data, mem_mask);
381   m_ide->ide_controller32_w(space, 0x3f0/4 + offset, data, mem_mask);
382382}
383383
384384static ADDRESS_MAP_START(midqslvr_map, AS_PROGRAM, 32, midqslvr_state)
trunk/src/mame/drivers/calchase.c
r23498r23499
376376
377377READ32_MEMBER(calchase_state::ide_r)
378378{
379   return ide_controller32_r(m_ide, space, 0x1f0/4 + offset, mem_mask);
379   return m_ide->ide_controller32_r(space, 0x1f0/4 + offset, mem_mask);
380380}
381381
382382WRITE32_MEMBER(calchase_state::ide_w)
383383{
384   ide_controller32_w(m_ide, space, 0x1f0/4 + offset, data, mem_mask);
384   m_ide->ide_controller32_w(space, 0x1f0/4 + offset, data, mem_mask);
385385}
386386
387387READ32_MEMBER(calchase_state::fdc_r)
388388{
389   return ide_controller32_r(m_ide, space, 0x3f0/4 + offset, mem_mask);
389   return m_ide->ide_controller32_r(space, 0x3f0/4 + offset, mem_mask);
390390}
391391
392392WRITE32_MEMBER(calchase_state::fdc_w)
393393{
394394   //mame_printf_debug("FDC: write %08X, %08X, %08X\n", data, offset, mem_mask);
395   ide_controller32_w(m_ide, space, 0x3f0/4 + offset, data, mem_mask);
395   m_ide->ide_controller32_w(space, 0x3f0/4 + offset, data, mem_mask);
396396}
397397
398398static ADDRESS_MAP_START( calchase_map, AS_PROGRAM, 32, calchase_state )
trunk/src/mame/drivers/queen.c
r23498r23499
232232
233233READ32_MEMBER(queen_state::ide_r)
234234{
235   return ide_controller32_r(m_ide, space, 0x1f0/4 + offset, mem_mask);
235   return m_ide->ide_controller32_r(space, 0x1f0/4 + offset, mem_mask);
236236}
237237
238238WRITE32_MEMBER(queen_state::ide_w)
239239{
240   ide_controller32_w(m_ide, space, 0x1f0/4 + offset, data, mem_mask);
240   m_ide->ide_controller32_w(space, 0x1f0/4 + offset, data, mem_mask);
241241}
242242
243243READ32_MEMBER(queen_state::fdc_r)
244244{
245   return ide_controller32_r(m_ide, space, 0x3f0/4 + offset, mem_mask);
245   return m_ide->ide_controller32_r(space, 0x3f0/4 + offset, mem_mask);
246246}
247247
248248WRITE32_MEMBER(queen_state::fdc_w)
249249{
250250   //mame_printf_debug("FDC: write %08X, %08X, %08X\n", data, offset, mem_mask);
251   ide_controller32_w(m_ide, space, 0x3f0/4 + offset, data, mem_mask);
251   m_ide->ide_controller32_w(space, 0x3f0/4 + offset, data, mem_mask);
252252}
253253
254254static ADDRESS_MAP_START( queen_map, AS_PROGRAM, 32, queen_state )
trunk/src/mame/drivers/taitotz.c
r23498r23499
566566      m_maincpu(*this, "maincpu"),
567567      m_iocpu(*this, "iocpu"),
568568      m_work_ram(*this, "work_ram"),
569      m_mbox_ram(*this, "mbox_ram") { }
569      m_mbox_ram(*this, "mbox_ram"),
570      m_ide(*this, "ide")
571   {
572   }
570573
571574   required_device<cpu_device> m_maincpu;
572575   required_device<cpu_device> m_iocpu;
573576   required_shared_ptr<UINT64> m_work_ram;
574577   required_shared_ptr<UINT8>  m_mbox_ram;
578   required_device<ide_controller_device> m_ide;
575579
576580   DECLARE_READ64_MEMBER(ppc_common_r);
577581   DECLARE_WRITE64_MEMBER(ppc_common_w);
r23498r23499
21052109
21062110READ8_MEMBER(taitotz_state::tlcs_ide0_r)
21072111{
2108   device_t *device = machine().device("ide");
21092112   static UINT16 ide_reg_latch;
21102113   int reg = offset >> 1;
21112114
r23498r23499
21132116   {
21142117      if ((offset & 1) == 0)
21152118      {
2116         ide_reg_latch = ide_bus_r(device, 0, reg);
2119         ide_reg_latch = m_ide->ide_bus_r(0, reg);
21172120         return (ide_reg_latch & 0xff);
21182121      }
21192122      else
r23498r23499
21262129      if (offset & 1)
21272130         fatalerror("tlcs_ide0_r: %02X, odd offset\n", offset);
21282131
2129      UINT8 d = ide_bus_r(device, 0, reg);
2132      UINT8 d = m_ide->ide_bus_r(0, reg);
21302133      if (reg == 7)
21312134         d &= ~0x2;      // Type Zero doesn't like the index bit. It's defined as vendor-specific, so it probably shouldn't be up...
21322135                     // The status check explicitly checks for 0x50 (drive ready, seek complete).
r23498r23499
21362139
21372140WRITE8_MEMBER(taitotz_state::tlcs_ide0_w)
21382141{
2139   device_t *device = machine().device("ide");
21402142   static UINT16 ide_reg_latch;
21412143   int reg = offset >> 1;
21422144
r23498r23499
21512153      {
21522154         ide_reg_latch &= 0x00ff;
21532155         ide_reg_latch |= (UINT16)(data) << 8;
2154         ide_bus_w(device, 0, reg, ide_reg_latch);
2156         m_ide->ide_bus_w(0, reg, ide_reg_latch);
21552157      }
21562158   }
21572159   else
21582160   {
21592161      if (offset & 1)
21602162         fatalerror("tlcs_ide0_w: %02X, %02X, odd offset\n", offset, data);
2161      ide_bus_w(device, 0, reg, data);
2163      m_ide->ide_bus_w(0, reg, data);
21622164   }
21632165}
21642166
21652167READ8_MEMBER(taitotz_state::tlcs_ide1_r)
21662168{
2167   device_t *device = machine().device("ide");
21682169   //static UINT16 ide_reg_latch;
21692170   int reg = offset >> 1;
21702171
r23498r23499
21732174
21742175   if ((offset & 1) == 0)
21752176   {
2176      UINT8 d = ide_bus_r(device, 1, reg);
2177      UINT8 d = m_ide->ide_bus_r(1, reg);
21772178      d &= ~0x2;      // Type Zero doesn't like the index bit. It's defined as vendor-specific, so it probably shouldn't be up...
21782179                  // The status check explicitly checks for 0x50 (drive ready, seek complete).
21792180      return d;
r23498r23499
21812182   else
21822183   {
21832184      //fatalerror("tlcs_ide1_r: %02X, odd offset\n", offset);
2184      UINT8 d = ide_bus_r(device, 1, reg);
2185      UINT8 d = m_ide->ide_bus_r(1, reg);
21852186      d &= ~0x2;
21862187      return d;
21872188   }
r23498r23499
21892190
21902191WRITE8_MEMBER(taitotz_state::tlcs_ide1_w)
21912192{
2192   device_t *device = machine().device("ide");
21932193   static UINT16 ide_reg_latch;
21942194   int reg = offset >> 1;
21952195
r23498r23499
22052205   {
22062206      ide_reg_latch &= 0x00ff;
22072207      ide_reg_latch |= (UINT16)(data) << 16;
2208      ide_bus_w(device, 1, reg, ide_reg_latch);
2208      m_ide->ide_bus_w(1, reg, ide_reg_latch);
22092209   }
22102210}
22112211
r23498r23499
25412541
25422542void taitotz_state::machine_reset()
25432543{
2544   machine().device("ide")->reset();
2545
25462544   if (m_hdd_serial_number != NULL)
25472545   {
2548      set_ide_drive_serial_number(machine().device("ide"), 0, m_hdd_serial_number);
2546      set_ide_drive_serial_number(m_ide, 0, m_hdd_serial_number);
25492547   }
25502548}
25512549
trunk/src/mame/drivers/twinkle.c
r23498r23499
247247      : driver_device(mconfig, type, tag),
248248      m_am53cf96(*this, "scsi:am53cf96"),
249249      m_maincpu(*this, "maincpu"),
250      m_audiocpu(*this, "audiocpu") { }
250      m_audiocpu(*this, "audiocpu"),
251      m_ide(*this, "ide")
252   {
253   }
251254
252255   required_device<am53cf96_device> m_am53cf96;
253256
r23498r23499
276279   DECLARE_DRIVER_INIT(twinkle);
277280   required_device<cpu_device> m_maincpu;
278281   required_device<cpu_device> m_audiocpu;
282   required_device<ide_controller_device> m_ide;
279283};
280284
281285/* RTC */
r23498r23499
645649
646650READ16_MEMBER(twinkle_state::twinkle_ide_r)
647651{
648   device_t *device = machine().device("ide");
649652   if (offset == 0)
650653   {
651      return ide_controller_r(device, offset+0x1f0, 2);
654      return m_ide->ide_controller_r(0x1f0 + offset, 2);
652655   }
653656   else
654657   {
655      return ide_controller_r(device, offset+0x1f0, 1);
658      return m_ide->ide_controller_r(0x1f0 + offset, 1);
656659   }
657660}
658661
659662WRITE16_MEMBER(twinkle_state::twinkle_ide_w)
660663{
661   device_t *device = machine().device("ide");
662   ide_controller_w(device, offset+0x1f0, 1, data);
664   m_ide->ide_controller_w(0x1f0 + offset, 1, data);
663665}
664666
665667/*
trunk/src/mame/drivers/cobra.c
r23498r23499
608608      m_subcpu(*this, "subcpu"),
609609      m_gfxcpu(*this, "gfxcpu"),
610610      m_gfx_pagetable(*this, "pagetable"),
611      m_k001604(*this, "k001604")
611      m_k001604(*this, "k001604"),
612      m_ide(*this, "ide")
612613   { }
613614
614615   required_device<cpu_device> m_maincpu;
r23498r23499
616617   required_device<cpu_device> m_gfxcpu;
617618   required_shared_ptr<UINT64> m_gfx_pagetable;
618619   required_device<k001604_device> m_k001604;
620   required_device<ide_controller_device> m_ide;
619621
620622   DECLARE_READ64_MEMBER(main_comram_r);
621623   DECLARE_WRITE64_MEMBER(main_comram_w);
r23498r23499
18141816
18151817READ32_MEMBER(cobra_state::sub_ata0_r)
18161818{
1817   device_t *device = machine().device("ide");
18181819   UINT32 r = 0;
18191820
18201821   if (ACCESSING_BITS_16_31)
18211822   {
1822      UINT16 v = ide_bus_r(device, 0, (offset << 1) + 0);
1823      UINT16 v = m_ide->ide_bus_r(0, (offset << 1) + 0);
18231824      r |= ((v << 8) | (v >> 8)) << 16;
18241825   }
18251826   if (ACCESSING_BITS_0_15)
18261827   {
1827      UINT16 v = ide_bus_r(device, 0, (offset << 1) + 1);
1828      UINT16 v = m_ide->ide_bus_r(0, (offset << 1) + 1);
18281829      r |= ((v << 8) | (v >> 8)) << 0;
18291830   }
18301831
r23498r23499
18331834
18341835WRITE32_MEMBER(cobra_state::sub_ata0_w)
18351836{
1836   device_t *device = machine().device("ide");
1837
18381837   if (ACCESSING_BITS_16_31)
18391838   {
18401839      UINT16 d = ((data >> 24) & 0xff) | ((data >> 8) & 0xff00);
1841      ide_bus_w(device, 0, (offset << 1) + 0, d);
1840      m_ide->ide_bus_w(0, (offset << 1) + 0, d);
18421841   }
18431842   if (ACCESSING_BITS_0_15)
18441843   {
18451844      UINT16 d = ((data >> 8) & 0xff) | ((data << 8) & 0xff00);
1846      ide_bus_w(device, 0, (offset << 1) + 1, d);
1845      m_ide->ide_bus_w(0, (offset << 1) + 1, d);
18471846   }
18481847}
18491848
18501849READ32_MEMBER(cobra_state::sub_ata1_r)
18511850{
1852   device_t *device = machine().device("ide");
18531851   UINT32 r = 0;
18541852
18551853   if (ACCESSING_BITS_16_31)
18561854   {
1857      UINT16 v = ide_bus_r(device, 1, (offset << 1) + 0);
1855      UINT16 v = m_ide->ide_bus_r(1, (offset << 1) + 0);
18581856      r |= ((v << 8) | (v >> 8)) << 16;
18591857   }
18601858   if (ACCESSING_BITS_0_15)
18611859   {
1862      UINT16 v = ide_bus_r(device, 1, (offset << 1) + 1);
1860      UINT16 v = m_ide->ide_bus_r(1, (offset << 1) + 1);
18631861      r |= ((v << 8) | (v >> 8)) << 0;
18641862   }
18651863
r23498r23499
18681866
18691867WRITE32_MEMBER(cobra_state::sub_ata1_w)
18701868{
1871   device_t *device = machine().device("ide");
1872
18731869   if (ACCESSING_BITS_16_31)
18741870   {
18751871      UINT16 d = ((data >> 24) & 0xff) | ((data >> 8) & 0xff00);
1876      ide_bus_w(device, 1, (offset << 1) + 0, d);
1872      m_ide->ide_bus_w(1, (offset << 1) + 0, d);
18771873   }
18781874   if (ACCESSING_BITS_0_15)
18791875   {
18801876      UINT16 d = ((data >> 8) & 0xff) | ((data << 8) & 0xff00);
1881      ide_bus_w(device, 1, (offset << 1) + 1, d);
1877      m_ide->ide_bus_w(1, (offset << 1) + 1, d);
18821878   }
18831879}
18841880
r23498r23499
31953191{
31963192   m_sub_interrupt = 0xff;
31973193
3198   ide_controller_device *ide = (ide_controller_device *) machine().device("ide");
3199   UINT8 *ide_features = ide->ide_get_features(0);
3194   UINT8 *ide_features = m_ide->ide_get_features(0);
32003195
32013196   // Cobra expects these settings or the BIOS fails
32023197   ide_features[51*2+0] = 0;           /* 51: PIO data transfer cycle timing mode */

Previous 199869 Revisions Next


© 1997-2024 The MAME Team