Cancel FDC ready state change reports from reset on submission of recalibrate command. Phoenix XT clone now boots from floppy.

This commit is contained in:
TomW 2015-10-02 21:51:28 +01:00
commit 5a1f5769e2

View file

@ -10,6 +10,7 @@
extern int motoron; extern int motoron;
static int fdc_reset_stat = 0;
/*FDC*/ /*FDC*/
typedef struct FDC typedef struct FDC
{ {
@ -329,6 +330,7 @@ void fdc_write(uint16_t addr, uint8_t val, void *priv)
break; break;
case 7: /*Recalibrate*/ case 7: /*Recalibrate*/
fdc_reset_stat = 0;
fdc.stat = 1 << fdc.drive; fdc.stat = 1 << fdc.drive;
disctime = 0; disctime = 0;
disc_seek(fdc.drive, 0); disc_seek(fdc.drive, 0);
@ -452,7 +454,6 @@ uint8_t fdc_read(uint16_t addr, void *priv)
return temp; return temp;
} }
static int fdc_reset_stat = 0;
void fdc_callback() void fdc_callback()
{ {
int temp; int temp;
@ -626,7 +627,7 @@ void fdc_callback()
case 7: /*Recalibrate*/ case 7: /*Recalibrate*/
fdc.track[fdc.drive]=0; fdc.track[fdc.drive]=0;
// if (!driveempty[fdc.dor & 1]) discchanged[fdc.dor & 1] = 0; // if (!driveempty[fdc.dor & 1]) discchanged[fdc.dor & 1] = 0;
fdc.st0=0x20|fdc.drive|(fdc.head?4:0); fdc.st0 = 0x20 | (fdc.params[0] & 3) | (fdc.head?4:0);
discint=-3; discint=-3;
timer_process(); timer_process();
disctime = 2048 * (1 << TIMER_SHIFT); disctime = 2048 * (1 << TIMER_SHIFT);
@ -712,7 +713,7 @@ void fdc_callback()
fdc.track[fdc.drive]=fdc.params[1]; fdc.track[fdc.drive]=fdc.params[1];
// if (!driveempty[fdc.dor & 1]) discchanged[fdc.dor & 1] = 0; // if (!driveempty[fdc.dor & 1]) discchanged[fdc.dor & 1] = 0;
// printf("Seeked to track %i %i\n",fdc.track[fdc.drive], fdc.drive); // printf("Seeked to track %i %i\n",fdc.track[fdc.drive], fdc.drive);
fdc.st0=0x20|fdc.drive|(fdc.head?4:0); fdc.st0 = 0x20 | (fdc.params[0] & 3) | (fdc.head?4:0);
discint=-3; discint=-3;
timer_process(); timer_process();
disctime = 2048 * (1 << TIMER_SHIFT); disctime = 2048 * (1 << TIMER_SHIFT);