diff --git a/.vscode/settings.json b/.vscode/settings.json index 2d289b8..08e80b3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -17,6 +17,8 @@ "mod.h": "c", "modstd.h": "c", "stdbool.h": "c", - "stdint.h": "c" + "stdint.h": "c", + "types.h": "c", + "random": "c" } } \ No newline at end of file diff --git a/modules/music/build.sh b/modules/music/build.sh deleted file mode 100755 index c1a415c..0000000 --- a/modules/music/build.sh +++ /dev/null @@ -1,17 +0,0 @@ -#/bin/sh -echo "Название: Мелодия из тетриса" -echo "Лицензия: Публичное достояние" - -CC="gcc" -ARCH_FLAGS="-ffreestanding -O0 -g -fPIC -static -nostdlib " - -if [ -d "../../sdk" ]; then - CC="../../sdk/bin/x86_64-elf-gcc" -fi - - -$CC $ARCH_FLAGS -I../../modlib -finput-charset=UTF-8 -fexec-charset=cp1251 -c main.c -o music.o -$CC $ARCH_FLAGS -T ../link.ld -Wl,--entry=init,--build-id=none music.o -o music.ko - -cp music.ko ../bin/ -echo "Сборка завершена, файл: music.ko" diff --git a/modules/music/main.c b/modules/music/main.c deleted file mode 100644 index 3e55c23..0000000 --- a/modules/music/main.c +++ /dev/null @@ -1,69 +0,0 @@ -#include - -static inline void outb(uint16_t port, uint8_t val) { - asm volatile("outb %0, %1" : : "a"(val), "Nd"(port)); -} - -static inline uint8_t inb(uint16_t port) { - uint8_t ret; - asm volatile("inb %1, %0" : "=a"(ret) : "Nd"(port)); - return ret; -} - -static inline void usleep(uint64_t ticks) { - for (uint64_t i = 0; i < ticks * 100; i++) { asm volatile("pause"); } -} - -static inline void play_sound(unsigned int frequency) { - uint32_t div; - uint8_t tmp; - - // Устанавливаем частоту таймера - div = 1193180 / frequency; - outb(0x43, 0xB6); - outb(0x42, (uint8_t)(div)); - outb(0x42, (uint8_t)(div >> 8)); - - // Воспроизводим мелодию - tmp = inb(0x61); - if (tmp != (tmp | 3)) { outb(0x61, tmp | 3); } -} - -static void nosound( ) { - uint8_t tmp = inb(0x61) & 0xFC; - - outb(0x61, tmp); -} - -module_info_t __attribute__((section(".minit"))) init(env_t *env) { - init_env(env); - fb_printf("Программа инициализирована!\n"); - return (module_info_t){ - .name = (char *)"Мелодия", - .message = (char *)"Надеюсь скоро тут будет тетрис!", - .type = 0, - .data_size = 0, - .data = (void *)0, - .err_code = 0, - .module_id = 0, - }; - - // Массив с нотами - unsigned int tetris_notes[] = { 0 }; - - // Расчет количества нот в мелодии - uint64_t num_notes = sizeof(tetris_notes) / sizeof(tetris_notes[0]); - - // Начальное значение для подсчета времени - int note_duration = 1000000; // 1 секунда - - // Зацикленное воспроизведение мелодии в течение минуты - for (uint64_t i = 0; i < num_notes; i++) { - // Воспроизведение ноты с заданным временем - play_sound(tetris_notes[i]); - usleep(note_duration); - - // Уменьшение времени для следующей ноты - note_duration -= note_duration / 24; // Уменьшение на 1/24 каждый раз - } -} \ No newline at end of file