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
+
+