diff --git a/src/device/hasp.c b/src/device/hasp.c index 12dc6f2d1..07e9ac636 100644 --- a/src/device/hasp.c +++ b/src/device/hasp.c @@ -341,7 +341,6 @@ const lpt_device_t lpt_hasp_savquest_device = { .close = hasp_close, .write_data = hasp_write_data, .write_ctrl = NULL, - .autofeed = NULL, .strobe = NULL, .read_status = hasp_read_status, .read_ctrl = NULL, diff --git a/src/device/lpt.c b/src/device/lpt.c index 1466ea021..29689d2de 100644 --- a/src/device/lpt.c +++ b/src/device/lpt.c @@ -222,15 +222,6 @@ lpt_ecp_update_irq(lpt_t *dev) picintclevel(1 << dev->irq, &dev->irq_state); } -static void -lpt_autofeed(lpt_t *dev, const uint8_t val) -{ - if (dev->dt && dev->dt->autofeed && dev->dt->priv) - dev->dt->autofeed(val, dev->dt->priv); - - dev->autofeed = val; -} - static void lpt_strobe(lpt_t *dev, const uint8_t val) { @@ -258,8 +249,6 @@ lpt_fifo_out_callback(void *priv) else ret = dma_channel_read(dev->dma); - lpt_log("DMA %02X: %08X\n", dev->dma, ret); - if (ret != DMA_NODATA) { fifo_write_evt_tagged(0x01, (uint8_t) (ret & 0xff), dev->fifo); @@ -299,7 +288,6 @@ lpt_fifo_out_callback(void *priv) dev->dma_stat = 0x04; dev->state = LPT_STATE_IDLE; lpt_ecp_update_irq(dev); - lpt_autofeed(dev, 0); } else { dev->state = LPT_STATE_READ_DMA; @@ -312,8 +300,6 @@ lpt_fifo_out_callback(void *priv) } else if (!fifo_get_empty(dev->fifo)) timer_advance_u64(&dev->fifo_out_timer, (uint64_t) ((1000000.0 / 2500000.0) * (double) TIMER_USEC)); - else - lpt_autofeed(dev, 0); break; } } @@ -354,13 +340,11 @@ lpt_write(const uint16_t port, const uint8_t val, void *priv) break; case 0x0002: - if (dev->dt && dev->dt->write_ctrl && dev->dt->priv) { - if (dev->ecp && ((dev->ecr & 0xe0) >= 0x20)) - dev->dt->write_ctrl((val & 0xfc) | dev->autofeed | dev->strobe, dev->dt->priv); - else - dev->dt->write_ctrl(val, dev->dt->priv); - } + if (dev->dt && dev->dt->write_ctrl && dev->dt->priv) + dev->dt->write_ctrl(val, dev->dt->priv); dev->ctrl = val; + dev->strobe = val & 0x01; + dev->autofeed = val & 0x02; dev->enable_irq = val & 0x10; if (!(val & 0x10) && (dev->irq != 0xff)) picintc(1 << dev->irq); @@ -430,11 +414,6 @@ lpt_write(const uint16_t port, const uint8_t val, void *priv) break; case 0x0402: case 0x0406: - if (!(val & 0x0c)) - lpt_autofeed(dev, 0x00); - else - lpt_autofeed(dev, 0x02); - if ((dev->ecr & 0x04) && !(val & 0x04)) { dev->dma_stat = 0x00; fifo_reset(dev->fifo); diff --git a/src/include/86box/lpt.h b/src/include/86box/lpt.h index 037c31a44..61c95094f 100644 --- a/src/include/86box/lpt.h +++ b/src/include/86box/lpt.h @@ -25,7 +25,6 @@ typedef struct lpt_device_s { void (*close)(void *priv); void (*write_data)(uint8_t val, void *priv); void (*write_ctrl)(uint8_t val, void *priv); - void (*autofeed)(uint8_t val,void *priv); void (*strobe)(uint8_t old, uint8_t val,void *priv); uint8_t (*read_status)(void *priv); uint8_t (*read_ctrl)(void *priv); diff --git a/src/network/net_plip.c b/src/network/net_plip.c index c45ad5527..5eacc5536 100644 --- a/src/network/net_plip.c +++ b/src/network/net_plip.c @@ -494,7 +494,6 @@ const lpt_device_t lpt_plip_device = { .close = plip_close, .write_data = plip_write_data, .write_ctrl = plip_write_ctrl, - .autofeed = NULL, .strobe = NULL, .read_status = plip_read_status, .read_ctrl = NULL, diff --git a/src/printer/prt_escp.c b/src/printer/prt_escp.c index 0806b0dad..3ddb34c83 100644 --- a/src/printer/prt_escp.c +++ b/src/printer/prt_escp.c @@ -1884,17 +1884,6 @@ write_data(uint8_t val, void *priv) dev->data = val; } -static void -autofeed(uint8_t val, void *priv) -{ - escp_t *dev = (escp_t *) priv; - - if (dev == NULL) - return; - - dev->autofeed = ((val & 0x02) > 0); -} - static void strobe(uint8_t old, uint8_t val, void *priv) { @@ -2147,7 +2136,6 @@ const lpt_device_t lpt_prt_escp_device = { .close = escp_close, .write_data = write_data, .write_ctrl = write_ctrl, - .autofeed = autofeed, .strobe = strobe, .read_status = read_status, .read_ctrl = read_ctrl, diff --git a/src/printer/prt_ps.c b/src/printer/prt_ps.c index c7183ec3f..c07ad475a 100644 --- a/src/printer/prt_ps.c +++ b/src/printer/prt_ps.c @@ -322,17 +322,6 @@ process_data(ps_t *dev) dev->buffer[dev->buffer_pos] = 0; } -static void -ps_autofeed(uint8_t val, void *priv) -{ - ps_t *dev = (ps_t *) priv; - - if (dev == NULL) - return; - - dev->autofeed = val & 0x02 ? true : false; -} - static void ps_strobe(uint8_t old, uint8_t val, void *priv) { @@ -533,7 +522,6 @@ const lpt_device_t lpt_prt_ps_device = { .close = ps_close, .write_data = ps_write_data, .write_ctrl = ps_write_ctrl, - .autofeed = ps_autofeed, .strobe = ps_strobe, .read_status = ps_read_status, .read_ctrl = NULL, @@ -551,7 +539,6 @@ const lpt_device_t lpt_prt_pcl_device = { .close = ps_close, .write_data = ps_write_data, .write_ctrl = ps_write_ctrl, - .autofeed = ps_autofeed, .strobe = ps_strobe, .read_status = ps_read_status, .read_ctrl = NULL, diff --git a/src/printer/prt_text.c b/src/printer/prt_text.c index a9808845f..eb951de08 100644 --- a/src/printer/prt_text.c +++ b/src/printer/prt_text.c @@ -369,18 +369,6 @@ write_data(uint8_t val, void *priv) dev->data = val; } -static void -autofeed(uint8_t val, void *priv) -{ - prnt_t *dev = (prnt_t *) priv; - - if (dev == NULL) - return; - - /* set autofeed value */ - dev->autofeed = val & 0x02 ? 1 : 0; -} - static void strobe(uint8_t old, uint8_t val, void *priv) { @@ -418,7 +406,7 @@ write_ctrl(uint8_t val, void *priv) return; /* set autofeed value */ - dev->autofeed = val & 0x02 ? 1 : 0; + dev->autofeed = (val & 0x02) ? 1 : 0; if (val & 0x08) { /* SELECT */ /* select printer */ @@ -562,7 +550,6 @@ const lpt_device_t lpt_prt_text_device = { .close = prnt_close, .write_data = write_data, .write_ctrl = write_ctrl, - .autofeed = autofeed, .strobe = strobe, .read_status = read_status, .read_ctrl = NULL, diff --git a/src/sio/sio_um8669f.c b/src/sio/sio_um8669f.c index f0460ada9..96c37573d 100644 --- a/src/sio/sio_um8669f.c +++ b/src/sio/sio_um8669f.c @@ -209,6 +209,9 @@ um8669f_pnp_config_changed(uint8_t ld, isapnp_device_config_t *config, void *pri if (config->activate && (config->io[0].base != ISAPNP_IO_DISABLED)) { um8669f_log("UM8669F: LPT enabled at port %04X IRQ %d\n", config->io[0].base, config->irq[0].irq); lpt_port_setup(dev->lpt, config->io[0].base); + + lpt_port_irq(dev->lpt, config->irq[0].irq); + lpt_port_dma(dev->lpt, (config->dma[0].dma == ISAPNP_DMA_DISABLED) ? -1 : config->dma[0].dma); } else { um8669f_log("UM8669F: LPT disabled\n"); } diff --git a/src/sound/snd_lpt_dac.c b/src/sound/snd_lpt_dac.c index 99cf66916..33b197230 100644 --- a/src/sound/snd_lpt_dac.c +++ b/src/sound/snd_lpt_dac.c @@ -124,7 +124,6 @@ const lpt_device_t lpt_dac_device = { .close = dac_close, .write_data = dac_write_data, .write_ctrl = dac_write_ctrl, - .autofeed = NULL, .strobe = dac_strobe, .read_status = dac_read_status, .read_ctrl = NULL, @@ -141,7 +140,6 @@ const lpt_device_t lpt_dac_stereo_device = { .close = dac_close, .write_data = dac_write_data, .write_ctrl = dac_write_ctrl, - .autofeed = NULL, .strobe = dac_strobe, .read_status = dac_read_status, .read_ctrl = NULL, diff --git a/src/sound/snd_lpt_dss.c b/src/sound/snd_lpt_dss.c index 206f44ec8..5ea0048f4 100644 --- a/src/sound/snd_lpt_dss.c +++ b/src/sound/snd_lpt_dss.c @@ -139,7 +139,6 @@ const lpt_device_t dss_device = { .init = dss_init, .close = dss_close, .write_data = dss_write_data, - .autofeed = NULL, .strobe = NULL, .write_ctrl = dss_write_ctrl, .read_status = dss_read_status,