From 86feb28064fea017b941d7d2f41b524eff3095d7 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Thu, 22 Oct 2020 17:45:31 -0300 Subject: [PATCH] Add FDC DMA remapping on VT82C686 Super I/O --- src/floppy/fdc.c | 7 +++++++ src/include/86box/fdc.h | 1 + src/sio/sio_vt82c686.c | 1 + 3 files changed, 9 insertions(+) diff --git a/src/floppy/fdc.c b/src/floppy/fdc.c index fc5f522ac..39296c406 100644 --- a/src/floppy/fdc.c +++ b/src/floppy/fdc.c @@ -2160,6 +2160,13 @@ fdc_set_irq(fdc_t *fdc, int irq) } +void +fdc_set_dma_ch(fdc_t *fdc, int dma_ch) +{ + fdc->dma_ch = dma_ch; +} + + void fdc_set_base(fdc_t *fdc, int base) { diff --git a/src/include/86box/fdc.h b/src/include/86box/fdc.h index abca81ab0..68d4ea0ce 100644 --- a/src/include/86box/fdc.h +++ b/src/include/86box/fdc.h @@ -155,6 +155,7 @@ extern int fdc_is_verify(fdc_t *fdc); extern void fdc_overrun(fdc_t *fdc); extern void fdc_set_base(fdc_t *fdc, int base); extern void fdc_set_irq(fdc_t *fdc, int irq); +extern void fdc_set_dma_ch(fdc_t *fdc, int dma_ch); extern int fdc_getdata(fdc_t *fdc, int last); extern int fdc_data(fdc_t *fdc, uint8_t data); diff --git a/src/sio/sio_vt82c686.c b/src/sio/sio_vt82c686.c index 235dfbd32..932e79cb1 100644 --- a/src/sio/sio_vt82c686.c +++ b/src/sio/sio_vt82c686.c @@ -62,6 +62,7 @@ vt82c686_fdc_handler(vt82c686_t *dev) if (dev->regs[0x02] & 0x10) fdc_set_base(dev->fdc, io_base); + fdc_set_dma_ch(dev->fdc, dev->fdc_dma); fdc_set_irq(dev->fdc, dev->fdc_irq); }