/// <summary> /// Main /// </summary> public static void Main() { Kernel.x86.Kernel.Setup(); Console = ConsoleManager.Controller.Boot; Console.Clear(); Console.Goto(0, 0); //IDT.SetInterruptHandler(ProcessInterrupt); Console.ScrollRow = 23; Console.Color = ScreenColor.White; Console.BackgroundColor = ScreenColor.Green; Debug = ConsoleManager.Controller.Boot; Console.Write(" MOSA OS Version 1.5 - Compiler Version 1.5"); FillLine(); Console.Color = ScreenColor.White; Console.BackgroundColor = ScreenColor.Black; Console.WriteLine("> Initializing hardware abstraction layer..."); var hardware = new HAL.Hardware(); var DeviceManager = Setup.Initialize(PlatformArchitecture.X86, hardware); Console.WriteLine("> Registering device drivers..."); DeviceDriver.Setup.Register(DeviceManager); Console.WriteLine("> Starting devices..."); DeviceDriver.Setup.Start(DeviceManager); Console.Write("> Probing for ISA devices..."); var isaDevices = DeviceManager.GetAllDevices(); Console.WriteLine("[Completed: " + isaDevices.Count.ToString() + " found]"); foreach (var device in isaDevices) { Console.Write(" "); Bullet(ScreenColor.Yellow); Console.Write(" "); InBrackets(device.Name, ScreenColor.White, ScreenColor.Green); Console.WriteLine(); } Console.Write("> Probing for PCI devices..."); //Setup.StartPCIDevices(); var pciDevices = DeviceManager.GetDevices <DeviceSystem.PCI.IPCIDevice>(DeviceStatus.Available); Console.WriteLine("[Completed: " + pciDevices.Count.ToString() + " found]"); foreach (var device in pciDevices) { var pciDevice = device.DeviceDriver as DeviceSystem.PCI.IPCIDevice; Console.Write(" "); Bullet(ScreenColor.Yellow); Console.Write(" "); InBrackets(device.Name + ": " + pciDevice.VendorID.ToString("x") + ":" + pciDevice.DeviceID.ToString("x") + " " + pciDevice.SubSystemID.ToString("x") + ":" + pciDevice.SubVendorID.ToString("x") + " (" + pciDevice.Function.ToString("x") + ":" + pciDevice.ClassCode.ToString("x") + ":" + pciDevice.SubClassCode.ToString("x") + ":" + pciDevice.ProgIF.ToString("x") + ":" + pciDevice.RevisionID.ToString("x") + ")", ScreenColor.White, ScreenColor.Green); Console.WriteLine(); } Console.Write("> Probing for disk controllers..."); var diskcontrollers = DeviceManager.GetDevices <IDiskControllerDevice>(); Console.WriteLine("[Completed: " + diskcontrollers.Count.ToString() + " found]"); foreach (var device in diskcontrollers) { Console.Write(" "); Bullet(ScreenColor.Yellow); Console.Write(" "); InBrackets(device.Name, ScreenColor.White, ScreenColor.Green); Console.WriteLine(); } Console.Write("> Probing for disks..."); var disks = DeviceManager.GetDevices <IDiskDevice>(); Console.WriteLine("[Completed: " + disks.Count.ToString() + " found]"); foreach (var disk in disks) { Console.Write(" "); Bullet(ScreenColor.Yellow); Console.Write(" "); InBrackets(disk.Name, ScreenColor.White, ScreenColor.Green); Console.Write(" " + (disk.DeviceDriver as IDiskDevice).TotalBlocks.ToString() + " blocks"); Console.WriteLine(); } var partitionManager = new PartitionManager(DeviceManager); partitionManager.CreatePartitionDevices(); Console.Write("> Finding partitions..."); var partitions = DeviceManager.GetDevices <IPartitionDevice>(); Console.WriteLine("[Completed: " + partitions.Count.ToString() + " found]"); foreach (var partition in partitions) { Console.Write(" "); Bullet(ScreenColor.Yellow); Console.Write(" "); InBrackets(partition.Name, ScreenColor.White, ScreenColor.Green); Console.Write(" " + (partition.DeviceDriver as IPartitionDevice).BlockCount.ToString() + " blocks"); Console.WriteLine(); } Console.Write("> Finding file systems..."); foreach (var partition in partitions) { var fat = new FatFileSystem(partition.DeviceDriver as IPartitionDevice); if (fat.IsValid) { Console.WriteLine("Found a FAT file system!"); const string filename = "TEST.TXT"; var location = fat.FindEntry(filename); if (location.IsValid) { Console.Write("Found: " + filename); var fatFileStream = new FatFileStream(fat, location); uint len = (uint)fatFileStream.Length; Console.WriteLine(" - Length: " + len.ToString()); Console.Write("Reading File: "); for (; ;) { int i = fatFileStream.ReadByte(); if (i < 0) { break; } Console.Write((char)i); } Console.WriteLine(); } } } // Get StandardKeyboard var standardKeyboards = DeviceManager.GetDevices("StandardKeyboard"); if (standardKeyboards.Count == 0) { Console.WriteLine("No Keyboard!"); ForeverLoop(); } var standardKeyboard = standardKeyboards[0].DeviceDriver as IKeyboardDevice; Debug = ConsoleManager.Controller.Debug; // setup keymap var keymap = new US(); // setup keyboard (state machine) var keyboard = new DeviceSystem.Keyboard(standardKeyboard, keymap); // setup app manager var manager = new AppManager(Console, keyboard); IDT.SetInterruptHandler(manager.ProcessInterrupt); Logger.Log("<SELFTEST:PASSED>"); manager.Start(); }