Previous 199869 Revisions Next

r23653 Wednesday 12th June, 2013 at 17:47:10 UTC by smf
moved password fields off the ide controller (nw)
[src/emu/machine]ataflash.c idectrl.c idectrl.h idehd.c idehd.h
[src/mame/drivers]djmain.c

trunk/src/mame/drivers/djmain.c
r23652r23653
13551355void djmain_state::machine_start()
13561356{
13571357   if (m_ide_master_password != NULL)
1358      m_ide->ide_set_master_password(m_ide_master_password);
1358      m_ide->ide_set_master_password(0, m_ide_master_password);
13591359   if (m_ide_user_password != NULL)
1360      m_ide->ide_set_user_password(m_ide_user_password);
1360      m_ide->ide_set_user_password(0, m_ide_user_password);
13611361
13621362   save_item(NAME(m_sndram_bank));
13631363   save_item(NAME(m_pending_vb_int));
trunk/src/emu/machine/idehd.c
r23652r23653
1111//-------------------------------------------------
1212
1313ide_device_interface::ide_device_interface(const machine_config &mconfig, device_t &device)
14   : device_slot_card_interface(mconfig, device)
14   : device_slot_card_interface(mconfig, device),
15   master_password(NULL),
16   user_password(NULL)
1517{
1618}
1719
r23652r23653
255257   save_item(NAME(precomp_offset));
256258
257259   save_item(NAME(sector_count));
260
261   save_item(NAME(master_password_enable));
262   save_item(NAME(user_password_enable));
263
264   save_item(NAME(gnetreadlock));
258265}
259266
260267//-------------------------------------------------
trunk/src/emu/machine/idehd.h
r23652r23653
3535   UINT8           precomp_offset;
3636   UINT16          sector_count;
3737
38   UINT8           master_password_enable;
39   UINT8           user_password_enable;
40   const UINT8 *   master_password;
41   const UINT8 *   user_password;
42
43   UINT8           gnetreadlock;
44
3845protected:
3946   UINT8           m_features[IDE_DISK_SECTOR_SIZE];
4047   UINT16          m_num_cylinders;
trunk/src/emu/machine/idectrl.c
r23652r23653
178178   return slot[_drive]->dev()->get_features();
179179}
180180
181void ide_controller_device::ide_set_gnet_readlock(const UINT8 onoff)
181void ide_controller_device::ide_set_gnet_readlock(int _drive, const UINT8 onoff)
182182{
183   gnetreadlock = onoff;
183   slot[_drive]->dev()->gnetreadlock = onoff;
184184}
185185
186void ide_controller_device::ide_set_master_password(const UINT8 *password)
186void ide_controller_device::ide_set_master_password(int _drive, const UINT8 *password)
187187{
188   master_password = password;
189   master_password_enable = (master_password != NULL);
188   slot[_drive]->dev()->master_password = password;
189   slot[_drive]->dev()->master_password_enable = (password != NULL);
190190}
191191
192192
193void ide_controller_device::ide_set_user_password(const UINT8 *password)
193void ide_controller_device::ide_set_user_password(int _drive, const UINT8 *password)
194194{
195   user_password = password;
196   user_password_enable = (user_password != NULL);
195   slot[_drive]->dev()->user_password = password;
196   slot[_drive]->dev()->user_password_enable = (password != NULL);
197197}
198198
199199
r23652r23653
279279   error = IDE_ERROR_DEFAULT;
280280   set_dmarq(0);
281281
282   if (master_password_enable || user_password_enable)
282   if (dev->master_password_enable || dev->user_password_enable)
283283   {
284284      security_error();
285285
r23652r23653
302302   int lba = dev->lba_address(), count = 0;
303303
304304   /* GNET readlock check */
305   if (gnetreadlock) {
305   if (dev->gnetreadlock) {
306306      status &= ~IDE_STATUS_ERROR;
307307      status &= ~IDE_STATUS_BUSY;
308308      return;
r23652r23653
453453   set_dmarq(0);
454454   if (command == IDE_COMMAND_SECURITY_UNLOCK)
455455   {
456      if (user_password_enable && memcmp(dev->buffer, user_password, 2 + 32) == 0)
456      if (dev->user_password_enable && memcmp(dev->buffer, dev->user_password, 2 + 32) == 0)
457457      {
458458         LOGPRINT(("IDE Unlocked user password\n"));
459         user_password_enable = 0;
459         dev->user_password_enable = 0;
460460      }
461      if (master_password_enable && memcmp(dev->buffer, master_password, 2 + 32) == 0)
461      if (dev->master_password_enable && memcmp(dev->buffer, dev->master_password, 2 + 32) == 0)
462462      {
463463         LOGPRINT(("IDE Unlocked master password\n"));
464         master_password_enable = 0;
464         dev->master_password_enable = 0;
465465      }
466466      if (PRINTF_IDE_PASSWORD)
467467      {
r23652r23653
483483      status &= ~IDE_STATUS_BUSY;
484484      status &= ~IDE_STATUS_BUFFER_READY;
485485
486      if (master_password_enable || user_password_enable)
486      if (dev->master_password_enable || dev->user_password_enable)
487487         security_error();
488488      else
489489         status |= IDE_STATUS_DRIVE_READY;
r23652r23653
503503         status |= IDE_STATUS_ERROR;
504504      else {
505505         status &= ~IDE_STATUS_ERROR;
506         gnetreadlock= 0;
506         dev->gnetreadlock= 0;
507507      }
508508   }
509509   else
r23652r23653
817817         dev->read_key(key);
818818         if ((dev->precomp_offset == key[0]) && (dev->sector_count == key[1]) && (dev->cur_sector == key[2]) && (dev->cur_cylinder == (((UINT16)key[4]<<8)|key[3])))
819819         {
820            gnetreadlock= 0;
820            dev->gnetreadlock= 0;
821821         }
822822
823823         /* update flags */
r23652r23653
12791279   verify_only(0),
12801280   config_unknown(0),
12811281   config_register_num(0),
1282   master_password_enable(0),
1283   user_password_enable(0),
1284   master_password(NULL),
1285   user_password(NULL),
1286   gnetreadlock(0),
12871282   cur_drive(0),
12881283   m_irq_handler(*this)
12891284{
r23652r23653
13021297   verify_only(0),
13031298   config_unknown(0),
13041299   config_register_num(0),
1305   master_password_enable(0),
1306   user_password_enable(0),
1307   master_password(NULL),
1308   user_password(NULL),
1309   gnetreadlock(0),
13101300   cur_drive(0),
13111301   m_irq_handler(*this)
13121302{
r23652r23653
13421332   save_item(NAME(config_unknown));
13431333   save_item(NAME(config_register));
13441334   save_item(NAME(config_register_num));
1345
1346   save_item(NAME(master_password_enable));
1347   save_item(NAME(user_password_enable));
1348
1349   save_item(NAME(gnetreadlock));
13501335}
13511336
13521337//-------------------------------------------------
r23652r23653
13631348   status = IDE_STATUS_DRIVE_READY | IDE_STATUS_SEEK_COMPLETE;
13641349   error = IDE_ERROR_DEFAULT;
13651350   dev->buffer_offset = 0;
1366   gnetreadlock = 0;
1367   master_password_enable = (master_password != NULL);
1368   user_password_enable = (user_password != NULL);
1351   dev->gnetreadlock = 0;
1352   dev->master_password_enable = (dev->master_password != NULL);
1353   dev->user_password_enable = (dev->user_password != NULL);
13691354   set_irq(CLEAR_LINE);
13701355   set_dmarq(0);
13711356}
trunk/src/emu/machine/idectrl.h
r23652r23653
8383   template<class _Object> static devcb2_base &set_irq_handler(device_t &device, _Object object) { return downcast<ide_controller_device &>(device).m_irq_handler.set_callback(object); }
8484
8585   UINT8 *ide_get_features(int drive);
86   void ide_set_gnet_readlock(const UINT8 onoff);
87   void ide_set_master_password(const UINT8 *password);
88   void ide_set_user_password(const UINT8 *password);
86   void ide_set_gnet_readlock(int drive, const UINT8 onoff);
87   void ide_set_master_password(int drive, const UINT8 *password);
88   void ide_set_user_password(int drive, const UINT8 *password);
8989
9090   DECLARE_READ8_MEMBER(read_via_config);
9191   DECLARE_WRITE8_MEMBER(write_via_config);
r23652r23653
143143   emu_timer *     last_status_timer;
144144   emu_timer *     reset_timer;
145145
146   UINT8           master_password_enable;
147   UINT8           user_password_enable;
148   const UINT8 *   master_password;
149   const UINT8 *   user_password;
150
151   UINT8           gnetreadlock;
152
153146   UINT8           cur_drive;
154147   ide_slot_device *slot[2];
155148
trunk/src/emu/machine/ataflash.c
r23652r23653
3636void ata_flash_pccard_device::device_reset_after_children()
3737{
3838   m_locked = 0x1ff;
39   m_card->ide_set_gnet_readlock(1);
39   m_card->ide_set_gnet_readlock(0, 1);
4040}
4141
4242READ16_MEMBER( ata_flash_pccard_device::read_memory )
r23652r23653
113113
114114      if (!m_locked)
115115      {
116         m_card->ide_set_gnet_readlock(0);
116         m_card->ide_set_gnet_readlock(0, 0);
117117      }
118118   }
119119}

Previous 199869 Revisions Next


© 1997-2024 The MAME Team