diff --git a/source/Cosmos.sln b/source/Cosmos.sln index 859da0130..cec230e0c 100644 --- a/source/Cosmos.sln +++ b/source/Cosmos.sln @@ -88,7 +88,7 @@ Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "Docs", "..\Docs", "{67E7DEF Release.AspNetCompiler.ForceOverwrite = "true" Release.AspNetCompiler.FixedNames = "false" Release.AspNetCompiler.Debug = "False" - VWDPort = "39181" + VWDPort = "35549" EndProjectSection EndProject Project("{471EC4BB-E47E-4229-A789-D1F5F83B52D4}") = "Kudzu.Breakpoints", "..\source2\Users\Kudzu\Breakpoints\Kudzu.Breakpoints.Cosmos", "{E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}" diff --git a/source2/IL2CPU/Cosmos.IL2CPU/AppAssembler.cs b/source2/IL2CPU/Cosmos.IL2CPU/AppAssembler.cs index 03fe8a533..25f0626f5 100644 --- a/source2/IL2CPU/Cosmos.IL2CPU/AppAssembler.cs +++ b/source2/IL2CPU/Cosmos.IL2CPU/AppAssembler.cs @@ -854,6 +854,8 @@ namespace Cosmos.IL2CPU { new Push { DestinationReg = Registers.EBP }; new Mov { DestinationReg = Registers.EBP, SourceReg = Registers.ESP }; new Mov { DestinationReg = Registers.EAX, SourceRef = Cosmos.Assembler.ElementReference.New(ILOp.GetTypeIDLabel(typeof(String))), SourceIsIndirect = true }; + new Mov { DestinationRef = ElementReference.New("static_field__System_String_Empty"), DestinationIsIndirect = true, SourceRef = ElementReference.New(X86.IL.LdStr.GetContentsArrayName("")) }; + foreach (var xDataMember in Assembler.DataMembers) { if (!xDataMember.Name.StartsWith("StringLiteral")) { continue; diff --git a/source2/Kernel/System/Cosmos.System/Kernel.cs b/source2/Kernel/System/Cosmos.System/Kernel.cs index 5c6ff2415..d40326531 100644 --- a/source2/Kernel/System/Cosmos.System/Kernel.cs +++ b/source2/Kernel/System/Cosmos.System/Kernel.cs @@ -22,6 +22,11 @@ namespace Cosmos.System { } mStarted = true; + if (String.Empty == null) + { + throw new Exception("Compiler didn't initialize System.String.Empty!"); + } + Global.Dbg.Send("HW Bootstrap Init"); Hardware.Bootstrap.Init(); diff --git a/source2/Users/Kudzu/Breakpoints/BreakpointsOS.cs b/source2/Users/Kudzu/Breakpoints/BreakpointsOS.cs index adaf1e175..060b3470c 100644 --- a/source2/Users/Kudzu/Breakpoints/BreakpointsOS.cs +++ b/source2/Users/Kudzu/Breakpoints/BreakpointsOS.cs @@ -22,20 +22,28 @@ namespace Kudzu.BreakpointsKernel { , 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(); - TestSB(); + Console.WriteLine("Running TestSB"); + TestSB(); + Console.WriteLine("Running TestStringCtor"); TestStringCtor(); + Console.WriteLine("Running TestCompare"); TestCompare(); - + + Console.WriteLine("Running TestATA"); TestATA(); Console.WriteLine("Press enter."); @@ -44,10 +52,19 @@ namespace Kudzu.BreakpointsKernel { } protected override void BeforeRun() { - Console.WriteLine("Cosmos boot complete."); + 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"); diff --git a/source2/Users/Kudzu/Breakpoints/Cosmos.bxrc b/source2/Users/Kudzu/Breakpoints/Cosmos.bxrc new file mode 100644 index 000000000..e69de29bb diff --git a/source2/Users/Kudzu/Breakpoints/Kudzu.Breakpoints.Cosmos b/source2/Users/Kudzu/Breakpoints/Kudzu.Breakpoints.Cosmos index af238798d..edd313a32 100644 --- a/source2/Users/Kudzu/Breakpoints/Kudzu.Breakpoints.Cosmos +++ b/source2/Users/Kudzu/Breakpoints/Kudzu.Breakpoints.Cosmos @@ -18,19 +18,19 @@ bin\Debug\ MicrosoftNET False - False + True Source User PXE Player - false - Player + False + Workstation ISO ISO VMware True - + All PXE None False @@ -60,13 +60,13 @@ True Source - Player + Workstation bin\Debug\ MicrosoftNET False - - False - false + All + True + False ISO None False @@ -123,7 +123,6 @@ False False False - true @@ -132,13 +131,101 @@ MicrosoftNET False Source - False + True Workstation False - Cosmos + All False + VMware + Guess + Use VMware Player or Workstation to deploy and debug. + ISO + VMware + False + True + Pipe: Cosmos\Serial + 192.168.43.1 + Serial: COM3 + Workstation + User 001 + Creates a bootable ISO image which can be burned to a DVD. After running the selected project, an explorer window will open containing the ISO file. The ISO file can then be burned to a CD or DVD and used to boot a physical or virtual system. + ISO + None + False + Source + 192.168.43.1 + Serial: COM3 + Player + bin\Debug\ + MicrosoftNET + False + False + false + Guess + Makes a USB device such as a flash drive or external hard disk bootable. + USB + None + False + False + Source + Pipe: Cosmos\Serial + 192.168.43.1 + Serial: COM3 + Player + bin\Debug\ + MicrosoftNET + False + False + false + PXE with Slave (Kudzu) + Creates a PXE setup and hosts a DCHP and TFTP server to deploy directly to physical hardware. Allows debugging with a serial cable. + PXE + None + False + Source + 192.168.43.1 + Serial: COM3 + Player + bin\Debug\ + MicrosoftNET + False + False + false + Guess + Use VMware Player or Workstation to deploy and debug. + ISO + VMware + False + True + Source + Pipe: Cosmos\Serial + 192.168.43.1 + Serial: COM3 + Workstation + bin\Debug\ + MicrosoftNET + False + True + False + PXE with Slave (Kudzu) + Creates a PXE setup and hosts a DCHP and TFTP server to deploy directly to physical hardware. Allows debugging with a serial cable. + PXE + Slave + False + True + Source + Serial: COM1 + 192.168.43.1 + Serial: COM3 + Player + bin\Debug\ + MicrosoftNET + False + False + false + All @@ -168,6 +255,11 @@ Cosmos.Debug.Kernel.Plugs.dll + + + Content + +