mirror of
https://github.com/holub/mame
synced 2025-06-07 21:33:45 +03:00
Moved identify buffer manipulation and master/user password setting from ata interface to the ata mass storage device. These should be stored in the chd (nw)
This commit is contained in:
parent
c630976e21
commit
0fbcc9a1a9
@ -11,8 +11,6 @@
|
|||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
ata_device_interface::ata_device_interface(const machine_config &mconfig, device_t &device) :
|
ata_device_interface::ata_device_interface(const machine_config &mconfig, device_t &device) :
|
||||||
m_master_password(NULL),
|
|
||||||
m_user_password(NULL),
|
|
||||||
m_irq_handler(device),
|
m_irq_handler(device),
|
||||||
m_dmarq_handler(device)
|
m_dmarq_handler(device)
|
||||||
{
|
{
|
||||||
|
@ -35,13 +35,6 @@ public:
|
|||||||
virtual DECLARE_WRITE_LINE_MEMBER(write_csel) = 0;
|
virtual DECLARE_WRITE_LINE_MEMBER(write_csel) = 0;
|
||||||
virtual DECLARE_WRITE_LINE_MEMBER(write_dasp) = 0;
|
virtual DECLARE_WRITE_LINE_MEMBER(write_dasp) = 0;
|
||||||
|
|
||||||
virtual UINT8 *identify_device_buffer() = 0;
|
|
||||||
|
|
||||||
UINT8 m_master_password_enable;
|
|
||||||
UINT8 m_user_password_enable;
|
|
||||||
const UINT8 * m_master_password;
|
|
||||||
const UINT8 * m_user_password;
|
|
||||||
|
|
||||||
devcb2_write_line m_irq_handler;
|
devcb2_write_line m_irq_handler;
|
||||||
devcb2_write_line m_dmarq_handler;
|
devcb2_write_line m_dmarq_handler;
|
||||||
};
|
};
|
||||||
|
@ -67,28 +67,6 @@ WRITE_LINE_MEMBER( ata_interface_device::dmarq1_write_line )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
INITIALIZATION AND RESET
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
UINT8 *ata_interface_device::identify_device_buffer(int _drive)
|
|
||||||
{
|
|
||||||
return m_slot[_drive]->dev()->identify_device_buffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ata_interface_device::set_master_password(int _drive, const UINT8 *password)
|
|
||||||
{
|
|
||||||
m_slot[_drive]->dev()->m_master_password = password;
|
|
||||||
m_slot[_drive]->dev()->m_master_password_enable = (password != NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void ata_interface_device::set_user_password(int _drive, const UINT8 *password)
|
|
||||||
{
|
|
||||||
m_slot[_drive]->dev()->m_user_password = password;
|
|
||||||
m_slot[_drive]->dev()->m_user_password_enable = (password != NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* ATA interface read
|
* ATA interface read
|
||||||
|
@ -83,10 +83,6 @@ public:
|
|||||||
template<class _Object> static devcb2_base &set_irq_handler(device_t &device, _Object object) { return downcast<ata_interface_device &>(device).m_irq_handler.set_callback(object); }
|
template<class _Object> static devcb2_base &set_irq_handler(device_t &device, _Object object) { return downcast<ata_interface_device &>(device).m_irq_handler.set_callback(object); }
|
||||||
template<class _Object> static devcb2_base &set_dmarq_handler(device_t &device, _Object object) { return downcast<ata_interface_device &>(device).m_dmarq_handler.set_callback(object); }
|
template<class _Object> static devcb2_base &set_dmarq_handler(device_t &device, _Object object) { return downcast<ata_interface_device &>(device).m_dmarq_handler.set_callback(object); }
|
||||||
|
|
||||||
UINT8 *identify_device_buffer(int drive);
|
|
||||||
void set_master_password(int drive, const UINT8 *password);
|
|
||||||
void set_user_password(int drive, const UINT8 *password);
|
|
||||||
|
|
||||||
UINT16 read_dma();
|
UINT16 read_dma();
|
||||||
virtual DECLARE_READ16_MEMBER(read_cs0);
|
virtual DECLARE_READ16_MEMBER(read_cs0);
|
||||||
virtual DECLARE_READ16_MEMBER(read_cs1);
|
virtual DECLARE_READ16_MEMBER(read_cs1);
|
||||||
|
@ -78,7 +78,9 @@ ata_mass_storage_device::ata_mass_storage_device(const machine_config &mconfig,
|
|||||||
m_dasp(0),
|
m_dasp(0),
|
||||||
m_dmack(0),
|
m_dmack(0),
|
||||||
m_dmarq(0),
|
m_dmarq(0),
|
||||||
m_irq(0)
|
m_irq(0),
|
||||||
|
m_master_password(NULL),
|
||||||
|
m_user_password(NULL)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,8 +62,21 @@ public:
|
|||||||
virtual DECLARE_WRITE_LINE_MEMBER(write_dasp);
|
virtual DECLARE_WRITE_LINE_MEMBER(write_dasp);
|
||||||
virtual DECLARE_WRITE_LINE_MEMBER(write_dmack);
|
virtual DECLARE_WRITE_LINE_MEMBER(write_dmack);
|
||||||
|
|
||||||
virtual UINT8 *identify_device_buffer() { return m_identify_device; }
|
UINT8 *identify_device_buffer() { return m_identify_device; }
|
||||||
|
|
||||||
|
void set_master_password(const UINT8 *password)
|
||||||
|
{
|
||||||
|
m_master_password = password;
|
||||||
|
m_master_password_enable = (password != NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void set_user_password(const UINT8 *password)
|
||||||
|
{
|
||||||
|
m_user_password = password;
|
||||||
|
m_user_password_enable = (password != NULL);
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
virtual void device_reset();
|
virtual void device_reset();
|
||||||
@ -129,6 +142,11 @@ private:
|
|||||||
UINT16 m_block_count;
|
UINT16 m_block_count;
|
||||||
UINT16 m_sectors_until_int;
|
UINT16 m_sectors_until_int;
|
||||||
|
|
||||||
|
UINT8 m_master_password_enable;
|
||||||
|
UINT8 m_user_password_enable;
|
||||||
|
const UINT8 * m_master_password;
|
||||||
|
const UINT8 * m_user_password;
|
||||||
|
|
||||||
emu_timer * m_last_status_timer;
|
emu_timer * m_last_status_timer;
|
||||||
emu_timer * m_reset_timer;
|
emu_timer * m_reset_timer;
|
||||||
};
|
};
|
||||||
|
@ -315,9 +315,10 @@
|
|||||||
#include "cpu/powerpc/ppc.h"
|
#include "cpu/powerpc/ppc.h"
|
||||||
#include "machine/pci.h"
|
#include "machine/pci.h"
|
||||||
#include "machine/ataintf.h"
|
#include "machine/ataintf.h"
|
||||||
#include "machine/timekpr.h"
|
#include "machine/idehd.h"
|
||||||
#include "machine/jvshost.h"
|
#include "machine/jvshost.h"
|
||||||
#include "machine/jvsdev.h"
|
#include "machine/jvsdev.h"
|
||||||
|
#include "machine/timekpr.h"
|
||||||
#include "video/konicdev.h"
|
#include "video/konicdev.h"
|
||||||
#include "video/polynew.h"
|
#include "video/polynew.h"
|
||||||
#include "video/rgbgen.h"
|
#include "video/rgbgen.h"
|
||||||
@ -3163,7 +3164,8 @@ void cobra_state::machine_reset()
|
|||||||
{
|
{
|
||||||
m_sub_interrupt = 0xff;
|
m_sub_interrupt = 0xff;
|
||||||
|
|
||||||
UINT8 *identify_device = m_ata->identify_device_buffer(0);
|
ide_hdd_device *hdd = m_ata->subdevice<ata_slot_device>("0")->subdevice<ide_hdd_device>("hdd");
|
||||||
|
UINT8 *identify_device = hdd->identify_device_buffer();
|
||||||
|
|
||||||
// Cobra expects these settings or the BIOS fails
|
// Cobra expects these settings or the BIOS fails
|
||||||
identify_device[51*2+0] = 0; /* 51: PIO data transfer cycle timing mode */
|
identify_device[51*2+0] = 0; /* 51: PIO data transfer cycle timing mode */
|
||||||
|
@ -69,6 +69,7 @@ hard drive 3.5 adapter long 3.5 IDE cable 3.5 adapter PCB
|
|||||||
#include "sound/k054539.h"
|
#include "sound/k054539.h"
|
||||||
#include "video/konicdev.h"
|
#include "video/konicdev.h"
|
||||||
#include "includes/djmain.h"
|
#include "includes/djmain.h"
|
||||||
|
#include "machine/idehd.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1354,10 +1355,12 @@ static const k054539_interface k054539_config =
|
|||||||
|
|
||||||
void djmain_state::machine_start()
|
void djmain_state::machine_start()
|
||||||
{
|
{
|
||||||
|
ide_hdd_device *hdd = m_ata->subdevice<ata_slot_device>("0")->subdevice<ide_hdd_device>("hdd");
|
||||||
if (m_ata_master_password != NULL)
|
if (m_ata_master_password != NULL)
|
||||||
m_ata->set_master_password(0, m_ata_master_password);
|
hdd->set_master_password(m_ata_master_password);
|
||||||
|
|
||||||
if (m_ata_user_password != NULL)
|
if (m_ata_user_password != NULL)
|
||||||
m_ata->set_user_password(0, m_ata_user_password);
|
hdd->set_user_password(m_ata_user_password);
|
||||||
|
|
||||||
save_item(NAME(m_sndram_bank));
|
save_item(NAME(m_sndram_bank));
|
||||||
save_item(NAME(m_pending_vb_int));
|
save_item(NAME(m_pending_vb_int));
|
||||||
|
@ -132,6 +132,7 @@ Notes:
|
|||||||
#include "cpu/mips/mips3.h"
|
#include "cpu/mips/mips3.h"
|
||||||
#include "cpu/adsp2100/adsp2100.h"
|
#include "cpu/adsp2100/adsp2100.h"
|
||||||
#include "machine/ataintf.h"
|
#include "machine/ataintf.h"
|
||||||
|
#include "machine/idehd.h"
|
||||||
#include "machine/midwayic.h"
|
#include "machine/midwayic.h"
|
||||||
#include "audio/dcs.h"
|
#include "audio/dcs.h"
|
||||||
|
|
||||||
@ -215,7 +216,8 @@ void kinst_state::machine_start()
|
|||||||
|
|
||||||
void kinst_state::machine_reset()
|
void kinst_state::machine_reset()
|
||||||
{
|
{
|
||||||
UINT8 *identify_device = m_ata->identify_device_buffer(0);
|
ide_hdd_device *hdd = m_ata->subdevice<ata_slot_device>("0")->subdevice<ide_hdd_device>("hdd");
|
||||||
|
UINT8 *identify_device = hdd->identify_device_buffer();
|
||||||
|
|
||||||
if (strncmp(machine().system().name, "kinst2", 6) != 0)
|
if (strncmp(machine().system().name, "kinst2", 6) != 0)
|
||||||
{
|
{
|
||||||
|
@ -175,6 +175,7 @@ Notes:
|
|||||||
#include "cpu/powerpc/ppc.h"
|
#include "cpu/powerpc/ppc.h"
|
||||||
#include "cpu/tlcs900/tlcs900.h"
|
#include "cpu/tlcs900/tlcs900.h"
|
||||||
#include "machine/ataintf.h"
|
#include "machine/ataintf.h"
|
||||||
|
#include "machine/idehd.h"
|
||||||
#include "machine/nvram.h"
|
#include "machine/nvram.h"
|
||||||
#include "video/polynew.h"
|
#include "video/polynew.h"
|
||||||
|
|
||||||
@ -2530,7 +2531,8 @@ void taitotz_state::machine_reset()
|
|||||||
{
|
{
|
||||||
if (m_hdd_serial_number != NULL)
|
if (m_hdd_serial_number != NULL)
|
||||||
{
|
{
|
||||||
UINT8 *identify_device = m_ata->identify_device_buffer(0);
|
ide_hdd_device *hdd = m_ata->subdevice<ata_slot_device>("0")->subdevice<ide_hdd_device>("hdd");
|
||||||
|
UINT8 *identify_device = hdd->identify_device_buffer();
|
||||||
|
|
||||||
for (int i=0; i < 20; i++)
|
for (int i=0; i < 20; i++)
|
||||||
{
|
{
|
||||||
|
@ -285,6 +285,7 @@ An additional control PCB is used for Mocap Golf for the golf club sensor. It co
|
|||||||
#include "cpu/powerpc/ppc.h"
|
#include "cpu/powerpc/ppc.h"
|
||||||
#include "machine/pci.h"
|
#include "machine/pci.h"
|
||||||
#include "machine/ataintf.h"
|
#include "machine/ataintf.h"
|
||||||
|
#include "machine/idehd.h"
|
||||||
#include "machine/timekpr.h"
|
#include "machine/timekpr.h"
|
||||||
#include "video/voodoo.h"
|
#include "video/voodoo.h"
|
||||||
|
|
||||||
@ -2023,7 +2024,8 @@ void viper_state::machine_reset()
|
|||||||
{
|
{
|
||||||
mpc8240_epic_reset();
|
mpc8240_epic_reset();
|
||||||
|
|
||||||
UINT8 *identify_device = m_ata->identify_device_buffer(0);
|
ide_hdd_device *hdd = m_ata->subdevice<ata_slot_device>("0")->subdevice<ide_hdd_device>("hdd");
|
||||||
|
UINT8 *identify_device = hdd->identify_device_buffer();
|
||||||
|
|
||||||
// Viper expects these settings or the BIOS fails
|
// Viper expects these settings or the BIOS fails
|
||||||
identify_device[51*2+0] = 0; /* 51: PIO data transfer cycle timing mode */
|
identify_device[51*2+0] = 0; /* 51: PIO data transfer cycle timing mode */
|
||||||
|
Loading…
Reference in New Issue
Block a user