From 60e425dfe9538a6942a20782d64bcd75940b796e Mon Sep 17 00:00:00 2001 From: Peter Veenstra Date: Wed, 10 Dec 2003 14:55:49 +0000 Subject: [PATCH] added PIC_SetIRQMask Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1480 --- include/pic.h | 1 + src/hardware/pic.cpp | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/include/pic.h b/include/pic.h index 17f21e43..6daa09e3 100644 --- a/include/pic.h +++ b/include/pic.h @@ -63,5 +63,6 @@ void PIC_AddEvent(PIC_EventHandler handler,Bitu delay); void PIC_RemoveEvents(PIC_EventHandler handler); +void PIC_SetIRQMask(Bitu irq, bool masked); #endif diff --git a/src/hardware/pic.cpp b/src/hardware/pic.cpp index 08464bf7..47c4dc65 100644 --- a/src/hardware/pic.cpp +++ b/src/hardware/pic.cpp @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: pic.cpp,v 1.14 2003-11-27 18:57:42 qbix79 Exp $ */ +/* $Id: pic.cpp,v 1.15 2003-12-10 14:55:08 qbix79 Exp $ */ #include @@ -261,6 +261,19 @@ void PIC_runIRQs(void) { } } +void PIC_SetIRQMask(Bitu irq, bool masked) { + irqs[irq].masked=masked; + if (irqs[irq].active && !irqs[irq].masked) { + PIC_IRQCheck|=(1 << (irq)); + } else { + PIC_IRQCheck&=~(1 << (irq)); + }; + if (PIC_IRQCheck) { + CPU_CycleLeft+=CPU_Cycles; + CPU_Cycles=0; + } +} + static void AddEntry(PICEntry * entry) { PICEntry * find_entry=pic.next_entry; if (!find_entry) { @@ -483,7 +496,7 @@ void PIC_Init(Section* sec) { irqs[0].masked=false; /* Enable system timer */ irqs[1].masked=false; /* Enable Keyboard IRQ */ irqs[8].masked=false; /* Enable RTC IRQ */ - irqs[12].masked=false; /* Enable Mouse IRQ */ +/* irqs[12].masked=false; moved to mouse.cpp */ /* Enable Mouse IRQ */ IO_RegisterReadHandler(0x20,read_command,"Master PIC Command"); IO_RegisterReadHandler(0x21,read_data,"Master PIC Data"); IO_RegisterWriteHandler(0x20,write_command,"Master PIC Command");