2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: ntoskrnl/hal/x86/beep.c
5 * PURPOSE: Speaker function (it's only one)
6 * PROGRAMMER: Eric Kohl (ekohl@abo.rhein-zeitung.de)
11 /* INCLUDES *****************************************************************/
18 /* CONSTANTS *****************************************************************/
23 #define CLOCKFREQ 1193167
26 /* FUNCTIONS *****************************************************************/
28 * FUNCTION: Beeps the speaker.
30 * Frequency = If 0, the speaker will be switched off, otherwise
31 * the speaker beeps with the specified frequency.
43 /* save flags and disable interrupts */
44 Ki386SaveFlags(flags
);
45 Ki386DisableInterrupts();
48 b
= READ_PORT_UCHAR((PUCHAR
)PORT_B
);
49 WRITE_PORT_UCHAR((PUCHAR
)PORT_B
, (UCHAR
)(b
& 0xFC));
53 DWORD Divider
= CLOCKFREQ
/ Frequency
;
55 if (Divider
> 0x10000)
58 Ki386RestoreFlags(flags
);
63 /* set timer divider */
64 WRITE_PORT_UCHAR((PUCHAR
)TIMER3
, 0xB6);
65 WRITE_PORT_UCHAR((PUCHAR
)TIMER2
, (UCHAR
)(Divider
& 0xFF));
66 WRITE_PORT_UCHAR((PUCHAR
)TIMER2
, (UCHAR
)((Divider
>>8) & 0xFF));
69 WRITE_PORT_UCHAR((PUCHAR
)PORT_B
, (UCHAR
)(READ_PORT_UCHAR((PUCHAR
)PORT_B
) | 0x03));
73 Ki386RestoreFlags(flags
);