Previous 199869 Revisions Next

r23687 Thursday 13th June, 2013 at 20:52:00 UTC by smf
simplified ide_device_interface (nw)
[src/emu/machine]idehd.c idehd.h

trunk/src/emu/machine/idehd.c
r23686r23687
124124
125125   /* standard CHS */
126126   else
127      return (m_cur_cylinder * get_heads() + m_cur_head) * get_sectors() + m_cur_sector - 1;
127      return (m_cur_cylinder * m_num_heads + m_cur_head) * m_num_sectors + m_cur_sector - 1;
128128}
129129
130130
r23686r23687
409409   {
410410      /* sectors are 1-based */
411411      m_cur_sector++;
412      if (m_cur_sector > get_sectors())
412      if (m_cur_sector > m_num_sectors)
413413      {
414414         /* heads are 0 based */
415415         m_cur_sector = 1;
416416         m_cur_head++;
417         if (m_cur_head >= get_heads())
417         if (m_cur_head >= m_num_heads)
418418         {
419419            m_cur_head = 0;
420420            m_cur_cylinder++;
trunk/src/emu/machine/idehd.h
r23686r23687
3434   virtual DECLARE_WRITE16_MEMBER(write_cs0) = 0;
3535   virtual DECLARE_WRITE16_MEMBER(write_cs1) = 0;
3636
37   UINT8 *get_features() { return m_features;}
37   virtual UINT8 *get_features() = 0;
3838
39   UINT16 get_cylinders() { return m_num_cylinders; }
40   UINT16 get_sectors() { return m_num_sectors; }
41   UINT16 get_heads() { return m_num_heads; }
42   virtual bool is_ready() { return true; }
43   virtual void read_key(UINT8 key[]) { }
44
4539   UINT8           m_master_password_enable;
4640   UINT8           m_user_password_enable;
4741   const UINT8 *   m_master_password;
4842   const UINT8 *   m_user_password;
4943
50   UINT8           m_gnetreadlock;
51
5244   int m_csel;
5345   int m_dasp;
5446
5547   devcb2_write_line m_irq_handler;
5648   devcb2_write_line m_dmarq_handler;
57
58protected:
59   UINT8           m_features[IDE_DISK_SECTOR_SIZE];
60   UINT16          m_num_cylinders;
61   UINT8           m_num_sectors;
62   UINT8           m_num_heads;
6349};
6450
6551class ide_mass_storage_device : public device_t,
r23686r23687
8066   virtual DECLARE_WRITE16_MEMBER(write_cs0);
8167   virtual DECLARE_WRITE16_MEMBER(write_cs1);
8268
69   virtual UINT8 *get_features() { return m_features; }
70   
8371protected:
8472   virtual void device_start();
8573   virtual void device_reset();
8674   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
8775
76   virtual bool is_ready() = 0;
77   virtual void read_key(UINT8 key[]) = 0;
78
79   UINT8           m_gnetreadlock;
80
81   UINT8           m_features[IDE_DISK_SECTOR_SIZE];
82   UINT16          m_num_cylinders;
83   UINT8           m_num_sectors;
84   UINT8           m_num_heads;
85
8886private:
8987   UINT32 lba_address();
90   void set_geometry(UINT8 sectors, UINT8 heads) { m_num_sectors= sectors; m_num_heads=heads; }
88   void set_geometry(UINT8 sectors, UINT8 heads) { m_num_sectors = sectors; m_num_heads = heads; }
9189   void read_sector_done();
9290   void write_sector_done();
9391   void read_next_sector();
r23686r23687
141139
142140   virtual int  read_sector(UINT32 lba, void *buffer) { return hard_disk_read(m_disk, lba, buffer); }
143141   virtual int  write_sector(UINT32 lba, const void *buffer) { return hard_disk_write(m_disk, lba, buffer); }
144   virtual void read_key(UINT8 key[]);
142
145143protected:
146144   // device-level overrides
147145   virtual void device_reset();
r23686r23687
149147   // optional information overrides
150148   virtual machine_config_constructor device_mconfig_additions() const;
151149
150   virtual bool is_ready() { return (m_disk != NULL); }
151   virtual void read_key(UINT8 key[]);
152
152153   void ide_build_features();
153   virtual bool is_ready() { return (m_disk != NULL); }
154protected:
154
155155   chd_file       *m_handle;
156156   hard_disk_file *m_disk;
157157};

Previous 199869 Revisions Next


© 1997-2024 The MAME Team