ALi M5123 FDC implementation.
This commit is contained in:
@@ -930,6 +930,12 @@ fdc_write(uint16_t addr, uint8_t val, void *priv)
|
|||||||
fdc->pos = 0;
|
fdc->pos = 0;
|
||||||
fdc->mfm = (fdc->command&0x40)?1:0;
|
fdc->mfm = (fdc->command&0x40)?1:0;
|
||||||
break;
|
break;
|
||||||
|
case 0x17: /*Powerdown mode*/
|
||||||
|
if (!(fdc->flags & FDC_FLAG_ALI)) {
|
||||||
|
fdc_bad_command(fdc);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
/*FALLTHROUGH*/
|
||||||
case 0x07: /*Recalibrate*/
|
case 0x07: /*Recalibrate*/
|
||||||
fdc->pnum=0;
|
fdc->pnum=0;
|
||||||
fdc->ptot=1;
|
fdc->ptot=1;
|
||||||
@@ -1796,6 +1802,12 @@ fdc_callback(void *priv)
|
|||||||
fdc->paramstogo = 1;
|
fdc->paramstogo = 1;
|
||||||
fdc->interrupt = 0;
|
fdc->interrupt = 0;
|
||||||
return;
|
return;
|
||||||
|
case 0x17: /*Powerdown mode*/
|
||||||
|
fdc->stat = (fdc->stat & 0xf) | 0xd0;
|
||||||
|
fdc->res[10] = fdc->params[0];
|
||||||
|
fdc->paramstogo = 1;
|
||||||
|
fdc->interrupt = 0;
|
||||||
|
return;
|
||||||
case 0x13: /*Configure*/
|
case 0x13: /*Configure*/
|
||||||
fdc->config = fdc->params[1];
|
fdc->config = fdc->params[1];
|
||||||
fdc->pretrk = fdc->params[2];
|
fdc->pretrk = fdc->params[2];
|
||||||
@@ -2545,6 +2557,20 @@ const device_t fdc_at_smc_device = {
|
|||||||
.config = NULL
|
.config = NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const device_t fdc_at_ali_device = {
|
||||||
|
.name = "PC/AT Floppy Drive Controller (ALi M512x/M1543C)",
|
||||||
|
.internal_name = "fdc_at_ali",
|
||||||
|
.flags = 0,
|
||||||
|
.local = FDC_FLAG_AT | FDC_FLAG_SUPERIO | FDC_FLAG_ALI,
|
||||||
|
.init = fdc_init,
|
||||||
|
.close = fdc_close,
|
||||||
|
.reset = fdc_reset,
|
||||||
|
{ .available = NULL },
|
||||||
|
.speed_changed = NULL,
|
||||||
|
.force_redraw = NULL,
|
||||||
|
.config = NULL
|
||||||
|
};
|
||||||
|
|
||||||
const device_t fdc_at_winbond_device = {
|
const device_t fdc_at_winbond_device = {
|
||||||
.name = "PC/AT Floppy Drive Controller (Winbond W83x77F)",
|
.name = "PC/AT Floppy Drive Controller (Winbond W83x77F)",
|
||||||
.internal_name = "fdc_at_winbond",
|
.internal_name = "fdc_at_winbond",
|
||||||
|
Reference in New Issue
Block a user