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:
parent
b466ad9f42
commit
5a1f5769e2
1 changed files with 4 additions and 3 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue