Cosmos/source2/Users/Kudzu/Breakpoints/BreakpointsOS.cs
mterwoord_cp 7ea9f2a15e
2013-02-16 10:16:02 +00:00

243 lines
7.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sys = Cosmos.System;
using Cosmos.Debug.Kernel;
using Cosmos.Common.Extensions;
using Cosmos.Hardware.BlockDevice;
using FAT = Cosmos.System.Filesystem.FAT;
namespace Kudzu.BreakpointsKernel {
public class BreakpointsOS : Sys.Kernel {
public BreakpointsOS() {
ClearScreen = false;
}
protected override void Run() {
Test xTest;
var xATA = new Cosmos.Hardware.BlockDevice.AtaPio(Cosmos.Core.Global.BaseIOGroups.ATA1
, Cosmos.Hardware.BlockDevice.Ata.ControllerIdEnum.Primary
, Cosmos.Hardware.BlockDevice.Ata.BusPositionEnum.Master);
UInt64 xBlockSize = xATA.BlockSize;
Console.WriteLine("Running FieldInitTest");
xTest = new FieldInitTest();
xTest.Run();
Console.WriteLine("Running NullableTest");
xTest = new NullableTest();
xTest.Run();
Console.WriteLine("Running Int64Test");
xTest = new Int64Test();
xTest.Run();
Console.WriteLine("Running Trace1");
Trace1();
Console.WriteLine("Running TestSB");
TestSB();
Console.WriteLine("Running TestStringCtor");
TestStringCtor();
Console.WriteLine("Running TestCompare");
TestCompare();
Console.WriteLine("Running TestATA");
TestATA();
Console.WriteLine("Press enter.");
Console.ReadLine();
Stop();
}
protected override void BeforeRun() {
Console.WriteLine("Cosmos boot complete. KudzuPlayground");
}
protected void TestSB() {
if (String.Empty == null)
{
Console.WriteLine("String.Empty is not even assigned!");
return;
}
Console.Write("String.Empty.Length: ");
Console.WriteLine(String.Empty.Length);
Console.Write("\"Test\".Length: ");
Console.WriteLine("Test".Length);
var xSB = new StringBuilder();
xSB.Append("Hello");
xSB.Append("Hello");
var xDisplay = xSB.ToString();
Console.WriteLine(xDisplay.Length);
Console.WriteLine("First char: " + xSB[0]);
Console.WriteLine(xDisplay);
}
void Trace1() {
int x = 4;
Trace2();
int y = 5;
int z = 6;
}
void Trace2() {
int x2 = 4;
Trace3();
int y2 = 5;
int z2 = 6;
}
void Trace3() {
int x3 = 4;
int y3 = 5;
int z3 = 6;
}
void TestCompare() {
UInt32 x = UInt32.MaxValue;
int y = 0;
if (y >= x) {
Console.WriteLine("Compare failed.");
} else {
Console.WriteLine("Compare OK.");
}
}
void TestStringCtor() {
char[] xChars = new char[5];
xChars[0] = 'A';
xChars[1] = 'B';
xChars[2] = 'C';
xChars[3] = 'D';
xChars[4] = 'E';
var xString = new string(xChars, 0, 3);
Console.WriteLine(xString);
Console.WriteLine(xString.Length);
}
protected void TestATA()
{
try
{
Console.WriteLine();
Console.WriteLine("Block devices found: " + BlockDevice.Devices.Count);
AtaPio xATA = null;
for (int i = 0; i < BlockDevice.Devices.Count; i++)
{
var xDevice = BlockDevice.Devices[i];
if (xDevice is AtaPio)
{
xATA = (AtaPio)xDevice;
}
}
Console.WriteLine("--------------------------");
Console.WriteLine("Type: " + (xATA.DriveType == AtaPio.SpecLevel.ATA ? "ATA" : "ATAPI"));
Console.WriteLine("Serial No: " + xATA.SerialNo);
Console.WriteLine("Firmware Rev: " + xATA.FirmwareRev);
Console.WriteLine("Model No: " + xATA.ModelNo);
Console.WriteLine("Block Size: " + xATA.BlockSize + " bytes");
Console.WriteLine("Size: " + xATA.BlockCount * xATA.BlockSize / 1024 / 1024 + " MB");
//Partition xPartition = null;
//for (int i = 0; i < BlockDevice.Devices.Count; i++)
//{
// var xDevice = BlockDevice.Devices[i];
// if (xDevice is Partition)
// {
// xPartition = (Partition)xDevice;
// }
//}
//var xFS = new FAT.FatFileSystem(xPartition);
//Sys.Filesystem.FileSystem.AddMapping("C", xFS);
//Console.WriteLine();
//Console.WriteLine("Root directory");
//var xListing = xFS.GetRoot();
//FAT.Listing.FatFile xRootFile = null;
//FAT.Listing.FatFile xKudzuFile = null;
//for (int i = 0; i < xListing.Count; i++)
//{
// var xItem = xListing[i];
// if (xItem is Sys.Filesystem.Listing.Directory)
// {
// Console.WriteLine("<" + xListing[i].Name + ">");
// }
// else if (xItem is Sys.Filesystem.Listing.File)
// {
// Console.WriteLine();
// Console.WriteLine(xListing[i].Name);
// Console.WriteLine(xListing[i].Size);
// if (xListing[i].Name == "Root.txt")
// {
// xRootFile = (FAT.Listing.FatFile)xListing[i];
// }
// else if (xListing[i].Name == "Kudzu.txt")
// {
// xKudzuFile = (FAT.Listing.FatFile)xListing[i];
// }
// }
//}
//{
// var xStream = new Sys.Filesystem.FAT.FatStream(xRootFile);
// var xData = new byte[xRootFile.Size];
// xStream.Read(xData, 0, (int)xRootFile.Size);
// var xText = Encoding.ASCII.GetString(xData);
// Console.WriteLine(xText);
//}
//{
// Console.WriteLine();
// Console.WriteLine("StreamReader");
// var xStream = new Sys.Filesystem.FAT.FatStream(xRootFile);
// var xReader = new System.IO.StreamReader(xStream);
// string xText = xReader.ReadToEnd();
// Console.WriteLine(xText);
//}
//var xKudzuStream = new Sys.Filesystem.FAT.FatStream(xKudzuFile);
//var xKudzuData = new byte[xKudzuFile.Size];
//xKudzuStream.Read(xKudzuData, 0, (int)xKudzuFile.Size);
//string xLower = "Hello";
//Console.WriteLine(xLower.ToUpper());
//Console.WriteLine(xLower.ToLower());
//var xFile = new System.IO.FileStream(@"c:\Root.txt", System.IO.FileMode.Open);
//int dummy = 42;
//var xWrite = new byte[512];
//for (int i = 0; i < 512; i++)
//{
// xWrite[i] = (byte)i;
//}
//xATA.WriteBlock(0, 1, xWrite);
//var xRead = xATA.NewBlockArray(1);
//xATA.ReadBlock(0, 1, xRead);
//string xDisplay = "";
//for (int i = 0; i < 512; i++)
//{
// xDisplay = xDisplay + xRead[i].ToHex();
//}
//Console.WriteLine(xDisplay);
}
catch (Exception e)
{
Console.WriteLine("Exception: " + e.Message);
Stop();
}
}
protected override void AfterRun() {
Console.Write("Done");
Console.ReadLine();
}
}
}