static void apple525_disk_set_lines(mess_image *image, UINT8 new_state) { struct apple525_disk *cur_disk; UINT8 old_state; unsigned int phase; cur_disk = (struct apple525_disk *) image_lookuptag(image, APPLE525TAG); old_state = cur_disk->state; cur_disk->state = new_state; if ((new_state & 0x0F) > (old_state & 0x0F)) { phase = 0; switch((old_state ^ new_state) & 0x0F) { case 1: phase = 0; break; case 2: phase = 1; break; case 4: phase = 2; break; case 8: phase = 3; break; } phase -= floppy_drive_get_current_track(image) * 2; if (cur_disk->tween_tracks) phase--; phase %= 4; switch(phase) { case 1: apple525_seek_disk(image, cur_disk, +1); break; case 3: apple525_seek_disk(image, cur_disk, -1); break; } } }
static void apple525_disk_set_lines(device_t *device,device_t *image, UINT8 new_state) { apple525_floppy_image_device *cur_disk; UINT8 old_state; unsigned int phase; cur_disk = get_device(image); old_state = cur_disk->state; cur_disk->state = new_state; if ((new_state & 0x0F) > (old_state & 0x0F)) { phase = 0; switch((old_state ^ new_state) & 0x0F) { case 1: phase = 0; break; case 2: phase = 1; break; case 4: phase = 2; break; case 8: phase = 3; break; } phase -= floppy_drive_get_current_track(image) * 2; if (cur_disk->tween_tracks) phase--; phase %= 4; switch(phase) { case 1: apple525_seek_disk(image, +1); break; case 3: apple525_seek_disk(image, -1); break; } } }