/* this is not accurate. But it will do for now */ int floppy_drive_get_next_id(device_t *img, int side, chrn_id *id) { floppy_drive *pDrive; int spt; pDrive = get_safe_token( img ); /* get sectors per track */ spt = flopimg_get_sectors_per_track(img, side); /* set index */ if ((pDrive->id_index==(spt-1)) || (spt==0)) { floppy_drive_set_flag_state(img, FLOPPY_DRIVE_INDEX, 1); } else { floppy_drive_set_flag_state(img, FLOPPY_DRIVE_INDEX, 0); } /* get id */ if (spt!=0) { flopimg_get_id_callback(img, id, pDrive->id_index, side); } pDrive->id_index++; if (spt!=0) pDrive->id_index %= spt; else pDrive->id_index = 0; return (spt == 0) ? 0 : 1; }
/* this is not accurate. But it will do for now */ int legacy_floppy_image_device::floppy_drive_get_next_id(int side, chrn_id *id) { int spt; /* get sectors per track */ spt = flopimg_get_sectors_per_track(side); /* set index */ if ((m_id_index==(spt-1)) || (spt==0)) { floppy_drive_set_flag_state(FLOPPY_DRIVE_INDEX, 1); } else { floppy_drive_set_flag_state(FLOPPY_DRIVE_INDEX, 0); } /* get id */ if (spt!=0) { flopimg_get_id_callback(id, m_id_index, side); } m_id_index++; if (spt!=0) m_id_index %= spt; else m_id_index = 0; return (spt == 0) ? 0 : 1; }
/* use this to set ready state of drive */ void floppy_drive_set_ready_state(device_t *img, int state, int flag) { floppy_drive *drive = get_safe_token(img); device_image_interface *image = dynamic_cast<device_image_interface *>(img); if (flag) { /* set ready only if drive is present, disk is in the drive, and disk motor is on - for Amstrad, Spectrum and PCW*/ /* drive present? */ /* disk inserted? */ if (image->exists()) { if (drive->mon == CLEAR_LINE) { /* set state */ floppy_drive_set_flag_state(img, FLOPPY_DRIVE_READY, state); return; } } floppy_drive_set_flag_state(img, FLOPPY_DRIVE_READY, 0); } else { /* force ready state - for PC driver */ floppy_drive_set_flag_state(img, FLOPPY_DRIVE_READY, state); } }
/* use this to set ready state of drive */ void legacy_floppy_image_device::floppy_drive_set_ready_state(int state, int flag) { if (flag) { /* set ready only if drive is present, disk is in the drive, and disk motor is on - for Amstrad, Spectrum and PCW*/ /* drive present? */ /* disk inserted? */ if (exists()) { if (m_mon == CLEAR_LINE) { /* set state */ floppy_drive_set_flag_state(FLOPPY_DRIVE_READY, state); return; } } floppy_drive_set_flag_state(FLOPPY_DRIVE_READY, 0); } else { /* force ready state - for PC driver */ floppy_drive_set_flag_state(FLOPPY_DRIVE_READY, state); } }