diff --git a/Build/HyperV/Filesystem.vhdx b/Build/HyperV/Filesystem.vhdx new file mode 100644 index 000000000..bef99959c Binary files /dev/null and b/Build/HyperV/Filesystem.vhdx differ diff --git a/Setup/Cosmos.iss b/Setup/Cosmos.iss index da6274c9f..2ba3e04dd 100644 --- a/Setup/Cosmos.iss +++ b/Setup/Cosmos.iss @@ -96,6 +96,8 @@ Source: ".\Artwork\Cosmos.ico"; DestDir: "{app}"; Flags: ignoreversion uninsremo Source: ".\Artwork\XSharp\XSharp.ico"; DestDir: "{app}\XSharp\"; Flags: ignoreversion uninsremovereadonly Source: ".\source\Cosmos.Debug.DebugStub\*.xs"; DestDir: "{app}\XSharp\DebugStub\"; Flags: ignoreversion uninsremovereadonly ; VMware +Source: ".\Build\HyperV\*"; DestDir: "{app}\Build\HyperV"; Flags: ignoreversion uninsremovereadonly overwritereadonly recursesubdirs +; VMware Source: ".\Build\VMware\*"; DestDir: "{app}\Build\VMware"; Flags: ignoreversion uninsremovereadonly overwritereadonly recursesubdirs ; ISO Source: ".\Build\ISO\*"; DestDir: "{app}\Build\ISO" diff --git a/Tests/Cosmos.Compiler.Tests.Bcl/System/Collections/Generic/DictionaryTest.cs b/Tests/Cosmos.Compiler.Tests.Bcl/System/Collections/Generic/DictionaryTest.cs index 0cc29aa5e..4e23dc671 100644 --- a/Tests/Cosmos.Compiler.Tests.Bcl/System/Collections/Generic/DictionaryTest.cs +++ b/Tests/Cosmos.Compiler.Tests.Bcl/System/Collections/Generic/DictionaryTest.cs @@ -15,10 +15,27 @@ namespace Cosmos.Compiler.Tests.Bcl.System.Collections.Generic { {"echo", "ECHO"}, {"reboot", "REBOOT" }, - {"shutdown", "SHUTDOWN"} + {"shutdown", "SHUTDOWN"}, + {"integer", 500} }; - Assert.IsTrue(commands.ContainsKey("echo"), "Dictionary ContainsKey does not work"); + Assert.IsTrue(commands.ContainsKey("echo"), "Dictionary ContainsKey does not work1"); + Assert.IsFalse(commands.ContainsKey("musterror"), "Dictionary ContainsKey does not work 2"); + + + + //String test + Assert.IsTrue((string)commands["echo"] == "ECHO", "Dictionary string not work"); + commands["echo"] = "notEcho"; + Assert.IsTrue((string)commands["echo"] == "notEcho", "Dictionary string been reset not working"); + + + //Integer test + Assert.IsTrue((int)commands["integer"] == 500, "Dictionary integer not working"); + commands["integer"] = 321; + Assert.IsTrue((int)commands["integer"] == 321, "Dictionary integer been reset not working"); + + } } } diff --git a/Tests/Cosmos.TestRunner.Core/DefaultEngineConfiguration.cs b/Tests/Cosmos.TestRunner.Core/DefaultEngineConfiguration.cs index 73f691390..fa1253b31 100644 --- a/Tests/Cosmos.TestRunner.Core/DefaultEngineConfiguration.cs +++ b/Tests/Cosmos.TestRunner.Core/DefaultEngineConfiguration.cs @@ -21,6 +21,7 @@ namespace Cosmos.TestRunner.Core // If you want to test only specific platforms, add them to the list, like next line. By default, all platforms are run. engine.RunTargets.Add(RunTargetEnum.Bochs); //engine.RunTargets.Add(RunTargetEnum.VMware); + //engine.RunTargets.Add(RunTargetEnum.HyperV); // If you're working on the compiler (or other lower parts), you can choose to run the compiler in process // one thing to keep in mind though, is that this only works with 1 kernel at a time! diff --git a/Tests/Cosmos.TestRunner.Core/Engine.HyperV.cs b/Tests/Cosmos.TestRunner.Core/Engine.HyperV.cs new file mode 100644 index 000000000..26423854f --- /dev/null +++ b/Tests/Cosmos.TestRunner.Core/Engine.HyperV.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using System.IO; + +using Cosmos.Build.Common; +using Cosmos.Debug.DebugConnectors; +using Cosmos.Debug.Hosts; + +namespace Cosmos.TestRunner.Core +{ + partial class Engine + { + private void RunIsoInHyperV(string iso, string harddisk) + { + if (!File.Exists(harddisk)) + { + throw new FileNotFoundException("Harddisk file not found!", harddisk); + } + + var xParams = new Dictionary(); + + xParams.Add("ISOFile", iso); + xParams.Add(BuildPropertyNames.VisualStudioDebugPortString, "Pipe: CosmosSerial"); + + var xDebugConnector = new DebugConnectorPipeClient(DebugConnectorPipeClient.DefaultCosmosPipeName); + InitializeDebugConnector(xDebugConnector); + + var xHyperV = new HyperV(xParams, RunWithGDB, harddisk); + xHyperV.OnShutDown = (a, b) => + { + mKernelRunning = false; + }; + + HandleRunning(xDebugConnector, xHyperV); + } + } +} diff --git a/Tests/Cosmos.TestRunner.Core/Engine.Run.cs b/Tests/Cosmos.TestRunner.Core/Engine.Run.cs index d2387a627..08611bd9a 100644 --- a/Tests/Cosmos.TestRunner.Core/Engine.Run.cs +++ b/Tests/Cosmos.TestRunner.Core/Engine.Run.cs @@ -29,9 +29,21 @@ namespace Cosmos.TestRunner.Core RunTask("Ld", () => RunLd(xTempObjectFile, xObjectFile)); RunTask("ExtractMapFromElfFile", () => RunExtractMapFromElfFile(mBaseWorkingDirectory, xObjectFile)); } - var xHarddiskPath = Path.Combine(mBaseWorkingDirectory, "Harddisk.vmdk"); - var xOriginalHarddiskPath = Path.Combine(GetCosmosUserkitFolder(), "Build", "VMware", "Workstation", "Filesystem.vmdk"); - File.Copy(xOriginalHarddiskPath, xHarddiskPath); + + string xHarddiskPath; + if (configuration.RunTarget == RunTargetEnum.HyperV) + { + xHarddiskPath = Path.Combine(mBaseWorkingDirectory, "Harddisk.vhdx"); + var xOriginalHarddiskPath = Path.Combine(GetCosmosUserkitFolder(), "Build", "HyperV", "Filesystem.vhdx"); + File.Copy(xOriginalHarddiskPath, xHarddiskPath); + } + else + { + xHarddiskPath = Path.Combine(mBaseWorkingDirectory, "Harddisk.vmdk"); + var xOriginalHarddiskPath = Path.Combine(GetCosmosUserkitFolder(), "Build", "VMware", "Workstation", "Filesystem.vmdk"); + File.Copy(xOriginalHarddiskPath, xHarddiskPath); + } + RunTask("MakeISO", () => MakeIso(xObjectFile, xIsoFile)); switch (configuration.RunTarget) { @@ -41,6 +53,9 @@ namespace Cosmos.TestRunner.Core case RunTargetEnum.VMware: RunTask("RunISO", () => RunIsoInVMware(xIsoFile, xHarddiskPath)); break; + case RunTargetEnum.HyperV: + RunTask("RunISO", () => RunIsoInHyperV(xIsoFile, xHarddiskPath)); + break; default: throw new ArgumentOutOfRangeException("RunTarget " + configuration.RunTarget + " not implemented!"); } diff --git a/Tests/Cosmos.TestRunner.Core/Enums.cs b/Tests/Cosmos.TestRunner.Core/Enums.cs index 6eff25c76..30d8a1c05 100644 --- a/Tests/Cosmos.TestRunner.Core/Enums.cs +++ b/Tests/Cosmos.TestRunner.Core/Enums.cs @@ -3,6 +3,7 @@ public enum RunTargetEnum { Bochs, - VMware + VMware, + HyperV } } diff --git a/source/Cosmos.Build.Common/BuildProperties.cs b/source/Cosmos.Build.Common/BuildProperties.cs index 0476b8e9c..904ae3358 100644 --- a/source/Cosmos.Build.Common/BuildProperties.cs +++ b/source/Cosmos.Build.Common/BuildProperties.cs @@ -104,14 +104,13 @@ namespace Cosmos.Build.Common Description = "Makes a USB device such as a flash drive or external hard disk bootable."; Deployment = DeploymentType.USB; Launch = LaunchType.None; - } else if (aName == "VMware") { Description = "Use VMware Player or Workstation to deploy and debug."; Deployment = DeploymentType.ISO; Launch = LaunchType.VMware; - + VisualStudioDebugPort = @"Pipe: Cosmos\Serial"; } else if (aName == "PXE") { @@ -126,6 +125,7 @@ namespace Cosmos.Build.Common Description = "Use Bochs emulator to deploy and debug."; Deployment = DeploymentType.ISO; Launch = LaunchType.Bochs; + VisualStudioDebugPort = @"Pipe: Cosmos\Serial"; } else if (aName == "IntelEdison") { @@ -133,6 +133,13 @@ namespace Cosmos.Build.Common Deployment = DeploymentType.BinaryImage; Launch = LaunchType.IntelEdison; } + else if (aName == "HyperV") + { + Description = "Use Hyper-V to deploy and debug."; + Deployment = DeploymentType.ISO; + Launch = LaunchType.HyperV; + VisualStudioDebugPort = "Pipe: CosmosSerial"; + } } public void DeleteProfile(string aPrefix) diff --git a/source/Cosmos.Build.Common/Enums.cs b/source/Cosmos.Build.Common/Enums.cs index 7ff51b999..f750a3535 100644 --- a/source/Cosmos.Build.Common/Enums.cs +++ b/source/Cosmos.Build.Common/Enums.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Reflection; -using System.ComponentModel; namespace Cosmos.Build.Common { @@ -31,6 +31,8 @@ namespace Cosmos.Build.Common Bochs, [Description("Intel Edison")] IntelEdison, + [Description("Hyper-V")] + HyperV } public enum VMwareEdition diff --git a/source/Cosmos.Debug.Common/Cosmos.Debug.Common.csproj b/source/Cosmos.Debug.Common/Cosmos.Debug.Common.csproj index 0e883e77d..8875b5772 100644 --- a/source/Cosmos.Debug.Common/Cosmos.Debug.Common.csproj +++ b/source/Cosmos.Debug.Common/Cosmos.Debug.Common.csproj @@ -18,4 +18,4 @@ - + \ No newline at end of file diff --git a/source/Cosmos.Debug.DebugConnectors/DebugConnectorPipeClient.cs b/source/Cosmos.Debug.DebugConnectors/DebugConnectorPipeClient.cs new file mode 100644 index 000000000..8ccd8ce2e --- /dev/null +++ b/source/Cosmos.Debug.DebugConnectors/DebugConnectorPipeClient.cs @@ -0,0 +1,74 @@ +using System; +using System.IO.Pipes; +using System.Runtime.InteropServices; +using System.Threading; + +namespace Cosmos.Debug.DebugConnectors +{ + /// Use a named pipe client to implement wire transfer protocol between a Debug Stub + /// hosted in a debugged Cosmos Kernel and our Debug Engine hosted in Visual Studio. + /// Hyper-V provides a pipe server to expose guest serial ports. + public class DebugConnectorPipeClient : DebugConnectorStreamWithoutTimeouts + { + // private AutoResetEvent mWaitConnectEvent = new AutoResetEvent(false); + private NamedPipeClientStream mPipe; + + public const string DefaultCosmosPipeName = "CosmosSerial"; + + public DebugConnectorPipeClient(string aName) + { + mPipe = new NamedPipeClientStream(".", aName, PipeDirection.InOut, PipeOptions.WriteThrough); + Start(); + } + + protected override int TryRead(byte[] buffer, int offset, int count, int timeout) + { + var xStream = mStream; + if (xStream == null) + { + return 0; + } + uint xBytesAvailable = 0; + if (PeekNamedPipe(mPipe.SafePipeHandle.DangerousGetHandle(), null, 0, IntPtr.Zero, ref xBytesAvailable, IntPtr.Zero)) + { + if (xBytesAvailable > 0) + { + return xStream.Read(buffer, offset, count); + } + } + Thread.Sleep(timeout); + if (PeekNamedPipe(mPipe.SafePipeHandle.DangerousGetHandle(), null, 0, IntPtr.Zero, ref xBytesAvailable, IntPtr.Zero)) + { + if (xBytesAvailable > 0) + { + return xStream.Read(buffer, offset, count); + } + } + return 0; + } + + public override bool IsConnected + { + get + { + return base.IsConnected && mPipe.IsConnected; + } + } + + protected override void InitializeBackground() + { + mPipe.Connect(); + mStream = mPipe; + } + + protected override bool GetIsConnectedToDebugStub() + { + return mPipe.IsConnected; + } + + [DllImport("kernel32.dll", EntryPoint = "PeekNamedPipe", SetLastError = true)] + private static extern bool PeekNamedPipe(IntPtr handle, + byte[] buffer, uint nBufferSize, IntPtr bytesRead, + ref uint bytesAvail, IntPtr BytesLeftThisMessage); + } +} diff --git a/source/Cosmos.Debug.Hosts/HyperV.cs b/source/Cosmos.Debug.Hosts/HyperV.cs new file mode 100644 index 000000000..de15bd4d9 --- /dev/null +++ b/source/Cosmos.Debug.Hosts/HyperV.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.IO; +#if false +using System.Management.Automation; +using System.Management.Automation.Runspaces; +#endif +using System.Security.Principal; + +using Cosmos.Build.Common; + +namespace Cosmos.Debug.Hosts +{ + public class HyperV : Host + { + protected string mHarddiskPath; + protected Process mProcess; + +#if false + private static bool IsProcessAdministrator => (new WindowsPrincipal(WindowsIdentity.GetCurrent())).IsInRole(WindowsBuiltInRole.Administrator); +#else + private static bool IsProcessAdministrator => true; +#endif + + public HyperV(Dictionary aParams, bool aUseGDB, string harddisk = "Filesystem.vhdx") : base(aParams, aUseGDB) + { + if (!IsProcessAdministrator) + { + throw new Exception("Visual Studio must be run as administrator for Hyper-V to work"); + } + + mHarddiskPath = Path.Combine(CosmosPaths.Build, harddisk); + } + + public override void Start() + { + CreateVirtualMachine(); + + // Target exe or file + var info = new ProcessStartInfo(@"C:\Windows\sysnative\VmConnect.exe", @"""localhost"" ""Cosmos""") + { + UseShellExecute = true + }; + + mProcess = new Process(); + mProcess.StartInfo = info; + mProcess.EnableRaisingEvents = true; + mProcess.Exited += (Object aSender, EventArgs e) => + { + OnShutDown?.Invoke(aSender, e); + }; + mProcess.Start(); + + RunPowershellScript("Start-VM -Name Cosmos"); + } + + public override void Stop() + { + RunPowershellScript("Stop-VM -Name Cosmos -TurnOff -ErrorAction Ignore"); + mProcess.Kill(); + } + + protected void CreateVirtualMachine() + { + RunPowershellScript("Stop-VM -Name Cosmos -TurnOff -ErrorAction Ignore"); + + RunPowershellScript("Remove-VM -Name Cosmos -Force -ErrorAction Ignore"); + RunPowershellScript("New-VM -Name Cosmos -MemoryStartupBytes 268435456 -BootDevice CD"); + if (!File.Exists(mHarddiskPath)) + { + RunPowershellScript($@"New-VHD -SizeBytes 268435456 -Dynamic -Path ""{mHarddiskPath}"""); + } + + RunPowershellScript($@"Add-VMHardDiskDrive -VMName Cosmos -ControllerNumber 0 -ControllerLocation 0 -Path ""{mHarddiskPath}"""); + RunPowershellScript($@"Set-VMDvdDrive -VMName Cosmos -ControllerNumber 1 -ControllerLocation 0 -Path ""{mParams["ISOFile"]}"""); + RunPowershellScript(@"Set-VMComPort -VMName Cosmos -Path \\.\pipe\CosmosSerial -Number 1"); + } + + private static void RunPowershellScript(string text) + { + // Workaround + ProcessStartInfo xStartInfo = new ProcessStartInfo("powershell"); + xStartInfo.Arguments = text; + + var xProcess = Process.Start(xStartInfo); + xProcess.WaitForExit(); + +#if false + using (Runspace runspace = RunspaceFactory.CreateRunspace()) + { + runspace.Open(); + + Pipeline pipeline = runspace.CreatePipeline(); + + pipeline.Commands.AddScript(text); + pipeline.Commands.Add("Out-String"); + + Collection results = pipeline.Invoke(); + foreach (PSObject obj in results) + { + System.Diagnostics.Debug.WriteLine(obj.ToString()); + } + } +#endif + } + } +} diff --git a/source/Cosmos.IL2CPU/ILOpCodes/OpNone.cs b/source/Cosmos.IL2CPU/ILOpCodes/OpNone.cs index acf89bb9f..a14506de2 100644 --- a/source/Cosmos.IL2CPU/ILOpCodes/OpNone.cs +++ b/source/Cosmos.IL2CPU/ILOpCodes/OpNone.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using System.Reflection; using System.Reflection.Metadata; @@ -143,6 +143,8 @@ namespace Cosmos.IL2CPU.ILOpCodes case Code.Ldelem_U1: case Code.Ldelem_U2: case Code.Ldelem_U4: + case Code.Ldelem_R4: + case Code.Ldelem_R8: return 2; case Code.Ldnull: return 0; @@ -276,7 +278,9 @@ namespace Cosmos.IL2CPU.ILOpCodes case Code.Ldelem_U1: case Code.Ldelem_U2: case Code.Ldelem_U4: - return 1; + case Code.Ldelem_R4: + case Code.Ldelem_R8: + return 1; case Code.Ldnull: return 1; case Code.Dup: @@ -470,10 +474,15 @@ namespace Cosmos.IL2CPU.ILOpCodes case Code.Ldelem_U4: StackPushTypes[0] = typeof(uint); return; + case Code.Ldelem_R4: + StackPushTypes[0] = typeof(float); + return; + case Code.Ldelem_R8: + StackPushTypes[0] = typeof(double); + return; case Code.Ldnull: StackPushTypes[0] = typeof(NullRef); return; - case Code.Ldind_I: StackPushTypes[0] = typeof(IntPtr); return; diff --git a/source/Cosmos.System/Keyboard/ConsoleKeyExExtensions.cs b/source/Cosmos.System/Keyboard/ConsoleKeyExExtensions.cs index b966cf985..06aed3323 100644 --- a/source/Cosmos.System/Keyboard/ConsoleKeyExExtensions.cs +++ b/source/Cosmos.System/Keyboard/ConsoleKeyExExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace Cosmos.System { @@ -142,6 +142,7 @@ namespace Cosmos.System case ConsoleKeyEx.Sleep: return ConsoleKey.Sleep; case ConsoleKeyEx.BiggerThan: + case ConsoleKeyEx.ExclamationPoint: case ConsoleKeyEx.Period: return ConsoleKey.OemPeriod; case ConsoleKeyEx.LowerThan: @@ -149,10 +150,36 @@ namespace Cosmos.System return ConsoleKey.OemComma; case ConsoleKeyEx.NumPeriod: return ConsoleKey.Decimal; - case ConsoleKeyEx.NumPlus: - return ConsoleKey.Add; case ConsoleKeyEx.NumEnter: return ConsoleKey.Enter; + case ConsoleKeyEx.Num0: + return ConsoleKey.D0; + case ConsoleKeyEx.Num1: + return ConsoleKey.D1; + case ConsoleKeyEx.Num2: + return ConsoleKey.D2; + case ConsoleKeyEx.Num3: + return ConsoleKey.D3; + case ConsoleKeyEx.Num4: + return ConsoleKey.D4; + case ConsoleKeyEx.Num5: + return ConsoleKey.D5; + case ConsoleKeyEx.Num6: + return ConsoleKey.D6; + case ConsoleKeyEx.Num7: + return ConsoleKey.D7; + case ConsoleKeyEx.Num8: + return ConsoleKey.D8; + case ConsoleKeyEx.Num9: + return ConsoleKey.D9; + case ConsoleKeyEx.NumDivide: + return ConsoleKey.Divide; + case ConsoleKeyEx.NumMultiply: + return ConsoleKey.Multiply; + case ConsoleKeyEx.NumMinus: + return ConsoleKey.OemMinus; + case ConsoleKeyEx.NumPlus: + return ConsoleKey.OemPlus; case ConsoleKeyEx.Backslash: return ConsoleKey.Oem5; case ConsoleKeyEx.LBracket: @@ -175,6 +202,10 @@ namespace Cosmos.System //TODO: .Net Core //case ConsoleKeyEx.OEM102: // return ConsoleKey.Oem102; + //case ConsoleKeyEx.LWin: + // return ConsoleKey.LeftWindows; + //case ConsoleKeyEx.RWin: + // return ConsoleKey.RightWindows; default: throw new Exception("KeyEx not implemented!"); } diff --git a/source/Cosmos.VS.DebugEngine/AD7.Impl/AD7Engine.cs b/source/Cosmos.VS.DebugEngine/AD7.Impl/AD7Engine.cs index 8e8bb6bd2..124b45f00 100644 --- a/source/Cosmos.VS.DebugEngine/AD7.Impl/AD7Engine.cs +++ b/source/Cosmos.VS.DebugEngine/AD7.Impl/AD7Engine.cs @@ -1,12 +1,13 @@ using System; using System.Collections.Generic; using System.Runtime.InteropServices; +using Microsoft.VisualStudio; +using Microsoft.VisualStudio.Debugger.Interop; + using Cosmos.Debug.Common; using Cosmos.VS.DebugEngine.AD7.Definitions; using Cosmos.VS.DebugEngine.Engine.Impl; using Cosmos.VS.DebugEngine.Properties; -using Microsoft.VisualStudio; -using Microsoft.VisualStudio.Debugger.Interop; namespace Cosmos.VS.DebugEngine.AD7.Impl { diff --git a/source/Cosmos.VS.DebugEngine/AD7.Impl/AD7Process.cs b/source/Cosmos.VS.DebugEngine/AD7.Impl/AD7Process.cs index 67aedb94c..0d8e74a21 100644 --- a/source/Cosmos.VS.DebugEngine/AD7.Impl/AD7Process.cs +++ b/source/Cosmos.VS.DebugEngine/AD7.Impl/AD7Process.cs @@ -5,18 +5,18 @@ using System.IO; using System.Linq; using System.Text; using System.Threading; -using Cosmos.Debug.DebugConnectors; -using Cosmos.Debug.Symbols; -using Cosmos.VS.DebugEngine.Engine.Impl; -using Cosmos.VS.DebugEngine.Utilities; using Microsoft.Internal.VisualStudio.PlatformUI; using Microsoft.VisualStudio; using Microsoft.VisualStudio.Debugger.Interop; -using Label = Cosmos.Debug.Symbols.Label; using Cosmos.Build.Common; using Cosmos.Debug.Common; +using Cosmos.Debug.DebugConnectors; using Cosmos.Debug.Hosts; +using Cosmos.Debug.Symbols; +using Cosmos.VS.DebugEngine.Engine.Impl; using Cosmos.VS.DebugEngine.Properties; +using Cosmos.VS.DebugEngine.Utilities; +using Label = Cosmos.Debug.Symbols.Label; namespace Cosmos.VS.DebugEngine.AD7.Impl { @@ -316,7 +316,14 @@ namespace Cosmos.VS.DebugEngine.AD7.Impl switch (xPortType) { case "pipe:": - mDbgConnector = new DebugConnectorPipeServer(xPortParam); + if (xLaunch == "HyperV") + { + mDbgConnector = new DebugConnectorPipeClient(xPortParam); + } + else + { + mDbgConnector = new DebugConnectorPipeServer(xPortParam); + } break; #if SERIAL_PORT case "serial:": @@ -481,6 +488,9 @@ namespace Cosmos.VS.DebugEngine.AD7.Impl case LaunchType.IntelEdison: mHost = new IntelEdison(mDebugInfo, false); break; + case LaunchType.HyperV: + mHost = new HyperV(mDebugInfo, false); + break; default: throw new Exception("Invalid Launch value: '" + mLaunch + "'."); } diff --git a/source/Cosmos.VS.ProjectSystem/ProfilePresets.cs b/source/Cosmos.VS.ProjectSystem/ProfilePresets.cs index 03a976625..a56c6c1f3 100644 --- a/source/Cosmos.VS.ProjectSystem/ProfilePresets.cs +++ b/source/Cosmos.VS.ProjectSystem/ProfilePresets.cs @@ -19,6 +19,7 @@ namespace Cosmos.VS.ProjectSystem Add("Bochs", "Bochs"); } Add("IntelEdison", "Intel Edison Serial boot"); + Add("HyperV", "Hyper-V"); } } } \ No newline at end of file diff --git a/source/Cosmos.VS.ProjectSystem/PropertyPages/CosmosPage.Designer.cs b/source/Cosmos.VS.ProjectSystem/PropertyPages/CosmosPage.Designer.cs index cbfa68408..750558616 100644 --- a/source/Cosmos.VS.ProjectSystem/PropertyPages/CosmosPage.Designer.cs +++ b/source/Cosmos.VS.ProjectSystem/PropertyPages/CosmosPage.Designer.cs @@ -96,6 +96,7 @@ this.cmboSlavePort = new System.Windows.Forms.ComboBox(); this.label6 = new System.Windows.Forms.Label(); this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); + this.tabHyperV = new System.Windows.Forms.TabPage(); this.panel1.SuspendLayout(); this.TabControl1.SuspendLayout(); this.tabProfile.SuspendLayout(); @@ -117,9 +118,9 @@ this.tabISO.SuspendLayout(); this.tabSlave.SuspendLayout(); this.SuspendLayout(); - // + // // panel1 - // + // this.panel1.Controls.Add(this.lablCurrentProfile); this.panel1.Controls.Add(this.label11); this.panel1.Dock = System.Windows.Forms.DockStyle.Top; @@ -127,27 +128,27 @@ this.panel1.Name = "panel1"; this.panel1.Size = new System.Drawing.Size(635, 43); this.panel1.TabIndex = 3; - // + // // lablCurrentProfile - // + // this.lablCurrentProfile.AutoSize = true; this.lablCurrentProfile.Location = new System.Drawing.Point(99, 17); this.lablCurrentProfile.Name = "lablCurrentProfile"; this.lablCurrentProfile.Size = new System.Drawing.Size(41, 13); this.lablCurrentProfile.TabIndex = 1; this.lablCurrentProfile.Text = "label12"; - // + // // label11 - // + // this.label11.AutoSize = true; this.label11.Location = new System.Drawing.Point(17, 17); this.label11.Name = "label11"; this.label11.Size = new System.Drawing.Size(76, 13); this.label11.TabIndex = 0; this.label11.Text = "Current Profile:"; - // + // // TabControl1 - // + // this.TabControl1.Controls.Add(this.tabProfile); this.TabControl1.Controls.Add(this.tabCompile); this.TabControl1.Controls.Add(this.tabAssembler); @@ -155,6 +156,7 @@ this.TabControl1.Controls.Add(this.tabDeployment); this.TabControl1.Controls.Add(this.tabLaunch); this.TabControl1.Controls.Add(this.tabVMware); + this.TabControl1.Controls.Add(this.tabHyperV); this.TabControl1.Controls.Add(this.tabBochs); this.TabControl1.Controls.Add(this.tabPXE); this.TabControl1.Controls.Add(this.tabUSB); @@ -167,9 +169,9 @@ this.TabControl1.SelectedIndex = 0; this.TabControl1.Size = new System.Drawing.Size(635, 512); this.TabControl1.TabIndex = 1; - // + // // tabProfile - // + // this.tabProfile.Controls.Add(this.lablPreset); this.tabProfile.Controls.Add(this.panel2); this.tabProfile.Controls.Add(this.lablDeployText); @@ -181,9 +183,9 @@ this.tabProfile.TabIndex = 8; this.tabProfile.Text = "Profile"; this.tabProfile.UseVisualStyleBackColor = true; - // + // // lablPreset - // + // this.lablPreset.AutoSize = true; this.lablPreset.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lablPreset.ForeColor = System.Drawing.SystemColors.HotTrack; @@ -192,9 +194,9 @@ this.lablPreset.Size = new System.Drawing.Size(247, 13); this.lablPreset.TabIndex = 7; this.lablPreset.Text = "** This is a preset. Some options are restricted."; - // + // // panel2 - // + // this.panel2.Controls.Add(this.lboxProfile); this.panel2.Controls.Add(this.toolStrip1); this.panel2.Dock = System.Windows.Forms.DockStyle.Left; @@ -202,9 +204,9 @@ this.panel2.Name = "panel2"; this.panel2.Size = new System.Drawing.Size(200, 480); this.panel2.TabIndex = 6; - // + // // lboxProfile - // + // this.lboxProfile.Dock = System.Windows.Forms.DockStyle.Fill; this.lboxProfile.FormattingEnabled = true; this.lboxProfile.Location = new System.Drawing.Point(0, 27); @@ -212,9 +214,9 @@ this.lboxProfile.Size = new System.Drawing.Size(200, 453); this.lboxProfile.Sorted = true; this.lboxProfile.TabIndex = 3; - // + // // toolStrip1 - // + // this.toolStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.butnProfileClone, @@ -225,9 +227,9 @@ this.toolStrip1.Size = new System.Drawing.Size(200, 27); this.toolStrip1.TabIndex = 2; this.toolStrip1.Text = "toolStrip1"; - // + // // butnProfileClone - // + // this.butnProfileClone.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.butnProfileClone.Image = ((System.Drawing.Image)(resources.GetObject("butnProfileClone.Image"))); this.butnProfileClone.ImageTransparentColor = System.Drawing.Color.Magenta; @@ -235,9 +237,9 @@ this.butnProfileClone.Size = new System.Drawing.Size(24, 24); this.butnProfileClone.Text = "Clone"; this.butnProfileClone.ToolTipText = "Create a new profile from an existing one."; - // + // // butnProfileDelete - // + // this.butnProfileDelete.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.butnProfileDelete.Image = ((System.Drawing.Image)(resources.GetObject("butnProfileDelete.Image"))); this.butnProfileDelete.ImageTransparentColor = System.Drawing.Color.Magenta; @@ -245,9 +247,9 @@ this.butnProfileDelete.Size = new System.Drawing.Size(24, 24); this.butnProfileDelete.Text = "Delete"; this.butnProfileDelete.ToolTipText = "Delete selected profile"; - // + // // butnProfileRename - // + // this.butnProfileRename.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.butnProfileRename.Image = ((System.Drawing.Image)(resources.GetObject("butnProfileRename.Image"))); this.butnProfileRename.ImageTransparentColor = System.Drawing.Color.Magenta; @@ -255,17 +257,17 @@ this.butnProfileRename.Size = new System.Drawing.Size(24, 24); this.butnProfileRename.Text = "Rename"; this.butnProfileRename.ToolTipText = "Rename selected profile."; - // + // // lablDeployText - // + // this.lablDeployText.Location = new System.Drawing.Point(217, 44); this.lablDeployText.Name = "lablDeployText"; this.lablDeployText.Size = new System.Drawing.Size(228, 137); this.lablDeployText.TabIndex = 4; this.lablDeployText.Text = "label1"; - // + // // lablBuildOnly - // + // this.lablBuildOnly.AutoSize = true; this.lablBuildOnly.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lablBuildOnly.ForeColor = System.Drawing.SystemColors.HotTrack; @@ -274,9 +276,9 @@ this.lablBuildOnly.Size = new System.Drawing.Size(310, 13); this.lablBuildOnly.TabIndex = 3; this.lablBuildOnly.Text = "** This is a build only option. No process will be launched."; - // + // // tabCompile - // + // this.tabCompile.AutoScroll = true; this.tabCompile.Controls.Add(this.labelBinFormat); this.tabCompile.Controls.Add(this.comboBinFormat); @@ -292,10 +294,10 @@ this.tabCompile.TabIndex = 0; this.tabCompile.Text = "Compile"; this.tabCompile.UseVisualStyleBackColor = true; - // + // // labelBinFormat - // - this.labelBinFormat.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + // + this.labelBinFormat.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); this.labelBinFormat.AutoSize = true; this.labelBinFormat.Enabled = false; @@ -307,18 +309,18 @@ this.labelBinFormat.TabIndex = 23; this.labelBinFormat.Text = "Bin format:"; this.labelBinFormat.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // + // // comboBinFormat - // + // this.comboBinFormat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboBinFormat.FormattingEnabled = true; this.comboBinFormat.Location = new System.Drawing.Point(34, 136); this.comboBinFormat.Name = "comboBinFormat"; this.comboBinFormat.Size = new System.Drawing.Size(228, 21); this.comboBinFormat.TabIndex = 22; - // + // // comboFramework - // + // this.comboFramework.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboFramework.Enabled = false; this.comboFramework.FormattingEnabled = true; @@ -326,9 +328,9 @@ this.comboFramework.Name = "comboFramework"; this.comboFramework.Size = new System.Drawing.Size(228, 21); this.comboFramework.TabIndex = 5; - // + // // buttonOutputBrowse - // + // this.buttonOutputBrowse.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.buttonOutputBrowse.Location = new System.Drawing.Point(430, 37); this.buttonOutputBrowse.Name = "buttonOutputBrowse"; @@ -336,10 +338,10 @@ this.buttonOutputBrowse.TabIndex = 20; this.buttonOutputBrowse.Text = ".."; this.buttonOutputBrowse.UseVisualStyleBackColor = true; - // + // // label2 - // - this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + // + this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); this.label2.AutoSize = true; this.label2.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -350,19 +352,19 @@ this.label2.TabIndex = 19; this.label2.Text = "Output path:"; this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // + // // textOutputPath - // - this.textOutputPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + // + this.textOutputPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.textOutputPath.Location = new System.Drawing.Point(34, 38); this.textOutputPath.Name = "textOutputPath"; this.textOutputPath.Size = new System.Drawing.Size(390, 20); this.textOutputPath.TabIndex = 4; - // + // // labelFramework - // - this.labelFramework.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + // + this.labelFramework.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); this.labelFramework.AutoSize = true; this.labelFramework.Enabled = false; @@ -374,9 +376,9 @@ this.labelFramework.TabIndex = 21; this.labelFramework.Text = "Framework:"; this.labelFramework.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // + // // tabAssembler - // + // this.tabAssembler.Controls.Add(this.checkUseInternalAssembler); this.tabAssembler.Controls.Add(this.labelInternalAssembler); this.tabAssembler.Location = new System.Drawing.Point(4, 22); @@ -385,10 +387,10 @@ this.tabAssembler.TabIndex = 10; this.tabAssembler.Text = "Assembler"; this.tabAssembler.UseVisualStyleBackColor = true; - // + // // checkUseInternalAssembler - // - this.checkUseInternalAssembler.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + // + this.checkUseInternalAssembler.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); this.checkUseInternalAssembler.AutoSize = true; this.checkUseInternalAssembler.Enabled = false; @@ -400,9 +402,9 @@ this.checkUseInternalAssembler.TabIndex = 6; this.checkUseInternalAssembler.Text = "Use Internal Assembler"; this.checkUseInternalAssembler.UseVisualStyleBackColor = true; - // + // // labelInternalAssembler - // + // this.labelInternalAssembler.Enabled = false; this.labelInternalAssembler.Location = new System.Drawing.Point(40, 32); this.labelInternalAssembler.Margin = new System.Windows.Forms.Padding(44, 0, 3, 0); @@ -410,9 +412,9 @@ this.labelInternalAssembler.Size = new System.Drawing.Size(224, 18); this.labelInternalAssembler.TabIndex = 20; this.labelInternalAssembler.Text = "Experimental. Check if you like to crash!"; - // + // // tabDebug - // + // this.tabDebug.AutoScroll = true; this.tabDebug.Controls.Add(this.chckEnableDebugStub); this.tabDebug.Controls.Add(this.panlDebugSettings); @@ -423,9 +425,9 @@ this.tabDebug.TabIndex = 2; this.tabDebug.Text = "Debug"; this.tabDebug.UseVisualStyleBackColor = true; - // + // // chckEnableDebugStub - // + // this.chckEnableDebugStub.AutoSize = true; this.chckEnableDebugStub.Location = new System.Drawing.Point(14, 6); this.chckEnableDebugStub.Name = "chckEnableDebugStub"; @@ -433,9 +435,9 @@ this.chckEnableDebugStub.TabIndex = 7; this.chckEnableDebugStub.Text = "Enable Remote Debugging"; this.chckEnableDebugStub.UseVisualStyleBackColor = true; - // + // // panlDebugSettings - // + // this.panlDebugSettings.Controls.Add(this.stackCorruptionDetectionGroupBox); this.panlDebugSettings.Controls.Add(this.debugLevelGroupBox); this.panlDebugSettings.Controls.Add(this.debugStubGroupBox); @@ -443,9 +445,9 @@ this.panlDebugSettings.Name = "panlDebugSettings"; this.panlDebugSettings.Size = new System.Drawing.Size(280, 400); this.panlDebugSettings.TabIndex = 33; - // + // // stackCorruptionDetectionGroupBox - // + // this.stackCorruptionDetectionGroupBox.Controls.Add(this.label12); this.stackCorruptionDetectionGroupBox.Controls.Add(this.comboStackCorruptionDetectionLevel); this.stackCorruptionDetectionGroupBox.Controls.Add(this.chkEnableStackCorruptionDetection); @@ -454,18 +456,18 @@ this.stackCorruptionDetectionGroupBox.Size = new System.Drawing.Size(260, 90); this.stackCorruptionDetectionGroupBox.TabIndex = 34; this.stackCorruptionDetectionGroupBox.TabStop = false; - // + // // label12 - // + // this.label12.AutoSize = true; this.label12.Location = new System.Drawing.Point(3, 42); this.label12.Name = "label12"; this.label12.Size = new System.Drawing.Size(85, 13); this.label12.TabIndex = 30; this.label12.Text = "Detection Level:"; - // + // // comboStackCorruptionDetectionLevel - // + // this.comboStackCorruptionDetectionLevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboStackCorruptionDetectionLevel.FormattingEnabled = true; this.comboStackCorruptionDetectionLevel.Location = new System.Drawing.Point(33, 58); @@ -473,9 +475,9 @@ this.comboStackCorruptionDetectionLevel.Size = new System.Drawing.Size(220, 21); this.comboStackCorruptionDetectionLevel.TabIndex = 9; this.comboStackCorruptionDetectionLevel.SelectedIndexChanged += new System.EventHandler(this.stackCorruptionDetectionLevelComboBox_SelectedIndexChanged); - // + // // chkEnableStackCorruptionDetection - // + // this.chkEnableStackCorruptionDetection.AutoSize = true; this.chkEnableStackCorruptionDetection.Location = new System.Drawing.Point(6, 19); this.chkEnableStackCorruptionDetection.Name = "chkEnableStackCorruptionDetection"; @@ -484,9 +486,9 @@ this.chkEnableStackCorruptionDetection.Text = "Enable Stack Corruption Detection"; this.chkEnableStackCorruptionDetection.UseVisualStyleBackColor = true; this.chkEnableStackCorruptionDetection.CheckedChanged += new System.EventHandler(this.chkEnableStacckCorruptionDetection_CheckedChanged); - // + // // debugLevelGroupBox - // + // this.debugLevelGroupBox.Controls.Add(this.comboTraceMode); this.debugLevelGroupBox.Controls.Add(this.label5); this.debugLevelGroupBox.Controls.Add(this.label4); @@ -496,18 +498,18 @@ this.debugLevelGroupBox.Size = new System.Drawing.Size(260, 125); this.debugLevelGroupBox.TabIndex = 34; this.debugLevelGroupBox.TabStop = false; - // + // // comboTraceMode - // + // this.comboTraceMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboTraceMode.FormattingEnabled = true; this.comboTraceMode.Location = new System.Drawing.Point(34, 94); this.comboTraceMode.Name = "comboTraceMode"; this.comboTraceMode.Size = new System.Drawing.Size(220, 21); this.comboTraceMode.TabIndex = 10; - // + // // label5 - // + // this.label5.AutoSize = true; this.label5.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label5.Location = new System.Drawing.Point(3, 73); @@ -517,9 +519,9 @@ this.label5.TabIndex = 26; this.label5.Text = "Tracing:"; this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // + // // label4 - // + // this.label4.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label4.Location = new System.Drawing.Point(3, 19); this.label4.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); @@ -528,18 +530,18 @@ this.label4.TabIndex = 24; this.label4.Text = "Debug Level:"; this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // + // // comboDebugMode - // + // this.comboDebugMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboDebugMode.FormattingEnabled = true; this.comboDebugMode.Location = new System.Drawing.Point(34, 46); this.comboDebugMode.Name = "comboDebugMode"; this.comboDebugMode.Size = new System.Drawing.Size(220, 21); this.comboDebugMode.TabIndex = 9; - // + // // debugStubGroupBox - // + // this.debugStubGroupBox.Controls.Add(this.checkIgnoreDebugStubAttribute); this.debugStubGroupBox.Controls.Add(this.label9); this.debugStubGroupBox.Controls.Add(this.cmboVisualStudioDebugPort); @@ -550,9 +552,9 @@ this.debugStubGroupBox.Size = new System.Drawing.Size(260, 140); this.debugStubGroupBox.TabIndex = 31; this.debugStubGroupBox.TabStop = false; - // + // // checkIgnoreDebugStubAttribute - // + // this.checkIgnoreDebugStubAttribute.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.checkIgnoreDebugStubAttribute.Location = new System.Drawing.Point(6, 19); this.checkIgnoreDebugStubAttribute.Name = "checkIgnoreDebugStubAttribute"; @@ -560,18 +562,18 @@ this.checkIgnoreDebugStubAttribute.TabIndex = 11; this.checkIgnoreDebugStubAttribute.Text = "Ignore DebugStub Attribute Settings"; this.checkIgnoreDebugStubAttribute.UseVisualStyleBackColor = true; - // + // // label9 - // + // this.label9.AutoSize = true; this.label9.Location = new System.Drawing.Point(6, 42); this.label9.Name = "label9"; this.label9.Size = new System.Drawing.Size(69, 13); this.label9.TabIndex = 29; this.label9.Text = "Cosmos Port:"; - // + // // cmboVisualStudioDebugPort - // + // this.cmboVisualStudioDebugPort.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cmboVisualStudioDebugPort.FormattingEnabled = true; this.cmboVisualStudioDebugPort.Items.AddRange(new object[] { @@ -585,9 +587,9 @@ this.cmboVisualStudioDebugPort.Size = new System.Drawing.Size(220, 21); this.cmboVisualStudioDebugPort.Sorted = true; this.cmboVisualStudioDebugPort.TabIndex = 13; - // + // // cmboCosmosDebugPort - // + // this.cmboCosmosDebugPort.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cmboCosmosDebugPort.FormattingEnabled = true; this.cmboCosmosDebugPort.Items.AddRange(new object[] { @@ -601,18 +603,18 @@ this.cmboCosmosDebugPort.Size = new System.Drawing.Size(220, 21); this.cmboCosmosDebugPort.Sorted = true; this.cmboCosmosDebugPort.TabIndex = 12; - // + // // label10 - // + // this.label10.AutoSize = true; this.label10.Location = new System.Drawing.Point(6, 90); this.label10.Name = "label10"; this.label10.Size = new System.Drawing.Size(93, 13); this.label10.TabIndex = 30; this.label10.Text = "Visual Studio Port:"; - // + // // tabDeployment - // + // this.tabDeployment.Controls.Add(this.lboxDeployment); this.tabDeployment.Location = new System.Drawing.Point(4, 22); this.tabDeployment.Name = "tabDeployment"; @@ -620,9 +622,9 @@ this.tabDeployment.TabIndex = 11; this.tabDeployment.Text = "Deployment"; this.tabDeployment.UseVisualStyleBackColor = true; - // + // // lboxDeployment - // + // this.lboxDeployment.Dock = System.Windows.Forms.DockStyle.Left; this.lboxDeployment.FormattingEnabled = true; this.lboxDeployment.Location = new System.Drawing.Point(0, 0); @@ -630,9 +632,9 @@ this.lboxDeployment.Size = new System.Drawing.Size(206, 486); this.lboxDeployment.Sorted = true; this.lboxDeployment.TabIndex = 15; - // + // // tabLaunch - // + // this.tabLaunch.Controls.Add(this.lboxLaunch); this.tabLaunch.Location = new System.Drawing.Point(4, 22); this.tabLaunch.Name = "tabLaunch"; @@ -640,9 +642,9 @@ this.tabLaunch.TabIndex = 12; this.tabLaunch.Text = "Launch"; this.tabLaunch.UseVisualStyleBackColor = true; - // + // // lboxLaunch - // + // this.lboxLaunch.Dock = System.Windows.Forms.DockStyle.Left; this.lboxLaunch.FormattingEnabled = true; this.lboxLaunch.Location = new System.Drawing.Point(0, 0); @@ -650,9 +652,9 @@ this.lboxLaunch.Size = new System.Drawing.Size(206, 486); this.lboxLaunch.Sorted = true; this.lboxLaunch.TabIndex = 16; - // + // // tabVMware - // + // this.tabVMware.Controls.Add(this.checkEnableGDB); this.tabVMware.Controls.Add(this.checkStartCosmosGDB); this.tabVMware.Controls.Add(this.label3); @@ -664,9 +666,9 @@ this.tabVMware.TabIndex = 4; this.tabVMware.Text = "VMware"; this.tabVMware.UseVisualStyleBackColor = true; - // + // // checkEnableGDB - // + // this.checkEnableGDB.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.checkEnableGDB.Location = new System.Drawing.Point(9, 77); this.checkEnableGDB.Name = "checkEnableGDB"; @@ -674,9 +676,9 @@ this.checkEnableGDB.TabIndex = 19; this.checkEnableGDB.Text = "Enable GDB Debugger"; this.checkEnableGDB.UseVisualStyleBackColor = true; - // + // // checkStartCosmosGDB - // + // this.checkStartCosmosGDB.AutoSize = true; this.checkStartCosmosGDB.Enabled = false; this.checkStartCosmosGDB.Location = new System.Drawing.Point(24, 103); @@ -686,18 +688,18 @@ this.checkStartCosmosGDB.TabIndex = 20; this.checkStartCosmosGDB.Text = "Use Cosmos GDB Client"; this.checkStartCosmosGDB.UseVisualStyleBackColor = true; - // + // // label3 - // + // this.label3.AutoSize = true; this.label3.Location = new System.Drawing.Point(6, 12); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(42, 13); this.label3.TabIndex = 18; this.label3.Text = "Edition:"; - // + // // cmboVMwareEdition - // + // this.cmboVMwareEdition.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cmboVMwareEdition.FormattingEnabled = true; this.cmboVMwareEdition.Location = new System.Drawing.Point(26, 37); @@ -705,9 +707,9 @@ this.cmboVMwareEdition.Size = new System.Drawing.Size(143, 21); this.cmboVMwareEdition.Sorted = true; this.cmboVMwareEdition.TabIndex = 18; - // + // // tabBochs - // + // this.tabBochs.Controls.Add(this.checkStartBochsDebugGui); this.tabBochs.Controls.Add(this.checkEnableBochsDebug); this.tabBochs.Location = new System.Drawing.Point(4, 22); @@ -717,9 +719,9 @@ this.tabBochs.TabIndex = 5; this.tabBochs.Text = "Bochs"; this.tabBochs.UseVisualStyleBackColor = true; - // + // // checkStartBochsDebugGui - // + // this.checkStartBochsDebugGui.Enabled = false; this.checkStartBochsDebugGui.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.checkStartBochsDebugGui.Location = new System.Drawing.Point(24, 43); @@ -728,9 +730,9 @@ this.checkStartBochsDebugGui.TabIndex = 35; this.checkStartBochsDebugGui.Text = "Use Bochs Debugger GUI"; this.checkStartBochsDebugGui.UseVisualStyleBackColor = true; - // + // // checkEnableBochsDebug - // + // this.checkEnableBochsDebug.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.checkEnableBochsDebug.Location = new System.Drawing.Point(9, 17); this.checkEnableBochsDebug.Name = "checkEnableBochsDebug"; @@ -738,9 +740,9 @@ this.checkEnableBochsDebug.TabIndex = 21; this.checkEnableBochsDebug.Text = "Enable Bochs Debugger"; this.checkEnableBochsDebug.UseVisualStyleBackColor = true; - // + // // tabPXE - // + // this.tabPXE.Controls.Add(this.butnPxeRefresh); this.tabPXE.Controls.Add(this.comboPxeInterface); this.tabPXE.Controls.Add(this.label1); @@ -751,10 +753,9 @@ this.tabPXE.TabIndex = 6; this.tabPXE.Text = "PXE"; this.tabPXE.UseVisualStyleBackColor = true; - // + // // butnPxeRefresh - // - // + // this.butnPxeRefresh.AutoSize = true; this.butnPxeRefresh.Image = ((System.Drawing.Image)(resources.GetObject("butnPxeRefresh.Image"))); this.butnPxeRefresh.Location = new System.Drawing.Point(177, 31); @@ -763,25 +764,25 @@ this.butnPxeRefresh.Size = new System.Drawing.Size(23, 23); this.butnPxeRefresh.TabIndex = 23; this.butnPxeRefresh.UseVisualStyleBackColor = true; - // + // // comboPxeInterface - // + // this.comboPxeInterface.Location = new System.Drawing.Point(28, 32); this.comboPxeInterface.Name = "comboPxeInterface"; this.comboPxeInterface.Size = new System.Drawing.Size(146, 21); this.comboPxeInterface.TabIndex = 22; - // + // // label1 - // + // this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(13, 16); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(52, 13); this.label1.TabIndex = 0; this.label1.Text = "Interface:"; - // + // // tabUSB - // + // this.tabUSB.Controls.Add(this.label7); this.tabUSB.Location = new System.Drawing.Point(4, 22); this.tabUSB.Name = "tabUSB"; @@ -790,18 +791,18 @@ this.tabUSB.TabIndex = 7; this.tabUSB.Text = "USB"; this.tabUSB.UseVisualStyleBackColor = true; - // + // // label7 - // + // this.label7.Location = new System.Drawing.Point(16, 15); this.label7.Name = "label7"; this.label7.Size = new System.Drawing.Size(375, 102); this.label7.TabIndex = 1; this.label7.Text = "There are no current USB options. The target drive will be requested when you run" + " the project."; - // + // // tabISO - // + // this.tabISO.Controls.Add(this.label8); this.tabISO.Location = new System.Drawing.Point(4, 22); this.tabISO.Name = "tabISO"; @@ -810,17 +811,17 @@ this.tabISO.TabIndex = 8; this.tabISO.Text = "ISO"; this.tabISO.UseVisualStyleBackColor = true; - // + // // label8 - // + // this.label8.Location = new System.Drawing.Point(17, 16); this.label8.Name = "label8"; this.label8.Size = new System.Drawing.Size(375, 102); this.label8.TabIndex = 1; this.label8.Text = "There are currently no ISO options."; - // + // // tabSlave - // + // this.tabSlave.Controls.Add(this.cmboSlavePort); this.tabSlave.Controls.Add(this.label6); this.tabSlave.Location = new System.Drawing.Point(4, 22); @@ -830,9 +831,9 @@ this.tabSlave.TabIndex = 13; this.tabSlave.Text = "Slave"; this.tabSlave.UseVisualStyleBackColor = true; - // + // // cmboSlavePort - // + // this.cmboSlavePort.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cmboSlavePort.FormattingEnabled = true; this.cmboSlavePort.Items.AddRange(new object[] { @@ -846,18 +847,28 @@ this.cmboSlavePort.Size = new System.Drawing.Size(146, 21); this.cmboSlavePort.Sorted = true; this.cmboSlavePort.TabIndex = 23; - // + // // label6 - // + // this.label6.AutoSize = true; this.label6.Location = new System.Drawing.Point(15, 15); this.label6.Name = "label6"; this.label6.Size = new System.Drawing.Size(59, 13); this.label6.TabIndex = 34; this.label6.Text = "Slave Port:"; - // + // + // tabHyperV + // + this.tabHyperV.Location = new System.Drawing.Point(4, 22); + this.tabHyperV.Name = "tabHyperV"; + this.tabHyperV.Padding = new System.Windows.Forms.Padding(3); + this.tabHyperV.Size = new System.Drawing.Size(627, 486); + this.tabHyperV.TabIndex = 14; + this.tabHyperV.Text = "Hyper-V"; + this.tabHyperV.UseVisualStyleBackColor = true; + // // CosmosPage - // + // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.TabControl1); @@ -971,5 +982,6 @@ private System.Windows.Forms.GroupBox debugStubGroupBox; private System.ComponentModel.BackgroundWorker backgroundWorker1; private System.Windows.Forms.Label label12; + private System.Windows.Forms.TabPage tabHyperV; } } diff --git a/source/Cosmos.VS.ProjectSystem/PropertyPages/CosmosPage.cs b/source/Cosmos.VS.ProjectSystem/PropertyPages/CosmosPage.cs index d9b5a7d10..610afdca1 100644 --- a/source/Cosmos.VS.ProjectSystem/PropertyPages/CosmosPage.cs +++ b/source/Cosmos.VS.ProjectSystem/PropertyPages/CosmosPage.cs @@ -48,16 +48,21 @@ namespace Cosmos.VS.ProjectSystem.PropertyPages } protected ProfilePresets mPresets = new ProfilePresets(); + protected int mVMwareAndBochsDebugPipe; + protected int mHyperVDebugPipe; + protected bool mShowTabBochs; protected bool mShowTabDebug; protected bool mShowTabDeployment; protected bool mShowTabLaunch; protected bool mShowTabVMware; + protected bool mShowTabHyperV; protected bool mShowTabPXE; protected bool mShowTabUSB; protected bool mShowTabISO; protected bool mShowTabSlave; + protected bool FreezeEvents; public CosmosPage() @@ -182,7 +187,6 @@ namespace Cosmos.VS.ProjectSystem.PropertyPages #endregion - #region VMware cmboVMwareEdition.SelectedIndexChanged += delegate (Object sender, EventArgs e) @@ -291,8 +295,6 @@ namespace Cosmos.VS.ProjectSystem.PropertyPages } }; - #endregion - checkEnableGDB.CheckedChanged += delegate (Object sender, EventArgs e) { if (FreezeEvents) return; @@ -344,6 +346,7 @@ namespace Cosmos.VS.ProjectSystem.PropertyPages IsDirty = true; } }; + #endregion } public override void ApplyChanges() @@ -371,6 +374,7 @@ namespace Cosmos.VS.ProjectSystem.PropertyPages RemoveTab(tabDeployment); RemoveTab(tabLaunch); RemoveTab(tabVMware); + RemoveTab(tabHyperV); RemoveTab(tabPXE); RemoveTab(tabUSB); RemoveTab(tabISO); @@ -407,6 +411,10 @@ namespace Cosmos.VS.ProjectSystem.PropertyPages { TabControl1.TabPages.Add(tabVMware); } + if (mShowTabHyperV) + { + TabControl1.TabPages.Add(tabHyperV); + } if (mShowTabSlave) { TabControl1.TabPages.Add(tabSlave); @@ -455,6 +463,15 @@ namespace Cosmos.VS.ProjectSystem.PropertyPages cmboVisualStudioDebugPort.SelectedIndex = mVMwareAndBochsDebugPipe; } + else if (mProps.Profile == "HyperV") + { + mShowTabHyperV = true; + chckEnableDebugStub.Checked = true; + chkEnableStackCorruptionDetection.Checked = true; + cmboCosmosDebugPort.Enabled = false; + cmboVisualStudioDebugPort.Enabled = false; + cmboVisualStudioDebugPort.SelectedIndex = mHyperVDebugPipe; + } else if (mProps.Profile == "PXE") { chckEnableDebugStub.Checked = false; @@ -546,6 +563,7 @@ namespace Cosmos.VS.ProjectSystem.PropertyPages mShowTabPXE = mProps.Deployment == DeploymentType.PXE; // mShowTabVMware = mProps.Launch == LaunchType.VMware; + mShowTabHyperV = mProps.Launch == LaunchType.HyperV; mShowTabSlave = mProps.Launch == LaunchType.Slave; mShowTabBochs = (LaunchType.Bochs == mProps.Launch); // @@ -784,6 +802,7 @@ namespace Cosmos.VS.ProjectSystem.PropertyPages cmboVisualStudioDebugPort.Items.Clear(); FillComPorts(cmboVisualStudioDebugPort.Items); mVMwareAndBochsDebugPipe = cmboVisualStudioDebugPort.Items.Add(@"Pipe: Cosmos\Serial"); + mHyperVDebugPipe = cmboVisualStudioDebugPort.Items.Add(@"Pipe: CosmosSerial"); comboDebugMode.Items.AddRange(EnumValue.GetEnumValues(typeof(DebugMode), false)); comboTraceMode.Items.AddRange(EnumValue.GetEnumValues(typeof(TraceAssemblies), false)); diff --git a/source/Unused/Old System Plugs/Collections/Generic/EqualityComparerImpl.cs b/source/Unused/Old System Plugs/Collections/Generic/EqualityComparerImpl.cs index d733871fd..1660ed362 100644 --- a/source/Unused/Old System Plugs/Collections/Generic/EqualityComparerImpl.cs +++ b/source/Unused/Old System Plugs/Collections/Generic/EqualityComparerImpl.cs @@ -9,6 +9,7 @@ namespace Cosmos.System.Plugs.System.Collections.Generic { public static EqualityComparer CreateComparer() { + throw new Exception("Create comparer not yet implemented!"); } }