bool Mouse_SetPS2State(bool use) { if (use && (!ps2callbackinit)) { useps2callback = false; PIC_SetIRQMask(MOUSE_IRQ,true); return false; } useps2callback = use; Mouse_AutoLock(useps2callback); PIC_SetIRQMask(MOUSE_IRQ,!useps2callback); return true; }
PIC_8259A(Section* configuration):Module_base(configuration){ /* Setup pic0 and pic1 with initial values like DOS has normally */ PIC_IRQCheck=0; PIC_Ticks=0; Bitu i; for (i=0;i<2;i++) { pics[i].auto_eoi=false; pics[i].rotate_on_auto_eoi=false; pics[i].request_issr=false; pics[i].special=false; pics[i].single=false; pics[i].icw_index=0; pics[i].icw_words=0; pics[i].irr = pics[i].isr = pics[i].imrr = 0; pics[i].isrr = pics[i].imr = 0xff; pics[i].active_irq = 8; } master.vector_base = 0x08; slave.vector_base = 0x70; PIC_SetIRQMask(0,false); /* Enable system timer */ PIC_SetIRQMask(1,false); /* Enable system timer */ PIC_SetIRQMask(2,false); /* Enable second pic */ PIC_SetIRQMask(8,false); /* Enable RTC IRQ */ if (machine==MCH_PCJR) { /* Enable IRQ6 (replacement for the NMI for PCJr) */ PIC_SetIRQMask(6,false); } ReadHandler[0].Install(0x20,read_command,IO_MB); ReadHandler[1].Install(0x21,read_data,IO_MB); WriteHandler[0].Install(0x20,write_command,IO_MB); WriteHandler[1].Install(0x21,write_data,IO_MB); ReadHandler[2].Install(0xa0,read_command,IO_MB); ReadHandler[3].Install(0xa1,read_data,IO_MB); WriteHandler[2].Install(0xa0,write_command,IO_MB); WriteHandler[3].Install(0xa1,write_data,IO_MB); /* Initialize the pic queue */ for (i=0;i<PIC_QUEUESIZE-1;i++) { pic_queue.entries[i].next=&pic_queue.entries[i+1]; } pic_queue.entries[PIC_QUEUESIZE-1].next=0; pic_queue.free_entry=&pic_queue.entries[0]; pic_queue.next_entry=0; }
static void Mouse_ResetHardware(void){ PIC_SetIRQMask(MOUSE_IRQ,false); }
static void mouse_reset_hardware(void){ PIC_SetIRQMask(MOUSE_IRQ,false); };