bool DISK::get_track(int trk, int side)
{
if(media_type == MEDIA_TYPE_2D && drive_type == DRIVE_TYPE_2DD) {
- if(trk >= 0) trk >>= 1;
+ if(trk >= 0) {
+ if(trk & 1) {
+ return false; // unformat
+ }
+ trk >>= 1;
+ }
} else if(media_type == MEDIA_TYPE_2DD && drive_type == DRIVE_TYPE_2D) {
if(trk >= 0) trk <<= 1;
}
bool DISK::make_track(int trk, int side)
{
if(media_type == MEDIA_TYPE_2D && drive_type == DRIVE_TYPE_2DD) {
- if(trk >= 0) trk >>= 1;
+ if(trk >= 0) {
+ if(trk & 1) {
+ return false; // unformat
+ }
+ trk >>= 1;
+ }
} else if(media_type == MEDIA_TYPE_2DD && drive_type == DRIVE_TYPE_2D) {
if(trk >= 0) trk <<= 1;
}
bool DISK::get_sector(int trk, int side, int index)
{
if(media_type == MEDIA_TYPE_2D && drive_type == DRIVE_TYPE_2DD) {
- if(trk >= 0) trk >>= 1;
+ if(trk >= 0) {
+ if(trk & 1) {
+ return false; // unformat
+ }
+ trk >>= 1;
+ }
} else if(media_type == MEDIA_TYPE_2DD && drive_type == DRIVE_TYPE_2D) {
if(trk >= 0) trk <<= 1;
}
bool DISK::format_track(int trk, int side)
{
if(media_type == MEDIA_TYPE_2D && drive_type == DRIVE_TYPE_2DD) {
- if(trk >= 0) trk >>= 1;
+ if(trk >= 0) {
+ if(trk & 1) {
+ return false; // unformat
+ }
+ trk >>= 1;
+ }
} else if(media_type == MEDIA_TYPE_2DD && drive_type == DRIVE_TYPE_2D) {
if(trk >= 0) trk <<= 1;
}
file_size.write_4bytes_le_to(tmp_buffer + 0x1c);
memset(buffer, 0, sizeof(buffer));
- memcpy(buffer, tmp_buffer, min(sizeof(buffer), file_size.d));
+ memcpy(buffer, tmp_buffer, min((unsigned int)sizeof(buffer), file_size.d));
}
int DISK::get_max_tracks()
#define STATE_VERSION 14
#include "../../statesub.h"
+#include "../../qt/gui/csp_logger.h"
-void DISK::decl_state()
+void DISK::decl_state(void *p)
{
- state_entry = new csp_state_utils(STATE_VERSION, drive_num, _T("FLOPPY_DISK"));
+ CSP_Logger *p_logger = (CSP_Logger *)p;
+ state_entry = new csp_state_utils(STATE_VERSION, drive_num, _T("FLOPPY_DISK"), p_logger);
DECL_STATE_ENTRY_1D_ARRAY(buffer, sizeof(buffer));
DECL_STATE_ENTRY_STRING(orig_path, sizeof(orig_path) / sizeof(_TCHAR));