From f1e62229ca1ce4d7768268724204772049341282 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Mon, 16 Sep 2019 19:44:04 +0200 Subject: Added basic frequency sound generator Changes to be committed: new file: src/graphics/graphics.h modified: src/kernel.c new file: src/sound/frequency.c new file: src/sound/sound.h modified: build.sh Changes not staged for commit: deleted: src/graphics/vga.h modified: src/input/ps2/keyboard.c modified: src/input/ps2/mouse.c modified: src/interrupts/irq.c modified: src/interrupts/isr.c modified: src/memory/memory.c --- src/sound/frequency.c | 32 ++++++++++++++++++++++++++++++++ src/sound/sound.h | 6 ++++++ 2 files changed, 38 insertions(+) create mode 100644 src/sound/frequency.c create mode 100644 src/sound/sound.h (limited to 'src/sound') diff --git a/src/sound/frequency.c b/src/sound/frequency.c new file mode 100644 index 0000000..e5e831c --- /dev/null +++ b/src/sound/frequency.c @@ -0,0 +1,32 @@ +#include +#include "../io/io.h" +#include "../timer/timer.h" + +static void play_sound(uint32_t frequency) { + uint32_t divided; + uint8_t tmp; + + divided = 1193180 / frequency; + send(0x43, 0xb6); + send(0x42, (uint8_t) (divided)); + send(0x42, (uint8_t) (divided >> 8)); + + //And play the sound using the PC speaker + tmp = receive(0x61); + if (tmp != (tmp | 3)) { + send(0x61, tmp | 3); + } +} + +static void shut_up() { + uint8_t tmp = receive(0x61) & 0xFC; + + send(0x61, tmp); +} + +//Make a beep +void beep() { + play_sound(1000); + timer_wait(100); + shut_up(); +} \ No newline at end of file diff --git a/src/sound/sound.h b/src/sound/sound.h new file mode 100644 index 0000000..f8692ea --- /dev/null +++ b/src/sound/sound.h @@ -0,0 +1,6 @@ +#ifndef MELVIX_SOUND_H +#define MELVIX_SOUND_H + +void beep(); + +#endif -- cgit v1.2.3