/* Resets the drive geometry. This is required because the heuristic of the default implementation sets the drive geometry to the geometry of the medium. */ static void set_geometry(device_t *drive, floppy_type_t type) { if (drive!=NULL) floppy_drive_set_geometry(drive, type); else logerror("ti99/FDC: Drive not found\n"); }
/* this is called on device init */ static void floppy_drive_init(device_t *img) { floppy_drive *pDrive = get_safe_token( img ); /* initialise flags */ pDrive->flags = 0; pDrive->index_pulse_callback = NULL; pDrive->ready_state_change_callback = NULL; pDrive->index_timer = img->machine().scheduler().timer_alloc(FUNC(floppy_drive_index_callback), (void *) img); pDrive->idx = 0; floppy_drive_set_geometry(img, ((floppy_interface*)img->static_config())->floppy_type); /* initialise id index - not so important */ pDrive->id_index = 0; /* initialise track */ pDrive->current_track = 0; /* default RPM */ pDrive->rpm = 300; pDrive->controller = NULL; pDrive->floppy_drive_type = FLOPPY_TYPE_REGULAR; }
static MACHINE_INIT( exidy ) { hd6402_init(); hd6402_set_callback(exidy_hd6402_callback); hd6402_reset(); centronics_config(0, exidy_cent_config); /* assumption: select is tied low */ centronics_write_handshake(0, CENTRONICS_SELECT | CENTRONICS_NO_RESET, CENTRONICS_SELECT| CENTRONICS_NO_RESET); serial_timer = timer_alloc(exidy_serial_timer_callback); cassette_timer = timer_alloc(exidy_cassette_timer_callback); serial_connection_init(&cassette_serial_connection); serial_connection_set_in_callback(&cassette_serial_connection, cassette_serial_in); exidy_fe_port_w(0,0); timer_set(TIME_NOW, 0, exidy_reset_timer_callback); wd179x_init(WD_TYPE_179X,NULL); floppy_drive_set_geometry(image_from_devtype_and_index(IO_FLOPPY, 0), FLOPPY_DRIVE_DS_80); /* this is temporary. Normally when a Z80 is reset, it will execute address 0. The exidy starts executing from 0x0e000 */ /* memory_set_opbase_handler(0, exidy_opbaseoverride); */ /* cpunum_write_byte(0,0,0x0c3); */ /* cpunum_write_byte(0,1,0x000); */ /* cpunum_write_byte(0,2,0x0e0); */ }
/* this is called on device init */ void legacy_floppy_image_device::floppy_drive_init() { /* initialise flags */ m_flags = 0; m_index_pulse_callback = nullptr; m_index_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(legacy_floppy_image_device::floppy_drive_index_callback),this)); m_idx = 0; floppy_drive_set_geometry(m_config->floppy_type); /* initialise id index - not so important */ m_id_index = 0; /* initialise track */ m_current_track = 0; /* default RPM */ m_rpm = 300; m_controller = nullptr; m_floppy_drive_type = FLOPPY_TYPE_REGULAR; }