diff --git a/README.md b/README.md
index 7d4f3f5..3b380bd 100644
--- a/README.md
+++ b/README.md
@@ -7,10 +7,10 @@ TOMAS (**To**ny's **Ma**naged Operating **S**ystem) is a operating system based
### Prerequisites
- Operating System
- - Visual Studio 2019
- - COSMOS User Kit v20190508 or later
+ - Visual Studio 2022
+ - COSMOS User Kit v2022 or later
- VMWare Workstation Player
-- .NET Core 3.1 or later
+- .NET 6 or later
diff --git a/src/TOMAS.sln b/src/TOMAS.sln
index c5275a1..f5dd8dc 100644
--- a/src/TOMAS.sln
+++ b/src/TOMAS.sln
@@ -1,10 +1,8 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.29709.97
+# Visual Studio Version 17
+VisualStudioVersion = 17.4.33205.214
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tomas.Kernel", "Tomas.Kernel\Tomas.Kernel.csproj", "{AF6338C3-342A-4A12-A25C-2D53C5568DA8}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tomas.Common", "Tomas.Common\Tomas.Common.csproj", "{C50F3A6F-CFF4-4725-A1A5-21C5A2BC3321}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{59C9B3FC-B1EE-4C23-9BD9-D33074BF1334}"
@@ -15,9 +13,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
TOMAS.sln.licenseheader = TOMAS.sln.licenseheader
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tomas.Interface", "Tomas.Interface\Tomas.Interface.csproj", "{DAA9EDF4-83C7-4271-9805-FD6CE29E1796}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tomas.Interface", "Tomas.Interface\Tomas.Interface.csproj", "{DAA9EDF4-83C7-4271-9805-FD6CE29E1796}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tomas.Terminal", "Tomas.Terminal\Tomas.Terminal.csproj", "{49E67E55-F9D2-419A-8097-38F39E98A95E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tomas.Terminal", "Tomas.Terminal\Tomas.Terminal.csproj", "{49E67E55-F9D2-419A-8097-38F39E98A95E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tomas.Kernal", "Tomas.Kernal\Tomas.Kernal.csproj", "{20750C95-A3C7-4958-BA9F-56E4C3BD0293}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -25,10 +25,6 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {AF6338C3-342A-4A12-A25C-2D53C5568DA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {AF6338C3-342A-4A12-A25C-2D53C5568DA8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {AF6338C3-342A-4A12-A25C-2D53C5568DA8}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {AF6338C3-342A-4A12-A25C-2D53C5568DA8}.Release|Any CPU.Build.0 = Release|Any CPU
{C50F3A6F-CFF4-4725-A1A5-21C5A2BC3321}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C50F3A6F-CFF4-4725-A1A5-21C5A2BC3321}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C50F3A6F-CFF4-4725-A1A5-21C5A2BC3321}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -41,6 +37,10 @@ Global
{49E67E55-F9D2-419A-8097-38F39E98A95E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{49E67E55-F9D2-419A-8097-38F39E98A95E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{49E67E55-F9D2-419A-8097-38F39E98A95E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {20750C95-A3C7-4958-BA9F-56E4C3BD0293}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {20750C95-A3C7-4958-BA9F-56E4C3BD0293}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {20750C95-A3C7-4958-BA9F-56E4C3BD0293}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {20750C95-A3C7-4958-BA9F-56E4C3BD0293}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/Tomas.Kernal/Kernel.cs b/src/Tomas.Kernal/Kernel.cs
new file mode 100644
index 0000000..e464421
--- /dev/null
+++ b/src/Tomas.Kernal/Kernel.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Sys = Cosmos.System;
+
+namespace Tomas.Kernal
+{
+ public class Kernel : Sys.Kernel
+ {
+
+ protected override void BeforeRun()
+ {
+ Console.WriteLine("Cosmos booted successfully. Type a line of text to get it echoed back.");
+ }
+
+ protected override void Run()
+ {
+ Console.Write("Input: ");
+ var input = Console.ReadLine();
+ Console.Write("Text typed: ");
+ Console.WriteLine(input);
+ }
+ }
+}
diff --git a/src/Tomas.Kernel/Programs/About.cs b/src/Tomas.Kernal/Programs/About.cs
similarity index 100%
rename from src/Tomas.Kernel/Programs/About.cs
rename to src/Tomas.Kernal/Programs/About.cs
diff --git a/src/Tomas.Kernel/Shell.cs b/src/Tomas.Kernal/Shell.cs
similarity index 100%
rename from src/Tomas.Kernel/Shell.cs
rename to src/Tomas.Kernal/Shell.cs
diff --git a/src/Tomas.Kernal/TomFS.cs b/src/Tomas.Kernal/TomFS.cs
new file mode 100644
index 0000000..0d359b0
--- /dev/null
+++ b/src/Tomas.Kernal/TomFS.cs
@@ -0,0 +1,52 @@
+// I license this project under the GPL 3.0 license.
+// See the LICENSE file in the project root for more information.
+using System;
+using System.IO;
+using Cosmos.System.FileSystem;
+using Cosmos.System.FileSystem.VFS;
+using Tomas.Common;
+
+namespace Tomas.Kernel
+{
+ class TomFS
+ {
+ public const string ROOT_DIR = "0:\\";
+ public static string SYSTEM_DIR = $"{ROOT_DIR}\\SYSTEM\\";
+
+ public static void Initialize()
+ {
+ try
+ {
+ var fs = new CosmosVFS();
+ VFSManager.RegisterVFS(fs);
+ fs.CreateDirectory(SYSTEM_DIR);
+ Console.WriteLine("Creating system files.");
+ fs.CreateFile($"{SYSTEM_DIR}sysinfo.txt");
+ Console.WriteLine("Setting system preferences.");
+ File.WriteAllText($"{SYSTEM_DIR}sysinfo.txt", $"{ComConsts.NAME}, {ComConsts.VersionGit}");
+ Console.WriteLine("File system loaded sucesfully.");
+ var intro = File.ReadAllText($"{SYSTEM_DIR}sysinfo.txt");
+ Console.WriteLine(intro);
+
+ }
+ catch
+ {
+ Console.WriteLine("File system failed to load! Not all functions will work.");
+ }
+ }
+
+ public static string[] ListDirectories(string path)
+ {
+ try
+ {
+ var dirs = Directory.GetDirectories(path);
+ return dirs;
+ }
+ catch
+ {
+ Console.WriteLine("Failed to find any directories.");
+ throw;
+ }
+ }
+ }
+}
diff --git a/src/Tomas.Kernal/Tomas.Kernal.csproj b/src/Tomas.Kernal/Tomas.Kernal.csproj
new file mode 100644
index 0000000..0d4bb3c
--- /dev/null
+++ b/src/Tomas.Kernal/Tomas.Kernal.csproj
@@ -0,0 +1,33 @@
+
+
+
+ net6.0
+
+ cosmos
+ false
+ True
+
+
+
+ False
+ False
+ Pipe: Cosmos\Serial
+ Serial: COM1
+ VMware
+ VMware
+ Use VMware Player or Workstation to deploy and debug.
+ 192.168.0.8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Tomas.Kernel/Kernel.cs b/src/Tomas.Kernel.Legacy/Kernel.cs
similarity index 100%
rename from src/Tomas.Kernel/Kernel.cs
rename to src/Tomas.Kernel.Legacy/Kernel.cs
diff --git a/src/Tomas.Kernel.Legacy/Programs/About.cs b/src/Tomas.Kernel.Legacy/Programs/About.cs
new file mode 100644
index 0000000..9ce8ad4
--- /dev/null
+++ b/src/Tomas.Kernel.Legacy/Programs/About.cs
@@ -0,0 +1,23 @@
+// I license this project under the GPL 3.0 license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using Tomas.Common;
+using Tomas.Interface;
+
+namespace Tomas.Kernel.Programs
+{
+ public class About : IProgram
+ {
+ public bool Run(IShell shell)
+ {
+ Console.WriteLine($"{ComConsts.NAME} v{ComConsts.VersionGit}{Environment.NewLine}"
+ + "TOMAS (Tony's Managed Operating System) is a operating system written in C# using the COSMOS framework.");
+ var progs = shell.Programs;
+ foreach (var commands in progs.Keys)
+ Console.WriteLine(commands);
+
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Tomas.Kernel.Legacy/Shell.cs b/src/Tomas.Kernel.Legacy/Shell.cs
new file mode 100644
index 0000000..64207a5
--- /dev/null
+++ b/src/Tomas.Kernel.Legacy/Shell.cs
@@ -0,0 +1,34 @@
+// I license this project under the GPL 3.0 license.
+// See the LICENSE file in the project root for more information.
+using System;
+using System.Collections.Generic;
+using Tomas.Common.Programs;
+using Tomas.Interface;
+using Tomas.Kernel.Programs;
+using Sys = Cosmos.System;
+
+namespace Tomas.Kernel
+{
+ public class Shell : IShell
+ {
+ const char SYMBOL = '$';
+
+ public Dictionary Programs => new Dictionary()
+ {
+ {"about", new About()},
+ {"fensay", new FenSay()},
+ {"clear", new Clear()},
+ {"commands", new Commands()}
+ };
+
+ public string ReadLine
+ {
+ get
+ {
+ Console.Write(SYMBOL);
+ var readl = Console.ReadLine();
+ return readl;
+ }
+ }
+ }
+}
diff --git a/src/Tomas.Kernel/TomFS.cs b/src/Tomas.Kernel.Legacy/TomFS.cs
similarity index 97%
rename from src/Tomas.Kernel/TomFS.cs
rename to src/Tomas.Kernel.Legacy/TomFS.cs
index 7d82d4c..52089ed 100644
--- a/src/Tomas.Kernel/TomFS.cs
+++ b/src/Tomas.Kernel.Legacy/TomFS.cs
@@ -22,7 +22,7 @@ namespace Tomas.Kernel
Console.WriteLine("Creating system files.");
fs.CreateFile($"{SYSTEM_DIR}sysinfo.txt");
Console.WriteLine("Setting system preferences.");
- File.WriteAllText($"{SYSTEM_DIR}sysinfo.txt", $"{OSConsts.NAME}, {OSConsts.VersionGit}");
+ File.WriteAllText($"{SYSTEM_DIR}sysinfo.txt", $"{ComConsts.NAME}, {ComConsts.VersionGit}");
Console.WriteLine("File system loaded sucesfully.");
var intro = File.ReadAllText($"{SYSTEM_DIR}sysinfo.txt");
Console.WriteLine(intro);
diff --git a/src/Tomas.Kernel/Tomas.Kernel.csproj b/src/Tomas.Kernel.Legacy/Tomas.Kernel.Legacy.csproj
similarity index 96%
rename from src/Tomas.Kernel/Tomas.Kernel.csproj
rename to src/Tomas.Kernel.Legacy/Tomas.Kernel.Legacy.csproj
index e2d0ba2..38b2011 100644
--- a/src/Tomas.Kernel/Tomas.Kernel.csproj
+++ b/src/Tomas.Kernel.Legacy/Tomas.Kernel.Legacy.csproj
@@ -1,7 +1,7 @@
- netcoreapp2.0
+ net6.0
cosmos
True
ELF
diff --git a/src/Tomas.Terminal/Tomas.Terminal.csproj b/src/Tomas.Terminal/Tomas.Terminal.csproj
index a68cb21..31fe113 100644
--- a/src/Tomas.Terminal/Tomas.Terminal.csproj
+++ b/src/Tomas.Terminal/Tomas.Terminal.csproj
@@ -2,7 +2,7 @@
Exe
- netcoreapp3.1
+ net6.0
8
warnings