#define DDHDMULT 1
#endif
-#define DISK_DEBUG
-#define DISK_DEBUG2
-#undef DISK_DEBUG
-#undef DISK_DEBUG2
#undef DEBUG_DRIVE_ID
/* UAE-1ADF (ADF_EXT2)
#endif
} drive;
+int disk_debug_logging;
int disk_debug_mode;
int disk_debug_track = -1;
}
#endif
if (drv->steplimit && get_cycles() - drv->steplimitcycle < MIN_STEPLIMIT_CYCLE) {
-#ifdef DISK_DEBUG2
- write_dlog (" step ignored %d", (get_cycles() - drv->steplimitcycle) / CYCLE_UNIT);
-#endif
+ if (disk_debug_logging > 1)
+ write_log (" step ignored %d", (get_cycles() - drv->steplimitcycle) / CYCLE_UNIT);
return;
}
/* A1200's floppy drive needs at least 30 raster lines between steps
#endif
}
if (drv->cyl >= maxtrack)
- write_dlog ("program tried to step over track %d\n", maxtrack);
+ write_log ("program tried to step over track %d\n", maxtrack);
#ifdef DRIVESOUND
driveclick_click (drv - floppy, drv->cyl);
#endif
}
rand_shifter (drv);
-#ifdef DISK_DEBUG2
- write_dlog (" ->step %d", drv->cyl);
-#endif
+ if (disk_debug_logging > 1)
+ write_log (" ->step %d", drv->cyl);
}
static int drive_track0 (drive * drv)
#ifdef DRIVESOUND
driveclick_motor (drv - floppy, drv->dskready_down_time == 0 ? 2 : 1);
#endif
-#ifdef DISK_DEBUG2
- write_dlog (" ->motor on");
+ if (disk_debug_logging > 1)
+ write_log (" ->motor on");
if (drv->indexhackmode > 0)
drv->indexhack = 1;
-#endif
}
if (!drv->motoroff && off) {
drv->drive_id_scnt = 0; /* Reset id shift reg counter */
driveclick_motor (drv - floppy, 0);
#endif
#ifdef DEBUG_DRIVE_ID
- write_dlog("drive_motor: Selected DF%d: reset id shift reg.\n",drv-floppy);
-#endif
-#ifdef DISK_DEBUG2
- write_dlog (" ->motor off");
+ write_log("drive_motor: Selected DF%d: reset id shift reg.\n",drv-floppy);
#endif
+ if (disk_debug_logging > 1)
+ write_log (" ->motor off");
}
drv->motoroff = off;
if (drv->motoroff) {
uae_u8 *data = (uae_u8 *) mfm;
*mfm = 256 * *data + *(data + 1);
}
-#ifdef DISK_DEBUG
- write_log ("track %d, length %d read from \"saveimage\"\n", tr, drv->tracklen);
-#endif
+ if (disk_debug_logging > 0)
+ write_log ("track %d, length %d read from \"saveimage\"\n", tr, drv->tracklen);
} else if (drv->filetype == ADF_CATWEASEL) {
#ifdef CATWEASEL
drv->tracklen = 0;
}
-#ifdef DISK_DEBUG
- write_log ("amigados read track %d\n", tr);
-#endif
+ if (disk_debug_logging > 0)
+ write_log ("amigados read track %d\n", tr);
} else {
int i;
int base_offset = ti->type == TRACK_RAW ? 0 : 1;
uae_u8 *data = (uae_u8 *) mfm;
*mfm = 256 * *data + *(data + 1);
}
-#if 0 && defined DISK_DEBUG
- write_log ("rawtrack %d image offset=%x\n", tr, ti->offs);
-#endif
+ if (disk_debug_logging > 1)
+ write_log ("rawtrack %d image offset=%x\n", tr, ti->offs);
}
drv->buffered_side = side;
drv->buffered_cyl = drv->cyl;
zfile_fwrite (zerobuf, 1, ti->len, diskfile);
free (zerobuf);
}
-#ifdef DISK_DEBUG
- write_log ("track %d, raw track length %d written (total size %d)\n", ti->track, (ti->bitlen + 7) / 8, ti->len);
-#endif
+ if (disk_debug_logging > 0)
+ write_log ("track %d, raw track length %d written (total size %d)\n", ti->track, (ti->bitlen + 7) / 8, ti->len);
}
#define MFMMASK 0x55555555
drv->dskready_down_time = 0;
drv->crc32 = 0;
drive_settype_id(drv); /* Back to 35 DD */
-#ifdef DISK_DEBUG
- write_dlog ("eject drive %d\n", drv - &floppy[0]);
-#endif
+ if (disk_debug_logging > 0)
+ write_log ("eject drive %d\n", drv - &floppy[0]);
}
/* We use this function if we have no Kickstart ROM.
}
}
drv->dskchange_time = dsktime;
-#ifdef DISK_DEBUG
- write_dlog("delayed insert enable %d\n", dsktime);
-#endif
+ if (disk_debug_logging > 0)
+ write_log("delayed insert enable %d\n", dsktime);
}
void DISK_reinsert (int num)
drv->dskchange_time--;
if (drv->dskchange_time == 0) {
drive_insert (drv, &currprefs, i, drv->newname);
-#ifdef DISK_DEBUG
- write_dlog ("delayed insert, drive %d, image '%s'\n", i, drv->newname);
-#endif
+ if (disk_debug_logging > 0)
+ write_log ("delayed insert, drive %d, image '%s'\n", i, drv->newname);
update_drive_gui (i);
}
return drive_empty (floppy + num);
}
-#ifdef DISK_DEBUG2
static char *tobin(uae_u8 v)
{
int i;
buf[i] = 0;
return buf;
}
-#endif
void DISK_select (uae_u8 data)
{
static uae_u8 prevdata;
static int step;
-#ifdef DISK_DEBUG2
- write_dlog ("%08.8X %02.2X %s", m68k_getpc(), data, tobin(data));
-#endif
+ if (disk_debug_logging > 1)
+ write_log ("%08.8X %02.2X %s", m68k_getpc(), data, tobin(data));
+
lastselected = selected;
selected = (data >> 3) & 15;
side = 1 - ((data >> 2) & 1);
for (dr = 0; dr < 4; dr++) {
if (floppy[dr].indexhackmode > 1 && !(selected & (1 << dr))) {
floppy[dr].indexhack = 1;
-#ifdef DISK_DEBUG2
- write_dlog (" indexhack!");
-#endif
+ if (disk_debug_logging > 1)
+ write_log (" indexhack!");
}
}
}
-#ifdef DISK_DEBUG2
- write_dlog (" %d%d%d%d% ", (selected & 1) ? 0 : 1, (selected & 2) ? 0 : 1, (selected & 4) ? 0 : 1, (selected & 8) ? 0 : 1);
- if ((prevdata & 0x80) != (data & 0x80))
- write_dlog (" dskmotor %d ", (data & 0x80) ? 1 : 0);
- if ((prevdata & 0x02) != (data & 0x02))
- write_dlog (" direct %d ", (data & 0x02) ? 1 : 0);
- if ((prevdata & 0x04) != (data & 0x04))
- write_dlog (" side %d ", (data & 0x04) ? 1 : 0);
-#endif
+ if (disk_debug_logging > 1) {
+ write_log (" %d%d%d%d% ", (selected & 1) ? 0 : 1, (selected & 2) ? 0 : 1, (selected & 4) ? 0 : 1, (selected & 8) ? 0 : 1);
+ if ((prevdata & 0x80) != (data & 0x80))
+ write_log (" dskmotor %d ", (data & 0x80) ? 1 : 0);
+ if ((prevdata & 0x02) != (data & 0x02))
+ write_log (" direct %d ", (data & 0x02) ? 1 : 0);
+ if ((prevdata & 0x04) != (data & 0x04))
+ write_log (" side %d ", (data & 0x04) ? 1 : 0);
+ }
selected |= disabled;
if (step != step_pulse) {
-#ifdef DISK_DEBUG2
- write_dlog (" dskstep %d ", step_pulse);
-#endif
+ if (disk_debug_logging > 1)
+ write_log (" dskstep %d ", step_pulse);
step = step_pulse;
if (step && !savestate_state) {
for (dr = 0; dr < MAX_FLOPPY_DRIVES; dr++) {
drv->idbit = 1;
}
#ifdef DEBUG_DRIVE_ID
- write_dlog("DISK_status: sel %d id %s (%08.8X) [0x%08lx, bit #%02d: %d]\n",
+ write_log("DISK_status: sel %d id %s (%08.8X) [0x%08lx, bit #%02d: %d]\n",
dr, drive_id_name(drv), drv->drive_id, drv->drive_id << drv->drive_id_scnt, 31 - drv->drive_id_scnt, drv->idbit);
#endif
}
update_drive_gui (dr);
}
prevdata = data;
-#ifdef DISK_DEBUG2
- write_log ("\n");
-#endif
+ if (disk_debug_logging > 1)
+ write_log ("\n");
}
uae_u8 DISK_status (void)
{
INTREQ (0x8002);
dskdmaen = 0;
-#ifdef DISK_DEBUG
- {
+ if (disk_debug_logging > 0) {
int dr, mfmpos = -1;
- write_dlog("disk dma finished %08.8X MFMpos=", dskpt);
+ write_log("disk dma finished %08.8X MFMpos=", dskpt);
for (dr = 0; dr < MAX_FLOPPY_DRIVES; dr++)
write_log ("%d%s", floppy[dr].mfmpos, dr < MAX_FLOPPY_DRIVES - 1 ? "," : "");
write_log ("\n");
}
-#endif
}
static void fetchnextrevolution (drive *drv)
drv->dskready_time--;
if (drv->dskready_time == 0) {
drv->dskready = 1;
-#ifdef DISK_DEBUG
- write_log ("%d: %d\n", i, drv->mfmpos);
-#endif
+ if (disk_debug_logging > 0)
+ write_log ("%d: %d\n", i, drv->mfmpos);
}
}
}
//write_log ("%08.8X bo=%d so=%d mfmpos=%d dma=%d\n", (word & 0xffffff), bitoffset, syncoffset, drv->mfmpos,dma_enable);
drv->mfmpos++;
drv->mfmpos %= drv->tracklen;
- if (drv->mfmpos == drv->skipoffset) {
- drv->mfmpos += disk_jitter;
- drv->mfmpos %= drv->tracklen;
- }
if (drv->mfmpos == drv->indexoffset) {
-#ifdef DISK_DEBUG2
- if (drv->indexhack)
+ if (disk_debug_logging > 1 && drv->indexhack)
write_log ("indexhack cleared\n");
-#endif
drv->indexhack = 0;
}
+ if (drv->mfmpos == drv->skipoffset) {
+ drv->mfmpos += disk_jitter;
+ drv->mfmpos %= drv->tracklen;
+ }
if (bitoffset == 15 && dma_enable && dskdmaen == 2 && dsklength >= 0) {
if (dsklength > 0) {
put_word (dskpt, word);
if (adkcon & 0x400)
bitoffset = 15;
if (dskdmaen) {
-#ifdef DISK_DEBUG
- if (dma_enable == 0)
- write_dlog ("Sync match, DMA started at %d\n", drv->mfmpos);
-#endif
+ if (disk_debug_logging && dma_enable == 0)
+ write_log ("Sync match, DMA started at %d\n", drv->mfmpos);
dma_enable = 1;
}
}
static void disk_dma_debugmsg(void)
{
- write_dlog ("LEN=%04.4X (%d) SYNC=%04.4X PT=%08.8X ADKCON=%04.4X PC=%08.8X\n",
+ write_log ("LEN=%04.4X (%d) SYNC=%04.4X PT=%08.8X ADKCON=%04.4X PC=%08.8X\n",
dsklength, dsklength, (adkcon & 0x400) ? dsksync : 0xffff, dskpt, adkcon, m68k_getpc());
}
v |= 0x4000;
if (dsklen & 0x4000)
v |= 0x2000;
-#ifdef DISK_DEBUG2
- write_dlog ("DSKBYTR=%04.4X hpos=%d\n", v, hpos);
-#endif
+ if (disk_debug_logging > 1)
+ write_log ("DSKBYTR=%04.4X hpos=%d\n", v, hpos);
if (disk_debug_mode & DISK_DEBUG_PIO) {
int dr;
for (dr = 0; dr < MAX_FLOPPY_DRIVES; dr++) {
if (!(v & 0x8000)) {
if (dskdmaen) {
/* Megalomania and Knightmare does this */
-#ifdef DISK_DEBUG
- if (dskdmaen == 2)
- write_dlog ("warning: Disk read DMA aborted, %d words left PC=%x\n", dsklength, m68k_getpc());
-#endif
+ if (disk_debug_logging > 0 && dskdmaen == 2)
+ write_log ("warning: Disk read DMA aborted, %d words left PC=%x\n", dsklength, m68k_getpc());
if (dskdmaen == 3)
- write_dlog ("warning: Disk write DMA aborted, %d words left PC=%x\n", dsklength, m68k_getpc());
+ write_log ("warning: Disk write DMA aborted, %d words left PC=%x\n", dsklength, m68k_getpc());
dskdmaen = 0;
}
}
}
}
-#ifdef DISK_DEBUG
- for (dr = 0; dr < MAX_FLOPPY_DRIVES; dr++) {
- drive *drv = &floppy[dr];
- if (drv->motoroff)
- continue;
- if ((selected & (1 << dr)) == 0)
- break;
- }
- if (dr == 4) {
- write_log ("disk %s DMA started but no drive selected!\n",
+ if (disk_debug_logging > 0) {
+ for (dr = 0; dr < MAX_FLOPPY_DRIVES; dr++) {
+ drive *drv = &floppy[dr];
+ if (drv->motoroff)
+ continue;
+ if ((selected & (1 << dr)) == 0)
+ break;
+ }
+ if (dr == 4) {
+ write_log ("disk %s DMA started but no drive selected!\n",
dskdmaen == 3 ? "write" : "read");
- } else {
- write_log ("disk %s DMA started, drv=%x track %d mfmpos %d\n",
- dskdmaen == 3 ? "write" : "read", selected ^ 15,
- floppy[dr].cyl * 2 + side, floppy[dr].mfmpos);
- update_drive_gui (dr);
+ } else {
+ write_log ("disk %s DMA started, drv=%x track %d mfmpos %d\n",
+ dskdmaen == 3 ? "write" : "read", selected ^ 15,
+ floppy[dr].cyl * 2 + side, floppy[dr].mfmpos);
+ }
+ disk_dma_debugmsg();
}
- disk_dma_debugmsg();
-#endif
for (dr = 0; dr < MAX_FLOPPY_DRIVES; dr++)
update_drive_gui (dr);
static int count = 0;
if (count < 5) {
count++;
- write_dlog ("%04.4X written to DSKDAT. Not good. PC=%08.8X", v, m68k_getpc());
+ write_log ("%04.4X written to DSKDAT. Not good. PC=%08.8X", v, m68k_getpc());
if (count == 5)
write_log ("(further messages suppressed)");