Beispiel #1
0
inline void base_c2040_device::initialize(int drives)
{
	// find GCR ROM
	m_gcr = memregion("gcr")->base();

	// install image callbacks
	m_unit[0].m_image = m_image0;

	floppy_install_unload_proc(m_image0, base_c2040_device::on_disk0_change);
	floppy_install_load_proc(m_image0, base_c2040_device::on_disk0_change);

	if (drives == 2)
	{
		m_unit[1].m_image = m_image1;

		floppy_install_unload_proc(m_image1, base_c2040_device::on_disk1_change);
		floppy_install_load_proc(m_image1, base_c2040_device::on_disk1_change);
	}

	// register for state saving
	save_item(NAME(m_drive));
	save_item(NAME(m_side));
	save_item(NAME(m_rfdo));
	save_item(NAME(m_daco));
	save_item(NAME(m_atna));
	save_item(NAME(m_ds));
	save_item(NAME(m_bit_count));
	save_item(NAME(m_sr));
	save_item(NAME(m_pi));
	save_item(NAME(m_i));
	save_item(NAME(m_e));
	save_item(NAME(m_ready));
	save_item(NAME(m_mode));
	save_item(NAME(m_rw));
	save_item(NAME(m_miot_irq));
	save_item(NAME(m_unit[0].m_stp));
	save_item(NAME(m_unit[0].m_mtr));
	save_item(NAME(m_unit[0].m_track_len));
	save_item(NAME(m_unit[0].m_buffer_pos));
	save_item(NAME(m_unit[0].m_bit_pos));

	if (drives == 2)
	{
		save_item(NAME(m_unit[1].m_stp));
		save_item(NAME(m_unit[1].m_mtr));
		save_item(NAME(m_unit[1].m_track_len));
		save_item(NAME(m_unit[1].m_buffer_pos));
		save_item(NAME(m_unit[1].m_bit_pos));
	}
}
Beispiel #2
0
void c1541_device::device_start()
{
	// install image callbacks
	floppy_install_unload_proc(m_image, c1541_device::on_disk_change);
	floppy_install_load_proc(m_image, c1541_device::on_disk_change);

	// register for state saving
	save_item(NAME(m_data_out));
	save_item(NAME(m_via0_irq));
	save_item(NAME(m_via1_irq));
}
Beispiel #3
0
ROM_END

/*-------------------------------------------------
    DEVICE_START( c1551 )
-------------------------------------------------*/

static DEVICE_START( c1551 )
{
	c1551_t *c1551 = get_safe_token(device);
	const c1551_config *config = get_safe_config(device);

	/* set address */
	assert((config->address > 7) && (config->address < 10));
	c1551->address = config->address - 8;

	/* find our CPU */
	c1551->cpu = device->subdevice(M6510T_TAG);

	/* find devices */
	c1551->tpi0 = device->subdevice(M6523_0_TAG);
	c1551->tpi1 = device->subdevice(M6523_1_TAG);
	c1551->image = device->subdevice(FLOPPY_0);

	/* install image callbacks */
	floppy_install_unload_proc(c1551->image, on_disk_change);
	floppy_install_load_proc(c1551->image, on_disk_change);

	/* allocate data timer */
	c1551->bit_timer = device->machine().scheduler().timer_alloc(FUNC(bit_tick), (void *)device);

	/* map TPI1 to host CPU memory space */
	address_space *program = device->machine().device(config->cpu_tag)->memory().space(AS_PROGRAM);
	UINT32 start_address = c1551->address ? 0xfec0 : 0xfef0;

	program->install_legacy_readwrite_handler(*c1551->tpi1, start_address, start_address + 7, FUNC(tpi6525_r), FUNC(tpi6525_w));

	/* register for state saving */
	device->save_item(NAME(c1551->tcbm_data));
	device->save_item(NAME(c1551->status));
	device->save_item(NAME(c1551->dav));
	device->save_item(NAME(c1551->ack));
	device->save_item(NAME(c1551->stp));
	device->save_item(NAME(c1551->mtr));
	device->save_item(NAME(c1551->track_len));
	device->save_item(NAME(c1551->buffer_pos));
	device->save_item(NAME(c1551->bit_pos));
	device->save_item(NAME(c1551->bit_count));
	device->save_item(NAME(c1551->data));
	device->save_item(NAME(c1551->yb));
	device->save_item(NAME(c1551->ds));
	device->save_item(NAME(c1551->soe));
	device->save_item(NAME(c1551->byte));
	device->save_item(NAME(c1551->mode));
}
Beispiel #4
0
void base_c1571_device::device_start()
{
	// install image callbacks
	floppy_install_unload_proc(m_image, base_c1571_device::on_disk_change);
	floppy_install_load_proc(m_image, base_c1571_device::on_disk_change);

	// register for state saving
	save_item(NAME(m_1_2mhz));
	save_item(NAME(m_data_out));
	save_item(NAME(m_ser_dir));
	save_item(NAME(m_sp_out));
	save_item(NAME(m_cnt_out));
	save_item(NAME(m_via0_irq));
	save_item(NAME(m_via1_irq));
	save_item(NAME(m_cia_irq));
}
Beispiel #5
0
void fd800_machine_init(running_machine &machine, void (*interrupt_callback)(running_machine &machine, int state))
{
	int i;

	fd800.machine = &machine;
	fd800.interrupt_callback = interrupt_callback;

	fd800.stat_reg = 0;
	fd800.interrupt_f_f = 1;

	fd800.buf_pos = 0;
	fd800.buf_mode = bm_off;

	for (i=0; i<MAX_FLOPPIES; i++)
	{
		fd800.drv[i].img = dynamic_cast<device_image_interface *>(floppy_get_device(machine, i));
		fd800.drv[i].phys_cylinder = -1;
		fd800.drv[i].log_cylinder[0] = fd800.drv[i].log_cylinder[1] = -1;
		fd800.drv[i].seclen = 64;
		floppy_install_unload_proc(&fd800.drv[i].img->device(), fd800_unload_proc);
	}

	fd800_field_interrupt();
}