From 46b75085b67a5e948d2c3ec7537d0453d4bbd1ce Mon Sep 17 00:00:00 2001 From: Tyler McGurrin Date: Mon, 4 Aug 2025 18:31:16 -0400 Subject: [PATCH] Finish PC Speaker Support, and finish wait function --- src/kernel/dri/cmos.c | 9 ++------- src/kernel/dri/cmos.h | 1 - src/kernel/dri/sound/pcspeaker.c | 2 +- src/kernel/dri/timer.c | 13 +++++++++++-- src/kernel/dri/timer.h | 2 +- src/kernel/version.h | 2 +- 6 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/kernel/dri/cmos.c b/src/kernel/dri/cmos.c index a28210a..7bf350d 100644 --- a/src/kernel/dri/cmos.c +++ b/src/kernel/dri/cmos.c @@ -7,8 +7,10 @@ #include #include + #include #include + #include #define CMOS_ADDPORT 0x70 @@ -83,10 +85,3 @@ int Slave_FDD_Detect() } return FDDType; } - -void CMOS_Timer_Wait(int cycles) -{ - int tmp; - tmp = CMOS_Timer; - while(CMOS_Timer - tmp <= cycles) return; -} \ No newline at end of file diff --git a/src/kernel/dri/cmos.h b/src/kernel/dri/cmos.h index 868cd0a..2d7e89b 100644 --- a/src/kernel/dri/cmos.h +++ b/src/kernel/dri/cmos.h @@ -10,7 +10,6 @@ void CMOS_RTC_Handler(); int Master_FDD_Detect(); int Slave_FDD_Detect(); -void CMOS_Timer_Wait(int cycles); uint8_t Read_CMOS(uint8_t Register); enum CMOSRegisters diff --git a/src/kernel/dri/sound/pcspeaker.c b/src/kernel/dri/sound/pcspeaker.c index 9b3af82..020196b 100644 --- a/src/kernel/dri/sound/pcspeaker.c +++ b/src/kernel/dri/sound/pcspeaker.c @@ -45,6 +45,6 @@ void PCSP_Mute() void PCSP_Beep() { PCSP_Play(1000); - Timer_Wait(100000000); + Timer_Wait(5); PCSP_Mute(); } \ No newline at end of file diff --git a/src/kernel/dri/timer.c b/src/kernel/dri/timer.c index 63227d9..f1b40c2 100644 --- a/src/kernel/dri/timer.c +++ b/src/kernel/dri/timer.c @@ -5,15 +5,24 @@ \*----------------*/ #include "timer.h" +#include + +#include + +extern uint16_t DEBUG_COM_PORT; + int uptime; void Timer_Handler() { uptime++; } -void Timer_Wait(int cycles) // Seems to not work? i'll fix it later. +void Timer_Wait(int time) { int tmp; tmp = uptime; - while(uptime - tmp <= cycles) return; + while(0 == 0) { + // Serial_Printf(DEBUG_COM_PORT, "Vaules TMP: %d Uptime: %d Cycles: %d\n", tmp, uptime, time); + if(uptime - tmp == time) return; + } } \ No newline at end of file diff --git a/src/kernel/dri/timer.h b/src/kernel/dri/timer.h index 09fd080..b0701a8 100644 --- a/src/kernel/dri/timer.h +++ b/src/kernel/dri/timer.h @@ -6,4 +6,4 @@ #pragma once void Timer_Handler(); -void Timer_Wait(int cycles); \ No newline at end of file +void Timer_Wait(int time); \ No newline at end of file diff --git a/src/kernel/version.h b/src/kernel/version.h index d70a68e..8169324 100644 --- a/src/kernel/version.h +++ b/src/kernel/version.h @@ -6,4 +6,4 @@ #pragma once #define LOGO " _ _____ _ __________________\n / | / / | / | / / _/_ __/ ____/\n / |/ / /| | / |/ // / / / / __/ \n / /| / ___ |/ /| // / / / / /___ \n/_/ |_/_/ |_/_/ |_/___/ /_/ /_____/ \n" -#define VERSION "RD-00047" \ No newline at end of file +#define VERSION "RD-00048" \ No newline at end of file