mirror of
https://github.com/holub/mame
synced 2025-10-08 09:30:17 +03:00
converted i8271 to use inline configs and reduced tagmap lookups
while at it. nw.
This commit is contained in:
parent
452df5037b
commit
b9374917e7
@ -99,6 +99,8 @@ i8271_device::i8271_device(const machine_config &mconfig, const char *tag, devic
|
|||||||
: device_t(mconfig, I8271, "Intel 8271", tag, owner, clock, "i8271", __FILE__),
|
: device_t(mconfig, I8271, "Intel 8271", tag, owner, clock, "i8271", __FILE__),
|
||||||
m_write_irq(*this),
|
m_write_irq(*this),
|
||||||
m_write_drq(*this),
|
m_write_drq(*this),
|
||||||
|
m_floppy_tag1(NULL),
|
||||||
|
m_floppy_tag2(NULL),
|
||||||
m_flags(0),
|
m_flags(0),
|
||||||
m_state(0),
|
m_state(0),
|
||||||
m_Command(0),
|
m_Command(0),
|
||||||
@ -145,27 +147,6 @@ i8271_device::i8271_device(const machine_config &mconfig, const char *tag, devic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
|
||||||
// device_config_complete - perform any
|
|
||||||
// operations now that the configuration is
|
|
||||||
// complete
|
|
||||||
//-------------------------------------------------
|
|
||||||
|
|
||||||
void i8271_device::device_config_complete()
|
|
||||||
{
|
|
||||||
// inherit a copy of the static data
|
|
||||||
const i8271_interface *intf = reinterpret_cast<const i8271_interface *>(static_config());
|
|
||||||
if (intf != NULL)
|
|
||||||
*static_cast<i8271_interface *>(this) = *intf;
|
|
||||||
|
|
||||||
// or initialize to defaults if none provided
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_floppy_drive_tags[0] = "";
|
|
||||||
m_floppy_drive_tags[1] = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// device_start - device-specific startup
|
// device_start - device-specific startup
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -180,6 +161,9 @@ void i8271_device::device_start()
|
|||||||
m_drive = 0;
|
m_drive = 0;
|
||||||
m_pExecutionPhaseData = auto_alloc_array(machine(), char, 0x4000);
|
m_pExecutionPhaseData = auto_alloc_array(machine(), char, 0x4000);
|
||||||
|
|
||||||
|
m_floppy[0] = machine().device<legacy_floppy_image_device>(m_floppy_tag1);
|
||||||
|
m_floppy[1] = machine().device<legacy_floppy_image_device>(m_floppy_tag2);
|
||||||
|
|
||||||
// register for state saving
|
// register for state saving
|
||||||
/*save_item(NAME(m_flags));
|
/*save_item(NAME(m_flags));
|
||||||
save_item(NAME(m_state));
|
save_item(NAME(m_state));
|
||||||
@ -237,19 +221,8 @@ void i8271_device::device_reset()
|
|||||||
set_dma_drq();
|
set_dma_drq();
|
||||||
}
|
}
|
||||||
|
|
||||||
legacy_floppy_image_device *i8271_device::current_image()
|
|
||||||
{
|
|
||||||
if (m_floppy_drive_tags[m_drive]!=NULL) {
|
|
||||||
return machine().device<legacy_floppy_image_device>(m_floppy_drive_tags[m_drive]);
|
|
||||||
} else {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void i8271_device::seek_to_track(int track)
|
void i8271_device::seek_to_track(int track)
|
||||||
{
|
{
|
||||||
legacy_floppy_image_device *img = current_image();
|
|
||||||
if (track==0)
|
if (track==0)
|
||||||
{
|
{
|
||||||
/* seek to track 0 */
|
/* seek to track 0 */
|
||||||
@ -258,11 +231,11 @@ void i8271_device::seek_to_track(int track)
|
|||||||
/*logerror("step\n"); */
|
/*logerror("step\n"); */
|
||||||
|
|
||||||
/* track 0 not set, not seeked more than 255 tracks */
|
/* track 0 not set, not seeked more than 255 tracks */
|
||||||
while (img->floppy_tk00_r() && (StepCount != 0))
|
while (m_floppy[m_drive]->floppy_tk00_r() && (StepCount != 0))
|
||||||
{
|
{
|
||||||
/* logerror("step\n"); */
|
/* logerror("step\n"); */
|
||||||
StepCount--;
|
StepCount--;
|
||||||
img->floppy_drive_seek(-1);
|
m_floppy[m_drive]->floppy_drive_seek(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_CurrentTrack[m_drive] = 0;
|
m_CurrentTrack[m_drive] = 0;
|
||||||
@ -296,7 +269,7 @@ void i8271_device::seek_to_track(int track)
|
|||||||
|
|
||||||
|
|
||||||
/* seek to track 0 */
|
/* seek to track 0 */
|
||||||
img->floppy_drive_seek(SignedTracks);
|
m_floppy[m_drive]->floppy_drive_seek(SignedTracks);
|
||||||
|
|
||||||
m_CurrentTrack[m_drive] = track;
|
m_CurrentTrack[m_drive] = track;
|
||||||
}
|
}
|
||||||
@ -609,7 +582,7 @@ void i8271_device::command_continue()
|
|||||||
case I8271_COMMAND_WRITE_DATA_SINGLE_RECORD:
|
case I8271_COMMAND_WRITE_DATA_SINGLE_RECORD:
|
||||||
{
|
{
|
||||||
/* put the buffer to the sector */
|
/* put the buffer to the sector */
|
||||||
current_image()->floppy_drive_write_sector_data(m_side, m_data_id, m_pExecutionPhaseData, 1<<(m_ID_N+7),0);
|
m_floppy[m_drive]->floppy_drive_write_sector_data(m_side, m_data_id, m_pExecutionPhaseData, 1<<(m_ID_N+7),0);
|
||||||
|
|
||||||
/* completed all sectors? */
|
/* completed all sectors? */
|
||||||
m_Counter--;
|
m_Counter--;
|
||||||
@ -652,7 +625,7 @@ void i8271_device::do_read()
|
|||||||
if (find_sector())
|
if (find_sector())
|
||||||
{
|
{
|
||||||
/* get the sector into the buffer */
|
/* get the sector into the buffer */
|
||||||
current_image()->floppy_drive_read_sector_data(m_side, m_data_id, m_pExecutionPhaseData, 1<<(m_ID_N+7));
|
m_floppy[m_drive]->floppy_drive_read_sector_data(m_side, m_data_id, m_pExecutionPhaseData, 1<<(m_ID_N+7));
|
||||||
|
|
||||||
/* initialise for reading */
|
/* initialise for reading */
|
||||||
initialise_execution_phase_read(1<<(m_ID_N+7));
|
initialise_execution_phase_read(1<<(m_ID_N+7));
|
||||||
@ -671,7 +644,7 @@ void i8271_device::do_read_id()
|
|||||||
chrn_id id;
|
chrn_id id;
|
||||||
|
|
||||||
/* get next id from disc */
|
/* get next id from disc */
|
||||||
current_image()->floppy_drive_get_next_id(m_side,&id);
|
m_floppy[m_drive]->floppy_drive_get_next_id(m_side,&id);
|
||||||
|
|
||||||
m_pExecutionPhaseData[0] = id.C;
|
m_pExecutionPhaseData[0] = id.C;
|
||||||
m_pExecutionPhaseData[1] = id.H;
|
m_pExecutionPhaseData[1] = id.H;
|
||||||
@ -703,7 +676,6 @@ void i8271_device::do_write()
|
|||||||
|
|
||||||
int i8271_device::find_sector()
|
int i8271_device::find_sector()
|
||||||
{
|
{
|
||||||
legacy_floppy_image_device *img = current_image();
|
|
||||||
// int track_count_attempt;
|
// int track_count_attempt;
|
||||||
|
|
||||||
// track_count_attempt
|
// track_count_attempt
|
||||||
@ -718,7 +690,7 @@ int i8271_device::find_sector()
|
|||||||
chrn_id id;
|
chrn_id id;
|
||||||
|
|
||||||
/* get next id from disc */
|
/* get next id from disc */
|
||||||
if (img->floppy_drive_get_next_id(m_side,&id))
|
if (m_floppy[m_drive]->floppy_drive_get_next_id(m_side,&id))
|
||||||
{
|
{
|
||||||
/* tested on Amstrad CPC - All bytes must match, otherwise
|
/* tested on Amstrad CPC - All bytes must match, otherwise
|
||||||
a NO DATA error is reported */
|
a NO DATA error is reported */
|
||||||
@ -741,7 +713,7 @@ int i8271_device::find_sector()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* index set? */
|
/* index set? */
|
||||||
if (img->floppy_drive_get_flag_state(FLOPPY_DRIVE_INDEX))
|
if (m_floppy[m_drive]->floppy_drive_get_flag_state(FLOPPY_DRIVE_INDEX))
|
||||||
{
|
{
|
||||||
index_count++;
|
index_count++;
|
||||||
}
|
}
|
||||||
@ -758,8 +730,6 @@ int i8271_device::find_sector()
|
|||||||
|
|
||||||
void i8271_device::command_execute()
|
void i8271_device::command_execute()
|
||||||
{
|
{
|
||||||
legacy_floppy_image_device *img = current_image();
|
|
||||||
|
|
||||||
/* clear it = good completion status */
|
/* clear it = good completion status */
|
||||||
/* this will be changed if anything bad happens! */
|
/* this will be changed if anything bad happens! */
|
||||||
m_ResultRegister = 0;
|
m_ResultRegister = 0;
|
||||||
@ -860,10 +830,7 @@ void i8271_device::command_execute()
|
|||||||
|
|
||||||
/* assumption: select bits reflect the select bits from the previous
|
/* assumption: select bits reflect the select bits from the previous
|
||||||
command. i.e. read drive status */
|
command. i.e. read drive status */
|
||||||
data = (m_drive_control_output & ~0x0c0)
|
data = (m_drive_control_output & ~0x0c0) | (m_CommandRegister & 0x0c0);
|
||||||
| (m_CommandRegister & 0x0c0);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -884,10 +851,10 @@ void i8271_device::command_execute()
|
|||||||
m_drive_control_input = (1<<6) | (1<<2);
|
m_drive_control_input = (1<<6) | (1<<2);
|
||||||
|
|
||||||
/* bit 3 = 0 if write protected */
|
/* bit 3 = 0 if write protected */
|
||||||
m_drive_control_input |= img->floppy_wpt_r() << 3;
|
m_drive_control_input |= m_floppy[m_drive]->floppy_wpt_r() << 3;
|
||||||
|
|
||||||
/* bit 1 = 0 if head at track 0 */
|
/* bit 1 = 0 if head at track 0 */
|
||||||
m_drive_control_input |= img->floppy_tk00_r() << 1;
|
m_drive_control_input |= m_floppy[m_drive]->floppy_tk00_r() << 1;
|
||||||
|
|
||||||
/* need to setup this register based on drive selected */
|
/* need to setup this register based on drive selected */
|
||||||
data = m_drive_control_input;
|
data = m_drive_control_input;
|
||||||
@ -1020,19 +987,19 @@ void i8271_device::command_execute()
|
|||||||
|
|
||||||
/* load head - on mini-sized drives this turns on the disc motor,
|
/* load head - on mini-sized drives this turns on the disc motor,
|
||||||
on standard-sized drives this loads the head and turns the motor on */
|
on standard-sized drives this loads the head and turns the motor on */
|
||||||
img->floppy_mon_w(!BIT(m_CommandParameters[1], 3));
|
m_floppy[m_drive]->floppy_mon_w(!BIT(m_CommandParameters[1], 3));
|
||||||
img->floppy_drive_set_ready_state(1, 1);
|
m_floppy[m_drive]->floppy_drive_set_ready_state(1, 1);
|
||||||
|
|
||||||
/* step pin changed? if so perform a step in the direction indicated */
|
/* step pin changed? if so perform a step in the direction indicated */
|
||||||
if (((m_drive_control_output^m_CommandParameters[1]) & (1<<1))!=0)
|
if (((m_drive_control_output^m_CommandParameters[1]) & (1<<1))!=0)
|
||||||
{
|
{
|
||||||
/* step pin changed state? */
|
/* step pin changed state? */
|
||||||
|
|
||||||
if ((m_CommandParameters[1] & (1<<1))!=0)
|
if (BIT(m_CommandParameters[1], 1))
|
||||||
{
|
{
|
||||||
signed int signed_tracks;
|
signed int signed_tracks;
|
||||||
|
|
||||||
if ((m_CommandParameters[1] & (1<<2))!=0)
|
if (BIT(m_CommandParameters[1], 2))
|
||||||
{
|
{
|
||||||
signed_tracks = 1;
|
signed_tracks = 1;
|
||||||
}
|
}
|
||||||
@ -1041,7 +1008,7 @@ void i8271_device::command_execute()
|
|||||||
signed_tracks = -1;
|
signed_tracks = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
img->floppy_drive_seek(signed_tracks);
|
m_floppy[m_drive]->floppy_drive_seek(signed_tracks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1079,25 +1046,27 @@ void i8271_device::command_execute()
|
|||||||
|
|
||||||
/* these two do not appear to be set at all! ?? */
|
/* these two do not appear to be set at all! ?? */
|
||||||
|
|
||||||
if (m_floppy_drive_tags[0]!=NULL) {
|
if (m_floppy[0])
|
||||||
if (machine().device<legacy_floppy_image_device>(m_floppy_drive_tags[0])->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
|
{
|
||||||
|
if (m_floppy[0]->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
|
||||||
{
|
{
|
||||||
status |= (1<<2);
|
status |= (1 << 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_floppy_drive_tags[1]!=NULL) {
|
if (m_floppy[1])
|
||||||
if (machine().device<legacy_floppy_image_device>(m_floppy_drive_tags[1])->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
|
{
|
||||||
|
if (m_floppy[1]->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
|
||||||
{
|
{
|
||||||
status |= (1<<6);
|
status |= (1 << 6);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* bit 3 = 1 if write protected */
|
/* bit 3 = 1 if write protected */
|
||||||
status |= !img->floppy_wpt_r() << 3;
|
status |= !m_floppy[m_drive]->floppy_wpt_r() << 3;
|
||||||
|
|
||||||
/* bit 1 = 1 if head at track 0 */
|
/* bit 1 = 1 if head at track 0 */
|
||||||
status |= !img->floppy_tk00_r() << 1;
|
status |= !m_floppy[m_drive]->floppy_tk00_r() << 1;
|
||||||
|
|
||||||
m_ResultRegister = status;
|
m_ResultRegister = status;
|
||||||
command_complete(1,0);
|
command_complete(1,0);
|
||||||
@ -1109,7 +1078,6 @@ void i8271_device::command_execute()
|
|||||||
{
|
{
|
||||||
get_drive();
|
get_drive();
|
||||||
|
|
||||||
|
|
||||||
seek_to_track(m_CommandParameters[0]);
|
seek_to_track(m_CommandParameters[0]);
|
||||||
|
|
||||||
/* check for bad seek */
|
/* check for bad seek */
|
||||||
@ -1139,7 +1107,7 @@ void i8271_device::command_execute()
|
|||||||
|
|
||||||
get_drive();
|
get_drive();
|
||||||
|
|
||||||
if (!img->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
|
if (!m_floppy[m_drive]->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
|
||||||
{
|
{
|
||||||
/* Completion type: operation intervention probably required for recovery */
|
/* Completion type: operation intervention probably required for recovery */
|
||||||
/* Completion code: Drive not ready */
|
/* Completion code: Drive not ready */
|
||||||
@ -1172,7 +1140,7 @@ void i8271_device::command_execute()
|
|||||||
|
|
||||||
get_drive();
|
get_drive();
|
||||||
|
|
||||||
if (!img->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
|
if (!m_floppy[m_drive]->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
|
||||||
{
|
{
|
||||||
/* Completion type: operation intervention probably required for recovery */
|
/* Completion type: operation intervention probably required for recovery */
|
||||||
/* Completion code: Drive not ready */
|
/* Completion code: Drive not ready */
|
||||||
@ -1211,7 +1179,7 @@ void i8271_device::command_execute()
|
|||||||
|
|
||||||
m_drive_control_output &=~1;
|
m_drive_control_output &=~1;
|
||||||
|
|
||||||
if (!img->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
|
if (!m_floppy[m_drive]->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
|
||||||
{
|
{
|
||||||
/* Completion type: operation intervention probably required for recovery */
|
/* Completion type: operation intervention probably required for recovery */
|
||||||
/* Completion code: Drive not ready */
|
/* Completion code: Drive not ready */
|
||||||
@ -1220,7 +1188,7 @@ void i8271_device::command_execute()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (img->floppy_wpt_r() == CLEAR_LINE)
|
if (m_floppy[m_drive]->floppy_wpt_r() == CLEAR_LINE)
|
||||||
{
|
{
|
||||||
/* Completion type: operation intervention probably required for recovery */
|
/* Completion type: operation intervention probably required for recovery */
|
||||||
/* Completion code: Drive write protected */
|
/* Completion code: Drive write protected */
|
||||||
@ -1256,7 +1224,7 @@ void i8271_device::command_execute()
|
|||||||
|
|
||||||
m_drive_control_output &=~1;
|
m_drive_control_output &=~1;
|
||||||
|
|
||||||
if (!img->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
|
if (!m_floppy[m_drive]->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
|
||||||
{
|
{
|
||||||
/* Completion type: operation intervention probably required for recovery */
|
/* Completion type: operation intervention probably required for recovery */
|
||||||
/* Completion code: Drive not ready */
|
/* Completion code: Drive not ready */
|
||||||
@ -1265,7 +1233,7 @@ void i8271_device::command_execute()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (img->floppy_wpt_r() == CLEAR_LINE)
|
if (m_floppy[m_drive]->floppy_wpt_r() == CLEAR_LINE)
|
||||||
{
|
{
|
||||||
/* Completion type: operation intervention probably required for recovery */
|
/* Completion type: operation intervention probably required for recovery */
|
||||||
/* Completion code: Drive write protected */
|
/* Completion code: Drive write protected */
|
||||||
@ -1295,7 +1263,7 @@ void i8271_device::command_execute()
|
|||||||
|
|
||||||
get_drive();
|
get_drive();
|
||||||
|
|
||||||
if (!img->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
|
if (!m_floppy[m_drive]->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
|
||||||
{
|
{
|
||||||
/* Completion type: operation intervention probably required for recovery */
|
/* Completion type: operation intervention probably required for recovery */
|
||||||
/* Completion code: Drive not ready */
|
/* Completion code: Drive not ready */
|
||||||
|
@ -15,21 +15,14 @@
|
|||||||
#define MCFG_I8271_DRQ_CALLBACK(_write) \
|
#define MCFG_I8271_DRQ_CALLBACK(_write) \
|
||||||
devcb = &i8271_device::set_drq_wr_callback(*device, DEVCB2_##_write);
|
devcb = &i8271_device::set_drq_wr_callback(*device, DEVCB2_##_write);
|
||||||
|
|
||||||
/***************************************************************************
|
#define MCFG_I8271_FLOPPIES(_tag1, _tag2) \
|
||||||
TYPE DEFINITIONS
|
i8271_device::set_floppy_tags(*device, _tag1, _tag2);
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
struct i8271_interface
|
|
||||||
{
|
|
||||||
const char *m_floppy_drive_tags[2];
|
|
||||||
};
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
MACROS
|
MACROS
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
class i8271_device : public device_t,
|
class i8271_device : public device_t
|
||||||
public i8271_interface
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
i8271_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
i8271_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
@ -38,6 +31,13 @@ public:
|
|||||||
template<class _Object> static devcb2_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<i8271_device &>(device).m_write_irq.set_callback(object); }
|
template<class _Object> static devcb2_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<i8271_device &>(device).m_write_irq.set_callback(object); }
|
||||||
template<class _Object> static devcb2_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast<i8271_device &>(device).m_write_drq.set_callback(object); }
|
template<class _Object> static devcb2_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast<i8271_device &>(device).m_write_drq.set_callback(object); }
|
||||||
|
|
||||||
|
static void set_floppy_tags(device_t &device, const char *tag1, const char *tag2)
|
||||||
|
{
|
||||||
|
i8271_device &dev = downcast<i8271_device &>(device);
|
||||||
|
dev.m_floppy_tag1 = tag1;
|
||||||
|
dev.m_floppy_tag2 = tag2;
|
||||||
|
}
|
||||||
|
|
||||||
DECLARE_READ8_MEMBER(read);
|
DECLARE_READ8_MEMBER(read);
|
||||||
DECLARE_WRITE8_MEMBER(write);
|
DECLARE_WRITE8_MEMBER(write);
|
||||||
|
|
||||||
@ -49,7 +49,6 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_config_complete();
|
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
virtual void device_reset();
|
virtual void device_reset();
|
||||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||||
@ -65,6 +64,9 @@ private:
|
|||||||
devcb2_write_line m_write_irq;
|
devcb2_write_line m_write_irq;
|
||||||
devcb2_write_line m_write_drq;
|
devcb2_write_line m_write_drq;
|
||||||
|
|
||||||
|
const char *m_floppy_tag1, *m_floppy_tag2;
|
||||||
|
legacy_floppy_image_device *m_floppy[2];
|
||||||
|
|
||||||
int m_flags;
|
int m_flags;
|
||||||
int m_state;
|
int m_state;
|
||||||
unsigned char m_Command;
|
unsigned char m_Command;
|
||||||
@ -128,7 +130,6 @@ private:
|
|||||||
emu_timer *m_data_timer;
|
emu_timer *m_data_timer;
|
||||||
emu_timer *m_command_complete_timer;
|
emu_timer *m_command_complete_timer;
|
||||||
|
|
||||||
legacy_floppy_image_device *current_image();
|
|
||||||
void seek_to_track(int track);
|
void seek_to_track(int track);
|
||||||
void load_bad_tracks(int surface);
|
void load_bad_tracks(int surface);
|
||||||
void write_bad_track(int surface, int track, int data);
|
void write_bad_track(int surface, int track, int data);
|
||||||
@ -159,13 +160,4 @@ private:
|
|||||||
|
|
||||||
extern const device_type I8271;
|
extern const device_type I8271;
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
DEVICE CONFIGURATION MACROS
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#define MCFG_I8271_ADD(_tag, _intrf) \
|
|
||||||
MCFG_DEVICE_ADD(_tag, I8271, 0) \
|
|
||||||
MCFG_DEVICE_CONFIG(_intrf)
|
|
||||||
|
|
||||||
#endif /* I8271_H_ */
|
#endif /* I8271_H_ */
|
||||||
|
@ -554,7 +554,7 @@ WRITE8_MEMBER( atom_state::ppi_pc_w )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
i8271_interface fdc_intf
|
i8271 interface
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
WRITE_LINE_MEMBER( atom_state::atom_8271_interrupt_callback )
|
WRITE_LINE_MEMBER( atom_state::atom_8271_interrupt_callback )
|
||||||
@ -578,11 +578,6 @@ WRITE_LINE_MEMBER( atom_state::atom_8271_interrupt_callback )
|
|||||||
m_previous_i8271_int_state = state;
|
m_previous_i8271_int_state = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const i8271_interface fdc_intf =
|
|
||||||
{
|
|
||||||
{ FLOPPY_0, FLOPPY_1 }
|
|
||||||
};
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
LEGACY_FLOPPY_OPTIONS( atom )
|
LEGACY_FLOPPY_OPTIONS( atom )
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
@ -824,8 +819,9 @@ static MACHINE_CONFIG_START( atom, atom_state )
|
|||||||
MCFG_I8255_IN_PORTC_CB(READ8(atom_state, ppi_pc_r))
|
MCFG_I8255_IN_PORTC_CB(READ8(atom_state, ppi_pc_r))
|
||||||
MCFG_I8255_OUT_PORTC_CB(WRITE8(atom_state, ppi_pc_w))
|
MCFG_I8255_OUT_PORTC_CB(WRITE8(atom_state, ppi_pc_w))
|
||||||
|
|
||||||
MCFG_I8271_ADD(I8271_TAG, fdc_intf)
|
MCFG_DEVICE_ADD(I8271_TAG, I8271, 0)
|
||||||
MCFG_I8271_IRQ_CALLBACK(WRITELINE(atom_state, atom_8271_interrupt_callback))
|
MCFG_I8271_IRQ_CALLBACK(WRITELINE(atom_state, atom_8271_interrupt_callback))
|
||||||
|
MCFG_I8271_FLOPPIES(FLOPPY_0, FLOPPY_1)
|
||||||
MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(atom_floppy_interface)
|
MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(atom_floppy_interface)
|
||||||
|
|
||||||
MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
|
MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
|
||||||
|
@ -775,8 +775,9 @@ static MACHINE_CONFIG_DERIVED( bbcb, bbca )
|
|||||||
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
|
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
|
||||||
|
|
||||||
/* fdc */
|
/* fdc */
|
||||||
MCFG_I8271_ADD("i8271", bbc_i8271_interface)
|
MCFG_DEVICE_ADD("i8271", I8271, 0)
|
||||||
MCFG_I8271_IRQ_CALLBACK(WRITELINE(bbc_state, bbc_i8271_interrupt))
|
MCFG_I8271_IRQ_CALLBACK(WRITELINE(bbc_state, bbc_i8271_interrupt))
|
||||||
|
MCFG_I8271_FLOPPIES(FLOPPY_0, FLOPPY_1)
|
||||||
MCFG_WD1770_ADD("wd177x", bbc_wd17xx_interface )
|
MCFG_WD1770_ADD("wd177x", bbc_wd17xx_interface )
|
||||||
MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface)
|
MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface)
|
||||||
|
|
||||||
@ -834,8 +835,9 @@ static MACHINE_CONFIG_DERIVED( bbcb_us, bbca )
|
|||||||
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
|
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
|
||||||
|
|
||||||
/* fdc */
|
/* fdc */
|
||||||
MCFG_I8271_ADD("i8271", bbc_i8271_interface)
|
MCFG_DEVICE_ADD("i8271", I8271, 0)
|
||||||
MCFG_I8271_IRQ_CALLBACK(WRITELINE(bbc_state, bbc_i8271_interrupt))
|
MCFG_I8271_IRQ_CALLBACK(WRITELINE(bbc_state, bbc_i8271_interrupt))
|
||||||
|
MCFG_I8271_FLOPPIES(FLOPPY_0, FLOPPY_1)
|
||||||
MCFG_WD1770_ADD("wd177x", bbc_wd17xx_interface )
|
MCFG_WD1770_ADD("wd177x", bbc_wd17xx_interface )
|
||||||
MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface)
|
MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface)
|
||||||
|
|
||||||
|
@ -420,8 +420,6 @@ public: // HACK FOR MC6845
|
|||||||
/*----------- defined in machine/bbc.c -----------*/
|
/*----------- defined in machine/bbc.c -----------*/
|
||||||
|
|
||||||
extern const mc6845_interface bbc_mc6845_intf;
|
extern const mc6845_interface bbc_mc6845_intf;
|
||||||
|
|
||||||
extern const i8271_interface bbc_i8271_interface;
|
|
||||||
extern const wd17xx_interface bbc_wd17xx_interface;
|
extern const wd17xx_interface bbc_wd17xx_interface;
|
||||||
|
|
||||||
#endif /* BBC_H_ */
|
#endif /* BBC_H_ */
|
||||||
|
@ -1469,12 +1469,6 @@ WRITE_LINE_MEMBER(bbc_state::bbc_i8271_interrupt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const i8271_interface bbc_i8271_interface=
|
|
||||||
{
|
|
||||||
{FLOPPY_0, FLOPPY_1}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
READ8_MEMBER(bbc_state::bbc_i8271_read)
|
READ8_MEMBER(bbc_state::bbc_i8271_read)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user