From 57de6e022b14748bec471cca71089d9cd23741bc Mon Sep 17 00:00:00 2001 From: Innovation Inc Date: Thu, 13 Oct 2022 19:46:20 -0500 Subject: [PATCH] Massive commit so I can move computers Note that this does not work at all. Following an update from an old userkit to the most recent one, the code broke. I'm still working on figuring out why it won't work. --- src/.vs/DremDOS/v16/.suo | Bin 38912 -> 0 bytes src/DremDOS.sln | 12 +- src/DremDOS/Core/Console/Terminal.cs | 518 +++++++++++++++ src/DremDOS/Core/Console/VGATerminal.cs | 364 +++++++++++ src/DremDOS/Core/Drivers/MouseDriver.cs | 166 +++++ src/DremDOS/Core/Graphics/ASC16.cs | 66 ++ src/DremDOS/Core/Graphics/BUI.cs | 104 +++ src/DremDOS/Core/Sound/Sound.cs | 84 +++ src/DremDOS/DremDOS.csproj | 14 + src/DremDOS/Kernel.cs | 199 +++--- .../obj/DremDOS.csproj.nuget.dgspec.json | 92 --- src/DremDOS/obj/DremDOS.csproj.nuget.g.props | 26 - .../obj/DremDOS.csproj.nuget.g.targets | 9 - src/DremDOS/obj/project.assets.json | 605 ------------------ 14 files changed, 1431 insertions(+), 828 deletions(-) delete mode 100644 src/.vs/DremDOS/v16/.suo create mode 100644 src/DremDOS/Core/Console/Terminal.cs create mode 100644 src/DremDOS/Core/Console/VGATerminal.cs create mode 100644 src/DremDOS/Core/Drivers/MouseDriver.cs create mode 100644 src/DremDOS/Core/Graphics/ASC16.cs create mode 100644 src/DremDOS/Core/Graphics/BUI.cs create mode 100644 src/DremDOS/Core/Sound/Sound.cs delete mode 100644 src/DremDOS/obj/DremDOS.csproj.nuget.dgspec.json delete mode 100644 src/DremDOS/obj/DremDOS.csproj.nuget.g.props delete mode 100644 src/DremDOS/obj/DremDOS.csproj.nuget.g.targets delete mode 100644 src/DremDOS/obj/project.assets.json diff --git a/src/.vs/DremDOS/v16/.suo b/src/.vs/DremDOS/v16/.suo deleted file mode 100644 index c116520b662a437d4100ae590cec7094af6486c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38912 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 a=^E`naW6G7u;0{|p{bq?RrUM#kN*s4-p1$v diff --git a/src/DremDOS.sln b/src/DremDOS.sln index 726ee14..252a3fe 100644 --- a/src/DremDOS.sln +++ b/src/DremDOS.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.32002.261 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DremDOS", "DremDOS\DremDOS.csproj", "{C6928320-F3F3-4BFE-9BDB-3C53F09CB969}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DremDOS", "DremDOS\DremDOS.csproj", "{E2D8A648-A174-4667-AE66-D25A9E976625}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -11,15 +11,15 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C6928320-F3F3-4BFE-9BDB-3C53F09CB969}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C6928320-F3F3-4BFE-9BDB-3C53F09CB969}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C6928320-F3F3-4BFE-9BDB-3C53F09CB969}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C6928320-F3F3-4BFE-9BDB-3C53F09CB969}.Release|Any CPU.Build.0 = Release|Any CPU + {E2D8A648-A174-4667-AE66-D25A9E976625}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E2D8A648-A174-4667-AE66-D25A9E976625}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E2D8A648-A174-4667-AE66-D25A9E976625}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E2D8A648-A174-4667-AE66-D25A9E976625}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {1E50E5E1-4BA7-4BEC-BC0C-A303DFE6A7C4} + SolutionGuid = {6262F00F-A1A7-4527-B16E-35ECD01B1C3C} EndGlobalSection EndGlobal diff --git a/src/DremDOS/Core/Console/Terminal.cs b/src/DremDOS/Core/Console/Terminal.cs new file mode 100644 index 0000000..87cb4c5 --- /dev/null +++ b/src/DremDOS/Core/Console/Terminal.cs @@ -0,0 +1,518 @@ +/* + * + * DremDOS + * Main Terminal Classs (Terminal.cs) + * + * Contains the main backend logic for Consoles. It includes the command parser and some basic commands. + * + */ + +using System; +using System.Collections.Generic; +using System.Text; +using Cosmos.System.Graphics; +using System.Drawing; + +namespace DremDOS.Core.Terminal +{ + class Terminal + { + private VGATerminal LinkedVGATerminal; + private char[] CommandBuffer = new char[1000]; + public bool ShowOutput = false; + private int CommandBufferCurrentLocation = 0; + + private Pen CurrentPen = new Pen(Color.White); + private string CurrentDirectory = @"0:\"; + + private bool ConsoleMode; + private bool RunCommandReady; + public Terminal(bool IsInConsoleMode) + { + Initialize(IsInConsoleMode); + } + + private void Initialize(bool IsInConsoleMode) + { + RunCommandReady = true; + ConsoleMode = IsInConsoleMode; + if (ConsoleMode) + { + ShowOutput = true; + } + InitializeBuffer(); // JUST in case Initialize has some extra stuff that needs done later. J U S T in case. + } + private void InitializeBuffer() + { + CommandBufferCurrentLocation = 0; + for (int i = 0; i < CommandBuffer.Length; i++) + { + CommandBuffer[i] = '\0'; + } + } + public void SetPen(Pen Color) { CurrentPen = Color; } + public void SetLinkedVGATerminal(VGATerminal Term) + { + LinkedVGATerminal = Term; + ShowOutput = true; + } + public void WriteToBuffer(char c) { + CommandBuffer[CommandBufferCurrentLocation] = c; + CommandBufferCurrentLocation+=1; + if (!ConsoleMode) { if (CommandBufferCurrentLocation == 0) { LinkedVGATerminal.CanBackspace = false; } else { LinkedVGATerminal.CanBackspace = true; } } + + if(ConsoleMode) + { + AppendText("" + c); + } + } + public void ClearBuffer() { InitializeBuffer(); LinkedVGATerminal.CanBackspace = false; } + public void BufferBackspace() { + if (CommandBufferCurrentLocation != 0) { + CommandBuffer[CommandBufferCurrentLocation - 1] = '\0'; + CommandBufferCurrentLocation--; + if (!ConsoleMode) { if (CommandBufferCurrentLocation == 0) { LinkedVGATerminal.CanBackspace = false; } else { LinkedVGATerminal.CanBackspace = true; } } + } else { + if (!ConsoleMode) { LinkedVGATerminal.CanBackspace = false; } + } + } + + public void EnterPressed() + { + if(RunCommandReady) + { + RunCommand(); + } + } + public void RunCommand() { + string temp = ""; + char nullchar = '\0'; + for(int i = 0; i < CommandBuffer.Length; i++) + { + if(CommandBuffer[i] == nullchar) { break; } + temp += CommandBuffer[i].ToString(); + } + //LinkedVGATerminal.AppendText("You entered: " + temp + "\n"); + RunCommand(temp); + + ClearBuffer(); + } + + private void AppendText(string Text) + { + if(ConsoleMode) + { + Console.Write(Text); + } else + { + LinkedVGATerminal.AppendText(Text); + } + return; + } + private void AppendText(string Text, Pen Color) + { + if (ConsoleMode) + { + Console.Write(Text); + } + else + { + LinkedVGATerminal.AppendText(Text, Color); + } + return; + } // I don't recommend using this as it makes single console mode ugly. + + private void AppendText(string Text, string Color) + { + if (ConsoleMode) + { + ConsoleColor PreviousForeground = Console.ForegroundColor; + ConsoleColor Foreground = StringToConsole(Color); + Console.ForegroundColor = Foreground; + Console.Write(Text); + Console.ForegroundColor = PreviousForeground; + + } + else + { + Console.Beep(100, 1000); + Pen ColorPen = StringToPen(Color); + Console.Beep(500, 1000); + LinkedVGATerminal.AppendText(Text, ColorPen); + } + return; + } // The above "AppendText" methods adds an ambiguity layer that lets the OS choose what to output the text to. Important for single console mode. + + private ConsoleColor StringToConsole(string ColorIn) + { + ConsoleColor Color; + Color = ConsoleColor.White; + + if (ColorIn == "Black") { + Color = ConsoleColor.Black; + } else if (ColorIn == "DarkBlue") { + Color = ConsoleColor.DarkBlue; + } else if (ColorIn == "DarkGreen") { + Color = ConsoleColor.DarkGreen; + } else if (ColorIn == "DarkCyan") { + Color = ConsoleColor.DarkCyan; + } else if (ColorIn == "DarkRed") { + Color = ConsoleColor.DarkRed; + } else if (ColorIn == "DarkMagenta") { + Color = ConsoleColor.DarkMagenta; + } else if (ColorIn == "DarkYellow") { + Color = ConsoleColor.DarkYellow; + } else if (ColorIn == "Gray") { + Color = ConsoleColor.Gray; + } else if (ColorIn == "DarkGray") { + Color = ConsoleColor.DarkGray; + } else if (ColorIn == "Blue") { + Color = ConsoleColor.Blue; + } else if (ColorIn == "Green") { + Color = ConsoleColor.Green; + } else if (ColorIn == "Cyan") { + Color = ConsoleColor.Cyan; + } else if (ColorIn == "Red") { + Color = ConsoleColor.Red; + } else if (ColorIn == "Magenta") { + Color = ConsoleColor.Magenta; + } else if (ColorIn == "Yellow") { + Color = ConsoleColor.Yellow; + } else if (ColorIn == "White") { + Color = ConsoleColor.White; + } // This hurts to look at + + return Color; + } + + private Pen StringToPen(string ColorIn) + { + Pen PenColor; + PenColor = new Pen(Color.FromName(ColorIn)); + + /*switch(ColorIn) // I'll only support some colors for now + { + case "White": + PenColor = new Pen(Color.White); + break; + case "Black": + PenColor = new Pen(Color.Black); + break; + + }*/ + + return PenColor; + } + + public void RunCommand(string cmd) + { + string[] arguments = GetArguments(cmd); + Console.Beep(500, 1000); + //RunCommand(arguments); + Command(); + //Console.Beep(1000, 1000); + } + + public void RunCommand(string[] arguments) + { + if (arguments[0] == "command") + { + //Console.Beep(1500, 1000); + Command(); + Console.Beep(2000, 1000); + } + else if (arguments[0] == "checktime") + { + if(ShowOutput) { AppendText(CheckTime()); } + } + else if (arguments[0] == "help") + { + if (ShowOutput) { Help(arguments); } + } + else if (arguments[0] == "beep") + { + Console.Beep(); + } + else if (arguments[0] == "clear") + { + if(ConsoleMode) + { + Console.Clear(); + } else + { + //LinkedVGATerminal.Clear(); Implement later + } + } + else + { + if (ShowOutput) { AppendText(@"ERROR: Bad Command!"); } + } + + if (ShowOutput) + { + AppendText("\n" + CurrentDirectory + " >"); + } + + ClearBuffer(); + } + + private void Command() { + if (ShowOutput) + { + /*AppendText(@" _..._" + '\n', "Blue"); // Blue + AppendText(@" ___ ___ ____ ____ ", "Red"); // Red + AppendText(@".: '." + '\n', "DarkBlue"); // Dark Blue + AppendText(@" / _ \_______ __ _ / _ \/ __ \/ __/ ", "Yellow"); // Yellow + AppendText(@"::::: :" + '\n', new Pen(Color.DarkBlue)); // Dark Blue + AppendText(@" / // / __/ -_) ' \/ // / /_/ /\ \ ", "Green"); // Green + AppendText(@"::::::: :" + '\n', "DarkMagenta"); // Dark Magenta + AppendText(@" /____/_/ \__/_/_/_/____/\____/___/ ", "Blue"); // Blue + AppendText(@"`::::::::.'" + '\n', "DarkMagenta"); // Dark Magenta + AppendText(@" `':::''" + '\n', "Magenta"); // Magenta + AppendText(Kernel._OS_NAME + " " + Kernel._OS_VERSION_FULL + "\n");*/ + AppendText("Pain"); + } + } + + private string CheckTime() + { + // Get the time/date and output it + string time = DateTime.Now.ToString(); + //LinkedVGATerminal.AppendText("{0}", time); + return time; + } + + private void Help(string[] arguments) + { + // Tests if the arguments has the correct length + if (arguments.Length >= 2) + { + // If command == [valid command], output information on the command + if (arguments[1] == "help") + { + AppendText("help - help menu or get help on a command\n"); + AppendText("help - get help on a specific command"); + } + else if (arguments[1] == "command") + { + AppendText("command - outputs information about DremDOS"); + } + else if (arguments[1] == "beep") + { + AppendText("beep - make the PC speaker go beep!\n"); + AppendText("beep