diff --git a/src/lpt.c b/src/lpt.c index 73cd3ce6d..eb25900af 100644 --- a/src/lpt.c +++ b/src/lpt.c @@ -61,32 +61,50 @@ uint16_t lpt_addr[2] = { 0x378, 0x278 }; void lpt_init() { - io_sethandler(0x0378, 0x0003, lpt1_read, NULL, NULL, lpt1_write, NULL, NULL, NULL); - io_sethandler(0x0278, 0x0003, lpt2_read, NULL, NULL, lpt2_write, NULL, NULL, NULL); - lpt_addr[0] = 0x378; - lpt_addr[1] = 0x278; + if (lpt_enabled) + { + io_sethandler(0x0378, 0x0003, lpt1_read, NULL, NULL, lpt1_write, NULL, NULL, NULL); + io_sethandler(0x0278, 0x0003, lpt2_read, NULL, NULL, lpt2_write, NULL, NULL, NULL); + lpt_addr[0] = 0x378; + lpt_addr[1] = 0x278; + } } void lpt1_init(uint16_t port) { - io_sethandler(port, 0x0003, lpt1_read, NULL, NULL, lpt1_write, NULL, NULL, NULL); - lpt_addr[0] = port; + if (lpt_enabled) + { + io_sethandler(port, 0x0003, lpt1_read, NULL, NULL, lpt1_write, NULL, NULL, NULL); + lpt_addr[0] = port; + } } void lpt1_remove() { - io_removehandler(lpt_addr[0], 0x0003, lpt1_read, NULL, NULL, lpt1_write, NULL, NULL, NULL); + if (lpt_enabled) + { + io_removehandler(lpt_addr[0], 0x0003, lpt1_read, NULL, NULL, lpt1_write, NULL, NULL, NULL); + } } void lpt2_init(uint16_t port) { - io_sethandler(port, 0x0003, lpt2_read, NULL, NULL, lpt2_write, NULL, NULL, NULL); - lpt_addr[1] = port; + if (lpt_enabled) + { + io_sethandler(port, 0x0003, lpt2_read, NULL, NULL, lpt2_write, NULL, NULL, NULL); + lpt_addr[1] = port; + } } void lpt2_remove() { - io_removehandler(lpt_addr[1], 0x0003, lpt2_read, NULL, NULL, lpt2_write, NULL, NULL, NULL); + if (lpt_enabled) + { + io_removehandler(lpt_addr[1], 0x0003, lpt2_read, NULL, NULL, lpt2_write, NULL, NULL, NULL); + } } void lpt2_remove_ams() { - io_removehandler(0x0379, 0x0002, lpt2_read, NULL, NULL, lpt2_write, NULL, NULL, NULL); + if (lpt_enabled) + { + io_removehandler(0x0379, 0x0002, lpt2_read, NULL, NULL, lpt2_write, NULL, NULL, NULL); + } } diff --git a/src/serial_old.c b/src/serial_old.c index 7dbb3e928..a195c310e 100644 --- a/src/serial_old.c +++ b/src/serial_old.c @@ -286,6 +286,10 @@ void serial_setup(int port, uint16_t addr, int irq) switch(port) { case 1: + if (!serial_enabled[0]) + { + return; + } if (base_address[0] != 0x0000) { serial_remove(port); @@ -298,6 +302,10 @@ void serial_setup(int port, uint16_t addr, int irq) serial1.irq = irq; break; case 2: + if (!serial_enabled[1]) + { + return; + } if (base_address[1] != 0x0000) { serial_remove(port);