99 lines
1.7 KiB
C
99 lines
1.7 KiB
C
/*++
|
|
|
|
Copyright (c) 1991 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
isr.c
|
|
|
|
Abstract:
|
|
|
|
This module contains code for the interrupt service routine
|
|
for the MPU device driver.
|
|
|
|
Author:
|
|
|
|
Nigel Thompson (nigelt) 7-March-1991
|
|
|
|
Environment:
|
|
|
|
Kernel mode
|
|
|
|
Revision History:
|
|
|
|
Robin Speed (RobinSp) 29-Jan-1992
|
|
Add MIDI and Soundblaster 1 support.
|
|
|
|
David Rude (drude) 7-Mar-94 - converted from SB to MPU-401
|
|
|
|
--*/
|
|
|
|
#include "sound.h"
|
|
|
|
//
|
|
// Driver ISR
|
|
//
|
|
// When we get here, we acknowledge the interrupt from the
|
|
// MPU and simply let the defered processing routine take over
|
|
// to complete the task.
|
|
//
|
|
// NOTE: If we were to be doing MIDI input, we would read the
|
|
// data port to extract the received character and save it.
|
|
//
|
|
// That was NigelT's note - currently MIDI input reads the
|
|
// byte in the Dpc routine - hasn't failed yet - RCBS
|
|
//
|
|
|
|
//
|
|
// Internal routine
|
|
//
|
|
|
|
|
|
BOOLEAN
|
|
SoundISR(
|
|
IN PKINTERRUPT pInterrupt,
|
|
IN PVOID Context
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Interrupt service routine for the MPU-401 card.
|
|
|
|
Arguments:
|
|
|
|
pInterrupt - our interrupt
|
|
Contest - Pointer to our global device info
|
|
|
|
|
|
Return Value:
|
|
|
|
TRUE if we handled the interrupt
|
|
|
|
--*/
|
|
{
|
|
PGLOBAL_DEVICE_INFO pGDI;
|
|
PSOUND_HARDWARE pHw;
|
|
|
|
UCHAR DiscardedByte; // for bytes just discard
|
|
|
|
pGDI = (PGLOBAL_DEVICE_INFO)Context;
|
|
ASSERT(pGDI->Key == GDI_KEY);
|
|
|
|
pHw = &pGDI->Hw;
|
|
|
|
dprintf5(("<"));
|
|
|
|
// get all MIDI input chars available and save them for the DPC
|
|
// start the midi in dpc
|
|
IoRequestDpc(pGDI->DeviceObject[MidiInDevice],
|
|
NULL,
|
|
NULL);
|
|
|
|
dprintf5((">"));
|
|
|
|
return TRUE;
|
|
|
|
DBG_UNREFERENCED_PARAMETER(pInterrupt);
|
|
}
|