mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-21 05:18:38 +00:00
Bochs Boot Supported
the boot is now working and we have a initial bochs configurator working.
This commit is contained in:
parent
61e7c7f9f7
commit
08c310c0da
3 changed files with 65 additions and 50 deletions
|
|
@ -150,8 +150,8 @@
|
|||
<Bochs_TraceAssemblies>All</Bochs_TraceAssemblies>
|
||||
<Bochs_EnableGDB>False</Bochs_EnableGDB>
|
||||
<Bochs_StartCosmosGDB>False</Bochs_StartCosmosGDB>
|
||||
<EnableBochsDebug>True</EnableBochsDebug>
|
||||
<Bochs_EnableBochsDebug>True</Bochs_EnableBochsDebug>
|
||||
<EnableBochsDebug>False</EnableBochsDebug>
|
||||
<Bochs_EnableBochsDebug>False</Bochs_EnableBochsDebug>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||
<Profile>Bochs</Profile>
|
||||
|
|
@ -295,8 +295,8 @@
|
|||
<Bochs_TraceAssemblies>All</Bochs_TraceAssemblies>
|
||||
<Bochs_EnableGDB>False</Bochs_EnableGDB>
|
||||
<Bochs_StartCosmosGDB>False</Bochs_StartCosmosGDB>
|
||||
<EnableBochsDebug>True</EnableBochsDebug>
|
||||
<Bochs_EnableBochsDebug>True</Bochs_EnableBochsDebug>
|
||||
<EnableBochsDebug>False</EnableBochsDebug>
|
||||
<Bochs_EnableBochsDebug>False</Bochs_EnableBochsDebug>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Cosmos.bxrc">
|
||||
|
|
|
|||
|
|
@ -429,7 +429,7 @@ namespace Cosmos.Debug.VSDebugEngine
|
|||
// TODO : What if the configuration file doesn't exist ? This will throw a FileNotFoundException in
|
||||
// the Bochs class constructor. Is this appropriate behavior ?
|
||||
mHost = new Host.Bochs(mDebugInfo, xUseGDB, bochsConfigurationFile);
|
||||
((Host.Bochs)mHost).FixBochsConfiguration(new KeyValuePair<string, string>[] { new KeyValuePair<string, string>("IsoFileName", mISO) });
|
||||
//((Host.Bochs)mHost).FixBochsConfiguration(new KeyValuePair<string, string>[] { new KeyValuePair<string, string>("IsoFileName", mISO) });
|
||||
break;
|
||||
case LaunchType.IntelEdison:
|
||||
mHost = new Host.IntelEdison(mDebugInfo, false);
|
||||
|
|
|
|||
|
|
@ -17,49 +17,50 @@ namespace Cosmos.Debug.VSDebugEngine.Host
|
|||
{
|
||||
private NameValueCollection defaultConfigs = new NameValueCollection();
|
||||
private void InitializeKeyValues() {
|
||||
string BochsDirectory = Path.GetDirectoryName(BochsSupport.BochsExe.FullName);
|
||||
string default_configuration =
|
||||
"# configuration file generated by Bochs\n" +
|
||||
"plugin_ctrl: unmapped=1, biosdev=1, speaker=1, extfpuirq=1, parallel=1, serial=1, gameport=1n" +
|
||||
"config_interface: win32config\n" +
|
||||
"display_library: win32\n" +
|
||||
"memory: host=128, guest=128\n" +
|
||||
"romimage: file=\"C:\\Program Files (x86)\\Bochs-2.6.8/BIOS-bochs-latest\"\n" +
|
||||
"vgaromimage: file=\"C:\\Program Files (x86)\\Bochs-2.6.8/VGABIOS-lgpl-latest\"\n" +
|
||||
"boot: cdrom\n" +
|
||||
"floppy_bootsig_check: disabled=0\n" +
|
||||
"# no floppya\n" +
|
||||
"# no floppyb\n" +
|
||||
"ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14\n" +
|
||||
"ata0-master: type=cdrom, path=\"%CDROMBOOTPATH%\", status=inserted, model=\"Generic 1234\", biosdetect=auto\n" +
|
||||
"ata0-slave: type=none\n" +
|
||||
"ata1: enabled=0\n" +
|
||||
"ata2: enabled=0\n" +
|
||||
"ata3: enabled=0\n" +
|
||||
"pci: enabled=1, chipset=i440fx\n" +
|
||||
"vga: extension=vbe, update_freq=5, realtime=1\n" +
|
||||
"cpu: count=1, ips=4000000, model=corei5_lynnfield_750, reset_on_triple_fault=1, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0\n" +
|
||||
"print_timestamps: enabled=0\n" +
|
||||
"port_e9_hack: enabled=0\n" +
|
||||
"private_colormap: enabled=0\n" +
|
||||
"clock: sync=realtime, time0=local, rtc_sync=1\n" +
|
||||
"# no cmosimage\n" +
|
||||
"# no loader\n" +
|
||||
"log: -\n" +
|
||||
"logprefix: %t%e%d\n" +
|
||||
"debug: action=report\n" +
|
||||
"info: action=report\n" +
|
||||
"error: action=report\n" +
|
||||
"panic: action=ask\n" +
|
||||
"keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none\n" +
|
||||
"mouse: type=ps2, enabled=0, toggle=ctrl+mbutton\n" +
|
||||
"sound: waveoutdrv=win, waveout=none, waveindrv=win, wavein=none, midioutdrv=win, midiout=none\n" +
|
||||
"speaker: enabled=1, mode=sound\n" +
|
||||
"parport1: enabled=1, file=none\n" +
|
||||
"parport2: enabled=0\n" +
|
||||
"com1: enabled=1, mode=null\n" +
|
||||
"com2: enabled=0\n" +
|
||||
"com3: enabled=0\n" +
|
||||
"com4: enabled=0";
|
||||
"# configuration file generated by Bochs\n" +
|
||||
"plugin_ctrl: unmapped=1, biosdev=1, speaker=1, extfpuirq=1, parallel=1, serial=1, gameport=1\n" +
|
||||
"config_interface: win32config\n" +
|
||||
"display_library: win32\n" +
|
||||
"memory: host=32, guest=32\n" +
|
||||
"romimage: file=\""+BochsDirectory+"/BIOS-bochs-latest\"\n" +
|
||||
"vgaromimage: file=\""+BochsDirectory+"/VGABIOS-lgpl-latest\"\n" +
|
||||
"boot: cdrom\n" +
|
||||
"floppy_bootsig_check: disabled=0\n" +
|
||||
"# no floppya\n" +
|
||||
"# no floppyb\n" +
|
||||
"ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14\n" +
|
||||
"ata0-master: type=cdrom, path=\"%CDROMBOOTPATH%\", status=inserted, model=\"Generic 1234\", biosdetect=auto\n" +
|
||||
"ata0-slave: type=none\n" +
|
||||
"ata1: enabled=0\n" +
|
||||
"ata2: enabled=0\n" +
|
||||
"ata3: enabled=0\n" +
|
||||
"pci: enabled=1, chipset=i440fx\n" +
|
||||
"vga: extension=vbe, update_freq=5, realtime=1\n" +
|
||||
"cpu: count=1, ips=4000000, model=corei5_lynnfield_750, reset_on_triple_fault=1, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0\n" +
|
||||
"print_timestamps: enabled=0\n" +
|
||||
"port_e9_hack: enabled=0\n" +
|
||||
"private_colormap: enabled=0\n" +
|
||||
"clock: sync=none, time0=local, rtc_sync=0\n" +
|
||||
"# no cmosimage\n" +
|
||||
"# no loader\n" +
|
||||
"log: -\n" +
|
||||
"logprefix: %t%e%d\n" +
|
||||
"debug: action=ignore\n" +
|
||||
"info: action=report\n" +
|
||||
"error: action=report\n" +
|
||||
"panic: action=ask\n" +
|
||||
"keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none\n" +
|
||||
"mouse: type=ps2, enabled=0, toggle=ctrl+mbutton\n" +
|
||||
"sound: waveoutdrv=win, waveout=none, waveindrv=win, wavein=none, midioutdrv=win, midiout=none\n" +
|
||||
"speaker: enabled=1, mode=sound\n" +
|
||||
"parport1: enabled=1, file=none\n" +
|
||||
"parport2: enabled=0\n" +
|
||||
"com1: enabled=1, mode=null\n" +
|
||||
"com2: enabled=0\n" +
|
||||
"com3: enabled=0\n" +
|
||||
"com4: enabled=0";
|
||||
string[] Keys = default_configuration.Split(new char[] {'\n'}, StringSplitOptions.RemoveEmptyEntries);
|
||||
for(int i = 0; i < Keys.Length; i++) {
|
||||
string comboItem = Keys[i];
|
||||
|
|
@ -70,6 +71,10 @@ namespace Cosmos.Debug.VSDebugEngine.Host
|
|||
string Value = comboItem.Substring(KeyValueIndex + 1, comboItem.Length - KeyValueIndex - 1);
|
||||
defaultConfigs.Add(Key, Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
defaultConfigs.Add(comboItem, "");
|
||||
}
|
||||
}
|
||||
string iso_paramater = defaultConfigs.Get("ata0-master");
|
||||
iso_paramater = iso_paramater.Replace("%CDROMBOOTPATH%", mParams["ISOFile"]);
|
||||
|
|
@ -81,9 +86,19 @@ namespace Cosmos.Debug.VSDebugEngine.Host
|
|||
FileStream configFileHandler = File.Create(filePath);
|
||||
for (int i = 0; i < defaultConfigs.AllKeys.Length; i++)
|
||||
{
|
||||
string configItem = defaultConfigs.GetKey(i) + ":" + defaultConfigs.Get(i);
|
||||
byte[] lineData = ASCIIEncoding.Unicode.GetBytes(configItem + Environment.NewLine);
|
||||
configFileHandler.Write(lineData, 0, lineData.Length);
|
||||
string value = defaultConfigs.Get(i);
|
||||
string key = defaultConfigs.GetKey(i);
|
||||
if (value.Length < 1)
|
||||
{
|
||||
byte[] lineData = ASCIIEncoding.ASCII.GetBytes(key + Environment.NewLine);
|
||||
configFileHandler.Write(lineData, 0, lineData.Length);
|
||||
}
|
||||
else
|
||||
{
|
||||
string configItem = key + ":" + value;
|
||||
byte[] lineData = ASCIIEncoding.ASCII.GetBytes(configItem + Environment.NewLine);
|
||||
configFileHandler.Write(lineData, 0, lineData.Length);
|
||||
}
|
||||
}
|
||||
configFileHandler.Flush();
|
||||
configFileHandler.Close();
|
||||
|
|
|
|||
Loading…
Reference in a new issue