Previous 199869 Revisions Next

r23688 Thursday 13th June, 2013 at 21:58:11 UTC by smf
simplified ide_device_interface part 2 (nw)
[src/emu/machine]idectrl.c idehd.c idehd.h

trunk/src/emu/machine/idectrl.c
r23687r23688
341341            dev->m_dmarq_handler.set_callback(DEVCB2_DEVWRITELINE("^", ide_controller_device, dmarq1_write_line));
342342         }
343343
344         dev->m_csel = i;
345         dev->m_dasp = m_slot[1]->dev() != NULL;
344         dev->write_csel(i);
345         dev->write_dasp(m_slot[1]->dev() != NULL);
346346      }
347347   }
348348
trunk/src/emu/machine/idehd.c
r23687r23688
8080ide_device_interface::ide_device_interface(const machine_config &mconfig, device_t &device) :
8181   m_master_password(NULL),
8282   m_user_password(NULL),
83   m_csel(0),
84   m_dasp(0),
8583   m_irq_handler(device),
8684   m_dmarq_handler(device)
8785{
8886}
8987
90void ide_device_interface::set_irq(int state)
88ide_mass_storage_device::ide_mass_storage_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock,const char *shortname, const char *source)
89   : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
90   ide_device_interface(mconfig, *this),
91   device_slot_card_interface(mconfig, *this),
92   m_csel(0),
93   m_dasp(0)
9194{
95}
96
97void ide_mass_storage_device::set_irq(int state)
98{
9299   if (state == ASSERT_LINE)
93100      LOG(("IDE interrupt assert\n"));
94101   else
95102      LOG(("IDE interrupt clear\n"));
96103
104   m_interrupt_pending = state;
105
97106   /* signal an interrupt */
98107   m_irq_handler(state);
99108}
100109
101void ide_device_interface::set_dmarq(int state)
110void ide_mass_storage_device::set_dmarq(int state)
102111{
103112   m_dmarq_handler(state);
104113}
105114
106ide_mass_storage_device::ide_mass_storage_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock,const char *shortname, const char *source)
107   : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
108   ide_device_interface(mconfig, *this),
109   device_slot_card_interface(mconfig, *this)
115WRITE_LINE_MEMBER( ide_mass_storage_device::write_csel )
110116{
117   m_csel = state;
111118}
112119
120WRITE_LINE_MEMBER( ide_mass_storage_device::write_dasp )
121{
122   m_dasp = state;
123}
124
113125/*************************************
114126 *
115127 *  Compute the LBA address
r23687r23688
364376   set_dmarq(CLEAR_LINE);
365377}
366378
367void ide_mass_storage_device::set_irq(int state)
368{
369   ide_device_interface::set_irq(state);
370
371   m_interrupt_pending = state;
372}
373
374379void ide_mass_storage_device::signal_delayed_interrupt(attotime time, int buffer_ready)
375380{
376381   /* clear buffer ready and set the busy flag */
trunk/src/emu/machine/idehd.h
r23687r23688
2424public:
2525   ide_device_interface(const machine_config &mconfig, device_t &device);
2626
27   virtual void set_irq(int state);
28   virtual void set_dmarq(int state);
29
3027   virtual UINT16 read_dma() = 0;
3128   virtual DECLARE_READ16_MEMBER(read_cs0) = 0;
3229   virtual DECLARE_READ16_MEMBER(read_cs1) = 0;
30
3331   virtual void write_dma(UINT16 data) = 0;
3432   virtual DECLARE_WRITE16_MEMBER(write_cs0) = 0;
3533   virtual DECLARE_WRITE16_MEMBER(write_cs1) = 0;
34   virtual DECLARE_WRITE_LINE_MEMBER(write_csel) = 0;
35   virtual DECLARE_WRITE_LINE_MEMBER(write_dasp) = 0;
3636
3737   virtual UINT8 *get_features() = 0;
3838
r23687r23688
4141   const UINT8 *   m_master_password;
4242   const UINT8 *   m_user_password;
4343
44   int m_csel;
45   int m_dasp;
46
4744   devcb2_write_line m_irq_handler;
4845   devcb2_write_line m_dmarq_handler;
4946};
r23687r23688
5552public:
5653   ide_mass_storage_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock,const char *shortname = "", const char *source = __FILE__);
5754
58   virtual int  read_sector(UINT32 lba, void *buffer) = 0;
59   virtual int  write_sector(UINT32 lba, const void *buffer) = 0;
60
61   virtual void set_irq(int state);
6255   virtual UINT16 read_dma();
6356   virtual DECLARE_READ16_MEMBER(read_cs0);
6457   virtual DECLARE_READ16_MEMBER(read_cs1);
58
6559   virtual void write_dma(UINT16 data);
6660   virtual DECLARE_WRITE16_MEMBER(write_cs0);
6761   virtual DECLARE_WRITE16_MEMBER(write_cs1);
62   virtual DECLARE_WRITE_LINE_MEMBER(write_csel);
63   virtual DECLARE_WRITE_LINE_MEMBER(write_dasp);
6864
6965   virtual UINT8 *get_features() { return m_features; }
7066   
r23687r23688
7369   virtual void device_reset();
7470   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
7571
72   virtual int read_sector(UINT32 lba, void *buffer) = 0;
73   virtual int write_sector(UINT32 lba, const void *buffer) = 0;
7674   virtual bool is_ready() = 0;
7775   virtual void read_key(UINT8 key[]) = 0;
7876
77   void set_irq(int state);
78   void set_dmarq(int state);
79
7980   UINT8           m_gnetreadlock;
8081
8182   UINT8           m_features[IDE_DISK_SECTOR_SIZE];
r23687r23688
99100   void read_buffer_empty();
100101   void write_buffer_full();
101102
103   int m_csel;
104   int m_dasp;
105
102106   int             m_cur_drive;
103107   UINT16          m_cur_cylinder;
104108   UINT8           m_cur_sector;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team